在进行HDL的仿真测试时,除了用较为直观的波形仿真图像以外,通过编写测试文件testbench进行仿真并将仿真结果保存在对应的文件,显得尤为重要。文件的操作主要用到读和写两种操作。
1. 读操作
读操作用到的语句是:$readmemb()或$readmemh()。
以$readmemb()为例,它的调用为
$readmemb("file_name",memory)
file_name:可以是.txt、.doc等格式的文件,但必须遵守ROM的规范,即其内容形式必须 如下:
@00 01010_01001010010010101010
@01 000010100101001001_0010010
.......
@0f 0010101010101_010010010010
其中:@后紧跟的ROM单元的地址,它必须用十六进制表示。在ROM单元地址与其后 的二进制比特流串之间至少要有一个空格(亦可以有回车);比特流可以用"_"隔开,以增强程序的可读性。
memory:memory的声明格式为:
reg[WORD_LEN-1 : 0] my_rom [WORD_NUM-1 : 0];
其中:WORD_LEN代表的是每一个ROM向量的长度,即二进制流的长度;WORD_NUM代表的是ROM向量的个数。
值得注意的是执行完$readmemb()指令后文件中的对应单元就一次性的存储到my_rom当中。在后续的处理中my_rom只能通过其地址访问,一次性地读取对应地址上的向量,如my_rom[k];而不能访问到具体的每一位或几位&