0% found this document useful (0 votes)
73 views

L02 - Introduction To Verilog

This document provides an introduction to Verilog, a hardware description language used for digital system design. It discusses why HDLs like Verilog are useful for specifying and simulating complex digital designs. It provides a brief history of Verilog and compares it to other HDLs like VHDL. It then outlines some basic Verilog concepts like modules, ports, multi-bit signals, comments, and case sensitivity. The goal is to equip students with foundational knowledge of Verilog to describe and model digital circuits.

Uploaded by

Alina
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
73 views

L02 - Introduction To Verilog

This document provides an introduction to Verilog, a hardware description language used for digital system design. It discusses why HDLs like Verilog are useful for specifying and simulating complex digital designs. It provides a brief history of Verilog and compares it to other HDLs like VHDL. It then outlines some basic Verilog concepts like modules, ports, multi-bit signals, comments, and case sensitivity. The goal is to equip students with foundational knowledge of Verilog to describe and model digital circuits.

Uploaded by

Alina
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

EE-421: Digital System Design

Introduction to Verilog

Instructor: Dr. Rehan Ahmed [rehan.ahmed@seecs.edu.pk]


Acknowledgements

• The material used in this slide-set contain material/illustrations


from Prof. Milo Martin, Andy Phelps, Prof. Stephen brown, Prof.
Steve Wilton and Prof. Onur Mutlu.

2
Where are we Heading?

3
How to Deal with This Complexity?

• A fact of life in computer engineering


– Need to be able to specify complex designs
▪ communicate with others in your design group
– … and to simulate their behavior
▪ yes, it’s what I want to build
– … and to synthesize (automatically design) portions of it
▪ have an error-free path to implementation

5
How to Describe a Design?
• Two Ways:
– Schematic – Draw a picture
– Hardware Description Language – Standardized text-based description

• Why text is better?


– More scalable
– Easier to store
– Easier to search
– Easier for revision control
– Easier to standardize
– Can leverage automated
tools (more on this later)

• All these benefits of HDLs have lead to higher engineer


productivity
• Practically ALL digital design is now done with HDLs

6
HDLs History
• Abel (circa 1983) - developed by Data-I/O
– targeted to programmable logic devices (PLAs, PALs etc.)
– not good for much more than state machines

• ISP (circa 1977) - research project at CMU


– simulation, but no synthesis

• VHDL (circa 1987) - DoD sponsored standard


– “V” is for “VHSIC” (very high speed integrated circuit)
– similar to Ada (emphasis on re-use and maintainability)
– very general but verbose
– IEEE standard

• Verilog (circa 1985) - developed by Gateway (now part of Cadence)


– similar to Pascal and C
– fairly efficient and easy to write
– 1995: adopted as IEEE standard [1364-1995]
– 2001: Revised to an enhanced version [1364-2001]
– 2002 – 2009: efforts to add support for “hardware verification”
– System-Verilog: combined Hardware Description language [HDL] and
Hardware Verification Language [HVL]. IEEE [1800-2017]

7
What are we going to use in this course?
• We’ll use Verilog HDL in this course to express our
circuits.

• Verilog is not perfect!


– But then, neither is the X86 instruction set!
– And it’s nowhere near that bad.
– In fact, it’s pretty good…
▪ If you know what to watch out for.

8
So, about Verilog
• Verilog is a (surprisingly) big language
– Lots of features for synthesis and simulation of hardware
– Can represent low-level features, e.g. individual transistors
– Can act like a programming language, with “for” loops etc.
– Daunting task to learn all of its features

• We’re going to learn a focused subset of Verilog


– We will use it at a level (behavioral) appropriate for digital
design
– Focus on synthesizable constructs
– Focus on avoiding subtle synthesis errors
– Initially restrict some features just because they aren’t
necessary

11
Before we start, Remember one lesson
• HDLs are NOT “programming languages”
– No, really. Even if they look like it, they are not.
– For many people, a difficult conceptual leap

• Hardware is not Software


– Software is sequential
– In a program, we start at the beginning (e.g. “main”), and we
proceed sequentially through the code as directed
– The program represents an algorithm, a step-by-step sequence
of actions to solve some problem
for (i = 0; i<10; i=i+1) {
if (newPattern == oldPattern[i]) match = i;
}
– Hardware is all active at once; there is no starting point

• The magic is NOT in the language;


– It’s in your express-i-bility!

• Verilog is case sensitive


– K is not the same as k
12
FPGA CAD

Synthesis

Placement

Routing

Timing Analysis

bitstream
(.sof file)

14
What Happens with HDL Code?
• Synthesis
– Modern tools are able to map synthesizable HDL code
into
low-level cell libraries → netlist describing gates and wires
– They can perform many optimizations
– … however they can not guarantee that a solution is
optimal
▪ Mainly due to computationally expensive placement and
routing algorithms
– Most common way of Digital Design these days

• Simulation
– Allows the behavior of the circuit to be verified without
actually manufacturing the circuit
– Simulators can work on structural or behavioral HDL

15
Verilog Module

16
Defining a Module in Verilog
• A module is the main building block in Verilog

• We first need to define:


– Name of the module
– Directions of its ports (e.g., input, output)
– Names of its ports
• Then:
– Describe the functionality of the module

a
Verilog
b example y
Module
c
inputs output

17
Implementing a Module in Verilog

a
Verilog
b example y
Module
c

name of Port list


module (inputs and outputs)

module example (a, b, c, y);


ports have a
input a;
declared type
input b;
input c;
output y; a module
definition
// here comes the circuit description

endmodule

18
A Question of Style

• The following two codes are functionally identical

module test ( a, b, y ); module test ( input a,


input a; input b,
input b; output y );
output y;
endmodule
endmodule

port name and direction declaration


can be combined

19
What If We Have Multi-bit Input/Output?

• You can also define multi-bit Input/Output (Bus)


– [range_end : range_start]
– Number of bits: range_end – range_start + 1
• Example:
input [31:0] a; // a[31], a[30] .. a[0]
output [15:8] b1; // b1[15], b1[14] .. b1[8]
output [7:0] b2; // b2[7], b2[6] .. b2[0]
input c; // single signal

• a represents a 32-bit value, so we prefer to define it as:


[31:0] a
• It is preferred over [0:31] a which resembles array definition
• It is good practice to be consistent with the representation of
multi-bit signals, i.e., always [31:0] or always [0:31]

20
Basic Syntax
• Verilog is case sensitive
– SomeName and somename are not the same!
• Names cannot start with numbers:
– 2good is not a valid name
• Whitespaces are ignored

// Single line comments start with a //

/* Multiline comments
are defined like this */

21

You might also like