可以将属性放入文件中吗?

时间:2015-06-16 08:56:52

标签: attributes vhdl

我有一大堆由KEEP组成的属性, DONT_TOUCH和MARK_DEBUG。它主要是我想要的信号列表 在我的设计中调试。由于这个列表占据了我很大的空间 想知道是否有可能以某种方式存储所有这些属性 根据全局情况将文件加载到我的VHDL设计中 恒定变量/信号/不管?

所以它看起来像这样:

entity top is
end top ;
architecture Behavioral of top is
    if(DEBUG_ENABLE = "TRUE") then
        include "../path/to/file.txt";
    end if;
begin
end Behavioral;

,文件看起来像这样:

attribute KEEP          : string;
attribute DONT_TOUCH    : string;
attribute MARK_DEBUG    : string;

attribute KEEP of signal_1            : signal is "TRUE";
attribute KEEP of signal_2            : signal is "TRUE";

attribute DONT_TOUCH of signal_1      : signal is "TRUE";
attribute DONT_TOUCH of signal_2      : signal is "TRUE";

attribute MARK_DEBUG of signal_1      : signal is "TRUE";
attribute MARK_DEBUG of signal_2      : signal is "TRUE";

任何人都知道,这是否可能?

干杯

编辑: 我并不是指通过use-statement包含库。这主要是为了在实体中包含其他组件或类型/数组/函数/过程声明。我想在架构头中包含一些东西,它不是一个组件或者类似的东西,它首先没有引用我的实体设计,除非我明确地实例化它。我想在我的架构头部中包含描述声明信号的内容。据我所知,图书馆和软件包无法实现这一点。

1 个答案:

答案 0 :(得分:3)

您可以实现这样的条件属性:

attribute KEEP : BOOLEAN;

constant ENABLE_DEBUG : BOOLEAN := TRUE;
attribute KEEP of mySignal : signal is ENABLE_DEBUG;

条件字符串赋值可以通过ite(if-then-else)函数来解决。

function ite(cond : BOOLEAN; val1 : STRING ; val2 : STRING) return STRING is
begin
  if cond then
    return val1;
  else
    return val2;
  end if;
end function;

attribute FSM_ENCODING : STRING;
attribute FSM_ENCODING of State : signal is ite(ENABLE_DEBUG, "gray", "auto");

某些属性可以通过供应商相关的约束文件加载/分配。

Xilinx ISE示例:
例如,可以在Schematic,VHDL和Verilog中或通过Xilinx XCF,NCF或UCF文件分配KEEP。 请参阅Xilinx Constraint Guide,了解哪些属性可以分配到哪个属性(第21页)到哪个工具(合成器,地图,P& R,...)。

NET "myInstance/mySignal" KEEP;

Xilinx Vivado示例:
Vivado支持'DONT_TOUCH'属性,可以通过XDC文件设置。有关详细信息,请参阅Vivado的Using Constraints用户指南。以下示例来自第56页:

set_property DONT_TOUCH true [get_cells fsm_reg]

请查看综合工具的用户指南和支持的属性/约束列表。