You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 16:12:41