Vivado 2019.1 與 Questasim 聯合仿真


背景

最近做一個光柵尺信號數據並行處理的項目(大概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路徑。
image

編譯器件庫

新建一個文件夾來保存,我選擇/opt/xilinx_lib
接着選擇vivado菜單“Tools”——>“Compile Simulation Libraries...”命令。
在彈出的對話框中設置器件庫編譯參數,仿真工具“Simulator”選為Questasim,語言“Language”、庫“Library”、器件家族“Family”都為默認設置All(當然也可以根據自己的需求進行設置),然后在“Compiled library location”欄設置編譯器件庫的路徑,這里選前面新建的xilinx_lib文件夾,此外在“Simulator executable path”欄設置Questasim執行文件的路徑,其他參數默認,
image
着重注意"Simulator executable Path"
設置好參數后點擊“Compile”按鈕開始器件庫的編譯。圖5所示為正在編譯器件庫的過程中。器件庫編譯結束后給出編譯報告。如果結果中有錯誤,如果不是特別常用的IP可以忽略。

在工程中設置第三方仿真工具

在工程中的Flow Navigator中右鍵Simulation選擇Simulation settings
image
在彈出的對話框中,設置仿真工具為 Questasim、仿真語言為混合,當設計中用到vivado中自帶的仿真工具時,還要指定器件庫的路徑,
image
設置好仿真參數后,如果設計文件和仿真文件也准備好,那么就可以開始對設計的功能進行仿真了。選擇菜單“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

熟悉的仿真界面就會出現。
image

結尾

挖坑,有時間研究一下這個調用的具體流程,看能不能更加方便一些。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM