Quartus调用Modelsim SE避免重复编译Altera器件库的方法
最近用Quartus 15.0配合Modelsim SE 10.4的64位版本,簡直就是閃電一般的仿真速度。但是眾所周知,SE版本最大的問題就是每次由Quartus自動(dòng)調(diào)用時(shí),都要重新編譯所使用的器件庫,特別是使用Stratix等含有收發(fā)器、PCIE硬核等單元時(shí),仿真庫編譯時(shí)間實(shí)在太長。為了避免這個(gè)問題,一個(gè)方法就是采用Modelsim Altera版本,其含有已經(jīng)編譯好的Altera器件庫,但是存在軟件需要破解和仿真速度慢的問題。最近研究了很久,終于完美地解決了這個(gè)問題。
需要的工具:Quartus 15.0、Modelsim SE 10.4 64位版、Modelsim Altera Editon 10.3。
1.先將這三個(gè)工具軟件都安裝好,然后,將Modelsim Altera安裝目錄下的altera文件夾(我的是D:\Altera\15.0\modelsim_ae\altera)剪切到Modelsim SE安裝目錄(我的是D:\modeltech64_10.4)下,其作用是將Modelsim Altera編譯好的器件庫轉(zhuǎn)移至Modelsim SE下。
2.打開Modelsim Altera的Modelsim.ini文件(D:\Altera\15.0\modelsim_ae\modelsim.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.4\modelsim.ini)中,記得先將文件的只讀屬性去除,然后保存后再恢復(fù)只讀,這一步的作用是在Modelsim SE中映射相應(yīng)的器件庫。
4.最關(guān)鍵的一步!也是費(fèi)了我最多精力才發(fā)現(xiàn)的;打開D:\Altera\15.0\quartus\common\tcl\internal\nativelink\modelsim.tcl,這個(gè)腳本文件的作用就是生成仿真所需的.do批處理文件,在大約223行處有這樣一句語句:
……
?# if its not modelsim-altera
?if {$tool_type != "0" } {
???? # Compile libraries for SE version or Questasim
……
這意思很明白了,如果你調(diào)用的不是Modelsim的Altera版本,那對不起,所有的器件庫都需要重新編譯,哼哼,只好欺騙一下Altera的感情了,直接把if {$tool_type != "0" }判斷條件改成if {"0"},這樣不管你調(diào)用什么版本的Modelsim都不再編譯器件庫,否則,生成的.do文件中就將包含一大堆的vlib和vmap語句,也就要浪費(fèi)大把時(shí)間重新編譯。改好之后保存,從Quartus里直接調(diào)用Modelsim SE,完全不需要再編譯器件庫了。
還有,改造完后,Modelsim Altera版本完全沒有存在的必要了,可以卸載。如果想讓Altera版和SE版共享器件庫也很簡單,就是不必做第一步的altera目錄轉(zhuǎn)移,在修改SE版的modelsim.ini時(shí),將
altera_mf = $MODEL_TECH/../altera/vhdl/altera_mf
之類的語句改成:
altera_mf = D:/Altera/15.0/modelsim_ae/altera/vhdl/altera_mf
即可,其實(shí)就是換了一個(gè)映射路徑而已。
但是有一個(gè)問題請注意,就是Modelsim SE的版本號(hào)一定要大于或等于和Modelsim Altera的版本號(hào),且最好不要差距太遠(yuǎn)。否則會(huì)出現(xiàn)無法識(shí)別器件仿真庫的現(xiàn)象。比方說Modelsim SE10.1版就無法識(shí)別Modelsim Altera 10.3d的器件庫;人既然不能預(yù)知未來,那么軟件也是一樣的道理。
嘿嘿,這個(gè)移花接木的方法是不是很拽呢?
轉(zhuǎn)載自:http://blog.csdn.net/cyx/article/details/51043948
轉(zhuǎn)載于:https://www.cnblogs.com/chengqi521/p/6949970.html
總結(jié)
以上是生活随笔為你收集整理的Quartus调用Modelsim SE避免重复编译Altera器件库的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android ImageLoader(
- 下一篇: Spring MVC - URL路径映射