mr. prakash

46
VLSI VSAT Program CoreEL University Program Team

Upload: santosh-gowda

Post on 07-Apr-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 1/46

VLSI VSAT Program

CoreEL University Program Team

Page 2: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 2/46

Contents

Introduction : Need for Hardware Description Languages

Modeling of combinational logic circuits

 

2 of X Confidential

Modeling of sequential logic circuits

Simple Test Bench & Functional Simulation

Page 3: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 3/46

Design flow in VLSI / FPGA

Specifications

 Design Entry

 Functional Verification

S nthesis

Graphical 

Simulation

S nthesizer

 ASIC Specific

 Flow

3 of X

 Post-Synthesis Verification

 PAR

 Post-PAR Verification

 Bit-Format

 Post-syn simulation

Simulation

Verification

 Layout

 Fabrication

Verification

 Physical Verification

 Formal Verification

 Layout Editor

 Physical Verification

Page 4: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 4/46

Need for Hardware Description Language (HDL)

Model, Represent, And Simulate Digital Hardware

Hardware Concurrency

Parallel Activity Flow Semantics for Signal Value And Time

Special Constructs And Semantics

4 of X 4

Edge Transitions Propagation Delays

Timing Checks

Page 5: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 5/46

VERILOG HDL

Basic Unit – A module

Module

Describes the functionality of the design

States the input and output ports

5 of X 5

Example: A Computer

Functionality: Perform user defined computations

I/O Ports: Keyboard, Mouse, Monitor, Printer

Page 6: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 6/46

Module

General definition

module module_name ( port_list );

port declarations;

variable declaration;

 

Example

module HalfAdder (A, B, Sum Carry);

input A, B;

output Sum, Carry;

assign Sum = A ^ B;

//^ denotes XOR

 

6 of X 6

escr p on o e av or

endmodule

 

// & denotes AND

endmodule

Page 7: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 7/46

Conventions

Comments// Single line comment

/* Another single line comment */

/* Begins multi-line (block) comment

All text within is ignored

Line below ends multi-line comment

*/

7 of X 7

decimal, hex, octal, binary

unsized decimal form

size base form

include underlines, +,-

String" Enclose between quotes on a single line"

Page 8: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 8/46

Conventions (cont.)

Identifier A ... Z

a ... z

0 ... 9

Underscore

Strings are limited to 1024 chars

First char of identifier must not be a digit

8 of X 8

 

Keywords

Operators

Verilog is case sensitive

Page 9: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 9/46

Description Styles

Structural: Logic is described in terms of Verilog gate primitives

Example:

not n1(sel_n, sel);

and a1(sel_b, b, sel_b);

and a2(sel_a, a, sel);

 

9 of X 9

, _ , _  

sel

b

a

outsel_n

sel_b

sel_a

n1a1

a2

o1

Page 10: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 10/46

Description Styles

Dataflow: Specify output signals in terms of input signals

Example:

assign out = (sel & a) | (~sel & b);

b

10 of X 10

sel

a

outsel_n

sel_b

sel_a

Page 11: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 11/46

Description Styles

Behavioral: Algorithmically specify the behavior of the design

Example:

if (select == 0) begin

out = b;

a

boutBlack Box

2x1 MUX

11 of X 11

endelse if (select == 1) begin

out = a;

end

sel

Page 12: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 12/46

Structural Modeling

Execution: Concurrent

Format (Primitive Gates):and G2(Carry, A, B);

First parameter (Carry) – Output

Other Inputs (A, B) - Inputs

12 of X 12

Page 13: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 13/46

Dataflow Modeling

Uses continuous assignment statement

Format: assign [ delay ] net = expression;

Example: assign sum = a ^ b;

Delay: Time duration between assignment from RHS to LHS

All continuous assignment statements execute concurrently

13 of X 13

Order of the statement does not impact the design

Page 14: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 14/46

Dataflow Modeling

Delay can be introduced Example: assign #2 sum = a ^ b;

“#2” indicates 2 time-units

No delay specified : 0 (default)

Associate time-unit with physical time `timescale time-unit/time- recision

14 of X 14

 

Example: `timescale 1ns/100 ps

Timescale

`timescale 1ns/100ps 1 Time unit = 1 ns

Time precision is 100ps (0.1 ns)

10.512ns is interpreted as 10.5ns

Page 15: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 15/46

Dataflow Modeling

Example:

`timescale 1ns/100ps

module HalfAdder (A, B, Sum, Carry);

input A, B;

output Sum, Carry;

 

15 of X 15

assign um = ;

assign #6 Carry = A & B;

endmodule

Page 16: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 16/46

Dataflow Modeling

16 of X 16

Page 17: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 17/46

Behavioral Modeling

Example:

module mux_2x1(a, b, sel, out);

input a, a, sel;output out;

always @(a or b or sel)

be in  

17 of X 17

if (sel == 1)out = a;

else out = b;

end

endmodule

 

Page 18: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 18/46

Behavioral Modeling (cont.)

always statement : Sequential Block

Sequential Block: All statements within the block are

executed sequentially When is it executed?

Occurrence of an event in the sensitivity list

Event: Change in the logical value

18 of X 18

Statements with a Sequential Block: ProceduralAssignments

Delay in Procedural Assignments Inter-Statement Delay Intra-Statement Delay

Page 19: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 19/46

Behavioral Modeling (cont.)

Inter-Assignment Delay Example:

Sum = A ^ B;

#2 Carry = A & B; Delayed execution

 

19 of X 19

n ra- ss gnmen e ay Example:

Sum = A ^ B;

Carry = #2 A & B; Delayed assignment

Page 20: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 20/46

Procedural Constructs

Two Procedural Constructs initial Statement

always Statement

initial Statement : Executes only once always Statement : Executes in a loop

20 of X 20

…initial begin

Sum = 0;

Carry = 0;

end

…always @(A or B) begin

Sum = A ^ B;

Carry = A & B;

end

Page 21: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 21/46

Event Control

Event Control

Edge Triggered Event Control

Level Triggered Event Control

Edge Triggered Event Control

@ (posedge CLK) //Positive Edge of CLK

Curr_State = Next_state;

21 of X 21

Level Triggered Event Control

@ (A or B) //change in values of A or B

Out = A & B;

Page 22: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 22/46

Loop Statements

Loop Statements

Repeat

While

For

 

22 of X 22

Repeat Loop

Example:

repeat (Count)

sum = sum + 5;

If condition is a x or z it is treated as 0

Page 23: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 23/46

Loop Statements

While Loop

Example:

while (Count < 10) begin

sum = sum + 5;Count = Count +1;

end

If condition is a x or z it is treated as 0

23 of X 23

 

For Loop

Example:

for (Count = 0; Count < 10; Count = Count + 1) begin

sum = sum + 5;end

Page 24: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 24/46

Conditional Statements

if Statement

Format:if (condition)

procedural_statement

else if (condition)

procedural_statement

24 of X 24

procedural_statement

Example:if (Clk)

Q = 0;

else

Q = D;

Page 25: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 25/46

Conditional Statements

Case Statement

Example 1:case (X)

2’b00: Y = A + B;

2’b01: Y = A – B;2’b10: Y = A / B;

endcase

Example 2:

 

25 of X 25

case (3’b101 << 2)3’b100: A = B + C;

4’b0100: A = B – C;

5’b10100: A = B / C; //This statement is executed

endcase

Page 26: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 26/46

Conditional Statements (cont.)

Variants of case Statements: casex and casez

casez – z is considered as a don’t care

casex – both x and z are considered as don’t cares

Example:

26 of X 26

casez (X)2’b1z: A = B + C;

2’b11: A = B / C;

endcase

Page 27: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 27/46

Data Types

Net Types: Physical Connection between structuralelements

Register Type: Represents an abstract storage element.

Default Values Net Types : z

Register Type : x

27 of X 27

Net Types: wire, tri, wor, trior, wand, triand, supply0,supply1

Register Types : reg, integer, time, real, realtime

Page 28: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 28/46

Data Types

Net Type: Wirewire [ msb : lsb ] wire1, wire2, …

Example

wire Reset; // A 1-bit wire

wire [6:0] Clear; // A 7-bit wire

 

28 of X 28

 reg [ msb : lsb ] reg1, reg2, …

Example

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

reg cla; // A 1-bit register

Page 29: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 29/46

Restrictions on Data Types

Data Flow and Structural Modeling Can use only wire data type

Cannot use reg data type

Behavioral Modeling Can use only reg data type (within initial and always constructs)

Cannot use wire data t e

29 of X 29

 

Page 30: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 30/46

Modeling of combinational Logic Circuits

module ha(a,b,sum,carry);

input a,b;

output sum,carry;

assign sum = a ^ b;

assign carry = (a & b);

30 of X Confidential

Page 31: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 31/46

Modeling of Sequential Logic Circuits

module counter(

input rst,clk,dir,

output reg [3:0] q

);

always@(posedge (clk))

begin

if (rst)

31 of X

q<= ;

else if (dir)

q<=q+4'b0001;

else

q<=q-4'b0001;

endendmodule

Confidential

Page 32: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 32/46

Test Bench and Functional Simulation

module counter_test ;wire [3:0] q ;

reg rst ;

reg clk ;

reg dir ;

counter

DUT (

.q (q ) ,

.rst (rst ) ,

.clk (clk ) ,

.dir (dir ) );

 // "Clock Pattern" : dutyCycle = 50

 // Start Time = 0 ns, End Time = 1 us, Period = 20 ns

 // "Constant Pattern" // Start Time = 0 ns, End Time = 1 us, Period = 0

ns

initial

begin

rst = 1'b0 ;

# 0 rst = 1'b1 ;

# 20 rst = 1'b0 ;

# 980 ; // dumped values till 1 us

end

 // "Constant Pattern"

 

32 of X

initial

beginclk = 1'b0 ;

# 10 ;

 // 10 ns, single loop till start period.

repeat(49)

begin

clk = 1'b1 ;

#10 clk = 1'b0 ;

#10 ;

 // 990 ns, repeat pattern in loop.

end

clk = 1'b1 ;

# 10 ;

 // dumped values till 1 us

end

 // Start Time = 0 ns, End Time = 1 us, Period = 0ns

initial

begin

dir = 1'b0 ;

# 0 dir = 1'b1 ;

# 500 dir = 1'b0 ;

# 500 ;

 // dumped values till 1 us

end

initial

#2000 $stop;

endmodule

Confidential

Page 33: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 33/46

Exercise

Design a Mux 8:1 using Verilog according to the followingstructure and verify the functionality using suitable testbench

33 of X

Page 34: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 34/46

Appendix

34 of X Confidential

Page 35: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 35/46

Memories

An array of registers

reg [ msb : lsb ] memory1 [ upper : lower ];

Example

35 of X 35

reg [ 0 : 3 ] mem [ 0 : 63 ]; // An array of 64 4-bit registers

reg mem [ 0 : 4 ];

 // An array of 5 1-bit registers

Page 36: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 36/46

Compiler Directives

`define – (Similar to #define in C) used todefine global parameter

Example:`define BUS_WIDTH 16

reg [ `BUS_WIDTH - 1 : 0 ] System_Bus;

 

36 of X 36

`undef – Removes the previously defineddirective

Example:`define BUS_WIDTH 16

reg [ `BUS_WIDTH - 1 : 0 ] System_Bus;

`undef BUS_WIDTH

Page 37: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 37/46

Compiler Directives (cont.)

`include – used to include another file

Example`include “./fulladder.v”

37 of X 37

Page 38: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 38/46

System Tasks

Display tasks $display : Displays the entire list at the time when statement is

encountered

$monitor : Whenever there is a change in any argument, displays theentire list at end of time step

 

38 of X 38

mu a on on ro as $finish : makes the simulator to exit

$stop : suspends the simulation

Time $time: gives the simulation

Page 39: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 39/46

Type of Port Connections

Connection by Positionparent_mod

39 of X 39

Page 40: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 40/46

Type of Port Connections (cont.)

Connection by Nameparent_mod

40 of X 40

Page 41: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 41/46

Empty Port Connections

If an input port of an instantiated module isempty, the port is set to a value of z (highimpedance).

module child_mod(In1, In2, Out1, Out2) module parent_mod(…….)

input In1;

input In2; child_mod mod(A, ,Y1, Y2);

41 of X 41

output Out1; //Empty Input

output Out2; endmodule

 //behavior relating In1 and In2 to Out1

endmodule

If an output port of an instantiated module is left empty,

the port is considered to be unused.module parent_mod(…….)

child_mod mod(A, B, Y1, ); //Empty Output

endmodule

Page 42: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 42/46

Test Bench

`timescale 1ns/100psmodule Top;

reg PA, PB;

wire PSum, PCarry;

HalfAdder G1(PA, PB, PSum, PCarry);

initial begin: LABEL

 

Test Bench

 Apply Inputs

42 of X 42

 

for (i=0; i<4; i=i+1) begin{PA, PB} = i;

#5 $display (“PA=%b PB=%b PSum=%bPCarry=%b”, PA, PB, PSum, PCarry);

end // for

end // initialendmodule

es gn

Module

Observe Outputs

Page 43: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 43/46

Test Bench - Generating Stimulus

Example: A sequence ofvalues

initial begin

Clock = 0;

 

43 of X 43

oc = ;

#30 Clock = 0;

#20 Clock = 1;

end

Page 44: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 44/46

Test Bench - Generating Clock

Repetitive Signals (clock)

Clock

 

44 of X 44

 wire Clock;assign #10 Clock = ~ Clock

Caution: Initial value of Clock (wire data type) = z

~z = x and ~x = x

Page 45: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 45/46

Test Bench - Generating Clock (cont.)

Initialize the Clock signalinitial begin

Clock = 0;

end

Caution: Clock is of data type wire , cannot be used in aninitial statement

Solution:

45 of X 45

…initial begin

Clock = 0;

end

always begin#10 Clock = ~ Clock;

end

forever loop can

also be used togenerate clock 

Page 46: Mr. Prakash

8/4/2019 Mr. Prakash

http://slidepdf.com/reader/full/mr-prakash 46/46

Thank You

46 of X Confidential

[email protected]