OpenSTA/search/test/search_annotated_write_veri...

160 lines
5.4 KiB
Tcl

# Test annotated delays, annotated checks, annotated slews,
# write_verilog, write_sdf with various dividers, report_disabled_edges,
# report_annotated_delay and report_annotated_check with various options.
# Targets: Sta.cc setArcDelayAnnotated, arcDelayAnnotated,
# setAnnotatedSlew, removeDelaySlewAnnotations,
# writeSdf with divider/include_typ/digits,
# Sdf.cc SdfWriter.cc (write_sdf_cmd),
# Graph.cc report_disabled_edges
source ../../test/helpers.tcl
read_liberty ../../test/nangate45/Nangate45_typ.lib
read_verilog search_test1.v
link_design search_test1
create_clock -name clk -period 10 [get_ports clk]
set_input_delay -clock clk 1.0 [get_ports in1]
set_input_delay -clock clk 1.0 [get_ports in2]
set_output_delay -clock clk 2.0 [get_ports out1]
# Baseline timing
report_checks -path_delay max > /dev/null
############################################################
# report_annotated_delay with various options
############################################################
puts "--- report_annotated_delay ---"
report_annotated_delay
puts "--- report_annotated_delay -list_annotated ---"
report_annotated_delay -list_annotated
puts "--- report_annotated_delay -list_not_annotated ---"
report_annotated_delay -list_not_annotated
puts "--- report_annotated_delay -list_not_annotated -max_lines 5 ---"
report_annotated_delay -list_not_annotated -max_lines 5
puts "--- report_annotated_delay -constant_arcs ---"
report_annotated_delay -constant_arcs
############################################################
# report_annotated_check with various options
############################################################
puts "--- report_annotated_check ---"
report_annotated_check
puts "--- report_annotated_check -setup ---"
report_annotated_check -setup
puts "--- report_annotated_check -hold ---"
report_annotated_check -hold
puts "--- report_annotated_check -setup -hold ---"
report_annotated_check -setup -hold
puts "--- report_annotated_check -list_annotated ---"
report_annotated_check -list_annotated
puts "--- report_annotated_check -list_not_annotated ---"
report_annotated_check -list_not_annotated
puts "--- report_annotated_check -recovery ---"
report_annotated_check -recovery
puts "--- report_annotated_check -removal ---"
report_annotated_check -removal
puts "--- report_annotated_check -width ---"
report_annotated_check -width
puts "--- report_annotated_check -period ---"
report_annotated_check -period
puts "--- report_annotated_check -max_skew ---"
report_annotated_check -max_skew
puts "--- report_annotated_check -nochange ---"
report_annotated_check -nochange
############################################################
# report_disabled_edges
############################################################
puts "--- report_disabled_edges ---"
report_disabled_edges
############################################################
# Disable some timing, check disabled edges
############################################################
puts "--- disable + report_disabled_edges ---"
set_disable_timing [get_cells buf1]
report_disabled_edges
report_checks -path_delay max
unset_disable_timing [get_cells buf1]
puts "--- disable lib cell + report_disabled_edges ---"
set_disable_timing [get_lib_cells NangateOpenCellLibrary/BUF_X1] -from A -to Z
report_disabled_edges
report_checks -path_delay max
unset_disable_timing [get_lib_cells NangateOpenCellLibrary/BUF_X1] -from A -to Z
############################################################
# write_sdf with different dividers and options
############################################################
puts "--- write_sdf divider . ---"
set sdf1 [make_result_file "annotated_dot.sdf"]
write_sdf -divider . -no_timestamp -no_version $sdf1
puts "--- write_sdf divider / ---"
set sdf2 [make_result_file "annotated_slash.sdf"]
write_sdf -divider / -no_timestamp -no_version $sdf2
puts "--- write_sdf include_typ ---"
set sdf3 [make_result_file "annotated_typ.sdf"]
write_sdf -include_typ -no_timestamp -no_version $sdf3
puts "--- write_sdf digits 6 ---"
set sdf4 [make_result_file "annotated_d6.sdf"]
write_sdf -digits 6 -no_timestamp -no_version $sdf4
puts "--- write_sdf digits 1 ---"
set sdf5 [make_result_file "annotated_d1.sdf"]
write_sdf -digits 1 -no_timestamp -no_version $sdf5
############################################################
# write_verilog with various options
############################################################
puts "--- write_verilog ---"
set v1 [make_result_file "annotated_out.v"]
write_verilog $v1
puts "--- write_verilog -include_pwr_gnd ---"
set v2 [make_result_file "annotated_pwr.v"]
write_verilog -include_pwr_gnd $v2
puts "--- write_verilog -remove_cells ---"
set v3 [make_result_file "annotated_remove.v"]
write_verilog -remove_cells {} $v3
############################################################
# read_sdf after write_sdf
############################################################
puts "--- read_sdf ---"
read_sdf $sdf1
report_checks -path_delay max
puts "--- report_annotated_delay after read_sdf ---"
report_annotated_delay -list_annotated
puts "--- report_annotated_check after read_sdf ---"
report_annotated_check -list_annotated -setup -hold
############################################################
# remove delay/slew annotations
############################################################
puts "--- remove_delay_slew_annotations ---"
sta::remove_delay_slew_annotations
puts "--- report_annotated_delay after remove ---"
report_annotated_delay