| # s8 |
| |
| proc bcen { box } { |
| scan $box "{%f %f %f %f}" llx lly urx ury; |
| return [list [expr ($urx + $llx) / 2] [expr ($ury + $lly) / 2]] |
| } |
| |
| set layerhash(met1) 1094 |
| set layerhash(met2) 1091 |
| set layerhash(met3) 1088 |
| set layerhash(met4) 1085 |
| set layerhash(met5) 1082 |
| set layerhash(rdl) 1080 |
| |
| set fp [open data/lvs.txt w] |
| |
| # puts $fp "MASK SVDB DIRECTORY lvs QUERY" |
| puts $fp "LAYOUT IGNORE TEXT DATABASE" |
| puts $fp "PORT LAYER TEXT met1tt met2tt met3tt met4tt met5tt rdltt" |
| puts $fp "PORT DEPTH PRIMARY\n" |
| |
| set design [get_db current_design .name] |
| |
| foreach_in_collection p [get_ports] { |
| set name [string toupper [get_db $p .name]] |
| set location [regsub "{" [regsub "}" [get_db $p .location] ""] ""] |
| set layer $layerhash([get_db $p .physical_pins.layer_shapes.layer.name]) |
| |
| puts $fp [format "LAYOUT TEXT \"%s\" %s %s %s" $name $location $layer $design] |
| } |
| |
| set pg_ports [get_db current_design .pg_ports] |
| |
| foreach port $pg_ports { |
| set name [string toupper [get_db $port .name]] |
| set pins [get_db $port .physical_pins] |
| foreach pin $pins { |
| set layername [get_db $pin .layer_shapes.layer.name] |
| set layer $layerhash($layername) |
| set location [bcen [get_db $pin .layer_shapes.shapes.rect]] |
| puts $fp [format "LAYOUT TEXT \"%s\" %s %s %s" $name $location $layer $design] |
| } |
| } |
| |
| close $fp |