2013-04-02 49 views
1

我想知道在合成期间是否有办法访问entities default generic valuesan entities architectures constantsVHDL读取通用默认值

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

可能Usecases

1)生成的测试平台默认实体:

entity testme is 
    generic(outputs:integer:=4); 
    ports(output:out bit_vector(0 to outputs); 
end entity; 
在测试平台我需要产生信号whcih可以连接到输出

,在不知道泛型值有没有办法这样做。

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

+0

我要说的是,你在一个没有在VHDL预见的方式看着它,坦白说,我会同意。一般来说,您会将这些值从架构传播到实例,特别是在TB中。你为什么不这样做呢? – BennyBarns

+0

@BennyBarns:我不太可能会跟着你。我的想法是默认值,一个多路复用器的宽度的默认值有什么好处,如果我不能生成输出和选择信号的信号宽度而不知道默认值? – ted

回答

0

你必须从顶部向下推这些东西(即从测试台)。这是无法检查到一个较低的水平块

+0

我认为“out模式泛型”有一些合法用途,我偶尔也想要它们。查询体系结构以查找其管道深度多少周期可能会有用。也许VHDL-2020? –

+1

@BrianDrummond:没有冒犯,但我不会随意使用这些功能。 Vhdl 2008年近5岁,但最有趣的东西没有实施。 – ted

0

你可以使用无约束类型,例如,(虽然我想你可以把信号输出和返回到顶部!):

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 
    ); 
+0

我知道这是可能的,但我不想这样做。 Ram的问题依然存在。 – ted