fpga设计检查清单_第1页
fpga设计检查清单_第2页
fpga设计检查清单_第3页
fpga设计检查清单_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FPGA 设计检查清单 FPGA 设计检查清单 FPGA 设计检查清单 FPGA 设计检查清单 介绍 介绍 本检查清单向你揭示了如何提高你的 FPGA 设计的速度和可靠性本检查清单适用 于 Xilinx 公司的 Virtex系列 FPGA采用这些技巧应该能改进你的设计性能本 检查清单应该能帮助所有的 FPGA 设计者更好地利用 FPGA 资源并避免常见的问题 如果你不能理解所有的这些技巧请查阅 FPGA 设计培训资料注意对于 CPLD这 些技巧有所不同 建立你的 HDL 代码 建立你的 HDL 代码 ? 将你的运算操作成组以便进行有效的综合利用括弧将算术和组合函数中的运算操 作结合起来 ? 在你的组合进程中定义所有的输出或者采用缺省语句这将避免在你的设计中推 知不必要的锁存器 ? 如果不会改变功能性则可以在寄存进程中利用缺省语句来避免时钟使能信号上的 长时延 ? 如果建立同样的元件需花费你可观的时间或者你想让元件具有很高的性能你可 以考虑例化一个核 ? 例化不能被推知的元件DLL块状 RAM动态可寻址移位寄存器等等)这要求 你了解你的综合工具允许你推知哪些资源 ? 选择好的设计层次在建立功能块后划分不同的逻辑类型例如控制总线功 能等等保持各时钟域在层次的不同级别 ? 寄存层次中每个叶级块的输出包括状态机的输出这是一种流水形式并且仅在你 的设计能允许附加的延迟时才能这样做 ? 考虑对你的设计施加流水以改进你的设计的速度 ? 利用“ Case“语句而不是“if-then“语句这将会综合成并行逻辑并有比级联的串 行查找表(优先编码器)更好的性能 ? 避免嵌套 if-then 和 case 语句嵌套会将查找表串行连接起来 ? 将你的状态机的下一个状态译码逻辑和输出译码逻辑分别放在独立的进程或 always 块中这将会综合成更快的设计 ? 小心选择你的状态机编码技术状态数小于八的 FSM 应该选用二进制编码状态数 在八至十六个之间的 FSM 应该选用一位有效编码状态数多于十六个的 FSM 应该选 用葛莱码或用户自定义编码 FPGA 设计检查清单设计检查清单 Ch. B-3 1-877-XLX-CLAS 利用 FPGA 架构 利用 FPGA 架构 ? 核实对于所有的算术函数进位逻辑被自动地推知如果设计中含有算术运算操作(+, -, )大多数综合工具将自动推知进位逻辑不要试图建立带有异或门和 其它门的算术函数 ? 核实 F5 和 F6 多路选择器被自动推知 ? 核实乘与门被用于乘法器的建立 ? 核实 16 位移位寄存器SRL16被用作流水化时延元件 ? 例化 DLL 并利用它的倍频分频以及相移功能 ? 例化你的设计中的块状 RAM考虑将块状 RAM 资源用于实现 FIFO状态机乘法 器KCM以及其它的深度存储器功能记住如果你没有利用它的全部则你浪 费掉器件的一些资源 ? 如果你需要宽存储器功能你可以在设计中例化分布式 RAM记住采用分布式 RAM 的深度存储器也许要求用一些查找表来对输出进行解码这就会在存储器性能 上增加时延 ? 用 IOB 寄存器寄存设计中的顶层输入及输出来改进设计的片上和片外时序也可以 利用输入寄存器的可编程建立和保持时间功能 ? 考虑在建立宽的多路选择器例如32 选 1时采用三态缓冲器这样比采用查找 表要快很多 ? 利用基于逐个管脚的快速转换速率的特性以减少输出转换时间 建立可靠的设计 建立可靠的设计 ? 永远不要门控你的时钟信号或在 FPGA 内部生成时钟信号这些信号会产生毛刺 相反地你应该遵循推荐的编码风格来推知一个时钟使能 ? 不要在设计中采用异步置位和复位信号如果你为了可移植性需要一个异步置位或 复位信号只能使用其中的一个并且永远不要在内部门控它 ? 利用全局布线资源来分布你的时钟信号以使时钟偏差最小 ? 理解你的状态机编码的可靠性如果一个设计有异步特性它一次改变的位数越 少则功能越可靠 ? 考虑替代的计数器设计(例如PrescaleJohnson 和 LFSR) ? 当在时钟域之间传递数据时考虑使用一个同步化电路来保证数据能被正确地传 递或者一个使用块 RAM 来实现的 FIFO 早期管脚锁定 早期管脚锁定 ? 避免过早锁定你的管脚当实现工具具备将管脚在硅片周围移动的最大灵活性时 它们才会有最大机会来满足时序目标 ? 如果你必须在早期锁定 I/O 管脚须确定你使用的是上一次的成功实现并且仅仅 移动那些必须移动的管脚 ? 不要将同时切换的输出全部放置在一排内这样可避免地弹在硅片的周围移动这 些输出并将它们靠近 GND 管脚放置这样你就不会遭受地弹的损害了 FPGA 设计检查清单设计检查清单 Ch. B-4 1-877-XLX-CLAS FPGA 设计检查清单设计检查清单 Ch. B-5 1-877-XLX-CLAS ? 对那些 I/O 管脚仅仅配置快速转换速度这一定会使它们满足时序约束不小心地 利用快速转换速度可能使你遭受地弹的损害 正确利用你的综合工具 正确利用你的综合工具 ? 不要允许贯穿层次化边界的优化除非你没有其它方法来改进设计时序这使核实和 分析设计变得较为困难 ? 利用带有综合工具的全局时序约束Synplify 将轻推nudge你的综合结果但 是大多数综合工具允许验证已约束的路径 ? 利用你的综合工具的能力来将特定的器件资源用于你的设计中这常常是用一个工 具来实现的如 Synplify 中的 Scope), 并且可以用大部分的综合工具来实现将 属性放在你的设计中常常是非常关键的它可以使得合适的器件资源被推论出来 ? 利用你的设计的时序估计能力来检查你的设计性能这可以节省你花费在不可能满 足你的时序目标的网表上的编译时间 ? 以两倍到三倍于你的真实性能目标来过量约束你的综合周期约束例如如果你的 目标是 100MHz则指定为 200MHz 到 300MHz以时序驱动综合的综合工具会花费 稍微多一点的时间来综合但可以可观地降低布局布线迭代次数和每次布局布线迭 代的运行时间 ? 不要利用你的网表NCF网表约束文件来传递这些时序约束因为实现工具会 由于试图来满足这些不可实现的约束而停止运行或花费可观的执行时间 ? 在大多数情况下不要将时间花在利用综合工具进行多时钟周期和失效路径约束 上这将会为每个路径建立单个的约束而不是可以覆盖许多路径的单个约束 这是你可以用实现工具来做的然而如果你的 LUT 是受限的则在加了多时 钟周期约束时综合工具可以节省一些 LUT 资源同样偏置输入/偏置输出约束 也是分别加到每一个输入/输出上的而不是成组的 运用 Xilinx 的实现工具 运用 Xilinx 的实现工具 ? 利用全局时序约束来传递你的系统的时序目标 ? 利用特定路径时序约束来定义失效路径和多周期路径以给工具更多的灵活性来满 足你的全局约束 ? 用时序分析器来检查你的关键路径的时序利用这个工具生成用户定义的时序报告 并且建立最少数目的时序信息 ? 为了提高你的设计的速度提高布局布线的尝试级别 ? 为了进一步提高你的设计的速度使用多次布局布线

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论