開發平臺: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