微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > ISE自带仿真Isim与第三方仿真软件modelsim6.6的仿真结果不一致,求解

ISE自带仿真Isim与第三方仿真软件modelsim6.6的仿真结果不一致,求解

时间:10-02 整理:3721RD 点击:
各位好:
      同样一个仿真程序,以下是仿真程序的有关片段:
reg [31:0]image[127:0];
reg [31:0]a;
initial
     begin
     $readmemh ("data.txt",image);
     for(i=0;i<=61343;i=i+1)
        begin
        #10;
        a=image[i];
        end
     end
      data.txt文件里十六进制数据已有且格式正确无误。在modelsim6.6里仿真寄存器a和image都有数据,且正确。但在ISE自带仿真软件Isim里仿真的话寄存器a和image都无数据,显示XXXXXXXXXXXXXXX,为什么会出现这种不一致啊?

另外用modelsim仿真的时候修改了源程序之后再在modelsim里编译好,而仿真结果依然不会更新,显示的还是修改前的结果。ISE自带的Isim也存在这个问题,不过再重新建个工程重新仿真就好了,这是什么原因呢?

你这个写法是错的,不同软件对错误的解释不一样,应该改成
reg [31:0]image;
reg [31:0]a;
initial
     begin
     $readmemh ("data.txt",image);
     for(i=0;i<=61343;i=i+1)
        begin
        #10;
        a=image;
        end
     end

问题也有可能出在这里,你声明的image只有128组,但是for循环却打印到61343个,应该是只有前面的128个有值,之后就XXXXX了。你仔细看看波形图,是不是前128个有而你没看清。



    他那样写没有错吧?他定义了128深度的数组,可能是FOR循环写的不对,应该前128个有数据。



    二楼的朋友,我的想法和四楼那位朋友一样,我是申请的128位深度的存储器,况且我个人认为按照你的写法寄存器a是不会变的,for循环也就无意义了。我在modelsim上仿真的是前128位有数据,后面为XXXXXXXXXXXXXXX,这是正确的,问题是用Isim就全是XXXXXXXXX,不过你说的不同的仿真器对程序的处理不同还是很有道理的



    三楼的朋友,我很确定modelsim仿真前128位有数据,后面位XXXXXXXX,而用ISE自带的Isim仿真结果全部是XXXXXXXXX。
而且我把存储器image的深度改为61344,并且data.txt文件数据做了相应补充之后,modelsim仿真完全正确,但Isim仿真的依然全部是XXXXXXXXX。

路径。



    既然modelsim能仿真,说明路径也没有问题,应该不会出现同样的路径modelsim能识别而Isim识别不了的问题吧

建议使用绝对路径试试看,应该就OK啦

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top