# Test SDF advanced features: timing checks, write options, multiple reads, # gzip write, divider options. # Targets uncovered SdfReader.cc paths (timing checks, interconnect, cond_use), # SdfWriter.cc paths (gzip, divider, digits, no_timestamp, no_version, # include_typ), and SdfParse.yy grammar paths. source ../../test/helpers.tcl set test_name sdf_advanced read_liberty ../../test/nangate45/Nangate45_typ.lib read_verilog sdf_test2.v link_design sdf_test2 create_clock -name clk -period 10 [get_ports clk] set_input_delay -clock clk 0 [get_ports d] set_input_delay -clock clk 0 [get_ports en] set_output_delay -clock clk 0 [get_ports q] #--------------------------------------------------------------- # Read SDF with timing checks, interconnects, and multi-value triples #--------------------------------------------------------------- puts "--- read_sdf test2 (with timing checks/interconnects) ---" read_sdf sdf_test2.sdf puts "PASS: read_sdf with timing checks" #--------------------------------------------------------------- # Report annotated delay: exercise all combinations #--------------------------------------------------------------- puts "--- report_annotated_delay -cell ---" report_annotated_delay -cell puts "PASS: annotated delay -cell" puts "--- report_annotated_delay -net ---" report_annotated_delay -net puts "PASS: annotated delay -net" puts "--- report_annotated_delay -from_in_ports ---" report_annotated_delay -from_in_ports puts "PASS: annotated delay -from_in_ports" puts "--- report_annotated_delay -to_out_ports ---" report_annotated_delay -to_out_ports puts "PASS: annotated delay -to_out_ports" puts "--- report_annotated_delay -cell -net combined ---" report_annotated_delay -cell -net puts "PASS: annotated delay -cell -net" puts "--- report_annotated_delay -report_annotated ---" report_annotated_delay -report_annotated puts "PASS: annotated delay -report_annotated" puts "--- report_annotated_delay -report_unannotated ---" report_annotated_delay -report_unannotated puts "PASS: annotated delay -report_unannotated" puts "--- report_annotated_delay -constant_arcs ---" report_annotated_delay -constant_arcs puts "PASS: annotated delay -constant_arcs" puts "--- report_annotated_delay -max_lines 2 ---" report_annotated_delay -max_lines 2 puts "PASS: annotated delay -max_lines 2" #--------------------------------------------------------------- # Report annotated check: exercise all check types #--------------------------------------------------------------- puts "--- report_annotated_check -setup ---" report_annotated_check -setup puts "PASS: annotated check -setup" puts "--- report_annotated_check -hold ---" report_annotated_check -hold puts "PASS: annotated check -hold" puts "--- report_annotated_check -recovery ---" report_annotated_check -recovery puts "PASS: annotated check -recovery" puts "--- report_annotated_check -removal ---" report_annotated_check -removal puts "PASS: annotated check -removal" puts "--- report_annotated_check -width ---" report_annotated_check -width puts "PASS: annotated check -width" puts "--- report_annotated_check -period ---" report_annotated_check -period puts "PASS: annotated check -period" puts "--- report_annotated_check -nochange ---" report_annotated_check -nochange puts "PASS: annotated check -nochange" puts "--- report_annotated_check -max_skew ---" report_annotated_check -max_skew puts "PASS: annotated check -max_skew" puts "--- report_annotated_check -setup -report_annotated ---" report_annotated_check -setup -report_annotated puts "PASS: annotated check -setup -report_annotated" puts "--- report_annotated_check -setup -report_unannotated ---" report_annotated_check -setup -report_unannotated puts "PASS: annotated check -setup -report_unannotated" puts "--- report_annotated_check -setup -hold combined ---" report_annotated_check -setup -hold puts "PASS: annotated check -setup -hold" puts "--- report_annotated_check all types ---" report_annotated_check puts "PASS: annotated check all types" puts "--- report_annotated_check -constant_arcs ---" report_annotated_check -constant_arcs puts "PASS: annotated check -constant_arcs" puts "--- report_annotated_check -max_lines 3 ---" report_annotated_check -max_lines 3 puts "PASS: annotated check -max_lines 3" #--------------------------------------------------------------- # Write SDF with various options #--------------------------------------------------------------- puts "--- write_sdf default ---" set sdf_out1 [make_result_file "${test_name}_default.sdf"] write_sdf $sdf_out1 puts "PASS: write_sdf default" puts "--- write_sdf -divider . ---" set sdf_out2 [make_result_file "${test_name}_dot.sdf"] write_sdf -divider . $sdf_out2 puts "PASS: write_sdf -divider ." puts "--- write_sdf -digits 6 ---" set sdf_out3 [make_result_file "${test_name}_digits6.sdf"] write_sdf -digits 6 $sdf_out3 puts "PASS: write_sdf -digits 6" puts "--- write_sdf -include_typ ---" set sdf_out4 [make_result_file "${test_name}_typ.sdf"] write_sdf -include_typ $sdf_out4 puts "PASS: write_sdf -include_typ" puts "--- write_sdf -no_timestamp ---" set sdf_out5 [make_result_file "${test_name}_nots.sdf"] write_sdf -no_timestamp $sdf_out5 puts "PASS: write_sdf -no_timestamp" puts "--- write_sdf -no_version ---" set sdf_out6 [make_result_file "${test_name}_noversion.sdf"] write_sdf -no_version $sdf_out6 puts "PASS: write_sdf -no_version" puts "--- write_sdf -gzip ---" set sdf_out7 [make_result_file "${test_name}_gz.sdf.gz"] write_sdf -gzip $sdf_out7 puts "PASS: write_sdf -gzip" puts "--- write_sdf combined options ---" set sdf_out8 [make_result_file "${test_name}_combined.sdf"] write_sdf -digits 4 -include_typ -no_timestamp -no_version $sdf_out8 puts "PASS: write_sdf combined options" #--------------------------------------------------------------- # report_checks with SDF annotations (exercises annotation paths) #--------------------------------------------------------------- puts "--- report_checks (SDF annotated) ---" report_checks puts "PASS: report_checks with SDF" report_checks -path_delay min puts "PASS: report_checks min path with SDF" report_checks -format full_clock puts "PASS: report_checks full_clock with SDF" puts "ALL PASSED"