+ All Categories
Home > Documents > VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim...

VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim...

Date post: 15-Mar-2018
Category:
Upload: nguyenkhanh
View: 249 times
Download: 10 times
Share this document with a friend
35
Jim Duckworth, WPI VHDL for Modeling - Module 10 1 VHDL for Modeling Module 10
Transcript
Page 1: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 101

VHDL for Modeling

Module 10

Page 2: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 102

Overview

• General examples

– AND model

– Flip-flop model

– SRAM Model

• Generics

– DDR SDRAM Model

• Constraints

• Metastability

• Block Statements

– Just for reference

Page 3: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 103

VHDL for Modeling

• We have covered

– VHDL for Synthesis

– VHDL for testing (simulation)

• Now - VHDL for modeling

• Describes the expected behavior of a component or device

• Can be used to test other components

– for example a model of a CPU could be used to test:

• UART

• DRAM memory controller

• cache controller

Page 4: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 104

AND gate model

-- 74LS08 model (typical delays)

ENTITY ls08 IS

PORT(a, b : IN std_logic;

c : OUT std_logic);

END ls08;

ARCHITECTURE behav OF ls08 IS

BEGIN

c <= ‘1’ AFTER 8 ns WHEN a = ‘1’ AND b = ‘1’ ELSE

‘0’ AFTER 10 ns;

END behav;

Page 5: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 105

Simulation Results

Page 6: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 106

D flip-flop model

-- 74LS74 model (typical delays)

ENTITY ls74 IS

PORT(d, clr, pre, clk : IN std_logic;

q : OUT std_logic);

END ls74;

ARCHITECTURE behav OF ls74 IS

BEGIN

PROCESS(clk, clr, pre)

BEGIN

IF clr = ‘0’ THEN

q <= ‘0’ AFTER 25 ns;

ELSIF pre = ‘0’ THEN

q <= ‘1’ AFTER 13 ns;

ELSIF clk’EVENT AND clk = ‘1’ THEN

IF d = ‘1’ THEN

q <= ‘1’ AFTER 13 ns;

ELSE

q <= ‘0’ AFTER 25 ns;

END IF;

END IF;

END PROCESS;

END behav;

-- 74LS74 model (typical delays)

ENTITY ls74 IS

PORT(d, clr, pre, clk : IN std_logic;

q : OUT std_logic);

END ls74;

ARCHITECTURE behav OF ls74 IS

BEGIN

PROCESS(clk, clr, pre)

BEGIN

IF clr = ‘0’ THEN

q <= ‘0’ AFTER 25 ns;

ELSIF pre = ‘0’ THEN

q <= ‘1’ AFTER 13 ns;

ELSIF clk’EVENT AND clk = ‘1’ THEN

IF d = ‘1’ THEN

q <= ‘1’ AFTER 13 ns;

ELSE

q <= ‘0’ AFTER 25 ns;

END IF;

END IF;

END PROCESS;

END behav;

Page 7: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 107

Simulation Results

Page 8: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 108

Adding Constants - same as previous

-- 74LS74 model (typical delays)

ENTITY ls74 IS

PORT(d, clr, pre, clk : IN std_logic;

q : OUT std_logic);

CONSTANT t_rise : TIME := 13 ns;

CONSTANT t_fall : TIME := 25 ns;

END ls74;

ARCHITECTURE behav OF ls74 IS

BEGIN

PROCESS(clk, clr, pre)

BEGIN

IF clr = ‘0’ THEN

q <= ‘0’ AFTER t_fall;

ELSIF pre = ‘0’ THEN

q <= ‘1’ AFTER t_rise;

ELSIF clk’EVENT AND clk = ‘1’ THEN

IF d = ‘1 THEN

q <= ‘1’ AFTER t_rise;

ELSE

q <= ‘0’ AFTER t_fall;

END IF;

END IF;

END PROCESS;

END behav;

Page 9: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 109

Adding setup and pulse width checks

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

ENTITY ls74 IS

PORT(d, clr, pre, clk : IN std_logic;

q : OUT std_logic);

CONSTANT t_rise : TIME := 13 ns;

CONSTANT t_fall : TIME := 25 ns;

CONSTANT t_setup : TIME := 20 ns;

CONSTANT t_width : TIME := 25 ns;

END ls74;

Page 10: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1010

Basic D flip-flop description same

ARCHITECTURE behav OF ls74 IS

BEGIN

PROCESS(clk, clr, pre)

BEGIN

IF clr = '0' THEN

q <= '0' AFTER t_fall;

ELSIF pre = '0' THEN

q <= '1' AFTER t_rise;

ELSIF clk'EVENT AND clk = '1' THEN

IF d = '1' THEN

q <= '1' AFTER t_rise;

ELSE

q <= '0' AFTER t_fall;

END IF;

END IF;

END PROCESS;

Page 11: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1011

Add setup and pulse width checks

-- process to check data setup time

PROCESS(clk)

BEGIN

IF clk'EVENT AND clk = '1' THEN

ASSERT d'LAST_EVENT > t_setup

REPORT "D changed within setup time"

SEVERITY ERROR;

END IF;

END PROCESS;

-- process to check clock high pulse width

PROCESS(clk)

VARIABLE last_clk : TIME := 0 ns;

BEGIN

IF clk'EVENT AND clk = '0' THEN

ASSERT NOW - last_clk > t_width

REPORT "Clock pulse width too short"

SEVERITY ERROR;

ELSE

last_clk := NOW;

END IF;

END PROCESS;

END behav;

Page 12: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1012

LS74 Model in ModelSim

Page 13: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1013

Test Bench – without SRAM

• SRAM connections are open

DSP

Picoblaze

Display

ZZ

Page 14: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1014

SRAM model – simplified, no delays

Page 15: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1015

Adding the SRAM model

• New testbench

SRAM

Model

DSP

Picoblaze

Display

Page 16: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1016

Adding the SRAM model to the test bench

Page 17: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1017

ISSI SRAM – Verilog Model (partial)

• // IS61LV25616 Asynchronous SRAM, 256K x 16 = 4M; speed: 10ns.

• // Note; 1) Please include "+define+ OEb" in running script if you want to check

• // timing in the case of OE_ being set.

• // 2) Please specify access time by defining tAC_10 or tAC_12.

• // `define OEb

• `define tAC_10

• `timescale 1ns/10ps

• module IS61LV25616 (A, IO, CE_, OE_, WE_, LB_, UB_);

• parameter dqbits = 16;

• parameter memdepth = 262143;

• parameter addbits = 18;

• parameter Toha = 2;

• parameter Tsa = 2;

• `ifdef tAC_10

• parameter Taa = 10,

• Thzce = 3,

• Thzwe = 5;

• `endif

• `ifdef tAC_12

• parameter Taa = 12,

• Thzce = 5,

• Thzwe = 6;

• `endif

• input CE_, OE_, WE_, LB_, UB_;

• input [(addbits - 1) : 0] A;

• inout [(dqbits - 1) : 0] IO;

• wire [(dqbits - 1) : 0] dout;

• reg [(dqbits/2 - 1) : 0] bank0 [0 : memdepth];

Page 18: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1018

Generics

• Generics useful for making design units more general

purpose

• Generics allow information to be passed into a design

description

• Example information

– propagation delays

– size of component (changing input and output ports)

– load capacitance/resistance

Page 19: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1019

LS08 example with generics

-- 74LS08 model

ENTITY ls08 IS

GENERIC(t_rise, t_fall : TIME);

PORT(a, b : IN std_logic;

c : OUT std_logic);

END ls08;

ARCHITECTURE behav OF ls08 IS

BEGIN

c <= ‘1’ AFTER t_rise WHEN a = ‘1’ AND b = ‘1’ ELSE

‘0’ AFTER t_fall;

END behav;

• This is now a parameterized model (general purpose)

rather than hard-coded version

• Actual delay is determined at simulation time (or

synthesis) by value passed to model

Page 20: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1020

Instantiating Components with Generics

-- example use of LS08 with generic values

ENTITY test IS

PORT(in1, in2, in3 : IN std_logic;

out1 : OUT std_logic);

END test;

ARCHITECTURE behav OF test IS

COMPONENT ls08

GENERIC(t_rise, t_fall : TIME);

PORT(a, b : IN std_logic;

c : OUT std_logic);

END COMPONENT;

SIGNAL int : std_logic;

BEGIN

u1: ls08 GENERIC MAP(8 ns, 10 ns) -- typical delays

PORT MAP(a => in1, b => in2, c => int);

u2: ls08 GENERIC MAP(15 ns, 20 ns) -- max delays

PORT MAP(a => int, b => in3, c => out1);

END behav;

Page 21: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1021

Another Example (with default values)

• Can provide default values for generics

• Only need GENERIC MAP if necessary to change them

ENTITY and2 IS

GENERIC(t_rise, t_fall : TIME := 10 ns;

load : INTEGER := 3);

PORT(a, b IN : IN std_logic;

c : OUT std_logic);

END and2;

ARCHITECTURE generic_model OF and2 IS

BEGIN

c <= ‘1’ AFTER (t_rise + (load * 2 ns)) WHEN a = ‘1’ AND b = ‘1’ ELSE

‘0’ AFTER (t_fall + (load * 2 ns));

END generic_model;

u1: and2 GENERIC MAP(5 ns, 7 ns, 4) PORT MAP (a = > ……); -- default overridden

u2: and2 PORT MAP(a => ……); -- uses default values

Page 22: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1022

Modifying Component Size

Page 23: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1023

Making two copies – different size

Page 24: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1024

Schematic of two shift registers

Page 25: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1025

DDR SDRAM Model

Page 26: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1026

DDR SDRAM Model (cont’d)

Page 27: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1027

DDR SDRAM Model (cont’d)

Page 28: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1028

DDR SDRAM Model (cont’d)

Page 29: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1029

DDR SDRAM Model (cont’d)

Page 30: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1030

Metastability

• Flip-flops may go metastable if input signals do not meet

setup and hold specifications relative to clock signal

• Rules:

– Input only drives one FF

– Add 2-FF synchronizer

IF clk’EVENT AND clk = ‘1’ THEN

input_d <= input;

input_dd <= input_d;

CLK

D

Q

Page 31: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1031

Constraints (for ref)

• Used to guide the synthesis tools

• Example 32-bit counter - no constraints (speed grades -4 and -5)======================================================

Advanced HDL Synthesis Report

Macro Statistics

# Counters : 1

32-bit up counter : 1

======================================================

Timing Summary:

---------------

Speed Grade: -4

Minimum period: 6.680ns (Maximum Frequency: 149.703MHz)

Minimum input arrival time before clock: No path found

Maximum output required time after clock: 8.094ns

Maximum combinational path delay: No path found

===============================================

Speed Grade: -5

Minimum period: 5.767ns (Maximum Frequency: 173.400MHz)

Page 32: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1032

Adding timing constraint

• Add to UCF file:– NET "clk" PERIOD = 6ns HIGH 50%;

WARNING:Par:62 - Your design did not meet timing.

-------------------------------------------------------------------------------------------

Constraint | Check | Worst Case | Best Case | Timing |Timing | Slack | Achievable |

Errors | Score

-------------------------------------------------------------------------------------------

* NET "clk_BUFGP/IBUFG" PERIOD = 6 ns HIGH | SETUP| -0.456ns | 6.456ns | 9| 1430

50% | HOLD | 2.432ns | | 0| 0

-------------------------------------------------------------------------------------------

1 constraint not met.

Page 33: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1033

Try relaxing constraint

• NET "clk" PERIOD = 6.5ns HIGH 50%;

----------------------------------------------------------------------------------

Constraint | Check| Worst Case | Best Case | Timing | Timing | Slack| Achievable |

Errors | Score

----------------------------------------------------------------------------------

NET "clk_BUFGP/IBUFG" PERIOD = 6.5 ns HIG | SETUP| 0.203ns| 6.297ns| 0| 0

H 50% | HOLD | 2.280ns| | 0| 0

----------------------------------------------------------------------------------

All constraints were met.

• Also see Timing Constraint User Guide

• Examples:

NET ‘abc’ OFFSET = OUT xx ns AFTER ‘clk’;

NET ‘def’ OFFSET = IN xx ns BEFORE ‘clk’;

Page 34: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1034

BLOCK statements (for ref)

• BLOCK statements can be used to partition and logically

group areas of the design

• Like a schematic sheet

• Example: design of a CPU, divide into

– ALU block

– Control block

– Decode block

• Blocks represent a self-contained area, each block can:

– declare lcoal signals

– types,

– constants, etc.

• Blocks can reference signals from a level above

Page 35: VHDL for Modeling - Worcester Polytechnic Instituteusers.wpi.edu/~rjduck/VHDL module10 rev g.pdfJim Duckworth, WPI 3 VHDL for Modeling - Module 10 VHDL for Modeling • We have covered

Jim Duckworth, WPI VHDL for Modeling - Module 1035

Example

ENTITY cpu IS

PORT(clk : IN std_logic;

input_bus : IN std_logic_vector(63 DOWNTO 0);

); -- port descriptions

END cpu;

ARCHITECTURE block_model OF cpu IS

SIGNAL instruction_bus, src_operand : std_logic_vector(63 DOWNTO 0);

BEGIN

alu: BLOCK

SIGNAL inst_bus, data_bus : std_logic_vector(31 DOWNTO 0);

BEGIN

-- statements describing ALU operation

END BLOCK alu;

decode: BLOCK

SIGNAL ; -- signals local to this decode block

BEGIN

-- statements describing decode operation

END BLOCK decode;

END block_model;


Recommended