我从此代码的第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进行合成。以下是错误消息:
任何人都可以帮我解释为什么我会收到解析错误吗?谢谢!
答案 0 :(得分: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
);
答案 1 :(得分:0)
您的端口连接不好。您的类型声明中不能包含其他未打包的维度。 DoShellSort ss_tb(toSort [10 * 19:0],排序[10 * 19:0],arrBitSize);
您的模块端口声明丢失&#34;,&#34;在输出[10 * 20-1:0]后排序。