1

verilogがモジュールのポートリストでの多次元配列の宣言/受け渡しを許可しない場合、回避策はありますか?array [27:0] [64:0]のような配列があるとしましょう。どうすればそれをモジュールに渡すことができますか?(1次元配列として作成し、モジュール本体で反転を行うなど)唯一の方法は、1次元として渡し、元の多次元のもののように参照するメカニズムを実行することだと思います。ありがとう。私はしばらく前に調査しましたが、その機能はSystemVerilogで利用できますが、元のVerilogでは利用できません。

4

1 に答える 1

5

最初のコメンターが指摘したように、SystemVerilog では、求めているものが明示的にサポートされています。モジュールの境界を越えて構造体を渡すこともできます。

ただし、古いスタイルの Verilog にこだわっている場合は、ご想像のとおりです。それを 1D 配列にフラット化し、モジュール内で吹き飛ばします。

疑似コードで

input [WIDTH * DEPTH - 1:0] in;

reg [WIDTH - 1:0] array [0:DEPTH - 1];

integer i;
for (i = 0; i < DEPTH; i = i + 1)
    array = in[i * WIDTH +: WIDTH];

モジュール境界の反対側に同様の for ループをパッキングします。+: 構文は便利ですが、それにアクセスできない場合でも、かなり簡単に明示的な境界に変換できます。

于 2013-02-17T20:14:21.260 に答える