vhdl - VHDL中有没有办法外部名称引用泛型?
问题描述
层次结构中较低的模块具有整数泛型。我想通过使用 VHDLforce
命令从我的测试台覆盖这个自动生成的代码中的泛型。问题是无论我做什么模拟器都会给出错误消息:
# 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>>;
使用关键字信号、变量、常量和空。但它们都不起作用。现在我该怎么做?
解决方案
您可以从@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
推荐阅读
- python - 有没有办法在 Gtk 窗口/小部件中停用鼠标光标?
- reactjs - 如何为 React 组件使用声明文件?
- javascript - 在 TypeError (Null) 之后 JavaScript 会停止工作吗?
- kubernetes - 如何使用 helm 强制删除 k8s 中的部署?
- angular - Angular8 和 OpenLayers 6:错误类型错误:无法读取未定义的属性“forEachFeatureAtPixel”
- database - 如何根据大量名称在 neo4j 数据库中查找节点
- hashmap - 如何从 dataweave 2.0 中的有效负载访问 hashmap 值?
- docker - 如何让两个actor系统在docker中运行以形成一个集群
- flutter - 如何在颤动中将选定的数据传递到下一页
- c - 计算数字素因数分解的程序