第5章 VerilogHDL代码的测试(EDA技术)

  • 格式:doc
  • 大小:38.00 KB
  • 文档页数:3

EDA技术
第五章VerilogHDL代码的测试
第一节语句
一、延时语句“#”
延时语句用来在仿真程序中实现输入信号的延时。

格式:
#数字变量 = value;
其中“数字”代表和上一时间点的时间间隔,其单位是1/2时钟周期。

例如:
reset = 0;
#2 reset = 1;
#4 reset = 0;
表示reset初始值为零,经过一个时钟周期后取值变为1;再经过2个时钟周期,取值又变成0。

二、initial语句
一个程序块内可以有多个initial语句,该语句在程序中仅执行一次。

格式:
initial
begin
语句1;
语句2;
......
语句n;
end
三、forever语句
forever语句常用于产生周期性的波形,作为仿真测试信号,它必须写在initial块中。

格式:
Initial begin
forever #1 clock = ~clock;
end
四、always语句仍然可以使用
格式同代码中的写法一样,同样也是不断重复执行,根据触发条件选择相应操作。

五、端口定义
(1)在模块定义中不需要声明端口,以()结束即可;
(2)输入端口全部定义为寄存器(reg)类型;
(3)输出端口全部定义为线网(wire)类型。

第二节举例
一、读写状态机
module ReadWrite_test_v_tf();
// DATE: 23:29:59 10/27/2008
// MODULE: ReadWrite
// DESIGN: ReadWrite
// FILENAME: test.v
// PROJECT: ReadWrite
// VERSION:
// Inputs
reg clock;
reg reset;
reg active_in;
reg [7:0] data_in;
// Outputs
wire end_out;
wire [7:0] data_out;
wire [1:0] re_we_out;
// Bidirs
// Instantiate the UUT
ReadWrite uut (
.clock(clock),
.reset(reset),
.active_in(active_in),
.end_out(end_out),
.data_in(data_in),
.data_out(data_out),
.re_we_out(re_we_out)
);
// Initialize Inputs
initial begin
forever #1 clock = ~clock;
end
initial begin
clock = 0;
reset = 0;
active_in = 0;
data_in = 0;
#1 reset = 1;
#4 reset = 0;
#3 active_in = 1;
data_in = 8'h11;
end
endmodule。