我已经为门控断言定义了一个宏,但在编译时,我面临失败的说法:在endproperty期望endmodule。
代码:
`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)
请帮助。
答案 0 :(得分:1)
如果你删除这些代码应该编译的尾随空格,你只需在“\”之后的两行--4和5中有额外的空格。
“\”用于转义行尾,但“\”之后的额外空格不会这样做。因此,现在您的宏已成为生成错误的多留言语句。因为它的空间特征很难观察:)。
下面是第4行和第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)