1、时间标尺:格式:`timescale 仿真时间单位/时间精度,举例:`timescale 1ns/100ps,仿真时间单位位1ns,但是仿真时间精度可以达到100ps。
大家应该注意到有个#符号,该符号的意思是指延迟相应的时间单位。该时间单位由timescale决定.一般在testbench的开头定义时间单位和仿真精度,比如`timescale 1ns/1ps,前面一个是代表时间单位,后面一个代表仿真时间精度。以上面的例子而言,一个时钟周期是20个单位,也就是20ns。而仿真时间精度的概 念就是,你能看到1.001ns时对应的信号值,而假如timescale 1ns/1ns,1.001ns时候的值就无法看到。
2、定义信号类型:原来模块中的输入信号,定义成reg 类型,原来模块中的输出信号,定义为wire类型,但这里有个问题,如果在testbench中本身有一个模块需要,如用来产生时钟,送给要仿真的模块,那怎么定义信号类型呢?
其实还是一样的定义,输入信号定义为reg类型,输出定义为wire类型,但是这个模块的输出送给仿真模块作输入,这个输入就是wire类型了,如下图所示的clk_d1和clk_d2这两个信号就只能定义为wire类型。
3.文件的输入测试数据
有时候,需要大量的数据输入,直接赋值的话比较繁琐,可以先生成数据,再将数据读入到寄存器中,需要时取出即可。用 $readmemb系统任务从文本文件中读取二进制向量,$readmemh 用于读取十六进制文件。例如:reg [7:0] mem[0:255] // 一个8bit位宽,长度256的寄存器组initial $readmemh ( e:/readhex/mem.dat, mem ) // 将.dat文件读入寄存器组mem中initial $readmemh ( e:/readhex/mem.dat, mem, 128, 1 ) // 参数为寄存器加载数据的地址开始和结束。
4. 仿真结果写入文件
用函数 $fwrite ($fdisplay),函数功能,将数据写入到txt文件中(与fscanf正好相反)。$fwrite和$fdisplay的区别,$fwrite写下一个数不会自动转行,可以加来转行,$fdisplay则会自动转行。这里只介绍$fwrite了,$fdisplay和$fwrite基本一样的写法。
matlab是什么编程语言?matlab是编程语言吗
百度AI大巴深圳来袭_感受AI生活的便利神奇
固定频率升压型DC-DC转换器LT3581(Linear)
对于区块链的重新思考
电脑芯片的工作原理简述
关于testbench在FPGA编程中的技巧
AI芯片向ASIC转移 “中国芯”希望来了
EMS厂商艾尼克斯全程维护服务概述
康佳特推出全新载板设计培训课程
瑞萨发布兼容EtherCAT通信的MPU RZ/T2L产品阵容
rfid如何协助智慧交通的发展
将客户360度系统与GPT API集成:技术架构视角
依托光伏逆变器技术优势,古瑞瓦特开辟智能运维新跑道
基于DWC2的USB驱动开发-数据不能发送问题分析案例
数字资产交易所要搭建就选择定制开发系统得技术团队
高考后想给孩子买手机怎么选?照着京东618竞速榜抄作业不会错
成像光谱仪的原理与应用
2022年上半年PCB行业趋势大好 业绩增幅普遍位于20%-30%
吴振洲自拍视频,真实在美受羁生活
宝马进军氢动力汽车:正研发 2021年登场