testbench内容整体框架_1

testbench其本质也是一个模块,但是我们把它看成是一个不具有外部接口的模块

  •  testbench模块声明

故开头是

module testbench_comp;    //testbench_comp是testbench声明的模块名称
...
endmodule                //模块结尾标志

使用符号常量parameter声明常数

如声明clock_period来指定clock的周期时间

parameter CLOCK_PERIOD=10;        //声明常量CLOCK_PERIOD的值是10
  • 仿真模块实例化

在实例化要simulation仿真的模块时,要先声明该模块所需要的接口变量。原则是,testbench模块需要更改值,作为输入变量输入到实例化的模块中时,应声明为reg变量,该变量在实例化模块中必须为wire类型。在实例化模块中,作为reg类型,在内部读写寄存器的,在testbench中,应声明为wire类型,可以用于供testbench读值来显示。

原则:寄存器只能由一个过程块进行操作

reg clk;
reg in0,in1;        //reg输入到comp模块中的wire
wire eq,lt,gt;      //comp模块中reg输出为wire          

comp comp_1(.clk(clk),
           .in0(in0),
           .in1(in1),
           .eq(eq),
           .lt(lt),
           .gt(gt));    //按名称进行实例化

//comp模块原型
module comp
(
input clk,
input in0,in1,
output reg eq,lt,gt
    );
  • 设置时序

使用Initial过程块及#num进行延时num ns后进行执行

initial                                
//Initial过程块标志符号,用begin、end来声明initial过程块的边界
begin
clk=0;                                
forever #(CLOCK_PEROID/2) clk=~clk;   
//forever一直循环,#(CLOCK_PEROID/2)延时(CLOCK_PEROID/2)ns后,执行clk=~clk
end

设置实例化模块输入数据时序

initial
begin
    in0=1'b0;
    in1=1'b1;
    
    #100
    in0=1;
    in1=1;
    
    #100
    in0=1;
    in1=0;
    
    #100
    $stop;            //到此处执行中断,simulation仿真停止
end

  • 整体代码

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2022/03/01 15:06:18
// Design Name: 
// Module Name: testbench_comp
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module testbench_comp;
parameter CLOCK_PEROID=10;
reg clk;
reg in0,in1;
wire eq,lt,gt;

comp comp_1(.clk(clk),
           .in0(in0),
           .in1(in1),
           .e_q(eq),
           .lt(lt),
           .gt(gt));

initial
begin
clk=0;
forever #(CLOCK_PEROID/2) clk=~clk;
end

initial
begin
    in0=1'b0;
    in1=1'b1;
    
    #100
    in0=1;
    in1=1;
    
    #100
    in0=1;
    in1=0;
    
    #100
    $stop;
end
endmodule

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值