相关疑难解决方法(0)

我可以从外部访问实例化实体中的常量吗?

我有一个带有通用参数列表的VHDL实体.该实体的体系结构计算了几个常量,这些常量是创建预期功能所必需的.

是否可以从外部访问这些常量之一?

示例1:
假设有一个FIFO根据DEPTH和OUTREG决定最佳实现是什么(基于寄存器,基于SRL或基于BlockRAM).根据这一点,通过FIFO的最小延迟可以在1到2个周期之间变化.

示例2:
考虑相同的FIFO与时钟兼容.现在最小延迟还取决于选择的同步电路和频率差.

示例3:
除法实体需要N个周期来计算div b.N取决于BITS,RADIX,OUTREG,IS_SIGNED,......

进一步说,每个实体都有一个类型为NATURAL的MIN_DELAY常量,这对其他实例很有用.

例如,实例化实体需要知道它必须至少等待一段时间.

我可以想到2个解决方案,但我认为这两个解决方案都不是很好.

解决方案1:
我可以将算法存储在一个包中,因此它可以全局访问.但这违反了封装原则:).外界只需要知道延迟值而不是算法.

解决方案2:
我可以使用有效位.这在动态,自适应或流水线系统中始终是一个很好的解决方案,但是这个位不能在合成时用于进一步的选择或优化.

可能的解决方案3:
VHDL能够定义新属性,但是可以访问它们吗?

示例实体:alu_div:

constant MIN_DELAY : NATURAL := BITS / log2(RADIX) + 2;
attribute DELAY   : NATURAL;
attribute DELAY of alu_div : entity is MIN_DELAY;
Run Code Online (Sandbox Code Playgroud)

示例顶部:

mydiv : entity work.alu_div
   generic map (....)
   port map (....);

blk : block
  constant my : NATURAL := mydiv'delay;
begin
  ....
end block;
Run Code Online (Sandbox Code Playgroud)

新:可能的解决方案4:
我发现了这个SE问题,其中 Jim Lewis注意到分层引用也应该与常量一起使用.
alias MY_DELAY is <<constant mydiv.DELAY : NATURAL …

vhdl

6
推荐指数
1
解决办法
1880
查看次数

如果两个模拟器都需要使用自己的软件包,有没有办法将一个测试平台用于不同的模拟器?

我的测试平台使用在modelsim包(init_signal_spy)中定义的函数.所以我不能将这个测试平台用于与ModelSims vsim不同的模拟器,例如Candence的ncsim.但是在cadence包中有一个与ncsim(nc_mirror)等效的函数.解决方案是我需要有两个不同的测试平台.

但我只想使用一个.一种解决方案可能是,仅在设置了某个常量时才定义包.但我不知道这是否可行.

vhdl modelsim cadence

0
推荐指数
1
解决办法
688
查看次数

标签 统计

vhdl ×2

cadence ×1

modelsim ×1