使用XILINX ALTERA LATTICE等多die FPGA芯片时,或多或少的都遇到过时序收敛问题,那么对于多die的FPGA我们应该如何做好设计了。
多die芯片其实是SSI(Stacked Silicon Interconnect)芯片,其结构如下图所示。其实就是在一个封装里,把多个芯片,也就是我们说的SLR(Super Logic Region)用interposer“绑”在一起,SLR之间的连接用专用布线资源SLL(Super Long Line)。
该截图来自xilinx文档872 - Large FPGA Methodology Guide (v14.3)
第一、从方案架构设计的角度看,FPGA的设计也就是数据流的设计,即数据流在不同模块之间的走动。多die芯片中,关键就是处理数据流跨die的问题。在方案设计阶段,首先要考虑一级模块在各个die中的分布。如何分配各个一级模块,如下图所示,主要从2个方面考虑。
第二、在具体实现中,对于跨die的信号处理,官方的文档(ug949)中提供了2种方式,一种是通过约束的方式使用LAGUNA寄存器,一种是通过自动流水打拍的方式。秉承问题的解决能用代码就不用约束的思想,这里介绍一种和官方指导的第二种方案类似的方法,但是是用RTL代码解决,可移植性更好。如下图所示,红色打拍逻辑(将所有的跨die信号打2-3拍)插入在跨die数据流的两侧。对于穿越整个die的数据流,比如module B到module C的数据流,可以在中间die插入一个过桥的打拍模块。这种方案在实践中被证明也能很好地解决时序收敛问题。