4位行波进位加法器特定输入测试失败问题排查
4位行波进位加法器测试失败的排查与修复
问题根源:位向量索引方向不匹配
你的代码中,四位信号x、y、sum都定义为[0:3],这意味着x[0]是最低位(LSB),x[3]是最高位(MSB)。但你输入测试用例时,是按照常规二进制写法(最左侧为最高位)输入的,比如input1=1000,这会导致Verilog将1000解析为x[0]=1, x[1]=0, x[2]=0, x[3]=0,对应十进制值为1,而非你预期的8。
同时,测试代码中x + y + carry_in的计算是基于Verilog对[0:3]向量的数值解析,虽和电路实际计算逻辑一致,但和你预期的输入含义完全相反,最终导致测试判定失败。
修复方案
最直观的修复是将所有四位信号的位宽定义改为[3:0](最高位在前,符合常规二进制书写习惯):
修改four-bit-adder.v
`include "one-bit-adder.v" module four_bit_adder(input [3:0] x, input [3:0] y, input carry_in, output [3:0] sum, output carry_out, output overflow); wire c1, c2, c3; // 加法器连接顺序不变,x[0]仍为最低位,对应常规二进制的最右侧位 one_bit_adder add1(x[0], y[0], carry_in, sum[0], c1); one_bit_adder add2(x[1], y[1], c1, sum[1], c2); one_bit_adder add3(x[2], y[2], c2, sum[2], c3); one_bit_adder add4(x[3], y[3], c3, sum[3], carry_out); assign overflow = c3 ^ carry_out; endmodule
修改four-bit-adder-test.v
`include "four-bit-adder.v" module four_bit_adder_test; reg [3:0]x; reg [3:0]y; reg carry_in; wire [3:0]sum; wire carry_out; wire overflow; four_bit_adder adder(x, y, carry_in, sum, carry_out, overflow); initial begin if (!$value$plusargs("x=%b", x)) begin $display("ERROR: please specify +x=<value> to start."); $finish; end if (!$value$plusargs("y=%b", y)) begin $display("ERROR: please specify +y=<value> to start."); $finish; end if (!$value$plusargs("carry_in=%b", carry_in)) begin $display("ERROR: please specify +carry_in=<value> to start."); $finish; end $display("Expected: %b + %b + %b = %b", x, y, carry_in, {carry_out, sum}); #1 // 等待输出稳定 if ( {carry_out, sum} == x + y + carry_in ) $display("PASSED: sum=%b, carry_out=%b", sum, carry_out); else $display("FAILED: sum=%b, carry_out=%b", sum, carry_out); end endmodule
验证测试用例
以第一个测试用例为例:
- 输入
x=1000(十进制8)、y=0110(十进制6)、carry_in=1 - 预期结果:8+6+1=15,对应二进制
01111(carry_out=0,sum=1111),修改后电路输出完全匹配预期,测试会通过。
第二个测试用例x=1000、y=0001、carry_in=1:
- 8+1+1=10,对应二进制
01010(carry_out=0,sum=1010),同样会匹配电路输出。
补充说明
若坚持使用[0:3]的位序定义,也可将测试用例的输入位序反转(比如1000改为0001),但这种方式不符合常规二进制书写习惯,易引发混淆,不推荐。
内容的提问来源于stack exchange,提问作者Adam Ashkenazy
相关产品推荐
相关产品推荐

