background image

Języki opisu sprzętu 

– VHDL 

CAD

Mariusz Rawski

rawski@tele.pw.edu.pl

http://rawski.zpt.tele.pw.edu.pl/

background image

Języki opisu sprzętu

• System cyfrowy może być opisany na różnych poziomach abstrakcji i z 

wykorzystaniem różnych sposobów reprezentacji.

• Wraz z postępem procesu projektowego może to ulegać zmianie. 

• Wymagany jest sposób reprezentacji projektowanego systemu tak, by 

można było wymieniać informacje o projektowanym systemie między 
członkami grupy projektowej i komputerowymi narzędziami wspomagania 

członkami grupy projektowej i komputerowymi narzędziami wspomagania 
projektowania CAD.

• Języki opisu sprzętu HDL (

Hardware Description Languages

) służą 

temu celowi.

2

Mariusz Rawski

background image

Ograniczenia tradycyjnych języków programowania

• Tradycyjne języki programowania ogólnego przeznaczenia modelują 

proces sekwencyjny.

• W procesie sekwencyjnym operacje wykonywane są w kolejności – jedna 

na jednostkę czasową.

• Operacje często zależą od wyników wcześniej wykonanych operacji, 

kolejność wykonania nie może zostać zmieniona – kolejność operacji 
ma znaczenie
.

• Zalety:

• Zalety:

– możliwość  tworzenia algorytmu krok po kroku,
– proces sekwencyjny odpowiada sposobowi działania komputerów.

• Sposób działania systemu cyfrowego jest całkowicie inny niż w modelu 

sekwencyjnym:

– wiele mniejszych elementów połączonych w sieć,
– zmiany sygnałów aktywują połączone z nimi elementy do wykonania operacji,
– operacje wykonywane współbieżnie.

3

Mariusz Rawski

background image

Zastosowania języków HDL

• Program HDL wykorzystywany jest do:

– dokumentacji – specyfikacja formalna sytemu i dokumentacja dla celów 

wymiany informacji między projektantami, użytkownikami i systemami CAD,

– symulacji – dla celów weryfikacji działania projektowanego układu bez 

konieczności jego realizacji; symulator HDL pozwala modelować współbieżne 
operacje; program HDL wraz z generatorem testów i kodem kolekcjonującym 
odpowiedzi tworzy tzw. testbench który wykorzystywany jest przez 

odpowiedzi tworzy tzw. testbench który wykorzystywany jest przez 
symulator HDL do weryfikacji działania projektowanego układu,

– syntezy – nowoczesny proces projektowy oparty jest na koncepcji 

transformacji wysokopoziomowego opisu funkcjonalnego na niskopoziomowy 
opis strukturalny; niektóre z etapów przekształcania opisu projektu mogą być 
wykonywane przez oprogramowanie do syntezy; oprogramowanie takie na 
podstawie kodu HDL realizuje projektowany układ z wykorzystanie elementów 
z biblioteki; wynikiem jest kod HDL opisujący strukturę syntetyzowanego 
układu.

4

Mariusz Rawski

background image

Cechy języka HDL

• Charakterystyka układu cyfrowego opiera się na pojęciach jednostki 

projektowejpołączeniawspółbieżności zależności czasowych.

• Podstawowe cechy nowoczesnego języka HDL to:

– semantyka zawierająca koncepcję jednostki projektowej, połączenia, 

współbieżności i zależności czasowych,

– możliwość opisu opóźnienia w propagacji sygnału i zależności czasowych,
– konstrukcje umożliwiające opis realizacji strukturalnej,
– udostępnianie instrukcji umożliwiających opis funkcjonalny układu w sposób 

znany z tradycyjnych języków programowania

– możliwość efektywnego opisu operacji i struktur danych na poziomie bramek i 

przesłań między rejestrowych,

– posiadanie konstrukcji umożliwiających projektowania w sposób hierarchiczny.

5

Mariusz Rawski

background image

VHDL

• Very high speed integrated Hardware Description Language
• Przyjęty jako przemysłowy standard języka HDL (IEEE Std 1076)
• Modyfikowany w 1987, 1993 i 2001 (VHDL-87, -93, -2001)
• Rozszerzenia (wybrane):

– IEEE Std 1076.2-1996, 

VHDL Mathematical  Packages 

– definiuje dodatkowe 

funkcje matematyczne dla liczb rzeczywistych i zespolonych,

– IEEE Std 1076.3-1997, 

Synthesis Packages 

– definiuje arytmetyczne operacje 

na zestawach bitów,

– IEEE Std 1076.6-1999, 

VHDL Register Transfer Level (RTL) Synthesis 

definiuje podzbiór języka odpowiedni dla procesów syntezy,

IEEE Std 1164-1993 

Multivalue Logic System for VHDL Modeling 

Interoperability (st_logic_1164

– definiuje nowe typy danych dla celów 

modelowania logiki wielowartościowej,

– IEEE Std 1029.1-1998 VHDL 

Waveform and Vector  Exchange to Support 

Design and Test Verification (WAVES)

– definiuje sposób wykorzystania języka 

VHDL do wymiany danych w środowisku symulacyjnym.

6

Mariusz Rawski

background image

Podstawowe koncepcje języka VHDL

Przykład
• Układ detektora parzystości:

– wejścia 

x

2

x

1

x

0

,

– wyjście 

even

• Wejścia zgrupowane w szynę
• Wyjście aktywne, gdy w wektorze 

wejściowym jest parzysta liczba 
jedynek (0 lub 2) 

x

2

x

1

x

0

even

0

0

0

1

0

0

1

0

0

1

0

0

0

1

1

1

1

0

0

0

1

0

1

1

1

1

0

1

1

1

1

0

jedynek (0 lub 2) 

• Wyrażenie boolowskie opisujące układ

even = x

2

x

1

x

+ x

2

x

1

x

+ x

2

x

1

x

+ x

2

x

1

x

0

1

1

1

0

7

Mariusz Rawski

background image

Opis ogólny SOP (Sum-of-Product)

library

ieee;

use

ieee.std_logic_1164.

all

;

-- deklaracja jednostki

entity

even_detector_sop

is

port

(

in

std_logic_vector(2 downto 0);

even

out

std_logic

);

end

even_detector_sop ;

X

even

Wykorzystywane biblioteki

Wykorzystywane biblioteki

Deklaracja jednostki projektowej
Specyfikuje wej

ś

cia i wyj

ś

cia układu. Opisuje interfejs 

projektowanego urz

ą

dzenia.

Deklaracja jednostki projektowej
Specyfikuje wej

ś

cia i wyj

ś

cia układu. Opisuje interfejs 

projektowanego urz

ą

dzenia.

-- definicja architektury

architecture

sop_arch

of

even_detector_sop

is

signal

p1, p2, p3, p4

: std_logic;

begin

p1 <= (

not

x(2)) 

and

(

not

x(1)) 

and

(

not

x(0));

p2 <= (

not

x(2)) 

and

x(1) 

and

x(0);

p3 <= x(2) 

and

(

not

x(1)) 

and

x(0);

p4 <= x(2) 

and

x(1) 

and

(

not

x(0));

even <= p1 

or

p2 

or

p3 

or

p4; 

end

sop_arch;

even

3

Architektura układu
Mi

ę

dzy słowami kluczowymi

begin

end

specyfikuje 

działania i wewn

ę

trzn

ą

organizacj

ę

 układu. 

Architektura  skojarzona jest z konkretn

ą

 jednostk

ą

 

projektow

ą

 :

architecture

sop_arch

of

even_detector_sop

is

Architektura układu
Mi

ę

dzy słowami kluczowymi

begin

end

specyfikuje 

działania i wewn

ę

trzn

ą

organizacj

ę

 układu. 

Architektura  skojarzona jest z konkretn

ą

 jednostk

ą

 

projektow

ą

 :

architecture

sop_arch

of

even_detector_sop

is

8

Mariusz Rawski

background image

Koncepcja realizacji architektury SOP

library

ieee;

use

ieee.std_logic_1164.

all

;

-- deklaracja jednostki

entity

even_detector_sop

is

port

(

in

std_logic_vector(2 downto 0);

even

out

std_logic

);

end

even_detector_sop ;

Deklaracja sygnałów – poł

ą

cze

ń

mi

ę

dzy wewn

ę

trznymi 

elementami

Deklaracja sygnałów – poł

ą

cze

ń

mi

ę

dzy wewn

ę

trznymi 

elementami

Wprowadzenie sygnałów wej

ś

ciowych do wn

ę

trza układu

Wprowadzenie sygnałów wej

ś

ciowych do wn

ę

trza układu

(

not

x(2)) 

and

(

not

x(1)) 

and

(

not

x(0))

(

not

x(2)) 

and

x(1) 

and

x(0);

p1

p2

X

even

-- definicja architektury

architecture

sop_arch

of

even_detector_sop

is

signal

p1, p2, p3, p4

: std_logic;

begin

p1 <= (

not

x(2)) 

and

(

not

x(1)) 

and

(

not

x(0));

p2 <= (

not

x(2)) 

and

x(1) 

and

x(0);

p3 <= x(2) 

and

(

not

x(1)) 

and

x(0);

p4 <= x(2) 

and

x(1) 

and

(

not

x(0));

even <= p1 

or

p2 

or

p3 

or

p4; 

end

sop_arch;

Współbie

ż

ne operacje wyobra

ż

aj

ą

 cz

ęś

ci układu działaj

ą

ce 

równolegle w  układzie. Poł

ą

czone przy wykorzystaniu 

sygnałów tworz

ą

 sie

ć

.

Kolejno

ść

 tych operacji nie ma znaczenia

Współbie

ż

ne operacje wyobra

ż

aj

ą

 cz

ęś

ci układu działaj

ą

ce 

równolegle w  układzie. Poł

ą

czone przy wykorzystaniu 

sygnałów tworz

ą

 sie

ć

.

Kolejno

ść

 tych operacji nie ma znaczenia

x(0);

x(2) 

and

(

not

x(1)) 

and

x(0);

x(2) 

and

x(1) 

and

(

not

x(0))

x(2)

x(1)

x(0)

p3

p4

p1 

or

p2 

or

p3 

or

p4

even

3

9

Mariusz Rawski

background image

Działania architektury SOP

Inaczej niż w przypadku wykonania instrukcji w 

Inaczej niż w przypadku wykonania instrukcji w 
tradycyjnym języku programowania, operacje 
współbieżne są niezależne i mogą być aktywowane 
równolegle. Gdy tylko wejścia takiej ‘operacji’ się 
zmienią operacja się ‘budzi’ i oblicza odpowiedź na 
nowe wartości wejściowe. Wynik obliczeń jest 
widoczny na wyjściu z pewnym opóźnieniem. 
Zmiana sygnału wyjściowego może z kolei 
aktywować dalsze elementy układu.

Zmiana na wej

ś

ciach 

układu uruchamia 

elementy układu, które 

generuj

ą

 nowe 

odpowiedzi 

pobudzaj

ą

c do 

działania kolejne 

cz

ęś

ci systemu

10

Mariusz Rawski

background image

Wynik kompilacji kodu VHDL

Dokładnie jak 

zapisali

ś

my.

11

Mariusz Rawski

background image

Koncepcja realizacji architektury XOR

library

ieee;

use

ieee.std_logic_1164.

all

;

-- deklaracja jednostki

entity

even_detector_xor

is

port

(

in

std_logic_vector(2 

downto

0);

even

out

std_logic

);

end

even_detector_xor ;

Deklaracja sygnału – poł

ą

cze

ń

mi

ę

dzy wewn

ę

trznymi 

elementami

Deklaracja sygnału – poł

ą

cze

ń

mi

ę

dzy wewn

ę

trznymi 

elementami

Wprowadzenie sygnałów wej

ś

ciowych do wn

ę

trza układu

Wprowadzenie sygnałów wej

ś

ciowych do wn

ę

trza układu

x(2)

X

even

-- definicja architektury

architecture

xor_arch

of

even_detector_xor

is

signal

odd : std_logic;

begin

odd <= x(2) 

xor

x(1) 

xor

x(0);

even <= not odd; 

end

xor_arch ;

Współbie

ż

ne operacje wyobra

ż

aj

ą

 cz

ęś

ci układu działaj

ą

ce 

równolegle w  układzie

Współbie

ż

ne operacje wyobra

ż

aj

ą

 cz

ęś

ci układu działaj

ą

ce 

równolegle w  układzie

x(2)

x(1)

x(0)

not

odd

even

3

x(2) 

xor

x(1) 

xor

x(0)

odd

12

Mariusz Rawski

background image

Wynik kompilacji kodu VHDL

Dokładnie jak 

zapisali

ś

my.

13

Mariusz Rawski

background image

Opis strukturalny

library

ieee;

use

ieee.std_logic_1164.

all

;

-- deklaracja jednostki

entity

even_detector_str

is

port

(

in

std_logic_vector(2 

downto

0);

even : 

out

std_logic

);

end

even_detector_str ;

-- definicja architektury

architecture

structure

of

even_detector_str

is

-- deklaracja komponentow

component

not1

begin

-- konkretyzacja pierwszej bramki xor
xorgate1 : xor2

port map

(i1 => x(2), i2 => x(1), o1 => s1);

-- konkretyzacja drugiej bramki xor
xorgate2 : xor2

port map

(i1 => x(0), i2 => s1, o1 => s2);

-- konkretyzacja bramki not
notgate1 : not1

port map

(i1 => s2,o1 => even);

end

structure ;

component

not1

port

(

i1 : 

in

std_logic;

o1 : 

out

std_logic

);

end component

;

component

xor2

port(

i1, i2 : in std_logic;
o1     : out std_logic

);

end component

;

signal

s1, s2 : std_logic;

xor2

x(2)

x(1)

not1

even

X

3

xor2

x(0)

i1

i2

i1

i2

i1

o1

o1

o1

Deklaracja komponentów

Deklaracja komponentów

Konkretyzacja komponentów

Konkretyzacja komponentów

14

Mariusz Rawski

background image

Opis strukturalny

library

ieee;

use

ieee.std_logic_1164

.al

l;

-- deklaracja jednostki

entity

not1 

is

port

(

i1 : 

in

std_logic;

o1 : 

out

std_logic

);

end

not1 ;

-- definicja architektury

architecture

structure

of

not1 

is

begin

o1 <= 

not

i1; 

end

structure ;

library

ieee;

use

ieee.std_logic_1164

.all

;

-- deklaracja jednostki

entity

xor2 is

port

(

i1, i2 : 

in

std_logic;

o1     : 

out

std_logic

);

end

xor2 ;

-- definicja architektury

architecture

structure 

of

xor2 

is

begin

o1 <= i1 

xor

i2; 

end

structure ;

end

structure ;

end

structure ;

Konkretyzacja komponentów jest jedną z instrukcji współbieżnych

Architektura zawierająca jedynie instrukcje konkretyzacji jest swoistym sposobem 
tekstowego opisu schematu blokowego

Komponent może być istniejącym modułem lub hipotetycznym systemem, którey jest 
jeszcze niezaprojektowany

Opis strukturalny pozwala na projektowanie hierarchiczne – złożony system może być 
podzielony na mniejsze podsystemy, które są projektowane niezależnie i które mogą być 
dalej dzielone.

Strukturalna reprezentacja pozwala opisać rezultat syntezy – sieć bramek lub komórek

15

Mariusz Rawski

background image

Wynik kompilacji kodu VHDL

Dokładnie jak 

zapisali

ś

my. Jest 

nawet  zachowana 

hierarchia.

16

Mariusz Rawski

background image

Abstrakcyjny opis funkcjonalny

W przypadku dużych systemów implementacja może być bardzo skomplikowana

W początkowej fazie projektowania istnieje raczej potrzeba zbadania działania 
projektowanego systemu niż wymóg stworzenia rzeczywistego układu

Z tego względu, iż rozumowanie człowieka przypomina proces sekwencyjny, lepiej 
to odzwierciedlają klasyczne języki programowania 

VHDL udostępnia konstrukcję reprezentującą sekwencyjny proces z możliwością 
zastosowania zmiennych 

process

(lista_czułości)

process

(lista_czułości)

variable

definicja;

begin

instrukcje sekwencyjne;

end process

;

Lista czułości zawiera sygnały, których zmiana aktywuje proces

Instrukcje wewnątrz procesu są podobne do tradycyjnych języków programowania

Można wykorzystywać zmienne a wykonanie instrukcji jest sekwencyjne

17

Mariusz Rawski

background image

Opis funkcjonalny

library

ieee;

use

ieee.std_logic_1164

.al

l;

-- deklaracja jednostki

entity

even_detector_beh1 

is

port

(

in

std_logic_vector(2 

downto

0);

even : 

out

std_logic

);

end

even_detector_beh1 ;

-- definicja architektury

architecture

behavior

of

even_detector_beh1 

is

-- deklaracja sygnalu

signal

odd : std_logic;

x(2)

x(1)

not

odd

even

X

3

x(0)

process

(x)

variable

tmp : std_logic;

begin

tmp := '0';

for

i in 2 

downto

loop

tmp := tmp xor x(i);

end loop

;

odd <= tmp;

end process

;

signal

odd : std_logic;

begin

even <= not odd;

process

(x)

variable

tmp : std_logic;

begin

tmp := '0';

for

i in 2 

downto

loop

tmp := tmp

xor

x(i);

end loop

;

odd <= tmp;

end process

;

end

behavior ;

Proces opisuj

ą

cy sposób 

obliczenia nieparzysto

ś

ci liczby 

jedynek w wektorze 
wej

ś

ciowym

Proces opisuj

ą

cy sposób 

obliczenia nieparzysto

ś

ci liczby 

jedynek w wektorze 
wej

ś

ciowym

Jak mam zdecydowa

ć

 o tym 

czy liczba jedynek w wektorze 

binarnym jest parzysta to 

sprawdzaj

ą

c kolejne bity, z 

ka

ż

dym razem gdy znajd

ę

 

jedynk

ę

 zmieniam decyzj

ę

.

Jak mam zdecydowa

ć

 o tym 

czy liczba jedynek w wektorze 

binarnym jest parzysta to 

sprawdzaj

ą

c kolejne bity, z 

ka

ż

dym razem gdy znajd

ę

 

jedynk

ę

 zmieniam decyzj

ę

.

18

Mariusz Rawski

background image

Wynik kompilacji kodu VHDL

x(0)      x(2)      x(0)

Wygl

ą

da to dobrze.

19

Mariusz Rawski

background image

Opis funkcjonalny

library

ieee;

use

ieee.std_logic_1164

.al

l;

-- deklaracja jednostki

entity

even_detector_beh2 

is

port

(

in

std_logic_vector(2 downto 0);

even : 

out

std_logic

);

end

even_detector_beh2 ;

-- definicja architektury

architecture

behavior of even_detector_beh2 

is

begin

process

(x)

x(2)

x(1)

even

X

3

x(0)

process

(x)

variable

sum, r : integer;

begin

sum := 0;

for

in

downto

loop

if

(x(i) = '1') 

then

sum := sum + 1;

end if

;

end loop

;

r := sum mod 2;

if

(r = 0) 

then

even <= '1';

else

even <= '0';

end if

;

end process

;

process

(x)

variable

sum, r : integer;

begin

sum := 0;

for

in

downto

loop

if

(x(i) = '1') 

then

sum := sum + 1;

end if

;

end loop

;

r := sum mod 2;

if

(r = 0) 

then

even <= '1';

else

even <= '0';

end if

;

end process

;

end

behavior ;

Proces opisuj

ą

cy sposób 

obliczenia nieparzysto

ś

ci liczb 

jedynek w wektorze 
wej

ś

ciowym

Proces opisuj

ą

cy sposób 

obliczenia nieparzysto

ś

ci liczb 

jedynek w wektorze 
wej

ś

ciowym

Wystarczy policzy

ć

 ile jest 

jedynek w wektorze i liczb

ę

 

która wyjdzie wzi

ąć

 modulo 2. 

Jak b

ę

dzie 0 tzn. parzysta jak 

nie to nieparzysta

Wystarczy policzy

ć

 ile jest 

jedynek w wektorze i liczb

ę

 

która wyjdzie wzi

ąć

 modulo 2. 

Jak b

ę

dzie 0 tzn. parzysta jak 

nie to nieparzysta

20

Mariusz Rawski

background image

Wynik kompilacji kodu VHDL

Jak to wła

ś

ciwie działa?

21

Mariusz Rawski

background image

Testbench

Jednym z podstawowych zastosowań języka VHDL jest symulacja, gdzie bada się 
działanie układu dla zweryfikowania poprawności projektu.

Symulację można porównać do badania fizycznego układu, którego wejścia 
podłączamy do stymulatora (generatora testów) i obserwujemy wyjścia.

Symulacja kodu VHDL to wykonywanie wirtualnego eksperymentu, w którym 
fizyczny układ zastąpiono opisem VHDL.

Dodatkowo można wykorzystać VHDL do opisu generatora testów i modułu 
kolekcjonującego odpowiedzi układu i porównującego je ze wzorcem.

Mechanizm taki nosi nazwę testbench

Mechanizm taki nosi nazwę testbench

process

begin

test_vector <= "000";

wait for

100 ns;

test_vector <= "001";

wait for

100 ns;

test_vector <= "010";

wait for

100 ns;

test_vector <= "011";

wait for

100 ns;

test_vector <= "100";

wait for

100 ns;

test_vector <= "101";

wait for

100 ns;

test_vector <= "110";

wait for

100 ns;

test_vector <= "111";

wait for

100 ns;

end process

;

process

begin

test_vector <= "000";

wait for

100 ns;

test_vector <= "001";

wait for

100 ns;

test_vector <= "010";

wait for

100 ns;

test_vector <= "011";

wait for

100 ns;

test_vector <= "100";

wait for

100 ns;

test_vector <= "101";

wait for

100 ns;

test_vector <= "110";

wait for

100 ns;

test_vector <= "111";

wait for

100 ns;

end process

;

UUT

(Unit Under Test)

process

variable

error_response : 

boolean

;

begin

wait on

test_vector;

wait for

100 ns;

if

((test_vector = "000" 

and

response = '1') 

or

(test_vector = "001" 

and

response = '0') 

or

(test_vector = "010" 

and

response = '0') or

(test_vector = "011" 

and

response = '1') 

or

(test_vector = "100" 

and

response = '0') 

or

(test_vector = "101" 

and

response = '1') 

or

(test_vector = "110" 

and

response = '1') 

or

(test_vector = "111" 

and

response = '0')) 

then

error_response := 

false

;

else

error_response := 

true

;

end if

;

-- raportowanie bledu 

assert not

error_response

report

"Test zakonczyl sie niepowidzeniem."

severity

note;

end process

;

end

testbench

;

process

variable

error_response : 

boolean

;

begin

wait on

test_vector;

wait for

100 ns;

if

((test_vector = "000" 

and

response = '1') 

or

(test_vector = "001" 

and

response = '0') 

or

(test_vector = "010" 

and

response = '0') or

(test_vector = "011" 

and

response = '1') 

or

(test_vector = "100" 

and

response = '0') 

or

(test_vector = "101" 

and

response = '1') 

or

(test_vector = "110" 

and

response = '1') 

or

(test_vector = "111" 

and

response = '0')) 

then

error_response := 

false

;

else

error_response := 

true

;

end if

;

-- raportowanie bledu 

assert not

error_response

report

"Test zakonczyl sie niepowidzeniem."

severity

note;

end process

;

end

testbench

;

22

Mariusz Rawski

background image

Testbench

entity

even_detector_testbench

is

end

even_detector_testbench;

architecture

testbench

of

even_detector_testbench

is

-- deklaracja modulu poddanego testowi

component

even_detector

port

(

x       : 

in

std_logic_vector (2 

downto

0);

even : 

out

std_logic

);

end component

;

-- deklaracja sygnalow testow i odpowiedzi

signal

test_vector : std_logic_vector (2 

downto

0);

signal

response

: std_logic;

begin

-- konkretyzacja modułu poddanego testowi

-- generator testow

process
begin

test_vector <= "000";

wait for

100 ns;

test_vector <= "001";

wait for

100 ns;

test_vector <= "010";

wait for

100 ns;

test_vector <= "011";

wait for

100 ns;

test_vector <= "100";

wait for

100 ns;

test_vector <= "101";

wait for

100 ns;

test_vector <= "110";

wait for

100 ns;

test_vector <= "111";

-- weryfikator

process

variable

error_response : 

boolean

;

begin

wait on

test_vector;

wait for

100 ns;

if

((test_vector = "000" 

and

response = '1') 

or

(test_vector = "001" 

and

response = '0') 

or

(test_vector = "010" 

and

response = '0') or

(test_vector = "011" 

and

response = '1') 

or

(test_vector = "100" 

and

response = '0') 

or

(test_vector = "101" 

and

response = '1') 

or

(test_vector = "110" 

and

response = '1') 

or

(test_vector = "111" 

and

response = '0')) 

then

error_response := 

false

;

else

true

-- konkretyzacja modułu poddanego testowi

uut : even_detector

port map

(x => test_vector, even => response);

test_vector <= "111";

wait for

100 ns;

end process

;

error_response := 

true

;

end if

;

-- raportowanie bledu 

assert not

error_response

report

"Test zakonczyl sie niepowidzeniem."

severity

note;

end process

;

end

testbench

;

Konkretyzacja modułu 
poddawanego testowi i 
deklaracja sygnałów testów 
i odpowiedzi.

Konkretyzacja modułu 
poddawanego testowi i 
deklaracja sygnałów testów 
i odpowiedzi.

Generator testów generuje 
kolejne wektory testowe w 
zadanym rytmie

Generator testów generuje 
kolejne wektory testowe w 
zadanym rytmie

Weryfikator porównuje 
odpowiedzi  modułu 
poddawanego testowi ze 
wzorcami i w razie wykrycia 
niezgodno

ś

ci generuje 

raport

Weryfikator porównuje 
odpowiedzi  modułu 
poddawanego testowi ze 
wzorcami i w razie wykrycia 
niezgodno

ś

ci generuje 

raport

23

Mariusz Rawski

background image

Konfiguracja

W języku VHDL istnieje możliwość 
przypisania do jednostki projektowej 

entity

wielu architektur

Na etapie symulacji czy syntezy 
można wybrać która architektura ma 
być ‘podłączona’ do jednostki 
projektowej.

entity

architecture

architecture

architecture

configuration

config

of

even_detector_testbench

is

for

testbench

for

uut : even_detectod

use entity

work.even_detrector(xor_arch);

end for

;

end for

;

end

config;

24

Mariusz Rawski