一段用verilog编写的testbench程序,不知道有什么错误。

刚学编写testbench ,用的是ISE。程序如下:
`timescale 1ns / 1ps

module counter_tb;

// Inputs
reg clk;
reg rst_n;
reg inEn;

// Outputs
wire [7:0] counter;

// Instantiate the Unit Under Test (UUT)
counter uut (
.clk(clk),
.rst_n(rst_n),
.inEn(inEn),
.counter(counter)
);

initial begin
// Initialize Inputs
clk = 1;
rst_n = 1;
inEn = 0;

// Wait 100 ns for global reset to finish

#100;
forever
#50 clk=~clk;

// Add stimulus here

end

endmodule
就是一个简单的计数器仿真验证。testbench程序大部分是系统生成的,我自己写的也就是initial begin到end那一小段。可是无论是调用modelsim还是ISE自己的仿真器,clk都是一点变化没有,一直是初始值。这个是什么原因呢?

删除initial块内部以下内容:
#100;
forever
#50 clk=~clk;

在initial块外部(注意是外部,不是内部)添加以下内容:
always #50 clk= ~clk;

另外,initial内部的“rst_n = 1; ”也要改成以下形式:
rst_n=1'b0;
#3
rst_n=1'b1;
以便对电路进行复位。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-22
你把这句移出Initial看看,即放在endmodule前. 我也不确信,试试看吧.
forever
#50 clk=~clk;
第2个回答  2011-11-21
你给CLK赋个初值,看看能行不
第3个回答  2011-11-21
仿真时间跑少了吧
相似回答