Verilog 简单寄存器测试平台
Verilog simple register testbench
我想用verilog推断一个简单的触发器。这是代码。
module tb_simpleRegister();
reg clk;
reg a;
wire b;
simpleRegister dut
(
.clk(clk),
.a(a),
.b(b),
.c(c)
);
initial begin
clk=1;
a=0;
#10
a=1;
#10
a=0;
end
always #5 clk = ~clk;
endmodule
module simpleRegister(
input clk,
input a,
output reg b,
output reg c
);
always @(posedge clk) begin
b <= a;
c <= b;
end
endmodule
而here是我运行时的结果。 dut 的 b 输出不像触发器。但是输出 c 确实如此。对为什么会发生这种情况有任何评论吗?
我会重写测试平台如下:
initial begin
@(posedge clk);
a<=0;
@(posedge clk);
a<=1;
@(posedge clk);
a<=0;
end
//Clock in separate process
initial begin
clk=1;
forever begin
#5 clk = ~clk;
end
end
非阻塞分配将确保 a 的值在时钟边沿之后立即更改,从而为测试台提供完整的周期设置。
我想用verilog推断一个简单的触发器。这是代码。
module tb_simpleRegister();
reg clk;
reg a;
wire b;
simpleRegister dut
(
.clk(clk),
.a(a),
.b(b),
.c(c)
);
initial begin
clk=1;
a=0;
#10
a=1;
#10
a=0;
end
always #5 clk = ~clk;
endmodule
module simpleRegister(
input clk,
input a,
output reg b,
output reg c
);
always @(posedge clk) begin
b <= a;
c <= b;
end
endmodule
而here是我运行时的结果。 dut 的 b 输出不像触发器。但是输出 c 确实如此。对为什么会发生这种情况有任何评论吗?
我会重写测试平台如下:
initial begin
@(posedge clk);
a<=0;
@(posedge clk);
a<=1;
@(posedge clk);
a<=0;
end
//Clock in separate process
initial begin
clk=1;
forever begin
#5 clk = ~clk;
end
end
非阻塞分配将确保 a 的值在时钟边沿之后立即更改,从而为测试台提供完整的周期设置。