手把手课堂:Xilinx FPGA设计时序约束指南
后,数据出现在 FPGA 的输出引脚上。该约束仅应用于由 clk20 或其衍生(衍生约束)提供时钟的寄存器驱动的 PAD。OFFSET 要求在 clk20 上有 PERIOD 约束,这样才能理解时钟结构。保持时间不受 OFFSET_OUT 的约束。 若需要数据在时钟脉冲边沿前 2 纳秒到达FPGA 输出,则使用: 分组与分组名称 时间分组是用来识别对于同步元件间的路径集或连线集的约束的一种方式。向时序分组添加组件,应使用 TNM、TNM_NET 或 TIMEGRP。 通过定义分组并给定分组之间的时序要求,可对路径进行约束。部分约束不需要时序分组,如 NET MAXDELAY。这一最大延迟 (MAXDELAY) 属性定义了一条连线上允许的最大延迟。 时序名称 向用户定义的分组添加组件,可这样处理: 在此,“TNM”为保留字,用于定义时序分组的名称。 在这种情况下,object_name 为带分组元件或信号的名称,predefined_group 为可选关键词,标示符可以是字母、数字和下划线的任意组合。不能使用诸如 FFS、LATCHES 或RAMS 这样的保留字。该变量对大小写敏感。(TNM=abc 不等于 TNM=ABC)。 可将 TNM 应用于任何连线、元件引脚、原语或宏。组件可加入一个以上的分组。例如,my_ffs_group TNM 中可含有 my_ff组件。同样,my_ffs_group2 TNM 也可包含 my_ff 组件。要创建分组,请使用: 为时序目的,可在分组中包含任何关键词元件。在本例中,NET CLOCK可追溯到触发器 (FFS)。这些触发器使用名称 clk_group 进行时序命名 (TNM)。然后,clk_group 就可以在TIMESPECS中使用了。也可使用实例创建分组,如: 在 macro1 宏中的所有 LATCHES都放在名为 latchgroup 的分组中。类似的,在约束“INST mymac TNM=RAMS memories”中,所有 mymac 宏中的RAMS 都将放在称为 memories 的分组中。且在以下约束中: 所有在 t e s t e r 宏中的 PADS、LATCHES、RAMS 及 FFS 都将放在名为 coverall 的分组中。相关的约束指南将包含完整的预定义分组列表。 简洁至上 一般而言,约束的数量越少越好。复杂的约束引发的问题往往比解决的要多。另外,部分路径或网络是非关键性的,可对这些网络不使用约束。TIG(时序忽略)约束用于清除对无需关注的路径,或从虚假路径上移除约束。以下为常见 TIG: 这条约束告知工具无需约束该路径。这条的作用很重要,它可使工具不必在不关注的路径上花费精力去满足时序要求。在时序约束时忽略此路径可缩短工具运行时间,提升所关注的路径上的时序质量。也可搭配“FROM: TO”约束来使用“TIG”,如下所示: 赛灵思有大量宝贵的关于时序约束的资源,其中最值得一读的,我已在以下参考文献中列出。若您有更深入的问题,请随时与我联系。我邀请您参加赛灵思社区论坛,该论坛可为 您的一些FPGA 设计中最棘手的问题提供充分的解答。 参考文献: 《约束指南》:UCF、PCF、HDL 约束语法, http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/cgd.pdf 。 《时序约束用户指南》:如何约束设计的概念信息, http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/ug612.pdf 。
- DSP+FPGA嵌入式多路视频监控系统硬件平台(04-10)
- FPGA最小系统之:实例2 在Xilinx的FPGA开发板上运行第一个FPGA程序(07-15)
- 利用XPS工具快速生成Virtex FPGA的板级支持包(03-18)
- 利用NI CompactRIO与NI Single-Board RIO实现从快速构造原型到低成本发布(03-19)
- 创建还是购买:什么是您嵌入式设计的最好选择?(07-06)
- Pmod规范,或Arduino伪标准(08-27)