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
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 ;