OpenSTA/network/test/network_modify.tcl

111 lines
3.1 KiB
Tcl

# Test network modification commands
read_liberty ../../test/nangate45/Nangate45_typ.lib
read_verilog network_test1.v
link_design network_test1
puts "--- initial cell count ---"
set cells [get_cells *]
puts "initial cells: [llength $cells]"
puts "--- current_design ---"
set design [current_design]
puts "current_design: $design"
puts "--- make_net new_net1 ---"
set new_net [make_net new_net1]
if { $new_net == 0 } {
puts "FAIL: make_net returned 0"
}
puts "--- verify new net exists ---"
set found_net [get_nets new_net1]
if { [llength $found_net] <= 0 } {
puts "FAIL: new_net1 not found"
}
puts "--- make_instance new_buf BUF_X1 ---"
set new_inst [make_instance new_buf NangateOpenCellLibrary/BUF_X1]
if { $new_inst == 0 } {
puts "FAIL: make_instance returned 0"
}
puts "--- verify new instance exists ---"
set found_inst [get_cells new_buf]
if { [llength $found_inst] <= 0 } {
puts "FAIL: new_buf not found"
}
puts "--- cell count after adding instance ---"
set cells [get_cells *]
puts "cells after make_instance: [llength $cells]"
puts "--- connect_pin new_net1 new_buf/A ---"
set rc [connect_pin new_net1 new_buf/A]
puts "connect_pin result: $rc"
puts "--- connect output pin to new net ---"
set new_net2 [make_net new_net2]
set rc2 [connect_pin new_net2 new_buf/Z]
puts "connect_pin output result: $rc2"
puts "--- disconnect_pin new_net1 new_buf/A ---"
set rc_disc [disconnect_pin new_net1 new_buf/A]
puts "disconnect_pin result: $rc_disc"
puts "--- replace_cell new_buf with INV_X1 ---"
# INV_X1 has A and ZN, different ports than BUF_X1 (A and Z)
# This should fail because ports don't match
set rc3 [replace_cell new_buf NangateOpenCellLibrary/INV_X1]
puts "replace_cell INV_X1 result (expect 0): $rc3"
puts "--- replace_cell buf1 with BUF_X2 ---"
set rc4 [replace_cell buf1 NangateOpenCellLibrary/BUF_X2]
puts "replace_cell BUF_X2 result: $rc4"
puts "--- verify buf1 cell changed ---"
set buf1_inst [get_cells buf1]
set ref [get_property $buf1_inst ref_name]
puts "buf1 ref_name after replace: $ref"
puts "--- disconnect remaining new_buf pins ---"
set msg_disc2 [disconnect_pin new_net2 new_buf/Z]
puts "disconnect new_buf/Z: $msg_disc2"
puts "--- delete_instance new_buf ---"
delete_instance new_buf
puts "--- verify new_buf removed ---"
# catch: intentionally verifying get_cells fails after instance deletion
set rc5 [catch {get_cells new_buf} msg]
puts "get_cells new_buf after delete: $msg"
puts "--- cell count after delete ---"
set cells [get_cells *]
puts "cells after delete_instance: [llength $cells]"
puts "--- delete_net new_net1 ---"
delete_net new_net1
puts "--- delete_net new_net2 ---"
delete_net new_net2
puts "--- make another instance and delete by object ---"
set inst2 [make_instance temp_buf NangateOpenCellLibrary/BUF_X1]
if { $inst2 != 0 } {
delete_instance $inst2
} else {
puts "FAIL: make_instance temp_buf"
}
puts "--- make and delete net by object ---"
set net3 [make_net temp_net]
if { $net3 != 0 } {
delete_net $net3
} else {
puts "FAIL: make_net temp_net"
}
puts "--- current_design with name ---"
set design2 [current_design network_test1]
puts "current_design with name: $design2"