Ce que vous essayez d'accomplir n'est pas très clair, mais le simulateur Synopsys VCS a une tâche système nommée $system
qui peut être utilisée pour exécuter une commande shell pendant la simulation. Si vous exécutez sleep 1
comme suit, la simulation s'arrêtera pendant 1 seconde de l'horloge murale pour chaque pas de temps. Votre simulation affichera un message une fois par seconde. Bien sûr, votre simulation sera extrêmement lente. Notez que $system
ne fait pas partie de la norme IEEE pour Verilog.
Mise à jour: J'ai d'abord déclaré que $system
est spécifique à VCS. Mais, Marty nous a informés que Cadence le soutient également.
`timescale 1ns/1ns
module tb;
initial begin
$timeformat(-9, 1, "ns");
#5 $finish;
end
integer sec = 0;
always begin
#1;
$system("sleep 1");
sec = sec + 1;
$display("seconds = %0d, time = %0t", sec, $time);
end
endmodule
Cette imprime les éléments suivants:
seconds = 1, time = 1.0ns
seconds = 2, time = 2.0ns
seconds = 3, time = 3.0ns
seconds = 4, time = 4.0ns
$finish called from file "tb.v", line 8.
$finish at simulation time 5.0ns
Sur intérêt, pourquoi ne voulez-vous faire cela? Habituellement nous nous plaignons que les simulations sont trop lentes !!! – Marty