我目前正在研究关于SR的VHDL,有一部分我不明白。
有人能解释ATTRIBUTE keep: boolean是什么意思吗?用VHDL做什么?
谢谢。
发布于 2016-11-03 07:56:34
它是用户定义的属性,因此不属于VHDL标准本身。它通常被用来指示合成工具,它应该保持一个特定的信号,例如一个触发器,即使通过合成工具也可以确定在优化期间信号可以被删除。
有关Altera合成工具,请参见以下描述:保留VHDL综合属性
发布于 2018-04-06 20:40:22
警告严重的Xilinx偏见..。
对于不同的工具,VHDL的属性是不同的,甚至在同一工具的不同版本之间也会发生变化。Xilinx的“保持”属性用于确保在Vivado合成过程中信号不会被优化。它最近被改名为"syn_keep“,以避免混淆。我以前使用过类似的属性来解决构建问题,在这些问题中,工具做出了错误的假设。
注意:为了避免在Xilinx实现过程中进行优化,请使用"dont_touch“。
示例:进入FPGA的时钟需要通过Xilinx进行缓冲,但我需要特定IP核的原始信号。因此,我分裂了路由,缓冲时钟,并将原始时钟信号传送给IP。Vivado 2016.4工具优化了未缓冲的路由,在硬件上创建了时间约束、关键警告和错误行为。通过综合设计原理图进行跟踪,观察合适的路由,然后查看实现设计原理图,查看路由更改,从而发现问题。我通过将dont_touch属性添加到未缓冲的信号来修正这个问题。
attribute dont_touch : boolean;
attribute clock_signal : string;
attribute dont_touch of clk_in : signal is true;
attribute clock_signal of clk_in : signal is "yes";
...
CLK_BUFG: component BUFG
port map (
I => clk_in,
O => buf_clk_in
);https://stackoverflow.com/questions/40396085
复制相似问题