Ich suche nach Erklärungen/Dokumentation zu einem bestimmten Systemverilog/OVM-Verhalten.OVM-Deklarationen innerhalb der Verbindungsphase
Ich habe eine Klasse mit einer Verbindungsphase. In der Verbindungsphase versuche ich ein ovm_object zu deklarieren, obwohl ich einige Probleme hatte. Wenn ich dies tun:
virtual function void connect();
super.connect();
`ifdef SOMETHING_ENABLE
ovm_object some_object;
`endif
endfunction : connect
ich einen Syntaxfehler, sagte die folgende Verilog-Quelle einen Syntaxfehler hat: „file.sv“ Token ‚some_object‘, und es verweist auf meine Codezeile mit der Erklärung von einem_Objekt.
Obwohl, wenn ich es wickeln mit einem "begin" und "end" Ich habe keine Fehler angezeigt:
virtual function void connect();
super.connect();
`ifdef SOMETHING_ENABLE
begin
ovm_object some_object;
end
`endif
endfunction : connect
Warum ist das? Kann jemand auf die Dokumentation dazu verweisen und/oder erklären, warum ich dieses Verhalten vom Compiler sehe?
Wenn ich also einen Anfangs- und Endblock hinzufüge, zu welchem Abschnitt des BNF? Würde das unter A.2.8 Block item declaration fallen? – user1334858
und A.6.3 _seq_block_ und A.6.4 _statement_item_ –