在verilog中包含文件:modelsim的编译选项

问题描述 投票:0回答:2

我必须编译一个文件(x.sv)。在x.sv中,有一堆“`include y.v”。 y.v 的内容只是一组赋值语句。例如:分配 a = b&&c。信号 a、b 和 c 在 x.sv 中定义。

我尝试编译如下:

vlog -sv -work work x.sv +incdir+ "path to y.v"

这些文件已经交给我了,我要模拟一下。

这样做的原因是因为 y.v 中有很多赋值语句,这会让 x.sv 更具可读性。

文件 x.sv

module x (input b, input c, output d);
  wire a; 
  reg d;
  `include y.v
  always @* d <= a;
endmodule

文件:y.v

assign a = b && c;

Modelsim 能够找到这些文件,但它显示“靠近“分配”:语法错误,意外分配,期望类。”在文件 y.v

verilog system-verilog modelsim
2个回答
0
投票

对于您希望模拟器查找“包含”文件的每个目录,这应该是

+incdir+<dir>
.
当前目录通常有效或明确指定。


0
投票

您的代码的问题不是因为

`include
而是因为它之前的行。不幸的是,许多语法错误都指向错误后的下一行,因为错误的语法使其丢失,而包含文件中的
assign
语句恰好是下一行

你的问题是你混合了两种不同风格的端口声明语法; ANSI 和非 ANSI 风格。

reg d;
不是预期的。将其放入端口标头中。修复后的其他问题:

  • 在 SystemVerilog 中使用
    always_comb
    ,切勿使用
    always @*
    。 @* 未命中 时间 0 处的事件以及常量。
  • 请勿在以下情况中使用 NBA
    <=
    组合逻辑。
© www.soinside.com 2019 - 2024. All rights reserved.