时间:2024-08-09 来源:网络搜集 关于我们 0
逻辑布线是我们在处理时序问题时最频繁要遇到的问题。逻辑布线的延时决定你的设计能达到的最高频率。
逻辑布线资源也分好几种,这和逻辑芯片的架构有关系。我们以Lattice的器件为例,基本的逻辑单元是Slice(Xilinx也这么叫),一个Slice里包含了2个LUT和2个寄存器。4个Slice组成一个PFU。在同一个PFU里有local的布线资源,这个布线的延时很小,但只能覆盖同一个PFU内部。PFU和PFU之间通过switch box实现互联,延时根据距离的远近长短不一。距离越远,逻辑的布线延时越大。所以为了能达到更高的时序,我们要尽可能的把相关的逻辑放置的尽量靠近。
当然这是理想的情况,实际上会出现可能相关的逻辑布局的位置相差很远。也有可能明明是两个逻辑的布局位置很近,但最终的布线延迟反而很长的情况。布局位置远有多种原因,比如某个寄存器的扇出很大,就不能保证该寄存器的输出到达每个输入都很近,必然有近有远的情况,EDA的PAR算法为了均衡功耗,布线效率会有意的将逻辑布局均匀分布而不是集中分布等等。大多数情况下,我们可以信赖EDA软件的策略。当遇到PAR算法不能满足我们要求的时候,我们可以通过添加约束的方式告诉EDA软件对特定的逻辑该如何布局。距离近而延时大的原因也有很多,一种情况是EDA软件为了修复hold time而故意绕线产生的,还有一种情况是相邻的布线资源已经不够用了,不得不通过绕线的方式获得更多的布线资源。
这里就牵扯到一个布通率的问题。前面我们已经谈过,布线资源占据了FPGA/CPLD的很大面积。从性价比的角度考虑,现在的FPGA/CPLD不会做全互联的布线设计,一定要在满足芯片设计性能的基础上用尽可能少的布线。从逻辑功能设计上,那种需要信号全互联的设计也是少之又少的。所以就会出现在局部耦合度很高的逻辑布线资源不够用的情况,EDA软件会尝试使用更远的布线资源,这就会带来更大的延时。更极端的情况,还会出现布局布线布不通的情况。遇到这种情况,我们就需要修改设计来适配芯片了。
更多精彩,持续更新:
接下来《时序漫谈》系列将为您介绍:
影响时序的三个要素
关于时序我们要检查哪些内容
通过RTL改善时序的几个技巧之移位操作
通过RTL改善时序的技巧之Block RAM的输出
······
最后,对作者Robin先生感兴趣的同学,可以关注他的个人公众号“逻辑空间”哦(会有剧透,也会有八卦~~~)
扫码关注
逻辑空间