【问题标题】:VHDL read generic default valueVHDL 读取通用默认值
【发布时间】:2013-04-04 00:23:05
【问题描述】:

我想知道是否有办法在综合过程中访问entities default generic valuesan entities architectures constants

这是出于好奇(我想实现类似的东西)。

可能的用例

1) 为默认实体生成Testbench:

entity testme is
    generic(outputs:integer:=4);
    ports(output:out bit_vector(0 to outputs);
end entity;

在测试台中我需要生成一个可以连接到输出的信号,在不知道泛型值的情况下没有办法这样做。

2) 我想知道我在实例化 Blockram 时使用的实际大小。在 FPGA 上有 Blockram,可以使用固定的 ram 块,如果需要的 ram 多于一个块中可用的 ram,则将多个块组合在一起。随着技术的变化,可用块的大小可以改变。因此,我编写了一个带有两个通用参数 memorytechnology 的实体,它以尽可能少的 Blockrams 实现我的记忆。这可能会导致内存大于请求。如果我现在有另一个实体需要内存大小来充分利用它(即循环缓冲区控制器),我必须向它提供实际分配的内存大小。

【问题讨论】:

  • 我会说您正在以 VHDL 中未预见到的方式看待它,坦率地说,我同意。一般来说,您会将这些值从架构传播到实例,尤其是在 TB 中。你为什么不这样做呢?
  • @BennyBarns:我不能完全关注你。我的想法是瞥见默认值,如果我无法为输出生成适合宽度的信号并在不知道默认值的情况下选择信号,那么多路复用器宽度的默认值有什么用?

标签: vhdl


【解决方案1】:

您必须从顶部(即从测试台)向下推动这些东西。无法检查较低级别的块(尽管我猜您可以将信号带出并返回到顶部!)

【讨论】:

  • 我认为“out mode generics”有一些合法用途,我偶尔也想要它们。查询一个架构以找出它的管道深度有多少周期,可能很有用。也许是 VHDL-2020?
  • @BrianDrummond:没有冒犯,但我不会使用这些功能。 Vhdl 2008 已经快 5 年了,但最有趣的东西还没有实现。
【解决方案2】:

你可以使用不受约束的类型,例如:

entity example
port(
    i: std_logic_vector;
    o: std_logic_vector
);

在测试台中添加定义的向量,例如:

....
signal i,o: std_logic_vector(10 downto 0);

begin
   uut: example
   port map(
      i => i,
      o => o
   );

【讨论】:

  • 我知道这是可能的,但我不想反过来做。 Ram 问题仍然存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多