Cts
Cts
For Better timing the target skew and latency should give min.
9. What was your latency in your projects?
As per design
10. What is your skew? How you reduced the skew if get violated . how you optimize the
skew?
Experiments
1) Enabling Global routing for timing and skew optimization.
Global routing is used for the first step of the actual wire implementation. Tries to avoid
global congestion. It takes longer time for optimization but has accurate timing results.
So the advantage of a global router is that we have accurate timing results and the
optimization is done based on the estimation of the routability and congestion in the design.
The total power consumed by the clk buffer and inverter in the whole design is
increased by 0.7mw and 0.3mw respectively. If we have relaxation for clock buffer
count and power then this switch is useful to reduce timing violations.
This app option performs clock concurrent and data (CCD) optimization when it is set to
true. In clock concurrent optimization technique, it optimizes both data and clock path
concurrently.
When this option is set to true, At clock_opt stage the CCD optimization is performed.
This attribute also performs area and power optimization at clock_opt stage.
CCD is applying useful skew techniques during datapath optimization to improve the
timing QoR. To solve the setup violation, tool is adjusting the launch and capture path in
such a way that the launch clock path plus data path delay is reduced and capture path
delay is increased. The overall clock buffer and inverter count is less than the default
experiment. Hence the power consumption and area is reduced.
3) Appling NDR
Default : set_app_options –name clock_opt.flow.optimize_ndr –value false
The clock_opt first tries to fix timing violations and then it optimises the area if the
margin is available. After optimizing timing the setup margin for area recovery is not
sufficient so area optimization didn’t take place. So for performing area recovery timing
margin is required.
6) Disabling Path groups for optimization if margin is available
set_app_options -name ccd.skip_path_groups -value {reg2mem mem2reg}
This app option skips the path groups which are mentioned in the list. We can skip those path
groups which are not timing critical. So the tool can put most of its effort on those path which
are timing critical
7) Hold Fixing
set_app_options -name ccd.hold_control_effort -value high
11. How will you fix the timing violation in CTS stage?
12. you are seeing huge timing violations in cts, how you fix that?
13. What checks you performed before cts and after cts?
Ans. As clk is high transition signal, cells on clk path consumes more power. So if
number of clk cells reduces, power consumption also can be reduced. That is why we
need to minimize insertion delay
17. In which report you will find the latency of the block?
As per project.
18. What are the reasons for high skew in your design?
19. What is your analysis if skew and insertion delay are violating & How you will fix?
Same as ans 18.
20. what are the uncertainty factors and explain about each factor?
It is used to tight the constraints. It is the extra margin added in the design for future
use. It contains: Net delay, Skew, Ocv, Jitter, Crosstalk, tool margin.
21. What is meant by clock pull and push? useful skew method with diagram?
22. What are the factors we need to consider while pushing/pulling the clock?
As per design.
We use clock inverters and clock buffers in the clock tree building. Sometimes we use only
clock inverters and not clock buffers. We also use clock gating cells in the clock tree. so we
have to provide the list of cells that we want to use in the clock tree.
set_ccopt_property inverter_cells {}
set_ccopt_property buffer_cells {}
set_ccopt_property clock_gating_cells {}
set_ccopt_property logic_cells {}
Global skew
30. What is latency & types of latency?
Asynchronous Clocks
`set_clock_groups -asynchronous`
When you say two(or more) clocks are asynchronous, that means there is no phase
Two clocks are said to be logically exclusive when they are both active in the design but
doesn’t have any paths between them. An example would be a MUX selecting two or more
of the clocks for a portion of the design using its select lines. Such clocks will not have any
These clocks do not exist in the design at the same time. e.g. Clocks defined on the same
primary port but working in two different modes like the TestClk and Functional Clock.
SysClk]`
DRV’S: Max tran, max cap, max fanout If drvs are violating cell delays cannot be trusted
because every cell is characterised with certain range of targets. So if these exceeds cell
delays cannot be trusted.
MPCTS enable:
Good but in realtime its not possible because in a design all the flops are not triggered at
same time.
41. Consider 2 designs, one with less skew & more latency other design vice versa then
which one you will choose and why?
SDC CONSTRAINTS:
❖ STATIC TIMING ANALYSIS (STA) is the best method for determining timing analysis, if the
circuit
❖ We should provide required timing constraints based on the design , the tool checks the
slack
➢ We should provide the clock constraints to all the clk ports in the design.
create_generated_clock -multiply_by 2 -name ckGen2x -source clk [get_pins ckGen/U8/Z]
➢ If there is any pins which has the source clk input we should create generated clk
set_clock_uncertainty 0.4 [get_clock clk]
➢ We are setting 20% of clk period as clock uncertainty which is an ideal case. We took it as
the limit
for the possible deviation of the clk edge from its ideal location.
➢ We are setting insertion delay from clock source to clock definition point as 10% of clock
period.
➢ Similarly, we are setting insertion delay from clock port to clk sink point of sequential
elements as
10%.
set_input_delay 1.33 [all_inputs] -clock clk
➢ We are setting input delay as 60% of clk period for every register to input port paths.
➢ Similarly, we are setting output delay as 60% for every output port to register paths.
❖ For feed through paths the delay is considered as 30% ideal case, otherwise we get input
from full
chip level.
set x [filter [all_fanout -from [all_inputs]] "port_direction == out"]
➢ We are filtering out feed through paths from input to output and taking output ports as a
list.
➢ We are filtering out feed through paths from output to input and taking input ports as a
list.
➢ We are setting input delay as 35% for every register to input port paths.
➢ We are setting output delay as 35% for every output port to register paths.
❖ We are creating four group paths and checking whether the timing constraints have been
met or
not.