以下代码适用于4位纹波携带加法器测试台。它给了我8个语法错误,近端4个,其他4个。我不知道这些错误是指修复需要什么?
module rca_dataflow_tb(
reg [3:0] a,
reg [3:0] b,
reg cin,
reg [3:0] s,
reg cout
);
rca_dataflow uut(.a(a),.b(b),.cin(cin),.s(s),.cout(cout));
initial
begin
#20
a = 4'b0;
b = 4'b0;
cin = 1'b0;
#20
if (s == 4'b0000 & cout == 1'b0)
$display("Test Passed")
else
$display("Test Failed")
end
#20
a = 4'b0010;
b = 4'b0000;
cin = 1'b0;
#20
if (s == 4'b0010 & cout == 1'b0)
$display("Test Passed")
else
$display("Test Failed")
end
end
endmodule
下次还列出语法错误。
但是,在这种情况下,这很明显:您中有额外的end
语句。语法是:
if (condition)
statement_or_block;
else
statement_or_block;
也(谢谢Kevin!(您的显示在结尾缺少半分钟,并且您的顶级测试工作台应该没有端口。所有信号都是本地的:
module rca_dataflow_tb;
reg [3:0] a;
reg [3:0] b;
// etc.
我也建议您使用条件和逻辑,并且:
if (s == 4'b0010 && cout == 1'b0)
if ( (s==4'b0010) & (cout==1'b0) )
您的代码中有一些非常基本的错误。
- 您在所有4个
$display
语句的末尾都不使用;
- 您无法将
reg
用作端口声明的类型。实际上,由于这是您的结核病,因此不会有端口。您只能做module rca_dataflow_tb();
并将所有reg语句移开 - 使用
reg
数据类型作为输入到您的DUT和wire
的DUT输出
这应该解决问题。让我知道您是否仍然面临问题