1FPGA静态时序分析课程安排•FPGA设计基本流程•静态时序分析基本概念•寄存器的基本参数•时钟参数满足的条件•实例:电路的时序分析方法2课程安排•FPGA设计基本流程•静态时序分析基本概念•寄存器的基本参数•时钟参数满足的条件•实例:电路的时序分析方法3FPGA设计流程4综合-将设计转化成和器件相关的描述-优化以达到面积和性能的要求设计规范布局布线-将逻辑实体映射到目标器件中去,并使其满足面积和性能的要求。-确定布线需要的资源设计导入/RTL实现-面向结构或功能的描述RTL仿真-功能仿真-确认逻辑功能不考虑延时等因素LEM512M4KI/OFPGA设计流程5时序分析-确认性能满足要求-静态时序分析门级模拟-时序仿真-确认设计在目标工艺中的正常工作板级模拟&测试-仿真版设计-板上程序&测试tclk系统规划和预算•系统功能的总体规划:•功能集的定义;•端口的定义;•模块的基本划分和功能定义:•每个模块应该完成的功能;•模块之间的接口定义;•模块间通讯的问题一定要考虑好,硬件通信的成本一般比较大。6设计的整体规划•设计规模的初步估计,大致应该选择哪一层次的芯片;•设计时序的宏观规划:•频率和时钟结构;•可能的关键路径,着重优化;•模块的进一步细化,考虑可重用性等的规划:•可以考虑基本单元,比如加法、乘法器和寄存器等。7设计实现•用电路框图或者HDL描述实现自己的设计:•简单的设计可以用电路框图;•大型复杂的一般倾向于用HDL描述;•HDL描述和计算机编程中的高级语言描述有很大不同,每一个描述都要考虑硬件的实现能力,是不是可以综合的等等,目前HDL语言标准中仍然有不能被综合的语法,这些要尤其注意。8功能仿真•对逻辑功能进行验证:•不考虑时序问题,认为门都是理想门,没有延时;•详细一些的可以认为门延时都是一样,而忽略互连线的延时。9RTL代码逻辑仿真器调用模块的行为仿真模型测试数据测试程序(testbench)逻辑综合•通过映射和优化,把逻辑设计描述转换为和物理实现密切相关的工艺网表:10RTL代码逻辑综合器调用模块的黑盒子接口设置综合目标和约束条件EDIF网表(netlist)HDL网表(netlist)门级仿真11逻辑综合器HDL网表(netlist)逻辑仿真器测试数据调用模块的行为仿真模型测试程序(testbench)一般来说,对FPGA设计这一步可以跳过不做,但可用于debug综合有无问题布局布线•将综合生成的网表,在FPGA内部进行布局布线的设计,并最终生成用于下载的二进制配置文件;12逻辑综合器EDIF网表(netlist)FPGA厂家工具调用模块的综合模型设置布局布线约束条件HDL网表(netlist)SDF文件(标准延时格式)下载/编程文件时序逼近•时序逼近流程是一个推荐的设计方法可以帮助设计满足它们的时序目标13时序仿真14FPGA厂家工具HDL网表(netlist)SDF文件(标准延时格式)逻辑仿真器测试数据FPGA基本单元仿真模型测试程序(testbench)物理验证•将生成的二进制配置文件下载到FPGA上,进行实际的功能和时序的测试;•由于FPGA常常是作为整个系统一部分,因此还应该将FPGA放到整个系统中进行验证,整个系统工作正常,才算完成了开发过程。15课程安排•FPGA设计基本流程•静态时序分析基本概念•寄存器的基本参数•时钟参数满足的条件•实例:电路的时序分析方法1617时序分析的目的•电路的正常工作依赖于电路工作的快慢,即电路的时序特征•时序分析可以在芯片设计阶段,为设计者提供电路的时序特征。•时序分析可以为电路的正常工作提供时序保证。它可以完成对电压、温度、工艺等参数的分析。18怎么办?•功能是否可以和时序分开?•关心信号变化发生的时刻,而不是信号如何发生变化。19静态时序分析的模型•电路是同步运行的。•电路被触发器分割。触发器触发器组合电路20基本原理•不考虑长时间的仿真序列•将信号的各种变化“折叠”到一个时钟周期•寻找信号最晚进入稳定的时刻•寻找信号最早脱离稳定的时刻•通过电路在极端情况下的分析保证电路在各种情况下都可以正常工作•“静态”相对于“动态”是指没有仿真。21静态时序分析•定义:在不模拟的条件下,计算电路是否符合时延约束。•步骤:•设计分解为一系列的时延路径•每一条路径都计算延时•检查所有的路径22同步电路的简单时延约束•同步电路设计•数据的来源是时钟触发的器件•数据的目的是时钟触发的器件•目的•规定设计中的所有路径的时延约束•输入的路径•内部(寄存器到寄存器)的路径•输出的路径课程安排•FPGA设计基本流程•静态时序分析基本概念•寄存器的基本参数•时钟参数满足的条件•实例:电路的时序分析方法2324路径和分析类型ThreetypesofPaths:1.ClockPaths2.DataPath3.AsynchronousPaths*ClockPathsAsyncPathDataPathAsyncPathDQCLRPREDQCLRPRETwotypesofAnalysis:1.Synchronous–clock&datapaths2.Asynchronous*–clock&asyncpaths25Launch&LatchEdgesCLKREG1DQSETCLRREG2DQSETCLRComb.LogicCLKLaunchEdgeLatchEdgeDataValidDATALaunchEdge:theedgewhich“launches”thedatafromsourceregisterLatchEdge:theedgewhich“latches”thedataatdestinationregister(withrespecttothelaunchedge,selectedbytiminganalyzer;typically1cycle)26Register的参数DClkQDQClktc-otholdTtsutsu:建立时间,在时钟有效沿到来之前寄存器数据输入应保持稳定的时间,它间接约束了组合逻辑的最大延时thold:保持时间,在寄存器数据输入的引脚的数据在系统有效时钟沿到来后需要保持稳定的时间,它间接约束了组合逻辑的最小延时tc-o:寄存器从有效时钟沿到来到输出有效的最大时间违反建立或保持时间,都会造成触发器工作异常,产生Metastability。为了可靠工作,在建立时间开始到保持时间为止的这段时间内,触发器的输入端信号不应发生变化。27Recovery&RemovalRecovery:TheminimumtimeanasynchronoussignalmustbestableBEFOREclockedgeRemoval:TheminimumtimeanasynchronoussignalmustbestableAFTERclockedgeDQCLRSETCLKTremValidASYNCTrecCLKASYNCRecoveryTime•Recoverytime-istheminimumlengthoftimethattheactivelowsetorresetsignalmustremainhighbeforetheactiveedgeoftheclocktoensurecorrectfunctioningofthecell.DQCLKClockInput时钟不确定性输入时钟抖动是时钟不确定性的原因之一(ClockUncertainty)时钟偏斜(clockskew)•所有时序设计和分析都以时钟网络为参考。路径延迟分析必须考虑时钟质量。•时钟偏斜是一个时钟信号沿着同一个时钟网络到达源触发器和目标触发器的时间差。.•所有时钟网络布线应该使用FPGA提供的专用时钟资源,否则时钟偏斜会非常严重。•时钟偏斜分为负时钟偏斜和正时钟偏斜,主要对时钟周期产生影响。时序分析器能够报告时钟偏斜问题。30时钟偏斜(clockskew)•Clockskew:Variationofinarrivaltimeofaclocktransitiontoflops•Clockskewiscausedbymismatchesintheclockpaths:•Unequalwirelength•Unequalbufferdelay•Unequalload•IRdrop•In-dieprocessvariation31课程安排•FPGA设计基本流程•静态时序分析基本概念•寄存器的基本参数•时钟参数满足的条件•实例:电路的时序分析方法3233数据到达时间DataArrivalTime=launchedge+Tclk1+Tco+TdataCLKREG1.CLKTclk1DataValidREG2.DTdataLaunchEdgeDataValidREG1.QTcoThetimefordatatoarriveatdestinationregister’sDinputREG1PREDQCLRREG2PREDQCLRComb.LogicTclk1TCOTdata34时钟到达时间ClockArrivalTime=latchedge+Tclk2CLKREG2.CLKTclk2LatchEdgeThetimeforclocktoarriveatdestinationregister’sclockinputREG1PREDQCLRREG2PREDQCLRComb.LogicTclk235数据要求时间-SetupDataRequiredTime=ClockArrivalTime-TsuCLKREG2.CLKTclk2LatchEdgeTheminimumtimerequiredforthedatatogetlatchedintothedestinationregisterTsuDataValidREG2.DDatamustbevalidhereREG1PREDQCLRREG2PREDQCLRComb.LogicTclk2Tsu36数据要求时间-HoldDataRequiredTime=ClockArrivalTime+ThCLKREG2.CLKTclk2LatchEdgeTheminimumtimerequiredforthedatatogetlatchedintothedestinationregisterThDatamustremainvalidtohereDataValidREG2.DREG1PREDQCLRREG2PREDQCLRComb.LogicTclk2Th37Tclk2SetupSlackREG2.CLKThemarginbywhichthesetuptimingrequirementismet.Itensureslauncheddataarrivesintimetomeetthelatchingrequirement.TsuCLKREG1.CLKTclk1DataValidREG2.DTdataDataValidREG1.QTcoSetupSlackLaunchEdgeLatchEdgeREG1PREDQCLRREG2PREDQCLRComb.LogicTclk1TCOTdataTclk2Tsu38SetupSlack(cont’d)•Slack为正,表示数据提前到达,此时组合逻辑延迟满足条件,Register有足够的建立时间;•Slack为负,表示数据比预期的时间晚到达,此时显然不满足Register的建立时间,不满足约束;SetupSlack=DataRequiredTime–DataArrivalTime(Current)39满足建立时间的条件时钟周期应大于寄存器延时、组合逻辑延时、和目标寄存器建立时间的和40ClockPeriod=Clock-to-Out+DataDelay+SetupTime-ClockSkew=tco+B+tsu-(E-C)fmax=1/ClockPeriodBCtcotsuEClockPeriodClockSetup(fmax)•Worst-CaseCloc