Um einen Fehler zu reproduzieren, möchten Sie die Zufälligkeit "kontrollieren". Das ist also etwas, was du die meiste Zeit willst.
Der Systemaufruf $random
wird durch seed
eingeschränkt. Wenn ein Seed gegeben ist, geben die zufälligen Aufrufe dieselbe Sequenz an.
Ich würde Ihnen empfehlen, den Seed-Parameter zu behalten und durch einen $random
Aufruf (ohne Seed) zu erzeugen. Achten Sie darauf, die Variable seed
zu drucken, die für den Fall verwendet wird, dass Sie auf einen Fehler stoßen.
Statt:
seed = 0;
Verwendung:
seed = $random;
$display("Seed used: %d",seed);
EDIT
Seed-Wert kann auch in dem Simulationsbefehlszeilen eingestellt werden. In NCsim zum Beispiel ist es die -seed integer
Option, die es einstellt.
In diesem Fall können Sie in Ihrem Simulation Skript hinzufügen:
#!/bin/bash
export SEED=$RANDOM
echo "Seed used: $SEED"
ncsim ...various command line options... -seed $SEED
EDIT 2
Verilog verhält sich tatsächlich (standardmäßig) wie konstant ein Samen gegeben ist, so dass Sie Fehler reproduzieren können (see here) .
Um manuell einen Ausgangswert in der Verilog-Quelle zu übergeben, müssen Sie verwenden, um den Anfangswert der nächsten zufälligen Aufrufe zu initialisieren. Dann sind Sie $urandom
statt $random
(see here)
verwenden sollten die inital seed
zu erzeugen, würde ich versuchen, $urandom
zu verwenden, bevor die Samen zu setzen.
integer seed;
initial begin
seed = $urandom();
$srandom(seed);
end
//**
... tests with $urandom() calls
**//
IMHO, wird es endlich einfacher sein, die Befehlszeilenoption zu verwenden.
Wenn ich neu starte, ist der Startwert immer gleich – grander3
In Ihrem Simulationsbefehl ist es möglich, einen Startwert zu definieren, z. in der NCsim-Befehlsnummer "-seed NUMBER". Dieser Seed wird die Zufallsaufrufe in Ihrer Simulation automatisch einschränken. – Krouitch
Gibt es Optionen, die in dem Verilog nicht Tool behandelt werden? – grander3