During CTS we often see multiple clocks getting balanced. Sometimes we also find clocks which are not be balanced getting balanced by the CTS engine.
CTS engine tries to balance the clocks based upon all the clocks reaching the end point or sink pin
Step1 : Get all the clocks reaching the path with high latency sink pin using the following sink pin.
Step2: identify muxes in the clock path
Step3: check clocks on b pin
Step4: check clocks on a pin
step5: check the case value on the mux sel pin
If there is no definition of the case_value on the sel pin. Then ideally there should have been two generated clocks defined on the output of the z pin and defined logically asynchronous to resolve the issue.
pt_shell> get_attribute [get_pins {module/u_cmux2_SIZE_ONLY/z} ] clocks
{"CLKM1_long_latency_clk", "CLKM1_main_clk"}
report the clock path using the below clock and identify mux in the path by reporting the problematic clock
report_clock_timing -to {mux/reg[1]/clk} -type latency -clock main_clock -verbose
Check the clocks on b pin of mux
pt_shell> get_attribute [get_pins
{module/u_cmux2_SIZE_ONLY/b}
] clocks
{"CLKM1_main_clk"}
Check clocks on a pin of the mux
pt_shell> get_attribute [get_pins
{module/u_cmux2_SIZE_ONLY/a}
] clocks
{"CLKM1_long_latency_clk"}
Check case value on the mux ( If the case value is not defined then both clocks get propagated
pt_shell> get_attribute [get_pins
{module/u_cmux2_SIZE_ONLY/sel}
] case_value
No comments:
Post a Comment