Digital Design Using Verilog HDL: Fall 21
Digital Design Using Verilog HDL: Fall 21
Ph.D in KAIST
[email protected]
Research interest: Digital IC design for Wireless Comms,
Multimedia Codec, NoC, Embedded Systems.
2
Course Goals
Provide knowledge and experience in:
• Digital circuit design using a HDL (Verilog)
• HDL simulation
• How to build self checking test benches
• Good practices in digital design verification
• Synthesis of dataflow and behavioral designs
• Basic static timing analysis concepts
• Optimizing hardware designs (timing, area, power)
• Design tools commonly used in industry
4
Course Materials
Lectures
Textbook
• Samir Palnitkar, Verilog HDL, Prentice Hall, 2003.
Standards
• IEEE Std.1364-2001, IEEE Standard Verilog Hardware
Description Language, IEEE, Inc., 2001.
• IEEE Std 1364.1-2002, IEEE Standard for Verilog Register
Transfer Level Synthesis, IEEE, Inc., 2002
Xilinx or Synopsys on-line documentation
Other useful readings
5
Evaluation and Grading
Approximately:
• 30% Midterm as Term project
• 70% Final
6
Class Project
Work in groups of 2 or 3 students
Design, model, simulate, synthesize, and test a
complex digital system
Several milestones
• Forming teams
• Project status report
• Progress demonstrations (maybe)
• Final demonstration & report
7
Course Tools
Industry-standard design tools:
• Modelsim HDL Simulation Tools (Mentor)
• Design Vision Synthesis Tools (Xilinx)
8
ModelSim Tutorial
ModelSim is our Verilog simulator.
• Check out the tutorial on Youtube
9
Readings for Week 1
Read Chapter 1 (short)
• Overview of Digital Design with Verilog HDL
Read Chapter 2 (short)
• Hierarchical Modeling Concepts
Read Chapter 3
• Basic Verilog Syntax
10
What is an HDL?
HDL = Hardware Description Language
• Allows for modeling & simulation (with timing) of digital
designs
• Can be synthesized into hardware (netlist) by synthesis
tools (Synopsys, Ambit, FPGA compilers)
11
What is an HDL? (continued)
module counter(clk,rst_n,cnt); • It looks like a programming language
input clk,rst_n; • It is NOT a programming language
output [3:0] cnt;
It is always critical to recall you
reg [3:0] cnt; are describing hardware
always @(posedge clk) begin
This codes primary purpose is to
if (~rst_n) generate hardware
cnt = 4’b0000;
else The hardware this code describes
cnt = cnt+1; (a counter) can be simulated on a
end computer. In this secondary use of
the language it does act more like a
endmodule
programming language.
12
Simulating/Validating HDL
The sad truth…
• 10% design, 90% validation
• If you do it right you will spend 9X more time
testing/validating a design than designing it.
Testbenchs are
written in verilog
as well.
Output
Testbench verilog Stimulus Design
Monitoring
is not describing Generation Under Test
Self Checking
hardware and (verilog) (verilog)
(verilog)
can be thought
of as more of a
program. file file
Verilog test bench shell
13
What is Synthesis?
Takes a description of what a circuit DOES
Creates the hardware to DO it Output is actually a text
netlist, not a GUI schematic
module counter(clk,rst_n,cnt); form.
input clk,rst_n;
output [3:0] cnt;
cnt[3:0]
always @(posedge clk) begin
if (~rst_n) rst_n 4 4
4
cnt = 4’b0000;
else
cnt = cnt+1;
end
endmodule clk
14
Synthesizing the Hardware Described
All hardware created during
if (a) f = c & d;
synthesis else if (b) f = d;
• Even if a is true, still else f = d & e;
computing d&e
b a
15
Why Use an HDL?
Enables Larger Designs
• More abstracted than schematics, allows larger designs.
Register Transfer Level Description
Wide datapaths (16, 32, or 64 bits wide) can be abstracted to a
single vector
Synthesis tool does the bulk of the tedious repetitive work vs
schematic capture
• Work at transistor/gate level for large designs: cumbersome
Portable Design
• Behavioral or dataflow Verilog can be synthesized to a new
process library with little effort (i.e. move from 0.11m to
45nm process)
16
Why Use an HDL? (continued)
Portable Design (continued)
• Verilog written in ASCII text. The ultimate in portability.
Much more portable than the binary files of a GUI
schematic capture tool.
17
Why Use an HDL? (continued)
Better Validated Designs
• Verilog itself is used to create the testbench
Flexible method that allows self checking tests
Unified environment
• Synthesis tool are very good from the boolean correctness point of view
If you have a logic error in your final design there is a 99.999% chance
that error exists in your behavioral code
Errors caused in synthesis fall in the following categories
Timing
Bad Library definitions
Bad coding style…sloppyness
18
Other Important HDL Features
Are highly portable (text)
Are self-documenting (when commented well)
Describe multiple levels of abstraction
Represent parallelism
Provides many descriptive styles
• Structural
• Register Transfer Level (RTL)
• Behavioral
Serve as input for synthesis tools
19
Hardware Implementations
HDLs can be compiled to semi-custom and
programmable hardware implementations
implementation efficiency
20
Hardware Building Blocks
G
Transistors are switches
D S
Use multiple transistors to make a gate
A A A A
21
Standard Cells
Library of common gates and structures (cells)
Decompose hardware in terms of these cells
Arrange the cells on the chip
Connect them using metal wiring
22
FPGAs
“Programmable” hardware
Use small memories as truth tables of functions
Decompose circuit into these blocks
Connect using programmable routing
SRAM bits control functionality
FPGA Tiles P1
P2
P P3 OUT
P4
P5
P6
P7
P8
I1 I2 I3
23
What is a Netlist?
A netlist is a ASCII text representation of the interconnect of a
schematic
Many Standards Exist:
• Spice Netlist
• EDIF (Electronic Data Interchange Format)
• Structural Verilog Netlist (this is what we will use)
module comb(Z,A,B,C);
input A,B,C;
output Z; A comb
n1
wire n1, n2; A1
and02d1 A1(n1,A,B);
= B
A2
inv01d1 I1(n2,C); C I1
n2 Z
and02d1 A2(Z,n1,n2);
endmodule
24
FSM Review
Combinational and sequential logic
Often used to generate control signals
Reacts to inputs (including clock signal)
Can perform multi-cycle operations
Examples of FSMs
• Counter
• Vending machine
• Traffic light controller
• Bus Controller
• Control unit of serial protocol (like RS232, I2C or SPI)
25
Mealy/Moore FSMs
Mealy
Inputs
Next State Outputs
Output
Logic Logic
State Register
Next State
Current State
FF
26
FSMs
Moore
• Output depends only on current state
• Outputs are synchronous (but not necessarily glitch free)
Mealy
• Output depends on current state and inputs
• Outputs can be asynchronous
Change with changes on the inputs
• Outputs can be synchronous
Register the outputs
Outputs delayed by one cycle
27
Remember Bubble Diagrams?
They can be useful. I sometimes will draw a bubble
diagram first for a complex FSM. Then code it.
Analog_in
Given the datapath
- For a single slope
gt A2D converter.
clr_dac DAC 10-bit +
inc_dac Counter DAC
10 Draw a bubble
clk diagram
For a FSM that can
control it.
clr It should run the
0
result converter for 8 times
and accumulate the 8
1 13 13
results in a 13-bit
13 register.
{000,cnt} clk
13
clr_smp Digital
Sample
Compare smp_eq_8
inc_smp Counter
To 7
accum
28
Verilog Module
In Verilog, a circuit is a module. A[1:0]
2
29
Verilog Module
A[1:0]
module name ports names
of module 2
32
Module Styles
Modules can be specified different ways
• Structural – connect primitives and modules
• Dataflow– use continuous assignments
• Behavioral – use initial and always blocks
A single module can use more than one method!
33
Structural
A schematic in text form (i.e. A netlist)
Build up a circuit from gates/flip-flops
• Gates are primitives (part of the language)
• Flip-flops themselves described behaviorally
Structural design
• Create module interface
• Instantiate the gates in the circuit
• Declare the internal wires needed to connect gates
• Put the names of the wires in the correct port locations of
the gates
For primitives, outputs always come first
34
Structural Example
module majority (major, V1, V2, V3) ;
output major ;
input V1, V2, V3 ; V1 N1
A0
V2
wire N1, N2, N3;
V2 N2
and A0 (N1, V1, V2), A1 Or0 major
A1 (N2, V2, V3), V3
A2 (N3, V3, V1);
V3 N3
or Or0 (major, N1, N2, N3); A2
V1
endmodule majority
35
RTL Example
module majority (major, V1, V2, V3) ;
output major ;
input V1, V2, V3 ;
36
Behavioral Example
module majority (major, V1, V2, V3) ;
37
Things to do
Read Chapter 1 (short)
• Overview of Digital Design with Verilog HDL
Read Chapter 2 (short)
• Hierarchical Modeling Concepts
Read Chapter 3
• Basic Verilog Syntax (a little dry/boring but necessary)
Familiarize self with eCOW webpage
38
Review Questions
What are some advantages of using HDLs, instead of
schematic capture?
What advantages and disadvantages do standard cell
designs have compared to full-custom designs?
What are some ways in which HDLs differ from
conventional programming languages? How are they
similar?
What are the different styles of Verilog coding?
39