module jfq_605(S,C_out,A,B,C_in); input A,B,C_in ; output S,C_out ; reg S,C_out ; always @(A or B or C_in) begin {C_out,S} = A +B +C_in ; end endmodule 写出这段代码的完整测试文件
时间: 2024-03-14 15:42:45 浏览: 48
下面是这段代码的完整测试文件:
```
module jfq_605_tb;
// 输入端口
reg A;
reg B;
reg C_in;
// 输出端口
wire S;
wire C_out;
// 实例化被测模块
jfq_605 dut (
.A(A),
.B(B),
.C_in(C_in),
.S(S),
.C_out(C_out)
);
// 定义时钟信号
reg clk = 0;
// 时钟信号周期
parameter PERIOD = 10;
// 测试程序
initial begin
// 初始化输入信号
A = 0;
B = 0;
C_in = 0;
// 等待时钟上升沿
#PERIOD / 2;
clk = 1;
// 第一组测试用例
#PERIOD;
A = 0;
B = 0;
C_in = 0;
#PERIOD;
if (S != 1'b0 || C_out != 1'b0) $error("Test case 1 failed!");
// 第二组测试用例
#PERIOD;
A = 0;
B = 0;
C_in = 1;
#PERIOD;
if (S != 1'b1 || C_out != 1'b0) $error("Test case 2 failed!");
// 第三组测试用例
#PERIOD;
A = 0;
B = 1;
C_in = 0;
#PERIOD;
if (S != 1'b1 || C_out != 1'b0) $error("Test case 3 failed!");
// 第四组测试用例
#PERIOD;
A = 0;
B = 1;
C_in = 1;
#PERIOD;
if (S != 1'b0 || C_out != 1'b1) $error("Test case 4 failed!");
// 第五组测试用例
#PERIOD;
A = 1;
B = 0;
C_in = 0;
#PERIOD;
if (S != 1'b1 || C_out != 1'b0) $error("Test case 5 failed!");
// 第六组测试用例
#PERIOD;
A = 1;
B = 0;
C_in = 1;
#PERIOD;
if (S != 1'b0 || C_out != 1'b1) $error("Test case 6 failed!");
// 第七组测试用例
#PERIOD;
A = 1;
B = 1;
C_in = 0;
#PERIOD;
if (S != 1'b0 || C_out != 1'b1) $error("Test case 7 failed!");
// 第八组测试用例
#PERIOD;
A = 1;
B = 1;
C_in = 1;
#PERIOD;
if (S != 1'b1 || C_out != 1'b1) $error("Test case 8 failed!");
$display("All test cases passed!");
$finish;
end
// 时钟信号生成器
always #PERIOD / 2 clk = ~clk;
endmodule
```
阅读全文