VHDL 属性保留

标签 vhdl

我目前正在学习关于SR Latch的VHDL,有一个部分我不明白。

谁能解释一下ATTRIBUTE keep: boolean是什么意思以及它在VHDL中的作用是什么?

谢谢。

最佳答案

警告严重 Xilinx 偏差...

对于不同的工具,VHDL 的属性是不同的,甚至同一工具的版本之间也会有所不同。 Xilinx 的“keep”属性用于确保 Vivado 综合过程中信号不会被优化掉。它最近已重命名为“syn_keep”以避免混淆。我曾使用类似的属性来修复构建问题,之前工具做出了错误的假设。

注意:为了避免在 Xilinx 实现过程中进行优化,请使用“dont_touch”。

示例: 进入 FPGA 的时钟需要通过 Xilinx BUFG 进行缓冲,但我需要特定 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
);

关于VHDL 属性保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40396085/

相关文章:

memory - VHDL 中的图像处理流水线

arrays - vhdl:将向量转换为字符串

vhdl - 如何在 VHDL 中声明具有多个零的输出

微 Controller + Verilog/VHDL 模拟器?

c++ - 了解 SystemC 中的类型

arrays - 在 VHDL 中创建其元素宽度递增的通用数组

VHDL - 为什么不允许在生成循环中使用变量

vhdl - 我可以在 VHDL 中创建嵌套的 with-select-when 语句吗?

vhdl - 使用 De2-115 板运行在不同板上开发的项目?

vhdl - 如何检查 VHDL 整数是偶数还是奇数?