クロック入力を持つパラメータ化されたインターフェイスがあります。例:SystemVerilog異なるパラメータを持つインターフェイス配列
interface itf # (PARAM1 = 16, PARAM2 = 8)(input logic clk);
このインターフェイスには「スレーブ」というモデムがあります。
私のモジュールは、このインタフェースの配列を入力(modport "スレーブ")として受け取ります。 MyModule
ためのテストベンチモジュールにおいて
module MyModule #(NB_ITFS = 4)(... itf.slave itfs[NB_ITFS]...);
、IはNB_ITFS
の異なる値をテストすることができる汎用コードを希望。
質問:要素のパラメータが異なることを考慮して、MyModule
インスタンシエーションのインターフェイスを作成する方法はありますか。
例えば、私が生成する声明を使用してみました:
module testbench()
...
generate
genvar i;
for (i = 0; i < NB_ITFS; i++)
begin : interfaces
itf #(.PARAM1(PARAM1_TABLE[i]),
.PARAM2(PARAM2_TABLE[i])) itf_inst (.clk(clk));
end
endgenerate
...
endmodule
をしかし、(私は「スレーブ」modportを選択したい場合や.slave
)この場合には、インタフェースの配列がinterfaces[xxx].itf_inst
あるとのインスタンス化MyModule
interfaces[NB_ITFS].itf_inst.slave
を使用するとエラーが発生します。
また、私は成功せずに試してみました: - 一般的な定義itf itf_inst[NB_ITFS] (.clk(clk));
と生成ブロック 内defparam
を使用してパラメータを変更しようとした - 「仮想インターフェイス」機能
任意の提案を?別のインターフェイス内でごgenerate
を置くことについての
私はこの解決策に同意します。 – Robby
また、itfaにはまだmodifを実装する考えはありますか? itf_inst "slave" modportsの配列であるitfa用の "スレーブ" modportを作成したいと思います... – Robby