SystemVerilog参数化了Quartus II中的函数

时间:2015-09-09 06:40:23

标签: system-verilog quartus

我有以下代码,文件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,则它可以在开发板中运行。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

遗憾的是,目前无法在Altera Quartus中支持参数化功能。您有以下行动方案:

  1. 使用Altera提出支持请求
  2. 使用第三方综合工具并将网表提供给Quartus
  3. 将您的代码重新设置为不那么通用
  4. 选项2当然会涉及分配一笔非常重要的金额。 Synopsys Design Compiler支持这种结构,您的里程可能因其他工具而异。

    对于选项3,您可以使用宏,生成的代码或可选的文件编译来实现类似的结果。

    Altera FPGA用户无法使用此功能,这有点令人沮丧。为了社区的利益,无论您选择何种行动,都要提出一张票。需求越多,Altera实现此功能的可能性就越大。

    还有一些关于可能涉及"Width independent functions" question课程的可能解决方案的讨论和原型设计。