Week 6 A
Week 6 A
http://classes.engineering.wustl.edu/ese461/
Outline
2
Synthesizable Verilog
• Top-down design
– top-level module
– example: module MyChip_ASIC();
– lower-level modules
– initially empty placeholders, or stubs
3
Logic Circuit Synthesis
• Combinational circuit
– continuous assignment
– always statement
– contains only signals with no edges
– level-sensitive list
4
Logic Circuit Synthesis
• Combinational circuit
– concatenation or bit reduction
5
Logic Circuit Synthesis
6
Logic Circuit Synthesis
• Don’ts
– miss signals in the sensitivity list
– use variables before assignment
7
Logic Circuit Synthesis
• Multiplexers
– imply a MUX using case
8
Logic Circuit Synthesis
• Case statement
– include default to be exhaustive
– don’t care x, gives synthesizer flexibility
9
Logic Circuit Synthesis
• Sequential logic
– edge sensitive always block, with non-blocking
• Example: D Flip Flop
• Don’t use “@ clk”
– will have latch
– we hate latch
10
Logic Circuit Synthesis
• Sequential logic
– initialize the memory element by specifying reset
– use a template
11
Logic Circuit Synthesis
• Datapath synthesis
– bus-wide arithmetic and other bus-wide operations
– example: 32-bit multiplier
– Synopsys DesignWare library
– use directives
12
Logic Circuit Synthesis
• Hand instantiation
– generic logic netlist
– to ensure a particular cell be included
13
Finite-State Machine Synthesis
• Encoding style
• Style template
– using two always blocks
– using single always blocks
– using a function for combinational logic
• Example
– http://www.asic-world.com/tidbits/verilog_fsm.html
14
Non-Synthesizable Constructs
15
Write Synthesizable Code
16
Synopsys Design Compiler
17
Questions?
Comments?
Discussion?
18