Aceasta prezentare descrie modul de utilizare a mediului Modelsim pentru proiectarea si simularea modulelor Verilog. Unitatea implementata in acest exemplu este un design combinational prevazut cu o intrare, x, pe 8 linii si o iesire, y. Iesirea este activa avand valoarea 1 cand cifra sutelor a numarului intreg fara semn furnizat la intrare are valoarea 2.
Exemplu: Pentru configuratia binara '11001001' (valoarea 201 in configuratie binara fara semn) aplicata la intrare, iesirea are valoarea 1 iar pentru configuratia binara de intrare '00001100' iesirea are valoarea 0.
Se alege meniul File -> New -> Project.
Se alege un nume pentru proiect si se selecteaza locatia in care va fi salvat. Se apasa OK.
Se apasa "Create New File".
Se selecteaza tipul fisierului sursa ca fiind Verilog. Se alege un nume (dupa selectarea tipul de fisier sursa ca Verilog nu se va adauga extensie numelui de fisier). Se apasa OK.
Se apasa Close.
Se selecteaza tabul Project (daca acesta nu este vizibil se va activa din meniul View -> Workspace). Se efectueaza dublu-click pentru a deschide fisierul sursa pentru in vederea editarii.
Se editeaza codul Verilog ca in figura. Se salveaza fisierul sursa.
Important: Este esentiala salvarea codului sursa inainte de compilarea acestuia!
Se face click-dreapta pe fisierul sursa in tabul Project si se alege meniul Compile -> Compile Selected.
Daca au aparut erori in procesul de compilare se efectueaza dublu-click pe linia de eroare (marcata cu culoare rosie) in fereastra Transcript pentru a deschide un raport de compilare indicand posibilele cauze ale erorii. Daca nu au fost intampinare erori la compilare este afisat mesajul de compilare cu succes in fereastra Transcript ca in figura.
Se alege meniul Simulate -> Start Simulation.
Se apasa butonul "Optimization Options".
Important: Este esentiala pornirea simularii in modul prezentat in vederea depanarii ulterioare design-ului! Exista si posibilitatea de demarare a simularii din linia de comanda a ferestrei transcript.
Se alege optiunea "Apply full visibility to all modules(full debug mode)". Se apasa OK.
Se deschide biblioteca work (din tabul Design). Se selecteaza modulul de simulat. Se apasa OK.
Important: elementele bibliotecii work poarta numele modulelor definite in fiserele sursa si nu numele fisierelor sursa continand modulele in cauza. Consecinta: fisierul sursa al unui modul va fi salvat sub acelasi nume cu al modulului descrise in acesta!
Urmatoarele ferestre sunt necesare pentru simularea unui design: Workspace (deschisa din meniul View -> Workspace), Objects (deschisa din meniul View -> Objects) si Wave (deschisa din meniul View -> Wave).
Pentru toate intrarile (in cazul problemei curente pentru singurul semnal de intrare, x, pe 8 biti) se creaza o forma de unda prin efectuarea clik-dreapta in dreptul numelui semnalului de intrare vizat in fereastra Objects si selectarea meniului "Create Wave".
Se genereaza forma de unda potrivit specificatiilor designului implementat.
Pentru problema curenta sunt alese toate configuratiile binare de intrare reprezentand numere zecimale intre 0 si 255 pentru a fi aplicate la intrarea x (se au in vedere atat configuratii de intrare care genereaza 0 cat si toate configuratiile care determina iesirea 1). Fiecare configuratie va fi activa la intrare timp de 10 ns. Intrucat vor fi simulate in total 256 de configuratii de intrare, timpul total de simulare este de 2560 ns. Configuratiile de intrare vor fi generate secvential utilizand tiparul de generare Counter.
Potrivit consideratiilor prezentate se configureaza forma de unda potrivit imaginii alaturate. Se alege Next.
Se seteaza valoarea initiala si finala a numaratorului ca in figura (valoarea de start 0 are configuratia binara 00000000, iar valoarea finala a secventei, 255 are configuratia binara 11111111). Se seteaza de asemenea durata fiecarei configuratii, care va avea valoare 10 ns potrivit cu consideratiile pasului anterios. Se apasa butonul Finish.
Formele de unda create pentru intrari sunt adaugate implicit in fereastra formelor de unda.
Fiecare iesire din design se adauga la fereastra formelor de unda prin efectuarea click-dreapta in dreptul semnalului de iesire vizat din fereastra Objects si alegerea meniului Add to Wave -> Selected Signal. Se adauga in modul acesta iesirea y la fereastra formelor de unda.
Se modifica scara de reprezentare a formelor de unda folosind butoanele indicate pentru a permite vizualizarea corespunzatoare a configuratiilor binare de analizat.
Pentru fiecare semnal necesitand modificarea bazei de numeratie se efectueaza click-dreapta in dreptul semnalului vizat in fereastra Wave si se alege baza din meniul Radix, surprins in imaginea alaturata.
Pentru problema curenta, pentru ca intrarea x reprezinta un numar intreg fara semn, modificarea de baza pentru x presupune alegerea meniului Radix->Unsigned.
Se deruleaza axa timpului spre inceputul simularii.
Se ruleaza simularea in mod repetat pentru toate configuratiile de intrare.
La efectuarea unui click in fereastra Wave se pozitioneaza automat un cursor de timp (de culoare galbena) in dreptul momentului de timp selectat. Valorile semnalelor din fereastra formelor de unda de la momentul indicat de cursor sunt surprinse in zona marcata pe figura alaturata. se inspecteaza corectitudinea implementarii deruland axa timpului pentru analiza configuratiilor relevante.
Simularea este oprita din meniul Simulate -> End Simulation.
Important: Inaintea modificarii si recompilarii unui design simularea curenta trebuie oprita!
In tabul Project tab a ferestrei Workspace se efectueaza click-dreapta intr-o zona goala a tab-ului si se selecteaza meniul Add to Project -> New File...
Vor fi respectate in continuare consideratiile pasului 4 de crearea a unui fisier sursa Verilog.