OpenSTA/verilog/test/verilog_write_nangate.tcl

57 lines
1.5 KiB
Tcl

# Test write verilog with multiple cell types (Nangate45)
source ../../test/helpers.tcl
read_liberty ../../test/nangate45/Nangate45_typ.lib
read_verilog verilog_test1.v
link_design verilog_test1
# Add various cell types to exercise more writer paths
set net_a [make_net wire_a]
set net_b [make_net wire_b]
set net_c [make_net wire_c]
set net_d [make_net wire_d]
set net_e [make_net wire_e]
# NAND gate
set inst_nand [make_instance nand1 NangateOpenCellLibrary/NAND2_X1]
connect_pin wire_a nand1/A1
connect_pin wire_b nand1/A2
# NOR gate
set inst_nor [make_instance nor1 NangateOpenCellLibrary/NOR2_X1]
connect_pin wire_c nor1/A1
connect_pin wire_d nor1/A2
# Another buffer with different drive
set inst_buf [make_instance buf_x4 NangateOpenCellLibrary/BUF_X4]
connect_pin wire_e buf_x4/A
puts "cells after additions: [llength [get_cells *]]"
puts "nets after additions: [llength [get_nets *]]"
# Write basic verilog
set out1 [make_result_file verilog_write_nangate_out1.v]
write_verilog $out1
diff_files $out1 verilog_write_nangate_out1.vok
# Write with pwr_gnd
set out2 [make_result_file verilog_write_nangate_out2.v]
write_verilog -include_pwr_gnd $out2
diff_files $out2 verilog_write_nangate_out2.vok
# Cleanup added instances/nets
disconnect_pin wire_a nand1/A1
disconnect_pin wire_b nand1/A2
disconnect_pin wire_c nor1/A1
disconnect_pin wire_d nor1/A2
disconnect_pin wire_e buf_x4/A
delete_instance nand1
delete_instance nor1
delete_instance buf_x4
delete_net wire_a
delete_net wire_b
delete_net wire_c
delete_net wire_d
delete_net wire_e