概述
几年前总结过一篇关于如何在ModelSim SE版本中提取ALTERA仿真库的Blog,参考[1]。该文基本可以用来指导笔者用于库提取,每次电脑崩溃后重装系统时都需要参考,提取库的工作不是经常做,时间久了,基本步骤肯定忘记了。最近调试ALTERA的高速模块-GXB,找ALTERA要了一个GXB的仿真参考例子,发现居然是基于Verilog HDL的,本人向来只用VHDL,所以以前提取的仿真库是基于VHDL。为了仿真,要么修改原例程到VHDL,要么重新提取基于Verilog HDL的库。以前遵循的惯例是VHDL和Verilog的库分开提取,现在由于临时要用到Verilog库,试着将其和VHDL的库编译到一起,检验仿真是否能通过。
注:ModelSim版本为ModelSim SE PLUS 6.5a。
提取库步骤
这里首先复习提取仿真库的步骤,具体可以参考[1],这里只列出步骤,如下所示:
l选择仿真库存放路径
l创建新仿真库
l将ALTERA库文件编译到仿真库中
l配置好ModelSim
仿真ALTERA器件需要的库介绍
一般仿真ALTERA器件的时候,需要的库包括(在ModelSim AE版本中可以看到)lpm、sgate、altera_mf、altera以及相应的器件库(做时序仿真的时候器件库必需,不过功能仿真可以不包含)。高速器件如果需要仿真GXB模块,那么功能仿真的时候有个库是必须的,即hssi库。图1显示了已经将基于VHDL仿真库提取完后ModelSim的视图,可以看到上述提到几个库都在,注意图1中多了一个器件库(ArriaGX)。参考[1]有提到,在6.3b版本的时候,仿真ALTERA的IP或者兆核函数的时候,如果生成设计文件的时候基于VHDL,那么必须单独建立并编译上述各个库,不能笼统地编译一个altera库或者和work库编在一起,如果是Verilog则可以。具体缘由,现在不可查,本文要论述的是虽然按照上述命名将各种库分开编译建立,但是如果将VHDL和Verilog库编译在一起是否可行,而不必分别建立诸如lpm和lpm_ver分开的库。
各个库需要编译的库文件如表1所示。
表1:仿真库编译所需文件
图1:已经提取好VHDL仿真库
图2:基于VHDL的sgate库
图3:在原有sgate库基础上编译Verilog库文件后的结果
图2是笔者一直在使用的基于VHDL的sgate仿真库,根据上述描述,笔者想将两类HDL库编译在一起,结果如图3所示,之前编译好的同名的苦被替换了,由此证明无法将两类HDL相同的库编译在一起,必须分开命名。所以依据表1,新建Verilog库,并在库名后加“ver”后缀以示区别。
再创建上述新库之前,一般先创建一个新库存放的目录(注意上一节第一步就是选择路径)。为了区别于VHDL,这里重新创建一个“Altera_verilog_lib”目录。我们首先来创建lpm_ver库,如图4所示。
图4:新建的lpm_ver库
图4只是新建了一个库,并没有对其进行编译,也没有配置映射(map),所以如果这时候关掉软件重新打开,就如图4所示“unavailable”。按照上一节步骤,依次创建其它的库,并将它们编译后,最后还要别忘记对库地址进行配置映射,否则还是会显示“unavailable”。
图5是Verilog库编译建立好之后ModelSim库页面视图,这样笔者就是可以进行仿真ALTERA设计了,不管设计是基于VHDL还是Verilog。
图5:重新编译建立的Verilog仿真库与VHDL仿真库同时存在
配置文件说明
ModelSim的配置文件是一个名字叫“modelsim.ini”的ASCII码文件,可以由用户来控制并修改。这个文件是在ModelSim安装的时候在安装目录下自动生成的,这个文件可以被编译器以及仿真器使用(注意ModelSim包含编译器)。此外该配置文件主要还包括下列一些初始化信息:
l库位置信息
l软件启动文件位置信息
l其它ModelSim默认设置
上述“库位置信息”在进行库提取的时候非常有用,用户提取仿真库以后必须配置好这个位置信息,不然如图4那样,尽管仿真库编译好还是会因为找不到位置而“unavailable”。
ModelSim按照以下顺序搜索配置文件modelsim.ini:
1) 环境变量“MODELSIM”直接指定的modelsim.ini文件
2) 位于当前工作目录下的modelsim.ini文件
3) 默认ModelSim软件安装目录下modelsim.ini文件
分析及结论
本位验证了仿真两类HDL(VHDL和Verilog HDL)设计的ALTERA项目必须分开建立仿真库。给出了各种不同库编译时所需要的文件,特别是对于需要仿真GXB的时候,sgate和hssi两个库是不能少的。
参考
[1]http://www.eeskill.com/article/id/38697 在ModelSim SE版本中提取Altera库