Top Banner
P-1/74 Textbook: Textbook: Verilog Verilog ® HDL 2 HDL 2 nd nd . Edition . Edition Samir Palnitkar Prentice-Hall, Inc. : INSTRUCTOR : CHING-LUNG SU 課程名稱 課程名稱 : : 硬體描述語言設計與模擬 硬體描述語言設計與模擬 E-mail: [email protected]
74

Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

Sep 06, 2018

Download

Documents

doanthu
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-1/74

Textbook: Textbook: VerilogVerilog®® HDL 2HDL 2ndnd. Edition. EditionSamir Palnitkar

Prentice-Hall, Inc.

教 師 : 蘇 慶 龍INSTRUCTOR : CHING-LUNG SU

課程名稱課程名稱: : 硬體描述語言設計與模擬硬體描述語言設計與模擬

E-mail: [email protected]

Page 2: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-2/74

Chapter 3Chapter 3Basic ConceptsBasic Concepts

Chapter 3Chapter 3

Page 3: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-3/74Outline of Chapter 3Outline of Chapter 3

3.1 Lexical Conventions3.2 Data Types3.3 System Tasks and Compiler Directives

Page 4: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-4/743.1 3.1 Lexical ConventionsLexical Conventions

3.1 Lexical Conventions3.2 Data Types3.3 System Tasks and Compiler Directives

Page 5: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-5/743.1 3.1 Lexical ConventionsLexical Conventions

nn Lexical Conventions in Verilog HDLLexical Conventions in Verilog HDL

v The Lexical Conventions in Verilog HDL are similar to those in the C Language.

v Verilog HDL is a case-sensitive language.

Page 6: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-6/743.1 3.1 Lexical ConventionsLexical Conventions

nn WhitespaceWhitespace

v Blank spaces (\b), tabs (\t), and newline (\n) comprise the whitespace.

v Whitespace is ignored by Verilog except when it separates tokens.

v Whitespace is not ignored in strings.

Page 7: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-7/743.1 3.1 Lexical ConventionsLexical Conventions

nn CommentsComments

v Comments can be inserted in the code for readability and documentation.

v One-line comments start with “//”. Verilog skips from that point to the end of line.

v Multiple-line comments star with “/*” and end with “*/”.

v Multiple-line comments cannot be nested.

v One-line comments can be embedded in the multiple-line comments.

Page 8: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-8/743.1 3.1 Lexical ConventionsLexical Conventions

nn Example for the Verilog CommentsExample for the Verilog Comments

a = b && c; // This is a one-line comment

/* This is a multiple-line comment */

/* This is /* an illegal */ comment */

/* This is // a legal comment */

Nested Comments

Page 9: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-9/743.1 3.1 Lexical ConventionsLexical Conventions

nn OperatorsOperators

v Three type operators: Unary / Binary : Ternary

v Unary operators precede the operand.

v Binary operators appear between two operands.

v Ternary operators have two separate operators that separate three operands.

Page 10: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-10/743.1 3.1 Lexical ConventionsLexical Conventions

nn Example for the OperatorsExample for the Operators

a = ~ b ; // ~ is a unary operator. b is the operand

a = b && c ; // && is a binary operator. b and c are operands

a = b ? c : d // ?: is a ternary operator. b, c, and d are operands

Page 11: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-11/743.1 3.1 Lexical ConventionsLexical Conventions

nn Number SpecificationNumber Specification

v Two types of numbers in Verilog: Sized and Unsized

Page 12: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-12/743.1 3.1 Lexical ConventionsLexical Conventions

nn Sized NumbersSized Numbers

v Lexical Conventions: <size>‘<base format> <number>

v <size> is written only in the decimal and specifies the number of bits in the number.

v Base format: 1. Decimal (‘d or ‘D) 2. Hexadecimal (‘hor ‘H) 3. Binary (‘b or ‘B) 4. Octal (‘o or ‘O)

v Number: 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f

v Uppercase letter are legal for number specification.

Page 13: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-13/743.1 3.1 Lexical ConventionsLexical Conventions

nn Example for the Sized NumbersExample for the Sized Numbers

4'b1111// This is a 4-bit binary number

12'habc// This is a 32-bit hexadecimal number

16'd22 // This is a 16-bit decimal number

Page 14: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-14/743.1 3.1 Lexical ConventionsLexical Conventions

nn UnsizedUnsized NumbersNumbers

v Number that are specified without a <base format> specification are decimal numbers by default.

v Numbers that are written without a <size>specification have a default number of bits that is simulator- and machine-specific (must be at least 32).

Page 15: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-15/743.1 3.1 Lexical ConventionsLexical Conventions

nn Example for the Example for the UnsizedUnsized NumbersNumbers

23456 // This is a 32-bit decimal number by default

‘hc3 // This is a 32-bit hexadecimal number

‘o21 // This is a 32-bit octal number

Page 16: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-16/743.1 3.1 Lexical ConventionsLexical Conventions

nn XX or or ZZ ValuesValues

v Unknown Values: Xv High Impedance Values: Zv X or Z sets: 4 bits in Decimal based / 3 bits in Octal

based / 1 bit in Binary based.

v If the MSB of a number is 0, X, or Z, the number is automatically extended to fill the MSB, respecially, with 0, X, or Z.

Page 17: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-17/743.1 3.1 Lexical ConventionsLexical Conventions

nn Example for Example for XX or or ZZ ValuesValues

12'h13x // This is a 12-bit hex number; 4 least significant bits unknown

6'hx // This is a 6-bit hex number

32'bz // This is a 32-bit high impedance number

Page 18: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-18/743.1 3.1 Lexical ConventionsLexical Conventions

nn Negative NumbersNegative Numbers

v Negative number can be specified by putting a minus sign before the size for a constant number.

v Size constants are always positive.

v It is illegal to have a minus sign between <base format> and <number>.

v An optional signed specifier can be added to sign arithmetic.

Page 19: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-19/743.1 3.1 Lexical ConventionsLexical Conventions

nn Example for Negative NumberExample for Negative Number

-6'd3 // 8-bit negative number stored as 2's complement of 3

-6'sd3 // Used for performing signed integer math

4'd-2 // Illegal specification

Page 20: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-20/743.1 3.1 Lexical ConventionsLexical Conventions

nn Underscore Characters and Question MarksUnderscore Characters and Question Marks

v Underscore characters “_” are allowed anywhere in a number except the first character.

v Underscore characters improve the readability of number.

v Question marks “?” is Verilog alternative for Z in the context of numbers.

v The “?” is to enhance readability in the casex and casez statements.

Page 21: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-21/743.1 3.1 Lexical ConventionsLexical Conventions

nn Example for Example for ““__”” and and ““??””

12'b1111_0000_1010 // Use of underline characters for readability

4'b10?? // Equivalent of a 4'b10zz

Page 22: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-22/743.1 3.1 Lexical ConventionsLexical Conventions

nn StringsStrings

v Strings are sequences of characters that are enclosed by double quotes.

v The restriction on a string is that is must be contained on a single line.

v Strings are treated as a sequence of one-byte ASCII values.

Page 23: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-23/743.1 3.1 Lexical ConventionsLexical Conventions

nn Example for StringsExample for Strings

“Hello Verilog World”// is a string

“a / b”// is a string

Page 24: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-24/743.1 3.1 Lexical ConventionsLexical Conventions

nn Identifiers and KeywordsIdentifiers and Keywords

v Keywords are special identifiers reserved to define the language constructs.

v Keywords are in lowercase.

v A list of all keywords is contained in Appendix C.

v Identifiers are names given to objects so that they can be referenced in the design.

v Identifiers: Alphanumeric Characters, “_”, or, “$”

v Identifiers: Case sensitive

v Identifiers: Start with Alphanumeric Characters or “_”

v Identifiers: Cannot start with “$”

Page 25: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-25/743.1 3.1 Lexical ConventionsLexical Conventions

nn Example for Identifiers and KeywordsExample for Identifiers and Keywords

reg value; // reg is a keyword; value is an identifier

input clk: // input is a keyword; clk is an identifier

Page 26: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-26/743.1 3.1 Lexical ConventionsLexical Conventions

nn Escaped IdentifiersEscaped Identifiers

v Escaped Identifiers begin with the backslash (\) character and end with whitespace (space, tab, or, newline)

Page 27: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-27/743.1 3.1 Lexical ConventionsLexical Conventions

nn Example for Escaped IdentifiersExample for Escaped Identifiers

\a+b+c

\**my_name**

Page 28: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-28/743.2 3.2 Data TypesData Types

3.1 Lexical Conventions3.2 Data Types3.3 System Tasks and Compiler Directives

Page 29: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-29/743.2 3.2 Data TypesData Types

nn Value SetValue Set

v Four Value levels:

Value Level Condition in Hardware Circuits

0 Logic zero, false condition1 Logic one, true conditionx Unknown logic valuez High Impedance, Floating state

Page 30: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-30/743.2 3.2 Data TypesData Types

nn Value SetValue Set

v Eight Strength Levels: Reference to Appendix Aresolve conflicts between drivers of different strength in digital circuits.

Strength Level Type Degree

supply Driving strongeststrong Drivingpull Drivinglarge Storageweak Drivingmedium Storagesmall Storagehighz High Impedance weakest

Page 31: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-31/74

nn Example for Example for Strength LevelsStrength Levels

3.2 3.2 Data TypesData Types

strong1

weak0

strong1

strong1

strong0

x

supply1

pull0

supply1

Page 32: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-32/743.2 3.2 Data TypesData Types

nn NetsNets

v Nets present connections between hardware elements.

v Nets: Continuous Driven (Assignment)

v Nets are declared by keyword wire.

v Nets get the output value of their drivers.

v If a net has no driver, it gets the value z.

v Example:bc

agl

Instance Namewire

Page 33: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-33/743.1 3.1 Lexical ConventionsLexical Conventions

nn Example for NetsExample for Nets

wire a; // Declare net a for the above circuit

wire b, c; // Declare two wires b, c for the above circuit

wire d = 1'b0; // Net d is fixed to logic 0 at declaration

Page 34: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-34/743.2 3.2 Data TypesData Types

nn More Net Types in Verilog HDLMore Net Types in Verilog HDL

v wand: Wire AND

v wor: Wire OR

v tri: Tri-State Wire

v triand: Tri-State Wire AND

v trior: Tri-State Wire OR

v trireg: Tri-State Wire with capacitance to store value

Page 35: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-35/743.2 3.2 Data TypesData Types

nn RegistersRegisters

v Storage data types are declared by the keyword reg.

v Registers represent data store elements (Memory, … ).

v Resisters retain value until another value is placed onto to them.

v “reg” is not a real edge-triggered FF.

v “reg” do not need a clock signal.

v Value of reg can be changed anytime in a simulation by assigning a new value to the register.

v The default value for the reg data type is x.

Page 36: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-36/74

module reg_example;

reg reset; // declare a variable reset which can hold its value

initial // this construct will be discussed laterbegin

reset = 1'b1; //initialize reset to 1 to reset the digital circuit.#100 reset = 1'b0; // after 100 time units reset is deasserted.

end

endmodule

3.2 3.2 Data TypesData Types

nn Register Example: 3Register Example: 3--11

Results:Results:

Page 37: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-37/743.2 3.2 Data TypesData Types

nn Signed RegistersSigned Registers

v Registers can also be declared as signed variables.

v Example for Signed Register Declaration:

reg signed [63:0] m; //64 bit signed valus

integer i; //32 bit signed value

Page 38: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-38/743.2 3.2 Data TypesData Types

nn VectorsVectors

v “wire” and “reg” data types can be declared as vectors (multiple bit widths).

v If bit width is not specified, the default is scalar (1-bit).

v The left number in the squared brackets is always the most significant bits of the vector.

Page 39: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-39/743.2 3.2 Data TypesData Types

nn Example for VectorsExample for Vectors

wire a; //scalar net variable, default

wire [7:0] bus; //8-bit bus

wire [31:0] busA, busB, busC; //3 buses of 32-bit width

reg clock; // scalar register, default

reg [0:40] virtual_address; //vector registers, virtual //address 41-bit wide

MSB

Page 40: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-40/743.2 3.2 Data TypesData Types

nn Vector Part SelectsVector Part Selects

v Example:

busA [7] //bit #7 of vector busA

bus [2:0] //three least bus 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

virtual_adder [0:1] //two MSBs of vector address

Page 41: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-41/743.2 3.2 Data TypesData Types

nn Variable Vector Part SelectsVariable Vector Part Selects

v The variable vector part select of vectors is allowed in Verilog.

v The parts selects to be put in for loops to select various parts of the vector.

v Lexical Convention:[<starting_bit>+:width] //part select increments from starting_bit[<starting_bit>-:width] //part select decrements from starting_bit

v Starting Bit: Variable

v Bit Width: Constant

Page 42: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-42/743.2 3.2 Data TypesData Types

nn Example for Variable Vector Part SelectsExample for Variable Vector Part Selectsreg [255:0] data1: //Little endian notationreg [0:255] data2: //Big endian notationreg [7:0] byte

//Using a variable part select, one can choose partsbyte = data1[31-:8] //starting bit=31, width=8 => data1[31:24]byte = data1[24+:8] //starting bit=24, width=8 => data1[31:24]byte = data2[31-:8] //starting bit=31, width=8 => data2[24:31]byte = data2[24+:8] //starting bit=24, width=8 => data2[24:31]

//The starting bit can also be a variable. The width has to be//constant. Therefore, one can use the variable part select in//a loop to select all bits of the vectorfor (j=0; j<=31, j=j+1)

byte = data1[(j*8)+:8]; //Sequence is [7:0], [15:8] , . . . , [255:248]

//Can initialize a part of the vectordata1 [(byteNum*8)+:8] = 8'b0; //If byteNum=1, clear 8 bits [15:8]

Page 43: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-43/743.2 3.2 Data TypesData Types

nn IntegersIntegers

v An integer is a general purpose register data type for manipulating quantities.

v Integers are declared by the keyword integer.

v The default width is the host-machine word size, bit >32 bits.

v “reg”: Unsigned Quantities

v “integer”: Signed Quantities

Page 44: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-44/74

//This file does not really do anything.//It only demonstrates the declaration of an integer.module integer_example;

integer counter; // general purpose variable used as a counter.initial

counter = -1; // A negative one is stored in the counter

endmodule

3.2 3.2 Data TypesData Types

nn Example for IntegersExample for Integers

Page 45: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-45/743.2 3.2 Data TypesData Types

nn Real NumbersReal Numbers

v Real number constants and real register data types are declared with the keyword real.

v Real number can be specified in decimal (e.g. 3.14) or scientific (e.g. 3e6=3x106) notations.

v The default value of the Real number is 0.

v When a real value is assigned to an integer, the real number is rounded off to the nearest integer.

Page 46: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-46/74

module real_example;

real delta; // Define a real variable called deltainitialbegin

delta = 4e10; // delta is assigned in scientific notationdelta = 2.13; // delta is assigned a value 2.13

end

integer i; // Define an integer iinitial

i = delta; // i gets the value 2 (rounded value of 2.13)

endmodule

3.2 3.2 Data TypesData Types

nn Example for Real NumbersExample for Real Numbers

Page 47: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-47/743.2 3.2 Data TypesData Types

nn TimeTime

v Verilog simulation is done with respect to simulation time.

v The “time” (keyword) data type is used in Verilog to store simulation time.

v The width for time is implementation-specific but > 64 bits.

v The system function $time in invoked to get the current time.

v Simulation time is measured in terms of simulation seconds (s).

Page 48: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-48/74

module time_example;

time save_sim_time; // Define a time variable save_sim_timeinitial

save_sim_time = $time; // Save the current simulation time

endmodule

3.2 3.2 Data TypesData Types

nn Example for TimeExample for Time

Page 49: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-49/743.2 3.2 Data TypesData Types

nn ArraysArrays

v Array are allowed in Verilog for reg, integer, time, real, realtime and vector register data types.

v Multi-dimensional arrays can also be declared with any number of dimensions.

v Arrays are access by <array_name>[<subscript>]

v For multi-dimensional arrays, indexes need to be provided for each dimension.

Page 50: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-50/743.2 3.2 Data TypesData Types

nn Example for ArraysExample for Arrays

integer count [0:7]; //An array of 8 count variablesreg bool [31:0]; //Array of 32 one-bit boolean register variablestime chk_point [1:100]; //Array of 100 time checkpoint variablesreg [4:0] port_id [0:7]; //Array of 8 port_ids; each port_is is 5 bits widthinteger matrix [4:0][0:255]; //Two dimensional array of integersreg [63:0] array_4d [15:0][7:0][7:0][255:0]; //Four dimensional arraywire [7:0] w_array2 [5:0]; //Declare an array of 8-bit vector wirewire w_array1 [7:0][5:0]; //Declare an array of single bit wires

Page 51: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-51/743.2 3.2 Data TypesData Types

nn Example for Assignments to ArraysExample for Assignments to Arrays

count [5] = 0; //Reset 5th element of array of count variableschk_point [100] = 0; //Reset 100th time check point valueport_id [3] = 0; //Reset 3rd element (a 5-bit value) of port_id array

matrix [1][0] = 3359; //Set value of element indexed by [1][0] to 4459array_4d [0][0][0][0][15:0] = 0; //Clear bits 15:0 of the register

//accessed by indices [0][0][0][0]

port_id = 0; //Illegal syntax – Attempt to write the entire arraysmatrix [1] = 0; //Illegal syntax – Attempt to write [1][0] … [1][255]

Page 52: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-52/743.2 3.2 Data TypesData Types

nn MemoriesMemories

v Memories are modeled in Verilog as a one-dimension arrays of registers.

v Each word can be one or more bits.

v A particular word in memory is obtained by using the address as memory array subscript.

Page 53: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-53/743.2 3.2 Data TypesData Types

nn Example for MemoriesExample for Memories

reg mem1bit [0:1023]; //Memory mem1bit with 1K 1-bit worksreg [7:0] membyte [0:1023]; //Memory membyte with 1K 8-bit wordsmembyte [511] //Fetch 1 byte word whose address is 511.

Page 54: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-54/743.2 3.2 Data TypesData Types

nn ParametersParameters

v Verilog allows constants to be defined in a module by the keyword parameter.

v Parameters cannot be used as variables.

v Parameter values for each module instance can be overridden individually at compile time.

v Parameter types and sizes can also be defined.

Page 55: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-55/743.2 3.2 Data TypesData Types

nn Example for ParametersExample for Parameters

parameter port_id = 5; //Defines a constant port_idparameter cache_line_width = 256; //Constant defines with of cache

//line.parameter signed [15:0] WIDTH; //Fixed sign and range for parameter

//width

Page 56: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-56/743.2 3.2 Data TypesData Types

nn Definition Parameters and Local ParametersDefinition Parameters and Local Parameters

v Hardcoded numbers should be avoided written the definition parameters (Keyword: defparam).

v Parameter value can be changed by using defparamstatement.

v Verilog local parameters (Keyword: localparam) are identical to parameter except that they cannot be modified with defparam.

v “localparam” provides protection against inadvertent parameter redefinition.

Page 57: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-57/743.2 3.2 Data TypesData Types

nn Example for Example for ““ localparamlocalparam””

Localparam state1 = 4’h0001,state2 = 4’h0010,state3 = 4’h0100,state4 = 4’h1000,

Fixed state machine

Page 58: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-58/743.2 3.2 Data TypesData Types

nn StringsStrings

v String can be stored in reg.

v Each character in string take up 8 bits (byte).

v If the width of the register is greater than the size of the string, Verilog fills bits to the left of the string with zeros.

v If the register width is smaller than the string width, Verilog truncates the leftmost bits of the string.

v It is always safe to declare a string that is slightly wider than necessary.

Page 59: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-59/74

module string_storage;

reg [8*18:1] string_value; //Declare a variable which is 18 bytes wideinitial

string_value = "Hello Verilog World"; //String can be stored in//variable

endmodule

3.2 3.2 Data TypesData Types

nn Example for StringsExample for Strings

Page 60: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-60/743.2 3.2 Data TypesData Types

nn Special Characters in StringsSpecial Characters in Strings

Escaped Characters Character Displayed\n newline\t tab%% %\\ \\” “\ooo Character written in 1-3 octal digits

Page 61: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-61/743.3 3.3 System Tasks and Compiler DirectivesSystem Tasks and Compiler Directives

3.1 Lexical Conventions3.2 Data Types3.3 System Tasks and Compiler Directives

Page 62: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-62/743.3 3.3 System Tasks and Compiler DirectivesSystem Tasks and Compiler Directives

nn System TasksSystem Tasks

v Verilog provides standard system tasks for certain routine operations.

v System tasks keyword: $<keyword>

v Operations includes: display on screen, monitoring values of nets, stopping, finishing … etc.

Page 63: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-63/743.3 3.3 System Tasks and Compiler DirectivesSystem Tasks and Compiler Directives

nn Displaying InformationDisplaying Information

v “$display” is the main system task for displaying on the screen.

v Usage: $display (p1, p2, … , pn);v A $display inserts a newline at the end of the string

by default.

Page 64: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-64/743.3 3.3 System Tasks and Compiler DirectivesSystem Tasks and Compiler Directives

nn String Format SpecificationsString Format Specifications

Format Display

%d or %D Display variable in decimal%b or %B Display variable in binary%s or %S Display string%h or %H Display variable in hex%c or % C Display ASCII character%m or % M Display hierarchical name (no argument required)%v or % V Display strength%o or % O Display variable in octal%t or % T Display in current time format%e or % E Display real number in scientific format (e.g., 3e10)%f or % F Display real number in decimal format (e.g., 2.13)%g or % G Display real number in scientific or decimal , whichever is shorter

Page 65: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-65/74

module display_example;reg [0:40] virtual_addr;reg [4:0] port_id;reg [3:0] bus;

initialbegin

//Display the string in quotes$display("Hello Verilog World");

#200;//Display value of 41-bit virtual address 1fe0000001c and time 200virtual_addr = 41'h1fe0000001c;$display("At time %d virtual address is %h", $time, virtual_addr);

#30;//Display value of current simulation time 230$display($time);

//Display value of port_id 5 in binaryport_id = 5;$display("ID of the port is %b", port_id);

//Display x characters//Display value of 4-bit bus 10xx (signal contention) in binarybus = 4'b10xx;$display("Bus value is %b", bus);

//Display the hierarchical name of the current instance$display("This string is displayed from %m level of hierarchy");

//Display special characters, newline and %$display("This is a \n multi-line string with a %% sign");

end

endmodule

3.3 3.3 System Tasks and Compiler DirectivesSystem Tasks and Compiler Directives

nn Example for Example for $display$display

Page 66: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-66/743.3 3.3 System Tasks and Compiler DirectivesSystem Tasks and Compiler Directives

nn Simulation Results for $displaySimulation Results for $display

Page 67: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-67/743.3 3.3 System Tasks and Compiler DirectivesSystem Tasks and Compiler Directives

nn Monitoring InformationMonitoring Information

v Verilog provides a mechanism ($monitor) to monitor a signal when its value change.

v Usage: $monitor (p1, p2, … , pn)v “$monitor” continuously monitors the value of

variable or signals.

v Only once monitoring list can be active at a time.

v Switching monitoring on: $monitoronv Switching monitoring off: $monitoroff

Page 68: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-68/74

module monitor_example;

reg clock, reset;

//setup reset signalinitialbegin

reset = 1'b1;clock = 1'b0;#50 reset = 1'b0;

end

//Monitor time and value of the signals clock and reset//Clock toggles every 5 time units and reset goes down at 10 time unitsinitialbegin

$monitor( $time, "Value of signals clock = %b reset = %b",

clock,reset);

#400 $finish;end

//setup clock signalalways #5 clock = ~clock;

endmodule

3.3 3.3 System Tasks and Compiler DirectivesSystem Tasks and Compiler Directives

nn Example for MonitoringExample for Monitoring

Page 69: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-69/743.3 3.3 System Tasks and Compiler DirectivesSystem Tasks and Compiler Directives

nn Simulation Results for MonitoringSimulation Results for Monitoring

Page 70: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-70/743.3 3.3 System Tasks and Compiler DirectivesSystem Tasks and Compiler Directives

nn Stopping and FinishingStopping and Finishing

v The task $stop is provided to stop during a simulation.

v The $stop task puts the simulation in an interactive mode.

v The designer can debug in the interactive mode.

v The $finsh task terminates the simulation.

Page 71: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-71/743.3 3.3 System Tasks and Compiler DirectivesSystem Tasks and Compiler Directives

nn Simulation Results for Simulation Results for $stop$stop and and $finish$finish

Page 72: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-72/743.3 3.3 System Tasks and Compiler DirectivesSystem Tasks and Compiler Directives

nn Compiler DirectivesCompiler Directives

v Compiler directives are provided in Verilog.

v Syntax: ‘<keyword>v “’define” directive is used to define text macros in

Verilog.

v The Verilog compiler substitutes the text of the macro wherever it encounters a ‘<macro_name>.

Page 73: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-73/74

//Define a text macro that defines word size//Uses a ‘WORD_SIZE in the code‘define WORD_SIZE 32

//Define an alias. A $stop will be substituted whenever ‘S appears‘define S $stop;

//Define a frequently used text string‘define WORD_REG reg [31:0]//You can then define a 32-bit register as ‘WORD_REG reg32;

nn Example for Example for ‘‘definedefine

3.3 3.3 System Tasks and Compiler DirectivesSystem Tasks and Compiler Directives

Page 74: Textbook: Verilog® HDL 2 HDL 2nd. Edition . …soc.eecs.yuntech.edu.tw/Course/HDL Design & Simulation...P-1/74 Textbook: Verilog® HDL 2HDL 2nd. Edition. Edition Samir Palnitkar Prentice-Hall,

P-74/743.3 3.3 System Tasks and Compiler DirectivesSystem Tasks and Compiler Directives

nn Compiler Directives: Compiler Directives: ‘‘includeinclude

v The ’include directive allows you to include entire contents of a Verilog source file in another Verilog file during compilation.

v The ’include directive is typically used to include header files, which contain global or commonly used definitions.

v Example://Include the file header.v, which contains declarations in the//main Verilog file design.v‘include header.v…<Verilog code in file design.v>…