在Questasim中模拟.xci文件

时间:2015-07-09 19:19:22

标签: vhdl xilinx vivado questasim

我在Linux上,我正在使用questasim 2012.2b。我在VHDL中写了以下内容:

dsp: entity work.dsp_c -- a*b+c, 12bit
port map 
(
    clk         => clk_i,
    a           => a_dsp,   
    b           => b_dsp,
    c           => c_dsp,
    p           => p_dsp  -- full precision 
);

每次我尝试使用questasim模拟上面的内容时,在编译时会引发错误:

# Error in macro ./mkProject.tcl line 11
# /software/CAD/Mentor/2013_2014/Questa/HDS_2012.2b/questasim/linux_x86_64/vcom failed.
#     while executing
# "vcom hdl/calc.vhd"
#  quit

# ** Error: Library xbip_dsp48_macro_v3_0 not found.
# ** Error: Unknown identifier "xbip_dsp48_macro_v3_0".
# ** Error: VHDL Compiler exiting

它指的是它失败的行上面的代码。

在翻找时,我找到了一个名为dsp_c.vhd的文件,它看起来像是.xci文件的模拟包装。

然后我尝试找到该库,我找到了一个名为xbip_dsp48_macro_v3_0的文件夹,里面有两个文件:xbip_dsp48_macro_v3_0.vhd xbip_dsp48_macro_v3_0_vh_rfs.vhd

所以我也把它包含在项目中,它给了我错误:

xbip_dsp48_macro_v3_0.vhd(46)): in protected region

知道可能出现什么问题或者我可能需要包括哪些内容?我的questasim可能太老了吗?

更多信息

尝试通过tcl:

以这种方式获取编译的文件
compile_simlib -simulator questa

使用相应的编译块生成所有IP的文件夹。现在我虽然最初我可以添加到.dep:

src ../cgn/dsp_c/dsp_c.vhd

我在运行make project时得到了这个:

dsp_c/dsp_c.vhd(56): Library xbip_dsp48_macro_v3_0 not found.

所以我尝试了包含这些库:

src ../cgn/dsp_c/xbip_dsp48_macro_v3_0/hdl/xbip_dsp48_macro_v3_0_vh_rfs.vhd
src ../cgn/dsp_c/xbip_dsp48_macro_v3_0/hdl/xbip_dsp48_macro_v3_0.vhd

说它受到保护:

dsp_c/xbip_dsp48_macro_v3_0/hdl/xbip_dsp48_macro_v3_0.vhd(46)): in protected region.

更多信息

我得到vivado来生成位于dsp_c文件夹中的库:

dsp_c.dcp   dsp_c_funcsim.vhdl  dsp_c_stub.v     dsp_c.xci  synth   xbip_dsp48_wrapper_v3_0  xbip_utils_v3_0
dsp_c_funcsim.v  dsp_c_ooc.xdc      dsp_c_stub.vhdl  dsp_c.xml  xbip_dsp48_macro_v3_0   xbip_pipe_v3_0

我的tcl脚本如下所示:

source firmware/cfg/lib_mappings.tcl

vlib work
vcom firmware/hdl/mydsp_c.vhd

结果

修改为:

vlib work
vlib dsp_c/xbip_dsp48_macro_v3_0
vmap dsp_c/xbip_dsp48_macro_v3_0

然后跑了......

# do mkProject.tcl 
# Modifying modelsim.ini
# ** Warning: (vlib-34) Library already exists at "work".
# ** Warning: (vlib-34) Library already exists at "dsp_c/xbip_dsp48_macro_v3_0".
# Reading modelsim.ini
# "dsp_c/xbip_dsp48_macro_v3_0" maps to directory ./dsp_c/xbip_dsp48_macro_v3_0. (Default mapping)

..........

# -- Loading package NUMERIC_STD
# ** Error: firmware/cgn/dsp_c/dsp_c.vhd(56): Library xbip_dsp48_macro_v3_0 not found.
# ** Error: firmware/cgn/dsp_c/dsp_c.vhd(57): (vcom-1136) Unknown identifier "xbip_dsp48_macro_v3_0".
# ** Error: firmware/cgn/dsp_c/dsp_c.vhd(59): VHDL Compiler exiting
# ** Error: vcom failed.

1 个答案:

答案 0 :(得分:3)

xci文件是Xilinx特定的IP描述文件,任何模拟器都无法识别。为了能够执行xci文件描述的IP的行为模拟,必须首先生成仿真模型。仿真模型将包含许多VHDL文件,这些文件必须编译到特定的库中。

使用ISE / Coregen,过去只为IP生成了一个VHDL文件,而IP只依赖于预编译的XilinxCoreLib库。然而,对于Vivado,不再有XilinxCoreLib库,并且每次生成特定IP的仿真模型时,每个依赖关系也会生成到同一文件夹中。

可以使用Vivado TCL脚本生成仿真模型和相关的文件和库列表:https://github.com/LarsAsplund/vunit/blob/master/examples/vhdl/vivado/tcl/extract_compile_order.tcl

上述TCL脚本是example VHDL测试工具附带的VUnit的一部分,该工具演示了如何自动生成模拟和模拟Vivado IP。 projectoutput_file变量从命令行设置为脚本,因为完整示例通过Python调用脚本,但可以用硬编码值替换。输出是一个文本文件,其中包含所有文件的LIBRARY,FILE_NAME,它们需要编译。在我以前的项目中,我使用这种方法来生成和编译整个Vivado项目的行为模型。