Digital Design and Synthesis: Fall 09
Digital Design and Synthesis: Fall 09
Administrative Matters
Parsing and
Syntax & Semantic
Error Checking
Synthesizer
Policy Checking
Translation
(Elaboration)
Structural
Representation
Architectural
Optimization
Technology
Library
Multi-Level Logic
Optimization
Technology
Mapping
Technology-Based
Implementation
(netlist)
This is where you find out you cant use certain Verilog
constructs
This is synthesizer-dependent
Example: Design Vision allows indexed part-select
Translation (Elaboration)
Optimization in Synthesis
Optimization Process
Optimization Phases
Architectural optimization
Architectural Optimization
10
Architectural Optimization
Examples:
Logic/Gate-Level Optimization
Mapping
Delay optimization
Design rule fixing
Area optimization
12
Logic/Gate-Level Optimization
Mapping
Generates a gate level implementation
Tries to meet timing and area goals
Delay optimization
Tries to fix delay violations from mapping phase.
Does not fix design rule violations or meet area constraints.
Design rule fixing
Tries to correct design rule violations
Inserting buffers or resizing existing cells
If necessary, violates optimization constraints
Area optimization
Tries to meet area constraints, which have lowest priority
13
Combinational Optimization
Boolean equation manipulation
Boolean reduction
Factoring
Sharing common terms
Mapping Optimizations
Gate mapping based on CF
Applying De-Morgans
Sizing Gates & Buffering
14
Gate-Level Optimization
15
Logic-Level Optimizations
Verilog
Description
Technology
Libraries
TRANSLATION
ENGINE
OPTIMIZATION
ENGINE
Two-level
Logic Functions
Optimized
Multi-level Logic
Functions
MAPPING
ENGINE
Technology
Implementation
16
Logic Optimizations
Area
Number of gates
Fan in of gates (# inputs)
Drive Strength (transistor width)
Delay
fewer == smaller
fewer == smaller
narrower == smaller
Logic Optimizations
Decomposition
Extraction
Factoring
Substitution
Elimination
18
Decomposition
19
Decomposition Example
~7 gates, ~3 levels
F = ab(c + d) + cd(a + b)
F = ab(c + d) + (c + d)(ab)
X = ab
1 gate, 1 level
Y=c+d
1 gate, 1 level
F = XY + XY
5 gates, 3 levels (or what?)
Gate Effort = 4*(3-input AND) + 4-input OR = 16 effort
Gate Effort = 2-input AND + 2-input OR + 2*(2-input AND)
+ 2-input OR = 10 effort
20
Extraction
21
Extraction Example
F = (a + b)cd + e
G = (a + b) e
H = cde
3 gates, 3 levels
2 gates, 2 levels
1 gate, 1 level
1
4
2
2
Before:
(3) 2-input ORs, (2) 3-input ANDs, (1) 2-input AND
Gate Effort = 6 + 6 + 2 = 14
After
(2) 2-input ORs, (4) 2-input ANDs
Gate Effort = 4 + 8 = 12
22
Factoring
23
Factoring Example
Definitely good:
F = ac + ad + bc + bd
F = (a + b)(c + d)
Gate Effort = 8 + 4
Gate Effort = 4 + 2
Maybe good:
F = ac + ad + e
F = a(c + d) + e
Gate Effort = 7
Gate Effort = 6
Substitution
Fewer gates
25
Substitution Example
G=a+b
F=a+b+c
1 gate, 1 level
1 gate, 1 level
F=G+c
2 gate, 2 levels
Before:
After
Elimination (Flattening)
27
Elimination Example
G=c+d
F = Ga + G' b
1 gate, 1 level
3 gates, 3 levels
G=c+d
F = ac + ad + bcd
1 gate, 1 level
4 gates, 2 levels
Before:
(2) 2-input ORs, (2) 2-input ANDs
After:
(1) 2-input OR, (1) 3-input OR, (2) 2-input ANDs,
(1) 3-input AND (but fewer levels)
28
compile_ultra Optimizations
Boundary optimization
Sequential inversion
Register Retiming
paths)
Reduce the number of flip-flops if timing criteria are met
Usually propagate registers forward
30
31
32