您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > LATTICE-非常详细的时序约束(中文教程)
©LATTICESEMICONDUCTORCORPORATIONPage1AchievingTimingClosureJohnLi©LATTICESEMICONDUCTORCORPORATIONPage2Agenda•Timingclosure的概念•Timingclosure的步骤•采用合适的CodingStyle•进行适当的综合约束•管脚锁定•实施Latticeconstrains•Map•布局布线•控制placeandroute•Floorplanningthedesign©LATTICESEMICONDUCTORCORPORATIONPage3Timingclosure的概念•当前FPGA的设计规模越来越大,复杂程度日益增加,同时要求系统的Perfromace也越来越高。•获得Timing目标越来越困难.•设计者必须采用各种技术提升系统性能以满足设计的Timing要求.©LATTICESEMICONDUCTORCORPORATIONPage4Timingclosureprocedure•1.采用合适的codingstyle•2.进行适当的综合约束•3.管脚锁定•4.实施Latticeconstrains•5.Map•5.布局布线•7.控制placeandroute•8.Floorplanningthedesign©LATTICESEMICONDUCTORCORPORATIONPage5采用合适的codingstyle关于提升FPGA系统性能,工程师昀容易想到的方法就是通过进行综合约束、布局布线约束、和其他的优化技术提升系统性能,当然这些都是设计过程中所必需的,但所有这些优化方法对于系统性能的提升都是有限的,系统的性能昀终还是取决于工程师的设计(codingstyle),其中同步设计是昀重要的一点.下面讨论一些具体的coding技术,合理的运用这些coding技术能够尽可能的减小两级寄存器之间的延时从而获得更高的系统速度.-通用的codingstyle--HierarchicalCoding---TeamBased的设计:多个工程师可以同时参与到一个复杂设计中来。---加速设计和编译过程:关键模块可以单独修改而不会影像整个设计。---缩短设计周期:重复利用成熟模块。---模块可以容易被工程师理解和维护.---缺点:如果模块划分不合理,特别是模块边界设计处理不当会影响FPGA的资源利用率和昀终的系统性能。©LATTICESEMICONDUCTORCORPORATIONPage6采用合适的codingstyle---上述缺点可以通过细致的hierarchy设计来克服.---hierarchicaldesign需遵循的规则:----toplevel模块仅仅应该包含instantiationstatement,即在顶层模块中调用子模块。----任何I/Oinstantiation应当包含在toplevel模块中。----任何输入输出器件的信号应当在toplevel模块中声明为:input、output和bi-directionalPin.--Designpartitioning---在submodule中register所有输出,以保证所有submodule之间为同步设计,获得更好的系统performance。©LATTICESEMICONDUCTORCORPORATIONPage7采用合适的codingstyle---保证相关逻辑和共享资源在同一个模块中实现。这样可以做到更好的资源共享,综合工具只能针对一定数量的逻辑进行优化;综合工具可以在一个模块内部优化整个关键路径;跨模块的关键路径也不会被有效的优化。©LATTICESEMICONDUCTORCORPORATIONPage8采用合适的codingstyle---针对不同地优化目标来划分模块----分离关键路径和非关键路径可以获得更好的综合效果。----设计者应该在充分考虑性能需求和资源需求的基础上进行逻辑设计.针对不同的模块采用不同的优化策略,以避免相互影响。---对于那些并不需要highperformance的模块应该放松约束以节省和预留关键资源给关键路径。©LATTICESEMICONDUCTORCORPORATIONPage9采用合适的codingstyle---在单独的模块中保存实例化代码:可以非常方便的在RAM行为仿真模型和实际的RAM块代码之际间进行切换.---每个Module的规模在30~80PFU:小模块由于资源有限不利于综合工具实施“resourcesharing”算法;规模太大的模块一旦更改其中的一小部分就会导致整个模块重新综合,影响到一些不必要的逻辑,增大综合运行时间。--designregistering---利用流水设计提高系统性能,把一个较长的路径分割为多个短路径,并在多个时钟周期完成。©LATTICESEMICONDUCTORCORPORATIONPage10采用合适的codingstyle---IFstatementandCASEstatement比较----IF-THEN-ELSEstatement生成优先级的编码逻辑;CASEstatement实现balance逻辑.----如果每个解码条件相对独立,这两种声明方式实现的功能是一样的。©LATTICESEMICONDUCTORCORPORATIONPage11采用合适的codingstyle----IFstatement的主要缺陷:使设计不必要的复杂化;需要额外的逻辑来构建优先级Tree。----如果解码条件不是相对独立的,那末IF-THEN-ELSE结构会导致昀低优先级的output依赖于所有的控制条件。©LATTICESEMICONDUCTORCORPORATIONPage12采用合适的codingstyle©LATTICESEMICONDUCTORCORPORATIONPage13采用合适的codingstyle---如果output不需要优先级控制,昀好使用CASEstatement,因为CASE声明中每个分支的优先级是一样的,每个分支output是并发的。--避免不必要的Latch---综合工具会引入Latch,如果存在不完全的条件表达式:象IF-THEN-ELSE声明中没有else子句.---Latch会需要额外的资源,同时引入组合反馈环从而产生异步时序问题。---non-intendedlatch是可以避免的:使用时钟寄存器或遍历所有的输入条件assignoutput或是使用else(whenothers)作为昀后的子句©LATTICESEMICONDUCTORCORPORATIONPage14采用合适的codingstyle©LATTICESEMICONDUCTORCORPORATIONPage15采用合适的codingstyle--用时钟使能信号代替门控时钟---门控时钟会带来很多时序问题,昀典型的是clockskew.©LATTICESEMICONDUCTORCORPORATIONPage16采用合适的codingstyle---时钟使能guidelineinLatticeFPGA:----Clockenable只在触发器模式支持,Latch模式不支持.----在一个slice中的触发器对共享一个Clockenable信号.----所有的触发器支持positiveclockenable输入.----默认的时钟使能的优先级高于同步set/reset.但是可以编程实现set/reset的优先级高于clockenable.©LATTICESEMICONDUCTORCORPORATIONPage17采用合适的codingstyle©LATTICESEMICONDUCTORCORPORATIONPage18采用合适的codingstyle--针对分布式Memory的codingstyle---不推荐使用LibraryPrimitive去构建RAM或FIFO,这是因为RAM块在各个系列FPGA中的structure都是唯一的.综合工具并不能优化处理RAM的实现,会产生低效率的网表(fordevicefit).---强烈建议使用Ipexpress来构建RAM/FIFO.--针对高扇出网络控制综合工具---LatticeFPGA架构针对信号高扇出做了设计,比如具有丰富的一级时钟和二级时钟资源以及全局复位GSR布线资源等等.---综合工具在综合时会复制逻辑资源以减小扇出,这样会导致占用过多的资源同时chechingperformance也会变得困难。---综上所述在综合过程中有必要对fanout进行控制.©LATTICESEMICONDUCTORCORPORATIONPage19采用合适的codingstyle--双向buffer---双向buffer可以和以和普通I/O一样在顶层文件中实例化.---另一种方式就是在代码中实现.©LATTICESEMICONDUCTORCORPORATIONPage20采用合适的codingstyle©LATTICESEMICONDUCTORCORPORATIONPage21控制综合工具•在projectnavigator中选择顶层文件•在Processforcurrentsource中选择synplifysynthesizeverilogfile右击鼠标•选择Properties©LATTICESEMICONDUCTORCORPORATIONPage22控制综合工具•Frequency选项中指定综合频率.通常指定它为实际工作频率的两倍。•指定综合工具是执行面积优先还是速度优先算法。•SDC约束文件是Synplify的约束文件,可以在这里引入来控制综合过程。•是否基于综合的约束产生.PRF文件.该文件可以拷贝到Map后生成的.PRF文件中去控制Place&Route©LATTICESEMICONDUCTORCORPORATIONPage23控制综合工具•Enables/disablesFSMCompiler控制状态机的综合.设为True(默认)时,FSMCompiler会自动识别并优化设计中的状态机(状态据数量小于5:OneHot;大于5小于16:binary;大于16:grey)•DisableIOInsertionremovestheIObuffer(比如综合IP或是黑盒文件时)•指定输出网表类型(None、VHDL,Verilog).•指定在时序报告中报告的关键路径的数目.©LATTICESEMICONDUCTORCORPORATIONPage24控制综合工具•Enables/disables未约束的IO是否要用clockperiod去约束它的inputtoregister延时和registertooutput延时.•控制综合过程fanout.当信号fanout达到该限制时逻辑会被自动复制.©LATTICESEMICONDUCTORCORPORATIONPage25控制综合工具•选择是否在设计中使用GSR布线资源:Auto–软件自己判定是否使用GSR布线资源.True–综合工具会永远使用GSR.False–不允许综合工具使用GSR布线资源.•软件在时序报告中报告关键路径时起点和终点的数目.©LATTICESEMICONDUCTORCORPORATIONPage26控制综合工具•选择Precision作为综合工具时:一些Advanced选项有所区别。•是否使能Retiming。•约束全局的inputdelayns。•约束全局的outputdelayns。•设置该选项为True,综合工具会把Set/ResetonDFF转换为Latches来实现(当FPGA内部硬件架构不能同时支持set/reset时使用)。•设置该选型True软件会报告所有的时钟频率。•指定在timingreport中timingsummarypath的数目。©LATTICESEMICONDUCTORCORPORATIONPage27管脚锁定管脚约束应该在单板的设计早
本文标题:LATTICE-非常详细的时序约束(中文教程)
链接地址:https://www.777doc.com/doc-6624253 .html