4位波纹携带加法器测试板在Vivado中



以下代码适用于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) )

您的代码中有一些非常基本的错误。

  1. 您在所有4个$display语句的末尾都不使用;
  2. 您无法将reg用作端口声明的类型。实际上,由于这是您的结核病,因此不会有端口。您只能做module rca_dataflow_tb();并将所有reg语句移开
  3. 使用reg数据类型作为输入到您的DUT和wire的DUT输出

这应该解决问题。让我知道您是否仍然面临问题

最新更新