开发平台: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