Wenn ich eine Aufgabe aufrufen und ein Ereignis durch Verweis übergeben, wird es nicht in der Aufgabe erkannt werden, nachdem das Ereignis ausgelöst wurde:Können Ereignisse als Referenz in Systemverilog übergeben werden?
mit diesem Prüfstandevent e;
fork
test_ev(e);
begin
#1ms;
->e;
end
join
...
task ev(ref event e);
@(e)
do_something; // this will never happen
endtask
Herumspielen: http://www.edaplayground.com/x/5YS7, es, dass einige scheinen würde Simulatoren wie die Ref-Ereignis und einige nicht. Es wird keine Kompilierungswarnung ausgegeben, aber die Anweisung @ (..) wird niemals übergeben.
Es scheint ein gültiger Systemverilog zu verwenden, gibt es einen Vorbehalt, den ich vermisse?
wow dieses Klassenverhalten von 'event' ist unintuitiv .. so jetzt verstehe ich, warum' input' funktioniert und es macht Sinn, es so zu verwenden. Ich bin immer noch neugierig, warum es nicht funktioniert, wenn ich 'ref' benutze? Soll das nicht trotzdem eine Referenz innerhalb der Aufgabe erzeugen? – chinocolerico
Ich glaube nicht, dass das LRM hier sehr klar ist. Da dies ein Verweis auf ein Referenzereignis ist, könnte @e so interpretiert werden, dass darauf gewartet wird, dass der Verweis auf ein anderes Ereignisobjekt und nicht auf den Ereignistrigger selbst geändert wird. Wahrscheinlich sollte ein illegales Konstrukt gemacht werden. –