这两天做综合后仿真,发现FPGA器件库又不会加了,无奈上网找方法。说起来不好意思,很早就接触Modelsim这个仿真软件了,可是没有好好琢磨。把这两天找的方法贴出来,再加上自己的理解,以后忘了可以上博客翻翻,也适合新手看。(这个办法是quartusII综合完后启动Modelsim仿真综合后的网表,要是quartusII里直接启动Modelsim需不需要加库不清楚,我没试过)

-----------------------------------转载分割线-----------------------------------------------------

以下内容转载Efronc博客园http://www.cnblogs.com/Efronc/archive/2010/06/25/1765446.html

Altera仿真库(Verilog)的添加

1.设置工作路径

打开modelsim安装目录(我的modelsim安装在d:/modelsim目录下),新建文件夹altera。后面的步骤将在该目录下的primitive、altera_mf、lpm、cycloneii文件夹下存放编译的库。

启动Modelsim SE仿真工具,在主窗口中选择【file】→【change directory】命令将路径转到altera文件夹。或者在命令行中执行cd D:/modelsim/altera命令。

2.新建库

在主窗口中选择【file】→【new】→【library】命令,新建一个名为primitive的库。

3.查找编译资源库所需文件

在Quartus II安装目录下找到quartus\eda\sim_lib文件夹,用于编译资源库的文件有220model.v,220model.vhd,220pack.vhd,altera_mf.v,altera_mf.vhd,altera_mf_components.vhd,altera_primitives.v,altera_primitives.vhd,altera_primitives_components.vhd,cycloneii_atoms.v,cycloneii_atoms.vhd,cycloneii_components.vhd文件。方便起见把它们复制到altera下src文件夹下。

网上的很多教程都是把这些文件一起编译,这样适用于Verilog和VHDL混合仿真,但如果只用一种语言,如Verilog则完全没必要全部编译。这几个文件可分为Verilog组:220model.v、altera_mf.v、altera_primitives.v、cycloneii_atoms.v和VHDL组:220model.vhd、220pack.vhd、altera_mf.vhd、altera_mf_components.vhd,altera_primitives.vhd,altera_primitives_components.vhd,cycloneii_atoms.vhd,cycloneii_components.vhd。

编译时根据需要编译一组或全部编译。下面以Verilog组为例,首先编译primitive库。

4. 编译库
    在主菜单中选【compile】→【compile】命令,对altera_primitives.v进行编译。

VHDL文件编译有所不同,LPM库的220model.vhd和220pack.vhd可以同时编译,MegaFunction库的先编译altera_mf_components.vhd文件,后编译altera_mf.vhd文件,Primitiv库先编译altera_primitive_components.vhd文件,后编译altera_primitive.vhd文件,元件库,如cyclone II库先编译cycloneii_atoms.vhd文件,后编译cycloneii_components.vhd文件,如果是其他系列的元件库则只要把对应的cycloneii改成其他系列的名称即可,如cyclone库则文件改为cyclone_atoms.vhd、cyclone_components.vhd或cyclone_atoms.v。

5.重复2.4过程添加剩下的库

重复2.4过程添加剩下的库。

还有一种方法是把这些库放到一个库中,即一起编译。根据需要自行选择。

6. 配制modelsim.ini文件

这一步是为了添加进系统库,以后不用再重复添加。
    将modelsim 根目录下的配制文件modelsim.ini的属性只读改为可写,用记事本或者Ultraedit等其他文本编辑软件打开它。如下所示添加此库(注:第一步的工程必须在modelsim的安装目录下才能使用此相对路径)。注意修改后关闭并改回只读属性。

primitive = $MODEL_TECH/../altera/primitive
altera_mf = $MODEL_TECH/../altera/altera_mf
lpm = $MODEL_TECH/../altera/lpm
cycloneii = $MODEL_TECH/../altera/cycloneii

完成后如图:

7.添加搜索库

   可以根据自己需要添加某个库,可以不全加进来。如图所示:

8.编译自己的vo文件和testbench文件到work库即可仿真。

-----------------------------------转载分割线-----------------------------------------------------

另外,文章中还介绍了Modelsim中调用的四种常用库,转载如下:

-----------------------------------转载分割线-----------------------------------------------------

Modelsim仿真中会调用四种常用的仿真库:

(1)元件库,例如cycloneII元件库,在仿真中必用的特定型号的FPGA/CPLD的库。

(2)primitive,调用altera的原语(primitive)设计仿真时需要;

(3)altera_mf,调用MagaFunction的设计仿真时需要;
(4)lpm,调用lpm元件的设计仿真时需要;
    第一种元件库是进行时序仿真时不可缺少的资源库。后三种库是调用了相应的Altera设计模块进行设计时才必须用到的库。值得一提的是,在modelsim-altera的AE版本中,后三种库是已经编译好的,在modelsim-altera安装目录下altera文件夹中可以找到。

-----------------------------------转载分割线-----------------------------------------------------

记得第7步,要加库。

我在编译的时候遇到的问题:

按照上述步骤编译了cycloneii库后,仿真报错,取其中一条:

** Error: (vsim-3033) D:/projcet/modelsim_prj/div5/div5.vo(432): Instantiation of 'cycloneii_io' failed. The design unit was not found.

提示是在work库中找不到cycloneii_io,这就是没加库,按照第7步第一个图把库加上,就可以了。另外,其实把cycloneii_atoms.v直接编译到work可是可以过的,总之,只要让软件找到要的模块,就能过,只是后一种方法看起来比较随便,不够专业,呵呵。

另外,在新建project时,新手们有没注意到

在modelsim工程里头如果没写ini文件,则启动工程的时候modelsim会到安装目录下去找ini文件,如果对工程的库有改动,工程会将ini文件复制到工程目录下,打开后会发现这样一句话

[Library]

others = $MODEL_TECH/../modelsim.ini

按照上面说的做,在每次启动后这些库都在,原因就在这,这种方法适合单机,一次加好库,以后建立工程都可以用。如果只想给这个工程建库,或者modelsim装在服务器上,可以这样做:

关闭当前工程àchange directory,到你需要加库的工程à新建一个库àCompileà注意库选你新建的库,默认是work库,不要编译到work库里了

然后再打开工程,库应该就OK了~

用Modelsim仿真QuartusII综合后网表时库的添加方法(转)的更多相关文章

  1. ISE联合modelsim功能仿真和综合后仿真1

    1.代码输入 (1).新建一个ISE工程,名字为count4. (2).新建一个verilog文件 (3).选择verilog module 输入file name为count4,单击next默认知道 ...

  2. ISE联合modelsim功能仿真和综合后仿真

    1.代码输入 (1).新建一个ISE工程,名字为count4. (2).新建一个verilog文件 (3).选择verilog module 输入file name为count4,单击next默认知道 ...

  3. cadence16.6 中orcad导出网表时ERROR (ORCAP-5004)

    ORCAD网表输出时 ERROR (ORCAP-5004):Error  initializing COM  property   pages 之前遇到过这个问题,解决后忘了记录下来了.依稀记得问题答 ...

  4. 使用JS对form的内容验证失败后阻止提交 &&js校验表单后提交表单的三种方法总结

    1.form的两个事件 submit,提交表单,如果直接调用该函数,则直接提交表单 onSubmit,提交按钮点击时先触发,然后触发submit事件.如果不加控制的话,默认返回true,因此表单总能提 ...

  5. js校验表单后提交表单的三种方法总结

    第一种: 复制代码 代码如下: <script type="text/javascript">         function check(form) { if(fo ...

  6. js校验表单后提交表单的三种方法总结(转)

    第一种: 代码如下: <script type="text/javascript"> function check(form) { if(form.userId.val ...

  7. cadence16.6 中orcad导出网表时ERROR (ORCAP-5004)(win7 旗舰版32位)

    1,选择开始>运行,打开运行窗口.2,输入cmd,打开命令行窗口.3,进入cmd,找到orpxllite.ocx和orTrueReuse.ocx的所在的目录4,输入以下命令:regsvr32 & ...

  8. JS-校验表单后提交表单的三种方法总结

    第一种: <script type="text/javascript"> function check(form) { if(form.userId.value=='' ...

  9. Mysql5.7多源复制,过滤复制一段时间后增加复制一个库的实现方法

    多源复制如果是整个实例级别的复制,那不存在下面描述的情况. 如果是对其中一个或多个主实例都是过滤复制,并且运行一段时间后,想在这个源上再增加一个库怎么实现?   主1:192.168.1.10 330 ...

随机推荐

  1. seek和tell的用法--获取文件内容大小(字节)

    /*获取文件中存取的数据内容的大小(字节数) ellg() 和 tellp() 这两个成员函数不用传入参数,返回pos_type 类型的值(根据ANSI-C++ 标准) ,就是一个整数,代表当前get ...

  2. Android:控件ProgressBar进度条

    各种进度条属于 ProgressBar的子类 设置style: 环形进度条   style="?android:attr/progressBarStyleLarge" 横向进度条, ...

  3. GNU :6.47 Function Names as Strings

    链接:http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html#Function-Names GCC provides three magic var ...

  4. 基于redis实现的分布式锁

    基于redis实现的分布式锁 我们知道,在多线程环境中,锁是实现共享资源互斥访问的重要机制,以保证任何时刻只有一个线程在访问共享资源.锁的基本原理是:用一个状态值表示锁,对锁的占用和释放通过状态值来标 ...

  5. 使用JRockit进行性能优化一:环境搭建

    1. jrockit简介   jrockit前身是BA jrockit,后被oracle收购,并免费发布,但并不开源.   jrockit可以看做是兼容标准的JDK基础上的JVM,同原有的JVM相比, ...

  6. poj3666

    一道不错的dp题 就是最小修改代价,使序列变为一个非下降序或非上升(由于数据较弱直接求非下降即可,当然非上升非下降本质是一样的) 观察可得到,修改后得到的数列中的元素最后一定都在原序列中: 由此我们可 ...

  7. xss(跨站脚本攻击),crsf(跨站请求伪造),xssf

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  8. cell1这个字符串如何截取掉前边的cell剩下后边的数字 后边数字长度不固定

    cell1这个字符串如何截取掉前边的cell剩下后边的数字  后边数字长度不固定'cell1'.replace(/cell/,'')string.substr(4)string.slice(4)

  9. C++模拟键盘鼠标消息

    #include <Windows.h> /* * === FUNCTION ======================================================= ...

  10. MSP430单片机输入与输出

    MSP430单片机的输入输出线绝大多数是服用的,除了个别的端口外,基本上是8为为一组,不同的型号的MSP430的端口有所不同,就msp430F5438而言,一共有11个I/O端口,其中除了第十一P11 ...