+ All Categories
Home > Documents > 12. VHDL pro verifikaci -TestbenchI · BI-PNO 12. Testbench I 2006-2011 Bečvář, Daněk, Schmidt,...

12. VHDL pro verifikaci -TestbenchI · BI-PNO 12. Testbench I 2006-2011 Bečvář, Daněk, Schmidt,...

Date post: 15-Sep-2018
Category:
Upload: ngokhue
View: 212 times
Download: 0 times
Share this document with a friend
15
BI-PNO 12. Testbench I 2006-2011 Bečvář, Daněk, Schmidt, Novotný ČVUT v Praze, FIT 1 12. VHDL pro verifikaci - Testbench I BI-PNO Praktika návrhu číslicových obvodů Dr.-Ing. Martin Novotný Katedra číslicového návrhu Fakulta informačních technologií ČVUT v Praze Miloš Bečvář, Martin Daněk, Jan Schmidt, Martin Novotný, 2006-2011 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Transcript

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

1

12. VHDL pro verifikaci- Testbench I

BI-PNO Praktika návrhu číslicových obvodů

Dr.-Ing. Martin Novotný

Katedra číslicového návrhu

Fakulta informačních technologií

ČVUT v Praze

Miloš Bečvář, Martin Daněk, Jan Schmidt, Martin Novotný, 2006-2011

Evropský sociální fondPraha & EU: Investujeme do vaší budoucnosti

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

2

Verifikace a testování

• Verifikace je proces, který ověří, že obvod byl navržen podle specifikace

• Testování je proces, který ověří, že obvod byl vyroben podle návrhu.

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

3

Verifikace

• Verifikace srovnává specifikaci a implementaci. Bez specifikace neníverifikace.

• Specifikace je typicky textový dokument (neformální specifikace), který popisuje fyzické, elektrické, funkční a časovévlastnosti obvodu, který bude navržen.

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

4

Formy verifikace

• verifikace simulací (Modelsim …)verifikace v simulačním prostředí(testbench), který produkuje stimuly a sbírá-kontroluje odezvy

• formální verifikace (Formality, Conformal)formální důkaz funkčních vlastností obvodu

• statická časová analýza (STA) (PrimeTime)automatická kontrola časových vlastnostíobvodu

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

5

Verifikační prostředí

Design underVerification

(DUV)

Design underVerification

(DUV)

generátor stimulů &kontrola odezvy

generátor stimulů &kontrola odezvy

TESTBENCHTESTBENCHTESTBENCHTESTBENCH

RTL VHDL Netlist + SDFfunkční verifikace časová verifikace

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

6

Struktura verifikačního prostředí

• Nejjednodušší: jeden proces, který generuje stimuly a kontroluje odezvu

• Více procesů může kontrolovat různé části specifikace

• VHDL konfigurací můžeme volit – úroveň detailu popisu

(RTL, netlist s časováním)– verifikační případ (test case)

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

7

Rozvinuté verifikační prostředí

DesignUnder

Verification

modely externích bloků

generátorystimulů

kontrola odezvy

vstupnídata

výstupnídata

řízeníverifikace

skript

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

8

VHDL konstrukce pro verifikaci

• Plná forma přiřazení signálů

A<='0', '1' after 10 ns, '0' after 20 ns;

wait for timewait until conditionwait on signal wait ;

wait for timewait until conditionwait on signal wait ;

• Procesy bez citlivostních seznamů s příkazy wait

• Textový vstup, výstup; chybové kontroly (aserce)

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

9

Kontrola předstihu, přesahuentity DFF isgeneric (TD, TSETUP, THOLD : time := 0ns);port (D, CLK : in std_logic;

Q : out std_logic);end DFF;

architecture TIME_CHECK of DFF isbegin

main: process (CLK) beginif CLK='1' then Q <= D after td; end if;

end process;check: process (CLK, D) begin

if CLK='1' and CLK'event thenassert D'stable (tsetup)

report "Porusen predstih" severity waring;end if;if CLK='1' and D'event then

assert CLK'stable (thold)report "Porusen presah" severity warning;

end if;end process;

end TIME_CHECK;

entity DFF isgeneric (TD, TSETUP, THOLD : time := 0ns);port (D, CLK : in std_logic;

Q : out std_logic);end DFF;

architecture TIME_CHECK of DFF isbegin

main: process (CLK) beginif CLK='1' then Q <= D after td ; end if ;

end process ;check: process (CLK, D) begin

if CLK='1' and CLK'event thenassert D'stable (tsetup)

report "Porusen predstih" severity waring ;end if ;if CLK='1' and D'event then

assert CLK'stable (thold)report "Porusen presah" severity warning;

end if ;end process ;

end TIME_CHECK;

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

10

Porušený předstih a přesah: dějí se strašné věci

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

11

Psaní verifikačního prostředí (testbench)

• Neomezujte se na psaní stylem RTL-VHDL.

• Využívejte všechny možnosti VHDL pro psanípřehledného kódu.

• Chování popisujte pokud možno sekvenčně bez vedlejších efektů.

• Řádně dokumentujte svůj kód, nejlépe tak, aby po vymazání VHDL příkazů z komentářů bylo stále patrné, jak kód funguje.

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

12

Psaní testbenchů (2)

• Příliš složitě psané procesy (např. RTL-VHDL) mohou nadměrně zatěžovat simulátor a zpomalovat simulaci.

• Pozor na nekonečné smyčky – každý proces musímít alespoň jeden příkaz wait !

• Procesy s citlivostním seznamem mají na konciimplicitní wait s příslušnými signály.

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

13

Handshake

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

14

Handshake – RTL type STATE_TYP is

(…,MAKE_REQ,RELEASE,…);signal STATE,NEXT_STATE:

STATE_TYP;…COMB: process (STATE,ACK)BeginNEXT_STATE <= STATE;

case STATE is…when MAKE_REQ =>

REQ <= '1';if ACK = '1' then

NEXT_STATE <= RELEASE;

end if;when RELEASE =>

REQ <= '0';if ACK = '0' then

NEXT_STATE <= …;end if;

end case;end process COMB;

type STATE_TYP is(…,MAKE_REQ,RELEASE,…);

signal STATE,NEXT_STATE: STATE_TYP;

…COMB: process (STATE,ACK)BeginNEXT_STATE <= STATE;

case STATE is…when MAKE_REQ =>

REQ <= '1';if ACK = '1' then

NEXT_STATE <= RELEASE;

end if ;when RELEASE =>

REQ <= '0';if ACK = '0' then

NEXT_STATE <= …;end if ;

end case ;end process COMB;

SEQ: process (CLK)Begin

if CLK'eventand CLK = '1' then

if RESET = '1' thenSTATE <= …;

elseSTATE <= NEXT_STATE;

end if;end if;

End process SEQ;

SEQ: process (CLK)Begin

if CLK'eventand CLK = '1' then

if RESET = '1' thenSTATE <= …;

elseSTATE <= NEXT_STATE;

end if ;end if ;

End process SEQ;

BI-PNO12. Testbench I

2006-2011 Bečvář, Daněk, Schmidt, NovotnýČVUT v Praze, FIT

15

Handshake – behavioral

-- behavioral handshake model-- sets REQ to 1, waits for ACK in 1, sets REQ to 0-- no timing, example only

ProcessBegin

…REQ <= '1';wait until ACK = '1';REQ <= '0';wait until ACK = '0';…

End process ;


Recommended