Escolar Documentos
Profissional Documentos
Cultura Documentos
Course Agenda:
09.14.05
Product Idea.
Functional specification.
RTL/HDL coding .
Functional simulation & Analysis
Logic Synthesis.
09.14.05
during ASIC flow. e.g. for gate level simulation and place & route
etc.
Verdana regular 7pt.
Legal text goes here
09.14.05
Translation
GTECH
Out <= z }
09.14.05
Optimize +
Mapping
Target_library
(p1265)
09.14.05
09.14.05
Synthetic Library
HDL
Synthetic library
Synthetic Operators
ADD_UNS_OP
High Level Optimization tasks like
resource sharing etc. is related
to this phase
ADD_SUB
ADD
ALU
Several Implementations
Of Modules Exist in
Design Library
Ripple
CLA
09.14.05
Custom IP
Implementation selection
Of synthetic modules is done from
various implementation
available in Design Library.
During Optimization process
Constraint-driven Implementation
Selection takes place to meet
timing/area goals. DW
implementation is eventually
mapped to target-library and
further optimized.
3 Levels of Optimization
Logic Optimization occurs at 3 levels:
Architectural
Logic
Gate Level.
DC moves the logic functions back and forth between logic & gate
09.14.05
occurs
on HDL description and is also referred to as high level optimization
(HLO). It includes several sub phases:
DW Implementation Selection.
Arithmetic or Data path Optimization.
Resource sharing.
Reordering operators.
10
09.14.05
Z <= X+Y
Operator Inference
+
Timing driven
Synthetic Operator
Area driven
r
CLA
Ripple Carry
11
09.14.05
Resource Sharing
Resource Sharing is HLO technique. It can occur during
implementation of +,-,*,>,< operators.
Resource sharing can happen if resources are in the same block
i.e. always statement of Verilog (or process block in VHDL).
For example if two adders have same destination path to a
MUXED output than resource sharing can take place if constraints
are meet:
If (ctl) {
z = a + b;
else
z = c + d;
12
09.14.05
Arithmetic Optimization:
Arithmetic Optimization uses simple rules of algebra to improve
designs performance/area.
+
+
+
+
+
+
Verdana regular 7pt.
Legal text goes here
13
09.14.05
After arithmetic
optimization (rearranging
opertors) 2 level
cascaded addition
(a+b)+(c+d)
14
09.14.05
Example of Structuring:
Before structuring:
func_1 = ab + ac
func_2 = b + c+ d
After structuring:
t0 = b + c
func_1 = t0.a
func_2 = t0 + d
15
09.14.05
Before
structuring
A
B
func_1
func_2
D
After
Structuring
A
B
func_1
16
09.14.05
func_2
17
09.14.05
18
09.14.05
19
09.14.05
Flattening
Logic Level
Gate Level
Mapping
20
09.14.05
Constraints
WLM
RTL/Netlist
Design Compiler
Synthesized
database i.e.
Netlist/ddc
Verdana regular 7pt.
Legal text goes here
21
09.14.05
Technology
Library
Synthesis
Reports
Macro
Library
No
Read Constraints
No
Synthesize
Generate Reports & Save
Outputs
Analyze
No
Good
22
09.14.05
No
Yes
Done
Synthesis Setup
Some basic variables to be included in synthesis setup are as
follows:
target_library: Specifies the library used by synthesis during
23
09.14.05
Synthesis Setup
search_path: Is used to include paths to directories containing
24
09.14.05
Setup Examples:
Example:
set
set
set
set
link_library {* p1265_lp_rsss_1.15v_110c.db}
target_library {p1265_lp_rsss_1.15v_110c.db}
synthetic_library {dw_foundation.sldb standard.sldb}
search_path [concat /nfs/adg_pde_8/Eval65/library/stdcell_lp_frams/LM \
$search_path]
OR
set search_path /nfs/adg_pde_8/Eval65/library/stdcell_lp_frams/LM \
$search_path
Example:
module test_fub (a, z);
inputs a;
outputs z;
sub_fub_1 U1 (.a(a), .b(net_1));
sub_fub_2 U2 (.m(net_1), .o(z));
endmodule
Verdana regular 7pt.
Legal text goes here
25
09.14.05
Example cntd.
Dir1/test
Libs/
p1265_lp_rsss_1.15v
_110c.db
Src/
test_fub.v
sub_fub_1.v
Tmp/
sub_fub_2.ddc
26
09.14.05
Technology Library
library ("p1265_lp_rsss_1.15v_110c") {
/* **************************************************************************
* Intel Confidential
****************************************************************************
revision : "lp_lib";
date : "Mon Aug 22 14:22:11 MST 2005" ;
comment : "PROCESS: p1265, MODEL: lp, VOLTAGE: 1.15v, TEMP: 110c, SKEW: rsss; " ;
/* ************************************
** Shrink applied : 1
************************************* */
technology (cmos) ;
delay_model : table_lookup ;
time_unit : "1ps";
pulling_resistance_unit : "1kohm" ;
capacitive_load_unit(1,pf) ;
voltage_unit : "1V" ;
current_unit : "1uA" ;
leakage_power_unit : "1pW" ;
27
09.14.05
tree_type : "balanced_tree";
}
nom_process : 1.0 ;
nom_temperature : 110.00;
nom_voltage
: 1.15;
default_max_transition : 1100 ;
default_fanout_load : 1.0 ;
default_output_pin_cap : 0.0 ;
default_inout_pin_cap : 0.010 ;
default_input_pin_cap : 0.010 ;
default_cell_leakage_power : 0.000001;
default_operating_conditions : rsss_1.15v_110c;
default_wire_load_mode : enclosed;
default_wire_load_capacitance : 0.0000873;
default_wire_load_resistance : 0.100;
default_wire_load_area : 15.5;
28
09.14.05
29
09.14.05
09.14.05
fall_transition ("delay_outputslew_template_5X5_lp0in00x6") {
);
}
rise_transition ("delay_outputslew_template_5X5_lp0in00x6") {
/* Simulation data for spec: `tp_a_xy_o_01_max' */
index_1 ("0.0032143, 0.0915343, 0.2415343, 0.6015343, 1.6575343") ;
index_2 ("24.9990000, 700.0010000, 850.0000000, 1000.0000000, 1100.0010000") ;
values (\
"12.0370839, 100.1307945, 116.6247064, 132.6044484, 143.3954581",\
"76.5285867, 214.6937751, 240.8224270, 263.3653485, 278.8470840",\
"192.3296389, 341.3812802, 372.7134246, 403.8706037, 422.3452089",\
"468.3673746, 591.1956305, 628.3677618, 665.3410636, 689.3084127",\
31
09.14.05
timing_sense : negative_unate ;
related_pin : "a" ;
}
}
pin ("a") {
capacitance : 0.00965679129 ;
direction : input ;
}
}
/* End cell: lp0in00x6 */
32
09.14.05
Read Design
Commands to read design:
read_file -format verilog rtl_file_name
read_file -format vhdl rtl_file_name
analyze/elaborate i.e:
Preferred Method
define_design_lib work -path ./worklib
for RTL designs
analyze -f verilog ${DESIGN}.v
elaborate ${DESIGN}
analyze reads RTL description and if there are no syntax issues; saves
the intermediate binary format to work library.
elaborate is used to to actually build the design, so its ready for
synthesis with compile command.
33
09.14.05
34
09.14.05
Optimization Constraints.
Design Rule Constraints.
Environmental Constraints (operating conditions, K-factor & WLM etc.).
35
09.14.05
Optimization Constraints
Timing Constraints: Are used to specify designs timing specifications
to guide synthesis process.
36
09.14.05
Clock uncertainty
Clock uncertainty is used to model difference in arrival time of clock
edges. It includes following items:
Clock Jitter:
Jitter is the unpredictability of the PLL/Oscillator output in terms of exact time
when a clock edge is going to arrive.
A perfect oscillator would have rising edges occurring at precise moments in time
that would never vary. This, of course, is impossible in real electronics, which have
sources of noise and other imperfections.
37
09.14.05
Clock Latency
Clock latencies are used to model delay in clock network.
Clock source latency models clock insertion delay to the
clock definition point. i.e. time taken by clock signal to
propagate from clock generation point to clock definition
point.
Clock network latency is used to model delay due to clock
network from clock definition point to register clock pin.
set_clock_latency 1000 [get_clocks clk]
NOTE: Use -source option to model clock source latency.
Clock Source Latency can be used to model reality of top
level tree delay in a hierarchical chip (if there is huge
difference in clock arrival time between APR blocks).
38
09.14.05
Combinational
logic
Clock Definition
point
CLK
CLK
PLL
Clock origin
point
Ideal Clock
Clock Launch
Edge
Clock Capture
Edge
15 ns clock period
39
09.14.05
skew + jitter
etc.
This tells the tools that external world uses 4000ps (4ns) of time based on
the clock period of clk. If clk was 66MHZ (15ns) the tool has 15-4 = 11ns
for all it internal logic.
For setup analysis, input_delay is the worst case delay value (-max).
For hold analysis, input_delay will be the best case delay value (-min). i.e.
shortest delay value.
40
09.14.05
set_driving_cell
This command impacts input ports transition delay and is a DRC
constraint in reality.
41
09.14.05
set_output_delay
set_output_delay
4 ns
CK 1
CK 1
create_clock
42
09.14.05
7 ns
CK 2
Set_load
or
set_load [expr [load_of p1265_lp_rsss_1.15v_110c/cell/pin] * 2] [get_ports A]
Usually it is specified on output ports but can also be specified on input ports.
But not recommended for input ports as it can make input loading constraint
unnecessarily pessimistic since usually set_max_capacitance is already
used for input ports.
For budgeting of set_load on output ports, its a good idea to have design
knowledge to gauge how many blocks does the output port talk to.
set_load sometimes is also referred to as environmental constraint.
43
09.14.05
Training.tcl
Now state of training.tcl script is:
define_design_lib work -path ./worklib
44
09.14.05
Area Constraint
To enable area optimization in DC you need to use:
set_max_area 200
Area units are dependant upon library. i.e. area is usually in terms of
sq. microns. It can be normalized in terms of NAND gates.
Verdana regular 7pt.
Legal text goes here
45
09.14.05
Types of DRC:
Maximum transition time
Maximum fanout
Minimum and maximum capacitance
Verdana regular 7pt.
Legal text goes here
46
09.14.05
set_max_transition
max_transition constraint on net is defined as the longest time
required by the driving pin of the net to change its logic value.
47
09.14.05
set_max_capacitance
Max_capacitance design rule constraint is also imposed implicitly via
technology library.
48
09.14.05
set_max_fanout
Max_fanout is another type of DRC constraint that can be placed on
a design or input ports.
49
09.14.05
Training.tcl
define_design_lib work -path ./worklib
source -echo read_file
analyze -f verilog ${rtl_list}
elaborate exunit
current_design exunit
link
50
09.14.05
Constraint priorities
DRC
Max_delay (setup violations)
Min_delay (hold violations)
Area.
Note: This precedence order can be changed by user, especially the setup/hold priority
51
09.14.05
Environmental Constraints
In addition to set_driving_cell, set_max_capacitance,
set_max_transition & set_load etc. , there are few other things that
are important for defining designs environment.
Operating conditions.
Wire load models.
K-factor.
During optimization DC, scales cell & net delays extracted from
lookup tables based on the operating conditions defined in
technology library.
52
09.14.05
K-Factor
K-factors are used to simulate alternate choices for cell delays in the
timing libraries by using a scaling factor (less than or greater than
1.0).
53
09.14.05
P1265 example
nom_process : 1.0 ;
nom_temperature : 110.00;
nom_voltage
: 1.15;
operating_conditions("rsss_1.15v_110c") {
process : 1.0;
temperature : 110.00;
voltage : 1.15;
tree_type : "balanced_tree";
}
Note: balanced_tree is an interconnection
delay model for driving pin & network loads.
Verdana regular 7pt.
Legal text goes here
54
09.14.05
P861.6 example
nom_voltage :1.39;
nom_temperature : 113.0 ;
nom_process : 1.0 ;
55
09.14.05
operating_conditions("slow_1.00") {
process : 1.00 ;
temperature : 113.00 ;
voltage : 1.39 ;
tree_type : "balanced_tree" ;
}
operating_conditions("slow_1.01") {
process : 1.01 ;
temperature : 113.00 ;
voltage : 1.39 ;
tree_type : "balanced_tree" ;
}
operating_conditions("slow_1.02") {
process : 1.02 ;
temperature : 113.00 ;
voltage : 1.39 ;
tree_type : "balanced_tree" ;
}
operating_conditions("slow_1.03") {
process : 0.93 ;
temperature : 113.00 ;
voltage : 1.39 ;
tree_type : "balanced_tree" ;
}
Where,
dprocess
= (process_operating_cond - process_nominal )
dtemp
= (temp_operating_cond - temp_nominal)
dvoltage
= (voltage_operating_cond - voltage_nominal)
In most cases
K-process for cell_rise/fall = 1
K-process rise/fall_transition = 1
K-voltage = 0
K-temp = 0
Hence in most cases:
D(scaled) = D_original_from_LookUp_Table (1 + d'process * K-process) (1 + 0) ( 1 + 0)
= D_original_from_LookUp_Table (1 + d'process * K-process)
56
09.14.05
Wireload models.
WLM contain information to estimate nets interconnect delay (i.e nets RC) and area etc.
WLM are statistical estimates based on nets fanout numbers.
Estimates are generated based upon designs that have gone thru place & route and
used same process technology in the past.
wire_load_table("1.9_million") {
fanout_length( 1, 20.8158);
fanout_capacitance( 1, 0.0055);
fanout_resistance( 1, 35.2344);
fanout_area( 1, 2.1840);
fanout_length( 2, 50.1063);
fanout_capacitance( 2, 0.0133);
fanout_resistance( 2, 70.4688);
fanout_area( 2, 2.7300);
Command:
set_wire_load_model -name "poulsbo2d_core_custom_wireload" -library
"poulsbo_custom_wireload"
57
09.14.05
58
09.14.05
U1
U2
Fub_A
Before
Uniquify
Fub_B
U3
Fub_A
U1
U2
Fub_A_0
After Uniquify
Fub_B
U3
Fub_A_1
59
09.14.05
Compile Strategies
You are now all prepped up to start design optimization.
Primarily two types of synthesis approaches are commonly used.
Top-down vs bottoms-up:
Top-down:
partition
-------------
unit_A
unit_B
unit_C
Bottoms-up:
partition
-------------
unit_A -------------
unit_B -------------
unit_C -------------
Compile.
60
09.14.05
Cons:
Bottom Up
Pros:
Divide & conquer approach and maybe somewhat easy to debug issues.
Cons:
61
09.14.05
Compile Strategies
62
09.14.05
63
09.14.05
# compile design
[-ungroup_all]
[-boundary_optimization]
(optimize across hierarchical boundaries)
[-auto_ungroup automatically ungroup small hierarchies]
[-leakage_mode]
[-no_map]
[-only_design_rule]
[-only_hold_time]
[-top]
[-scan]
64
09.14.05
Power of compile_ultra
This is one of the new feature of DC that provides push button
65
09.14.05
Compile_ultra switches/options
dc_shell-xg-t> compile_ultra -help
Usage: compile_ultra
# compile design
[-no_autoungroup]
[-no_uniquify]
[-exact_map]
indicated in HDL)
[-scan]
equivalent)
[-no_boundary_optimization]
(do not run hierachical boundary optimization)
Verdana regular 7pt.
Legal text goes here
66
09.14.05
67
09.14.05
Boundary
Opt (fig 1)
Boundary Opt
(fig 2)
After
Boundary Opt
logic sense of
pin A changes
Critical range defines the range of violations over which compile works to
improve violations.
It works on TNS instead of WNS i.e. it works on improving overall delay cost
of the design instead of worst violator by improving near_critical paths.
Improving TNS can make WNS better as a pleasant side effect, if cones of
logic are shared (e.g. incase of structured logic, datapath logic etc.)
68
09.14.05
group_path
By default DC creates a separate path group for every clock domain
in the design and works on optimizing WNS independently within
each path_group.
69
09.14.05
group_path example:
Example: Consider a design with single clock called clk.
70
09.14.05
Example:
You can even further break it down to more path groups, to make
tools job even easier:
71
09.14.05
group/ungroup
Removing level of hierarchy is one of the strategies to achieving
desired timing goals.
In addition, DC provides the capability to modify hierarchy OR repartition blocks using group/ungroup commands.
72
09.14.05
Group/ungroup
Command ungroup can be used remove level of design hierarchy.
This is also referred to as flattening the design.
Usage: ungroup
[-all]
# ungroup hierarchy
-prefix <prefix>]
[-flatten]
[-simple_names]
[-small <n>]
[-force]
[-soft]
[-start_level <n>]
Value >= 1)
[cell_list]
73
09.14.05
Group command
Command group is used to create a new level of hierarchy.
Example: to understand group/ungroup:
74
09.14.05
75
09.14.05
Training.tcl
define_design_lib work -path ./worklib
source -echo read_file
############################################
#write -format ddc -h -o ./outputs/exunit.ddc
change_names -hierarchy -rules verilog
#write -format verilog -hierarchy -o ./outputs/${DESIGN}.vg
Verdana regular 7pt.
Legal text goes here
76
09.14.05
SDF file can also be written out for PT timing analysis or GLS.
This SDF is based on WLM so accuracy is questionable.
Meaningful SDF/set_load is generated from post-Route database.
77
09.14.05
Reports.
There are several type of reports available for design analysis. But
most common ones are as follows:
report_area
----------------- Reports area information.
report_timing ----------------- Reports path timing information
report_constraint --------------- Reports summary of violated constraints
report_qor ---------------------- Reports quality of results summary.
report_net ---------------------- Reports on designs nets
report_net_fanout
----------- Reports net fanout info.
report_clock
----------- Reports clock information, skew etc.
report_cell
----------- Reports cell instance information.
Check_design
----------- Checks for possible design issues.
Check_timing
----------- Check for possible timing related issues.
78
09.14.05
Constraint priority in
descending order
Constraint Type
min_capacitance
DRC
max_transition
DRC
max_fanout
DRC
max_capacitance
DRC
cell_degradation
DRC
max_delay
Optimization Constraint
min_delay
Optimization Constraint
Power
Optimization Constraint
Area
Optimization Constraint
79
09.14.05
timing engine is not the same but tool interface/commands are very
similar.
80
09.14.05
Output ports & pins of Registers other than clock pin form a valid
Endpoint.
81
09.14.05
Timing Paths
Path 2
Path 1
Combo
CLK_1
Combinational
logic
CK
Path 4
Combo
82
09.14.05
CK
CLK_2
Combo
out
Delay model from library e.g. generic cmos, Non-Linear Delay model. Usually its
Non-Linear delay model.
Interconnect delay model is used to model type of distributed RC Network.
WLM used for numerical estimates of RC values to be used for net parasitics.
PVT from operating conditions.
Cell Delays are computed from non-linear delay models specified in library.
Cell delays are a function output loading & input pin transition.
Input pin transition & output loading also determine transition delay of net
attached to output pin (driver pin).
Net delays are a function of WLM, tree_type & interconnect RC delay.
83
09.14.05
84
09.14.05
****************************************
# A fanout number of 1000 was used for high fanout net computations.
Operating Conditions: rsss_1.15v_110c Library: p1265_lp_rsss_1.15v_110c
Wire Load Model Mode: enclosed
Startpoint: se_astat_x1f[5]
(input port clocked by clk)
Endpoint: eu_dreg_g1f[17]
(output port clocked by clk)
Path Group: clk
Path Type: max
Verdana regular 7pt.
Legal text goes here
85
09.14.05
Library
-----------------------------------------------exunit
500_k
p1265_lp_rsss_1.15v_110c
eu_rfctl
40_k
p1265_lp_rsss_1.15v_110c
mux8_16_16
40_k
p1265_lp_rsss_1.15v_110c
mux4_32_5
40_k
p1265_lp_rsss_1.15v_110c
Point
Incr
Path
0.00
0.00
0.00
0.00
750.00
se_astat_x1f[5] (in)
0.00
750.00 r
rf_ctl/ccin_x1f (eu_rfctl)
0.00
750.00 r
rf_ctl/U3/o (lp0in00x16)
750.00 r
14.91
764.91 f
rf_ctl/U362/o (lp0na02x4)
22.98
787.88 r
rf_ctl/U124/o (lp0na02x4)
32.39
820.27 f
rf_ctl/U127/o (lp0no02x4)
33.18
853.45 r
rf_ctl/U354/o (lp0no02x4)
27.11
880.56 f
rf_ctl/U156/o (lp0na03x4)
31.80
912.37 r
rf_ctl/U157/o (lp0cb00x16)
65.06
977.42 r
86
09.14.05
0.00
rf_store_g1f_int_lmux/sel[2] (mux8_16_16)
977.42 r
0.00
977.42 r
rf_store_g1f_int_lmux/U189/o (lp0in00x6)
25.96
1003.39 f
rf_store_g1f_int_lmux/U192/o (lp0no03x4)
85.42
1088.81 r
rf_store_g1f_int_lmux/U176/o (lp0in00x4)
55.67
1144.48 f
rf_store_g1f_int_lmux/U174/o (lp0no02x2)
46.50
1190.98 r
rf_store_g1f_int_lmux/U173/o (lp0no03x4)
42.59
1233.56 f
rf_store_g1f_int_lmux/U157/o (lp0na02x4)
28.32
1261.88 r
rf_store_g1f_int_lmux/U135/o (lp0ci00x8)
31.40
1293.28 f
rf_store_g1f_int_lmux/U177/o (lp0ci00x16)
22.97
1316.26 r
0.00
1316.26 r
rf_store_g1f_int_lmux/z[1] (mux8_16_16)
rf_strmux/i2[17] (mux4_32_5)
0.00
1316.26 r
rf_strmux/U333/o (lp0an02x2)
72.33
1388.58 r
rf_strmux/U367/o (lp0no02x4)
31.24
1419.83 f
rf_strmux/U427/o (lp0na02x4)
33.97
1453.80 r
rf_strmux/z[17] (mux4_32_5)
0.00
1453.80 r
eu_dreg_g1f[17] (out)
data arrival time
0.32
1454.12
87
09.14.05
1454.12 r
2250.00
2250.00
0.00
-450.00
2250.00
1800.00
-750.00
1050.00
1050.00
1050.00
-1454.12
-------------------------------------------------------------------------slack (VIOLATED)
Verdana regular 7pt.
Legal text goes here
88
09.14.05
-404.12
Report_timing analysis.
By default report_timing shows full cell delay annotated to the
output pin of cell.
But if you use input option than it also shows delay annotated to
input pin. Snippet:
rf_store_g1f_int_lmux/U189/a (lp0in00x6)
0.51
977.94 r
rf_store_g1f_int_lmux/U189/o (lp0in00x6)
25.45
1003.39 f
rf_store_g1f_int_lmux/U192/b (lp0no03x4)
0.20
1003.59 f
rf_store_g1f_int_lmux/U192/o (lp0no03x4)
85.22
1088.81 r
Yet with even more option i.e. -input , -net, -cap -tran; it
shows nets attached to pins, fanout, capaitive load & transition delay
at output pin. Same snippet from above:
rf_store_g1f_int_lmux/U189/a (lp0in00x6)
37.59
0.51
977.94 r
rf_store_g1f_int_lmux/U189/o (lp0in00x6)
18.03
25.45
1003.39 f
rf_store_g1f_int_lmux/net371276 (net)
0.01
rf_store_g1f_int_lmux/U192/b (lp0no03x4)
18.47
0.20
rf_store_g1f_int_lmux/U192/o (lp0no03x4)
99.27
85.22
rf_store_g1f_int_lmux/net281862 (net)
0.02
89
0.00
09.14.05
0.00
1003.39 f
1003.59 f
1088.81 r
1088.81 r
Trans
36.46
rf_ctl/storesell_g1f[2] (net)
0.09
rf_ctl/storesell_g1f[2] (eu_rfctl)
rf_storesell_g1f_2_ (net)
0.09
rf_store_g1f_int_lmux/sel[2] (mux8_16_16)
rf_store_g1f_int_lmux/sel[2] (net)
0.09
Incr
Path
64.72
977.42 r
0.00
977.42 r
0.00
977.42 r
0.00
977.42 r
0.00
977.42 r
0.00
977.42 r
rf_store_g1f_int_lmux/U189/a (lp0in00x6)
37.59
0.51
rf_store_g1f_int_lmux/U189/o (lp0in00x6)
18.03
25.45 1003.39 f
rf_store_g1f_int_lmux/net371276 (net) 3
Fanout
number
Cap load
0.01
Transition delay
at output pin
90
09.14.05
0.00
977.94 r
1003.39 f
Cell delay
annotated
to output
pin
Degraded
input pin
Transition
Interconnect
RC
Worst delay
edge
Understanding a
cell_fall ("delay_outputslew_template_8X8_r14cip00hx120") {
09.14.05
2D LookUp Table
92
09.14.05
Timing exceptions
Timing exceptions are needed to account for non-default behaviour
of synchronous paths.
93
09.14.05
94
09.14.05
In real designs usually there are more than one clock within single
block or across multiple blocks.
Virtual clocks do not have a clock entry port (clock definition point) in the
design being synthesized.
Virtual clocks are typically used for applying constraints between cross
clock paths.
95
09.14.05
Virtual/Multiple Clock
example
3ns
CK 2
in
Combo
Combo
???
out
CK 1
5 ns
CK 3
CK 1 (20 ns period)
10
20
30
40
CK 2 (10 ns period)
10
15
20
25
30
35
40
CK 3 (14 ns period)
14
21
96
09.14.05
28
35
42
What should be the max delay allowed for yellow cloud of logic
during synthesis???
Note: Since block under synthesis does not contain CK2 &
CK3 ports, therefore virtual clocks were defined for assigning
interface timing constraint.
Verdana regular 7pt.
Legal text goes here
97
09.14.05
Answers to Example:
CK1 edge @ 20 ns -> CK3 edge @ 28 ns determines the worst case
relationship.
98
09.14.05
If you dont know exact command that you are looking for simply do
following at prompt:
get_clocks
99
09.14.05
all_connected
all_critical_cells
all_designs
all_dont_touch
all_fanin
all_fanout
100
09.14.05
# set clock_latency
# set_ideal_net
set_ideal_network
# set_ideal_network
set_ideal_transition # set_ideal_transition
set_input_delay
set_output_delay
# set input_delay
# set output_delay
101
09.14.05
102
09.14.05
103
09.14.05
(FM)
(HD)
References:
Synopsys Documentation.
Khem Pokhrels STA document.
104
09.14.05