[转帖]ISE与Modelsim联合观察中间信号

如何仿真IP核(建立modelsim仿真库完整解析)

来源:http://www.ednchina.com/ART_49023_19_0_AN_7116cf44.HTM

IP核生成文件:(Xilinx/Altera 同)

  IP核生成器生成 ip 后有两个文件对我们比较有用,假设生成了一个 asyn_fifo 的核,则asyn_fifo.veo 给出了例化该核方式(或者在 Edit->Language Template->COREGEN 中找到verilog/VHDL 的例化方式)。asyn_fifo.v 是该核的行为模型,主要调用了 xilinx 行为模型库的模块,仿真时该文件也要加入工程。(在 ISE中点中该核,在对应的 processes 窗口中运行“ View Verilog Functional Model ”即可查看该 .v 文件)。如下图所示。asyn_fifo.v

 1. 在 ISE 集成环境中仿真 IP核

IP 核应该在新建的工程中进行仿真与例化;在原工程中可以例化使用,但好像不能直接对它加 testbench 后进行仿真。如下两图所示。

 直接在工程中对 ip核加 testbench 仿真时出错

图 1:直接在工程中对 ip核加 testbench 仿真时出错
新建工程单独对 ip核仿真

图 2:新建工程单独对 ip核仿真

2.在 modelsim中仿真 ip 核

 a.在 modelsim中编译库(Xiliinx)

 

(1)在$Modeltech_6.0d/Xilinx_lib_tt下新建文件夹 Xilinx_lib($代表安装盘符)
(2)打开 Modelsim->File->Change Diriectory,将路径指向刚才新建的文件夹 Xilinx_lib,这样 Xilinx 编译的所有库都将会在该文件夹下。
(3)编译 Xilinx 库。在$Xilinx->verilog->src 下有三个库“simprims”,“unisims”和“xilinxcorelib”。在 modelsim 的 workpace 窗口 Library 属性中点右键->new->library(或在File 菜单下 new->libary),输入库名(自定义)如 Xilinx_lib_tt,这样在 workpace library 属性下就可看到 Xilinx_lib_tt 了。
(4)modelsim 中选中 compile,在弹出的对话框中,library 选择刚才新建的 xilinx_lib_tt,查找范围为 xilinx 库($Xilinx/verilog/src/),如 XilinxCoreLib,选中文件编译即可。

 b. 在 modelsim中加载已编译的库  

  当要在 modelsim 中仿真带有 ip 核的设计时,需要加载对应公司的库才能仿真。仿真Xilinx 公司ip 核时需要在原工程文件中加入 ip 核的行为描述文件(<核名>.v)。

 

  如果工程文件直接包含在 xilinx“ XilinxCoreLib” library中,则可直接进行仿真。如果工程文件开始默认包含在“work”library 中,则需要在 Simulation->Start Simulation->library 中添加已编译的库,如图示。这样就可以对 ip 核进行仿真了。

  aa.在 modelsim中编译 Altera 的库与 Xilinx方法一样 

  bb.在 modelsim中对 ip 核进行仿真,与 xilinx 一致;首先需要在 modelsim工程中加入设计文件,testbench 文件以及核的行为描述文件(<核名>.v);其次,自 File 菜单中更改库路径指向已编译的 altera库路径(否则原先编译的 altera 库将变为不可用,unavailable),这时原先编译的库将变为可用,然后在 Simulation->Start Simulation->library中添加库路径(同Xilinx,图4,图附 3)。

 编译xilinx 库

 图 3:编译xilinx 库 
  加入库进行核仿真
图 4:加入库进行核仿真 

  使用 modelsim 进行仿真,相对在 ISE 或 Quartus 中直接调用 modelsim,至少有三个好处: 

1.速度快。仿真必然会不停的修改设计,每次修改设计后在 ISE 中需要重新综合后才能调用 modelsim;而在 Quartus 中时间花费更多,它还要等布局布线完成了才能调用。这样每次等待是件很痛苦的事。而直接在 modelsim 里面仿真,修改后只要重新编译即可仿真,速度要快的多。不过这样有一个坏处,那就是设计不一定是可综合的。但只要我们编程时时刻遵循可综合设计规则,培养良好的编程风格,这个缺点影响可减到最低。

2.调试方便。在 ISE/Quartus 中调用 modelsim仿真只能看到输入输出信 号,而对于设计的中间信号/变量,特别是ip核的内部信号/变量无法观测。而在modelsim中直接仿真可以观测设计中出现的任何信号/变量无和 ip 核内的任何信号/变量,这样我们设计的数据流向就可以很清楚的表示出来,还可以检测不同编程方式的处理效果,极大的方便了调试。

3.修改参数方便。在 modelsim中仿真 ip 核时需要将该 ip 核的行为描述文件加入到工程中去。修改该行为描述文件中 ip 核的参数可以方便的更改 ip 核特性。

  附 A:在 ISE/Quartus中直接调用 modelsim。
   a.先安装 ISE,再安装 modelsim,则 modelsim会自动嵌入到 ISE 中去,如图附 1。ISE集成环境下:Edit->Preferences->Integrated Tools可以设置常用的第三方仿真,综合工具。

 ISE 中调用 modelsim

图附 A1:ISE 中调用 modelsim

  b.直接在 ISE 中编译库

   除了可以用前面介绍的方法自己编译ISE的库外,还可以在ISE环境下自动编译库,编译完成之后将会自动嵌入到 modelsim的 libarary中去,非常方便。

   编译之前,首先把modelsim的属性文件 modelsim.ini$Modeltech_6.0d/modelsim.ini)的“只读”属性去掉,否则每次都要重新编译。然后在 ISE 环境下新建一个工程,选中芯片型号,在出现的 process 窗口中可以看到“Desin Entry Utilities”,展开它可以看到“Compile HDL Simulation Libraries”,双击它即可自动编译 ISE 的库(要确保 Process属性窗口中“Target Simulator”正确设置为“Modelsim SE”,如图附 2);编译好的库放在$Xilinx/Verilog/mti_se/ 下(在 modelsim中仿真 ip 核需添加库时指向该路径即可,如图附 3)。ISE中编译库

图附 2:ISE中编译库

ISE中编译库后自动在 modelsim里加载 
图附 3:ISE中编译库后自动在 modelsim里加载

  aa.在 Quartus 中设置第三方工具

  在 Quartus 环境下:Assignment->EDA Tool Settings->….如图附 3 所示,在“EDA Tool Settings”下拉框中选择“Simulation”窗口,设置“Tool name”(如 Modelsim(verilog)),并选中下面的“Run this tool automatically after compliation”。这样每次 Quartus 综合完之后将会自动调用 modelsim仿真了。同时要注意,在“More Setting”中“command/macro file”应选为“None”,否则当你使用别的 testbench 时,调用将会出错。 
 
  bb.在 Quartus 中自动编译库:  尚未发现有此方法,暂时只能由用户自己编译。
 
  附 B:Xilinx/Altera 库文件

a. 与 Xilinx 相关的库有三个:

  (编译路径:$Xilinx/Verilog/src/(XilinxCoreLib, unisims,simprims),编译时可改名)-L 表示仿真时需要的库文件。(下面的命名方式可以使 Modelsim对库进行准确映射)

Xilinxcorelib_ver对应 Xilinx 提供的软核的功能仿真库;

Unisims_ver  对应使用 ECS所做的原理图的功能仿真库;
Simprims_ver 对应项目布局布线以后的时序仿真库。
 b. 与 Altera 相关的库暂时只用到一个(Altera 的用的还不熟哦^_^):
(编译路径:$Quartus50/eda/sim_lib)命名方式可以任意

 

转载于:https://www.cnblogs.com/zlh840/archive/2012/05/08/2489614.html

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

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

相关文章

sql server 2008学习12 事务和锁

事务 事务的点: 1.begin tran 是事务开始的地方,也是 事务回滚的起点.也就说他会忽略这个起点之后的最终没有提交的所有语句, 2.commit tran 事务的提交 是一个事务的终点 当发出 commit tran命令时,可以认为 该事务是 持久的. 撤销已完成事务的唯一方法 是 发出一个新的事务.…

漫画:什么是时间复杂度?

时间复杂度的意义 究竟什么是时间复杂度呢&#xff1f;让我们来想象一个场景&#xff1a;某一天&#xff0c;小灰和大黄同时加入了一个公司...... 一天过后&#xff0c;小灰和大黄各自交付了代码&#xff0c;两端代码实现的功能都差不多。大黄的代码运行一次要花100毫秒&#x…

NLP 最新进展

参考文献&#xff1a; •http://www.dataguru.cn/article-14237-1.html •https://zhuanlan.zhihu.com/p/46652512 •https://github.com/google-research/bert •https://allennlp.org/elmo •https://arxiv.org/pdf/1802.05365 •https://arxiv.org/abs/1810.04805

Big GAN

参考文献&#xff1a; •https://github.com/kayamin/DR-GAN •https://www.jianshu.com/p/4ee8f9284b81 •http://cvlab.cse.msu.edu/pdfs/Tran_Yin_Liu_CVPR2017.pdf •https://arxiv.org/abs/1809.11096 •https://juejin.im/entry/5c05e76c51882539c60cf2d5 •https:…

什么样的知识,值得我们终生学习

#什么样的知识&#xff0c;值得我们终生学习&#xff1f; 原文&#xff1a;https://dwz.cn/vylyXXJi 一、引言 可能你从初中就开始抱怨&#xff1a;我学相似三角形能干什么&#xff1f;阿伏伽德罗常数有什么用&#xff1f;我一不跳楼&#xff0c;二不高空抛物&#xff0c;学自由…

美团面试题:Hashmap的结构,1.7和1.8有哪些区别,深入的分析

&#xff08;一&#xff09; 真实面试题之&#xff1a;Hashmap的结构&#xff0c;1.7和1.8有哪些区别 不同点&#xff1a; &#xff08;1&#xff09;JDK1.7用的是头插法&#xff0c;而JDK1.8及之后使用的都是尾插法&#xff0c;那么他们为什么要这样做呢&#xff1f;因为JDK1…

大数据技术之 Kafka (第 3 章 Kafka 架构深入 ) Kafka 消费者

3.3.1 消费方式 consumer 采用 pull&#xff08;拉&#xff09;模式从 broker 中读取数据。 push&#xff08;推&#xff09;模式很难适应消费速率不同的消费者&#xff0c;因为消息发送速率是由 broker 决定的。 它的目标是尽可能以最快速度传递消息&#xff0c;但是这样很…

大数据技术之kafka (第 3 章 Kafka 架构深入 ) offset讲解

新版的 Kafka 使用一个选举出来的 controller 来监听 zookeeper&#xff0c;其他 node 再去和 controller 通信&#xff0c;这么做的目的是为了减少 zookeeper 的压力。bootstrap-servers 会自动发现其他 broker&#xff0c;这也是 bootstrap 的含义 前面我们讲到了消费者&…

大数据技术之kafka (第 3 章 Kafka 架构深入 ) 消费者组案例

1&#xff09;需求&#xff1a;测试同一个消费者组中的消费者&#xff0c;同一时刻只能有一个消费者消费。 2&#xff09;案例实操 &#xff08;1&#xff09;在 backupo01、backupo02 上修改/usr/local/hadoop/kafka/kafka_2.12-2.4.1/config/consumer.properties 配置 文件…

大数据技术之kafka (第 3 章 Kafka 架构深入 ) 高效读写数据

1&#xff09;顺序写磁盘 Kafka 的 producer 生产数据&#xff0c;要写入到 log 文件中&#xff0c;写的过程是一直追加到文件末端&#xff0c; 为顺序写。官网有数据表明&#xff0c;同样的磁盘&#xff0c;顺序写能到 600M/s&#xff0c;而随机写只有 100K/s。这 与磁盘的机…

大数据技术之kafka (第 3 章 Kafka 架构深入) Zookeeper 在 Kafka 中的作用

Kafka 集群中有一个 broker 会被选举为 Controller&#xff0c;负责管理集群 broker 的上下线&#xff0c;所有 topic 的分区副本分配和 leader 选举等工作。 Controller 的管理工作都是依赖于 Zookeeper 的。 以下为 partition 的 leader 选举过程&#xff1a; Leader选举流…

LinkedList源码阅分析

LinkedList里面涉及到的一些操作&#xff0c;非常细致&#xff0c;以避免出现的空指针&#xff0c;理解后对于其优点与确定会有一个更加整体的认识吧。 继承关系图(对比ArrayList) 元素的存储结构 在LinkedList中&#xff0c;每一个元素都是Node存储&#xff0c;Node拥有一个存…

取消选中目标CALL

事先在游戏里选中一个怪物bp send,回到游戏里,按ESC&#xff0c;OD断下来,复制 返回到 elementc.072AFDD8 005869B2 返回到 elementc.005869B2 来自 elementc.0058E8A0072AFDEC 00588B1F 返回到 elementc.00588B1F 来自 elementc.00586980072AFE28 005A7346 返回到 el…

《深入理解java虚拟机》第1章 走近Java

1.6实战:自己编译JDK 想要一探JDK内部的实现机制&#xff0c;最便捷的路径之一就是自己编译- -套JDK,通过阅读和跟踪调试JDK源码去了解Java技术体系的原理&#xff0c;虽然门槛会高一点&#xff0c;但肯定会比阅读各种书籍、文章更加贴近本质。另外&#xff0c;JDK中的很多底层…

《深入理解java虚拟机》第2章 Java内存区域与内存溢出异常

Java与C之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”&#xff0c;墙外面的人想进去&#xff0c;墙里面的人却想出来。 2.1 概述 https://blog.csdn.net/q5706503/article/details/84640762 对于从事C、C程序开发的开发人员来说&#xff0c;在内存管理领域&#…

线性表的定义和基本运算之线性结构

一、线性表的逻辑定义和性质 线性表是最简单和最常用的一种数据结构&#xff0c;他是由n个数据元素&#xff08;结点&#xff09;a1,a2,a3,a4........an组成的有限序列。其中&#xff0c;数据元素个数那位表的长度。当n为0时称为空表&#xff0c;非空的线性表通常记为 &#x…

数据结构之指针复习

废话不多说&#xff0c;拿起键盘就是干&#xff0c;直接上代码&#xff1a; #include <stdio.h>int main() {double *p;double x 66.6;p &x; //x占8个字节&#xff0c;一个字节占8位&#xff0c;一个字节一个地址double arr[3] { 1.1,2.2,3.3 };double *q;q &a…

数据结构之结构体复习

为什么出现结构体&#xff1f; 为了表示一些复杂的数据&#xff0c;一些基本数据类型无法满足要求&#xff0c; 当要用一个变量描述一个对象的多个属性时&#xff0c;普通的内置数据类型是表示不了的&#xff0c;这个时候就可以用结构体回。结构体和类很相似&#xff0c;唯一不…

高效管理读书笔记

高效管理读书笔记一、优秀的权威宣言二、主要的内容要点2.1 有权威的领导都会关心自己的员工2.2 问责而不指责2.3 多点尤达&#xff0c;少点超人三、原书一、优秀的权威宣言 优秀的权威就是&#xff1a; 指出大部分人视而不见的问题的气质今天畅所欲言而不是空等明天的好心【…

蒙特卡罗方法介绍(一)

蒙特卡罗方法介绍(一) 一、蒙特卡罗方法的基本思想和解题步骤 1.1 蒙特卡罗方法的基本思想 蒙特卡罗方法也称随机模拟法、随机抽样技术或统计实验发&#xff0c;其基本思想是&#xff1a;为了求解数学、物理、工程技术或生产管理等方面的问题。首先&#xff0c;建立一个与求…