-1

このコードの 15 行目から解析エラーが発生します。

12: module DoShellSort(
13:    input [10*20-1:0] toSort,
14:    output [10*20-1:0] sorted
15:    reg arrBitSize
16: );

これは、input 変数と reg 変数を初期化するテスト ベンチの一部です。

module ShellSort_tb;
    reg [10*19:0] toSort, arrBitSize;
    wire [10*19:0] sorted;
    integer i;

    DoShellSort ss_tb ([10*19:0] toSort, [10*19:0] sorted, arrBitSize);

    // Input values you want to sort here
    // Note: Should be 20 bits in size
    initial $readmemh ("memory_hex.txt", toSort);

    initial begin
        #1 $display("\nThis program implements SHELL SORT to arrange values.\n");

        // Display initial array
        #10 $display("Array to sort: ");
        #10 for (i = 0; i < arrBitSize + 1; i = i + 1)
            $write("%h", toSort[i]);

        #10 arrBitSize = 4'd9;

        // ................
endmodule

iVerilog を使用して合成しています。エラーメッセージは次のとおりです。

ここに画像の説明を入力

解析エラーが発生する理由を誰か助けてもらえますか? ありがとう!

4

2 に答える 2

2

ポートを定義した方法にエラーがあります。コンマとポートの方向が欠落しているか、rweg を間違った場所に配置してコンマが欠落しています。あなたが持っている:

 module DoShellSort(
    input [10*20-1:0] toSort,
    output [10*20-1:0] sorted //missing comma?
    reg arrBitSize            //missing port direction?
);

私はあなたがこれを意味したと思います:

 module DoShellSort(
    input      [10*20-1:0] toSort,
    output reg [10*20-1:0] sorted, arrBitSize
);

各ポートを個別にリストすることをお勧めします。これにより、コードの更新が容易になり、言語に精通していない人でもインターフェイスが明確になります。

 module DoShellSort(
    input      [10*20-1:0] toSort,
    output reg [10*20-1:0] sorted, 
    output reg [10*20-1:0] arrBitSize
);
于 2014-12-08T13:27:08.967 に答える
0

ポート接続が良好ではありません。型宣言以外では、展開された次元を持つことはできません。DoShellSort ss_tb (toSort[10*19:0], sorted[10*19:0], arrBitSize);

また、出力 [10*20-1:0] がソートされた後、モジュール ポート宣言に「,」がありません。

于 2014-12-08T13:20:25.677 に答える