ISIM
Die Signale können entweder mit Rechtsklick auf den Signalwert (1) oder über die Konsole (2) eingegeben werden.
force constant bzw. force clock
put
Praktisch ist es, eine Textdatei für die Simulation zu schreiben und mit Cut&Paste den gesamten Inhalt in die Konsole zu kopieren; die Befehle werden dann der Reihe nach abgearbeitet.
Das Wichtigste in Kürze
Groß-/Kleinschreibung beachten! (??? nicht in Linux)
Die wichtigsten Befehle
restart
put
force
run
add wave (um ein internes Signal zu beobachten)
New Devider … bunte Trennlinien einfügen
New Virtual Bus … Signale zusammenfassen ; mit „Radix“ eine Zahlendarstellung wählen
Simulations-Skript
Im Editor schreiben und per Cut&Paste in die Konsole kopieren
#ISIM Simulation kner 2011 (FFT-Modul) put start 0 put fwd_inv 1 put fwd_inv_we 0 put xn_re 000011111111 put xn_im 000000000000 isim force add {/xfft_v7_1/clk} 0 -radix bin -value 1 -radix bin -time 5 ns -repeat 10 ns run 50ns put fwd_inv_we 1 run 50ns put fwd_inv_we 0 run 50ns put start 1 run 50ns put start 0 run 100us #warten, bis die Daten verarbeitet sind put start 1 # nächster Frame; die Ergebnisse stehen am Ausgang an run 20ns put start 0
Force
isim force add rst 0 isim force add rst 1 -time 10 ns –cancel 50 ns isim force add clk 1 –value 0 –time 20 ns –repeat 40 ns –cancel 1 us isim force add data_in 1 -value 0 -time 50 ns -value 1 -time 75 ns -repeat 100 ns –cancel 5000 ns isim force add in0 0 -value 1 -time 20ns -value 0 -time 40ns -cancel 60ns isim force remove s s1 s2
Interpretation des Simulator-Outputs – IEEE std_logic_1164.vhd
'U'
: uninitialisiert; der Wert wurde noch nicht gesetzt (z.B. Flipflop vor einem Reset)'X'
: unknown; unmöglich, den Wert zu bestimmen (es kämpft eine starke 1 gegen
eine starke 0)'0'
: logische 0; stark'1'
: logische 1;'Z'
: High Impedance; Unterbrechung, offener Schalter, offener Eingang'W'
: schwaches X; (schwache 1 kämpft gegen schwache 0)'L'
: schwache 0'H'
: schwache 1'-'
: Don't care
Beispiele
signal s1, s2 : std_logic; ... variable v1, v2 : std_logic; ... s1 <= '0'; v1 := '1'; s2 <= 'X'; wait for 10 ns; s2 <= s1 and v1; -- '0' v2 := s1 or v1; -- '1'
Eine kleine Übung
Simulieren Sie ein Und-Gatter (Instanz auswählen und und legen Sie an die Eingänge folgende Pegel an:
Input |
Ouput |
|
i0 |
i1 |
o |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
X |
L |
0 |
H |
1 |
1 |
Z |
1 |
X |
X |
1 |
X |
W |
1 |
X |
U |
1 |
U |