首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在赛灵思FPGA设计中保留可重复结果

在赛灵思FPGA设计中保留可重复结果

关键字:赛灵思   FPGA   Spartan   SmartGuide  
  满足设计的时序要求本身已非易事,而要实现某项设计的整体时序具有完全可重复性有时候却是不可能的任务。幸运的是,设计人员可以借助有助于实现可重复时序结果的设计流程概念。影响最大的四个方面分别是 HDL 设计实践、综合优化、平面布局和实施方案。

  就获得可重复结果而言,资源利用和频率要求都很高的设计是最大的挑战。它们也是可重复结果流程需求最高的设计。得到可重复结果的第一步是在 HDL设计阶段运用设计合理的实践。遵循出色的分层边界实践有助于保持逻辑整体性,而这在设计变更时有助于保持可重复结果。一条不错的规则就是把那些需要整体优化、实施和验证的逻辑放在同一层级。另外需要记录模块的输入和输出。这样就可以把时序路径保持在模块内部,从而避免模块改变时引起相互影响。最后,把所有需要放入更大 FPGA资源 (如 Block RAM 或 DSP)的逻辑全部设置在相同层级。

  逻辑电平

  从所需 QoR 结果需要太多查询表(LUT) 逻辑电平的设计很难获得可重复结果。LUT 延迟一般不是问题所在,而问题是 LUT 之间的路由延迟。这在设计的高性能领域至关重要。

  逻辑电平过多往往归因于 i f /else结构较大和选择语句较长。如果合适,可以采用 “ful l_case”和 “paral lel_case” Veri log 指令优化较少逻辑的选择语句,这种技巧一般能够减少逻辑电平。较大的多路复用器或者解码器可能造成路由拥塞,从而导致不可重复的结果。多级注册多路复用器 / 解码器路径有助于解决此问题。对于加算器而言,用注册的加算器链代替注册加算器树可以提高性能。如果加算器全部注册的话,则链会比树造成更长时延。有关编码最佳实践的更多信息, 请参考赛灵思白皮书 《提高设计性能的 HDL 编码实践》 (WP231), http://www.xilinx.com/support/documentation/white_papers/wp231.pdf

  复位与其他控制信号

  复位的选择会影响到设计的性能、面积和功率。加电时电路初始化并不需要全局复位,但是它会对设计过程中能够采用的资源类型产生重大影响。如果在 HDL 中存在全局复位,则无法推断移位寄存器。一个移位寄存器产生的可重复结果比十个寄存器还多。

  另外,DSP 和块 RAM 寄存器仅仅包含同步复位。如果编码中包含异步复位,则无法使用此类寄存器,从而迫使设计中转而使用可配置逻辑块 (CLB)寄存器。而把寄存器放入 DSP、块 RAM 或者同时放入二者中更容易保持相同结果。在一般逻辑中运用同步重置可减少逻辑电平。slice 寄存器能拥有异步或同步复位。如果设计采用同步复位,那么组合逻辑就可以采用同步置位。这样就可以降低一个 LUT 的逻辑电平。

  一个控制置位包含一组独特的时钟、时钟启用、置位与复位信号,而且在分布式 RAM 中还包含可写入信号。控制置位信息非常重要,因为寄存器必须共享封装在同一片中的同一控制置位信号。这可能影响封装和利用率, 造成可重复结果问题。有关复位的更多信息,请参阅赛灵思 WP272 《复位诀窍: 考虑局部而非全局》 (http://www.xilinx.com/support/documentation/white_papers/wp272.pdf) 。有关控制置位的更多信息,请参阅WP309 《Spartan®-6 FPGA 定向与重定向指南》 (http://www.xilinx.com/support/documentation/white_papers/wp309.pdf ) 。尽管此白皮书专用于 Spartan-6器件,但其中还包含了适用于所有 FPGA的有益通用信息。

  了解FPGA资源

  了解什么样的 FPGA 资源可用以及何时是最佳利用时机至关重要。一般会有综合指令来定义使用哪些资源。例如,块 RAM 最适合深存储器 (deepmemory)需求,而分布式 RAM 适用于宽总线,尤其是在局部时钟为高速数据计时的情况下。块 RAM 和分步式 RAM在控制信号具有较大扇区出时会出现某种问题。重复控制信号并且采用布局规划技巧把块与相同信号融合在一起有助于维持可重复结果。

  移位寄存器会降低设计的利用率,而其能够促进可重复性。有一些性能问题值得注意。SRL 的时钟到输出比触发器的时钟到输出慢; 因此,最好把触发器用作移位寄存器的最后一级。大部分综合工具都能自动实现这一点,但是,如果涉及移位寄存器的路径出现问题,则最好确认其最后一级是否为寄存器。

  初始寄存器也存在类似问题。SRL前端设置触发器能让放置器有更多选以择满足时序要求,进而维持结果。同样,大部分综合工具都能自动实现这一点,但是,如果涉及移位寄存器的路径出现问题,则最好确认其最后一级是否为寄存器。



  FPGA 有许多寄存器,从而使得流水线技术可在提高性能方面发挥重要作用。其中,重要的一点是禁用经多重流水线优化的触发器 SRL 推论。上文引用的关于 HDL 编码实践的白皮书 (WP231)提供了关于块 RAM 的更多信息。有关移位寄存器的更多信息,请参阅 WP271 《借助 SRL16E 节约成本》 (http://www.xilinx.com/support/documentation/white_papers/wp271.pdf ) 。

  时钟域问题

  设计人员必须慎重正确约束跨越不相关时钟域的路径。相关工具会自动关联来自相同源时钟 (如 DCM)的时钟。PERIOD 约束条件也能关联外部时钟。不是器件内部创建的无关时钟需要特殊考虑。系统默认不约束此类时钟。如果有特殊时序考虑,设计人员必须采用FROM:TO 约束条件正确约束相关路径。DATAPATHONLY 关键词会指示相关工具在等式中不包含时钟偏移。

  更多信息,请参阅 UG625 《赛灵思约束条件指南》 (http://www.xilinx.com/support/documentation/sw_manuals/xi l inx11/cgd.pdf)或者 WP257 《何为PERIOD 约束条件?》 (http://www.xilinx.com/support/documentation/ white_papers/wp257.pdf)之中的 “异步时钟域”章节。

  另外关键一点是确保不发生竞态状态。从一个领域跨越另一个领域时可以采用 FIFO。否则,设计人员需要双重同步一个 (仅有一个)控制信号,并且在接收时钟域利用其接收其它信号。

  高扇出信号

  高扇出信号通常会成为设计中的决定因素。即使大部分综合工具支持扇出控制,在 HDL 中复用这些信号来得到可重复性更高的结果也是明智之举。设计人员应该把这种策略和指令结合起来,以确保综合工具不会移除这些重复信号。如果一个高扇出信号位于逻辑顶层,则可以复用该信号,然后用单独信号驱动每一个顶层模块。

  如果综合工具扇出控制不能得到预期结果并且无法修改 HDL,那么在BRAM 的 MAP 逻辑中采用寄存器复用约束条件以及最高扇出约束条件,往往会产生比综合更好的寄存器复用选择。更多相关信息,请参阅 《约束条件指南》(UG625) 中的 MAX_FANOUT。做为一个常见的调试问题,跨越层级时保持一致的信号名称更便于追踪存在问题的路径。如果信号名称经常改变,则很难追踪时序报告和其它调试输出。把信号方向放入所有模块或实体的端口定义中也有所裨益。

  综合优化

  综合会对可重复结果产生巨大影响。如果从综合过程得不到最佳输出网表,就无法在实施工具中产生理想条件。设计人员可以采用多种综合技术帮助改善实施结果。

  在执行综合时采用时序约束条件至关重要。用户往往会在综合过程中过度约束,然后在赛灵思实施工具中放宽时序约束条件。这样可以增加综合工具负担, 从而减轻实施工具的负担。

  接下来使用综合工具产生的时序报告。如果一条路径在综合与实施过程中无法满足时序要求,则可以修改 HDL或综合选项,以便在综合之后满足时序要求。这样可以在实施阶段节约时间。

  在综合过程中得到可重复结果是在实施工具中得到可重复结果的最佳途径。大多数综合工具支持自下而上的流程,其为设计的顶层以及各个下层模块建立了独立综合项目。用户可以根据HDL 变更情况控制更新网表。大多数商用综合工具都具有增量流程。

  平面布局规划的重要性

  平面布局规划把组件定位到设计中的一个具体位置或者范围。这可以减少布局变化,从而提高设计的可重复性。通过平面布局规划或者采用位置约束 (或兼而用之)通常可以实现更高的性能。

  也就是说,糟糕的平面布局规划或位置约束会导致无法达到时序要求。平面布局规划有一定技术含量,要求具备工具和设计方面的高级知识。你可以采用符合时序要求的实施结果做为指导原则来创建理想的布局。

  如果主板需求是选择引脚布局的主要因素,FPGA 实施工具可能很难获得时序维持可重复结果。但是设计人员可以借助多种有助于实现可重复性的技巧。

  首先要清楚数据流。比如,数据会从中心 I/O 流向侧 I/O。可以把与总线相关的所有引脚保持在 FPGA 的同一领域,以此限制控制信号的布线距离。I/O总线控制信号布置在相关地址与数据总线附近。需要一起优化的信号应当布置在一起。如果更关注主板布线,则在 I/O上利用流水线技术优化寄存器有助于改进引脚布局差强人意的 FPGA 布线。
返回列表