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

news2024/11/26 15:51:45

本文讲解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.coloradmin.cn/o/1606837.html

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

相关文章

探秘Redis:从数据类型到API

欢迎大家关注我的微信公众号“软件求生”,我们将会定期为大家带来更多有趣的技术分享和实用的开发技巧。感谢大家的支持! 大家好,我是小米,今天我们来聊一聊阿里巴巴面试中经常会遇到的一个热门话题——Redis数据类型和相关API。Redis作为一款高性能的键值对存储数据库,其…

LevelDB源码阅读笔记(1、整体架构)

LevelDB源码阅读笔记(1、整体架构) LeveDB源码笔记系列: LevelDB源码阅读笔记(0、下载编译leveldb) LevelDB源码阅读笔记(1、整体架构) 前言 对LevelDB源码的博客,我准备采用总…

HZNUCTF第五届校赛实践赛初赛 Web方向 WriteUp

ezssti 很简单的ssti 源码给了,调用Eval即可执行命令 package mainimport ("fmt""net/http""os/exec""strings""text/template" )type User struct {Id intName stringPasswd string }func (u User) Ev…

短视频去水印解析接口 可测试

短视频解析聚合接口80多个热们短视频平台。可测试 接口开发文档: 返回格式: JSON 请求方式: GET/POST 示例请求地址:https://www.dspqsy.vip/spapi?keykey&url短视频url 请求参数说明: 字段必填类型说明url是…

Golang | Leetcode Golang题解之第36题有效的数独

题目: 题解: func isValidSudoku(board [][]byte) bool {var rows, columns [9][9]intvar subboxes [3][3][9]intfor i, row : range board {for j, c : range row {if c . {continue}index : c - 1rows[i][index]columns[j][index]subboxes[i/3][j/3]…

2021年全国大学生电子设计竞赛D题——基于互联网的摄像测量系统(二)

09 电路设计 前面介绍了系统的硬件框图如下: 硬件基本分为三块,两个摄像节点,一个终端节点。 1. 摄像节点硬件 摄像节点由一个DE10-Nano开发板和一个D8M摄像头实现,DE10-Nano开发板的HDMI接口外接HDMI显示器来显示拍摄到的视频。…

Linux下SPI设备驱动实验:验证读写SPI设备中数据的函数功能

一. 简介 前面文章实现了 SPI设备驱动框架,并在此基础上添加了字符设备驱动框架,实现了读 / 写SPI设备中数据的函数,文章如下: Linux下SPI设备驱动实验:向SPI驱动框架中加入字符设备驱动框架代码-CSDN博客 Linux下…

基于springboot实现工程教育认证的计算机课程管理平台项目【项目源码+论文说明】

基于springboot实现计算机课程管理平台系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于工程教育认证的计算机课程管理平台的开发全过程。通过分析基于工程教育认证的计算机课程管理平台管理的不足…

opencv | 编译缺失ippicv相关文件解决方案

1.执行cmake后,查看控制台输出信息 ~/VM_data/opencv-4.9.0$ cd buile_temp ~/VM_data/opencv-4.9.0/buile_temp$ cmake ..2.去浏览器打开链接,下载对应的压缩包,解压到 路径:/3rdparty/ippicv/

【Canvas技法】四条C形色带填满一个圆/环形

【关键点】 通过三角函数计算控制点的位置。 【成果图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>四条C形色带填满一个…

2024华中杯C题平面曲线重建思路

华中杯数学建模思路 光纤传感技术是伴随着光纤及光通信技术发展起来的一种新型传感器技 术。它是以光波为传感信号、光纤为传输载体来感知外界环境中的信号&#xff0c;其基本原理是当外界环境参数发生变化时&#xff0c;会引起光纤传感器中光波参量&#xff08;如波长、相位、…

IDEA使用SCALA

一、在IDEA中下载插件 在设置->插件中找到scala&#xff0c;并下载。 下载完成后重启idea 二、在idea中创建spark的RDD操作项目 新建项目选中Scala。 创建完成后为项目添加java包&#xff0c;这个添加的是spark安装包中jars目录下的所有jar包 然后编写RDD操作 import or…

24年蓝桥杯java-b组

24年蓝桥杯javaB组 蓝桥杯在昨天考完了&#xff0c;结果很不乐观&#xff0c;哎&#xff0c;还是太笨了&#xff0c;脑子确实转的慢&#xff1b;&#x1f625; 本篇博客中解题思路和代码并不一定完全正确&#xff0c;是我和同学们讨论的解答方法&#xff0c;但并未使用官方题…

Sharding-JDBC笔记1

Sharding-JDBC笔记1 1.分库分表1.1 垂直分库1.2 垂直分表1.3 水平分库1.4 水平分表 2.存在问题2.1 事务一致性2.2 跨节点关联查询2.3 跨节点分页、排序函数2.4 主键避重2.5 公共表 1.分库分表 分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题&#xff0c;将原来…

亚马逊云挂机项目,单机600+,详细拆解

一、什么是亚马逊云挂机项目&#xff1f; 此项目有很多种叫法&#xff0c;也有人叫它亚马逊店铺挂机浏览项目。 二、赚钱原理&#xff1f; 新入驻的亚马逊商家往往是没有流量和曝光的&#xff0c;为了让店铺的商品更多的被人看到&#xff0c;花钱在平台直接买流量又不划算&a…

android远程更新下载apk

最近业务有涉及到&#xff0c;奈何是个app代码小白&#xff0c;遂记录一下 一&#xff1a;AndroidManifest.xml文件配置 application标签里面加上 android:networkSecurityConfig"xml/network_config" <!-- app下载更新配置--> <uses-permission andr…

国内主流的盗版软件检测工具有哪些?盗版软件检测工具推荐

在当前数字化时代&#xff0c;企业面临着越来越多的挑战&#xff0c;其中之一就是如何防止员工私自安装使用盗版软件。盗版软件不仅侵犯了知识产权&#xff0c;还可能给企业带来诸多风险如安全隐患、法律纠纷和财务损失。因此&#xff0c;企业需要采取一系列措施来防范员工私自…

Qt实现XYModem协议(六)

1 概述 XMODEM协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。这种协议以128字节块的形式传输数据&#xff0c;并且每个块都使用一个校验和过程来进行错误检测。使用循环冗余校验的与XMODEM相应的一种协议称为XMODEM-CRC。还有一种是XMODEM-1K&am…

分布式系统的监控基础架构Dapper

文章目录 基本设计目标监控系统设计基本要求三个基本设计目标 Dapper监控系统简介三个基本概念区间Helper.Call的详细信息监控信息的汇总监控数据汇总单独进行的原因 关键性技术轻量级核心功能库二次抽样技术 常用Dapper工具Dapper存储API 基本设计目标 监控系统设计基本要求 …

力扣(leetcode) 42. 接雨水 (带你逐步思考)

力扣(leetcode) 42. 接雨水 &#xff08;带你逐步思考&#xff09; 链接&#xff1a;https://leetcode.cn/problems/trapping-rain-water/ 难度&#xff1a;hard 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多…