FPGA设计流程

FPGA设计流程
设计时应注意:

  1. 设计必须文档化。要将设计思路,详细实现等写入文档,然后经过严格评审通过,后才能进行下一步的工作。
  2. 端口信号排列要统一,一个信号只占一行,最好按从哪个模块来到哪个模块去的关系排列。
  3. 信号的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。
  4. 一个模块尽量只用一个时钟,这里的一个模块是指一个module。在多时钟域的设计中涉及到跨时钟的设计最好有专门一个模块做时钟的隔离。这样做可以让综合器综合出更优的结果。
  5. 尽量在底层模块上做逻辑,在高层尽量做例化,顶层模块只到做例化,禁止出现任何胶连逻辑(glue logic),哪怕仅仅对某个信号取反
  6. 在FPGA的设计上禁止用纯组合逻辑产生latch。即在组合模块中不能出现:if-else语句的条件未囊括所有可能得情况下没写default。
  7. 一般来说,进入FPGA的信号必须先同步,所有模块的输出都要寄存器化,以提高工作频率,这对设计做到时序收敛也是极有好处的。
  8. 除非是低功耗设计,不然不要用门控时钟:这会增加设计的不稳定性,在要用到门控时钟的地方,也要将门控时钟用时钟的下降沿打一拍再输出与时钟相与。
  9. 尽量不要用计数器分频后的信号做其它模块的时钟,而要用改成时钟使能的方式,否则这钟时钟满天飞的方式对设计的可靠性极为不利,也大大增加了静态时序分析的复杂性。
  10. 内部模块不能出现inout端口,如果需要,把inout端口拆分为一组input 和output。
  11. 数据都十六进制或者二进制表示,且要标上位数。这样做综合器综合出的结果较好。
  12. 对齐一律用空格键,避免用TAB键。这样可以保证程序在其它机子上显示的格式一致,便于阅读。