【Lattice FPGA 开发】Modelsim与Diamond联合仿真

本文讲解Modelsim与Diamond进行联合仿真步骤,以及对遇到问题的解决与说明。

文章目录

  • 软件版本
  • 0. Diamond设置文件为仿真文件
    • 特别注意
  • 1. Diamond设置仿真软件为Modelsim
  • 2. Modelsim编译Lattice的库文件
    • 2.1 新建文件夹存放库文件
    • 2.2 Modelsim中建立新的仿真库
      • 2.2.1 更改Modelsim工作路径
      • 2.2.2 建立新的仿真库
      • 2.2.3 编译Lattice仿真模型文件
    • 2.3 修改modelsim.ini中库文件路径
  • 3.Diamond启动仿真
  • 4. Modelsim仿真设置
  • 5.报错与解决

保证Modelsim与Diamond能够进行联合仿真的前提是:

1.Diamond软件中设置仿真软件为Modelsim;
2.Modelsim具有对应Lattice的仿真库文件。

以此便建立了Modelsim与Diamond之间的联系。至于具体仿真时出现的报错再根据报错信息一一解决。

接下来讲解设置此两前提的步骤,以及遇到的问题解决。

软件版本

博主使用的软件版本:Diamond 3.13 + Modelsim SE-64 10.7

0. Diamond设置文件为仿真文件

Diamond中设置某文件为仿真文件
在这里插入图片描述

特别注意

在联合仿真时,仿真文件testbench中要加入以下两个例化代码

GSR GSR_INST(.GSR(1'b1));
PUR PUR_INST(.PUR(1'b1));

否则可能报错:
(vopt-7063) Failed to find ‘GSR_INST’ in hierarchical name ‘GSR_INST.GSRNET’.
(vopt-7063) Failed to find ‘PUR_INST’ in hierarchical name ‘PUR_INST.PURNET’.

1. Diamond设置仿真软件为Modelsim

在Diamond中选择 Tools > Options > Environment > Directories,在Simulation的Modelsim/QuestaSim选择modelsim的安装路径:D:/modelsim/win64,注意此处的斜杠/的方向【此地址以自己安装的Modelsim目录为准,写到win64层级为止】
在这里插入图片描述

2. Modelsim编译Lattice的库文件

2.1 新建文件夹存放库文件

在Modelsim安装目录下新建Lattice文件夹,用于存放编译后的库文件。文件夹地址和文件夹命名没有要求,方便记住最佳。
在这里插入图片描述

2.2 Modelsim中建立新的仿真库

2.2.1 更改Modelsim工作路径

打开Modelsim软件,点击“file ‐‐>Change Directory” 然后打开我们在2.1中建立的仿真库文件夹。比如“D:/modelsim_10.7/Lattice” ,然后确定。

此时我们看到下方的Transcript栏显示地址跳转到了文件夹,并且正在reading XX地址下modelsim. ini的文件(如果未出现该地址,直接进Modelsim安装文件夹根目录找到该文件即可)。我们找到这个文件右键点击属性,然后去掉只读属性,确定并退出。
在这里插入图片描述

去掉只读属性:(去掉的目的是由于我们在后续进行编译库时需要向此文件内写东西,去掉只读属性才能写入)
在这里插入图片描述

(网络上的一些教程是修改Modelsim根目录下的“modelsim.ini”文件为只读属性,由于博主之前创建过Xlinx的库文件,里面也有一个“modelsim.ini”文件,经过实验发现Modelsim初始对两个“modelsim.ini”文件都会进行读取,所以修改哪个文件似乎不重要。博主选择reading地址的文件进行修改)

2.2.2 建立新的仿真库

File->NEW->library 新建一个仿真库填你建的仿真库名称
由于博主使用的是Lattice ECP5U的芯片,所以使用ECP5U来命名。
在这里插入图片描述

2.2.3 编译Lattice仿真模型文件

输入完成后,ECP5U库变成如下形态ECP5U(empty),还是空的,接下来编译库文件放进去。
在这里插入图片描述

在modelsim的菜单栏中选择Compile >> Compile,出现如下对话框。

1.注意在Library中选择刚才新建的库(ECP5U)

2.在“查找范围”中,选择Lattice对应Family的器件需要编译的文件,在编译的时候一般需要编译两个文件夹下的子文件,在本例中一个为ecp5u文件夹下的所有文件,另一个为pmi文件夹下的所有文件。在编译以前,一定要确认需要仿真的顶层文件是verilog还是VHDL。

若顶层仿真文件为Verilog,则需要编译的库文件的路径为:D:\Diamond\diamond\3.13\cae_library\simulation\verilog
若顶层仿真文件为VHDL,则需要编译的库文件的路径为:D:\Diamond\diamond\3.13\cae_library\simulation\vhdl
在这两个文件夹下,分别有ecp5u和pmi文件。pmi文件夹中的文件,主要为一些ip core的仿真库(一定记得要编译该文件夹,不然IP核无法仿真)。

选择编译ecp5u中的所有文件:Library中选择库(ECP5U)、“查找范围”选择ecp5u文件夹;ctrl+all全选后点击compile。
在这里插入图片描述

查看modelsim最下方的Transcript信息中,当编译无错后,再选择编译pmi中的所有文件:Library中选择库(ECP5U)、“查找范围”选择pmi文件夹;ctrl+all全选后点击compile。
在这里插入图片描述

此时我们已经可以看到ECP5U库不再为(empty)。
在这里插入图片描述
编译完成,在Transcript中没有错误出现后。点击Done,退出Modelsim。

2.3 修改modelsim.ini中库文件路径

打开modelsim.ini文件,在[Library]部分的最后,[vcom]的上方,会发现有一行:ECP5U = ECP5U,修改这一行为:ECP5U = 2.1中的库文件,即ECP5U =D:/modelsim_10.7/Lattice/ECP5U(注意此处的斜杠/的方向),其功能为指定仿真库的路径。修改完成后保存退出,并添加modelsim.ini的只读属性,防止错误修改

3.Diamond启动仿真

点击图标Simulation Wizard 或者 菜单栏中选择Tools > Simulation Wizard. 输入仿真工程名以及路径,选择仿真工具Modelsim.在点击Finish后会自动启动modelsim。
在这里插入图片描述

选择地址,工程名称。默认会在Froject location文件夹下创建Project name文件夹,点击Next。
在这里插入图片描述

点击YES
在这里插入图片描述

点击next,next到此页面选择仿真文件点击next,下一页点击finish后开始仿真。
在这里插入图片描述

4. Modelsim仿真设置

编译全部文件,在这个过程中如果出错,请修改。将?编译成√。
在这里插入图片描述

在modelsim的菜单栏中选择Simulate > Start Simulate,在Libraries中选择需要添加的仿真库,这个仿真库必须与所选用的器件是同一Family的,并点击OK。
在这里插入图片描述

点击Library栏,删除掉原来默认的library:
在这里插入图片描述

加入本次仿真的库:
在这里插入图片描述

点击Design栏,点击仿真文件点击OK即可完成仿真。
在这里插入图片描述

5.报错与解决

将sim页面的仿真文件信号增加到波形时出现错误:(vish-4014) No objects found matching ‘/tb_top/*’.并且看到部分信号模块未出现,只有部分或者没有Object对象可供加入wave,估计被优化了。

解决办法:重复4中的步骤,在 Start Simulate页面的Design栏选择Optimization Options…,点击Apply full visibility to all modules(full debug mode),点击OK,再次仿真即可。(原因可能是由于高版本modelsim仿真信号时被优化掉)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/620749.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

病毒繁殖-第12届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第52讲。 病毒繁殖&#xf…

Qt---控件的基本属性

文章目录 enabled(控件可用状态)geometry(位置和尺寸)简单恶搞程序 windowIcon(顶层 widget 窗口图标)使用 qrc 机制 windowOpacity(窗口的不透明值)cursor(当鼠标悬停空间上的形状)自定义鼠标图标 toolTip(鼠标悬停时的提示)focusPolicy(控件获取焦点的策略)styleSheet(通过CS…

自定义Centos的终端的命令提示符

背景 当我们使用终端登陆Centos时,就自动打开了ssh终端。这个终端的命令提示符一般是这样的: 这个以#号结束的一行字,就是我们说的命令提示符了。 这个是腾讯云的服务器的提示符,可以看到主机名是VM-4-7-centos。 但是这个看起…

考华为数通方向的HCIE认证经验分享

大家好,我是来自安阳工学院20级网络工程的楚同学。在2023年12月6日,我顺利通过了华为数通方向的HCIE认证,在此,我想分享一些备考心得给正在努力备考的小伙伴们。 关于考证的契机 在大一上学期,我们的课程安排在实验…

如何在树莓派安装Nginx并实现固定公网域名访问本地静态站点

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于托管网站或 Web 应用程序。相比其他 Web 服务器,Ngi…

ABAP MESSAGE 常用的类型

类型文本描述A终止处理终止,用户必须重启事务X退出与消息类型A 类似,但带有程序崩溃 MESSAGE_TYPE_XE错误处理受到干扰,用户必须修正输入条目,左下角提示!W警告处理受到干扰,用户可以修正输入条目,左下角提示!I信息处理受到干扰&a…

STM32存储左右互搏 SDIO总线读写SD/MicroSD/TF卡

STM32存储左右互搏 SDIO总线读写SD/MicroSD/TF卡 SD/MicroSD/TF卡是基于FLASH的一种常见非易失存储单元,由接口协议电路和FLASH构成。市面上由不同尺寸和不同容量的卡,手机领域用的TF卡实际就是MicroSD卡,尺寸比SD卡小,而电路和协…

fiddler常用操作汇总

1、过滤 2、查看数据包内容 3、弱网测试 弱网测试其实就是提前设置好一个值,在这个环境下进行测试就行了。 (1)进入定制规则页面: (2) 点击CtrlF调起搜索,在Find what 中输入300进行查找,更改上行、下行网…

【MATLAB源码-第43期】基于matlab的turbo码误码率仿真比较不同迭代次数,采用logmap/sova算法。

操作环境: MATLAB 2022a 1、算法描述 Turbo码是一种前向纠错码 (Forward Error Correction, FEC),在 1993 年由法国的两位研究员 Claude Berrou 和 Alain Glavieux 提出。这种编码技术以其接近 Shannon 极限的高性能而受到广泛关注。以下是关于 Turbo…

软考125-上午题-【软件工程】-传统软件的测试策略

一、传统软件的测试策略 有效的软件测试实际上分为4步进行,即:单元测试、集成测试、确认测试、系统测试。 1-1、单元测试(模块测试) 单元测试也称为模块测试,在模块编写完成且无编译错误后就可以进行。 单元测试侧重…

C语言文件操作详解

1. 什么是文件: 文件是计算机中存储数据的一种方式,它可以包含文本、图像、音频、视频等各种形式的信息。在计算机系统中,文件被组织成一个个独立的单元,可以通过文件名来标识和访问。文件可以存储在计算机的硬盘、固态硬盘、光盘…

初学python记录:力扣706. 设计哈希映射

题目: 不使用任何内建的哈希表库设计一个哈希映射(HashMap)。 实现 MyHashMap 类: MyHashMap() 用空映射初始化对象void put(int key, int value) 向 HashMap 插入一个键值对 (key, value) 。如果 key 已经存在于映射中&#x…