ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

跨Die FPGA时序收敛实战:从架构设计到项目落地

跨Die FPGA时序收敛实战:从架构设计到项目落地 跨die FPGA的坑我入行第三年就踩进去过。当时负责一个Intel Agilex的项目逻辑规模接近上限布局布线跑完关键路径时序余量是负的而且问题不在逻辑本身而是数据在die边界上跑来跑去导致路径延迟突破天际。导师看了一眼时序报告说了一句至今都记得的话“你这路径跨die了不按跨die的思路去约束、去布局、去改架构再怎么调布局布线选项都只是碰运气。”后来我把这套从概念到实战的时序收敛方法完整走了一遍才算真正明白了跨die设计到底难在哪、怎么破。这篇文章就围绕跨die时序收敛这件事把我这些年用过的方法、踩过的坑、看过的工具报告整理出来。概念部分会尽量讲清楚原理实战部分会落到具体的工程操作。不管你是刚接手Agilex、Versal这类多die芯片还是老项目遇到跨die路径不住收敛这篇都值得对照着看。1. 跨die设计到底是什么为什么难在时序1.1 跨die芯片的结构与单die的本质区别传统单die FPGA所有逻辑单元、布线资源、时钟网络都在同一块硅片上局部路径几百微米到几毫米信号延迟主要看金属层的RC。跨die就完全不一样了Intel Stratix 10/Agilex、Xilinx Versal这些高端器件内部由多个物理die拼接封装而成die与die之间通过高级封装基板上的微凸块和硅中介层走线连接。打个比方单die芯片像一个完整的办公室所有工位都在同一层走动几步就到。跨die芯片则像一个多层写字楼不同团队分布在不同楼层每次跨层交流都得坐电梯电梯就是die间接口。哪怕电梯再快上下楼的时间总是远大于同一层走几步路的时间。放到FPGA里这个“电梯时间”就是die边界路径上额外增加的信封延迟、穿越基板走线的传输延迟、以及缓冲器带来的延迟。实际参数上die间互连的延迟通常在几百皮秒到纳秒级别视具体器件和跨越距离而定但关键问题在于它比片内互连延迟大数倍而且不确定性更高。这就是为什么跨die设计的时序收敛难度远远超过同规模单die设计——你不仅要优化逻辑本身的时序还得处理die间通信带来的固定大额开销。1.2 为什么要跨die容量、带宽与良率的博弈很多人会有疑问既然跨die这么麻烦为什么不老老实实用大尺寸单die答案涉及芯片制造的物理上限。单个die的面积不可能无限增大光刻掩模版尺寸限制、良率随面积增大指数下降、功耗密度散热瓶颈这些因素使得把几百万人同时放在一块die上变得越来越难。而跨die方案允许厂商将多个中等尺寸的die封装到一起既突破了光刻限制又能提升整体良率——一个die有问题只需换掉那个die而不是报废整片大硅片。跨die还能实现异构集成。比如Versal里把CPU、DSP引擎、可编程逻辑放在不同die上再通过NoC或die间互连组合这种灵活性是单die方案做不到的。Intel也类似Agilex家族的某些型号在可编程逻辑之外还集成了硬核CPU、DSP、PCIe控制器它们分布在不同die上逻辑设计一旦跨入这些硬核所在的die时序处理就复杂起来。1.3 跨die对时序收敛带来的具体挑战跨die设计给时序收敛带来的挑战归结起来是三件事。第一die间路径延迟大且不透明。逻辑从die A输出经过die边缘的发射寄存器、封装走线、die B的接收结构调整整体路径延迟往往在1纳秒以上。如果设计中有大量这种跨die路径而你的时序目标跑到300MHz、500MHz留给逻辑门的时序余量就会被压缩到非常紧张。第二时钟分配结构的变化。每个die内部有独立的全局时钟树虽然它们可能源自同一个参考时钟但经过各自的PLL/MMCM、各自的高速时钟网络后die与die之间的时钟相位关系会存在不确定性。跨die路径评估时必须考虑时钟偏斜和抖动的影响否则实测时序可能和时序报告对不上。第三die间接口带宽成为系统瓶颈。这不算纯时序问题但会反过来影响架构设计。跨die通路的位宽和频率直接决定了die间能搬多少数据如果架构设计不合理跨die路径上大量数据排队等待等效延迟极高即使静态时序分析通过系统吞吐率也上不去。2. 跨die时序收敛的整体设计策略2.1 逻辑分区的核心原则让跨die路径变短、变少、变得可控跨die时序收敛的第一件事不是调整约束而是把逻辑合理地分配到各个die上让跨die路径的数量和长度尽量小。核心原则可以拆成四条。按数据流方向切分。把从数据采集到输出处理的完整链路排成流水线在每个die里放置一段相对完整的功能模块让die边界落在数据流最窄的位置。比如图像采集项目从前端sensor接口到ISP到显示输出切分时让MIPI RX、RAW数据预处理在一个dieISP算法和图像增强在另一个die两个die之间只传经过预处理的图像数据流而不是把算法计算中间量到处传递。把高扇出节点留在die内部。复位信号、使能信号、全局时钟使能这类高扇出网络如果跨越die边界会产生巨大的时序负担。因为信号得同时驱动两个die里的几千个寄存器扇出带来的延迟叠加在die间延迟上风险极高。这类信号要么在划分时确保所有终点都在同一个die要么做成两级结构——每个die单独生成一个本地复位树顶层复位信号只负责同步触发各die内部复位的生成。按跨die同步域隔离。die间通信路由尽量采用异步FIFO或者经过同步器的握手结构。两个die的时钟即使来自同一个外部晶振经过各自的时钟资源后相位关系也无法保证确定异步FIFO天然自带格雷码同步和安全指针交互能够避免在die边界上打一拍导致的亚稳态风险。把die间接口位宽和频率压到最低。die间接口不是免费的每跨一次die信号就要经过封装走线位宽越大、翻转频率越高时序压力越大、功耗越高。实际项目中优先压缩跨die数据位宽比如图像数据从RGB888压缩成YUV422再传输这就把跨die端口数减少了三分之一。2.2 时钟架构设计同一颗晶振两套时钟树怎么保证时序可靠跨die设计的时钟架构是时序收敛的重中之重。很多新手以为只要两个die都用同一个外部时钟输入就可以按同步时钟域直接做时序收敛结果跑时序分析时发现跨die路径的时钟偏斜大得离谱。原因是每个die内部的全局时钟树是独立构建的PLL锁定和分频关系也存在微小差异时钟到达die边界寄存器的时间并不一致。虽然有封装级的时钟分配网络尽量让它们同源但实际的skew和jitter必然比单die内部大几个量级。实战中我常用的做法有三个。保证同源参考时钟。外部晶振信号通常分发到芯片内的多个die但分发路径和缓冲器不同会引入偏差。设计时要确保两个die的参考时钟来自同一个输入管脚而不是从两个独立晶振分别进芯片。这能避免PLL参考输入频率不一致带来的额外不确定性。判断是否真跨时钟域。如果两个die的时钟同源但分别进PLLPLL输出频率相同且相位对齐到同一参考时钟那跨die路径仍然可以按同步路径处理但约束里要把两个时钟明确设成同样的group并让工具在跨die路径上做完整的STA分析不能只做CDC检查。必要时异步化处理。如果两个die的时钟频率不同或者频率相同但无法保证相位关系比如独立PLL锁定后相位差可变则必须采用异步设计。跨die路径上放异步FIFO或者在数据通路里用两级同步器消除亚稳态再通过握手信号完成数据交换。这种做法牺牲了一点带宽但换来了确定性实际项目中非常值得。2.3 复位信号跨die处理亚稳态问题是怎么被放大的单die设计中异步复位同步释放已经是被反复强调的常识。跨die环境下复位信号的处理难度会被放大一个量级因为复位信号的扇出通常极高一旦跨越die边界它要在不同die的多个时钟域里同时撤销释放几乎不可能做到完全同步。我见过最典型的错误是把全局复位直接连到两个die的寄存器上然后通过时序约束强行要求复位释放时间对齐。结果复位释放的一瞬间一些寄存器因复位信号到达时间不同而提前开始工作另一些还在复位态整个状态机瞬间乱掉。排查这种问题非常痛苦因为现象是偶发的只在特定温度、电压、异步事件组合下出现。正确的做法是分层处理。模块级设计用本地复位信号顶层外部复位只负责触发每个die内部的复位管理单元。每个die的复位管理单元各自产生本die的异步复位同步释放信号保证本die内部所有寄存器在同一个上升沿释放。die与die之间不共享复位树只传递一个复位脉冲——脉冲宽度要足够宽确保目标die在它所在时钟域的至少两个周期内都能采样到。释放顺序上一般先释放接收数据端的复位再释放发送数据端避免接收端还在复位态时发送端已经开始输出数据。3. 跨die时序收敛的工程化实操3.1 一个典型案例图像采集和预处理的双die架构概念讲多了容易飘还是落到一个具体项目上看看跨die设计从架构到收敛到底怎么一步步走出来。我之前一个图像采集项目逻辑规模200万级用了一颗双die FPGA。sensor接口和RAW数据预处理逻辑放在die AISP算法和图像输出接口放在die B两die之间的数据通路设计成32bit、频率250MHz用于传递经过预处理的图像数据和控制信号。这个架构为什么这么切因为sensor输入端的MIPI RX逻辑、byte-to-pixel转换、坏点校正、黑电平校准这些模块与外部sensor接口紧密绑定放在一个die里能减少I/O与逻辑之间的路由距离有利于高速接口时序收敛。而ISP这边去马赛克、颜色校正、Gamma修正、白平衡、图像增强这些算法的计算量大、存储需求高把它们放到另一个die可以和DDR控制器、视频输出接口形成局部高带宽区域。同时die A内部还有I2C接口用于sensor配置QSPI接口用于程序加载die B内部包含图像输出需要的TMDS编码器和LVDS发送器以及用于系统管理的串口。这些硬接口的管脚位置固定逻辑划分时需要让与这些硬接口相关的逻辑与它们落在同一个die避免从die边缘反复穿行。3.2 约束与布局告诉工具“跨die的底线在哪里”架构确定后时序收敛的战场就转移到约束文件里。我在这类项目中养成的第一个习惯是尽早把物理约束加进去越晚越被动。Pblock/Logic Lock Region设置。对每个die上放置的主要功能模块设置区域约束把MIPI RX和相关预处理逻辑限制在die A对应区域ISP算法模块限制在die B对应区域。千万不要把关键模块留给工具随意摆放默认情况下布局器追求的是整体面积和拥塞的平衡不会主动为跨die时序优化路径起点和终点位置。设置区域约束不仅能缩短跨die路径两端的逻辑到die边界的距离还能让器件规划更可预测。die间接口的管脚规划和bank分配。跨die信号不是随便走哪个IOB都可以的die间接口区域位置取决于器件内部定义。设计时需要查阅器件手册中die间接口的物理位置尽量让跨die信号集中在靠近die边界的几个bank避免信号穿过整个die去往远处边界。管脚分配时同一组跨die总线尽量放在相邻的IOB减少die内部从逻辑到IOB的路径差异。把这些信息写入SDC约束工具才能真正理解你的跨die意图。SDC里比较关键的是跨die路径的时钟约束。# 两个die的PLL输出时钟定义 create_clock -name clk_die_a -period 4.000 [get_pins {u_pll_a|clk}] create_clock -name clk_die_b -period 4.000 [get_pins {u_pll_b|clk}] # 如果两个时钟被判定为异步用set_clock_groups隔离 # set_clock_groups -asynchronous -group {clk_die_a} -group {clk_die_b} # 同步情况下让工具对跨die路径做完整时序分析 set_multicycle_path -setup 2 -from [get_clocks clk_die_a] -to [get_clocks clk_die_b] set_multicycle_path -hold 1 -from [get_clocks clk_die_a] -to [get_clocks clk_die_b]需要特别提醒set_multicycle_path不是万金油。它适用于数据在跨die通路上本来就是多周期有效的情况比如图像数据用valid-ready握手传输valid拉高后数据段持续多个周期这时设置multicycle合理如果是单周期数据交换硬设multicycle只会让时序报告好看实际功能必挂。3.3 跨die关键路径处理器流水线切分与寄存器搬移时序收敛进入到深水区后会碰到这么一类问题路径逻辑延迟本身不大但因为起点和终点分别落在两个diedie间延迟把整条路径的时序拖垮。此时分析工具给出的最差路径往往集中在die间接口附近解决思路有三个方向。第一在die边界把长组合逻辑拆开。组合逻辑不能无限级联跨die路径本身延迟就已经很大如果发送端或接收端还叠加了多级组合逻辑必然超限。把数据通路上较长的组合逻辑提前计算或拆成两级中间插入流水线寄存器让die间路径只承担寄存器到寄存器的传输延迟。第二把关键路径上的寄存器从die内部搬到边界。物理上让发送寄存器尽可能靠近die间输出端口接收寄存器尽可能靠近die间输入端口缩短die内路由距离。传统设计中这是底层细节问题但跨die设计中拓扑顺序对时序影响极大。直接修改RTL不现实一般通过逻辑复制和寄存器重定时来做。第三分析跨die路径报告时区分“die间固定延迟”和“die内可优化延迟”。报告里看着一段路径的总延迟数据一定要明确哪部分是不可压缩的die间开销哪部分是可以通过调整逻辑、增加驱动强度、优化布局来压缩的die内部分。把优化精力放在可压缩的部分不要在固定开销上死磕。3.4 关键时序报告怎么看跨die路径的典型数据拆解以Intel Quartus为例跨die路径时序分析报告会明确标出die crossing信息。打开TimeQuest或Timing Analyzer的path report找到最差路径逐段看延迟构成。一份典型的跨die setup path report可以拆成四段。起点寄存器到die内发射IOB的延迟。这一段取决于逻辑布局位置与IOB的远近通常几十到几百皮秒。如果这里的延迟异常大说明发送逻辑被布局到了die深处需要调用Logic Lock Region约束把模块拉到die边界。die间接口的发射侧结构延迟。包括输出寄存器、ODDR/oserdes结构、封装的输出缓冲器Intel叫emulated registerXilinx叫slice register at boundary。这里的延迟与IO配置有关选择单沿还是双沿、是否带延迟链都会影响最终数值。封装走线延迟。这是跨die路径的核心开销通常几百皮秒到数纳秒数值由器件决定基本不可优化。但在多die封装的路径选择上两个die之间的走线路由可能不止一条布局时可以尝试让Pblock规划避开长绕线。die间接口接收侧结构延迟和终点寄存器前的布线延迟。这部分同样与IO配置和逻辑布局相关接收端寄存器放得越靠近die边界这端越短。学会按这四段拆解路径就能在时序报告里快速定位瓶颈到底在逻辑、布局还是封装走线避免盲目改代码越改越差。4. 跨die项目中的常见问题与排查技巧4.1 die间路径时序违规改代码没用问题出在哪里跨die设计最迷惑人的一个现象是逻辑明明很简单路径上就两三个门但setup time差得离谱。新人本能反应是继续简化逻辑、增加流水线结果毫无改善。这时候要把目光从逻辑设计转出去检查是不是管脚分配或Pblock规划导致die间信号走了超长绕线。我曾经遇到一个案例两个die之间的控制信号只有3bit频率不高但时序报告显示die间延迟异常大。排查后发现问题出在管教分配上——这3bit信号被分配到die间接口两侧相距很远的IOB导致封装走线绕了大半个芯片。把IOB聚拢到同一区域后路径余量立刻正常了。这类问题光看RTL层面无法发现必须结合器件手册的die间接口分布图检查。另一个隐秘原因是跨die信号经过了IO逻辑的额外部件。有些die间接口会配置成寄存器或ODDR模式如果工具自动插入了额外的IOB寄存器而不是按普通路径处理路径分析会多出好几级延迟。检查报告中的logic elements列表确认没有意外加入的oserdes/deserializer结构必要时通过IOB属性配置消除。4.2 时序收敛工具的使用技巧增量编译与物理综合的实际感受跨die设计的编译时间通常很长Fitter可能要跑几小时甚至十几小时。如果每次改动都全量重跑项目节奏根本扛不住。所以跨die项目里增量编译和物理综合不是选项而是必需品。先用平面规划器或Floorplan Editor手动初排每个die的逻辑分布让布局器从一个合理分布起步。直接让布局器自由发挥跨die信号大概率会被布局器以降低拥塞为优先丢到die内部很远的位置。全量编译拿到一个基本收敛的结果后后续小改动启用增量编译。修改RTL时尽量保持顶层模块划分不变只改局部逻辑这样布局器可以复用大部分原有布局大幅减少收敛时间。如果打开增量编译后发现时序反而变差检查是否是增量模式下物理综合跳过了某些关键优化必要时对这个模块单独设置dont_recompute属性。物理综合工具有时候会起到奇效。Quartus的Physical Synthesis、Vivado的Physical Optimization它们能在布局后根据实际物理位置优化逻辑结构。对跨die关键路径使用针对寄存器复制和组合逻辑复用的选项往往能显著收敛时序。不过物理综合的优化结果具有随机性建议跑几个不同种子综合后对比时序报告选择最优版本继续后续流程。4.3 从布线结果反查die间接口规划是否合理布线完成后的资源利用率报告是一面很好的镜子照出架构规划的合理性。跨die接口区域如果布线拥塞严重说明跨die数据太多或位宽太大die间接口带宽设计不合理。即使时序收敛了在温度和电压波动下也可能出现时序退化。反查步骤是这样布线完成后打开Chip Planner查看die边界附近的水平方向布线资源利用率如果超过70%且拥塞区域正好集中在跨die信号通路上就要考虑压缩跨die数据量。常见手段包括把图像数据改成打包传输几个像素合成一个burst再跨die或者把部分数据处理逻辑搬到发送端进行让跨die传输的已经是预处理完成的数据。还有一种更激进但很有效的方式如果die间接口带宽受限就增大跨die时钟频率但降低位宽或者反过来扩大位宽但降低频率根据时序约束哪一侧更松来选择。实际项目中有一个技巧把接口做成奇偶通道甚至多加一条lane做冗余既能提高吞吐量又能给时序优化提供灵活性。4.4 跨die排障实录一个时钟偏斜引起的诡异故障分享一个花了三天才定位的跨die问题希望能帮你少走弯路。系统功能验证基本通过就是偶发性在温度升高或电压略微下降时出现图像数据错位表现是图像偶尔出现一两行条纹错乱。初查时怀疑跨die数据总线的时序不满足把总线降频后故障概率降低但没消除。后来做System Monitor采集die温度电压数据发现故障发生时刻的die内局部温度比平均值高十几度触发怀疑转向die间时钟相位漂移。定位方法是读取时序分析报告里两die时钟的phase shift数据对比实际PLL锁定状态。发现当温度升高时一个die的PLL输出时钟相位相对另一个die发生了微小漂移累积起来超过时序余量。问题根源是这两个die的参考时钟输入来自封装内部不同分支的参考时钟树虽然标称同源温度变化导致分支间延迟不一致。修复方案不是简单调PLL相位补偿而是调整PCB上外部参考时钟的扇出方式让同一路时钟信号以更短的路径、更对称的方式到达两die的参考时钟输入脚。同时改进了约束把两个时钟的skew值在SDC里手动设为更严格的数值保证时序分析留出额外余量。这个问题也让我养成了跨die项目里必查参考时钟物理路径的习惯。4.5 跨die设计常见问题速查表症状可能原因排查和解决方向跨die路径setup违规严重逻辑很简单但延迟大die间接口管脚分配分散封装走线绕远检查器件手册中die间接口分布聚拢管脚到相邻区域温度升高后偶发功能异常参考时钟到两个die的路径不对称温度引起时钟偏斜偏移检查外部时钟扇出结构和PCB走线长度SDC中增加skew约束跨die数据总线偶发错位同步跨die路径未考虑PLL输出相位不确定性改为异步FIFO或增加同步器确保时钟相位鲁棒布局布线结果跨die路径越长越慢发送或接收逻辑距离die间接口IOB太远使用Pblock把关键模块限定到die边界附近复位释放后状态机工作异常全局复位跨die释放时刻不一致改为各die本地复位管理统一异步复位同步释放逻辑die间接口区域布线拥塞严重跨die数据位宽或频率过高或逻辑划分不合理压缩数据位宽、打包传输调整逻辑分区降低die间流量物理综合后时序更好但结果不稳定物理综合优化随机性导致多种子跑物理综合选择最优结果锁定布局增量编译后时序恶化增量区域与跨die路径重叠关键路径被固定对关键跨die模块设置常驻优化区域避免增量边界切割5. 跨die时序收敛的进阶心法5.1 从搭架构到写约束时序收敛意识要前置到RTL阶段跨die设计的经验教训用一句话概括时序收敛不是布局布线阶段才考虑的事而是从RTL架构、模块划分、时钟规划那一刻就必须立项考量的事。动手写RTL之前先画一张die规划图哪个模块放哪个diedie之间传什么信号、多宽、多少频率、用什么同步方式这些决策在RTL编码前定下来。写RTL时就要在顶层模块的实例化关系里体现die边界别把所有模块平铺在顶层再用约束去区分物理区域——物理约束的作用是辅助布局而不是做逻辑重构。另外RTL阶段就要注意组合逻辑的级数控制。靠近die边界的信号通路组合逻辑级数要压得比片内路径更狠。比如片内路径允许十几级组合逻辑跑到200MHz那跨die路径上组合逻辑最好限制在四五级以内。把组合逻辑通过流水线拆分到die内部处理die边界只走寄存器到寄存器的干净通路。5.2 建立跨die时序预算的概念时序预算是一个非常实用的方法论。跨die项目里先按数据通路拆出一张时序表每段路径的延迟上限提前估算出来再对照实际时序报告检查。一张典型的跨die图像通路时序预算表是这样MIPI RX到die A内预处理的路径预留3nsdie A到die B跨die通路预留6nsdie B内ISP核心路径预留4nsISP输出到TMDS编码预留2ns。设定预算时把最紧的路径放在die内部算法逻辑上因为那是真正能通过设计提升的部分。die间路径的延迟预估要留足余量不同温度电压-condition下die间延迟可能波动20%以上。设计完成后对照实际报告检查每一段的实现值是否超出预算。如果有的段超标但有其他段余量充裕就可以通过调整Pblock区域或重新分配逻辑来平衡。如果整体超预算就得回到架构级重新审视跨die数据通路是否有简化方案。5.3 工具链之间的差异Intel和Xilinx的跨die设计各有各的脾气跨die设计不是某一家的专利Intel和Xilinx的高端器件都在做但两家的设计工具和术语体系差异很大实际操盘感觉完全不同。Intel侧Quartus Prime Pro版本对多die芯片的支持比较成熟芯片规划界面可以直接看到die边界的物理区域还能逐层查看die间互连资源的布线和拥塞。它的TimeQuest时序分析器能识别die crossing路径并在报告中高亮出来。做跨die约束时要对每个die的时钟网络分别定义时钟利用derive_clock_uncertainty时关注跨die路径的额外uncertainty是否被工具自动带入。Xilinx侧Vivado里利用Pblock做die级区域约束Versal平台的NoC和DMA引擎有自己的时序模型跨die路径往往是PL到NoC或PL到AI Engine之间的通路。需要特别注意的是Versal中有些路径走NoC而不是PL布线资源时序报告里显示为PS-PL interface路径这类路径的延迟模型和纯PL内部路径差异很大分析时要分开看。两家的共同点是跨die时序分析的准确性高度依赖器件相关模型SDC里一定要准确声明die间接口的物理约束否则工具默认按普通片内路径处理时序报告就是错的。5.4 跨die设计的功耗与散热对时序的隐性影响跨die器件的功耗密度通常比单die更高因为逻辑聚集度大、die间通信本身也在耗电。功耗直接影响结温结温升高会导致金属电阻增大、晶体管阈值电压变化时序延迟变大。很多跨die项目夏天跑得好好的一到机房温度升高就出问题多半是温度引发的时序失效。解决办法分两块。设计层面跨die接口尽量降低翻转率比如图像数据做总线翻转编码减少0/1切换次数省电同时降低crosstalk布局层面高功耗模块别堆在同一个热区Pblock设置时要考虑热分布让高功耗模块分散在不同die或同一die的不同角落。实际项目中常用技巧是功耗分析报告出来后把功耗密度最高的几个模块分开区域约束同时把跨die高速接口布放在散热条件更好的die位置。5.5 跨die接口带宽估算与数据流均衡前面提过die间接口是跨die设计的系统瓶颈这里展开讲讲怎么估算和均衡。假设die间接口是32bit、DDR模式、250MHz理论带宽就是322250MHz16Gbps。但DDR模式下每个信号沿的传输延迟不确定性会增大实际可靠带宽往往只有理论值的60%到70%。如果项目要求的跨die数据吞吐超过这个值就得考虑多条die间lane并行或者异构方案——从die A就把数据做压缩再跨die传到die B解压。数据流均衡不仅是带宽问题还关系到时序收敛。如果die A到die B的通路上同时有高速图像数据和低速控制信号低速信号通常也会被高速逻辑拖累因为它们在同一个die边界区域布线相互crosstalk会影响延迟。这种情况下把低速控制信号挪到另一条die间通道或者用异步FIFO隔离让两条通道走不同的物理资源时序分析结果会好看很多。6. 跨die项目实战总结跨die设计不是把单die项目丢到多die芯片上那么简单它要求在架构层面考虑die间通信方式在RTL层面控制路径拓扑在约束层面把跨die意图告诉工具在时序分析层面区分die间固定延迟和die内可优化延迟在物理层面规划好管脚位置和时钟树结构。这套方法论走下来跨die时序收敛虽然有难度但可预测、可控制。关键就是别把跨die路径当成普通片内路径去优化也别把工具当成黑盒把所有希望寄托在Physical Synthesis和多种子跑批上。先做好逻辑分区和时钟架构再配合合理的物理约束和时序预算管理跨die FPGA项目完全可以在计划时间内收敛。最后再分享一个我一直坚持的做法拿到新板子先做跨die时序基线测试。写一个简单的回环模块把一个die的时钟和IO逻辑用最直接的方式跨die连到另一个die再回来实测延迟、功耗和满足时序的最高频率把这个基线数据归档。后面所有跨die项目的优化目标都以这个基线为参照判断一个优化手段到底值不值得付出复杂度和面积代价。这个基线数据比任何仿真模型都更贴近你的具体板子表现跨die项目遇到疑难杂症时回头查基线数据往往能找到答案。
返回列表