描述
在使用“$ readmemh(INIT_FILE,tmp_mem);”仿真RAM初始化期间,收到以下错误:
ncelab:* W,MEMODR(<filename> .v):$ readmem默认内存顺序与IEEE1364不兼容
这个警告意味着什么,我该如何避免?
解
IEEE1364描述了Verilog HDL语言的标准。在此标准中,定义了使用$ reamem命令读取内存地址的默认顺序。
在ncelab中,内存顺序与IEEE标准中定义的顺序不同。要获取有关此错误的帮助,请在Cadence工具中输入以下命令:
nchelp ncelab MEMODR
$ readmem命令定义如下:
$ readmemb(“file_name”,memory_name [,start_addr [,finish_addr]]);
$ readmemh(“file_name”,memory_name [,start_addr [,finish_addr]]);
这些命令允许可选地指定起始存储器地址和结束地址。 IEEE标准允许$ readmem命令指定一个高于结束地址的起始地址。但是,无论如何指定$ readmem命令地址值,Cadence工具始终首先从最低地址读取文件数据。这可能导致Cadence工具的行为与IEEE标准规范不同。
当起始地址是存储器范围的最低地址时,可以忽略该警告,但是,当起始地址是存储器范围的最高地址时,警告有效。
- 将最低内存地址定义为$ readmem命令的左(起始)地址
- 指定$ readmem命令的起始地址和结束地址,其中起始地址低于完成地址
没有回复内容