背景
最近做一個光柵尺信號數據並行處理的項目(大概40路信號),加上了各種處理組件之后,vivado自帶的仿真的速度特別慢,大部分時間在等待仿真結果。聽過modelsim仿真的速度較快,因此就計划做聯合仿真。另外我的開發環境在Ubuntu 18.04下進行。
安裝
參考eetop論壇的安裝方法,LINUX-x64系統安裝Questasim-10.7c的詳細流程 求CRACK
最近剛好裝上,下面的路徑需要修改自己的路徑,只安裝32位的程序把下面linux_x86_64改成linux就行了,目前在Linux Mint 19.3下測試成功
1.安裝必要包
sudo apt-fast install default-jre default-jdk ia32-libs lsb dos2unix
2.必要設置
sudo mkdir /usr/tmp
sudo touch /usr/tmp/.flexlm
3. 安裝Questasim-10.7c
sudo chmod 755 install.linux64
sudo ./install.linux64
進入圖形化安裝界面根據需要安裝64還是32位的
安裝結束
4.Crack
將sfk文件拷貝到<安裝目錄>/linux_x86_64/mgls/lib
sudo chmod 755 sfk #sfk文件權限為755
sudo ./sfk rep -yes -pat -bin /5589E557565381ECD00000008B5508/31C0C357565381ECD00000008B5508/ -bin /5589E557565381ECD8000000E8000000005B81C3/33C0C357565381ECD8000000E8000000005B81C3/ -bin /41574989FF415641554154554889CD534489C3/33C0C389FF415641554154554889CD534489C3/ -dir .
如果出現./sfk: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory
則說明少安裝了包,這里需要安裝32位的包
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libstdc++5:i386
6. license文件生成
在windows環境下進行下面操作
-- 修改修改license.src文件
- 第一行:修改成自己主機名和mac地址 mac地址沒有冒號
- 第二行:mgcld <安裝目錄>/linux_x86_64
- 全文:修改一下過期時間!
具體可以參考這個demo license.src demo
運行 run_me.bat 文件
將生成的mentor.dat文件拷貝到linux 的home目錄
執行dos2unix ./mentor.dat
7. 環境變量設置
vim ~/.bashrc
添加下面幾行
export LM_LICENSE_FILE=/home/test/mentor.dat
#修改路徑
export PATH=$PATH:<安裝目錄>/linux_x86_64
alias licm="lmgrd -c /home/test/mentor.dat"
8. 開啟license驗證
執行 licm
9. 打開Questasim
執行 vsim
聯合仿真配置
本節參考 vivado與modelsim的聯合仿真(一), 但是這個文章中的圖片都不見了。
設置 Questasim 路徑
在vivado菜單中選擇“Tools”——>“Settings...”,在"Tool Setings"下的"3rd Party Simulators"中設置QuestaSim路徑。
編譯器件庫
新建一個文件夾來保存,我選擇/opt/xilinx_lib
接着選擇vivado菜單“Tools”——>“Compile Simulation Libraries...”命令。
在彈出的對話框中設置器件庫編譯參數,仿真工具“Simulator”選為Questasim,語言“Language”、庫“Library”、器件家族“Family”都為默認設置All(當然也可以根據自己的需求進行設置),然后在“Compiled library location”欄設置編譯器件庫的路徑,這里選前面新建的xilinx_lib
文件夾,此外在“Simulator executable path”欄設置Questasim執行文件的路徑,其他參數默認,
着重注意"Simulator executable Path"
設置好參數后點擊“Compile”按鈕開始器件庫的編譯。圖5所示為正在編譯器件庫的過程中。器件庫編譯結束后給出編譯報告。如果結果中有錯誤,如果不是特別常用的IP可以忽略。
在工程中設置第三方仿真工具
在工程中的Flow Navigator
中右鍵Simulation
選擇Simulation settings
在彈出的對話框中,設置仿真工具為 Questasim、仿真語言為混合,當設計中用到vivado中自帶的仿真工具時,還要指定器件庫的路徑,
設置好仿真參數后,如果設計文件和仿真文件也准備好,那么就可以開始對設計的功能進行仿真了。選擇菜單“Flow”——>“Run Simulation”——>選相應的仿真類型或點擊流程向導中的“Run Simulation”——>選相應的仿真類型進行仿真,
聯合仿真
不知道為什么,我按照上面的配置完成之后,並不會出現仿真的界面,但是看log中應該是完成了全部的仿真流程的。
INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s).
Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 8909.766 ; gain = 0.000 ; free physical = 127 ; free virtual = 2014
INFO: [Project 1-111] Unisim Transformation Summary:
A total of 1 instances were transformed.
IBUFGDS => IBUFDS: 1 instances
RTL Elaboration Complete: : Time (s): cpu = 00:00:15 ; elapsed = 00:00:10 . Memory (MB): peak = 8992.863 ; gain = 460.945 ; free physical = 143 ; free virtual = 1887
52 Infos, 156 Warnings, 0 Critical Warnings and 0 Errors encountered.
synth_design completed successfully
synth_design: Time (s): cpu = 00:00:17 ; elapsed = 00:00:13 . Memory (MB): peak = 8992.863 ; gain = 615.141 ; free physical = 142 ; free virtual = 1887
這時不會出現仿真界面。暫時還沒找到什么好的解決辦法。下面記錄一下我臨時的解決辦法吧。
打開 Questasim
首先,vivado會把仿真相關的腳本,生成在<project_home>/<project_name>.sim/sim_1/behav/questa
路徑下,該路徑下會存在三個關鍵腳本
# top_tb_compile.do
# top_tb_elaborate.do
# top_tb_simulate.do
# top_tb.udo
# top_tb_wave.do
在這個路徑下在shell中輸入vsim
來啟動仿真。
在打開的 Questasim 下方的console中輸入
do top_tb_compile.do
返回
# ** Warning: (vlib-34) Library already exists at "questa_lib/work".
# ** Warning: (vlib-34) Library already exists at "questa_lib/msim".
# ** Warning: (vlib-34) Library already exists at "questa_lib/msim/xil_defaultlib".
# QuestaSim-64 vmap 10.7c Lib Mapping Utility 2018.08 Aug 17 2018
# vmap xil_defaultlib questa_lib/msim/xil_defaultlib
# Modifying modelsim.ini
# QuestaSim-64 vlog 10.7c Compiler 2018.08 Aug 17 2018
# Start time: 10:27:04 on Jun 16,2021
# vlog -64 -incr -work xil_defaultlib "+incdir+../../../../user_code/ip/pll" ../../../../user_code/ip/fifo_synchronize/sim/fifo_synchronize.v
# -- Skipping module fifo_synchronize
#
# Top level modules:
# fifo_synchronize
# End time: 10:27:04 on Jun 16,2021, Elapsed time: 0:00:00
# Errors: 0, Warnings: 0
# QuestaSim-64 vcom 10.7c Compiler 2018.08 Aug 17 2018
# Start time: 10:27:04 on Jun 16,2021
# vcom -64 -93 -work xil_defaultlib ../../../../user_code/ip/fir_LPF/sim/fir_LPF.vhd
# -- Loading package STANDARD
# -- Loading package TEXTIO
# -- Loading package std_logic_1164
# -- Loading package NUMERIC_STD
# -- Compiling entity fir_LPF
# -- Compiling architecture fir_LPF_arch of fir_LPF
# End time: 10:27:04 on Jun 16,2021, Elapsed time: 0:00:00
# Errors: 0, Warnings: 0
# QuestaSim-64 vlog 10.7c Compiler 2018.08 Aug 17 2018
# Start time: 10:27:04 on Jun 16,2021
# vlog -64 -incr -work xil_defaultlib "+incdir+../../../../user_code/ip/pll" ../../../../user_code/ip/pll/pll_clk_wiz.v ../../../../user_code/ip/pll/pll.v ../../../../user_code/adc.v ../../../../user_code/adc_top.v ../../../../user_code/delay_driver_syn.v ../../../../user_code/fir_ip_top.v ../../../../user_code/phase_difference_measure.v ../../../../user_code/sync_fsm.v ../../../../user_code/synchronize.v ../../../../user_code/top.v ../../../../user_code/top_tb.v
# -- Skipping module pll_clk_wiz
# -- Skipping module pll
# -- Skipping module adc
# -- Skipping module adc_top
# -- Skipping module delay_driver_syn
# -- Skipping module fir_ip_top
# -- Skipping module phase_difference_measure
# -- Skipping module ff_zero_
# -- Skipping module Phase_sample_clk
# -- Skipping module ForeheadJudgment
# -- Skipping module sync_fsm
# -- Skipping module synchronize
# -- Skipping module top
# -- Skipping module top_tb
#
# Top level modules:
# top_tb
# End time: 10:27:04 on Jun 16,2021, Elapsed time: 0:00:00
# Errors: 0, Warnings: 0
# QuestaSim-64 vlog 10.7c Compiler 2018.08 Aug 17 2018
# Start time: 10:27:04 on Jun 16,2021
# vlog -work xil_defaultlib glbl.v
# -- Compiling module glbl
#
# Top level modules:
# glbl
# End time: 10:27:04 on Jun 16,2021, Elapsed time: 0:00:00
# Errors: 0, Warnings: 0
因為之前在vivado生成仿真文件的時候,會自動執行一遍,所以log里面有大量的skip,可以節約時間。
再輸入
do top_tb_simulation.do
熟悉的仿真界面就會出現。
結尾
挖坑,有時間研究一下這個調用的具體流程,看能不能更加方便一些。