Chapter 4: Behavioral Modeling

Slides:



Advertisements
Similar presentations
CSCI 660 EEGN-CSCI 660 Introduction to VLSI Design Lecture 7 Khurram Kazi.
Advertisements

Synchronous Sequential Logic
Combinational Logic.
Hardware Description Language (HDL)
Verilog - 1 Writing Hardware Programs in Abstract Verilog  Abstract Verilog is a language with special semantics  Allows fine-grained parallelism to.
ECE 551 Digital System Design & Synthesis Lecture 09 Synthesis of Common Verilog Constructs.
OUTLINE Introduction Basics of the Verilog Language Gate-level modeling Data-flow modeling Behavioral modeling Task and function.
ELEN 468 Lecture 91 ELEN 468 Advanced Logic Design Lecture 9 Behavioral Descriptions III.
Verilog Sequential Circuits Ibrahim Korpeoglu. Verilog can be used to describe storage elements and sequential circuits as well. So far continuous assignment.
Verilog HDL (Behavioral Modeling) Bilal Saqib. Behavioral Modeling.
ECEN ECEN475 Introduction to VLSI System Design Verilog HDL.
Advanced Verilog EECS 270 v10/23/06.
Digital System Design Verilog ® HDL Behavioral Modeling (1) Maziar Goudarzi.
Today’s Lecture Process model –initial & always statements Assignments –Continuous & procedural assignments Timing Control System tasks.
Overview Logistics Last lecture Today HW5 due today
Spring 2007W. Rhett Davis with minor modification by Dean Brock UNCA ECE 406Slide 1 ECE 406 – Design of Complex Digital Systems Lecture 7: Design Example,
Verilog Basics Nattha Jindapetch November Agenda Logic design review Verilog HDL basics LABs.
Verilog Intro: Part 2. Procedural Blocks There are two types of procedural blocks in Verilog. – initial for single-pass behavior: initial blocks execute.
ECE 2372 Modern Digital System Design
Chapter 4: Behavioral Modeling Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 4-1 Ders – 4: Davranışsal Modelleme.
ECE 551 Digital System Design & Synthesis Fall 2011 Midterm Exam Overview.
1 Workshop Topics - Outline Workshop 1 - Introduction Workshop 2 - module instantiation Workshop 3 - Lexical conventions Workshop 4 - Value Logic System.
1 Workshop Topics - Outline Workshop 1 - Introduction Workshop 2 - module instantiation Workshop 3 - Lexical conventions Workshop 4 - Value Logic System.
Slide 1 6. VHDL/Verilog Behavioral Description. Slide 2 Verilog for Synthesis: Behavioral description Instead of instantiating components, describe them.
ECE/CS 352 Digital System Fundamentals© 2001 C. Kime 1 ECE/CS 352 Digital Systems Fundamentals Spring 2001 Chapters 3 and 4: Verilog – Part 2 Charles R.
1 CSE-308 Digital System Design (DSD) N-W.F.P. University of Engineering & Technology, Peshawar.
Anurag Dwivedi. Basic Block - Gates Gates -> Flip Flops.
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU Under-Graduate Project Logic Design with Behavioral Models Speaker: Darcy Tsai Adviser:
Charles Kime & Thomas Kaminski © 2004 Pearson Education, Inc. Terms of Use (Hyperlinks are active in View Show mode) Terms of Use Verilog Part 3 – Chapter.
Digital System Design Verilog ® HDL Behavioral Modeling Maziar Goudarzi.
1 Hardware description languages: introduction intellectual property (IP) introduction to VHDL and Verilog entities and architectural bodies behavioral,
Behavioral Modelling - 1. Verilog Behavioral Modelling Behavioral Models represent functionality of the digital hardware. It describes how the circuit.
M.Mohajjel. Structured Procedures Two basic structured procedure statements always initial All behavioral statements appear only inside these blocks Each.
Verilog® HDL Behavioral Modeling (2)
Chapter 3: Dataflow Modeling Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 3-1 Chapter 3: Dataflow Modeling.
OUTLINE Introduction Basics of the Verilog Language Gate-level modeling Data-flow modeling Behavioral modeling Task and function.
Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 5-1 Chapter 5: Tasks, Functions,
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU 99-1 Under-Graduate Project Logic Design with Behavioral Models Speaker: 銀子駒 Adviser:
SYEN 3330 Digital SystemsJung H. Kim Chapter SYEN 3330 Digital Systems Chapters 4 – Part4: Verilog – Part 2.
1 Workshop Topics - Outline Workshop 1 - Introduction Workshop 2 - module instantiation Workshop 3 - Lexical conventions Workshop 4 - Value Logic System.
COE 202 Introduction to Verilog Computer Engineering Department College of Computer Sciences and Engineering King Fahd University of Petroleum and Minerals.
1 Lecture 3: Modeling Sequential Logic in Verilog HDL.
Structural Description
Overview Logistics Last lecture Today HW5 due today
Hardware Description Languages: Verilog
Supplement on Verilog FF circuit examples
Figure 8.1. The general form of a sequential circuit.
ELEN 468 Advanced Logic Design
Verilog Introduction Fall
‘if-else’ & ‘case’ Statements
Verilog-HDL-3 by Dr. Amin Danial Asham.
Hardware Description Languages: Verilog
Introduction to DIGITAL CIRCUITS MODELING & VERIFICATION using VERILOG [Part-I]
Chapter 5: Tasks, Functions, and UDPs
Behavioral Modeling in Verilog
Chapter 3: Dataflow Modeling
Chapter 7: Advanced Modeling Techniques
Chapter 9: Sequential Logic Modules
101-1 Under-Graduate Project Logic Design with Behavioral Models
Test Fixture (Testbench)
Chapter 8: Combinational Logic Modules
Register-Transfer Level Components in Verilog
The Verilog Hardware Description Language
Dr. Tassadaq Hussain Introduction to Verilog – Part-3 Expressing Sequential Circuits and FSM.
Supplement on Verilog adder examples
The Verilog Hardware Description Language
ECE 551: Digital System Design & Synthesis
Introduction to Digital IC Design
Introduction to Verilog – Part-2 Procedural Statements
Sequntial-Circuit Building Blocks
Presentation transcript:

Chapter 4: Behavioral Modeling Prof. Ming-Bo Lin Department of Electronic Engineering National Taiwan University of Science and Technology

Syllabus Objectives Procedural constructs Procedural assignments Timing control Selection statements Iterative (loop) statements

Objectives After completing this chapter, you will be able to: Describe the behavioral modeling structures Describe procedural constructs Understand the features of initial blocks Understand the features of always blocks Distinguish the differences between blocking and nonblocking assignments Understand the features of timing controls Understand the features of selection constructs Understand the features of loop constructs

Syllabus Objectives Procedural constructs Procedural assignments initial block always block Procedural assignments Timing control Selection statements Iterative (loop) statements

An initial Block Executes exactly once during simulation Starts at simulation time 0 reg x, y, z; initial begin // complex statement x = 1`b0; y = 1`b1; z = 1`b0; #10 x = 1`b1; y = 1`b1; z = 1`b1; end initial x = 1`b0; // single statement

Syllabus Objectives Procedural constructs Procedural assignments initial block always block Procedural assignments Timing control Selection statements Iterative (loop) statements

An always block Starts at simulation time 0 Executes continuously during simulation reg clock; initial clock = 1`b0; always #5 clock = ~clock;

Syllabus Objectives Procedural constructs Procedural assignments General syntax Blocking assignments Nonblocking assignments Blocking vs. nonblocking assignments Timing control Selection statements Iterative (loop) statements

Procedural Assignments Syntax variable_lvalue = [timing_control] expression variable_lvalue <= [timing_control] expression [timing_control] variable_lvalue = expression [timing_control] variable_lvalue <= expression Two types blocking nonblocking

Procedural Assignments The bit widths Keeping the least significant bits Zero-extended in the most significant bits

Syllabus Objectives Procedural constructs Procedural assignments General syntax Blocking assignments Nonblocking assignments Blocking vs. nonblocking assignments Timing control Selection statements Iterative (loop) statements

Blocking Assignments Are executed in the specified order Use the “=“ operator // blocking assignments initial begin x = #5 1'b0; // at time 5 y = #3 1'b1; // at time 8 z = #6 1'b0; // at time 14 end

Blocking Assignments output reg [3:0] sum; output reg c_out; reg [3:0] t; always @(x, y, c_in) begin t = y ^ {4{c_in}}; {c_out, sum} = x + t + c_in; end Q: What is wrong with: t = y ^ c_in ? Q: Does a reg variable correspond to a memory element to be synthesized?

Syllabus Objectives Procedural constructs Procedural assignments General syntax Blocking assignments Nonblocking assignments Blocking vs. nonblocking assignments Timing control Selection statements Iterative (loop) statements

Nonblocking Assignments Use the <= operator Used to model several concurrent data transfers reg x, y, z; // nonblocking assignments initial begin x <= #5 1'b0; // at time 5 y <= #3 1'b1; // at time 3 z <= #6 1'b0; // at time 6 end

Nonblocking Assignments input clk; input din; output reg [3:0] qout; // a 4-bit shift register always @(posedge clk) qout <= {din, qout[3:1]}; // Right shift

Syllabus Objectives Procedural constructs Procedural assignments General syntax Blocking assignments Nonblocking assignments Blocking vs. nonblocking assignments Timing control Selection statements Iterative (loop) statements

Race Conditions // using blocking assignment statements always @(posedge clock) // has race condition x = y; always @(posedge clock) y = x; // using nonblocking assignment statements always @(posedge clock) // has no race condition x <= y; y <= x;

Execution of Nonblocking Statements Read Evaluate and schedule Assign

Blocking vs. Nonblocking Assignments // A 4-bit shift register always @(posedge clk) begin qout[0] = sin; qout[1] = qout[0]; qout[2] = qout[1]; qout[3] = qout[2]; end

Blocking vs. Nonblocking Assignments // A 4-bit shift register always @(posedge clk) begin qout[0] <= sin; qout[1] <= qout[0]; qout[2] <= qout[1]; qout[3] <= qout[2]; end

Blocking vs. Nonblocking Assignments Suppose that count is 1 and finish is 0 before entering the always block always @(posedge clk) begin: block_a count = count – 1; if (count == 0) finish = 1; end Result: finish = 1. (Different from that of gate-level.) always @(posedge clk) begin: block_b count <= count – 1; if (count == 0) finish <= 1; end Result: finish = 0. (Same as that of gate-level.)

Coding Styles blocking operators (=) nonblocking operators (<=) combinational logic nonblocking operators (<=) sequential logic

Syllabus Objectives Procedural constructs Procedural assignments Timing control Delay timing control Event timing control Selection statements Iterative (loop) statements

Delay Timing Control Delay timing control Regular delay control Intra assignment delay control

Regular Delay Control Regular delay control Defers the execution of the entire statement reg x, y; integer count; #25 y <= ~x; // at time 25 #15 count <= count + 1; // at time 40

Intra-Assignment Delay Control Defers the assignment to the left-hand-side variable y = #25 ~x; // assign to y at time 25 count = #15 count + 1; // assign to count at time 40 y <= #25 ~x; // assign to y at time 25 count <= #15 count + 1; // assign to count at time 15

Syllabus Objectives Procedural constructs Procedural assignments Timing control Delay timing control Event timing control Selection statements Iterative (loop) statements

Event Timing Control Edge-triggered event control Named event control Event or control Level-sensitive event control Q: What is an event?

Edge-Triggered Event Control @(posedge clock) @(negedge clock) always @(posedge clock) begin reg1 <= #25 in_1; reg2 <= @(negedge clock) in_2 ^ in_3; reg3 <= in_1; end

Named Event Control A named event event received_data; // declare always @(posedge clock) if (last_byte) -> received_data; // trigger always @(received_data) // recognize begin ... end

Event or Control Event or control or , * or (*) means any signals always @(posedge clock or negedge reset_n) if (!reset_n) q <= 1`b0; else q <= d;

Level-Sensitive Event Control always wait (count_enable) count = count –1 ; wait (count_enable) #10 count = count –1 ;

Syllabus Objectives Procedural constructs Procedural assignments Timing control Selection statements if…else statement case (casex/casez) statement Iterative (loop) statements

if…else Statement Syntax if (<expression>) true_statement ; else false_statement; if (<expression1>) true_statement1; else if (<expression2>) true_statement2;

if…else Statement // using if…else statement always @(*) begin if (s1) begin if (s0) out = i3; else out = i2; end else begin if (s0) out = i1; else out = i0; end end

A Simple 4-bit Counter // the body of the 4-bit counter. always @(negedge clock or posedge clear) if (clear) qout <= 4'd0; else qout <= (qout + 1) ; // qout = (qout + 1) % 16;

Syllabus Objectives Procedural constructs Procedural assignments Timing control Selection statements if…else statement case (casex/casez) statement Iterative (loop) statements

case (casex/casez) Statement Syntax case (case_expression) case_item1 {,case_item1}: procedural_statement1 case_item2 {,case_item2}: procedural_statement2 ... case_itemn {,case_itemn}: procedural_statementn [default: procedural_statement] endcase

A 4-to-1 MUX Example always @(I0 or I1 or I2 or I3 or S) case (S) 2'b00: Y = I0; 2'b01: Y = I1; 2'b10: Y = I2; 2'b11: Y = I3; endcase Q: Model a 3-to-1 multiplexer.

casex and casez Statements Compare only non-x or z positions casez treats all z values as don’t cares casex treats all x and z values as don’t cares

casex and casez Statements // count the trailing zeros in a nibble always @(data) casex (data) 4'bxxx1: out = 0; 4'bxx10: out = 1; 4'bx100: out = 2; 4'b1000: out = 3; 4'b0000: out = 4; default: out = 3'b111; endcase Q: Is the default statement necessary?

Syllabus Objectives Procedural constructs Procedural assignments Timing control Selection statements Iterative (loop) statements while loop for loop repeat loop forever loop

while Loop Syntax while (condition_expr) statement; while (count < 12) count <= count + 1; while (count <= 100 && flag) begin // put statements wanted to be carried out here end

while Loop // count the zeros in a byte integer i; always @(data) begin out = 0; i = 0; while (i <= 7) begin // simple condition if (data[i] == 0) out = out + 1; i = i + 1; end Q: Can the if … be replaced with out = out + ~data[i] ?

while Loop // count the trailing zeros in a byte integer i; always @(data) begin out = 0; i = 0; while (data[i] == 0 && i <= 7) begin // complex condition out = out + 1; i = i + 1; end

Syllabus Objectives Procedural constructs Procedural assignments Timing control Selection statements Iterative (loop) statements while loop for loop repeat loop forever loop

for Loop Syntax for (init_expr; condition_expr; update_expr) statement; init_expr; while (condition_expr) begin statement; update_expr; end

for Loop // count the zeros in a byte integer i; always @(data) begin out = 0; for (i = 0; i <= 7; i = i + 1) // simple condition if (data[i] == 0) out = out + 1; end

for Loop // count the trailing zeros in a byte integer i; always @(data) begin out = 0; for (i = 0; data[i] == 0 && i <= 7; i = i + 1) out = out + 1; end

Syllabus Objectives Procedural constructs Procedural assignments Timing control Selection statements Iterative (loop) statements while loop for loop repeat loop forever loop

repeat Loop Syntax repeat (counter_expr) statement; i = 0; repeat (32) begin state[i] = 0; i = i + 1; end repeat (cycles) begin @(posedge clock) buffer[i] <= data; i <= i + 1;

Syllabus Objectives Procedural constructs Procedural assignments Timing control Selection statements Iterative (loop) statements while loop for loop repeat loop forever loop

forever Loop Syntax forever statement; initial begin clock <= 0; forever begin #10 clock <= 1; #5 clock <= 0; end

The forever Loop Structure reg clock, x, y; initial forever @(posedge clock) x <= y;