Introduction: Understanding Cadence and Integrated Circuit Design Flow
Cadence Design Systems provides a comprehensive suite of Electronic Design Automation (EDA) tools that enable the design, verification, and implementation of integrated circuits (ICs), System-on-Chips (SoCs), and printed circuit boards (PCBs). The Cadence workflow encompasses the entire semiconductor design process from concept to manufacturing.
This cheatsheet provides a comprehensive guide to the Cadence IC design flow, covering:
- The complete design cycle from specification to tape-out
- Key tools in the Cadence ecosystem and their roles
- Essential commands, shortcuts, and methodologies
- Best practices for efficient IC design
- Common challenges and their solutions
Core Cadence Tools and Their Functions
Design Phase | Cadence Tool | Primary Function |
---|---|---|
System Level Design | Virtuoso® System Design Platform | System-level architecture and exploration |
RTL Design | Genus™ Synthesis Solution | Logic synthesis and optimization |
Verification | Xcelium™ Logic Simulator | RTL and gate-level simulation |
JasperGold® Formal Verification | Formal property verification | |
Palladium® Z1/Z2 Emulation Platform | Hardware emulation and acceleration | |
Physical Design | Innovus™ Implementation System | Place and route, clock tree synthesis |
Custom Design | Virtuoso® Custom IC Design Platform | Schematic entry, layout, physical verification |
Analog/Mixed-Signal | Virtuoso® AMS Designer | Mixed-signal simulation |
Spectre® Circuit Simulator | SPICE-level simulation | |
Physical Verification | Pegasus™ Verification System | DRC, LVS, DFM checks |
Quantus™ Extraction Solution | Parasitic extraction | |
Power Analysis | Voltus™ IC Power Integrity Solution | Power integrity analysis |
Timing Analysis | Tempus™ Timing Signoff Solution | Static timing analysis |
Design Management | Virtuoso® Design Management | Data management and version control |
Comprehensive Cadence IC Design Flow
1. Specification and Planning
Requirements Analysis
- Define functional specifications
- Determine performance targets (speed, power, area)
- Identify target technology node
- Establish design constraints
Architecture Planning
- Block-level partitioning
- Memory architecture
- Interface definition
- Clock domain planning
- Power domain strategy
Design Planning Checklist
- [ ] Technology node selected
- [ ] IP blocks identified
- [ ] Design hierarchy established
- [ ] Floorplan strategy outlined
- [ ] Power/ground distribution planned
- [ ] Clock distribution strategy defined
2. RTL Design and Functional Verification
RTL Development with Genus™
# Basic Genus flow commands
read_hdl -sv {top.sv module1.sv module2.sv}
elaborate
set_top_module top_module
set_dont_use [get_lib_cells */COMPLEX_CELLS/*]
set_clock_gating_style -sequential_cell latch
syn_generic
syn_map
syn_opt
write_hdl > top_netlist.v
Functional Verification with Xcelium™
# Basic Xcelium simulation commands
xrun -compile -sv top_tb.sv
xrun -elaborate -sv top_tb.sv
xrun -sv top_tb.sv -access +rwc -gui
Verification Strategies
- Directed testing
- Constrained-random verification
- Coverage-driven verification
- Assertion-based verification
Formal Verification with JasperGold®
- Equivalence checking
- Property checking
- Protocol compliance
3. Logic Synthesis
Synthesis Flow (Genus™)
Pre-Synthesis Steps
- Read and analyze HDL files
- Elaborate design
- Set design constraints
- Apply clock definitions
Optimization Steps
- Technology mapping
- Area optimization
- Timing optimization
- Power optimization
Post-Synthesis Steps
- Generate netlist
- Create timing reports
- Perform quality checks
- Export for implementation
# Setting timing constraints in Genus
create_clock -name clk -period 10 [get_ports clk]
set_input_delay 2 -clock clk [all_inputs -filter {name != clk}]
set_output_delay 3 -clock clk [all_outputs]
set_max_transition 1 [current_design]
4. Floorplanning and Power Planning
Innovus™ Implementation System
# Basic floorplanning commands
init_design
floorPlan -site core -r 0.8 0.7 20 20 20 20
add_rings -type core_rings -nets {VDD VSS} -width 2 -spacing 1
add_stripes -direction vertical -nets {VDD VSS} -width 1 -spacing 2
editPin -pin [all_inputs] -layer M1 -side left -spacing 2
editPin -pin [all_outputs] -layer M1 -side right -spacing 2
Key Floorplanning Considerations
- Die size and aspect ratio
- Core utilization target
- Macro placement
- I/O planning
- Power grid planning
- Clock distribution network
Power Planning Strategy
- Power ring definition
- Power stripe creation
- Power domain separation
- Low-power design techniques
5. Placement and Optimization
# Placement commands
place_design
optDesign -preCTS
saveDesign pre_cts.enc
Placement Methods
- Global placement
- Detailed placement
- Macro placement
- Congestion-driven placement
- Timing-driven placement
Optimization Techniques
- Buffer insertion
- Gate sizing
- Cell swapping
- Fanout optimization
- High-fanout net synthesis
6. Clock Tree Synthesis (CTS)
# Clock tree synthesis commands
ccopt_design
optDesign -postCTS
report_clock_tree
verify_clock_tree
CTS Objectives
- Minimize clock skew
- Reduce insertion delay
- Control clock transition
- Manage power consumption
- Handle multiple clock domains
Clock Tree Structures
- H-tree
- Balanced tree
- Clock mesh
- Hybrid approaches
7. Routing and Optimization
# Routing commands
routeDesign
optDesign -postRoute
addFiller
verify_drc
extractRC
timeDesign -postRoute
Routing Stages
- Global routing
- Track assignment
- Detailed routing
- Special net routing
- ECO routing
Post-Route Optimization
- Timing closure
- Signal integrity fixes
- DRC violation fixes
- Crosstalk mitigation
- IR drop optimization
8. Custom/Analog Design with Virtuoso®
Schematic Design
Key Commands
- Create new cell:
File > New > Cell View
- Edit properties:
q
key - Wire components:
w
key - Add instance:
i
key - Add pin:
p
key
- Create new cell:
Design Hierarchy Management
- Create symbols for subcircuits
- Build hierarchical designs
- Use parameterized cells
Layout Design
Basic Layout Commands
- Create rectangle:
r
key - Create path:
p
key - Create polygon:
Shift+p
- Move objects:
m
key - Copy objects:
c
key - Stretch objects:
s
key
- Create rectangle:
Advanced Layout Techniques
- Guard rings
- Common centroid layouts
- Interdigitation
- Dummy structures
- Shielding techniques
9. Physical Verification
Design Rule Checking (DRC)
# Run DRC in Virtuoso with Pegasus
drcCheck(
viewName = "layout"
rulesFile = "rules.drc"
switches = ""
)
Layout vs. Schematic (LVS)
# Run LVS in Virtuoso
lvs(
sourceViewName = "schematic"
targetViewName = "layout"
sourceNetlist = "source.net"
targetNetlist = "target.net"
rulesFile = "rules.lvs"
switches = ""
)
Parasitic Extraction
# Run extraction with Quantus
extractRCmode(
viewName = "layout"
rulesFile = "rcx.rules"
)
10. Static Timing Analysis with Tempus™
# Basic Tempus STA commands
read_lib tech.lib
read_verilog netlist.v
read_sdc constraints.sdc
update_timing
report_timing -max_paths 10
Key Timing Checks
- Setup time
- Hold time
- Recovery/removal time
- Pulse width
- Clock-to-q delay
Advanced Timing Analysis
- On-chip variation (OCV)
- Multi-corner multi-mode (MCMM) analysis
- Statistical static timing analysis (SSTA)
- Common path pessimism removal (CPPR)
11. Power Analysis with Voltus™
# Basic Voltus commands
read_power_intent power_intent.upf
analyze_power -dynamic -static
report_power
Power Analysis Types
- Static power analysis
- Dynamic power analysis
- IR drop analysis
- EM/reliability analysis
Power Optimization Techniques
- Clock gating
- Power gating
- Multi-voltage design
- Dynamic voltage scaling
12. Sign-off and Tape-out
Final Verification Steps
- Multi-corner timing closure
- Final DRC/LVS clean
- EM/IR verification
- Antenna checks
- Design for manufacturing (DFM) checks
Tape-out Package Generation
- GDSII stream-out
- LEF/DEF generation
- Final documentation
- Signoff database archiving
Common Challenges and Solutions
Challenge | Solution |
---|---|
Timing Closure Issues | Analyze critical paths; adjust clock tree; resize cells; restructure logic; insert buffers/inverters |
Routing Congestion | Re-floor plan; adjust pin placement; optimize block placement; implement global route driven placement |
Power Integrity Problems | Add decoupling capacitors; strengthen power grid; optimize clock gating; implement power-aware placement |
Simulation Runtime | Use hierarchical verification; implement strategic assertions; use mixed-signal abstraction; utilize emulation platforms |
DRC Violations | Implement auto-fixing strategies; use recommended rules; create DRC prevention constraints; use rule-aware routing |
Design Convergence Issues | Implement incremental design flow; use realistic constraints; balance optimization goals; employ multi-objective optimization |
Mixed-Signal Integration | Use well-defined interfaces; implement robust level shifters; employ careful floorplanning; use mixed-signal verification |
Large Design Management | Implement hierarchical design methodology; use team design strategies; establish clear handoff procedures; use design management tools |
Best Practices for Cadence Design Flow
Design Setup Best Practices
- Use consistent directory structure across projects
- Implement proper version control for all design files
- Create and maintain technology setup files
- Document design constraints and assumptions
- Establish clear naming conventions
RTL Design Best Practices
- Follow synchronous design principles
- Implement proper clock domain crossing
- Use consistent coding style
- Create modular, reusable blocks
- Document interfaces thoroughly
Verification Best Practices
- Create comprehensive test plans
- Implement systematic coverage metrics
- Use assertions for critical properties
- Employ both directed and random testing
- Verify corner cases explicitly
Physical Design Best Practices
- Build realistic timing constraints
- Plan for multiple implementation iterations
- Create margin for late-stage ECOs
- Implement progressive refinement methodology
- Account for manufacturing variability
Analog Design Best Practices
- Use parameterized cells
- Implement design reuse
- Create robust designs with margin
- Verify across all process corners
- Document design assumptions
Recommended Cadence Shortcuts and Aliases
Virtuoso Shortcuts
Operation | Shortcut |
---|---|
Add instance | i |
Add wire | w |
Add pin | p |
Edit properties | q |
Create rectangle | r |
Stretch | s |
Copy | c |
Move | m |
Ruler | k |
Zoom in | z |
Zoom out | Shift+z |
Pan | Middle mouse |
Select | Left mouse |
Useful Tcl Aliases for Innovus™
# Add these to your .cdsinit or project startup files
alias save "saveDesign"
alias opt "optDesign -preCTS"
alias optcts "optDesign -postCTS"
alias optroute "optDesign -postRoute"
alias report_worst "report_timing -max_paths 10"
alias check_design "checkDesign -all"
Resources for Further Learning
Official Cadence Resources
- Cadence Support Portal (https://support.cadence.com)
- Cadence Online Training
- Cadence User Conferences (CDNLive)
- Cadence Application Notes and White Papers
Community Resources
- Cadence Community Forums
- EDA Playground (for Verilog/VHDL)
- Reddit r/FPGA and r/ECE
- Twitter #CadenceEDA
Books and Publications
- “Digital Integrated Circuit Design Using Verilog and Systemverilog” by Ronald W. Mehler
- “CMOS Digital Integrated Circuits” by Sung-Mo Kang and Yusuf Leblebici
- “Static Timing Analysis for Nanometer Designs” by Jayaram Bhasker and Rakesh Chadha
- “Low Power Methodology Manual” by Keating, et al.
Additional Learning Materials
- IEEE Papers on IC Design Methodologies
- ISSCC Conference Proceedings
- DAC Conference Papers
- VLSI Journals and Transactions
This cheatsheet provides a comprehensive overview of the Cadence IC design flow, from specification to tape-out. While it covers the essential aspects of the design process, IC design is a complex field that requires continuous learning and adaptation to new technologies and methodologies. Regular updates to tools and design techniques are essential to stay current with the evolving semiconductor industry.