Files
OpenSTA/sdc/test/sdc_exc_thru_complex4.sdcok
Jaehyun Kim 7173c10cc1 test: strengthen assertions, add sorted SDC diff, and clean up tests
- Split oversized test files to stay under 5,000 lines per file:
  TestSdc.cc → TestSdcClasses.cc, TestSdcStaInit.cc, TestSdcStaDesign.cc
  TestSearchStaDesign.cc → TestSearchStaDesign.cc, TestSearchStaDesignB.cc
  TestLibertyStaBasics.cc → TestLibertyStaBasics.cc, TestLibertyStaBasicsB.cc
  TestNetwork.cc → TestNetwork.cc, TestNetworkB.cc
- Replace ~200+ (void) casts with proper EXPECT_* assertions across all
  C++ test files (dcalc, liberty, network, sdc, search, power, spice, util)
- Remove ~55 SUCCEED() and EXPECT_TRUE(true) no-op assertions
- Fix 6 load-only Tcl tests by adding diff_files verification with
  22 new .sdcok golden reference files
- Delete 7 orphan .ok files with no matching .tcl tests
- Add how_to_write_good_tests.md and TODO6.md documenting test quality rules

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
2026-02-23 17:36:45 +09:00

126 lines
4.0 KiB
Plaintext

###############################################################################
# Created by write_sdc
###############################################################################
current_design sdc_test2
###############################################################################
# Timing Constraints
###############################################################################
create_clock -name clk1 -period 10.0000 [get_ports {clk1}]
create_clock -name clk2 -period 20.0000 [get_ports {clk2}]
set_input_delay 2.0000 -clock [get_clocks {clk1}] -add_delay [get_ports {in1}]
set_input_delay 2.0000 -clock [get_clocks {clk1}] -add_delay [get_ports {in2}]
set_input_delay 2.0000 -clock [get_clocks {clk2}] -add_delay [get_ports {in3}]
set_output_delay 3.0000 -clock [get_clocks {clk1}] -add_delay [get_ports {out1}]
set_output_delay 3.0000 -clock [get_clocks {clk2}] -add_delay [get_ports {out2}]
group_path -default\
-from [get_ports {in1}]\
-to [get_ports {out2}]
group_path -name gp_net\
-from [get_ports {in1}]\
-through [get_nets {n1}]\
-to [get_ports {out1}]
group_path -name gp_inst\
-from [get_ports {in2}]\
-through [get_cells {and1}]\
-to [get_ports {out1}]
group_path -name gp_pin\
-from [get_ports {in3}]\
-through [get_pins {or1/ZN}]\
-to [get_ports {out2}]
set_multicycle_path -hold\
-from [get_ports {in1}]\
-through [get_pins {buf1/Z}]\
-to [get_ports {out1}] 1
set_multicycle_path -setup\
-from [get_ports {in1}]\
-through [get_pins {buf1/Z}]\
-to [get_ports {out1}] 2
set_min_delay\
-from [get_ports {in1}]\
-through [get_nets {n1}]\
-to [get_ports {out1}] 0.5000
set_max_delay\
-from [get_ports {in1}]\
-through [get_nets {n1}]\
-to [get_ports {out1}] 7.0000
set_max_delay\
-from [get_ports {in2}]\
-through [get_cells {and1}]\
-to [get_ports {out1}] 6.5000
set_max_delay -ignore_clock_latency\
-from [get_ports {in3}]\
-to [get_ports {out2}] 9.0000
set_max_delay\
-from [get_ports {in3}]\
-through [get_pins {or1/ZN}]\
-to [get_ports {out2}] 8.0000
set_false_path\
-from [get_cells {reg1}]\
-to [get_ports {out2}]
set_false_path\
-from [get_clocks {clk1}]\
-to [get_ports {out1}]
set_false_path\
-from [get_ports {in1}]\
-to [get_cells {reg2}]
set_false_path\
-from [get_ports {in1}]\
-through [get_nets {n1}]\
-through [get_pins {and1/ZN}]\
-to [get_ports {out1}]
set_false_path\
-from [get_ports {in1}]\
-through [get_nets {n3}]\
-to [get_ports {out1}]
set_false_path\
-from [get_ports {in1}]\
-through [get_pins {buf1/Z}]\
-through [get_nets {n3}]\
-to [get_ports {out1}]
set_false_path\
-from [get_ports {in2}]\
-through [get_cells {inv1}]\
-through [get_pins {nand1/ZN}]\
-to [get_ports {out1}]
set_false_path\
-from [get_ports {in2}]\
-through [get_cells {and1}]\
-to [get_ports {out1}]
set_false_path\
-from [get_ports {in2}]\
-through [get_pins {inv1/ZN}]\
-through [get_nets {n3}]\
-through [get_cells {nand1}]\
-to [get_ports {out1}]
set_false_path\
-from [get_ports {in3}]\
-to [get_ports {out1}]
set_false_path\
-from [get_ports {in3}]\
-rise_through [get_cells {or1}]\
-to [get_ports {out2}]
set_false_path\
-from [list [get_ports {in1}]\
[get_ports {in2}]]\
-to [list [get_ports {out1}]\
[get_ports {out2}]]
set_false_path\
-through [get_nets {n1}]\
-to [get_ports {out1}]
set_false_path\
-through [list [get_nets {n2}]\
[get_cells {buf1}]]\
-to [get_ports {out2}]
set_false_path\
-rise_through [get_nets {n4}]\
-to [get_ports {out2}]
set_false_path\
-fall_through [get_nets {n5}]\
-to [get_ports {out1}]
###############################################################################
# Environment
###############################################################################
###############################################################################
# Design Rules
###############################################################################