1ビットの変数/定義/列挙型の連結配列を生成する複数の関数があります。連結が起こるたびに、最終サイズが32ビット幅であることを確認したい。それが32ビットよりも小さいかまたはそれより大きい場合、エラーにフラグを立てる。 私は$ bits、$ sizeを試しましたが、変数を求めて、連結幅ではなく可変幅を提供しているようです。その目的を破る。システムVerilogの連結配列のビット幅
何か助けていただければ幸いです。
ありがとうございます!
ここは私が考えていたものです: - たとえば、
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*
が、なぜそうしないのはなぜ
(デフォルト引数を持つことができますが、デフォルトが使用された場合、この関数内から知る方法はありません) 'if($ bits({a、b、c})!= 32)$ error()'を関数に入れるだけですか? –