TIMING CONSTRAINTS
Start
with no timing constraints
Use
IDE to view the clock networks
Create
basic clocks
Review
Timing reports for coverage
Open
synthesized design .See schematic
Report
clock networks.Click constraints
See
unconstrained
-------------------------------------------------------------------------------------------------------------
Before editing go for report_clocks
Edit timing constraints
Click generated clock
Description:
Create
a generated clock object
Syntax:
create_generated_clock [-name <arg>] [-source <args>]
[-edges <args>]
[-divide_by
<arg>] [-multiply_by <arg>]
[-combinational]
[-duty_cycle <arg>] [-invert]
[-edge_shift
<args>] [-add] [-master_clock <arg>]
[-quiet] [-verbose]
<objects>
Returns:
new
clock object
Usage:
Name Description
-----------------------------
[-name] Generated clock name
[-source] Master clock source object pin/port
[-edges] Edge Specification
[-divide_by] Period division factor: Value >= 1
Default: 1
[-multiply_by] Period multiplication factor: Value >= 1
Default: 1
[-combinational] Create a divide_by 1 clock through
combinational logic
[-duty_cycle] Duty cycle for period multiplication:
Range: 0.0 to 100.0
Default: 0.0
[-invert] Invert the signal
[-edge_shift] Edge shift specification
[-add] Add to the existing clock in
source_objects
[-master_clock] Use this clock if multiple clocks present at
master pin
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command
execution
<objects> List of clock source ports, pins, or
nets
Categories:
SDC,
XDC
report_timing
if
its ports go generic
if
it is pins,do tcl for get_pins
and
do report_timing -from[get_pins ..]-to[get_pins ..]]
view
contents of the report
Timing
reports always start from primary clock propagate to the generated clocks and
then on to the clock elements.
observe
the destination path clock timing.
See
the requirements of the generated clock
See
the destination clock start of next
clock edge and on to destination register
Slack
is the required time – arrival time
Open
the schematic of the netlist ,select clk_gen.window.zoom it
Observe
the difference in schematic which is periodically enabled to generate the
destination clocks.
In
this case,generated clocks doesnot have the predefined relationship with the
primary clocks clk pin
As
a result,create a tcl command
create_generated
clock
save
the constraints
enter
the tcl command report_clocks
observe
the new generated clock included in the timing reports
click
report timing summary
select
new generated clk
see
intraclk path,see the setup.double click any path to view the path properties
see
the source clock path
source
clock delay starts primary clock and propgate to generated clocks both
automatically and manual generated clocks
see
the destination clock path
starts
from primary clock and propagated to generated clocks
close
the properties.
Go
to tools
report_timing
–from[get_pins] –to[get_pins]
Datapath delay
Reg
to reg
report_timing
–from[all_registers] –to [all_registers]
see
the slack in ns
report_timing
–from[all_registers] –to [all_outputs]
see
the slack in ns
report_timing
–from[all_inputs] –to [all_registers]
see
the slack in ns
See
which is the highest slack in ns add min ns which can become as the he primary
clock we need to choose it.
set input_delay
report_timing
–from[all_inputs]
see
the reports
set_input_delay
–clock[get_clocks –phyclk0] –max3$my_input
report_timing
–from$my_input –setup
see
the reports
see
the slack and input delay
insert
the below tcl
set_input_delay
–clock[get_clocks –phyclk0] –min1$my_input
report_timing
–from$my_input –hold
report
shows actual slack and the input delay
In
addition see the edit timing constraint, can add set_input_delay
Input delay =highest slack obtained –all inputs to all registers
set output_delay
report_timing
–to[all_inputs]
see
the reports
set_input_delay
–clock[get clocks –sysclk0] $my_output
report_timing
–from$my_input –hold
see
the reports
see
the actual slack and input delay
In
addition see the edit timing constraint, can add set_output_delay
Output delay=highest slack obtained –all regsisters
to all outputs
set clock groups
Open
the synthesized design
Report
clock interaction
Analyze
the timing path from one clock domain to another clock domain
Report
shows grid of clock interactions
Each
grid is colored to indicate timing ,constraint status in inter clock path
If
the two clock groups does not meet timing it is asynchronous
Clock
frequencies are not integer multiples .Its impossible to find the relative
fields between them.
report_clock_interactions
–delay_type min_max –significant_digits 3 –name timing_1
see
the wns and choose max
suppose
if you have two constraints like clk_out1_clk_core, clk_out2_clk_core=>
join
[get_timing_paths –from [get_clocks clk_out1_clk_core] –to[get_clocks
clk_out2_clk_core]
-max_paths
200]
join
[get_timing_paths –from [get_clocks clk_out2_clk_core] –to[get_clocks
clk_out1_clk_core]
-max_paths
200]
Two clocks marked as asynchronous
Launch timing contraints-edit
Double click set clock_group
You need to specify two clock groups
Add the first clock group
Add the second by click + sign
Note asynchronous is chosen
by default.
Save the constarints
Report clock interactions
Observe the interclock path between clock grp1 and 2 is
decalred blue confirming asynchronous
Set false path
report timing_summary
See the interclock path
See the setup
set_false_path –from[get_pins ]-to[get_pins ]]
report_timing –from [get_pins ]-to[get_pins ]]
if sklack is infinite false path is sucessful
if not check the false path
set multicycle path
report_timing
See the interclock path
See the setup
See
the violated slack if any
See
the requirement
You
can see the change in slack
No comments:
Post a Comment