无法理解System Verilog中的错误

时间:2010-10-25 17:56:19

标签: verilog system-verilog

我尝试编译代码

module counter(
    input clk,
    input upSignal,
    input downSignal,
    output [7:0] count
   );
        always_ff @(posedge clk) begin
          if (upSignal)
              count <= count + 1;
          else if (downSignal)
              count <= count - 1;
        end
    endmodule

但我收到了错误

Error (10170): Verilog HDL syntax error at counter.v(7) near text "@"; expecting ".", or "("

这是什么意思?

3 个答案:

答案 0 :(得分:7)

Quartus确实支持一些systemverilog。有关详细信息,请参阅此链接&gt; Quartus Help

对于quartus自动识别您正在使用系统verilog,您需要调用您的文件something.sv

所以在这种情况下,可能是 counter.sv

如果您的文件名为 counter.v ,则会出现错误。我可以确认确实是用Quartus II v10.0编译的。

我建议将模块输出端口更改为reg,Quartus没有抱怨,但模拟器会。

output reg [7:0] count

告诉我们你是如何上场的。

干杯

答案 1 :(得分:1)

我认为George是对的(你好乔治!很高兴见到你),这个文件被解释为Verilog(不是SystemVerilog),所以它不理解always_ff。

在输出值的类型上,我更喜欢在SystemVerilog中使用逻辑。它的效果是相同的,但是它远离了“它声明的'reg'因此它是一个注册'的想法,可以把人赶走。

此外,您收到该特定错误消息的原因是因为它不知道always_ff是什么,它假设它是模块/接口/函数的名称。一个模块可以有一个可以以'。'开头的端口映射,其他所有东西都需要一个开放的括号。

答案 2 :(得分:0)

此代码的另一个问题。

count变量是从过程块(always_ff)分配的,因此count变量需要声明为变量类型,通常是此SystemVerilog代码的逻辑类型。声明应包括:输出逻辑 [7:0]计数