# 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
