ISE 利用外部数据文件做测试的方法
来源:互联网 发布:vb modbus 编辑:程序博客网 时间:2024/06/05 18:11
太长不看版
以下是示例代码。
module Example;reg [287:0] msg [99:0];integer write_fID;integer read_fID;integer row_ptr;integer col_ptr;integer x;initial begin write_fID = $fopen("out_codeword.txt","w"); //read_fID = $fopen("Test_Message.txt","r"); //x = $fread(msg,read_fID); $readmemb("Test_Message.txt",msg); row_ptr = 0; col_ptr = 0; repeat(100) begin //repeat(288) begin $fwrite(write_fID,"%b ",msg[row_ptr]);//[col_ptr]); col_ptr = col_ptr + 1; //end row_ptr = row_ptr + 1; col_ptr = 0; $fwrite(write_fID,"\n"); end $fclose(write_fID); //这句很重要endendmodule
其中Test_Message.txt放外部数据,读入到寄存器msg,再把msg输出到out_codeword.txt
Test_Message.txt格式如下
1100000100101001011111010101100111......【共288个0/1】0010100110100110101000111000011110............【共100行】
正文
模块文件写完了,就要去测试它,简单的小模块(比如什么加法器分频器),手写测试样例也无所谓,但是一旦逻辑复杂,而且要求测试严密,覆盖所有情况的时候,就需要专门的测试样例了。这些样例一般体积大,数量多,而且基本不是你写的。这就决定了,这些样例一般是以文件的形式给到你手上的。所以在testbench里就需要有接口拿到这些文件里的测试数据。
我们可以通过ISE的系统函数完成这个功能。
我们要用到的有以下几个系统函数
$readmemb
或者$readmemh
$fopen
$fwrite
下面逐个讲怎么用
一个完整的数据循环应该是这样的:
文件->寄存器阶段,需要用到 $readmemb
用法如下:
reg [data_width-1 : 0] msg [data_count-1 : 0];$readmemb("TestFilePath/testFile.posfix",msg);
上面的两行代码,第一行定义了一个位宽为data_width,长度为data_count的寄存器组;
第二行把testFile.posfix里的数据读入了msg里
数据文件的格式参见博文一开始的“太长不看版”
注意readmemb是读入二进制数据,但不是读入二进制文件。就是说,测试数据只能有‘0’和‘1’,但是每个0/1需要占1个byte而不能是一个bit
如果需要读入的数据不是二进制的,可以用$readmemh,这个是读16进制的,读2~15进制的数据也可以用16进制的函数来读,不影响结果。
寄存器->处理->输出寄存器 阶段,不讲了,跟一般的测试是一样的。
输出寄存器->输出文件阶段 ,需要用到 $fopen
$fclose
$fwrite
用法如下:
integer write_fID;write_fID = $fopen("out_codeword.txt","w");$fwrite(write_fID,"%b ",msg[row_ptr]);
不需要过多解释,对C语言有基础性的了解就可以看懂上面的代码。
- ISE 利用外部数据文件做测试的方法
- ISE调用Notepad++的方法
- 利用外部邮箱发送邮件的方法
- 利用MCGS做旋转动画的方法
- 利用外部表做备份和恢复
- 利用python做压力测试
- 利用python做ui测试
- 利用Apache的ab命令做Benchmark性能测试
- 利用LR做性能测试中出现的常见问题解决方案
- 利用loadrunner做性能测试过程中遇到的问题
- 利用libevent做一个简单的服务器压力测试例子
- 利用LR做性能测试中出现的常见问题解决方案
- 利用LR做性能测试中出现的常见问题解决方案
- 利用LR做性能测试中出现的常见问题解决方案
- ORACLE移动数据文件的方法
- 移动数据文件的方法总结!!!
- Oracle移动数据文件的方法
- 利用cppunit实现测试的方法
- Sublime text3 环境搭建-安装Installed Packages和支持less
- eclipse配置maven (创建maven项目)
- 手机端-box-shadow
- 走到金融业的最深处:深入骨髓的金融书单
- mkconfig
- ISE 利用外部数据文件做测试的方法
- 《Android开发艺术探索》第四章View的工作原理小结
- Mysql基本使用
- HTTP协议学习# (一)request 和response 解析
- 【Linux编程】守护进程(daemon)详解与创建
- Mysql设置远程连接
- 归纳笔记05:进度条属性
- 浅谈LTE--为什么EPC选择了sctp?
- 详解PHP处理密码的几种方式