我有以下代码,文件c.sv
:
virtual class C#(parameter W = 32); // line #2 where error message points
static function logic [W-1 : 0] f(input logic [W-1 : 0] in);
return ~in;
endfunction
endclass
然后我从top.sv
:
`include "c.sv"
module top(input wire [3:0] key, ouptut wire [3:0] led);
assign led = C#(4)::f(sw);
endmodule
在ModelSim 10.3d中它工作正常,但Quartus II x64 15.0.1 build 150在分析&之后报告此错误。合成:
错误(10170):c.sv(2)附近文本“virtual”的Verilog HDL语法错误;期待描述
如果我注释掉inlcude "c.sv"
并将函数调用替换为一个简单的~led,则它可以在开发板中运行。
我做错了什么?
答案 0 :(得分:3)
遗憾的是,目前无法在Altera Quartus中支持参数化功能。您有以下行动方案:
选项2当然会涉及分配一笔非常重要的金额。 Synopsys Design Compiler支持这种结构,您的里程可能因其他工具而异。
对于选项3,您可以使用宏,生成的代码或可选的文件编译来实现类似的结果。
Altera FPGA用户无法使用此功能,这有点令人沮丧。为了社区的利益,无论您选择何种行动,都要提出一张票。需求越多,Altera实现此功能的可能性就越大。
还有一些关于可能涉及"Width independent functions" question课程的可能解决方案的讨论和原型设计。