zoukankan      html  css  js  c++  java
  • Quartus调用Modelsim SE避免重复编译Altera器件库的方法

    最近用Quartus 15.0配合Modelsim SE 10.4的64位版本,简直就是闪电一般的仿真速度。但是众所周知,SE版本最大的问题就是每次由Quartus自动调用时,都要重新编译所使用的器件库,特别是使用Stratix等含有收发器、PCIE硬核等单元时,仿真库编译时间实在太长。为了避免这个问题,一个方法就是采用Modelsim Altera版本,其含有已经编译好的Altera器件库,但是存在软件需要破解和仿真速度慢的问题。最近研究了很久,终于完美地解决了这个问题。

    需要的工具:Quartus 15.0、Modelsim SE 10.4 64位版、Modelsim Altera Editon 10.3。

    1.先将这三个工具软件都安装好,然后,将Modelsim Altera安装目录下的altera文件夹(我的是D:Altera15.0modelsim_aealtera)剪切到Modelsim SE安装目录(我的是D:modeltech64_10.4)下,其作用是将Modelsim Altera编译好的器件库转移至Modelsim SE下。

    2.打开Modelsim Altera的Modelsim.ini文件(D:Altera15.0modelsim_aemodelsim.ini),将其中的以下一段文字拷贝出来:

    ; Altera Primitive libraries
    ;
    ; VHDL Section
    ;
    altera_mf = $MODEL_TECH/../altera/vhdl/altera_mf
    altera = $MODEL_TECH/../altera/vhdl/altera
    altera_lnsim = $MODEL_TECH/../altera/vhdl/altera_lnsim
    lpm = $MODEL_TECH/../altera/vhdl/220model
    220model = $MODEL_TECH/../altera/vhdl/220model
    maxii = $MODEL_TECH/../altera/vhdl/maxii
    maxv = $MODEL_TECH/../altera/vhdl/maxv
    fiftyfivenm = $MODEL_TECH/../altera/vhdl/fiftyfivenm
    sgate = $MODEL_TECH/../altera/vhdl/sgate
    arriaii = $MODEL_TECH/../altera/vhdl/arriaii
    arriaii_hssi = $MODEL_TECH/../altera/vhdl/arriaii_hssi
    arriaii_pcie_hip = $MODEL_TECH/../altera/vhdl/arriaii_pcie_hip
    arriaiigz = $MODEL_TECH/../altera/vhdl/arriaiigz
    arriaiigz_hssi = $MODEL_TECH/../altera/vhdl/arriaiigz_hssi
    arriaiigz_pcie_hip = $MODEL_TECH/../altera/vhdl/arriaiigz_pcie_hip
    stratixiv = $MODEL_TECH/../altera/vhdl/stratixiv
    stratixiv_hssi = $MODEL_TECH/../altera/vhdl/stratixiv_hssi
    stratixiv_pcie_hip = $MODEL_TECH/../altera/vhdl/stratixiv_pcie_hip
    cycloneiv = $MODEL_TECH/../altera/vhdl/cycloneiv
    cycloneiv_hssi = $MODEL_TECH/../altera/vhdl/cycloneiv_hssi
    cycloneiv_pcie_hip = $MODEL_TECH/../altera/vhdl/cycloneiv_pcie_hip
    cycloneive = $MODEL_TECH/../altera/vhdl/cycloneive
    stratixv = $MODEL_TECH/../altera/vhdl/stratixv
    stratixv_hssi = $MODEL_TECH/../altera/vhdl/stratixv_hssi
    stratixv_pcie_hip = $MODEL_TECH/../altera/vhdl/stratixv_pcie_hip
    arriavgz = $MODEL_TECH/../altera/vhdl/arriavgz
    arriavgz_hssi = $MODEL_TECH/../altera/vhdl/arriavgz_hssi
    arriavgz_pcie_hip = $MODEL_TECH/../altera/vhdl/arriavgz_pcie_hip
    arriav = $MODEL_TECH/../altera/vhdl/arriav
    cyclonev = $MODEL_TECH/../altera/vhdl/cyclonev
    twentynm = $MODEL_TECH/../altera/vhdl/twentynm
    twentynm_hssi = $MODEL_TECH/../altera/vhdl/twentynm_hssi
    twentynm_hip = $MODEL_TECH/../altera/vhdl/twentynm_hip
    ;
    ; Verilog Section
    ;
    altera_mf_ver = $MODEL_TECH/../altera/verilog/altera_mf
    altera_ver = $MODEL_TECH/../altera/verilog/altera
    altera_lnsim_ver = $MODEL_TECH/../altera/verilog/altera_lnsim
    lpm_ver = $MODEL_TECH/../altera/verilog/220model
    220model_ver = $MODEL_TECH/../altera/verilog/220model
    maxii_ver = $MODEL_TECH/../altera/verilog/maxii
    maxv_ver = $MODEL_TECH/../altera/verilog/maxv
    fiftyfivenm_ver = $MODEL_TECH/../altera/verilog/fiftyfivenm
    sgate_ver = $MODEL_TECH/../altera/verilog/sgate
    arriaii_ver = $MODEL_TECH/../altera/verilog/arriaii
    arriaii_hssi_ver = $MODEL_TECH/../altera/verilog/arriaii_hssi
    arriaii_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriaii_pcie_hip
    arriaiigz_ver = $MODEL_TECH/../altera/verilog/arriaiigz
    arriaiigz_hssi_ver = $MODEL_TECH/../altera/verilog/arriaiigz_hssi
    arriaiigz_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriaiigz_pcie_hip
    stratixiv_ver = $MODEL_TECH/../altera/verilog/stratixiv
    stratixiv_hssi_ver = $MODEL_TECH/../altera/verilog/stratixiv_hssi
    stratixiv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/stratixiv_pcie_hip
    stratixv_ver = $MODEL_TECH/../altera/verilog/stratixv
    stratixv_hssi_ver = $MODEL_TECH/../altera/verilog/stratixv_hssi
    stratixv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/stratixv_pcie_hip
    arriavgz_ver = $MODEL_TECH/../altera/verilog/arriavgz
    arriavgz_hssi_ver = $MODEL_TECH/../altera/verilog/arriavgz_hssi
    arriavgz_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriavgz_pcie_hip
    arriav_ver = $MODEL_TECH/../altera/verilog/arriav
    arriav_hssi_ver = $MODEL_TECH/../altera/verilog/arriav_hssi
    arriav_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriav_pcie_hip
    cyclonev_ver = $MODEL_TECH/../altera/verilog/cyclonev
    cyclonev_hssi_ver = $MODEL_TECH/../altera/verilog/cyclonev_hssi
    cyclonev_pcie_hip_ver = $MODEL_TECH/../altera/verilog/cyclonev_pcie_hip
    cycloneiv_ver = $MODEL_TECH/../altera/verilog/cycloneiv
    cycloneiv_hssi_ver = $MODEL_TECH/../altera/verilog/cycloneiv_hssi
    cycloneiv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/cycloneiv_pcie_hip
    cycloneive_ver = $MODEL_TECH/../altera/verilog/cycloneive
    twentynm_ver = $MODEL_TECH/../altera/verilog/twentynm
    twentynm_hssi_ver = $MODEL_TECH/../altera/verilog/twentynm_hssi
    twentynm_hip_ver = $MODEL_TECH/../altera/verilog/twentynm_hip

    3.将上述文本拷贝到Modelsim SE的modelsim.ini(D:modeltech64_10.4modelsim.ini)中,记得先将文件的只读属性去除,然后保存后再恢复只读,这一步的作用是在Modelsim SE中映射相应的器件库。

    4.最关键的一步!也是费了我最多精力才发现的;打开D:Altera15.0quartuscommon clinternal ativelinkmodelsim.tcl,这个脚本文件的作用就是生成仿真所需的.do批处理文件,在大约223行处有这样一句语句:

    ……

     # if its not modelsim-altera
     if {$tool_type != "0" } {
         # Compile libraries for SE version or Questasim

    ……

    这意思很明白了,如果你调用的不是Modelsim的Altera版本,那对不起,所有的器件库都需要重新编译,哼哼,只好欺骗一下Altera的感情了,直接把if {$tool_type != "0" }判断条件改成if {"0"},这样不管你调用什么版本的Modelsim都不再编译器件库,否则,生成的.do文件中就将包含一大堆的vlib和vmap语句,也就要浪费大把时间重新编译。改好之后保存,从Quartus里直接调用Modelsim SE,完全不需要再编译器件库了。

    还有,改造完后,Modelsim Altera版本完全没有存在的必要了,可以卸载。如果想让Altera版和SE版共享器件库也很简单,就是不必做第一步的altera目录转移,在修改SE版的modelsim.ini时,将

    altera_mf = $MODEL_TECH/../altera/vhdl/altera_mf

    之类的语句改成:

    altera_mf = D:/Altera/15.0/modelsim_ae/altera/vhdl/altera_mf

    即可,其实就是换了一个映射路径而已。

    但是有一个问题请注意,就是Modelsim SE的版本号一定要大于或等于和Modelsim Altera的版本号,且最好不要差距太远。否则会出现无法识别器件仿真库的现象。比方说Modelsim SE10.1版就无法识别Modelsim Altera 10.3d的器件库;人既然不能预知未来,那么软件也是一样的道理。

    嘿嘿,这个移花接木的方法是不是很拽呢?

    转载自:http://blog.csdn.net/cyx/article/details/51043948

  • 相关阅读:
    [php]php设计模式 (总结)
    MySql常用命令总结
    mysql常用命令
    搜集几个API接口
    c语言 11-7
    c语言中转换字符串函数 atoi函数
    c语言中 strncmp函数, 函数原型和头文件。
    c语言中strcmp函数,函数原型和函数头文件
    c语言中strncat函数,函数原型以头文件
    c语言中strcat函数,函数原型和函数头文件
  • 原文地址:https://www.cnblogs.com/chengqi521/p/6949970.html
Copyright © 2011-2022 走看看