一:FPGA时序优化的理论与设计
1.关键路径中插入寄存器
数据的时延一般就是组合逻辑的时延和布线时延两部分,布线时延一般控制不了,所以只用关注组合逻辑的时延,一般时序差的路径上都会有很复杂的多级组合逻辑,插寄存器的时候插到这些组合逻辑的中间就可以。一般时钟路径是不怎么可以优化的,芯片厂家的提供的布局布线工具已经比较优秀或成熟,所以只要时钟走了专用时钟走线,且你自己也没有加什么奇怪的约束,那么时钟一般认为是没问题的,不需要优化。
优化时序的策略是在数据关键路径中插入寄存器。这种方式会增加设计的时滞(clock latency)。插入了几个寄存器,结果输出就会延长几个周期,在不违反设计规格(对clock latency有要求)以及功能没有影响的时滞情况之下可以这么做。这种技巧一般多用于高度流水的设计中,因为在这种设计中额外插入寄存器增加的时钟周期延迟并不会违反整个设计的规范要求,从而不会影响到设计的总体功能性实现。
2.对串行逻辑进行并行化处理。关键路径表达式变化为积之和或和之积形式。
最典型的就是乘法器了。作为一个16bit的乘法器,最省资源的就是等待16个clock出结果,也可以是设计成面积最大但是出来结果速度最快的,只需要一个周期就可以出来结果。
3.逻辑展开(Flatten Logic Structures),展平逻辑结构。第一是逻辑复制,特别是针对大扇出,通常使用generate或者是在综合器中设定(软件可能支持)。第二个是消除代码中的优先级。最好写成case并行结构比较好