Following verilog source has syntax error : "../testbench/env/plic_refm.sv", 97: token is '@' if (@(posedge vif.int_src)) begin
时间: 2024-11-09 12:24:25 浏览: 38
8x8DCT.rar_8x8DCT.rar_dct verilog_http://8dct.com_https://8dct.c
5星 · 资源好评率100%
在Verilog源代码中,`@`符号通常用于阻塞敏感列表(blocking sensitivity list),它指示的是一个条件应该在当前周期结束并且下一个周期开始时才被检查。然而,在给定的例子中,`if`语句前面直接使用了`@`,这会导致语法错误,因为`@`在这里并不是合适的语法。
正确的做法是在`posedge`表达式之后放置一个圆括号,然后将你需要检查的条件放在其中,像这样:
```verilog
if @(posedge vif.int_src) begin
// 这里是你的条件代码
end
```
或者,如果你确实想要在每个时钟周期都检查条件,你应该移除`@`并将其替换为非阻塞敏感列表(`posedge`本身即可),如下所示:
```verilog
always @(posedge vif.int_src) begin
if (some_condition) begin
// 当vif.int_src的上升沿到来时执行代码
end
end
```
请注意检查`vif.int_src`后面的条件表达式是否有误,并确保你的设计意图得到了适当的语法支持。
阅读全文