Ćwiczenie nr 4. Symulacja układów cyfrowych w środowisku CADENCE
Część 1. Symulacja układów cyfrowych opisanych w postaci schematu logicznego, z wykorzystaniem symulatora Verilog-XL
Symulator Verilog-XL będący częścią pakietu Cadence umożliwia przeprowadzanie symulacji układów cyfrowych opisanych w języku Verilog, z wykorzystaniem dowolnej kombinacji dwóch sposobów opisu:
- Opis funkcjonalny, w którym definiuje się działanie układu przy pomocy wyrażeń logicznych, warunków, pętli, etc. (podobnie jak w programie napisanym np. w języku C).
- Opis strukturalny (hierarchiczny), w którym określa się z jakich elementów (lub podsystemów) układ się składa i jak są one ze sobą połączone (podobnie jak w pliku wejściowym CIR symulatora Spice).
Zazwyczaj stosuje się mieszany opis funkcjonalno-strukturalny. Jednak w skrajnym przypadku cały układ może być opisany w postaci strukturalnej (czyli
de facto jako hierarchiczny schemat), ale modele elementów znajdujących się na samym dnie hierarchii, takich jak bramki czy przerzutniki muszą być opisane w postaci behawioralnej (np. Z = not A dla bramki NOT). Tak więc opisanie układu w stu procentach w postaci strukturalnej nie jest możliwe. Możliwe jest natomiast opisanie układu wykorzystując jedynie opis funkcjonalny, ale ze względu na brak struktury hierarchicznej układ taki nie może być zbyt skomplikowany, dlatego w praktyce spotyka się to stosunkowo rzadko.
Tematem tej części ćwiczenia będzie symulacja dwóch układów opisanych w postaci schematu logicznego. Symulator
Verilog-XL potrafi automatycznie utworzyć opis strukturalny układu w języku Verilog na podstawie hierarchicznego schematu zapisanego w widokach schematic celek tworzących układ. Celki podstawowe mają zdefiniowane modele behawioralne. Jeżeli symulowany układ ma jakieś wejścia to przed przeprowadzeniem symulacji trzeba przygotować plik określający wymuszenia dla tych wejść (testbench) zwany test fixture. Plik ten wykorzystuje składnię języka Verilog oraz dodatkowe dyrektywy rozpoznawane przez symulator.
Razem z symulatorem Verilog-XL, w pakiecie Cadence IC Package jest zawarty program SimWave służący do graficznej prezentacji i obróbki wyników symulacji cyfrowych.
Jeden z symulowanych układów to 8-bitowy rejestr przesuwający ze zintegrowaną prostą jednostką arytmetyczno-logiczną (ALU).
Wejścia układu to:
- 8-bitowa wejściowa magistrala danych
IN
6-bitowa magistrala sterująca S określająca rodzaj wykonywanej operacji
asynchroniczne wejście kasujące CLEAR (aktywne zerem)
sygnał zegarowy CLK.
Wyjścia układu to:
gistrala danych OUT
bit przeniesienia wyjściowego C
Wykaz operacji możliwych do zrealizowania przy pomocy tego układu został przedstawiony w tabeli 1.
No |
symbol |
description |
operation |
C |
Hex |
1 |
ADC |
add with carry |
A f
A + D + C |
o
|
29 |
2 |
AND |
logical AND |
A f
A & D |
- |
3B |
3 |
ASLA |
arithmetic shift left |
C f
A(7)
A(7:1) f
A(6:0)
A(0) f
0 |
o
|
02 |
4 |
ASRA |
arithmentic shift right |
C f
A(0)
A(6:0) f
A(7:1) |
o
|
0C |
5 |
CLA |
clear accumulator contents |
A f
0 |
- |
33 |
6 |
CLC |
clear carry/borrow bit |
C f
0 |
0 |
01 |
7 |
DECA |
decrement accumulator |
A f
A – 1 |
o
|
2F |
8 |
INCA |
increment accumulator |
A f
A + 1 |
o
|
20 |
9 |
LAM1 |
load accumulator with minus one |
A f
– 1 |
1 |
23 |
10 |
LDA |
load accumulator with data bus contents |
A f
D |
- |
06 |
11 |
LDA1 |
load accumulator with one |
A f
1 |
- |
3C |
12 |
LDAC |
load accumulator and clear carry/borrow bit |
A f
D
C f
0 |
0 |
07 |
13 |
LOG1 |
extra logical function 1 |
A f
!A & D |
- |
32 |
14 |
LOG2 |
extra logical function 2 |
A f
A & !D |
- |
37 |
15 |
LOG3 |
extra logical function 3 |
A f
!A | D |
- |
38 |
16 |
LOG4 |
extra logical function 4 |
A f
A | !D |
- |
3D |
17 |
LSLA |
logical shift left |
C f
A(7)
A(7:1) f
A(6:0)
A(0) f
0 |
o
|
02 |
18 |
LSRA |
logical shift right |
C f
A(0)
A(6:0) f
A(7:1)
A(7) f
0 |
o
|
04 |
19 |
NAND |
logical NAND |
A f
!(A & D) |
- |
34 |
20 |
NLDA |
load accumulator with complemented data bus contents |
A f
!D |
- |
35 |
21 |
NOP |
no operation (idle) |
|
- |
00 |
22 |
NOR |
logical NOR |
A f
!(A | D) |
- |
31 |
23 |
NOT |
complement accumulator (ones complement) |
A f
!A |
- |
30 |
24 |
OR |
logical OR |
A f
A | B |
- |
3E |
25 |
ROLA |
rotate left through carry |
C f
A(7)
A(7:1) f
A(6:0)
A(0) f
C |
o
|
03 |
26 |
RORA |
rotate right through carry |
C f
A(0)
A(6:0) f
A(7:1)
A(7) f
C |
o
|
05 |
27 |
SBC |
subtract with borrow |
A f
A – D – C |
o
|
26 |
28 |
XNOR |
logical XNOR |
A f
!(A ^ D) |
- |
39 |
29 |
XOR |
logical XOR |
A f
A ^ D |
- |
36 |
Tab. 1
Objaśnienia
A accumulator register – arithmetic minus
D external input data bus ! logical NOT
C carry/borrow bit & logical AND
(i) register bit / bus pin | logical OR
(i:j) register/bus range ^ logical XOR
f
registered assignment - carry bit not affected
+ arithmetic plus o
carry bit set if true, cleared if not true
Drugim z symulowanych układów jest prosty układ kombinacyjny, wchodzący w skład pierwszego układu. Układ ten nosi oznaczenie
CBM (Carry Bit Multiplexer) i jego zadaniem jest dostarczanie odpowiedniego przeniesienia wejściowego dla jednostki arytmetyczno-logicznej, w zależności od wykonywanej operacji.
Laboratorium nr 1. Symulacja układu kombinacyjnego CBM w Verilog-XL
Przejść do podkatalogu digital w swoim katalogu domowym i uruchomić DF II poleceniem startcds &
Odszukać bibliotekę o nazwie Digital, a w niej celkę CBM i otworzyć widok schematic
Z menu okna Composer wybrać polecenie Tools -> Simulation -> Verilog-XL. Pojawi się wtedy formularz pokazany na rys. 1

rys. 1
Upewnić się, że formularz jest wypełniony zgodnie ze wzorem pokazanym na rysunku i kliknąć OK. Spowoduje to wyświetlenie okna Verilog-XL Integration Window
Z menu okna Verilog-XL Integration wybrać polecenie Setup -> Netlist... Spowoduje to wyświetlenie formularza pokazanego na rys. 2

rys. 2
W polu wyboru Netlisting Mode wybrać wariant Off
W polu Glocal Ground Nets zamiast GND! wpisać VSS!
Kliknąć OK aby powrócić do okna Verilog-XL Integration
Z menu wybrać polecenie Setup -> Simulation... Spowoduje to wyświetlenie formularza pokazanego na rys. 3

rys. 3
W polu Options File wpisać ścieżkę dostępu pokazaną na rysunku
Kliknąć OK aby powrócić do okna Verilog-XL Integration
Z menu wybrać polecenie Setup -> Record Signals... Spowoduje to wyświetlenie formularza pokazanego na rys. 4

rys. 4
W polu wyboru Save wybrać zamienić Primary I/O na wariant All Signals
Kliknąć OK aby powrócić do okna Verilog-XL Integration
Przeprowadzić wstępną symulację aby wygenerować i skompilować strukturalny opis (netlist) w języku Verilog oraz utworzyć pusty plik wymuszeń wejść (stimulus file)
- Z menu wybrać polecenie
Simulation -> Start Interactive
- Na pytanie, czy ma być utworzony opis strukturalny (
netlist) odpowiedzieć “tak”
- Po zainicjalizowaniu symulacji z menu wybrać polecenie
Simulation -> Continue aby ją zakończyć
Zamienić domyślny (pusty) plik wymuszeń testfixture.verilog na przygotowany wcześniej plik CBM.v
- Z menu okna Verilog-XL Integration wybrać polecenie Stimulus -> Verilog... Pojawi się wtedy formularz pokazany na rys. 5

rys. 5
- W polu wyboru Mode wybrać wariant Copy
- W polu File Name sekcji Copy From wpisać ścieżkę /ehome/vlsi/verilog/CBM.v
- W polu File Name sekcji Copy To wpisać nazwę pliku docelowego CBM.v
- Zaznaczyć opcję
Make Current Test Fixture u dołu formularza
- Kliknąć
Apply. Pole File Name w sekcji Copy To powinno zmienić się na okno tylko dla odczytu (ciemnoszare tło)
- Kliknąć jeszcze raz
Apply aby zapamiętać zmiany
- W polu wyboru Mode wybrać wariant Select
- W polu listy wybrać plik
CBM.v i kliknąć View File aby zapoznać się ze składnią pliku z wymuszeniami i zasadą generowania wektorów testujących
- Zamknąć okno wyświetlające zawartość pliku i kliknąć
OK aby powrócić do okna Verilog-XL Integration
Ponownie przeprowadzić symulację
- Zainicjalizować symulację poleceniem
Simulation -> Start Interactive
Uruchomić symulację poleceniem Simulation -> Continue i obserwować zawartość okna Verilog-XL Integration, w którym powinna wyświetlić się cała tablica prawdy układu.
Ewentualnie wprowadzić zmiany do pliku wymuszeń CBM.v i zaobserwować zmiany
Z menu okna Verilog-XL Integration wybrać polecenie Stimulus -> Verilog...
W polu wyboru Mode formularza wybrać wariant Edit
W polu listy zaznaczyć plik CBM.v i kliknąć OK aby uruchomić domyślny edytor z tym plikiem
Wprowadzić zmiany do pliku i zapisać go
Ponownie przeprowadzić symulację i obserwować wyniki
Laboratorium nr 2. Symulacja rejestru przesuwającego ze zintegrowaną jednostką ALU w symulatorze Verilog-XL oraz graficzna obróbka wyników z zastosowaniem programu SimWave
Odszukać bibliotekę o nazwie Digital, a w niej celkę CHIP i otworzyć widok schematic
Dla celki CHIP analogicznie powtórzyć kroki 3-8 z poprzedniej części ćwiczenia dotyczącej celki CBM
Zamienić domyślny (pusty) plik wymuszeń testfixture.verilog na przygotowany wcześniej plik CHIP.v
Z menu okna Verilog-XL Integration wybrać polecenie Stimulus -> Verilog... Pojawi się wtedy formularz pokazany na rys. 6

rys. 6
W polu wyboru Mode wybrać wariant Copy
W polu File Name sekcji Copy From wpisać ścieżkę /ehome/vlsi/verilog/CHIP.v
W polu File Name sekcji Copy To wpisać nazwę pliku docelowego CHIP.v
Zaznaczyć opcję Make Current Test Fixture u dołu formularza
Kliknąć Apply. Pole File Name w sekcji Copy To powinno zmienić się na okno tylko dla odczytu (ciemnoszare tło)
Kliknąć jeszcze raz Apply aby zapamiętać zmiany
W polu wyboru Mode wybrać wariant Select
W polu listy wybrać plik CHIP.v i kliknąć View File aby zapoznać się ze składnią pliku z wymuszeniami i zasadą generowania wektorów testujących
Zamknąć okno wyświetlające zawartość pliku i kliknąć OK aby powrócić do okna Verilog-XL Integration
Zmienić domyślną skalę czasową przeprowadzanej symulacji
- Przy pomocy dowolnego edytora tekstu otworzyć plik o nazwie
testfixture.template w podkatalogu digital/CHIP.run1, np. wpisując polecenie UNIX'a:
/usr/dt/bin/dtpad ~/digital/CHIP.run1/testfixture.template&
W pliku testfixture.template odszukać linię
`timescale 1ns / 1ns
Pierwszy parametr występujący po dyrektywie
`timescale jest domyślną jednostką czasu używaną przez symulator (i stosowaną w pliku wymuszeń). Drugi parametr oznacza rozdzielczość (dokładność) symulacji w dziedzinie czasu
Zwiększyć dokładność symulacji w dziedzinie czasu do 1 ps poprzez zmodyfikowanie wyżej wymienionej linii do postaci
`timescale 1ns / 1ps
Zapisać zmiany i zamknąć okno edytora
Ponownie przeprowadzić symulację
- Zainicjalizować symulację poleceniem Simulation -> Start Interactive
- Uruchomić symulację poleceniem
Simulation -> Continue
Obserwować zawartość okna Verilog-XL Integration (rys. 7), w którym powinny wyświetlić się rekordy odpowiadające kolejnym zboczom narastającym sygnału zegarowego CLK, przy których następuje wyzwolenie przerzutników rejestru. W skład tych rekordów wchodzą następujące pola:
- Czas w którym pojawiło się zbocze zegara
CLK wyzwalające przerzutniki
Stan wejściowej magistrali danych IN w chwili wyzwolenia przerzutników (w kodzie szesnastkowym)
Stan wejściowej magistrali sterującej S w chwili wyzwolenia przerzutników (w kodzie szesnastkowym)
Stan wyjściowej magistrali danych OUT będący rezultatem wykonywanej operacji (w kodzie szesnastkowym) oraz opóźnienie w stosunku do zbocza wyzwalającego (w ns)
Stan bitu przeniesienia wyjściowego C będący rezultatem wykonywanej operacji oraz jego opóźnienie w stosunku do zbocza wyzwalającego (w ns)
Zerowe opóźnienie oznacza, że stan danego sygnału lub magistrali nie zmienił się w wyniku wykonywanej operacji.

rys. 7
Z menu okna Verilog-XL Integration wybrać polecenie Debug -> Utilities -> View Waveform... Powinno pojawić się okno programu SimWave
Wyświetlić wybrane przebiegi czasowe
Z menu okna SimWave wybrać polecenie Edit -> Add Signals... Otworzy się wtedy okno SimWave Browser pokazane na rys. 8

rys. 8
W polu listy Instances kliknąć w obiekt test. W polu listy Signals powinna pokazać się lista przebiegów dostępnych w tym obiekcie
W polu listy Signals trzymając wciśnięty klawisz Ctrl zaznaczyć sygnały: C, CLEAR, CLK, IN, OUT oraz S (patrz rys. 8) i kliknąć przycisk znajdujący się na prawo od przycisku Close aby wyświetlić wybrane przebiegi
Kliknąć Close aby powrócić do okna głównego programu SimWave
Wciskać przycisk Zoom Out na pasku poniżej menu aż całe przebiegi staną się widoczne
Zmienić kolejność wyświetlanych przebiegów dla poprawy przejrzystości
- Zaznaczyć etykietę
test.C znajdującą się po lewej stronie przebiegu C i z menu wybrać polecenie Edit -> Cut
Z menu wybrać polecenie Edit -> Paste, w wyniku czego przebieg C powinien znaleźć się na końcu
Podobnie zaznaczyć etykietę test.S znajdującą się po lewej stronie przebiegu S i z menu wybrać polecenie Edit -> Cut
Zaznaczyć etykietę test.IN znajdujące się po lewej stronie przebiegu IN i z menu wybrać polecenie Edit -> Paste, w wyniki czego przebieg S powinien znaleźć się między przebiegami: CLK i IN
Wyrywkowo odczytać z wykresu opóźnienia przebiegów OUT oraz C w stosunku do wyzwalającego zbocza narastającego zegara CLK
Powiększyć fragment przebiegu tak, żeby było widoczne zbocze wyzwalające oraz miejsce, gdzie przebieg OUT lub C zmienia swój stan
Trzymając wciśnięty lewy przycisk myszy, przesunąć myszą pionową linię w kolorze czerwonym na zbocze wyzwalające (narastające) sygnału zegarowego
Podobnie trzymając wciśnięty prawy przycisk myszy, przesunąć myszą pionową linię w kolorze szarym na najbliższe miejsce po zboczu wyzwalającym, w którym przebieg wyjściowy zmienia stan
Odczytać opóźnienie wyświetlane jako wartość zmiennej D w prawym górnym rogu okna SimWave. Porównać otrzymaną wartość z odpowiednią wartością wyświetloną w oknie Verilog-XL Integration
Na podstawie rekordów wyświetlonych w oknie Verilog-XL Integration, przebiegów wyświetlonych w oknie SimWave oraz tabeli 1
- Określić i zanotować sekwencję wykonywanych operacji, wraz ich argumentami i wynikami pośrednimi
- Sprawdzić, czy wyniki tych operacji są poprawne
Część 2. Symulacja behawioralna układów cyfrowych opisanych w języku VHDL prz
y pomocy symulatora Leapfrog
Symulator Cadence Leapfrog umożliwia symulację behawioralną układów logicznych opisanych w języku VHDL. Podobnie jak w przypadku języka Verilog i wspomnianego wcześniej symulatora Verilog- XL, układ może być opisany w postaci czysto funkcjonalnej lub mieszanej.
Również tak jak w przypadku
Verilog-XL, do graficznej prezentacji i obróbki wyników jest wykorzystywany program SimWave.
W odróżnieniu od symulatora
Verilog-XL, który można uruchomić ze środowiska Design Framework II, program Leapfrog raczej należy uruchamiać osobno, z linii poleceń UNIX'a.
Przedmiotem tej części ćwiczenia będzie symulacja logiczna (na poziomie behawioralnym) prostego układu sumatora 8-bitowego. Dla uzyskania maksymalnego uproszczenia i maksymalnej przejrzystości, w tym ćwiczeniu nie są wykorzystywane żadne biblioteki, poza biblioteką standardową definiującą elementarne typy danych i funkcje języka VHDL. W szczególności, nie używa się tutaj żadnych bibliotek specyficznych dla technologii.
Laboratorium nr 3. Symulacja sumatora 8-bitowego w symulatorze Leapfrog
Z linii poleceń UNIX'a przejść do katalogu vhdl w swoim katalogu domowym i uruchomić program Leapfrog poleceniem startlfr &
Po uruchomieniu programu po raz pierwszy pojawi się formularz pokazany na rys
. 9

rys. 9
Wybrać wariant Create a New Workarea... i kliknąć OK. Wtedy pojawi się formularz tworzenia nowego obszaru roboczego (work area), pokazany na rys. 10

rys. 10
Nadać nowemu obszarowi roboczemu jakąś nazwę, np. Work1 i kliknąć OK. Wtedy na ekranie pokaże się okno główne programu Leapfrog
Utworzyć nową bibliotekę o nazwie adder
Z menu głównego wybrać polecenie File -> New Library... Na ekranie pokaże się okno edytora ścieżek dostępu do bibliotek (rys. 11)

rys. 11
Z menu tego edytora Edit Library Path wybrać polecenie Edit -> Add Library...
W polu Name formularza (rys. 12) wpisać adder i kliknąć OK aby powrócić do okna edytora ścieżek dostępu do bibliotek. Na końcu listy powinna pojawić się ścieżka dostępu do biblioteki adder, która powinna wyglądać mniej więcej tak jak na rys. 11

rys. 12
Z menu okna z rys. 11 najpierw wybrać polecenie File -> Save aby zapisać zmiany, a następnie polecenie File -> Edit aby opuścić edytor
W polu wyboru Library okna głównego programu Leapfrog wybrać bibliotekę adder
Ustawić bibliotekę adder jako bibliotekę aktywną
- Z menu głównego wybrać polecenie
Setup -> Work Library...
W polu wyboru Library formularza (rys. 13) wybrać bibliotekę adder i kliknąć OK

rys. 13
W oknie Directory znajdującym się po prawej stronie okna głównego, przejść do katalogu /ehome/vlsi/vhdl. Powinny się w nim pokazać pliki: Adder.vhd, NBitAdder.vhd i 8BitAdder.vhd (rys. 14)

rys. 14
Zaimportować gotowe pliki źródłowe VHDL definiujące działanie sumatora
- Trzymając wciśnięty klawisz
Ctrl, w oknie Directories zaznaczyć pliki: Adder.vhd, NBitAdder.vhd oraz 8BitAdder.vhd (rys. 14)
Z menu głównego wybrać polecenie File -> Import -> VHDL...
W oknie formularza (rys. 15) kliknąć OK aby zaimportować zaznaczone pliki

rys. 15
Po zaimportowaniu plików, w oknie Library znajdującym się po lewej stronie okna głównego powinny pojawić się celki: adder, adder8 oraz nbitadder (rys. 16)

rys. 16
Zmienić domyślny edytor tekstu wykorzystywany przez program Leapfrog
Z menu głównego wybrać polecenie View -> Notebook Options
W polu Text Editor formularza (rys. 17) zamiast edytora vi wpisać ścieżkę dostępu do dowolnego edytora pracującego w trybie graficznym, np. /usr/dt/bin/dtpad

rys. 17
Kliknąć OK aby powrócić do okna głównego
Skompilować zaimportowane celki
W oknie Library kliknąć podwójnie w celkę adder, w wyniku czego powinna się ona rozwinąć na dwie części:
- Definicję zewnętrznych terminali celki (entity definition): \entity\
- Definicji architektury celki (architecture definition): Structure
Zaznaczyć sekcję \entity\ i z menu głównego wybrać polecenie Tools -> Compile...
W formularzu (rys. 18) kliknąć OK aby rozpocząć kompilację i obserwować jej rezultaty w oknie znajdującym się u dołu okna głównego

rys. 18
Jeżeli kompilacja celki adder zakończyła się bez błędów, w analogiczny sposób skompilować celki: nbitadder i adder8. Zamiast wywoływania polecenia Tools -> Compile... można skorzystać z polecenia Compile z menu kontekstowego, rozwijanego przez wciśnięcie prawego przycisku myszy lub z odpowiedniego przycisku na pasku poniżej menu głównego
Automatycznie wygenerować celkę służącą do testowania sumatora (testbench)
- Z menu głównego wybrać polecenie
Utilities -> Testbench... Pojawi się formularz pokazany na rys. 19

rys. 19
- W polu Design Unit wpisać nazwę celki znajdującej się na najwyższym poziomie struktury sumatora (top-level unit), poprzedzonej nazwą biblioteki, czyli adder.adder8
- W polu Output Unit wpisać nazwę generowanej celki testującej, poprzedzonej nazwą biblioteki, czyli adder.testbench
- Kliknąć
OK aby utworzyć testbench i powrócić do okna głównego
Zmodyfikować automatycznie wygenerowany testbench
- W oknie Library zaznaczyć celkę testbench i kliknąć w nią podwójnie, w wyniku czego powinna się ona rozwinąć na dwie sekcje: \entity\ oraz architekturę bench
- Zaznaczyć architekturę bench i otworzyć odpowiadający jej plik źródłowy poprzez dwukrotne kliknięcie lewym przyciskiem myszy lub wybranie polecenia Edit z menu kontekstowego, rozwijanego przez wciśnięcie prawego przycisku myszy (rys. 20). Powinno pojawić się okno domyślnego edytora wraz z zawartością pliku

rys. 20
- Do kodu źródłowego architektury
bench dopisać dwa fragmenty zaznaczone drukiem wytłuszczonym w poniższym listingu
architecture bench of testbench is
component Adder8
port( A : in BIT_VECTOR( 7 downto 0 ) ;
B : in BIT_VECTOR( 7 downto 0 ) ;
cin : in BIT ;
Y : out BIT_VECTOR( 7 downto 0 ) ;
cout : out BIT) ) ;
end component ;
signal t_A : BIT_VECTOR( 7 downto 0 ) ;
signal t_B : BIT_VECTOR( 7 downto 0 ) ;
signal t_cin : BIT ;
signal t_Y : BIT_VECTOR( 7 downto 0 ) ;
signal t_cout : BIT ;
begin
top : Adder8
port map ( A => t_A ,
B => t_B ,
cin => t_cin ,
Y => t_Y ,
cout => t_cout ) ;
t_cin <= '0' after 0 ns,
'1' after 1 ns,
'0' after 2 ns,
'1' after 3 ns;
t_A <= "00001111" after 0 ns,
"11111111" after 2 ns;
t_B <= "00001010" after 0 ns,
"00000001" after 2 ns;
test_driver: process
begin
wait for 4 ns;
assert false report "Finished simulation" severity failure;
end process test_driver;
end bench;
- Zapisać zmiany w pliku
Skompilować najpierw sekcję entity celki testbench, a następnie je architekturę bench. Obserwować, czy w oknie znajdującym się u dołu okna głównego nie pojawiają się błędy
Dokonać elaboracji (czyli przygotowania do symulacji) celki testbench
- W oknie Library zaznaczyć sekcję entity celki testbench
- Z menu głównego wybrać polecenie
Tools -> Elaborate...
- W formularzu (rys. 21) kliknąć
OK i obserwować postęp elaboracji w oknie u dołu okna głównego. Po pomyślnie zakończonej elaboracji, w sekcji bench celki testbench powinna pojawić się podsekcja sim (rys. 22)

rys. 21
Uruchomić symulator
W oknie Library zaznaczyć podsekcję sim celki testbench
Z menu głównego wybrać polecenie Tools -> Simulate... Można też skorzystać z menu kontekstowego lub z przycisku na pasku pod menu głównym (rys. 22)

rys. 22
W formularzu (rys. 23) kliknąć OK aby uruchomić symulator

rys. 23
Uaktywnić rejestrowanie i wyświetlanie wszystkich przebiegów na wykresie
- W oknie symulatora, w polu oznaczonym etykietą
Scope nacisnąć i przytrzymać prawy przycisk myszy aby wywołać menu kontekstowe
Z menu kontekstowego wybrać polecenie Set Trace -> Simple (rys. 24). Na ekranie pojawi się okno programu SimWave

rys. 24
Przejść z powrotem do okna symulatora i uruchomić symulację przez kliknięcie przycisku Run znajdującego się po lewej stronie okna. Obserwować postęp symulacji w oknie u dołu.
Przejść do okna programu SimWave i dobrać taką skalę czasu, żeby całe przebiegi były widoczne na wykresie. Sprawdzić, czy dla wybranych wymuszeń układ zadziałał poprawnie.
Ewentualnie zmodyfikować wymuszenia w architekturze bench celki testbench i ponownie przesymulować układ
Opuścić program SimWave wybierając z jego menu polecenie File -> Window -> Exit
Zamknąć okno symulatora poleceniem Window -> Quit
Opuścić program Leapfrog wywołując z menu polecenie File -> Exit Notebook