StanfordAHA / garnet

Next generation CGRA generator
BSD 3-Clause "New" or "Revised" License
106 stars 11 forks source link

Tapeout: Weird big blockages on two ICOVL cells cause thousands of DRC violations #392

Open steveri opened 4 years ago

steveri commented 4 years ago

THE PROBLEM: Two of the forty-two center ICOVL alignment cells are surrounded by extra-large custom blockage regions. The blockage is causing a lot (thousands) of DRC errors. The blockage is inserted by a custom create_route_blockage command in top_garnet_staged.tcl, during the placement stage, just before it sources place.tcl. The two rectangles are big boxes around two of the ICOVL cells in the center array:

  create_route_blockage -all {route cut} \
    -rects {{2332 2684 2414 2733}{2331 3505 2414 3561}}       

  set_db [get_db insts ifid_icovl*] .route_halo_size 4
  set_db [get_db insts ifid_icovl*] .route_halo_bottom_layer M1
  set_db [get_db insts ifid_icovl*] .route_halo_top_layer AP
  source ../../scripts/timing_workaround.tcl
  eval_legacy {source ../../scripts/place.tcl}

I "fixed" the problem by commenting out the create_route_blockage command and leaving the two cells with the same blockages as the other cells in the center array.

My questions:

Also see: git diff e3fd0c 3a7066 -- top_garnet_staged.tcl

   #Fixes for ICOVL DRCs
-  create_route_blockage -all {route cut} -rects {{2332 2684 2414 2733}{2331 3505 2414 3561}}       
+  # - steveri 1912 omg what is this hack!!?? appears to be putting
+  # - extra-large blockage areas around just two of the 42 icovl blocks
+  # - but the area appears to be hard-wired and we've changed th icovl block    
+  # - placement so who knows where they were supposed to be and why
+  # - as of now the blockage appears around blocks (1,0) and (1,13)
+  # -  of the 2x21 array of center icovl blocks, where LL block is (0,0)
+  # - also note the blockage goes in *after* e.g. M1 stripes were built
+  # - so hella drc errors where they now overlap :(
+  # - i will file an issue
+  # create_route_blockage -all {route cut} -rects {{2332 2684 2414 2733}{2331 3505 2414 3561}}       
   set_db [get_db insts ifid_icovl*] .route_halo_size 4
   set_db [get_db insts ifid_icovl*] .route_halo_bottom_layer M1
   set_db [get_db insts ifid_icovl*] .route_halo_top_layer AP
steveri commented 4 years ago

Here's a screenshot showing the blockage around one of the two cells in the array...there is an identical blockage around the cell at the bottom right (not shown).

BIGBLOCK1