# s8

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 lvs/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
