Monday, September 21, 2015

blockages

Here have some narrow channels which we want to fill with some placement blockages so cells don't place in these area.
Here is the way to do this:

1) Using finishFloorplan

The finishFloorplan command can be used to fill channels of a specified width with the specified blockage type.
For example, the following will fill any channels with a hard blockage if the channel width is less than 10um wide occurring between the core edge , hard macros, and hard blockages:

setFinishFPlanMode -activeObj {core macro hardBlkg} -direction xy -override false
finishFloorplan -fillPlaceBlockage hard 10

2)Use checkFPlan -narrow_channel to determine narrow channels and fill them

This method uses the violation markers from checkFPlan -narrow_channel to identify where to create blockages.
1. clearDrc

2. Source the file containing the code below. Change the width of the channel to your desired value.
## to check narrow channel of 10 um
checkFPlan -narrow_channel 10

proc mk_create_narr_ch_blk { } {
  set f [open narrowChannels_blk.tcl "w"]
  foreach marker_id [dbGet top.markers] {
    set db_userType [dbget $marker_id.userType]
    set db_box [dbget $marker_id.box]
    if {[regexp "narrowChannels" $db_userType] } {
      #Puts " $db_userType"
      puts $f "createPlaceBlockage -type hard -name NARROWCHANNEL -box $db_box"
    }
  }
  close $f
}
## End
3. Run the procedure above:
mk_create_narr_ch_blk
4. Source the resulting file to add the blockages:
source narrowChannels_blk.tcl


No comments:

Post a Comment