我有多个函数可以生成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*
答案 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