Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Podobné dokumenty
Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Programovací jazyk Pascal

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Koncept pokročilého návrhu ve VHDL. INP - cvičení 2

Struktura a architektura počítačů (BI-SAP) 10

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

Struktura a architektura počítačů (BI-SAP) 3

7. Popis konečného automatu

NPRG030 Programování I, 2015/16 1 / :25:32

Praktické úlohy- 2.oblast zaměření

12. VHDL pro verifikaci - Testbench I

Profilová část maturitní zkoušky 2017/2018

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

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

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

14. Složitější konstrukce

Úvod do jazyka VHDL. Jan Kořenek Návrh číslicových systémů

Souhrn Apendixu A doporučení VHDL

Příklady popisu základních obvodů ve VHDL

Úvod do programování

NPRG030 Programování I, 2010/11

VISUAL BASIC. Přehled témat

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:

Princip funkce počítače

Profilová část maturitní zkoušky 2013/2014

NPRG030 Programování I, 2016/17 1 / :58:13

Vstupní požadavky, doporučení a metodické pokyny

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

3. Sekvenční logické obvody

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

3 Co je algoritmus? Trocha historie Definice algoritmu Vlastnosti algoritmu... 3

PCKIT LPT MODUL SBĚRNICE IOBUS PRO PC LPT. Příručka uživatele. Střešovická 49, Praha 6, s o f c o s o f c o n.

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

O datových typech a jejich kontrole

Principy komunikace s adaptéry periferních zařízení (PZ)

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y Rovnicí y = x 1. Přiřazení signálů:

Sada 1 - Základy programování

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y. Rovnicí y = x 1. x 0. Přiřazení signálů: ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Algoritmizace a programování

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Lekce 01 Úvod do algoritmizace

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Basic256 - úvod do programování Příklady. ing. petr polách

Zápis programu v jazyce C#

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

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

1. D Y N A M I C K É DAT O V É STRUKTUR Y

Funkce, intuitivní chápání složitosti

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

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

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Anotace. Soubory a práce s nimi, rekurze podruhé, struktury (datový typ record), Martin Pergel,

zení Koncepce připojení V/V zařízení POT POT ... V/V zařízení jsou připojena na sběrnici pomocí řadičů. Řadiče Připojení periferních zařízení

Číslicové obvody a jazyk VHDL

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

Úvod do programování - Java. Cvičení č.4

Popis funkcí a parametrů programu. Reliance External communicator. Verze 1.5.0

Sdílení dat mezi podprogramy

Časová a prostorová složitost algoritmů

1 Smíšené digitálně-analogové simulace

dovolují dělení velkých úloh na menší = dekompozice

Spojová implementace lineárních datových struktur

Počítačová simulace logistických procesů I. 11. přednáška Programování v SimTalk. ŠAVŠ, Fábry

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Řídicí struktury. alg3 1

Struktura a architektura počítačů (BI-SAP) 11

7.6 Další diagramy UML

Paralelní programování

7.6 Další diagramy UML

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Metody připojování periferií BI-MPP Přednáška 2

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Programování 2 (NMIN102) Soubory. RNDr. Michal Žemlička, Ph.D.

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Práce se soubory. Základy programování 2 Tomáš Kühr

Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na

Systém adresace paměti

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Úvod do programovacích jazyků (Java)

Základní znaky. - Ve srovnání se Spice jsou velmi složité a vyžadují dlouhou dobu na plné osvojení. - Velmi nákladné simulační programy.

Transkript:

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011 Jiří Douša, katedra číslicového návrhu (K18103), České vysoké učení technické v Praze, fakulta informačních technologií Přednáška 11: VERILOG - abstraktní události, funkce a procedury Stručný obsah: použití abstraktních událostí pro synchronizaci procersů (producent- konsument), specifikace uživatelských funkcí a procedur, systémové procedury.

Příklad: producent - konsument module M ; integer buffer; integer NDATA = 0; reg start = 1; // výstupní buffer producenta // indikátor plného bufferu // indikátor pro počáteční naplnění bufferu always begin: PROD // producent integer gener; #.; gener = gener + 1; // příprava dat if (start==1) begin start = 0; gener = 0; else if (NDATA==1) @(negedge NDATA); #.; buffer = gener; // zápis do bufferu NDATA = 1; // plný buffer always begin: KONS // konsument integer data; if (NDATA == 0) @ (posedge NDATA); #..; data = buffer; // čtení dat NDATA = 0 ; #..; $display (" data = %d", d); // zpracování dat module 10.1.2012 MI-SIM Jiří Douša 2

Abstraktní události Named events: mechanismus pro vzájemnou synchronizaci prosesů uvnitř modulu nebo mezi různými moduly deklarace události: event { <identifikátor události >,..} vznik : provedení sekvenčního příkazu -> <identifikátor události> ; indikace abstraktní události: @ < identifikátor události > Příklad: producent konsument ( procesy v témž modulu ) module M ; event precteno, zapsano; integer buffer; integer NDATA = 0; reg start = 1; // deklarace abstraktních událostí always begin: PROD integer gener; // producent # ; gener = gener + 1; if (start==1) begin start = 0; gener = 0; else if (NDATA==1) @(precteno); # ; buffer = gener; NDATA = 1; -> zapsano; always begin: KONS integer data; // konsument module if (NDATA == 0)@ (zapsano); # ; data = buffer; // čtení dat NDATA = 0; -> precteno ; # ; $display (" data =%d",data); // zpracování dat 10.1.2012 MI-SIM Jiří Douša 3

Abstraktní události Příklad: producent konsument ( procesy v různých modulech) module prod( output reg [2:0] buf ) ; event zapsano; reg start = 1; always begin: PROD integer gener; // producent # 4; gener = gener + 1; if (start==1) begin start = 0; gener = 0; else if (MPK.NDATA==1) @ (MPK. ko. precteno ); # 4 buf = gener; MPK.NDATA = 1; -> zapsano; module module kons( input [2:0] buf ); event precteno; always begin: KONS integer data; // konsument if (MPK.NDATA == 0)@ (MPK. pr. zapsano ); # 2 data = buf; //čtení dat MPK.NDATA = 0; -> precteno ; # 2 $display (" data =%d",data); module module MPK; wire [2:0] buffer; reg NDATA =0; prod pr (buffer ); kons ko (buffer ); module 10.1.2012 MI-SIM Jiří Douša 4

Procedury deklarace: uvnitř modulu, volání: pouze v procesu always nebo initial, uvnitř procedury je možné deklarovat lokální proměnné, uvnitř procedury jsou viditelné proměnné modulu, V1995: statické přidělování paměti po dobu simulace => lokální proměnné zachovávají hodnoty, V2001: dynamické přidělování paměti => umožňuje rekursivní volání ( viz automatic), neuvedený typ parametru je implicitně uvažován jako reg, vstupní parametry: volané hodnotou při volání procedury, výstupní parametry: hodnota předána při výstupu z procedury Syntax deklarace: task [ automatic ] < identifikátor procedury> [ ( <deklarace portu, >); ] // pouze V01 [ < deklarace portu >, ; ] // V95 I V01 < lokální deklarace >; < příkazy > task < deklarace portu > ::= <mód> < datový typ > < seznam identifikátorů > <mód> ::= input output inout < datový typ > ::= reg [signed ] time real realtime integer < lokální deklarace > ::= parameter reg [ signed ] integer real realtime time event 10.1.2012 MI-SIM Jiří Douša 5

Procedury: příklad deklarace module M (...); task sum 16; // deklarace procedury pro VERILOG 1995 output [ 15 : 0 ] sum ; output c_out ; // parametry input [ 15 : 0 ] a, b ; input c_in ; // parametry { c_out, sum } = a + b + c_in ; // operační část task reg [ 15 : 0] soucet, x, y ; reg prenos, c ; // následuje příklad použití procedury v procesu always @ (. ) begin..; sum16 ( soucet, prenos, x, y, c ); // příkaz procedury.; module // jiné přípustné varianty deklarací ( pro VERILOG 2001 ) task sum16 ( output [ 15 : 0 ] sum, output c_out, input [ 15 : 0 ] a, b input c_in ) ; { c_out, sum } = a + b + c_in ; task task sum16 ( output [ 16 : 0 ] s, input [ 15 : 0 ] a, b input c_in ) ; s = a + b + c_in ; task 10.1.2012 MI-SIM Jiří Douša 6

Procedury Poznámka: při opakovaném volání je proceduře (pokud není automatic) přidělována stejná paměť pro parametry i lokální proměnné => problémy pokud v těle procedury je zpoždění Příklad: task write ( input [ 7 : 0] adr ; input [ 7 : 0 ] data ) ; begin adrbus = adr; // zápis na adresovou sběrnici #6 databus = data; // zápis na datovou sběrnici task // následuje nebezpečné opakované volání initial begin write ( 8 h30, 8 h00) ; #2 write ( 8 h10, 8 hff) ; // následuje možná indikace násobného volání task write ( input [ 7 : 0] adr ; input [ 7 : 0 ] data ) ; reg p; begin if ( p==1 b1) $stop; // neukončené předchozí volání p = 1 b1; // příznak zahájení operace adrbus = adr; #6 databus = data; p = 1 b0; task // indikace ukončení 10.1.2012 MI-SIM Jiří Douša 7

Procedury Poznámka : norma nespecifikuje výstup procedury v případě jejího ukončení příkazem disable Příklad: task read ( input cs, i ; output [ 7 : 0 ] o ) ; begin..; if ( cs ===1 b1 ) begin o = i; disable read; // ukončení procedury s // nedefinovaným výstupem task // následuje aplikace příkazu disable na vnitřní blok procedury => // výstup bude přiřazen task read ( input cs, i ; output [ 7 : 0 ] o ) ; begin : BL..; if ( cs ===1 b1 ) begin o = i; disable BL; // ukončení bloku: výstup OK task 10.1.2012 MI-SIM Jiří Douša 8

Funkce deklarace v modulu, volání: v jakémkoliv výrazu ( sekvenční i paralelní prostředí), deklarace funkce nesmí obsahovat port typu output nebo inout, musí obsahovat alespoň jeden port typu input, funkce nesmí obsahovat operátory @, # nebo příkaz wait (..), funkce nesmí volat proceduru, volání funkcí je možné: rekurzivně (pouze ve V01), uvnitř funkce je možné deklarovat lokální proměnné, uvnitř funkce jsou viditelné proměnné modulu, neuvedený typ parametru je implicitně uvažován jako reg V1995: funkce jsou statické, pouze funkce typu integer vrací hodnotu, která je interpretována jako signed, ostatní funkce vrací vždy unsigned V2001: připouští navíc funkce typu reg vracející hodnotu signed: příklad: function signed [15 : 0] f6 // vraci 16 bitů typu signed, umožňuje rekursivní volání s dynamickým přidělováním a uvolňováním paměti: automatic) 10.1.2012 MI-SIM Jiří Douša 9

Funkce Syntax deklarace funkce: function [ automatic ] [ signed ] [ < rozsah > nebo < typ > ] < identifikátor funkce > [ ( < deklarace portu, >) ; ] // pouze V01 [ < deklarace portu >,.; ] // V95, V01 < lokální deklarace >; < příkazy > function Příklady různých typů: function f1 ; // vraci 1 bit unsigned input a, b; function f2 ( input a, b ); // vraci 1 bit unsigned function [15 : 0] f3 ( input a, b ); // vraci 16 bitů unsigned function signed [15 : 0] f4 ( input a,b ); // vraci 16 bitů signed function integer f5 ( input a, b ) ; // vraci 32 bitů signed function time f6 ( input a, b ); // vraci 64 bitů unsigned function real f7; // vraci 64 bitů typu real 10.1.2012 MI-SIM Jiří Douša 10

Funkce Příklad: výběr maxima function [ 3 : 0 ] maximum; input [ 3 : 0 ] a, b ; maximum = ( a >= b )? a : b ; function // formální parametry Příklad: funkce s rekursivním voláním function automatic [ 31 : 0 ] faktorial; input [ 31 : 0 ] n ; // formální parametry if ( n == 1 ) faktorial = 1 ; else faktorial = n * faktorial ( n 1 ); function Příklad: normalizace module Normalizator ( input [ 7 : 0 ] vst, output [ 7 : 0 ] vyst ); function [ 7 : 0 ] norm ( input [ 7 : 0 ] vst ); begin norm = vst ; if ( norm!= 0 ) while ( norm [ 7 ] == 0 ) norm = norm << 1 ; function assign vyst = norm ( vst ) ; // volání v paralelním prostředí module 10.1.2012 MI-SIM Jiří Douša 11

Systémové procedury pro zobrazení hodnot na standardní výstup: $display.dekadické zobrazení hodnoty parametru + inzerce nového řádku př.: $display ( citac = %d, citac ) ; ( $displayb, $displayo, $displayh ) pro jiné soustavy $write.dekadické zobrazení hodnoty parametru bez inzerce nového řádku ( $writeb, $ writeo, $ writeh ) pro jiné soustavy $strobe dekadické zobrazení parametrů po jejich ustálení v dané hodnotě modelového času, ( $strobeb, $strobeo, $strobeh ) $monitor dekadické zobrazení hodnot specifikovaných parametrů po změně některého z nich a po jejich ustálení v dané hodnotě modelového času, ( $monitorb, $monitoro, $monitorh ) Příklad: always ( citac ) begin $display ( parita = %d, parita ) ; $strobe ( parita = %d, parita ) ; initial forever @ ( posedge clk ) # 3 $display (parita ); initial $monitor ( parita =%d v case %t, parita, $time ); 10.1.2012 MI-SIM Jiří Douša 12

Systémové procedury Priklad: demonstrace rozdilů initial begin $display( --- time = %d ------------------ ", $time); $write (" xwb = %b ", x); $strobe ("xstb1 = %b ", x); x <= 1'b0; // 1. prirazeni $write ("xwa1 = %b ",x); $strobe ("xsta1 = %b ",x); #2; $display ( --- time = %d------------ ", $time); x <= 1'b1; // 2. prirazeni $write ("xwa2 = %b ", x); $strobe ("xsta2 = %b ", x); #2; $display ( --- time = %d------------ ", $time); $write ("xwb3 = %b ", x); $strobe ("xstb3 = %b ", x); x <= 1'b0; // 3. prirazeni $write ("xwa3 = %b ", x); $strobe ("xsta3 = %b ", x); #2; $display ( --- time = %d ", $time); initial begin $monitor ("xm =%b ", x); 10.1.2012 MI-SIM Jiří Douša 13

Systémové procedury vysledky minuleho prikladu : # # --- time = 0 --------------- # xwb = x xwa1 = x xm = 0 # xstb1 = 0 # xsta1 = 0 # # --- time = 2 --------------- # xwa2 = 0 xm = 1 # xsta2 = 1 # --- time = 4 --------------- # xwb3 = 1 xwa3 = 1 xm = 0 # xstb3 = 0 # xsta3 = 0 # # ---time = 6 Poznámky: výsledky provedení procedury $write zachovávají pořadí v němž byly příkazy prováděny, výsledky provedení procedury $strobe spolu s výsledkem procedury $monitor se objeví až po ustálení hodnot 10.1.2012 MI-SIM Jiří Douša 14

Systémové procedury operace se soubory: analogie procedur pro standardní výstup integer deskr. $fopen ( <jméno souboru> ); // otevření // deskr. vrací 0 pokud soubor nelze otevřít, $fclose ( soubor );: $fdisplay ( deskr, < seznam parametrů > ); $fstrobe ( deskr, < seznam parametrů > ); $fwrite ( deskr, < seznam parametrů > ); $fmonitor ( deskr, < seznam parametrů > ); // uzavření řízení simulace: ukončení: $finish // nelze pokračovat suspování: $stop // lze pokračovat, získání okamžité hodnoty simulačního času: $time direktiva pro nastavení časové jednotky: `timescale < časová jednotka > / <časové rozlišení> Příklad: `timescale 1 ns / 100 ps module M (...); chybí - li `timescale, pak časová jednotka = časové rozlišení = 1 ns, špatná interpretace nastane pokud všechny moduly nemají direktivu. 10.1.2012 MI-SIM Jiří Douša 15

Testování modulů testovací program: modul bez vstupů a výstupů, který obsahuje instalaci testovaného modulu spolu s jeho buzením, Příklad: module test ; reg [ 7 : 0 ] vstupy; reg reset, clk; wire [ 7 : 0 ] vystupy ; // následuje instalace instance t0 testovaného obvodu typu OBVOD OBVOD to ( vstupy, reset, clk, vystupy ); initial begin clk = 1 b1; reset = 1 b1; vstupy = ; // počáteční nastavení # 2 reset = 1 b0; // deaktivace reset # 500 $stop; // ukonceni simulace always # 5 clk = ~clk ; // generátor hodin; perioda = 10 initial begin // generování vstupní posloupnosti @(posegge) vstupy =.; // přiřazení vstupů @(posegge) vstupy =.;.; module 10.1.2012 MI-SIM Jiří Douša 16

Testování modulů: generování vstupů // následuje jednoduchý algoritmus: initial forever @ ( posedge clk ) vstupy = vstupy + 1 ; // následuje explicitní vyjmenování vstup. vektorů initial begin // ukázka prodlevy : přeskočení 10-ti period clk repeat ( 10 ) begin @ ( posedge clk ) ; @ ( negedge clk ) ; @ ( posedge clk ) vstupy =.;. ; @ ( posedge clk ) vstupy =.; ; // následuje proces pro načtení vstupních hodnot ze souboru reg [ 7 : 0 ] pamet [ 0 : 3 ] ; integer i; initial begin $readmemb ( priklad1.dat, pamet ) ; // čtení souboru /* předpokládaný formát souboru 00001110 01010000 00001111 11111111 */ for (i = 0; i < 4; i = i+1) // kontrolní výtisk vstypů $display ( adresa *%d+ =% h, i, pamet [i] ); 10.1.2012 MI-SIM Jiří Douša 17

Použití procedur pro testování obvodů vícenásobné použití abstraktních operací pro různé varianty testů, možná struktura testovacích modulů: : module KOMPLET deklarace proměnných: reg clk, atd. // souhrn vsech testovacich nastroju deklarace vstupnich a vystupnich siti wire *.+ circuit_input; wire *.+ circuit_output; wire *.+ requested-value; deklarace procedur pro realizaci složitějších operací užitečných při imlementaci všech možných testů: task load (.) ;. task; task tst1 (.) ;. task; task tst2 (.) ;. task; instalace testovaneho obvodu a jeho propojení s jinými moduly (generátor hodin, monitor, atd.) OBVOD dut (..); module MI-SIM Jiří Douša 18

Použití procedur pro testování obvodů Příklad: procedura pro testování odezvy obvodu ( bodový test po vypršení propagačního zpoždění a test stability ve zbývajícím úseku hodinového cyklu) task tst1 ( input *..+ circuit_input, circuit_output ) ; // parametry: vstup & vystup test. obvodu reg [15:0] requested _value; begin requested _value =..; # Td ; // cekej na stabilni vystup // nasleduje bodovy test obvodu // spravny vystup obvodu // umely vypocet spravne hodnoty if (circuit_output!== requested _value) $write ( wrong_result ); // nasleduje test stability vystupu testovaneho obvodu fork : test_stability join task @ (circuit_output ) $write ( unstable output ); @ ( posedge clk ) disable test_stability; // of stability test 10.1.2012 MI-SIM Jiří Douša 19

Použití procedur pro testování obvodů vícenásobné použití abstraktních operací pro různé varianty testů, možná struktura testovacích modulů: : module test1 KOMPLET t1 ; // modul pro urcity test // instalace instance t1 modulu KOMPLET // nasleduje test obvodu pro generovane vstupy initial begin t1. reset ; // reset testovaneho obvodu @(posedge clk); // initial synchronization for ( i=1; I < ; i=i+1 ) begin t1.circuit_input = ; // buzeni vstupu testovaneho obvodu t1. tst1 (, ); // kontrola spravnosti vystup // konec testu 1 ; // test1: vystup zpravy t1. reset; @(posedge clk); for ( i=1; I < ; i=i+1 ) begin.;.; module // konec posloupnosti testů 10.1.2012 MI-SIM Jiří Douša 20