【发布时间】:2021-09-29 20:17:41
【问题描述】:
`timescale 1ns/10ps
module testbench_lab3 ();
logic [2:0] a, b, s;
logic c_out;
logic [3:0] c;
rc_adder4 UUT (
);
initial begin
a = 0;
forever begin
#10 a++;
end
end
// COMPLETE BY WRITING AN INITIAL BLOCK FOR b.
// Set initial value for b equal to 0 and increment b every 20 time units
initial begin
$display("TIME | A B | S CO");
$display("-----------------");
$monitor(" %2d | %d %d | %d %b",
$time, a, b, s, co);
#160;
$finish();
end
endmodule
/////////////////////////////////////// // 这是我的加法器模块:
module rc_adder_slice (
input logic a, b, c_in,
output logic s,c_out
);
logic p, g;
assign p = a ^ b;
assign g = a & b;
assign s = p ^c_in;
assign c_out = (p & c_in)| g;
endmodule
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
这是我的多位加法器模块:
module rc_adder4 (
input logic[2:0]a, b,
output logic[2:0] s,
output logic c_out
);
logic [3:0] c;
rc_adder_slice UUT[2:0] (
.a(a),
.b(b),
.c_in(c[2:0]),
.s(s),
.c_out(c[3:1])
);
// COMPLETE USING ARRAY INSTANCING
assign c[0] = 1'b0;// COMPLETE
assign c_out = c[3];// COMPLETE
endmodule
我不知道如何编写测试台。我只有 rc_adder4 UUT ( );和 // 通过为 b 写一个初始块来完成。 // 将 b 的初始值设置为 0,并在这两个部分剩下的每 20 个时间单位增加 b。谁能帮帮我?
【问题讨论】:
-
测试平台的重点是提供一系列随时间推移应用于设备输入信号的值,然后检查输出是否正常运行,例如加法器的输入 1 和 3 应产生 4 作为输出,依此类推。您也可以使用随机值。试试看。
-
请修剪您的代码,以便更容易找到您的问题。请按照以下指南创建minimal reproducible example。