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

时间:2017-09-28 19:06:28

标签: verilog system-verilog modelsim

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

我尝试按以下方式进行编译:{{1​​}}

这些文件已经移交给我,我必须模拟它。

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

file x.sv

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

file:y.v

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

Modelsim能够找到文件,但它说“近”分配“:语法错误,意外分配,期待类”。在文件y.v

2 个答案:

答案 0 :(得分:0)

对于希望模拟器查找“include&#d; d”文件的每个目录,应该是+incdir+<dir>。当前目录的.通常可以正常工作或明确指定。

答案 1 :(得分:0)

您的代码的问题不在于`include,而在于它之前的行。不幸的是,许多语法错误指向错误之后的下一行,因为错误的语法使其丢失,并且包含文件中的assign语句恰好是下一行

你的问题是你混合了两种不同风格的端口声明语法; ANSI和非ANSI样式。预计不会reg d;。把它放入端口头。修复后的其他问题:

  • 在SystemVerilog中使用always_comb而不是always @*。 @ *未命中 0时的事件以及常数。
  • 请勿使用NBAs <= 组合逻辑。