系统Verilog函数返回值作为参数化位向量

系统Verilog函数返回值作为参数化位向量,verilog,system-verilog,Verilog,System Verilog,我需要在SystemVerilog中创建一个函数,返回值作为参数化位向量。 我的代码如下: class my_class #(parameter ADDR_WIDTH = 32); bit [ADDR_WIDTH-1:0] address; function bit [ADDR_WIDTH-1:0] get_address(); return address; endfunction : get_address endclass : my_class

我需要在SystemVerilog中创建一个函数,返回值作为参数化位向量。 我的代码如下:

class my_class #(parameter ADDR_WIDTH = 32);
    bit [ADDR_WIDTH-1:0] address;

    function bit [ADDR_WIDTH-1:0] get_address();
        return address;
    endfunction : get_address

endclass : my_class

我在函数声明中得到一个编译时错误,表示未定义参数
ADDR\u WIDTH
。谁能解释一下为什么会这样?在没有参数的情况下(即如果我有一个已知的值,如
位[31:0]
),同样可以工作。

在原始示例中显示的代码没有问题,我已经在早期版本的Questa上试过了。通常,当您在看起来非常好的代码上出现无法解释的错误时,您要么使用的版本太旧,要么真正的错误出现在问题代码上方的一行。

什么是您的Verilog模拟器?我尝试在我的环境中使用IUS,它没有对带有参数的函数声明表示不满。我使用的是questa modelsim。。我试过使用typedef,现在似乎可以了<代码>类型定义位[地址宽度-1:0]地址宽度
函数地址\u宽度\u t获取地址()
如果我尝试在类之外定义函数,与上面不同,我必须执行以下操作:
函数my_class::address\u width\t my_class::get_address()