【问题标题】:Is there a way in VHDL to external name reference a generic?VHDL中有没有办法外部名称引用泛型?
【发布时间】:2021-10-11 00:48:11
【问题描述】:

层次结构中较低的模块具有整数泛型。我想通过使用 VHDL force 命令从我的测试台覆盖这个自动生成的代码中的泛型。问题是无论我做什么模拟器都会给出错误信息:

# ELAB2: Fatal Error: ELAB2_0127 W_PROBE_FPGA.vhd (136): Incorrect object class for external name: '<<probe_fpga_inst.SPRINT_PROBE_TOP_LEVEL_0.SYNTHESIZE_ACCELERATION_DAQ>>'.

我试过这段代码:

alias SYNTHESIZE_ACCELERATION_DAQ is <<signal probe_fpga_inst.SPRINT_PROBE_TOP_LEVEL_0.SYNTHESIZE_ACCELERATION_DAQ : integer>>;

使用关键字信号、变量、常量和空。但它们都不起作用。我现在该怎么办?

【问题讨论】:

  • Incorrect object class 暗示引用的外部名称不是信号。如果是泛型,那么它是constant,而不是signal
  • VHDL (-2008+) 中的force 影响信号驱动值或信号有效值。缺少minimal reproducible example,这似乎是XY Problem。即使假设 DAQ 是 Data AcQuisition 的首字母缩写词,别名也无法提供任何信息。 我现在该怎么办?How to Ask

标签: vhdl


【解决方案1】:

您可以从@Tricky 的回复中看到外部名称无法完成工作。但是,您可以使用配置声明来执行此操作。

配置声明可以是分层的,并且可以设置泛型,如下所示。下面对于实体/组件 Block1(其实例标签为 Block1_1),通用 G1 的值更改为 NewValue。注意对于通用 G2,完成的映射会保留该值。

library LIB_CHIP ; 
configuration CfgLower of TbCHIP is
  for StructTb
    for CHIP_1 : CHIP 
      use entity LIB_CHIP.CHIP (StructChip) ;
      for Structural
        for Block1_1 : Block1
          use entity work.Block1(RTL) 
          generic map (G1 => NewValue, G2 => G2) ; 
        end for ; 
      end for ; 
    end for ; 
  end for ;
end CfgLower ;

对于综合,您需要通过将较低级别的泛型放在较高级别的设计上来“传播泛型”,直到您达到使用较高级别组件的级别。

entity NextHigher is
  generic (G1 : integer ) ; 
  port (...) ; 
end entity NextHigher ;
architecture RTL of NextHigher is

begin
  Lower_1 : Lower
    generic map (G1 => G1) -- mapping Generic from NextHigher to Lower
    port map (. . . ) ; 

  . . . 
end architecture RTL ; -- NextHigher

【讨论】:

  • 感谢 Jim,但是,这里的说法是合成代码不支持配置,即合成工具不支持它们。你的理解是这样吗?
  • 我不希望合成工具支持它们。不过,我也不希望合成工具喜欢外部名称。
  • 对于 Synthesis,如果您需要更改通用值,则需要将其传播到您要更改它的位置。我见过人们用记录结构来做这件事——但是,这是我试图避免的复杂性。
  • 不,我的意思是综合工具不支持 VHDL 配置。我知道综合工具不支持外部名称。这已得到证实。
  • 我在上面的帖子中添加了解释如何传播泛型以进行合成 - 无需配置
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-21
  • 1970-01-01
相关资源
最近更新 更多