OpenSTA/search/test/search_json_unconstrained.tcl

94 lines
3.2 KiB
Tcl

# Test ReportPath::reportJson with multiple paths, reportJsonHeader,
# reportFull(PathEndUnconstrained), reportShort(PathEndUnconstrained),
# and report_checks -format json with various path types.
# Covers: ReportPath.cc reportJson*, reportFull/Short(Unconstrained),
# reportPath(PathEnd, PathExpanded), reportBlankLine, reportClkPath
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]
# Force timing computation
report_checks > /dev/null
puts "--- report_checks -format json (multiple endpoints) ---"
report_checks -format json -path_delay max -endpoint_path_count 3 -group_path_count 5
puts "PASS: json format multi-endpoint"
puts "--- report_checks -format json min ---"
report_checks -format json -path_delay min
puts "PASS: json format min"
puts "--- report_checks -format json min_max ---"
report_checks -format json -path_delay min_max
puts "PASS: json format min_max"
puts "--- report_checks -format json to specific pin ---"
report_checks -format json -to [get_pins reg1/D]
puts "PASS: json format to specific pin"
puts "--- report_checks -format json from specific port ---"
report_checks -format json -from [get_ports in1]
puts "PASS: json format from port"
puts "--- report_checks -format json through pin ---"
report_checks -format json -through [get_pins and1/ZN]
puts "PASS: json format through pin"
puts "--- report_checks -unconstrained format full ---"
report_checks -unconstrained -format full
puts "PASS: unconstrained full format"
puts "--- report_checks -unconstrained format short ---"
report_checks -unconstrained -format short
puts "PASS: unconstrained short format"
puts "--- report_checks -unconstrained format end ---"
report_checks -unconstrained -format end
puts "PASS: unconstrained end format"
puts "--- report_checks -unconstrained format slack_only ---"
report_checks -unconstrained -format slack_only
puts "PASS: unconstrained slack_only format"
puts "--- report_path on individual path (json format) ---"
sta::set_report_path_format json
set paths_j [find_timing_paths -path_delay max -endpoint_path_count 3]
foreach pe $paths_j {
set p [$pe path]
sta::report_path_cmd $p
}
sta::set_report_path_format full
puts "PASS: report_path_cmd json multi"
puts "--- reportPathFull on a single path ---"
set paths_f [find_timing_paths -path_delay max]
foreach pe $paths_f {
set p [$pe path]
catch { report_path $p }
break
}
puts "PASS: report_path full"
puts "--- json report with full_clock format (for source clock paths) ---"
report_checks -format json -path_delay max
puts "PASS: json with clock info"
puts "--- report_checks -format json -sort_by_slack ---"
report_checks -format json -sort_by_slack
puts "PASS: json sort_by_slack"
puts "--- report_checks min with fields ---"
report_checks -path_delay min -fields {capacitance slew fanout input_pin net}
puts "PASS: min with all fields"
puts "--- report_checks with -digits ---"
report_checks -format json -digits 6
puts "PASS: json digits 6"
puts "ALL PASSED"