我有一大堆由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包含库。这主要是为了在实体中包含其他组件或类型/数组/函数/过程声明。我想在架构头中包含一些东西,它不是一个组件或者类似的东西,它首先没有引用我的实体设计,除非我明确地实例化它。我想在我的架构头部中包含描述声明信号的内容。据我所知,图书馆和软件包无法实现这一点。
答案 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]
请查看综合工具的用户指南和支持的属性/约束列表。