我正在尝试在我的设计中将库首映的映射从unisim更改为unifast,但仅用于模拟目的。我想在测试平台级别指定配置。
我的设计层次结构如下所示:
entity m1_chip_tb is
end m1_chip_tb;
architecture behavioral of m1_chip_tb is
...
m1: entity work.m1_chip
m1_clocks: entity work.clock_logic_m1
mmcm_pix: MMCME2_ADV
我能够找到的所有VHDL配置示例(包括Xilinx网站上的配置)似乎都假设配置适用于本地实例化的实体。但我需要一个从顶级测试平台级别向下钻取的配置。
以下是我尝试使用的内容:
configuration cfg_xilinx of m1_chip is
for rtl
for m1:clock_logic_m1
use entity work.clock_logic_m1(rtl);
for rtl
for all:MMCME2
use entity unifast.MMCME2;
end for;
end for;
end for;
end for;
end cfg_xilinx;
但是我在m1:line
上收到错误“无法找到组件声明”顺便提一下,整个设计是使用实体进行实例化编写的,但MMCME2_ADV实例化除外。
我很感激有关如何在配置定义中正确指定层次结构的任何建议。
(作为澄清的一点,我在clock_logic_m1.vhd文件中指定了unisim libary。我试图在我的模拟中覆盖它);即:
library unisim;
use unisim.vcomponents.all;
答案 0 :(得分:2)
您无法使用直接实例化的配置 - 这是主要缺点。但是,如果您不坚持使用控件的配置,则可以使用传播的泛型或在共享包中使用常量来实现您的目标:
g_MMCM_RTL : if gGeneric_or_cConstant generate
mmcm_rtl : [entity library.]MMCME2_ADV
. . .
end generate g_MMCM_RTL;
g_MMCM_SIM : if not gGeneric_or_cConstant generate
mmcm_sim : [entity library.]MMCME2
. . .
end generate g_MMCM_SIM;