0% found this document useful (0 votes)
5 views

Why Does an Unconditional Default Arc Still Show When timing_disable_cond_default_arcs is true_

The document explains why unconditional default arcs may still appear in timing reports even when the variable timing_disable_cond_default_arcs is set to true. It clarifies that the default arc is only disabled if there is at least one conditional arc with the same timing type present. An example illustrates how the timing tool treats different arcs based on their definitions and conditions.

Uploaded by

xylcool5
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Why Does an Unconditional Default Arc Still Show When timing_disable_cond_default_arcs is true_

The document explains why unconditional default arcs may still appear in timing reports even when the variable timing_disable_cond_default_arcs is set to true. It clarifies that the default arc is only disabled if there is at least one conditional arc with the same timing type present. An example illustrates how the timing tool treats different arcs based on their definitions and conditions.

Uploaded by

xylcool5
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

(/s/) Cases (/s/case-list) STARs (/s/star-list) Articles (/s/knowledge) Help (/s/help-info)

Dec 11, 2019 • Knowledge

Title
Why Does an Unconditional Default Arc Still Show When timing_disable_cond_default_arcs is true?

Description
Why Does an Unconditional Default Arc Still Show When timing_disable_cond_default_arcs
is true?
Question:

pre { padding-left: 15px; } p.first { padding-top: 10px; }

I set the timing_disable_cond_default_arcs variable to true to disable unconditional default arcs. However, my timing report in
PrimeTime or Design Compiler still shows the delay value from the unconditional timing arc. Why is this the case?

Answer:

PrimeTime or Design Compiler disables the default arc only when it finds at least one conditional arc with same timing type.

The following example takes a library cell with the following timing arcs defined in the library:

Arc Arc Pins


Lib Cell Attributes # Type/Sense From To When
----------------------------------------------------------------
LDL_CKGTNLT_16
s 0 rise_to_rise CK Q ( EN ) + ( ! ( EN ) * SE )
1 rise_to_rise CK Q ! ( EN ) * ! ( SE )
2 positive_unate CK Q <-- Default arc with different timing type

In this case, the default arc has a positive_unate sense, but the other conditional arcs are described as rise_to_rise arcs. This means
that PrimeTime treats this arc as another normal arc with no "when" condition, but PrimeTime does not consider it to be a default arc.

According to the description given for the timing_disable_cond_default_arcs variable, the default arc is not disabled unless it finds at
least one conditional arc between the same pins having same timing_type definition.
pt_shell> set timing_disable_cond_default_arcs true
true
pt_shell> report_attribute [get_timing_arcs -from latch_negedge_precontrol/CK \
-to latch_negedge_precontrol/Q] -application -nosplit

Design Object Type Attribute Name Value


---------------------------------------------------------------------------
icg_cell arc float annotated_delay_delta_max_fall 0.000000
icg_cell arc float annotated_delay_delta_max_rise 0.000000
icg_cell arc boolean is_disabled false
icg_cell arc boolean is_user_disabled false
icg_cell arc string object_class timing_arc
icg_cell arc string sdf_cond (EN)|(~(EN)&SE)
icg_cell arc string sense rise_to_rise
icg_cell arc collection to_pin latch_negedge_precontrol/Q
icg_cell arc string when ( EN ) + ( ! ( EN ) * SE )

icg_cell arc float annotated_delay_delta_max_fall 0.000000


icg_cell arc float annotated_delay_delta_max_rise 0.000000
icg_cell arc boolean is_disabled false
icg_cell arc boolean is_user_disabled false
icg_cell arc string object_class timing_arc
icg_cell arc string sdf_cond (~(EN)&~(SE))
icg_cell arc string sense rise_to_rise
icg_cell arc collection to_pin latch_negedge_precontrol/Q
icg_cell arc string when ! ( EN ) * ! ( SE )

icg_cell arc float annotated_delay_delta_max_fall 0.000000


icg_cell arc float annotated_delay_delta_max_rise 0.000000
icg_cell arc boolean is_disabled false
icg_cell arc boolean is_user_disabled false
icg_cell arc string object_class timing_arc
icg_cell arc string sense positive_unate
icg_cell arc collection to_pin latch_negedge_precontrol/Q

If the default arc for this library cell has been defined as a rise_to_rise timing arc, then the tool would disable this default arc as it finds
another similar conditional timing arcs:

Arc Arc Pins


Lib Cell Attributes # Type/Sense From To When
----------------------------------------------------------------------
LDL_CKGTNLT_16
s 0 rise_to_rise CK Q ( EN ) + ( ! ( EN ) * SE )
1 rise_to_rise CK Q ! ( EN ) * ! ( SE )
2 rise_to_rise CK Q <-- Modified default arc to match timing type

In this case, since there are equivalent conditional arcs available, the last unconditional arc is considered as a default arc defined for this
cell, and the timing_disable_cond_default_arcs variable disables this arc.
pt_shell> set timing_disable_cond_default_arcs true
true
pt_shell> report_attribute [get_timing_arcs -from latch_negedge_precontrol/CK \
-to latch_negedge_precontrol/Q] -application -nosplit

Design Object Type Attribute Name Value


---------------------------------------------------------------------------
icg_cell arc float annotated_delay_delta_max_fall 0.000000
icg_cell arc float annotated_delay_delta_max_rise 0.000000
icg_cell arc boolean is_disabled false
icg_cell arc boolean is_user_disabled false
icg_cell arc string object_class timing_arc
icg_cell arc string sdf_cond (EN)|(~(EN)&SE)
icg_cell arc string sense rise_to_rise
icg_cell arc collection to_pin latch_negedge_precontrol/Q
icg_cell arc string when ( EN ) + ( ! ( EN ) * SE )

icg_cell arc float annotated_delay_delta_max_fall 0.000000


icg_cell arc float annotated_delay_delta_max_rise 0.000000
icg_cell arc boolean is_disabled false
icg_cell arc boolean is_user_disabled false
icg_cell arc string object_class timing_arc
icg_cell arc string sdf_cond (~(EN)&~(SE))
icg_cell arc string sense rise_to_rise
icg_cell arc collection to_pin latch_negedge_precontrol/Q
icg_cell arc string when ! ( EN ) * ! ( SE )

icg_cell arc float annotated_delay_delta_max_fall 0.000000


icg_cell arc float annotated_delay_delta_max_rise 0.000000
icg_cell arc boolean is_disabled true
icg_cell arc boolean is_user_disabled false
icg_cell arc string object_class timing_arc
icg_cell arc string sense rise_to_rise
icg_cell arc collection to_pin latch_negedge_precontrol/Q

To learn why the delay in the SDF file defined for a default arc is considered, see
SolvNet article 020985, "Does a Default Arc Take Precedence Over Conditional Arcs?"
(https://solvnet.synopsys.com/retrieve/020985.html#q4)

Workaround

Product L1
PrimeTime (/s/detail/01t1U000003IY0JQAW)

Additional Product(s)
Design Compiler (80001938)

Article Number
000015140

Last Published Date


12/11/2019, 12:41 PM

Article Record Type


How To

URL Name
Why-Does-an-Unconditional-Default-Arc-Still-Show-When-timing-disable-cond-default-arcs-is-true-1576091430734

Was this article helpful? 1 0

Recommended Articles

How Standard Delay Format and Conditional Arcs Work

Conditional Timing Arc FAQ

Why Does the write_sdf Command Write the Incorrect Delay Value?

Why does case analysis setting on MUX input also disables its select arc?

Why Are There Tming Loops on Paths With false_path Constraints?

Related Files (0)

Article Comments (0) (/s/relatedlist/ka01U000001dmkEQAQ/Article_Comments__r) New

Saved Articles (0) (/s/relatedlist/ka01U000001dmkEQAQ/Saved_Articles__r) New

You might also like