zoukankan      html  css  js  c++  java
  • 测试文件的简易结构

    测试文件结构

    为什么简易的测试代码可以通用呢?这要从测试文件的结构说起。首先我们将测试代码再给大家列出来一次,方便解说

    /****************************************************          

    *   Engineer        :   梦翼师兄

    *   QQ               :   761664056

    *****************************************************/

    01  `timescale 1ns/1ps //时间单位和精度定义

    02  module tb;

    03

    04  //系统输入

    05  reg clk;   //系统时钟输入

    06  reg rst_n; //系统复位

    07  //系统输出

    08  wire [3:0]pio_led;//LED驱动输出

    09  

    10  initial

    11      begin

    12          clk=0;

    13          rst_n=0;

    14          #1000.1 rst_n=1;

    15      end 

    16      

    17      always #10 clk=~clk;//50MHz时钟

    18      

    19  led_learn led_learn(

    20          .clk(clk),       //系统时钟输入

    21          .rst_n(rst_n),   //系统复位

    22          .pio_led(pio_led)//LED驱动输出

    23        );

    24  endmodule

    代码05-08行,相当于是“导线定义”,被测试模块所有的输入都要定义为 “reg”类型,被测试模块所有的输出都要定义为“wire”类型。

    代码10-15行,测试激励编写模块。通过该模块我们可以给准备输入到被测试模块的“导线”赋值。

    代码17行,通过always 块,可以实现clk信号自取反操作的无限循环,产生无限个数的时钟,方便仿真

    代码19-23行,我们术语叫做“模块实例化”,实际上,大家可以等效理解为是“导线连接”,即将对应的导线连接到我们的待测试电路对应端口。

    由此可见,待测试内部逻辑的变化对我们测试模块的编写是没有任何影响的,对于测试文件来说,我们关心的只是待测试模块的端口,仅此而已。大家以后开发过程中用到的测试文件实际上就是以此测试文件为基础,进行简单的修改就可以使用,相信大家一定会有一种似曾相识的感觉。

  • 相关阅读:
    icomet研究
    python使用ssdb的队列,用于替换canal+rabbitmq
    最近关于mysql的造型,binlog使用,以及阿里云上线数据处理错误导致被处罚的思考
    删除一个存在的RabbitMQ队列
    检查Rabbitmq中队列及消息个数,还有清空的方法
    Mysql在master上查看有哪些slave
    查看Linux端口的占用及连接情况
    Kettle根据时间戳同步数据实现
    kettle的下载、安装和初步使用(windows平台下)(图文详解)
    golang学习 ----获取URL
  • 原文地址:https://www.cnblogs.com/mengyi1989/p/11515971.html
Copyright © 2011-2022 走看看