Ć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:

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:

Wyjścia układu to:

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

  1. Przejść do podkatalogu digital w swoim katalogu domowym i uruchomić DF II poleceniem startcds &
  2. Odszukać bibliotekę o nazwie Digital, a w niej celkę CBM i otworzyć widok schematic
  3. Z menu okna Composer wybrać polecenie Tools -> Simulation -> Verilog-XL. Pojawi się wtedy formularz pokazany na rys. 1
  4. rys. 1

  5. 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
  6. Z menu okna Verilog-XL Integration wybrać polecenie Setup -> Netlist... Spowoduje to wyświetlenie formularza pokazanego na rys. 2
  7. rys. 2

    1. W polu wyboru Netlisting Mode wybrać wariant Off
    2. W polu Glocal Ground Nets zamiast GND! wpisać VSS!
    3. Kliknąć OK aby powrócić do okna Verilog-XL Integration

  8. Z menu wybrać polecenie Setup -> Simulation... Spowoduje to wyświetlenie formularza pokazanego na rys. 3
  9. rys. 3

    1. W polu Options File wpisać ścieżkę dostępu pokazaną na rysunku
    2. Kliknąć OK aby powrócić do okna Verilog-XL Integration

  10. Z menu wybrać polecenie Setup -> Record Signals... Spowoduje to wyświetlenie formularza pokazanego na rys. 4
  11. rys. 4

    1. W polu wyboru Save wybrać zamienić Primary I/O na wariant All Signals
    2. Kliknąć OK aby powrócić do okna Verilog-XL Integration

  12. Przeprowadzić wstępną symulację aby wygenerować i skompilować strukturalny opis (netlist) w języku Verilog oraz utworzyć pusty plik wymuszeń wejść (stimulus file)
    1. Z menu wybrać polecenie Simulation -> Start Interactive
    2. Na pytanie, czy ma być utworzony opis strukturalny (netlist) odpowiedzieć “tak”
    3. Po zainicjalizowaniu symulacji z menu wybrać polecenie Simulation -> Continue aby ją zakończyć

  13. Zamienić domyślny (pusty) plik wymuszeń testfixture.verilog na przygotowany wcześniej plik CBM.v
    1. Z menu okna Verilog-XL Integration wybrać polecenie Stimulus -> Verilog... Pojawi się wtedy formularz pokazany na rys. 5
    2. rys. 5

    3. W polu wyboru Mode wybrać wariant Copy
    4. W polu File Name sekcji Copy From wpisać ścieżkę /ehome/vlsi/verilog/CBM.v
    5. W polu File Name sekcji Copy To wpisać nazwę pliku docelowego CBM.v
    6. Zaznaczyć opcję Make Current Test Fixture u dołu formularza
    7. Kliknąć Apply. Pole File Name w sekcji Copy To powinno zmienić się na okno tylko dla odczytu (ciemnoszare tło)
    8. Kliknąć jeszcze raz Apply aby zapamiętać zmiany
    9. W polu wyboru Mode wybrać wariant Select
    10. 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
    11. Zamknąć okno wyświetlające zawartość pliku i kliknąć OK aby powrócić do okna Verilog-XL Integration

  14. Ponownie przeprowadzić symulację
    1. Zainicjalizować symulację poleceniem Simulation -> Start Interactive
    2. 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.

  15. Ewentualnie wprowadzić zmiany do pliku wymuszeń CBM.v i zaobserwować zmiany
    1. Z menu okna Verilog-XL Integration wybrać polecenie Stimulus -> Verilog...
    2. W polu wyboru Mode formularza wybrać wariant Edit
    3. W polu listy zaznaczyć plik CBM.v i kliknąć OK aby uruchomić domyślny edytor z tym plikiem
    4. Wprowadzić zmiany do pliku i zapisać go
    5. 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

  1. Odszukać bibliotekę o nazwie Digital, a w niej celkę CHIP i otworzyć widok schematic
  2. Dla celki CHIP analogicznie powtórzyć kroki 3-8 z poprzedniej części ćwiczenia dotyczącej celki CBM
  3. Zamienić domyślny (pusty) plik wymuszeń testfixture.verilog na przygotowany wcześniej plik CHIP.v
    1. Z menu okna Verilog-XL Integration wybrać polecenie Stimulus -> Verilog... Pojawi się wtedy formularz pokazany na rys. 6
    2. rys. 6

    3. W polu wyboru Mode wybrać wariant Copy
    4. W polu File Name sekcji Copy From wpisać ścieżkę /ehome/vlsi/verilog/CHIP.v
    5. W polu File Name sekcji Copy To wpisać nazwę pliku docelowego CHIP.v
    6. Zaznaczyć opcję Make Current Test Fixture u dołu formularza
    7. Kliknąć Apply. Pole File Name w sekcji Copy To powinno zmienić się na okno tylko dla odczytu (ciemnoszare tło)
    8. Kliknąć jeszcze raz Apply aby zapamiętać zmiany
    9. W polu wyboru Mode wybrać wariant Select
    10. 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
    11. Zamknąć okno wyświetlające zawartość pliku i kliknąć OK aby powrócić do okna Verilog-XL Integration

  4. Zmienić domyślną skalę czasową przeprowadzanej symulacji
    1. Przy pomocy dowolnego edytora tekstu otworzyć plik o nazwie testfixture.template w podkatalogu digital/CHIP.run1, np. wpisując polecenie UNIX'a:
    2. /usr/dt/bin/dtpad ~/digital/CHIP.run1/testfixture.template&

    3. W pliku testfixture.template odszukać linię
    4. `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

    5. Zwiększyć dokładność symulacji w dziedzinie czasu do 1 ps poprzez zmodyfikowanie wyżej wymienionej linii do postaci
    6. `timescale 1ns / 1ps

    7. Zapisać zmiany i zamknąć okno edytora

  5. Ponownie przeprowadzić symulację
    1. Zainicjalizować symulację poleceniem Simulation -> Start Interactive
    2. Uruchomić symulację poleceniem Simulation -> Continue

  6. 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:

Zerowe opóźnienie oznacza, że stan danego sygnału lub magistrali nie zmienił się w wyniku wykonywanej operacji.

rys. 7

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

    3. W polu listy Instances kliknąć w obiekt test. W polu listy Signals powinna pokazać się lista przebiegów dostępnych w tym obiekcie
    4. 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
    5. Kliknąć Close aby powrócić do okna głównego programu SimWave

  3. Wciskać przycisk Zoom Out na pasku poniżej menu aż całe przebiegi staną się widoczne
  4. Zmienić kolejność wyświetlanych przebiegów dla poprawy przejrzystości
    1. Zaznaczyć etykietę test.C znajdującą się po lewej stronie przebiegu C i z menu wybrać polecenie Edit -> Cut
    2. Z menu wybrać polecenie Edit -> Paste, w wyniku czego przebieg C powinien znaleźć się na końcu
    3. Podobnie zaznaczyć etykietę test.S znajdującą się po lewej stronie przebiegu S i z menu wybrać polecenie Edit -> Cut
    4. 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

  5. Wyrywkowo odczytać z wykresu opóźnienia przebiegów OUT oraz C w stosunku do wyzwalającego zbocza narastającego zegara CLK
    1. Powiększyć fragment przebiegu tak, żeby było widoczne zbocze wyzwalające oraz miejsce, gdzie przebieg OUT lub C zmienia swój stan
    2. Trzymając wciśnięty lewy przycisk myszy, przesunąć myszą pionową linię w kolorze czerwonym na zbocze wyzwalające (narastające) sygnału zegarowego
    3. 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
    4. 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

  6. Na podstawie rekordów wyświetlonych w oknie Verilog-XL Integration, przebiegów wyświetlonych w oknie SimWave oraz tabeli 1
    1. Określić i zanotować sekwencję wykonywanych operacji, wraz ich argumentami i wynikami pośrednimi
    2. Sprawdzić, czy wyniki tych operacji są poprawne

Część 2. Symulacja behawioralna układów cyfrowych opisanych w języku VHDL przy 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

  1. Z linii poleceń UNIX'a przejść do katalogu vhdl w swoim katalogu domowym i uruchomić program Leapfrog poleceniem startlfr &
  2. Po uruchomieniu programu po raz pierwszy pojawi się formularz pokazany na rys. 9

    rys. 9

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

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

    3. Z menu tego edytora Edit Library Path wybrać polecenie Edit -> Add Library...
    4. 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
    5. rys. 12

    6. Z menu okna z rys. 11 najpierw wybrać polecenie File -> Save aby zapisać zmiany, a następnie polecenie File -> Edit aby opuścić edytor

  7. W polu wyboru Library okna głównego programu Leapfrog wybrać bibliotekę adder
  8. Ustawić bibliotekę adder jako bibliotekę aktywną
    1. Z menu głównego wybrać polecenie Setup -> Work Library...
    2. W polu wyboru Library formularza (rys. 13) wybrać bibliotekę adder i kliknąć OK

    rys. 13

  9. 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)
  10. rys. 14

  11. Zaimportować gotowe pliki źródłowe VHDL definiujące działanie sumatora
    1. Trzymając wciśnięty klawisz Ctrl, w oknie Directories zaznaczyć pliki: Adder.vhd, NBitAdder.vhd oraz 8BitAdder.vhd (rys. 14)
    2. Z menu głównego wybrać polecenie File -> Import -> VHDL...
    3. 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

  12. Zmienić domyślny edytor tekstu wykorzystywany przez program Leapfrog
    1. Z menu głównego wybrać polecenie View -> Notebook Options
    2. 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
    3. rys. 17

    4. Kliknąć OK aby powrócić do okna głównego

  13. Skompilować zaimportowane celki
    1. W oknie Library kliknąć podwójnie w celkę adder, w wyniku czego powinna się ona rozwinąć na dwie części:
    2. Zaznaczyć sekcję \entity\ i z menu głównego wybrać polecenie Tools -> Compile...
    3. W formularzu (rys. 18) kliknąć OK aby rozpocząć kompilację i obserwować jej rezultaty w oknie znajdującym się u dołu okna głównego
    4. rys. 18

    5. 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

  14. Automatycznie wygenerować celkę służącą do testowania sumatora (testbench)
    1. Z menu głównego wybrać polecenie Utilities -> Testbench... Pojawi się formularz pokazany na rys. 19
    2. rys. 19

    3. 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
    4. W polu Output Unit wpisać nazwę generowanej celki testującej, poprzedzonej nazwą biblioteki, czyli adder.testbench
    5. Kliknąć OK aby utworzyć testbench i powrócić do okna głównego

  15. Zmodyfikować automatycznie wygenerowany testbench
    1. 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
    2. 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
    3. rys. 20

    4. Do kodu źródłowego architektury bench dopisać dwa fragmenty zaznaczone drukiem wytłuszczonym w poniższym listingu
    5. 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;

    6. Zapisać zmiany w pliku

  16. 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
  17. Dokonać elaboracji (czyli przygotowania do symulacji) celki testbench
    1. W oknie Library zaznaczyć sekcję entity celki testbench
    2. Z menu głównego wybrać polecenie Tools -> Elaborate...
    3. 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

  18. Uruchomić symulator
    1. W oknie Library zaznaczyć podsekcję sim celki testbench
    2. 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)
    3. rys. 22

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

    rys. 23

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

    rys. 24

  20. 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.
  21. 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.
  22. Ewentualnie zmodyfikować wymuszenia w architekturze bench celki testbench i ponownie przesymulować układ
  23. Opuścić program SimWave wybierając z jego menu polecenie File -> Window -> Exit
  24. Zamknąć okno symulatora poleceniem Window -> Quit
  25. Opuścić program Leapfrog wywołując z menu polecenie File -> Exit Notebook