VCS+Verdi編譯Vivado仿真庫

開發平臺:VCS2017, Verdi2017,Vivado 2017.2

Vivado_HOME爲實際安裝Vivado的根目錄,這個目錄下有settings64.sh文件

傳統上VCS編譯Vivado編譯仿真庫後,只能VCS使用,在VCS2016版本及更高版本是無法利用kdb參數調用Verdi編譯時使用仿真庫的。

Xilinx的編譯庫命令是compile_simlib,參數模板如下:

compile_simlib  [-directory <arg>] [-family <arg>] [-force] [-language <arg>]
                [-library <arg>] [-print_library_info <arg>] -simulator <arg>
                [-simulator_exec_path <arg>] [-source_library_path <arg>]
                [-no_ip_compile] [-32bit] [-quiet] [-verbose]

除此之外,vivado還提供了另一個命令config_compile_simlib,用於配置vcs編譯時需要的參數;

config_compile_simlib  [-cfgopt <arg>] [-simulator <arg>] [-reset] [-quiet]
                       [-verbose]

使用這個下面命令可以查看當前一些庫的默認編譯參數:

config_compile_simlib -simulator vcs_mx

返回的結果如下

Current configuration settings for 'compile_simlib' are:
	vcs_mx.SYNOPSYS_SIM:synopsys_sim.setup
	vcs_mx.verilog.axi_bfm:-sverilog -nc
	vcs_mx.verilog.ieee:-sverilog -nc
	vcs_mx.verilog.simprim:+v2k -nc +define+XIL_TIMING
	vcs_mx.verilog.std:-sverilog -nc
	vcs_mx.verilog.synopsys:-sverilog -nc
	vcs_mx.verilog.unisim:+v2k -nc
	vcs_mx.verilog.vl:-sverilog -nc
	vcs_mx.vhdl.axi_bfm:-nc
	vcs_mx.vhdl.ieee:-nc
	vcs_mx.vhdl.simprim:-nc
	vcs_mx.vhdl.std:-nc
	vcs_mx.vhdl.synopsys:-nc
	vcs_mx.vhdl.unisim:-nc
	vcs_mx.vhdl.vl:-nc
You can enter the following tcl command:
	'config_compile_simlib -cfgopt {modelsim.vhdl.unisim:-source -93 -novopt}'
To change the option used to compile the vhdl unisim for modelsim to '-source -93 -novopt'

除此之外,這個命令的默認參數在下面這個位置$Vivado_HOME/data/parts/xilinx/compxlib/目錄下的acd文件內,一個文件名爲compxlib_defaults.acd($Vivado_HOME/ids_lite/ISE/data目錄同樣也有,在vivado更高版本,這個文件至在$Vivado_HOME/ids_lite/ISE/data目錄有),另一個名爲config_compile_simlib.acd;config_compile_simlib.acd內有各種仿真器的默認參數設置,可以直接修改這個,也可以使用config_compile_simlib,使用下述命令配置:

config_compile_simlib -cfgopt {vcs_mx.verilog.axi_bfm:-sverilog -nc -kdb}
config_compile_simlib -cfgopt {vcs_mx.verilog.ieee:-sverilog -nc -kdb}
config_compile_simlib -cfgopt {vcs_mx.verilog.simprim:+v2k -nc  +define+XIL_TIMING -kdb}
config_compile_simlib -cfgopt {vcs_mx.verilog.std:-sverilog -nc -kdb}
config_compile_simlib -cfgopt {vcs_mx.verilog.synopsys:-sverilog -nc -kdb}
config_compile_simlib -cfgopt {vcs_mx.verilog.unisim:+v2k -nc -kdb}
config_compile_simlib -cfgopt {vcs_mx.verilog.vl:-sverilog -nc -kdb}
config_compile_simlib -cfgopt {vcs_mx.vhdl.axi_bfm:-nc -kdb}
config_compile_simlib -cfgopt {vcs_mx.vhdl.ieee:-nc -kdb}
config_compile_simlib -cfgopt {vcs_mx.vhdl.simprim:-nc -kdb}
config_compile_simlib -cfgopt {vcs_mx.vhdl.std:-nc -kdb}
config_compile_simlib -cfgopt {vcs_mx.vhdl.synopsys:-nc -kdb}
config_compile_simlib -cfgopt {vcs_mx.vhdl.unisim:-nc -kdb}
config_compile_simlib -cfgopt {vcs_mx.vhdl.vl:-nc -kdb}

只有config_compile_simlib.acd內存在的值纔可以使用這個命令,這個命令是有侷限性,在vivado2017.2不支持配置xpm,secureip,這些可以在編譯後重新編譯。

配置完成後,執行

compile_simlib -language all -dir {預編譯庫要存放的位置} -simulator vcs  -library all -family  all -verbose -force

編譯完成後,以secureip爲例,先設置變量

ip_name=secureip

進入預編譯庫目錄內,在終端運行下述命令

$ip_name目錄下有.cxl.vhdl.*文件時需要

sed -i "s/vhdlan/vhdlan -kdb/g" $ip_name/.cxl.vhdl.*.cmd 
source $ip_name/.cxl.vhdl.*.cmd 

$ip_name目錄下有有.cxl.verilog.*文件時需要

sed -i "s/vlogan/vlogan -kdb/g" $ip_name/.cxl.verilog.*.cmd 
source $ip_name/.cxl.verilog.*.cmd 

xpm和其他各種未使用kdb編譯,或編譯引用庫時候找不到模塊,需要使用;

最後,在工程目錄下需要建立synopsys_sim.setup文件,填寫內容:

OTHERS=預編譯庫的絕對路徑/synopsys_sim.setup

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章