90
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU Basic Concept of HDL Basic Concept of HDL Lecturer: Huai-Yi Hsu ( 許許許 ) Date: 2004.03.05

Basic Concept of HDL

Embed Size (px)

DESCRIPTION

Basic Concept of HDL. Lecturer: Huai-Yi Hsu ( 許槐益 ) Date: 2004.03.05. Outline. Hierarchical Design Methodology Basic Concept of Verilog HDL Switch Level Modeling Gate Level Modeling Simulation & Verification Tools. What is Verilog HDL ?. H ardware D escription L anguage - PowerPoint PPT Presentation

Citation preview

Page 1: Basic Concept of HDL

ACCESS IC LAB

Graduate Institute of Electronics Engineering, NTU

Basic Concept of HDLBasic Concept of HDL

Lecturer: Huai-Yi Hsu ( 許槐益 )

Date: 2004.03.05

Page 2: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 2Huai-Yi HsuBasic Concept 2004.03.05

OutlineOutlineHierarchical Design MethodologyBasic Concept of Verilog HDLSwitch Level Modeling Gate Level ModelingSimulation & Verification Tools

Page 3: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 3Huai-Yi HsuBasic Concept 2004.03.05

What is Verilog HDL ?What is Verilog HDL ? Hardware Description Language Mixed level modeling

Behavioral Algorithmic ( like high level language) Register transfer (Synthesizable)

Structural Gate (AND, OR ……) Switch (PMOS, NOMS, JFET ……)

Single language for design and simulation Built-in primitives and logic functions User-defined primitives Built-in data types High-level programming constructs

Page 4: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 4Huai-Yi HsuBasic Concept 2004.03.05

Hierarchical Modeling ConceptHierarchical Modeling ConceptUnderstand top-down and bottom-up design

methodologiesExplain differences between modules and mo

dule instances in VerilogDescribe four levels of abstraction

Page 5: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 5Huai-Yi HsuBasic Concept 2004.03.05

Top-down Design MethodologyTop-down Design Methodology We define the top-level block and identify the sub-blocks

necessary to build the top-level block. We further subdivide the sub-blocks until we come to leaf cells,

which are the cells that cannot further be divided.

Top levelblock

subblock 2

subblock 3

subblock 4

subblock 1

leafcell

leafcell

leafcell

leafcell

leafcell

leafcell

leafcell

leafcell

Page 6: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 6Huai-Yi HsuBasic Concept 2004.03.05

Bottom-up Design MethodologyBottom-up Design Methodology We first identify the building block that are available to us. We build bigger cells, using these building blocks. These cells are then used for higher-level blocks until we build

the top-level block in the design.

Top levelblock

macrocell 2

macrocell 3

macrocell 4

macrocell 1

leafcell

leafcell

leafcell

leafcell

leafcell

leafcell

leafcell

leafcell

Page 7: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 7Huai-Yi HsuBasic Concept 2004.03.05

Example: 16-bit AdderExample: 16-bit Adder

A dd_ fu ll

A dd_ha lf no rf201 invf101

M 1 M 2

xor nand no tno tnandxo r

M 3 M 4

A dd_rca_16

A dd_rca_4A dd_rca_4A dd_rca_4 A dd_rca_4

M 1

A dd_ fu llA dd_ fu llA dd_ fu ll

M 2 M 3 M 4

M 1 M 2 M 3 M 4

A dd_ha lf

[HW]

Page 8: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 8Huai-Yi HsuBasic Concept 2004.03.05

Design EncapsulationDesign Encapsulation Encapsulate structural and functional details in a

module

Encapsulation makes the model available for instantiation in other modules

module <Module Name> (<PortName List>); // Structural part

<List of Ports><Lists of Nets and Registers><SubModule List> <SubModule Connections>

// Behavior part<Timing Control Statements>

<Parameter/Value Assignments><Stimuli><System Task> 

endmodule

Page 9: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 9Huai-Yi HsuBasic Concept 2004.03.05

InstancesInstances A module provides a template from which you can cr

eate 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.

Page 10: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 10Huai-Yi HsuBasic Concept 2004.03.05

Hierarchical Design ExampleHierarchical Design Example Model complex structural detail by instantiating modules within modules

a

b c_ou t

sumA dd_ha lf_0_de lay

a

b c_ou t

sumA dd_ha lf_0_de lay

(a Å b ) Å c_ in

(a + b ) c_ in + ab

(a Å b ) c_ in

a

b

c_ in sum

c_ou t

ab

(aÅb)

A dd_ fu ll_0_de lay

w 1

w 2

w 3

M O D E LIN G T IP

U s e n e s te d m o d u le in s ta n t ia t io n s t o c r e a te a t o p - d o w ndes ign h ie ra rchy.

m odule A dd_ fu ll_0_de lay (sum , c_ou t, a , b , c_ in ); input a , b , c_ in ; output c_ou t, sum ; w ire w 1, w 2 , w 3 ;

A dd_ha lf_0_de lay M 1 (w 1 , w 2 , a , b ); A dd_ha lf_0_de lay M 2 (sum , w 3 , c_ in , w 1); or (c_ou t, w 2 , w 3);endm odule

A dd_ fu ll_0_de layab

sum

c_ou t

c_ in

m odu le ins tancenam e

M O D E LIN G T IP

The po rts o f a m odu le m ay be lis ted in any o rder.The ins tance nam e o f a m odu le is requ ired .

Page 11: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 11Huai-Yi HsuBasic Concept 2004.03.05

Verilog Language RulesVerilog Language Rules Verilog is a case sensitive language (with a few exceptions) Identifiers (space-free sequence of symbols)

upper and lower case letters from the alphabet digits (0, 1, ..., 9) underscore ( _ ) $ symbol (only for system tasks and functions) Max length of 1024 symbols

Terminate lines with semicolon ; Single line comments:

// A single-line comment goes here

Multi-line comments: /* Do not /* nest multi-line comments*/ like this */

Page 12: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 12Huai-Yi HsuBasic Concept 2004.03.05

Language ConventionsLanguage Conventions Case-sensitivity

Verilog is case-sensitive.Some simulators are case-insensitiveAdvice: - Don’t use case-sensitive feature!Keywords are lower case

Different names must be used for different items within the same scope

Identifier alphabet:Upper and lower case alphabeticalsdecimal digitsunderscore

Page 13: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 13Huai-Yi HsuBasic Concept 2004.03.05

Language Conventions (cont’d)Language Conventions (cont’d) Maximum of 1024 characters in identifier First character not a digit Statement terminated by ; Free format within statement except for within quotes Comments:

All characters after // in a line are treated as a comment

Multi-line comments begin with /* and end with */ Compiler directives begin with // synopsys Built-in system tasks or functions begin with $ Strings enclosed in double quotes and must be on a

single line

Page 14: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 14Huai-Yi HsuBasic Concept 2004.03.05

Verilog Basis CellVerilog Basis CellVerilog Basis Components

parameter declarationsnets or reg declarationsport declarationsContinuous assignmentsModule instantiationsGate instantiationsFunction definitionsalways blockstask statements

Page 15: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 15Huai-Yi HsuBasic Concept 2004.03.05

Port DeclarationPort DeclarationThree port types

Input port input a;

Output portoutput b;

Bi-direction port inout c;

net

net

netnet

input output

inout

reg or net reg or net

module

Page 16: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 16Huai-Yi HsuBasic Concept 2004.03.05

Data TypesData Typesnets are further divided into several net types

wire, wand, wor, tri, triand, trior, supply0, supply1registers - stores a logic value - reginteger - supports computation 32-bits signedtime - stores time 64-bit unsignedreal - stores values as real numbersrealtime - stores time values as real numbersevent – an event data type

Wires and registers can be bits, vectors, and arrays

Page 17: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 17Huai-Yi HsuBasic Concept 2004.03.05

Integer, Real, & Time Integer, Real, & Time integer counter;

initial counter = -1;

real delta;initial delta = 4e10;

time sim_time;initial sim_time = $time;

Page 18: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 18Huai-Yi HsuBasic Concept 2004.03.05

Data TypesData Types Nets ( wire or reg (in combinational always block)

Connects between structural elements Must be continuously driven by

Continuous assignment (assign) Module or gate instantiation (output ports)

Default initial value for a wire is “Z”

Registers ( reg (in sequential always block) ) Represent abstract data storage elements Updated at an edge trigger event and holds its value until an

other edge trigger event happens Default initial value for a wire is “X”

Page 19: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 19Huai-Yi HsuBasic Concept 2004.03.05

Net TypesNet Types The most common and important net types

wire and tri for standard interconnection wires

supply 1 and supply 0

Other wire types wand, wor, triand, and trior

for multiple drivers that are wired-anded and wired-ored

tri0 and tri1 pull down and pull up

trireg for net with capacitive storage If all drivers at z, previous value is retained

Page 20: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 20Huai-Yi HsuBasic Concept 2004.03.05

Register TypesRegister Types reg

any size, unsigned integer (not synthesizable)

integet a,b; // declaration 32-bit signed (2’s complement)

time (not synthesizable) 64-bit unsigned, behaves like a 64-bit reg $display(“At %t, value=%d”,$time,val_now)

real, realtime (not synthesizable) real c,d; //declaration 64-bit real number Defaults to an initial value of 0

Page 21: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 21Huai-Yi HsuBasic Concept 2004.03.05

Wire & RegWire & Reg wire(wand, wor, tri)

Physical wires in a circuit Cannot assign a value to a wire within a function or a begi

n…..end block

A wire does not store its value, it must be driven by by connecting the wire to the output of a gate or module by assigning a value to the wire in a continuous assignment

An un-driven wire defaults to a value of Z (high impedance).

Input, output, inout port declaration -- wire data type (default)

Page 22: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 22Huai-Yi HsuBasic Concept 2004.03.05

Wire & RegWire & Reg

reg A variable in Verilog

Use of “reg” data type is not exactly synthesized to a really register.

Use of wire & reg When use “wire” usually use “assign” and “assign” does not appear in

“always” block When use “reg” only use “a=b” , always appear in “always” block

module test(a,b,c,d);input a,b;output c,d;reg d;assign c=a;always @(b) d=b;endmodule

module test(a,b,c,d);input a,b;output c,d;reg d;assign c=a;always @(b) d=b;endmodule

Page 23: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 23Huai-Yi HsuBasic Concept 2004.03.05

Wired LogicWired Logic The family of nets includes the types wand and wor

A wand net type resolves multiple driver as wired-and logic A wor net type resolves multiple drivers as wired-or logic

The family of nets includes supply0 and supply1 supply0 has a fixed logic value of 0 to model a ground conn

ection supply1 has a fixed logic value of 1 to model a power conne

ction

Page 24: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 24Huai-Yi HsuBasic Concept 2004.03.05

Data Type - ExamplesData Type - Examplesreg a; // scalar register

wand b; // scalar net of type “wand”

reg [3:0] c; // 4-bit register

tri [7:0] bus; // tri-state 8-bit bus

reg [1:4] d; // 4-bit

trireg (small) store; // specify logical strength (rare used)

a

b

c

0 1 X Z

0 0 X X 0

1 X 1 X 1

X X X X X

Z 0 1 X Z

0 1 X Z

0 0 0 0 0

1 0 1 X 1

X 0 X X X

Z 0 1 X Z

0 1 X Z

0 0 1 X 0

1 1 1 1 1

X X 1 X X

Z 0 1 X Z

wire/tri truth table wand/triand wor/trior

Page 25: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 25Huai-Yi HsuBasic Concept 2004.03.05

VectorVector wire and reg can be defined vector, default is 1bit vector is multi-bits element Format: [High#:Low#] or [Low#:High#] Using range specify part signals

wire a; // scalar net variable, defaultwire [7:0] bus; // 8-bit busreg clock; // scalar register, defaultreg [0:23] addr; // Vector register, virtual address 24 bits wide

bus[7] // bit #7 of vector busbus[2:0] // Three least significant bits of vector bus

// using bus[0:2] is illegal because the significant bit should// always be on the left of a range specification

addr[0:1] // Two most significant bits of vector addr

Page 26: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 26Huai-Yi HsuBasic Concept 2004.03.05

ArrayArray Arrays are allowed in Verilog for reg, integer, time, a

nd vector register data types. Multidimensional array are not permitted in Verilog.

integer count[0:7]; // An array of 8 count variablesreg bool[31:0]; // Array of 32 one-bit Boolean register variablestime chk_ptr[1:100]; // Array of 100 time checkpoint variablesreg [4:0] port_id[0:7]; // Array of 8 port_id, each port_id is 5 bits wideinteger matrix[4:0][4:0] // Illegal declaration

count[5] // 5th element of array of count variableschk_ptr[100] // 100th time check point valueport_id[3] // 3rd element of port_id array. This is a 5-bit value

Page 27: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 27Huai-Yi HsuBasic Concept 2004.03.05

MemoriesMemories In digital simulation, one often needs to model register files, RA

Ms, and ROMs. Memories are modeled in Verilog simply as an array of registers. Each element of the array is known as a word, each word can b

e one or more bits. It is important to differentiate between

n 1-bit registers One n-bit register

reg mem1bit[0:1023]; // Memory mem1bit with 1K 1-bit wordsreg [7:0] mem1byte[0:1023]; // Memory mem1byte with 1K 8-bit words

mem1bit[255] // Fetches 1 bit word whose address is 255Mem1byte[511] // Fetches 1 byte word whose address is 511

Page 28: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 28Huai-Yi HsuBasic Concept 2004.03.05

StringsStrings String: a sequence of 8-bits ASCII values

Special characters\n newline \t tab character

\\ \ character \” “ character

%% % character \abc ASCII code

module string; reg [8*14:1] strvar; initial begin strvar = “Hello World”; // stored as 000000486561…726c64 strvar = “Hello World!!”; // stored as 00486561…726c642121 endendmodule

Page 29: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 29Huai-Yi HsuBasic Concept 2004.03.05

Four-valued LogicFour-valued Logic Verilog’s nets and registers hold four-valued data

0 represent a logic zero or false condition 1 represent a logic zero or false condition z

Output of an undriven tri-state driver – high-impedance value

Models case where nothing is setting a wire’s value

x Models when the simulator can’t decide the value – uninitialized

or unknown logic valueInitial state of registers

When a wire is being driven to 0 and 1 simultaneously

Output of a gate with z inputs

Page 30: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 30Huai-Yi HsuBasic Concept 2004.03.05

Logic SystemLogic System Four values: 0, 1, x or X, z or Z // Not case sensitive here

The logic value x denotes an unknown (ambiguous) value The logic value z denotes a high impedance

Primitives have built-in logic Simulators describe 4-value logic (see Appendix A in text)

ab

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

Page 31: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 31Huai-Yi HsuBasic Concept 2004.03.05

Resolution of Contention Between DriversResolution of Contention Between Drivers

The value on a wire with multiple drivers in contention may be x

Page 32: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 32Huai-Yi HsuBasic Concept 2004.03.05

Logic Strength LevelsLogic Strength LevelsTypes of strengths

Charge strength: trireg (large>medium>small)Drive strength: <Net> (supply>strong>pull>weak)

Syntax

Strength level

<NetType> <Strength> <Range> <Delay> <Variables>;trireg (large) [1:4] #5 c1;

weakest strongest

highz small medium weak large pull strong supply

Page 33: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 33Huai-Yi HsuBasic Concept 2004.03.05

Number RepresentationNumber Representation Format: <size>’<base_format><number>

<size> - decimal specification of number of bits default is unsized and machine-dependent but at least 32 bits

<base format> - ' followed by arithmetic base of number <d> <D> - decimal - default base if no <base_format> given <h> <H> - hexadecimal <o> <O> - octal <b> <B> - binary

<number> - value given in base of <base_format> _ can be used for reading clarity If first character of sized, binary number 0, 1, x or z, will extend

0, 1, x or z (defined later!)

Page 34: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 34Huai-Yi HsuBasic Concept 2004.03.05

Number RepresentationNumber RepresentationExamples:

6’b010_111 gives 0101118’b0110 gives 000001104’bx01 gives xx0116’H3AB gives 000000111010101124 gives 0…00110005’O36 gives 1110016’Hx gives xxxxxxxxxxxxxxxx8’hz gives zzzzzzzz

Page 35: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 35Huai-Yi HsuBasic Concept 2004.03.05

Net ConcatenationsNet ConcatenationsA easy way to group nets

Representation Meanings

{cout, sum} {cout, sum}

{b[7:4],c[3:0]} {b[7], b[6], b[5], b[4], c[3], c[2], c[1], c[0]}

{a,b[3:1],c,2’b10} {a, b[3], b[2], b[1], c, 1’b1, 1’b0}

{4{2‘b01}} 8‘b01010101

{{8{byte[7]}},byte} Sign extension

Page 36: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 36Huai-Yi HsuBasic Concept 2004.03.05

Parameter DeclarationParameter Declaration Parameters are not variables, they are constants. Typically parameters are used to specify delays and

width of variables Examples

module var_mux(out, i0, i1, sel); parameter width = 2, delay = 1; output [width-1:0] out; input [width-1:0] i0, i1; input sel;

assign #delay out = sel ? I1 : i0;endmodule

•If sel = 1, then i1 will be assigned to out;•If sel = 0, then i0 will be assigned to out;

Page 37: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 37Huai-Yi HsuBasic Concept 2004.03.05

Overriding the Values of ParametersOverriding the Values of Parameters

Module instance parameter value assignment. Cannot skip any parameter assignment even you do

not want to reassign it.

module top; …… wire [1:0] a_out, a0, a1; wire [3:0] b_out, b0, b1; wire [2:0] c_out, c0, c1;

var_mux U0(a_out, a0, a1, sel); var_mux #(4,2) U1(b_out, b0, b1, sel); var_mux #(3, ) U2(c_out, c0, c1, sel); ……endmodule

The order of assign of parametersfollows the order of declaration of Parameters in the module.

You cannot skip the delay parameter assignment.

Page 38: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 38Huai-Yi HsuBasic Concept 2004.03.05

Overriding the Values of ParametersOverriding the Values of Parameters

You can use defparam to group all parameter value override assignment in one module.

module top; …… wire [1:0] a_out, a0, a1; wire [3:0] b_out, b0, b1; wire [2:0] c_out, c0, c1;

var_mux U0(a_out, a0, a1, sel); var_mux U1(b_out, b0, b1, sel); var_mux U2(c_out, c0, c1, sel); ……endmodule

module annotate; defparam top.U0.width = 2; top.U0.delay = 1; top.U1.width = 4; top.U1.delay = 2; top.U2.width = 3; top.U2.delay = 1;endmodule

Page 39: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 39Huai-Yi HsuBasic Concept 2004.03.05

Gate and Switch Level ModelingGate and Switch Level Modeling Primitives: bottom level of the hierarchy

Verilog Gate Level Primitives User-defined Primitives (UDP): described by truth table

Conventional modules Behavior statements Structural statements Switch Level Modeling (using transistors)

Delay Specification Specify gate delay Specify module path delay

Page 40: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 40Huai-Yi HsuBasic Concept 2004.03.05

Verilog Built-in PrimitivesVerilog Built-in Primitives

and

nand

or

nor

xor

xnor

buf

not

bufif0

bufif1

notif0

notif1

nmos

pmos

cmos

tran

tranif0

tranif1

rnmos

rpmos

rcmos

rtran

rtranif0

rtranif1

pullup

pulldown

IdealMOS switch

Resistivegates

Page 41: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 41Huai-Yi HsuBasic Concept 2004.03.05

MOS SwitchesMOS Switches Two types of MOS switches can be defined with the keywords, nmos a

nd pmos nmos is used to model NMOS transistors

nmos n1(out, data, control);

pmos is used to model PMOS transistors pmos p1(out, data, control);

data dataout out

control control

NMOS transistor PMOS transistor C

D 0 1 X Z

0 Z 0 L L

1 Z 1 H H

X Z X X X

Z Z Z Z Z

C

D 0 1 X Z

0 0 Z L L

1 1 Z H H

X X Z X X

Z Z Z Z Z

H: stands for 1 or zL: stands for 0 or z

Page 42: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 42Huai-Yi HsuBasic Concept 2004.03.05

CMOS SwitchesCMOS Switches CMOS switches are declared with the keyword cmos. A cmos device can be modeled with a nmos and a p

mos device. cmos c1(out, data, ncontrol, pcontrol);

The cmos gate is essentially a combination of two gates: one nmos and one pmos. nmos n1(out, data, ncontrol); pmos p1(out, data, pcontrol);

data out

ncontrol

pcontrol

CMOS

Page 43: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 43Huai-Yi HsuBasic Concept 2004.03.05

Bidirectional SwitchesBidirectional Switches NMOS, PMOS, CMOS gates conduct from drain to source. It is important to have devices that conduct in both directions. In such cases, signals on either side of the device can be the dri

ver signal. Bidirectional switches are typically used to provide isolation bet

ween buses or signals. tran t1(inout1, inout2); tranif0 t2(inout1, inout2, control); tranif1 t3(inout1, inout2, control);

tran tranif1 tranif0

inout1 inout2 inout1 inout2

control

inout1 inout2

control

Page 44: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 44Huai-Yi HsuBasic Concept 2004.03.05

Power and GroundPower and Ground The power (Vdd, logic 1) and Ground (Vss, logic 0) sources are needed

when transistor-level circuits are designed. Supply1 are equivalent to Vdd in circuits and place a logical 1 on a net. Supply0 are equivalent to ground or Vss in circuits and place a logical 0

on a net.

supply1 vdd;supply0 gnd;

assign a = vdd; // connect a to vddassign b = gnd; // connect b to gnd

Page 45: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 45Huai-Yi HsuBasic Concept 2004.03.05

Resistive SwitchesResistive Switches Resistive switches have the same syntax as regular switches. Resistive devices have a high source-to-drain impedance. Regular

switches have a low source-to-drain impedance. Resistive switches reduce signal strengths when signals pass through.

Regular switches retain strength levels of signals from input to output.

Input Strength Output Strength

Supply Pull

Strong Pull

Pull Weak

Weak Medium

Large Medium

Medium Small

Small Small

High High

Page 46: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 46Huai-Yi HsuBasic Concept 2004.03.05

Switches ExampleSwitches Example

a

b

out

out

ba

gnd

pwr

// Define our own nor gate: nor_swmodule nor_sw (out, a, b);

output out; input a, b;

// internal wires wire c;

// set up power and ground lines supply1 pwr; supply0 gnd;

//instantiate pmos switches pmos (c, pwr, b); pmos (out, c, a);

//instantiate nmos switches nmos (out, gnd, a); nmos (out, gnd, b);

endmodule

Page 47: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 47Huai-Yi HsuBasic Concept 2004.03.05

Primitives & UDPPrimitives & UDPPrimitives are simple modulesVerilog build-in primitive gate

not, buf:Variable outputs, single input (last port)

and, or, xor, nand, nor, xnor:Single outputs (first port), variable inputs

User defined primitive (UDP)Single output (first port), variable inputsThe function is specified by a truth tableZ state is not allowed

Page 48: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 48Huai-Yi HsuBasic Concept 2004.03.05

Truth-Tables Models and User-Truth-Tables Models and User-Defined PrimitivesDefined Primitives

Built-in primitives are for simple combinational logic gates and CMOS transistors

Primitives are memory efficient and simulate fast (good for ASIC libraries)

User-defined primitives accommodate combinational and sequential logic

Scalar output and multiple scalar inputs

Arrange inputs columns of truth table in same order as ports

Put output in last column, separated by :

Use a UDP like a built-in primitive

Table is searched top to bottom until match is found

z may not be used in table (z in simulation is treated as x)

No match results in propagation of x

See web site for more details

Page 49: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 49Huai-Yi HsuBasic Concept 2004.03.05

Example UDPExample UDPse lec t

1

0

m ux_prim m ux_ou t

primitive mux_prim (mux_out, select, a, b); output mux_out; input select, a, b; table // select a b : mux_out  

0 0 0 : 0 ; // Order of table columns = port order of inputs0 0 1 : 0 ; // One output, multiple inputs, no inout0 0 x : 0 ; // Only 0, 1, x on input and output0 1 0 : 1 ; // A z input in simulation is treated as x0 1 1 : 1 ; // by the simulator 0 1 x : 1 ; // Last column is the output 

// select a b : mux_out 1 0 0 : 0 ; 1 1 0 : 0 ; 1 x 0 : 0 ; 1 0 1 : 1 ; 1 1 1 : 1 ; 1 x 1 : 1 ; x 0 0 : 0 ; // Reduces pessimismx 1 1 : 1 ; 

endtable // Note: Combinations not explicitly specified will drive ‘x’endprimitive // under simulation.

Page 50: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 50Huai-Yi HsuBasic Concept 2004.03.05

Alternative modelAlternative model

table// Shorthand notation:// ? represents iteration of the table entry over the values 0,1,x.// i.e., don't care on the input  select a b : mux_out   0 0 ? : 0 ; // ? = 0, 1, x shorthand notation. 0 1 ? : 1 ;   1 ? 0 : 0 ; 1 ? 1 : 1 ;   ? 0 0 : 0 ; ? 1 1 : 1 ;endtable

Page 51: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 51Huai-Yi HsuBasic Concept 2004.03.05

UDPS FOR Sequential LogicUDPS FOR Sequential Logic Output is viewed as next state Insert a column for the present state truth Declare output to have type reg

M O D E LIN G T IP

T h e o u tp u t o f a s e q u e n t ia l u s e r-d e f in e d p r im it ive m u s t b edec la red to have type reg .

Page 52: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 52Huai-Yi HsuBasic Concept 2004.03.05

Example: Transparent LatchExample: Transparent Latch

primitive latch_rp (q_out, enable, data); output q_out; input enable, data; reg q_out;  table// enable data state q_out/next_state

1 1 : ? : 1 ;1 0 : ? : 0 ;0 ? : ? : - ;

 // Above entries do not deal with enable = x.// Ignore event on enable when data = state: 

x 0 : 0 : - ;x 1 : 1 : - ;

 // Note: The table entry '-' denotes no change of the output. endtableendprimitive

Page 53: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 53Huai-Yi HsuBasic Concept 2004.03.05

Example: D-Type Flip-FlopExample: D-Type Flip-Flop Notation for rising edge transition: (01), (0x), (x1) Notation for falling edge transition: (10), 1x), (x0)

d_p rim 1

q_ou t

c lock

da ta

primitive d_prim1 (q_out, clock, data); output q_out; input clock, data;  reg q_out;  table // clk data : state : q_out/next_state   (01) 0 : ? : 0 ; // Rising clock edge (01) 1 : ? : 1 ; (0?) 1 : 1 : 1 ; 

(?0) ? : ? : - ; // Falling or steady clock edge

  ? (??) : ? : - ; // Steady clock, ignore data transitions endtable endprimitive

Page 54: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 54Huai-Yi HsuBasic Concept 2004.03.05

Example: JK-Type Flip-Flop Level-sensitive and edge-sensitive behavior can be

mixed in a UDP Place level-sensitive behavior a the top of the table

q_ou t

c lk

j

k

p rese t

c lea r

J-K functionality:- preset and clear override clock- no change if j=0, k=0- drive to 1 if j=1, k=0- drive to 0 if j=0, k=1- toggle if j=1, k=1

Page 55: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 55Huai-Yi HsuBasic Concept 2004.03.05

primitive jk_prim (q_out, clk, j, k, preset, clear); output q_out; input clk, j, k, preset, clear; reg q_out;   table // clk j k pre clr state q_out/next_state// Preset Logic

? ? ? 0 1 : ? : 1 ; ? ? ? * 1 : 1 : 1 ; // Clear Logic ? ? ? 1 0 : ? : 0 ; ? ? ? 1 * : 0 : 0 ; 

// Normal Clocking// clk j k pre clr state q_out/next_state

r 0 0 0 0 : 0 : 1 ; r 0 0 1 1 : ? : - ; r 0 1 1 1 : ? : 0 ; r 1 0 1 1 : ? : 1 ; r 1 1 1 1 : 0 : 1 ; r 1 1 1 1 : 1 : 0 ;

f ? ? ? ? : ? : - ; // j and k cases// clk j k pre clr state q_out/next_state

b * ? ? ? : ? : - ; b ? * ? ? : ? : - ; // Reduced pessimism  p 0 0 1 1 : ? : - ; p 0 ? 1 ? : 0 : - ; p ? 0 ? 1 : 1 : - ; (?0) ? ? ? ? : ? : - ; (1x) 0 0 1 1 : ? : - ; (1x) 0 ? 1 ? : 0 : - ; (1x) ? 0 ? 1 : 1 : - ; x * 0 ? 1 : 1 : - ; x 0 * 1 ? : 0 : - ; endtable endprimitive  Note: * denotes any transition, and is equivalent to (??)

Page 56: Basic Concept of HDL

ACCESS IC LAB

Graduate Institute of Electronics Engineering, NTU

Timing and DelaysTiming and Delays

Page 57: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 57Huai-Yi HsuBasic Concept 2004.03.05

Timing and DelayTiming and Delay Functional verification of hardware is used to verify functionality

of the designed circuit. However, blocks in real hardware have delays associated with

the logic elements and paths in them. Therefore, we must also check whether the circuit meets the

timing requirements, given delay specifications for the blocks.

Page 58: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 58Huai-Yi HsuBasic Concept 2004.03.05

Delay Specification in PrimitivesDelay Specification in PrimitivesDelay specification defines the propagation

delay of that primitive gate.

not #10 (out,in);

Page 59: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 59Huai-Yi HsuBasic Concept 2004.03.05

Delay Specification in PrimitivesDelay Specification in PrimitivesVerilog supports (rise, fall, turn-off) delay spe

cification.

Page 60: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 60Huai-Yi HsuBasic Concept 2004.03.05

Delay Specification in PrimitivesDelay Specification in Primitives All delay specification in Verilog can be specified as

(minimum : typical : maximum) delay Examples

(min:typ:max) delay specification of all transition or #(3.2:4.0:6.3) U0(out, in1, in2);

(min:typ:max) delay specification of RISE transition and FALL transition

nand #(1.0:1.2:1.5,2.3:3.5:4.7) U1(out, in1, in2);

(min:typ:max) delay specification of RISE transition, FALL transition, and turn-off transition

bufif1 #(2.5:3:3.4,2:3:3.5,5:7:8) U2(out,in,ctrl);

Page 61: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 61Huai-Yi HsuBasic Concept 2004.03.05

Types of Delay ModelsTypes of Delay Models Distributed Delay

Specified on a per element basic Delay value are assigned to individual in the circuit

a

b

c

d

e

f

out

#5

#7

#4

module and4(out, a, b, c, d); … … and #5 a1(e, a, b); and #7 a2(f, c, d); and #4 a3(out, e, f);endmodule

Page 62: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 62Huai-Yi HsuBasic Concept 2004.03.05

Types of Delay ModelsTypes of Delay Models Lumped Delay

Specified on a per module basic They can be specified as a single delay on the output gate of

the module The cumulative delay of all paths is lumped at one location

a

b

c

d

e

f

out#11

module and4(out, a, b, c, d); … … and a1(e, a, b); and a2(f, c, d); and #11 a3(out, e, f);endmodule

Page 63: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 63Huai-Yi HsuBasic Concept 2004.03.05

Types of Delay ModelsTypes of Delay Models Pin-to-Pin Delay

Delays are assigned individually to paths from each input to each output.

Delays can be separately specified for each input/output path.

a

b

c

d

e

f

out

Path a-e-out, delay = 9Path b-e-out, delay =9Path c-f-out, delay = 11Path d-f-out, delay = 11

Page 64: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 64Huai-Yi HsuBasic Concept 2004.03.05

Path Delay ModelingPath Delay Modeling

Specify blocks Assign pin-to-pin timing delay

across module path Set up timing checks in the cir

cuits Define specparam constanys

module and4(out, a, b, c, d); … … // specify block with path delay statements specify (a => out) = 9; (b => out) = 9; (c => out) = 11; (d => out) = 11; endspecify

// gate instantiations and a1(e, a, b); and a2(f, c, d); and a3(out, e, f);endmodule

Page 65: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 65Huai-Yi HsuBasic Concept 2004.03.05

Parallel/Full ConnectionParallel/Full Connection

(a[0] => out[0]) = 9;(a[1] => out[1]) = 9;(a[2] => out[2]) = 9;(a[3] => out[3]) = 9;

(a => out) = 9;

(a => out) = 9;(b => out) = 9;(c => out) = 11;(d => out) = 11;

(a,b *> out) = 9;(c,d *> out) = 11;

Page 66: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 66Huai-Yi HsuBasic Concept 2004.03.05

Specparam StatementSpecparam Statement Special parameters can be declared for use inside a

specify block. Instead of using hardcoded delay numbers to specify

pin-tp-pin delays

module and4(out, a, b, c, d); … … // specify block with path delay statements specify specparam delay1 = 9; specparam delay2 = 11;

(a,b *> out) = delay1; (c,d *> out) = delay2; endspecify … …endmodule

Page 67: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 67Huai-Yi HsuBasic Concept 2004.03.05

Rise, Fall, and Turn-off DelaysRise, Fall, and Turn-off Delays Pin-to-pin timing can also be expressed in more detail

by specifying rise, fall, and turn-off delay values

// specify one delay statements specparam t_delay = 9; (clk => q) = t_delay;

// specify two delay statements specparam t_rise = 9; specparam t_fall = 13; (clk => q) = (t_rise, t_fall);

// specify three delay statements specparam t_rise = 9; specparam t_fall = 13; specparam t_turnoff = 11; (clk => q) = (t_rise, t_fall, t_turnoff);

// specify six delay statements specparam t_01= 9, t_10 = 13; specparam t_0z = 11, t_z1 = 9; specparam t_1z = 11, t_z0 = 13; (clk => q) = (t_01, t_10, t_0z, t_z1, t_1z, t_z0);

// specify twelve delay statements specparam t_01= 9, t_10 = 13; specparam t_0z = 11, t_z1 = 9; specparam t_1z = 11, t_z0 = 13; specparam t_0x= 9, t_x1 = 13; specparam t_1x = 11, t_x0 = 9; specparam t_xz = 11, t_zx = 13; (clk => q) = (t_01, t_10, t_0z, t_z1, t_1z, t_z0, t_0x, t_x1, t_1x, t_x0, t_xz, t_zx);

Page 68: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 68Huai-Yi HsuBasic Concept 2004.03.05

Min, Max, and Typical DelaysMin, Max, and Typical Delays Min, max, and typical delay value were discussed

earlier for gates Can also be specified for pin-to-pin delays.

// specify two delay statements specparam t_rise = 8:9:10; specparam t_fall = 12:13:14; specparam t_turnoff = 10:11:12 (clk => q) = (t_rise, t_fall, t_turnoff);

Page 69: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 69Huai-Yi HsuBasic Concept 2004.03.05

Timing Checks Timing Checks setup and hold checks

setuptime

holdtime

clock

data

specify $setup(data, posedge clock, 3);endspecify

specify $hold(posedge clock, data, 5);endspecify

Page 70: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 70Huai-Yi HsuBasic Concept 2004.03.05

Timing ChecksTiming ChecksWidth check

width ofthe pulse

clock

specify $width(posedge clock, 6);endspecify

Page 71: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 71Huai-Yi HsuBasic Concept 2004.03.05

Structural ModelsStructural Models Verilog primitives encapsulate pre-defined functionality of common logic gates The counterpart of a schematic is a structural model composed of Verilog primiti

ves Model structural detail by instantiating and connecting primitives

m odule A O I_s tr (y_ou t, x_ in1 , x_ in2 , x_ in3 , x_ in4 , x_ in5 ); output y_ou t; input x_ in1 , x_ in2 , x_ in3 , x_ in4 , x_ in5 ; w ire y1 , y2 ;

nor (y_ou t, y1 , y2 ); and (y1 , x_ in1 , x_ in2 ); and (y2 , x_ in3 , x_ in4 , x_ in5 );endm odule

y1

y2

x_ in1

x_ in2

x_ in3x_ in4

y_ou t

m odu le nam e m odu le po rts

po rt m odes

ins tan tia tedp rim itives

p rim aryinpu ts

p rim aryou tpu t

A O I_s tr

x_ in5

in te rna l w ireses tab lishconnectiv ity

Page 72: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 72Huai-Yi HsuBasic Concept 2004.03.05

Structural ConnectivityStructural Connectivity Wires in Verilog establish connectivity between primitives and/or

modules Data type: nets (Example: wire) The logic value of a wire (net) is determined dynamically during

simulation by what is connected to the wire. An undeclared identifier is treated by default as a wire Use nets to establish structural connectivity

Port connection by name Add_half_0_delay M1(.b(b),.c_out(w2),.a(a),.sum(w1));

Port connection by place Add_half_0_delay M1(w1, w2, a, b);

Page 73: Basic Concept of HDL

ACCESS IC LAB

Graduate Institute of Electronics Engineering, NTU

Simulation & VerificationSimulation & Verification

Page 74: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 74Huai-Yi HsuBasic Concept 2004.03.05

Test Methodology Test Methodology Task: systematically verify the functionality of a model. Approaches: Simulation and/or formal verification Simulation:

(1) detect syntax violations in source code (2) simulate behavior (3) monitor results

U n it_U nder_Tes t (U U T)

S tim u lusG enera to r

R esponseM on ito r

D es ign_U n it_Tes t_B ench (D U TB )

D

Q

QSET

C LR

Page 75: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 75Huai-Yi HsuBasic Concept 2004.03.05

Components of a SimulationComponents of a Simulation

Stimulus Block

Design Block

OutputResults

InputPatterns

Dummy Top Block

DesignBlock

StimulusBlock

OutputResults

InputPatterns

Page 76: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 76Huai-Yi HsuBasic Concept 2004.03.05

Event-Driven SimulationEvent-Driven Simulation A change in the value of a signal (variable) during simulation is

referred to as an event Spice-like analog simulation is impractical for VLSI circuits Event-driven simulators update logic values only when signals

change

Page 77: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 77Huai-Yi HsuBasic Concept 2004.03.05

Inertial DelayInertial Delay

y_ou t1x_ in1

x_ in2

tpd = 2

tpd = 2 y_ou t2

D = 1

D = 6

3

3

D eschedu led

9 115

5

x_ in1

x_ in2

tsim = 4

N ot schedu led

Note: The falling edge of x_in1 occurs before the response to the rising edge occurs.

Page 78: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 78Huai-Yi HsuBasic Concept 2004.03.05

Testbench Template Testbench Template

Consider the following template as a guide for simple testbenches:

module t_DUTB_name (); // substitute the name of the UUT reg …; // Declaration of register variables for primary inputs of the UU

T wire …; // Declaration of primary outputs of the UUT parameter time_out = // Provide a value  UUT_name M1_instance_name ( UUT ports go here);  initial $monitor ( ); // Specification of signals to be monitored and displayed as text  initial #time_out $stop; // (Also $finish) Stopwatch to assure termination of simulation  initial // Develop one or more behaviors for pattern generation and/or

// error detection begin  // Behavioral statements generating waveforms

// to the input ports, and comments documenting// the test. Use the full repertoire of behavioral // constructs for loops and conditionals.

endendmodule

Page 79: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 79Huai-Yi HsuBasic Concept 2004.03.05

Example: TestbenchExample: Testbench

module t_Add_half(); wire sum, c_out; reg a, b; // Storage containers for stimulus waveforms Add_half_0_delay M1 (sum, c_out, a, b); //UUT  initial begin // Time Out #100 $finish; // Stopwatch end  initial begin // Stimulus patterns #10 a = 0; b = 0; // Statements execute in sequence #10 b = 1; #10 a = 1; #10 b = 0; endendmodule

Page 80: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 80Huai-Yi HsuBasic Concept 2004.03.05

Behaviors for Abstract Models Behaviors for Abstract Models Verilog has three types of behaviors for composing abstract models of f

unctionality Continuous assignment (Keyword: assign) -- later Single pass behavior (Keyword: initial) -- Note: only use in testbenches Cyclic behavior (Keyword: always) -- later

Single pass and cyclic behaviors execute procedural statements like a

programming language

The procedural statements execute sequentially

A single pass behavior expires after the last statement executes

A cyclic behavior begins executing again after the last statement execut

es

Page 81: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 81Huai-Yi HsuBasic Concept 2004.03.05

Signal GeneratorsSignal Generators Use cyclic behaviors to describe stimulus generators Statements in a behavior may be grouped in begin … end blocks Execution begins at tsim

= 0

# delay control operator temporarily suspends execution of a behavior The operator = denotes procedural assignment (also called blocking as

signment)

M O D E LIN G TIP

U se p rocedura l ass ignm en ts to describe s tim u lus pa tte rns ina tes tbench .

Page 82: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 82Huai-Yi HsuBasic Concept 2004.03.05

Simulation ResultsSimulation Results

M O D E LIN G T IP

A V e r i l o g s im u l a t o r a s s i g n s a n i n i t ia l v a lu e o f x t o a l lva riab les .

Page 83: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 83Huai-Yi HsuBasic Concept 2004.03.05

Propagation Delay Propagation Delay Gate propagation delay specifies the time between an input cha

nge and the resulting output change Transport delay describes the time-of-flight of a signal transition Verilog uses an inertial delay model for gates and transport dela

y for nets Inertial delay suppresses short pulses (width less than the prop

delay value)

M O D E LIN G TIP

A ll p rim itives and ne ts have a de fau lt p ropaga tion de lay o f 0 .

Page 84: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 84Huai-Yi HsuBasic Concept 2004.03.05

Example: Propagation Delay Example: Propagation Delay Unit-delay simulation reveals the chain of events

module Add_full (sum, c_out, a, b, c_in); output sum, c_out; input a, b, c_in; wire w1, w2, w3;  Add_half M1 (w1, w2, a, b); Add_half M2 (sum, w3, w1, c_in); or #1 M3 (c_out, w2, w3);endmodule module Add_half (sum, c_out, a, b); output sum, c_out; input a, b;  xor #1 M1 (sum, a, b); // single delay value format and #1 M2 (c_out, a, b); // others are possibleendmodule

Page 85: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 85Huai-Yi HsuBasic Concept 2004.03.05

Simulation with delaySimulation with delay

Page 86: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 86Huai-Yi HsuBasic Concept 2004.03.05

Simulation with Standard CellsSimulation with Standard Cells`timescale 1ns / 1 ps // time scale directive for units and resolution

module Add_full_ASIC (sum, c_out, a, b, c_in);

output sum, c_out;

input a, b, c_in;

wire w1, w2, w3;

wire c_out_bar;

Add_half_ASIC M1 (w1, w2, a, b);

Add_half_ASIC M2 (sum, w3, w1, c_in);

norf201 M3 (c_out_bar, w2, w3);

invf101 M4 (c_out, c_out_bar);

endmodule

module Add_half_ASIC (sum, c_out, a, b);

output sum, c_out;

input a, b;

wire c_out_bar;

xorf201 M1 (sum, a, b); // Standard cells - down load from web page

nanf201 M2 (c_out_bar, a, b);

invf101 M3 (c_out, c_out_bar);

endmodule

Page 87: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 87Huai-Yi HsuBasic Concept 2004.03.05

System TasksSystem Tasks Displaying information

$display(“ID of the port is %b”, port_id); ID of the port is 00101

Monitoring information $monitor($time, “Value of signals clk = %b rst = %b”, clk, rst);

0 Value of signals clk = 0 rst = 1 5 Value of signals clk = 1 rst = 1 10 Value of signals clk = 0 rst = 0

Stopping and finishing in a simulation $stop; // provided to stop during a simulation $finish; // terminates the simulator

Page 88: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 88Huai-Yi HsuBasic Concept 2004.03.05

Compiler DirectivesCompiler Directives The `define directive is used to define text macros

The `include directive allows you to include entire contents of a Verilog source file

`timescale <reference_time_unit>/<time_precision>

`define WORD_SIZE 32 // Used as `WORD_SIZE in the code`define STOP $stop; // define an alias`define WORD_REG reg[31:0] // define a 32-bit register

`include header.v`include submodule.v

`timescale 1 ns / 10 ps

`timescale 100 ns / 1ns

Page 89: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 89Huai-Yi HsuBasic Concept 2004.03.05

SummarySummaryUnderstand switch level modelingUnderstand gate level modelingSpecify timing delayFunction simulationTiming simulation

Page 90: Basic Concept of HDL

Graduate Institute of Electronics Engineering, NTU

pp. 90Huai-Yi HsuBasic Concept 2004.03.05

Homework #1Homework #1 Try to build your design by using gate-level Check your syntax!! And record your miss errors!! Writing your testbench to verify your design Simulate and Verify your design Optional:

Simulation with delay information on gate-level

Design example: 16-bits Adder, 4-bits multiplier (booth) Counter, Clock generator (OSC)