刚学编写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都是一点变化没有,一直是初始值。这个是什么原因呢?
一段用verilog编写的testbench程序,不知道有什么错误。
答案:4 悬赏:0
解决时间 2021-04-27 20:14
- 提问者网友:涼初透
- 2021-04-27 08:23
最佳答案
- 二级知识专家网友:错过的是遗憾
- 2021-04-27 09:31
删除initial块内部以下内容:
#100;
forever
#50 clk=~clk;
在initial块外部(注意是外部,不是内部)添加以下内容:
always #50 clk= ~clk;
另外,initial内部的“rst_n = 1; ”也要改成以下形式:
rst_n=1'b0;
#3
rst_n=1'b1;
以便对电路进行复位。
#100;
forever
#50 clk=~clk;
在initial块外部(注意是外部,不是内部)添加以下内容:
always #50 clk= ~clk;
另外,initial内部的“rst_n = 1; ”也要改成以下形式:
rst_n=1'b0;
#3
rst_n=1'b1;
以便对电路进行复位。
全部回答
- 1楼网友:统治我的世界
- 2021-04-27 11:45
仿真时间跑少了吧
- 2楼网友:零负荷的放任
- 2021-04-27 11:35
你给CLK赋个初值,看看能行不
- 3楼网友:山鬼偶尔也合群
- 2021-04-27 10:23
你把这句移出Initial看看,即放在endmodule前. 我也不确信,试试看吧.
forever
#50 clk=~clk;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯