系统verilog中级联数组的位宽

时间:2017-02-17 01:12:35

标签: system-verilog system-verilog-assertions

我有多个函数可以生成1位变量/ define / enums的连续数组。每次发生连接时,我都要确保最终大小为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*

1 个答案:

答案 0 :(得分: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