Получение ошибки синтаксического анализа в декларации reg

-5

Я получаю ошибку синтаксического анализа из строки 15 этого кода.

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

Вот часть моего стенда, где я инициализирую входные и рег переменные.

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. Вот сообщение об ошибке:

enter image description here

Может ли кто-нибудь помочь мне, почему я получаю ошибку синтаксического анализа? Благодарю!

спросил(а) 2021-01-25T14:53:06+03:00 4 месяца, 3 недели назад
1
Решение
77

Существует ошибка, связанная с тем, как вы определили свои порты, вам не хватает запятой и направлением порта, или выложили 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
);

ответил(а) 2021-01-25T14:53:06+03:00 4 месяца, 3 недели назад
45

Ваши портовые соединения не очень хорошие. У вас не может быть неспакованного измерения, кроме объявления вашего типа. DoShellSort ss_tb (toSort [10 * 19: 0], отсортировано [10 * 19: 0], arrBitSize);

И ваше объявление порта модуля отсутствует "," после вывода [10 * 20-1: 0] отсортировано.

ответил(а) 2021-01-25T14:53:06+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема