4AAH1007_71550 4AAH1007_71550.pdf 4AAH1007_71550.pdf 4AAH1007_71550.pdf 4AAH1007_71550.pdf
2011verilog_lec_v1.pdf
-
Upload
peter26194 -
Category
Documents
-
view
26 -
download
0
Transcript of 2011verilog_lec_v1.pdf
-
Basic Logic Design with Verilog HDL(Combinational Circuits)
Lecture note ver.1 by Chen-han Tsai
ver.2 by Chih-hao Chao
ver.3 by Xin-Yu Shi
ver.4 by Bo-Yuan Peng
ver.5 by Chieh-Chuan Chiu & Chieh-Chi Kao
-
Outline
Introduction to Verilog HDL
Syntax in Verilog HDL
Gate-Level Modeling
Test-Bench
Compilation and Simulation Tools
Preview of Lab Questions
2
-
Introduction to Verilog HDL
-
What is Verilog HDL?
Why using Hardware Description Language?
Design abstraction: HDL layout by human
Hardware modeling
Reduce cost and time to design hardware
Two Popular HDLs
VHDL
Verilog
4
-
What is Verilog HDL?
Key features of Verilog
Supports various levels of abstraction
Behavior level
Register transfer level
Gate level
Transistor level
Simulate design functions
5
-
Different Levels of Abstraction
System
Algorithm
Architecture
Register Transfer Level
Gate Level
Transistor Level 6
Architectural / Algorithmic Level
Implement a design algorithm in high-level language constructs.
Register Transfer Level
Describes the flow of data between registers and how a design process these data.
-
Different Levels of Abstraction
System
Algorithm
Architecture
Register Transfer Level
Gate Level
Transistor Level 7
Gate Level
Describe the logic gates and the interconnections between them.
Transistor Level
Describe the transistors and the interconnections between them.
-
Simplified Hardware Design Flow
8
RTL
Editor
Logic
Synthesizer
RTL
Simulation
Gate Level
Simulation
Place & Route
Post Gate
Level
Simulation
Chip
RTL Code
Gate Level Code
Physical Layout
Tape Out
Designer
Level
High
Low
Cost
Low
High
Verilog
-
Example: 1-bit Multiplexer
9
in1
in2
out
0
1
sel
if (sel==0)
out = in1;
else
out = in2;
out = (selin1) + (selin2)
sel in1 in2 out
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1
to select output
-
Gate Level Description
10
Gate Level: you see only netlist (gates and wires) in the code.
a2
a1
in2
in1
sel
out o1
sel a2_o
a1_o n1
iv_sel
out = (selin1) + (selin2)
-
Syntax in Verilog HDL
-
A Simple Verilog Code
12
declaration syntax
module name in/out port
port/wire declaration
kernel hardware gate-connection
-
Module
Basic building block in Verilog
Module
1. Created by declaration (cant be nested)
2. Used by instantiation
Interface is defined by ports
May contain instances of other modules
All modules run concurrently
13
-
Instances
A module provides a template from which you can create actual objects.
When a module is invoked, Verilog creates a unique object from the template.
Each object has its own name, variables, parameters and I/O interface.
14
-
Module Instantiation
15
Adder
Adder Adder
Adder_tree
instance example
-
Port Connection
Connect module port by order list FA1 fa1(c_o, sum, a, b, c_i);
Connect module port by name (Recommended) Usage: .PortName (NetName)
FA1 fa2(.A(a), .B(b), .CO(c_o), .CI(c_i), .S(sum));
Not fully connected FA1 fa3(c_o, , a, b, c_i);
16
-
Verilog Language Rule
Case sensitive
Identifiers Digits 0123456789
Underscore _
Upper and lower case letters from the alphabet
Terminate statement/declaration with semicolon ;
Comments Single line: // its a single line comment example
Multi-line: /* When the comment exceeds single line, multi-line comment is necessary */
17
-
Data Type: Register
Register
Keyword: reg, integer, time, real
Event-driven modeling
Storage element (modeling sequential circuit)
Assignment in always block (LHS of expressions)
18
-
Data Type: Net
Net
Keyword: wire, wand, wor, tri, triand, trior, supply0, supply1
Doesnt store value, just a connection
Input, output and inout ports are default wire
19
-
Four-valued Logic Value
Nets and registers in Verilog codes hold four-valued data
0 represent a logic 0 or false condition
1 represent a logic 1 or true condition
z
Output of an non-driven tri-state driver High-Z value
Models case where nothing is setting a wires value
x
Models when the simulator cant (doesnt) decide the value un-initialized or unknown logic value
Initial state of registers
A wire is being driven to 0 and 1 simultaneously
Output of a gate with z inputs
20
-
Logic System
Four values: 0, 1, x/X, z/Z (not case sensitive)
The logic value x denotes an unknown (ambiguous) value
The logic value z denotes a high-impedance value (High-Z value)
Primitives have built-in Logic
Simulators describe 4-value logic
21
-
Logic System: Example
22
a
b
y
0 1
x
a
b
y
x
xx
z
z z z zx x x x
0 1 X Z
0 0 0 0 0
1 0 1 X X
X 0 X X X
Z 0 X X X
-
Number Representation
Format:
- decimal specification of bits count Default: unsized and machine-dependent but at least 32 bits
- ' followed by arithmetic base of number d or D decimal (default if no base format given)
h or H hexadecimal
o or O octal
b or B binary
- value given in base of base format
_ can be used for reading clarity
x and z are automatically extended
23
-
Number Representation
Examples: 6b010_111 gives 010111
8b0110 gives 00000110
4bx01 gives xx01
16H3AB gives 0000001110101011
24 gives 00011000
5O36 gives 11110
16Hx gives xxxxxxxxxxxxxxxx
8hz gives zzzzzzzz
24
-
Net Concatenation
25
3o7
Module A
Module B
Module C
Representations Meanings
{b[3:0], c[2:0]} {b[3], b[2], b[1], b[0], c[2], c[1], c[0]} {a, b[3:0], w} {a, b[3], b[2], b[1], b[0], w} {4{w}} {w, w, w, w}
-
Operators
Arithmetic Operators
Relational Operators
Equality Operators
Logical Operators
Bit-wise Operators
Unary Reduction
Shift Operators
Conditional Operators
Concatenations
+, -, *, /, %
=
==, !=, ===, !==
!, &&, ||
~, &, |, ^, ~^
&, ~&, |, ~|, ^, ~^
>>,
-
Operator Examples
27
Excerpts from CIC training course: Verilog_9807.pdf
All bits are 0 logic false
-
Compiler Directives
'define 'define RAM_SIZE 16
Defining a name and gives a constant value to it.
'include 'include adder.v
Including the entire contents of other verilog source file.
'timescale 'timescale 100ns/1ns
Setting the reference time unit and time precision of your simulation. 28
-
System Tasks
$finish $finish Terminate the simulation
29
-
Gate Level Modeling
-
Gate Level Modeling
Steps
Develop the Boolean function of output
Draw the circuit with logic gates/primitives
Connect gates/primitives with net (usually wire)
HDL: Hardware Description Language
Figure out architecture first, then write code.
31
-
Primitives
Primitives are modules ready to be instanced Smallest modeling block for simulator Verilog build-in primitive gate
and, or, xor, nand, nor, xnor prim_name #delay inst_name( out0, in0, in1,.... );
not, buf prim_name #delay inst_name( out0, out1, ..., in0);
User defined primitive (UDP) building block defined by designer
32
-
Case Study: Full Adder
A B
CiCo
S
Full
Adder
Ci A B SCo
0 0 0 00
0 0 1 10
0 1 0 10
0 1 1 01
1 0 0 10
1 0 1 01
1 1 0 01
1 1 1 11
33
-
Case Study: Full Adder
Co = AB + BCi + CiA
34
A
B
B
CiCiA
Co
-
Case Study: Full Adder
sum = a b ci
35
a
bc
sum
a
b
csum
-
Case Study: Full Adder
Full Adder Connection
Instance ins_c from FA_co
Instance ins_s from FA_sum
36
a
bc
sum
a
b
b
c
c
a
co
carry out
connection
sum
connection
full adder
-
Test-Bench
-
Test Methodology
Systematically verify the functionality of a model.
Procedure of simulation
Detect syntax violations in source code
Simulate behavior
Monitor results
38
-
Test Methodology
TestbenchHardware Design
(Design Under Test)
Stimulus
Response
39
-
Verilog Simulator
40
-
Testbench for Full Adder
41
module t_full_add(); reg a, b, cin; // for stimulus waveforms wire sum, c_out; FA_gatelevel M1 (sum, c_out, a, b, cin); //DUT initial #200 $finish; // Stopwatch initial begin // Stimulus patterns #10 a = 0; b = 0; cin = 0; // Statements execute in sequence #10 a = 0; b = 1; cin = 0; #10 a = 1; b = 0; cin = 0; #10 a = 1; b = 1; cin = 0; #10 a = 0; b = 0; cin = 1; #10 a = 0; b = 1; cin = 1; #10 a = 1; b = 0; cin = 1; #10 a = 1; b = 1; cin = 1; end endmodule Time Signal
-
Summary
Design module / DUT Divide-and-Conquer
Partition the whole design into several parts
Architecture figure of each sub-module Make architecture figures before you write Verilog codes
Create hardware design in gate-level or RT-level Connection of sub-modules
Test-bench Feed input data and compare output values at right timing
slots Usually describe in behavioral level Not real hardware, just like software programming (e.g.
C/C++)
42
-
Note
Verilog is a platform Support hardware design (design module)
Also support C/C++ like coding (test bench)
How to write verilog well? Know basic concepts and syntax
Get a good reference codes (a person or some code files)
Form a good coding style
Hardware Combinational circuits (todays topic)
Sequential circuits (we wont model them in this course) 43
-
Compilation and Simulation Tools Workstations X-window Verilog-XL and NC-Verilog nWave
-
Workstations
Why workstations? Multiple Users, multiple tasking
Stable Operations
How to run tasks on the workstations? Operating System: Unix-like
Example: Linux
Example: Solaris
User Interface Text Mode
X-Window
45
-
Workstations
Where are the workstations?
http://cad.ee.ntu.edu.tw/
You are receiving the account and the password to the workstations.
NOTE: This account expires on 12/30/2011. Answer the lab questions before the expiration date.
If you want to continue enjoying the resources on the workstations, contact the TA managing the IC design Lab to get more information.
Usually you need to attend the Special Projects held by the professors in ICS or EDA group
46
-
47
-
48
-
Workstations
How can I connect to the workstations?
putty download site:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
pietty download site:
http://ntu.csie.org/~piaip/pietty/
MobaXterm download site:
http://mobaxterm.mobatek.net/download.html
In the following examples, we will use MobaXterm.
MobaXterm_v3.2.zip 12.7MB
49
-
50
-
ssh user_account@work_station_ip
Ex: ssh [email protected]
51 Account for B99901888 IP address for cad21
-
Rules of Workstations
1. reboot
2. 1G 5G 10G QUOTA
3.
4.
5.
6.
7. http://cad.ee.ntu.edu.tw 52
-
Rules of Workstations
943 901
b99901001b99001
r90942001r0942001
:
switch
53
-
Enter your password 54
-
Save the password if you want
55
-
Workstations
Basic instructions
Change Password: passwd
Log out: logout
Show processes: ps (processes and PIDs)
Delete a process: kill -9 PID
56
-
passwd Change your password 57
-
ps and kill 58
-
Workstations
Useful commands
man : manual page
ls : list a folders contents
ls a : list all files (including the hidden files)
ls aux : list all files with detailed information
cp : copy files from one folder/directory to another cp filename1 filename2
cp r : copy the whole folder to another
mkdir : create a folder
pwd : display your current path 59
-
Workstations
More useful commands cd : Change folder ps : display process status by process identification number and
name kill -9 PID: terminate a running process
kill -9 1234
rm : delete files rm r : remove the whole folder quota v : show disk space tar : pack and compress files
-cvf : for creating compressed file -xvf : for extracting compressed file
mv : move or rename file exit : turn the terminal off logout 60
-
X-window
Why X-window?
Most important graphic user interface on UNIX and similar system
How to use X-window?
You need an X-window server to use the X-window.
Not an X-window client. An X-window client is a program with GUI that runs on the workstations.
61
-
X-window
62
-
Useful program
NotePad ++
Source code editor and Notepad replacement that supports several languages
Running in the MS Windows environment
http://notepad-plus-plus.org/
63
-
NotePad ++
64
-
Verilog-XL and NC-verilog
Verilog-XL
Designed by Phil Moorby, the father of verilog
Interpreter of verilog
Designed for syntax checking and simulation
NC-verilog
Designed by Cadence
Inherited from Verilog-XL
In the following examples, we use NC-verilog.
65
-
Example: Full Adder and its test-bench FA_co.v module FA_co ( co, a, b,
ci );
input a, b, ci;
output co;
wire ab, bc, ca;
and g0( ab, a, b );
and g1( bc, b, ci );
and g2( ca, ci, a );
or g3( co, ab, bc, ca );
endmodule
FA_sum.v module FA_sum ( sum, a, b,
ci );
input a, b, ci;
output sum;
xor g0( sum, a, b, ci );
endmodule
66
-
Example: Full Adder and its test-bench FA_gatelevel.v module FA_gatelevel ( sum, co, a, b, ci );
input a, b, ci;
output sum, co;
FA_co ins_c( co, a, b, ci );
FA_sum ins_s( sum, a, b, ci );
endmodule
67
-
Example: Full Adder and its test-bench FA_tb.v module FA_tb();
reg a, b, cin;
wire sum, c_out;
FA_gatelevel fa1 ( sum, c_out, a, b, cin );
initial #200 $finish;
initial begin
#10 a = 0; b = 0; cin = 0;
#10 a = 0; b = 1; cin = 0;
#10 a = 1; b = 0; cin = 0;
#10 a = 1; b = 1; cin = 0;
#10 a = 0; b = 0; cin = 1;
#10 a = 0; b = 1; cin = 1;
#10 a = 1; b = 0; cin = 1;
#10 a = 1; b = 1; cin = 1;
end
endmodule
68
Remember to source source file before using ncverilog and nWave
source ~cvsd/cvsd.cshrc
source ~cvsd/verdi.cshrc
-
Example: Full Adder and its test-bench
69
-
Example: Full Adder and its test-bench How to observe the timing diagram?
$fsdbDumpfile("filename");
$fsdbDumpvars;
nWave (part of debussy)
70
-
71
-
ncverilog +access+r
nWave &
72
-
73
-
74
-
75
-
Double-click all of the signals you want to observe
76
-
77
-
78
-
Preview of Lab Questions
-
Verilog Lab
The lab questions are due on 12/8/2011
The attendance of verilog lab is counted into grading (included in Participation 2%)
Lab question are available on course website
Information for the verilog lab
Time slots: 11/21~25, 11/28~12/2 18:00~20:30
Registration: Choose the slot you want on the website of EE student association (http://ntuee.org/course/)
80
-
Verilog Lab Registration
Registration time: 11/4~11/11
Thanks to for the help of registration system!!
81
-
About Midterm
Check the classroom for midterm on the website
It is different from Quiz1
Submit your HW3 at midterm
Finish your verilog lab registration before midterm!
TA office hour
Time: 6 p.m. to 8p.m
Location: BL-112
HW3: 11/7,8,9
Midterm: 11/8,9,10
82