2016-08-11 4 views
0

Ich habe ein Makro für Gating Gating Assertion definiert, aber beim Kompilieren stehe ich vor dem Scheitern: Endmodul erwartet bei Endproperty.Erwarteter Endmodulauftrag beim Definieren des Makros

Code:

`define gating_check(_name, _clock, _data, txen) \ 
property _name ; \ 
@(posedge `TOP.``_clock``) disable iff (~`STIMULUS.RSTN_VEC_GEN) \ 
(~(txen) |-> ##[1:6] (|`TOP.``_data`` == 0)); \ 
endproperty \ 
``_name``_checker : assert property (_name) else $error("-E- property gating_check failed"); \ 
``_name``_cover : cover property (_name) 

Pls Hilfe.

+0

Ich habe mit Codeblock formatiert, nicht sicher, ob alle Backticks gemeint sind. – Morgan

Antwort

1

Sie haben nur zusätzlichen Platz nach dem "\" in zwei Zeilen - 4 und 5, wenn Sie diese Leerzeichen entfernen den Code kompilieren sollte.

Das "\" wird verwendet, um das Ende der Zeile zu verlassen, aber ein zusätzliches Leerzeichen nach dem "\" wird dies nicht tun. Daher ist Ihr Makro jetzt eine Multi-Lügen-Aussage, die den Fehler erzeugt. Weil es ein Leerzeichen Charakter ist, ist es schwer zu beobachten :).

Unten ist der Code ohne das nachstehende Leerzeichen in Zeile 4 und 5.

`define gating_check(_name, _clock, _data, txen) \ 
property _name ; \ 
@(posedge `TOP.``_clock``) disable iff (~`STIMULUS.RSTN_VEC_GEN) \ 
(~(txen) |-> ##[1:6] (|`TOP.``_data`` == 0)); \ 
endproperty \ 
``_name``_checker : assert property (_name) else $error("-E- property gating_check failed"); \ 
``_name``_cover : cover property (_name) 
Verwandte Themen