Verilog简单寄存器测试平台

时间:2015-04-12 02:36:03

标签: verilog

我想用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确实如此。有关为什么会发生这种情况的任何评论?

1 个答案:

答案 0 :(得分:1)

我会按如下方式重写测试台:

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的值,从而为测试平台提供完整的周期设置。