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
}
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