需求说明:Verilog设计基础
内容 :testbench的设计 iout类型端口信号处理
来自 :时间的诗
续Verilog十大基本功2(testbench的设计 文件读取和写入操作 源代码)
3 testbench 的技巧
1)如果激励中有一些重复的项目,可以考虑将这些语句编写成一个 task,这样会给书写和仿真带来很大方便。例如,
一个存储器的 testbench 的激励可以包含 write, read 等 task。
2)如果 DUT 中包含双向信号(inout),在编写 testbench 时要注意。需要一个 reg 变量来表示其输入,还需要一个 wire
变量表示其输出。
3)如果 initial 块语句过于复杂,可以考虑将其分为互补相干的几个部分,用数个 initial 块来描述。在仿真时,这些
initial 块会并发运行。这样方便阅读和修改。
4)每个 testbench 都最好包含$stop 语句,用以指明仿真何时结束。
5)加载测试向量时,避免在时钟的上下沿变化,比如数据最好在时钟上升沿之前变化,这也符合建立时间的要求。
4 一个简单的例子
DUT:
module counter (
clk,
reset,
enable,
count
);
input clk;
input reset;
input enable;
output [3:0] count;
reg [3:0] count;
always @ (posedge clk)
if (reset == 1'b1) begin
count <= 0;
end else if ( enable == 1'b1) begin
count <= count + 1;
end
endmodule
test