OpenSTA/network/test/network_connect_liberty.tcl

114 lines
3.7 KiB
Tcl

# Test network modify operations using liberty cell references
read_liberty ../../test/nangate45/Nangate45_typ.lib
read_verilog network_test1.v
link_design network_test1
create_clock -name clk -period 10 [get_ports clk]
set_input_delay -clock clk 0 [get_ports in1]
set_input_delay -clock clk 0 [get_ports in2]
set_output_delay -clock clk 0 [get_ports out1]
# Force timing graph to build
report_checks
#---------------------------------------------------------------
# Make instance using liberty cell reference
#---------------------------------------------------------------
puts "--- make_instance using liberty cell ---"
set new_inst [make_instance lib_buf NangateOpenCellLibrary/BUF_X2]
#---------------------------------------------------------------
# Make nets for connections
#---------------------------------------------------------------
set net_a [make_net net_a]
set net_b [make_net net_b]
#---------------------------------------------------------------
# Connect using port names
#---------------------------------------------------------------
connect_pin net_a lib_buf/A
connect_pin net_b lib_buf/Z
#---------------------------------------------------------------
# Verify connections
#---------------------------------------------------------------
set lib_buf_pins [get_pins lib_buf/*]
puts "lib_buf pins: [llength $lib_buf_pins]"
foreach p $lib_buf_pins {
puts " pin: [get_full_name $p] dir=[get_property $p direction]"
}
#---------------------------------------------------------------
# Test get_fanin/get_fanout on new instances
#---------------------------------------------------------------
puts "--- fanin/fanout on new cells ---"
set fi [get_fanin -to [get_pins lib_buf/Z] -flat]
puts "fanin to lib_buf/Z: [llength $fi]"
set fo [get_fanout -from [get_pins lib_buf/A] -flat]
puts "fanout from lib_buf/A: [llength $fo]"
#---------------------------------------------------------------
# Disconnect and reconnect
#---------------------------------------------------------------
puts "--- disconnect and reconnect ---"
disconnect_pin net_a lib_buf/A
# Reconnect to a different net
connect_pin net_b lib_buf/A
# Disconnect everything
disconnect_pin net_b lib_buf/A
disconnect_pin net_b lib_buf/Z
#---------------------------------------------------------------
# Delete instance and nets
#---------------------------------------------------------------
delete_instance lib_buf
delete_net net_a
delete_net net_b
#---------------------------------------------------------------
# Test making multiple instances and verifying
#---------------------------------------------------------------
puts "--- multiple instance creation ---"
set inst1 [make_instance test_inv1 NangateOpenCellLibrary/INV_X1]
set inst2 [make_instance test_inv2 NangateOpenCellLibrary/INV_X2]
set inst3 [make_instance test_nand NangateOpenCellLibrary/NAND2_X1]
set all_cells [get_cells *]
puts "total cells after add: [llength $all_cells]"
# Test finding cells by pattern
set test_insts [get_cells test_*]
puts "test_* cells: [llength $test_insts]"
# Delete them
delete_instance test_inv1
delete_instance test_inv2
delete_instance test_nand
set all_cells2 [get_cells *]
puts "total cells after delete: [llength $all_cells2]"
#---------------------------------------------------------------
# Test replace_cell more extensively
#---------------------------------------------------------------
puts "--- replace_cell tests ---"
# Replace buf1 with BUF_X4
set rc1 [replace_cell buf1 NangateOpenCellLibrary/BUF_X4]
puts "replace_cell buf1 -> BUF_X4: $rc1"
set buf1_ref [get_property [get_cells buf1] ref_name]
puts "buf1 ref after replace: $buf1_ref"
# Report checks to ensure timing still works after replacement
report_checks
# Replace back
replace_cell buf1 NangateOpenCellLibrary/BUF_X1