在写testbench时,经常会用到文件的读取,下面示例了文件读取和写入的方法:
文件读取
![](https://img-blog.csdnimg.cn/20200515085847879.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JlX2NhbGw=,size_16,color_FFFFFF,t_70)
图中第一行定义一个文件句柄。由于打开的文件中一行中有两个10bit的十进制数据,所以定义了2个reg变量。
第6行到12行就是文件的读取过程。
使用的系统函数$fopen打开文件;
使用$feof判断文件是否读完;
使用$fscanf读取文件内容。
在实际验证中,仿真一段时间后,仿真会结束,注意在仿真结束时,要使用$fclose(dti_fid)关闭文件。
文件写入
![](https://img-blog.csdnimg.cn/20200515090838445.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JlX2NhbGw=,size_16,color_FFFFFF,t_70)
在写文件时,首先要建一个文件句柄如15行;
17-18行,声明2个10bit的输出数据dto_i和dto_r;
20-22行,建立一个文件;
24-27行,写文件。dto_vld是dto_i和dto_r数据的有效指示。
还是要注意在仿真结束时,要用$fclose(dto_fid)关闭文件句柄。