理解しようと、インターネットでコードを探したところ、次のように関数と思われる宣言があり、まったく理解できませんでした。
sext #(.inwidth(1), .outwidth(32)) scc_sext_i0(
.i0(paw_0_i0_outport0[32]),
.o0(scc_sext_i0_o0));
combine2_wn #(.inwidth0(32), .inwidth1(32)) scc_combine2_wn_i0(
.i0(paw_0_i0_outport0[31 : 0]),
.i1(scc_sext_i0_o0),
.o0(scc_combine2_wn_i0_o0));
combine2_wn #(.inwidth0(32), .inwidth1(32)) scc_combine2_wn_i1(
.i0(scc_combine2_wn_i2_o0[31 : 0]),
.i1(scc_combine2_wn_i2_o0[63 : 32]),
.o0(scc_combine2_wn_i1_o0));
私の質問は次のとおりです。
- これらは本当に関数マッピングですか?
- はいの場合、それらは他の下位レベルの.vファイルで定義されていません(また、最上位ファイルにもライブラリは含まれていません)。それで、それらの用途は何ですか?
#
記号とはどういう意味ですか?- どういう
.inwidth(32)
意味ですか?32ビットの入力?(インターネットで見つけることは不可能です...) - はいの場合、
combine2_wn
ブロックには2つの入力のみが必要ですが、毎回出力がマップされるのはなぜですか?
より一般的には、これらはどのような種類の連結関数ですか?