VHDL中Generate语句内条件实例化实体的层次化引用问题求助
VHDL Generate块层次化引用问题求助
问题背景
在VHDL测试台中使用Generate语句进行层次化信号引用时遇到了 elaboration 顺序问题。当前有两个使用相同泛型条件not g1_g and not g2_g的Generate块:
- 当泛型未正确设置时,会实例化不同的UUT,对应网表中不存在目标层次化信号
- 测试台中声明的
i_nSysReset_h和i_AD_DATA_h已初始化,即使Generate块不触发赋值也有默认值
核心问题是:rtl_sig_gen块中的层次化信号引用会在rtl_gen块的UUT实例化之前被工具解析,导致无法找到目标信号的错误。尝试过调整信号声明位置(放在UUT的Generate块前后或内部),问题仍未解决。使用的工具为QuestaSim 2021.4。
错误信息
** Error (suppressible): ../Utilities/pld_top_tb.vhd(105): (vopt-1565) Failed to find 'i_nSysReset' in hierarchical name '.pld_top_tb.rtl_gen.uut.i_nSysReset'. ** Error (suppressible): ../Utilities/pld_top_tb.vhd(106): (vopt-1565) Failed to find 'i_a2dif' in hierarchical name '.pld_top_tb.rtl_gen.uut.i_a2dif.i_AD_Data'.
场景代码
rtl_sig_gen: if not g1_g and not g2_g generate i_nSysReset_h <= << signal .pld_top_tb.rtl_gen.uut.i_nSysReset : std_logic >>; i_AD_DATA_h <= << signal .pld_top_tb.rtl_gen.uut.i_a2dif.i_AD_Data : std_logic_vector(11 downto 0) >>; end generate rtl_sig_gen; rtl_gen: if not g1_g and not g2_g generate uut: PLD_TOP port map ( signal1 => ..., signal2 => ..., signal3 => ... ); end generate rtl_gen;
疑问
是否可以对Generate语句内条件实例化的实体进行层次化引用?希望得到相关技术见解。
内容的提问来源于stack exchange,提问作者user_007
相关产品推荐
相关产品推荐

