【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.mzph.cn/news/826896.shtml

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

相关文章

千锤百炼之算法Scanner和System.out引起超时解决办法

题外话 觉得这个内容还是很关键的,过来写一下吧 本次内容有点抽象大家试着听一下 正题 做过算法题的人都知道,无论是在力扣还是牛客或者别的网站刷题,很多情况下都会遇到输入输出的情况,当我们用Scanner和System.out.print()就有可能产生超时问题 如下图 接下来会有一段代…

远程计算机或设备将不接受连接_解决方法

重启了下电脑遇到了无法联网的问题,解决方法如下: 打开“控制面板”; 打开Internet选项; 点击“连接”; 点击“局域网设置”; 设置选项为下图: 连接成功了: 原因: 打…

数字化到底具有何种魔力!成为跟上时代的必经之路?

数字化确实具有深远的魔力和吸引力,成为现代企业在跟上时代步伐、实现持续发展和创新的重要驱动力。相较于传统信息化,数字化转型能够为企业带来更为显著和全面的降本增效效应。 首先,数字化转型通过深度融合信息技术和管理标准化&#xff0c…

GPU版本torch使用教程

GPU版本torch使用教程 一、下载配置CUDA和CUDNN (1)进入cmd使用nvidia-smi.exe查看自己电脑支持的最新CUDA版本(可以下载地低版本),如图: 也可以通过NVIDIA控制面板(NVIDIA Control Panel&am…

HTML重要标签梳理学习

1、HTML文件的框架 使用VS Code编码时&#xff0c;输入!选中第一个&#xff01;就可以快速生成一个HTML文件框架。 2、标签 <hr> <!--下划线--> <br> <!--换行--> <strong>加粗</strong> &…

C++11——线程库的理解与使用

目录 前言 一、线程库的构造 1.默认构造 2.带参构造 3.拷贝构造与赋值拷贝&#xff08;不支持&#xff09; 4.移动构造 二、线程调用lambda函数 三、线程安全与锁 1.lambda中的线程与锁 2.函数指针中的线程与锁 3.trylock() 4.recursive_mutex 5.lock_gurad守卫锁…

JAVA-服务器搭建-创建web后端项目

首先打开IDEA 点击新建项目 写好名称-模板选择 Web应用程序 -语言选择 Java 构建系统选择 Maven 然后点击下一步 选择版本-选择依赖项 Web Profile 点击创建 点击当前文件-选择编辑配置 选择左上角的加号-选择Tomcat服务器-选择本地 点击配置-选择到Tomcat目录-点击确定 起个…

利用STM32 HAL库实现USART串口通信,并通过printf重定向输出“Hello World“

一、开发环境 硬件&#xff1a;正点原子探索者 V3 STM32F407 开发板 单片机&#xff1a;STM32F407ZGT6 Keil版本&#xff1a;5.32 STM32CubeMX版本&#xff1a;6.9.2 STM32Cube MCU Packges版本&#xff1a;STM32F4 V1.27.1 上一篇使用STM32F407的HAL库只需1行代码实现US…

云仓酒庄广西发布会盛启:新老经销商欢聚南宁

原标题&#xff1a;云仓酒庄广西发布会盛启&#xff1a;新老经销商欢聚南宁&#xff0c;共襄精酿啤酒盛宴在夏日的热情与激情中&#xff0c;云仓广西发布会于今日在美丽的南宁盛大开幕。来自各地的经销商们齐聚一堂&#xff0c;共同见证了这一盛况。此次发布会不仅是一次产品的…

2024年汉字小达人活动还有5个月开赛:来做18道历年选择题备考吧

现在距离2024年第11届汉字小达人比赛还有五个多月的时间&#xff0c;如何利用这段时间有条不紊地备考呢&#xff1f;我的建议是两手准备&#xff1a;①把小学1-5年级的语文课本上的知识点熟悉&#xff0c;重点是字、词、成语、古诗。阅读理解不需要。②把历年真题刷刷熟&#x…

数电期末复习(一)数制和码制

数制和码制 1.1 概述1.2 几种常用的数制1.2.1 十进制&#xff08;Decimal&#xff09;1.2.2 二进制&#xff08;Binary&#xff09;1.2.3 二-十进制之间的转换1.2.4 十六进制和八进制1.2.5 任意进制之间的转换 1.3 二进制代码1.3.1 二-十进制码(BCD Binary Coded Decimal)1.3.2…

2023年网络安全行业:机遇与挑战并存

2023年全球网络安全人才概况 根据ISC2的《2023年全球网络安全人才调查报告》&#xff0c;全球的网络安全专业人才数量达到了550万&#xff0c;同比增长了8.7%。然而&#xff0c;这一年也见证了网络安全人才短缺达到了历史新高&#xff0c;缺口数量接近400万。尤其是亚太地区&am…

ARM_day6:实现字符串数据收发函数的封装

程序代码&#xff1a; uart4.h&#xff1a; #ifndef __UART4_H__ #define __UART4_H__ #include"stm32mp1xx_gpio.h" #include"stm32mp1xx_rcc.h" #include"stm32mp1xx_uart.h" void uart4_config(); void putchar(char dat); char getchar();…

【电机参数】直流无刷电机机械转速、ud、uq、us、输出功率、相反电动势幅值、载波周期、转矩常数

【电机参数】直流无刷电机机械转速、ud、uq、us、输出功率、相反电动势幅值、载波周期、转矩常数 前言 【电机控制】直流有刷电机、无刷电机汇总——持续更新 使用工具&#xff1a; 1.示波器&#xff1a;PICO2205A 2.电桥LCR&#xff1a;VICIOR4090A 3.电流钳&#xff1a;汉泰…

接口测试相关

接口测试&#xff0c;接口 接口是数据交互的入口和出口 接口是一套规范和标准 统一设计标准 前后端相对独立 扩展型灵活 接口文档。 接口测试 接口测试环境&#xff0c;运行程序&#xff0c;自己搭建环境 接口测试插件 谷歌postman 火狐 restclient java测试工具为j…

Linux系统的磁盘管理与文件系统

目录 一、磁盘结构 1.物理结构 2.数据结构 二、MBR与磁盘分区表示 1.MBR 2.磁盘分区表示 分区的优点 分区的缺点 三、文件系统类型 1.文件系统的组成 XFS SWAP EXT4 2.磁盘管理工具 四、Linux系统添加新硬盘的步骤 一、磁盘结构 1.物理结构 所有存储的设备都在…

【面试经典 150 | 数组】最后一个单词的长度

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;遍历 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等内容进行回顾…

Android 性能优化之黑科技开道(二)

3. 其它可以黑科技优化的方向 3.1 核心线程绑定大核 3.1.1 定义 核心线程绑定大核的思路也很容易理解&#xff0c;现在的 CPU 都是多核的&#xff0c;大核的频率比小核要高不少&#xff0c;如果我们的核心线程固定运行在大核上&#xff0c;那么应用性能自然会有所提升。 核…

【Qt】Qt界面构建与对象管理:从 “Hello World“ 到内存释放

文章目录 1. 通过图形化界面创建控件2. 通过纯代码方式创建控件3. 对象树管理与内存管理小结&#xff1a; 在软件开发中&#xff0c;构建用户界面是至关重要的一步。Qt作为一个跨平台的C框架&#xff0c;提供了强大的界面构建工具和对象树管理机制&#xff0c;使得界面开发变得…

单页面首屏优化,打包后大小减少64M,加载速度快了13.6秒

需求背景 从第三方采购的vue2 ElementUI实现的云管平台&#xff0c;乙方说2011年左右就开始有这个项目了&#xff08;那时候有Vue了吗&#xff0c;思考.jpg&#xff09;。十几年的项目&#xff0c;我何德何能可以担此责任。里面的代码经过多人多年迭代可以用惨不忍睹来形容&a…