0

我有多个函数可以生成 1 位变量/定义/枚举的串联数组。每次发生连接时,我都想确保最终大小为 32 位宽。如果小于或大于 32 位,则标记错误。我尝试过 $bits、$size,但他们似乎想要一个变量并提供变量宽度而不是连接的宽度。这违背了目的。

任何帮助表示赞赏。

谢谢!

这就是我的想法:-例如。

logic [31:0] var_out;


function f1(bunch of inputs generated by macros(variable no. of input) a,b,c)
size({a,b,c}); 
var_out = {a,b,c};
endfunction

function f2(bunch of inputs generated by macros(variable no. of input) e,f,g,h,i) 
size({e,f,g,h,i});
var_out = {e,f,g,h,i};
endfunction

function size (in) **// what should be in this function ?**
if(length(in)!=32) - $error("msg"); *// this is what i want to achieve*
4

1 回答 1

0

SystemVerilog 中没有任何参数允许您将其定义为采用可变数量的参数。(您可以使用默认参数,但无法从函数内部知道是否使用了默认参数)

为什么不

function f1(bunch of inputs generated by macros(variable no. of input) a,b,c)
  size_check($bits({a,b,c})); 
  var_out = {a,b,c};
endfunction
function void size (int in) **// what should be in this function ?**
if(in !=32) - $error("msg"); *// this is what i want to achieve*
endfunction
于 2017-02-17T01:37:16.007 回答