Modesim与Diamond联合仿真问题

Modesim与Diamond联合仿真问题

Diamond软件在3.12推出的软件版本中包含了Modesim,好处就是仿真用的库文件不用自己编译了,但是我电脑里还有其他的FPGA软件,所以还是要装一个Modesim,使用外部Modesim就会有各种奇怪的问题,以后会在这里更新记录。

1. Modesim报错: Unresolved reference to ‘GSR_INST’,Unresolved reference to ‘PUR_INST’

报错:报Unresolved reference to ‘GSR_INST’,Unresolved reference to ‘PUR_INST’
报错图片GSR_INST,PUR_INST
解决:
在tb文件中加入以下两行程序。
GSR GSR_INST(.GSR(1’b1));
PUR PUR_INST(.PUR(1’b1));

2. Diamond编译报错:logical block ‘xxx/xxx/pmi_ram_dp’ with type ‘pmi_ram_dp’ is unexpanded

报错:在软件中例化了DP_RAM,文件名称为pmi_ram_dp,例化成功后将IP生产的pmi_ram_dp.v文件加到工程后,编译报错。
'pmi_ram_dp' is unexpanded报错图片

解决:去掉pmi_ram_dp.v文件,或设置为include for simulation
原因:pmi模块不用添加,编译库默认带着的。
像PLL这种IP,例化成功后需要把.ipx文件加入到工程中。

3. Modesim报错:Instantiation of ‘EFB’ failed. The design unit was not found.

Diammond中例化了EFB,在仿真的时候报错,意思是找不到EFB IP例化生产的文件。
Modesim中已经提前添加了machxo2和pmi的库文件。
报错如下:Instantiation of 'EFB' failed
原因:EFB属于blackbox的一部分,Diamond中包含已经编译好的blackbox库,只要在Modesim中添加并指向Diamond库文件的位置,blockbox编译好的库文件位置如图,根据自己使用芯片选择对应的文件,我的芯片是Machxo2。
blockbox编译好的库文件位置

4. 仿真初始化失败,读出来全为0

Diamond例化ROM,并通过.mem文件初始化,Diamond编译正常,使用Diammond调用外部Modesim仿真发现读出数据为0,说明初始化失败。
原因1:Modesim仿真时获取.mem文件是在默认目录,这个默认目录就是Modesim工程文件的目录
解决:Diammond调用外部Modesim时会自动生成Modesim所需工程文件,并放在调用时你自己填写的文件中,比如我的文件夹名称为tb, 那么tb这个文件就在Diammond的工程文件夹中,找到这个文件夹将.mem文件拷贝过来。
刚解决了第1个原因,第二天再仿真又发现读出数据为0。。。
回想这期间做了什么,除了用Diamond软件打开过.mem文件,其他没做什么。
首先用Diammond软件再打开.mem文件,显示如下,多了红框中的内容。
由于这个.mem是我先用txt编译再保存为.mem文件,然后昨天用Diamond打开报了.mem格式不对,根据软件提示填了进制、深度、位宽数据,最终生成了下图Diamond能识别的.mem初始化文件。
Diamond使用.mem初始化文件按
然后,打开Modesim工程文件tb文件夹中的.mem,去掉红框中内容,再仿真就可以读出数据了。
原因2:用Dimamond打开过.mem文件,添加的注释内容导致Modesim无法识别.mem文件。
解决:去掉红框中的注释文件
为了防止Diamond加载初始化.mem出错,IP的初始化文件仍保留红框内容,只是仿真用的文件不带,仿真用的.mem文件格式如下。
仿真使用.mem文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值