StanfordAHA/garnet

Tapeout: DTCD cell blockages cause DRC errors

steveri opened this issue · 0 comments

This is basically the same problem as #393 . The script(s) build blockages with halos around the DTCD cells, the same as it did with ICOVL cells. And, as with the ICOVL cells, the halo is insufficient to stop wires from routing throught the halo region, which seems like it should be okay maybe, who knows, except that DRC flags it as an error.

The ICOVL solution in issue 393 was to enlarge the route blockages to the size of the halo, because the router seems to actually respect the blockage itself.

In this case, I opted for a different solution. I simply delete the DTCD blockages before running DRC so the errors don't appear.

If/when we figure out what's really happening here (presumably with the help of Calibre instead of Innovus DRC), both these issues will need to be revisited.

Here's the current fix, in my script sr_count_errors.tcl

# One last thing we gotta do before final error check apparently
    puts "@file_info HACK ALERT deleting dtcd blockages so drc will pass FIXME see issue"
    puts "@file_info Note first cell is biggest so deletes all the blockages under it"
    set dtcds [ get_db insts ifid_dtcd*cc* ]
    foreach d $dtcds {
        set window [get_db $d .bbox]
        set blockages [ get_obj_in_area -area $window -obj_type route_blockage ]
        puts "@file_info  $d - deleting [llength $blockages] blockages"
        foreach b $blockages { delete_obj $b }
    }
check_drc -limit 10000