Bertolone Introduction To The Digital Flow in Mixed Environment Back End
Bertolone Introduction To The Digital Flow in Mixed Environment Back End
2
Motivations
3
Back End Digital Flow
Technology Files Functional netlist
(liberty, qrc techfile, abstract, ...) Timing Constraints (sdc)
(.v, .vhd, .sv)
5
1.Interoperable PDK
6
2.Synthesizable functional netlist
• For the same register, use only rising edge OR falling edge, not both
• You can not delay a signal from xxx ns; only clock cycle could be use to
synchronize your signals in your design.
i_ck80 <= NOT i_ck80 AFTER 6.25 ns
7
3. Abstract view in OA format for Std Cells / IP
8
4. Liberty Files
These Liberty files are given by the foundry or could be generated for
custom IP with LIBERATE tool (see Xavier Liopart talk in 2015)
9
5. Timing constraints (Sdc files )
• The sdc files (Synopsis Design Constraints) describe all the timing
information between your design and the outside:
• what are the clocks signals? What are the relation between clocks ?
• what is the delay between the signals and the clock?
• What is the input or output capacitance load ?
• What are the timing exceptions ?
• …..
10
6. Multi-Mode Multi-Corner view
• Multi Mode :
The chip have different functional modes (different clock speed, enable bit configuration, …)
=> One or more constraint modes associated with sdc files for each mode
• Multi Corner
There is different library set (process corner typical, slow, fast, …) and RC corners for timing
analysis (propagation delay, SI analysis)
=> Each delay corners combine liberty (.lib) for the std cells and QRC techfiles for the nets
=> MMMC view file combines constraint modes and delay corners to define
different scenarios (“Analysis View”)
• These analysis views are used for setup analysis and the hold during STA
11
MMMC view: example
create_library_set -name tlf_typical -timing liberty/tsl18fs120_tt_1p8v_25c.lib -si Celtic/cells_tt_1p8v_25c.cdB
create_library_set -name tlf_max -timing liberty/tsl18fs120_ss_1p62v_125c.lib -si Celtic/cells_ss_1p62v_125c.cdB
create_library_set -name tlf_min -timing liberty/tsl18fs120_ff_1p98v_m40c.lib -si Celtic/cells_ff_1p98v_m40c.cdB
12
SDC files
1. Setup / Hold 4. Outputs
2. Clock 5. Timing exceptions
3. Inputs
13
1. Setup and Hold checks (1/2)
The setup and hold timing checks are needed for proper propagation
of data through the sequential cells. These checks verify that the data
input is stable at the active clock edge.
• Setup time = minimum time with data stable before clock edge
• Hold time = minimum time with data stable after clock edge
14
Setup and Hold checks (2/2)
15
Warnings !
The sdc files guide the digital tools during synthesis, placement and
routing to avoid setup or hold failure.
So be careful when you write them !
16
2. Clock: declaration
• Creating a clock
• create_clock command defines an ideal clock signal and specifies the ports or
pin that are connected to the clock.
17
Clock: transition
18
Clock: uncertainty (skew)
19
3. Input: declaration
• Input delay
• The input delay describes the arrival time on a port relative to the clock. It
could be for example the time needed for the data to go through
combinational logic before the module
• Use the –max argument for setup and –min for hold
20
Input: constraint
21
4. Output: declaration
• Output delay :
Use the set_output_delay command to set the output path delay value for the
design
22
Output : constraint
23
Output: load
Use the set_load command to define the output load (in pF)
set_load -max 0.500 [all_outputs]
set_load -min 0.250 [all_outputs]
Tips:
To select all the inputs all_inputs
To select all outputs all_outputs
24
5. Timing exception
• False path:
When the designer wants to exclude a path (like reset) from the timing
analysis
set_false_path -from [get_ports rstb]
• Case analysis
When a signal is fixed to a logic value (configuration register, enable for scan
chain, …)
set_case_analysis 0 enable_latch
25
Synthesis
(Genus)
1. Library Setup 5. syn_map and syn_opt
2. Load Design / Elaborate 6. Write outputs
3. Constraints setup
4. syn_gen
26
Synthesis flow (Genus)
GENUS
Functional netlists 1.Library Setup
(.v, .vhd, .sv)
2.Load Design / Elaborate
Verilog netlist mapped
3.Constraint Setup on std cells and IP
Technology Files
(liberty, qrc techfile)
4.Synthesizing to generic
6.Write Outputs
INNOVUS
27
Genus
• To launch genus :
linux:/> genus -legacy_ui
• Genus could be launched in batch mode with a .tcl script
genus –legacy_ui –files my_script.tcl
28
1. Synthesis: Library Setup
29
2. Synthesis : Load Design / Elaborate
30
3. Synthesis: Constraint Setup
Must have no
errors
31
4. Synthesis : syn_generic
## Synthesizing to generic
syn_generic
32
Synthesis : check sdc constraints
33
5. Synthesis: syn_map and syn_opt
34
Synthesis: Timing report
• report timing
Slack = timing margin
If slack <0 ?
Redo an optimization
Review your sdc file
Review your functional netlist
35
Synthesis: QOR
legacy_genus:/> report qor ===========================================
Generated by: Genus(TM) Synthesis Solution 16.13-s036_1
Generated on: Apr 12 2017 05:47:02 pm
Module: main
Before saving your design, do a Technology libraries: tsl18fs120_tt_1p8v_25c 1
physical_cells
Operating conditions: _nominal_
qor(Quality Of Result) report : Interconnect mode: global
Area mode: physical library
============================================================
Gives information about Timing
--------
Area
----
Cell Area 124386.304
Physical Cell Area 0.000
Total Cell Area (Cell+Physical) 124386.304
Net Area 44730.429
Total Area (Cell+Physical+Net) 169116.733
36
6. Synthesis: Write Outputs
37
Synthesis: Summary
Set target library
set_attribute {library
name}
Read QRC techfile Synthesize
(optional) syn_generic
syn_map
syn_opt
Read HDL files
read_hdl {RTL netlist}
Apply optimization
directives
38
Place and Route (P&R)
(Innovus)
1. Design Import 5. Check Timing
2. PreCTS 6. Save Design
3. CTS
4. NanoRoute and PostRoute
39
P&R Flow
Synthesis
Innovus
Gate level netlist in 1.Design Import
verilog
Layout (OA or gds)
Technology Files 2.PreCTS Flow
+ netlist in verilog
( QRC techfile)
3.CTS Flow
OA libs defined by a
cds.lib 4.PostCTS Flow
Signoff Verification
MMMC View 5.Timing Checks STA (Tempus)
Definition File
6.Design Export DRC/LVS (PVS)
41
Innovus: GUI
Menus Design Views :
• FloorPlan
Tools • AMOEBA
• Physical
Layer
control Bar
• GUI :
easy way to discover the commands and the tool
more interactivity with the tools
some commands are not accessible with the GUI
• Scripting (.tcl)
not so easy to start writing a tcl script at the beginning
script could be executed in background
full option commands
script could be easily reused
43
1. Design Import
GUI Menus: Synthesize netlist
OA reference libs:
Techfile first, then others Power/Ground nets
library
To save/load your
configuration in a .globals
44
MMMC: Browser
45
P&R: Some tools setup before PreCTS
• Specify the process node (180 nm, 90n, …) to tune your parasitic
extraction
• setDesignMode -process 180
• Specify the number of processor to use
• setMultiCpuUsage -localCpu 8
• Check for missing or inconsistent library and design datacheck
• checkDesign –all
46
2. PreCTS: floorplaning
GUI Menus:
Floorplan /Specify Floorplan
47
PreCTS: Pins placement
• GUI Menus:
Edit / Pin Editor
Warnings !
• Put your pins on the routing grid
• Avoid putting pin too close from
stripes
• Respect metal layer direction
• Even layer are vertical
• Odd layer are horizontal
48
PreCTS: IP/Block placement
Example :
placeInstance reg_row 50 12 R270
• With the GUI, select your instance and move it with your mouse.
49
PreCTS: Power planning
50
PreCTS: layout before cells placement
pins
Stripes
rows
51
PreCTS: std cells placement
• The router (trialRoute) is not DRC signOff, but it is quick and give you
a good idea of the feasibility of your design (timing + congestion)
52
PreCTS: Placement and optimization
53
place_opt_design vs placeDesign
54
Layout after placement
55
3. CTS Flow
Clock Tree Synthesis step (CTS) is done with CCOPT tool inside
innovus
ccopt_design (-cts)
56
ccopt_design or ccopt_design -cts ?
• ccopt_design - cts
• with vdi licence
• need and optimization after
• ccopt_design
• with full innovus license
57
CTS flow
58
CTS flow
Alternatively, use the “CCOpt Clock Tree Debugger” entry in the main GUI menu
(Clock menu)
59
CTD window
clock
trees
clock
skew
60
Post CTS layout
Remarks : the routing is done with trialRoute = > some drc errors
are possible after routing
61
4. PostCTS flow: NanoRoute
62
Setting for NanoRoute
63
Setting for NanoRoute
64
NanoRoute GUI
Diode Cell
name
Routing
options Min and max
Routing layer
65
PostRoute: Verify the routing
66
PostRoute: Violation browser
67
PostRoute: Fixing routing errors
68
PostRoute: Optimization
timeDesign -postRoute
optDesign -postRoute -setup Timing
analyzing and
timeDesign -hold -postRoute
optimization
optDesign -postRoute -hold
69
PostRoute: Add Filler cells
When your
design has
no violation,
add filler
cells
70
5. Signoff Timing check with Innovus
Tcl commands :
timeDesign –signoff
timeDesign –signoff -hold
GUI menu :
Timing/Report Timing
71
Timing Debugging
GUI menu :
Timing/Debug Timing
TCL Script:
report_timing -machine_readable >top.mtarpt
load_timing_debug_report top.mtarpt
72
6. Save Design (1/2)
74
Summary of Innovus flow
75
Digital On Top (DoT) flow
1. AoT vs DoT
2. DoT Flow
1. Analog On Top vs Digital On Top
77
2. DOT flow
2. You need an sdc file for the top module (and each submodule)
3. You have to provide the OA library (and if possible the .lib) of your macro
block
78
DoT: Bottom up vs Top Down
• Bottom Up flow :
• You already have abstracts for your submodule and they are routed
independently from the top
79
Place and route flow for Dot
80
DoT: Example of rooted top module design
Routed
Abstract for
nets
submodules
81
DoT: Design Assembling for STA
1. Restart innovus
2. Before loading your design, make every block unique
> set init_design_uniquify 1
3. Restore your Design
> restoreDesign -cellview {lib_name cell_name view_name}
82
DoT: Design Assembling for STA
83
DoT: Example of a partially assembled design
Abstract for
unassembled
modules
Abstract for
unassembled
“Assembled” modules
module
84
DoT: Design Assembling for STA
85
Conclusion
86
Synthesis and P&R Flow
GENUS Innovus
Technology Files 1.Library Setup
(liberty, qrc techfile, 1.Design Import
abstract) 2.Load Design / Elaborate
2.PreCTS Flow • Layout in OA / gds
Functional netlist • Netlist in Verilog
3.Constraint Setup
(.v, .vhd, .sv) 3.CTS Flow • Sdf file for post
extraction simulations
4.Synthesizing to generic
4.PostCTS Flow
Timing Constraints 5.Synthesizing to gates
(sdc) 5.Timing Checks
and optimize the netlist
87
DoT flow
• AoT vs DoT :
• AoT based on a schematic Virtuoso flow
• DoT based on a netlist Innovus flow
88
For further informations on Digital Flow:
• About sdc :
“Static Timing Analysis for Nanometer Designs : a Practical Approach”
from J . Bhasker and Rakesh Chadha
89