我必须编译一个文件(x.sv)。在x.sv中,有一堆“`include y.v”。 y.v的内容只是一组assign语句。例如:指定a = b& c。信号a,b和c在x.sv中定义。
我尝试按以下方式进行编译:{{1}}
这些文件已经移交给我,我必须模拟它。
这样做的原因是因为y.v中有很多assign语句,会使x.sv更具可读性。
vlog -sv -work work x.sv +incdir+ "path to y.v"
module x (input b, input c, output d);
wire a;
reg d;
`include y.v
always @* d <= a;
endmodule
Modelsim能够找到文件,但它说“近”分配“:语法错误,意外分配,期待类”。在文件y.v
中答案 0 :(得分:0)
对于希望模拟器查找“include&#d; d”文件的每个目录,应该是+incdir+<dir>
。当前目录的.
通常可以正常工作或明确指定。
答案 1 :(得分:0)
您的代码的问题不在于`include
,而在于它之前的行。不幸的是,许多语法错误指向错误之后的下一行,因为错误的语法使其丢失,并且包含文件中的assign
语句恰好是下一行。
你的问题是你混合了两种不同风格的端口声明语法; ANSI和非ANSI样式。预计不会reg d;
。把它放入端口头。修复后的其他问题:
always_comb
而不是always @*
。 @ *未命中
0时的事件以及常数。 <=
组合逻辑。