+ All Categories
Home > Documents > Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... ·...

Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... ·...

Date post: 05-Sep-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
38
Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia University Spring 2019
Transcript
Page 1: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Digital Design with SystemVerilog

Prof. Stephen A. Edwards

Columbia University

Spring 2019

Page 2: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Synchronous Digital Design

Combinational Logic

Sequential Logic

Summary of Modeling Styles

Testbenches

Page 3: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Why HDLs?1970s: SPICE transistor-level netlists

An XOR built from four NAND gates

.MODEL P PMOS

.MODEL N NMOS

.SUBCKT NAND A B Y Vdd VssM1 Y A Vdd Vdd PM2 Y B Vdd Vdd PM3 Y A X Vss NM4 X B Vss Vss N.ENDS

X1 A B I1 Vdd 0 NANDX2 A I1 I2 Vdd 0 NANDX3 B I1 I3 Vdd 0 NANDX4 I2 I3 Y Vdd 0 NAND

Vss

Y

Vdd

A

B

X1

X2

X3

X4

A

B

I1

I2

I3

Y

Page 4: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Why HDLs?

1980s: Graphical schematic capture programs

Page 5: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Why HDLs?1990s: HDLs and Logic Synthesis

library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;

entity ALU isport(A: in unsigned(1 downto 0);

B: in unsigned(1 downto 0);Sel: in unsigned(1 downto 0);Res: out unsigned(1 downto 0));

end ALU;architecture behv of ALU is begin

process (A,B,Sel) begincase Sel is

when "00" => Res <= A + B;when "01" => Res <= A + (not B) + 1;when "10" => Res <= A and B;when "11" => Res <= A or B;when others => Res <= "XX";

end case;end process;

end behv;

Page 6: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Separate but Equal: Verilog and VHDL

Verilog: More succinct, reallymessy

VHDL: Verbose, overlyflexible, fairly messy

Part of languages peopleactually use identical

Every synthesis systemsupports both

SystemVerilog a newerversion. Supports many morefeatures.

Page 7: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Synchronous DigitalDesign

Page 8: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

The Synchronous Digital Logic Paradigm

Gates and Dflip-flops only

No level-sensitivelatches

All flip-flopsdriven by thesame clock

No other clocksignals

Every cyclic pathcontains at leastone flip-flop

No combinationalloops

CLSTATE

NEXT STATE

INPUTS OUTPUTS

CLOCK

Page 9: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Timing in Synchronous Circuits

CL· · · · · ·Q D

CLK

CLK

Q

D

tc

tc: Clock period. E.g., 10 ns for a 100 MHz clock

Page 10: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Timing in Synchronous Circuits

CL· · · · · ·Q D

CLK

CLK

Q

D

tp(min,FF) tp(min,CL)

Sufficient Hold Time?

Hold time constraint: how soon after the clock edgecan D start changing? Min. FF delay + min. logic delay

Page 11: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Timing in Synchronous Circuits

CL· · · · · ·Q D

CLK

CLK

Q

D

tp(max,FF)

tp(max,CL)Sufficient Setup Time?

Setup time constraint: when before the clock edge is Dguaranteed stable? Max. FF delay + max. logic delay

Page 12: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Combinational Logic

Page 13: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Full Adder

Single-linecomment

// Full adder

module

Systems are builtfrom modules

module full_adder

Module name

full_adder(input

Input port

input logic

Data type:single bit

logic a

Port name

a, b, c,output logic sum, carry);

assign“Continuousassignment”expressescombinationallogic

assign sum = a ^ b ^ c;assign carry = a & b | a & c | b & c

Logical Expression

a & b | a & c | b & c;

endmodule

carry~0

carry~2 carry~3

carry

carry~1

a

c

sum

b

sum

Page 14: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Operators and Vectors

module gates(input logic [3:0]

Four-bit vector,little-endian style

[3:0] a, b,output logic [3:0] y1, y2, y3,

y4, y5);

/* Five groups of two-input logic gates

Multi-linecomment

acting on 4-bit busses */assign y1 = a & b; // ANDassign y2 = a | b; // ORassign y3 = a ^ b; // XORassign y4 = ~(a & b); // NANDassign y5 = ~(a | b); // NOR

endmodule

Page 15: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Reduction AND Operator

module and8(input logic [7:0] a,output logic y);

assign y = &a; // Reduction AND

// Equivalent to// assign y = a[7] & a[6] & a[5] & a[4] &// a[3] & a[2] & a[1] & a[0];

// Also ~|a NAND// |a OR// ~|a NOR// ^a XOR// ~^a XNOR

endmodule

Page 16: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

The Conditional Operator: A Two-Input Mux

module mux2(input logic [3:0] d0, d1,input logic s,output logic [3:0] y);

// Array of two-input muxes

assign y = s ? d1 : d0;endmodule

y~00

1d0[3..0]

y~10

1

y~20

1

s

d1[3..0]y[3..0]

y~30

1

3

2

1

0

3

2

1

0

Page 17: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Operators in Precedence Order

!c -c &c ~&c NOT, Negate, Reduction AND, NAND

|c ~|c ^c ~^c OR, NOR, XOR, XNOR

a*b a/b a%b Multiply, Divide, Modulus

a+b a-b Add, Subtract

a<<b a>>b Logical Shift

a<<<b a>>>b Arithmetic Shift

a<b a<=b a>b a>=b Relational

a==b a!=b Equality

a&b a^&b AND

a^b a~^b XOR, XNOR

a|b OR

a?b:c Conditional

{a,b,c,d} Concatenation

Page 18: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

An XOR Built Hierarchically

module mynand2(input logic a, b,output logic y);

assign y = ~(a & b);endmodule

module myxor2(input logic a, b,output logic y);

logic abn, aa, bb;Declare internal wires

mynand2 n1(a, b, abn),n1: A mynand2connected to a, b, and abn

n2(a, abn, aa),n3(abn, b, bb),n4(aa, bb, y);

endmodule

mynand2:n1

a

by

mynand2:n2

a

by

mynand2:n3

a

by

mynand2:n4

a

by

y

yy~noty y~not

y~noty

y~not

y

b

a

Page 19: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

A Decimal-to-Seven-Segment Decoder

module dec7seg(input logic [3:0] a,output logic [6:0] y);

always_comb

always_comb:combinationallogic in animperative style

always_combcase

Multiwayconditional

case (a)4’d0: y = 7’b111_1110;4’d1: y = 7’b011_0000;4’d2: y = 7’b110_1101;4’d3: y = 7’b111_1001;4’d4: y = 7’b011_0011;4’d5

4’d5: decimal “5”as a four-bitbinary number 4’d5: y = 7’b101_1011

seven-bitbinary vector(_ is ignored)7’b101_1011;

4’d6: y = 7’b101_1111;4’d7: y = 7’b111_0000;4’d8: y = 7’b111_1111;4’d9: y = 7’b111_0011;default

Mandatorydefault: y =

“blockingassignment”:use in always_comb

= 7’b000_0000;endcase

endmodule

Page 20: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Verilog Numbers

16

Number of Bits

16’h

Base: b, o, d, or h

h8_0FValue:_’s are ignoredZero-padded

8_0F

4’b1010 = 4’o12 = 4’d10 = 4’ha16’h4840 = 16’b 100_1000_0100_0000

Page 21: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Imperative Combinational Logic

module comb1(input logic [3:0] a, b,input logic s,output logic [3:0] y);

always_combif (s)y = a + b;

elsey = a & b;

endmodule

y~50

1

y~2

y~1

y~60

1

+

Add0A[3..0]

B[3..0]OUT[3..0]

y~0 y~70

1

s

a[3..0] y~3

b[3..0]

y[3..0]

y~40

1

2

1

0

3

2

1

0

3

2

1

0

3

Both a + b and a & b computed, mux selects the result.

Page 22: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Imperative Combinational Logic

module comb2(input logic [3:0] a, b,input logic s, t,output logic [3:0] y);

always_combif (s)y = a + b;

else if (t)y = a & b;

elsey = a | b;

endmodule

All three expressionscomputed in parallel.Cascaded muxesimplement priority(s over t).

y~2

y~6 y~90

1

y~130

1y~5

y~100

1

y~140

1

y~1

y~0

y~4

y~110

1

y~150

1

y~3

a[3..0]

y[3..0]

y~7

y~80

1

y~120

1

s

t

+

Add0A[3..0]

B[3..0]OUT[3..0]

b[3..0]

3

0

1

2

2

2

1

1

0

0

3

3

2

2

1

1

0

0

3

3

s t y

1 − a + b0 1 a & b0 0 a | b

Page 23: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Imperative Combinational Logic

module comb3(input logic [3:0] a, b,input logic s, t,output logic [3:0] y, z);

always_comb beginz = 4’b0;if (s) begin

y = a + b;z = a - b;

end else if (t) beginy = a & b;z = a + b;

end elsey = a | b;

end

endmodule

Separate mux cascadesfor y and z.One copy of a + b.

+

Add1A[4..0]

B[4..0]OUT[4..0]

y~5

t

y~1

y~100

1 y~130

1s

y~2

y~6

y~90

1

y~140

1

y~0

y[3..0]

y~4

y~110

1

y~150

1

a[3..0]

y~3

b[3..0]

y~80

1

y~7

y~120

1

z~001'h0

1

z~40

1

+

Add0A[3..0]

B[3..0]OUT[3..0]

z~101'h0

1

z~50

1

z~201'h0

1

z~60

1

z~301'h0

1

z~70

1

z[3..0]

0

1

2

3

3

0

1

2

4

3

2

1

3

3

0

0

2

2

1

1

0:3

3

3

0

0

2

2

1

1

0:3

Page 24: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

An Address Decoder

module adecode(input logic [15:0] address,output logic RAM, ROM,output logic VIDEO, IO);

always_comb begin{RAM, ROM, VIDEO, IO}

Vector concatenation

} = 4’b 0

Default:all zeros

0;if (address[15] Select bit 15[15])RAM = 1;

else if (address[14:13] == 2’b 00 )VIDEO = 1;

else if (address[14:12]

Select bits 14, 13, & 12

[14:12] == 3’b 101)IO = 1;

else if (address[14:13] == 2’b 11 )ROM = 1;

end

endmodule

Omitting defaults for RAM, etc. will give “construct doesnot infer purely combinational logic.”

Page 25: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Sequential Logic

Page 26: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

A D-Flip-Flop

module mydff(input logic clk,input logic d,output logic q);

always_ff

always_ff introducessequential logic

always_ff @(posedge clk

Triggered by therising edge of clk

clk)

Copy d to q

q <=

Non-blocking assignment:happens “just after” the rising edge

<= d;

endmodule

d q

q~reg0

D

CLK

Q

clk

Page 27: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

A Four-Bit Binary Counter

module count4(input logic clk,output logic [3:0] count);

always_ff @(posedge clk)count <= count + 4’d

Width optionalbut good style

4’d 1;

endmodule

+

Add0A[3..0]

B[3..0]4'h8OUT[3..0]

count[0]~reg[3..0]

D

CLK

Q

clk

count[3..0]

Page 28: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

A Decimal Counter with Reset, Hold, and Loadmodule dec_counter(input logic clk,

input logic reset, hold, load,input logic [3:0] d,output logic [3:0] count);

always_ff @(posedge clk)if (reset) count <= 4’d 0;else if (load) count <= d;else if (~hold)

if (count == 4’d 9) count <= 4’d 0;else count <= count + 4’d 1;

endmodule

count~00

11'h0count~4

0

1

count~80

1

count~120

11'h0count~10

11'h0count~5

0

1

count~90

1

count~130

11'h0count~20

11'h0count~6

0

1

count~100

1

count~140

11'h0count~30

11'h0count~7

0

1

count~110

1

count~150

11'h0

+

Add0A[3..0]

B[3..0]4'h8OUT[3..0]

count[0]~reg[3..0]

D

CLK

Q count[3..0]

=

Equal0A[3..0]

B[3..0]4'h9OUT

clk

d[3..0]

hold

load

reset

3

2

1

0

0

1

2

3

3

2

1

0

Page 29: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Moore and Mealy Finite-State Machines

Next StateLogic

Output Logic

CLK

NextState

CurrentState

Inputs Outputs

The Moore Form:

Outputs are a function of only the current state.

Page 30: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Moore and Mealy Finite-State Machines

Next StateLogic

Output Logic

CLK

NextState

CurrentState

Inputs Outputs

The Mealy Form:

Outputs may be a function of both the current state andthe inputs.

A mnemonic: Moore machines often need more states.

Page 31: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Moore-style: Sequential Next-State Logic

module moore_tlc(input logic clk, reset,input logic advance,output logic red, yellow, green);

enum logic [2:0] {R, Y, G} state; // Symbolic state names

always_ff @(posedge clk) // Moore-style next-state logicif (reset) state <= R;else case (state)

R: if (advance) state <= G;G: if (advance) state <= Y;Y: if (advance) state <= R;default: state <= R;

endcase

assign red = state == R; // Combinational output logicassign yellow = state == Y; // separated from next-state logicassign green = state == G;

endmodule

Page 32: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Mealy-style: Combinational output/next state logicmodule mealy_tlc(input logic clk, reset,

input logic advance,output logic red, yellow, green);

typedef enum logic [2:0] {R, Y, G} state_t;state_t state, next_state;

always_ff @(posedge clk) state <= next_state;

always_comb begin // Mealy-style next state and output logic{red, yellow, green} = 3’b0; // Default: all off andnext_state = state; // hold stateif (reset) next_state = R;else case (state)

R: begin red = 1;if (advance) next_state = G; end

G: begin green = 1;if (advance) next_state = Y; end

Y: begin yellow = 1;if (advance) next_state = R; end

default: next_state = R;endcase

end

endmodule

Page 33: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Blocking vs. Nonblocking assignment

module nonblock(input clk,input logic a,output logic d);

logic b, c;

always_ff @(posedge clk)begin

b <= a;c <= b;d <=

Nonblockingassignment:All run on theclock edge<= c;

end

endmodule

a d

d~reg0

D

CLK

Q

b

D

CLK

Q

c

D

CLK

Q

clk

module blocking(input clk,input logic a,output logic d);

logic b, c;

always_ff @(posedge clk)beginb = a;c = b;d =

Blockingassignment:Effect felt bynext statement= c;

end

endmodule

a d

d~reg0

D

CLK

Q

clk

Page 34: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Summary of ModelingStyles

Page 35: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

A Contrived Examplemodule styles_tlc(input logic clk, reset,

input logic advance,output logic red, yellow, green);

enum logic [2:0] {R, Y, G} state;

always_ff @(posedge clk) // Imperative sequentialif (reset) state <= R; // Non-blocking assignmentelse case (state) // CaseR: if (advance) state <= G; // If-elseG: if (advance) state <= Y;Y: if (advance) state <= R;default: state <= R;

endcase

always_comb begin // Imperative combinational{red, yellow} = 2’b 0; // Blocking assignmentif (state == R) red = 1; // If-elsecase (state) // Case

Y: yellow = 1;default: ;

endcase;end

assign green = state == G; // Cont. assign. (comb)endmodule

Page 36: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Testbenches

Page 37: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

TestbenchesA model of the environment; exercises the module.

// Module to test:// Three-bit// binary counter

module count3(input logic clk,

reset,output logic [2:0]

count);

always_ff@(posedge clk)

if (reset)count <= 3’d 0;

elsecount <=

count + 3’d 1;

endmodule

module count3_tb; No ports;logic clk, reset; Signals for each DUT portreset;logic [2:0] count;

count3 dut

“Device Under Test”

dut(.*);Connect everything

(.*);

initial

Initial block:Imperative coderuns onceinitial begin

clk = 0;forever Infinite loopforever#20ns

Delay

#20ns clk = ~clk;end

initial begin // Resetreset = 0;repeat (2)

Counted looprepeat (2)

@(posedge clk);Wait for aclock cycle

@(posedge clk);reset = 1;repeat (2)

@(posedge clk);reset = 0;

end

endmodule

Page 38: Digital Design with SystemVerilog - Columbia Universitysedwards/classes/2019/4840-spring/... · 2019. 1. 7. · Digital Design with SystemVerilog Prof. Stephen A. Edwards Columbia

Running this in ModelSim


Recommended