您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > FPGA和SOPC应用——时序分析与逻辑优化
FPGA和SOPC应用——时序分析与逻辑优化华中科技大学启明学院电工电子科技创新中心王贞炎内容时序分析基础TimeQuest时序分析器FPGA资源优化FPGA时序优化时序分析:时序分析是做什么的?帮助分析和验证一个设计中的时序是否符合要求所有的数据路径都会按照对应的约束被分析整个设计必须符合时序要求或例外指导fitter(布局布线器)布局布线出符合要求的结果时序分析:一些基本概念启动和锁存沿(launch&latchedge)建立和保持时间(setup&holdtimes)数据和时钟到达时间(data&clockarrivaltime)数据需求时间(datarequiredtime)建立和保持时间裕量(setup&holdslack)恢复和移除时间(recovery&removaltime)时序分析:路径和分析三种路径:时钟路径(ClockPaths)数据路径(DataPaths)异步路径(AsynchronousPaths)两类分析:同步分析(Synchronous):分析时钟与数据路径异步分析(Asynchronous):分析时钟与异步路径时序分析:启动沿和锁存沿启动沿:使数据从源寄存器“发射”出去的时钟沿锁存沿:使数据被目的寄存器锁存的时钟沿(一般来说,锁存沿在启动沿的后一个周期)启动沿锁存沿时序分析:建立和保持时间建立时间(TSU):在时钟有效沿之前数据必须保持稳定的最小时间保持时间(TH):在时钟有效沿之后数据必须保持稳定的最小时间建立时间和保持时间形成一个时间窗,在此窗之内,数据必须保持稳定。时序分析:数据到达时间数据到达目的寄存器数据输入端的时间数据到达时间(DAT)=启动沿+Tclk1+Tco+Tdata时序分析:时钟到达时间时钟到达目的寄存器时钟输入端的时间时钟到达时间(CAT)=锁存沿+Tclk2时序分析:数据建立时间要求数据到达目的寄存器输入端的最迟时间数据建立时间要求(DRTSU)=CAT-TSU时序分析:数据保持时间要求数据在目的寄存器输入端消失的最早时间数据保持时间要求(DRTH)=CAT+TH时序分析:建立时间裕量数据到达时间与数据建立时间要求之间的裕量数据建立时间裕量(SetupSlack)=DRTSU-DAT时序分析:保持时间裕量数据保持时间要求与数据保持时间之间的裕量数据保持时间裕量(HoldSlack)=DAT-DRTH时序分析:I/O分析I/O分析采用与前面同步分析中同样的方法必须指定外部器件和PCB上的时序信息时序分析:恢复和移除时间恢复时间:在时钟有效沿之前异步信号必须保持稳定的最小时间移除时间:在时钟有效验之后异步信号必须保持稳定的最小时间•异步=同步?•异步信号的确不需要时钟,但不是完全与时钟无关•不能在时钟的有效沿附近跳变,因为会引起寄存器内部出现亚稳态。时序分析:QUARTUSII中的时序模型QuartusII中为每个器件建立了两个模型:SlowCorner模型(慢速模型)为每条路径上可能出现的最慢性能的情况建模在高温低电压下出现最慢性能FastCorner模型(快速模型)为每条路径上可能出现的最快性能的情况建模在低温高电压下出现最快性能为什么两个模型:慢速模型是满足建立时间的最坏情况快速模型是满足保持时间的最坏情况对于65nm器件,由于低温情况下的“逆温效应”,QuartusII中还有低温慢速模型。TIMEQUESTTA与传统时序分析器(ClassicTimeAnalyzer)相比,TimeQuestTimeAnalyzer:采用工业标准的约束方法(SynopsisDesignConstraintsFile)采用工业标准的报告方法可采用GUI或命令行设置约束、运行分析和查看报告可报告任意路径的逐节点的时序信息,并图形化的表示更好地支持65nm及以下制程的FPGA从QuartusII10开始Altera将不再支持ClassicTimeAnalyzerTIMEQUESTTA:TIMEQUESTGUITIMEQUESTTA:SDC文件编辑器可使用GUI中的对话框添加约束语句(Edit–InsertConstraint)语法高亮语法提示TIMEQUESTTA:图形化的SDC编辑TIMEQUESTTA:使用TQ的基本步骤1.生成时序网表2.输入SDC约束a.创建SDC文件并读入或读入已有的SDC文件b.直接在控制台窗口输入约束3.更新时序网表4.生成时序报告5.保存约束TIMEQUESTTA:使用TQ的流程综合(Synthesize)在TimeQuestTA里添加时序要求(约束)在工程中使能TimeQuestTA布局布线(Fitter)采用TimeQuestTA察看报告、验证时序TIMEQUESTTA:约束的重要性时序分析告诉我们电路的实际表现会是怎样提供约束告诉分析工具我们希望电路的表现应该是怎样约束描述了一个电路的时序应该是怎样约束告诉布局布线器(Fitter)布线的目标约束提供了与时序分析结果对比的参照在没有提供约束的时候,TimeQuestTA只能提供有限的分析TIMEQUESTTA:如何输入约束所有下面将提到的约束都可以通过GUI输入TimeQuest的Constraints菜单SDC文件编辑器的Edit–InsertConstraint菜单TIMEQUESTTA:SDC中的一些术语术语意义Cell器件内建的单元(查找表、寄存器、IO单元、锁相环等等)PinCell的输入输出端口(注意与QuartusII工程中的Pin区分)NetPin之间的连接Port设计顶层的输入输出(注意与QuartusII工程中的Port区分)TIMEQUESTTA:SDC中的集合在工程网表中满足查找条件的一系列名字(Net、Port等)在SDC中用于对多个类似路径或网络做约束可用的查找语句:get_portsget_pinsget_clocksall_clocksall_registersall_inputsall_outpus等等具体语法参考QuartusII手册第三卷TIMEQUESTTA:CLOCK加在电路中任何节点的周期性重复电平信号都可以称为时钟内部时钟:加在电路中的作为Cell时钟输入的信号“虚拟”时钟:并没有实际输入,或并不与电路直接有关的时钟信号。比如由FPGA输出给外部电路的时钟采用节点名字或一些有实际意义的名字命名时钟两种时钟:基本时钟绝对的或基础的时钟,一般是外部输入衍生时钟由某个源时钟衍生出来的时钟,必须指定与源时钟的关系由某些功能模块输出的时钟,如锁相环输出所有时钟都是由联系的TIMEQUESTTA:CLOCK约束CreateclockCreategeneratedclockPLLclocksAutomaticclockdetection&creationDefaultconstraintsClocklatencyClockuncertaintyAutomaticallyDeriveUncertaintyCommonClockPathPessimismRemovalTIMEQUESTTA:CREATECLOCKcreate_clock[-nameclock_name]–periodtime[-waveform{rise_timefall_time}][targets][-add]create_clock–period20.0–nameclk_50[get_portsclk_in]create_clock–period10.0–waveform{2.08.0}[get_portssysclk]TIMEQUESTTA:采用GUI创建时钟TIMEQUESTTA:NAMEFINDERTIMEQUESTTA:GENERATEDCLOCKcreate_generated_clock[-nameclock_name]-sourcemaster_pin[-master_clockclock_name][-divide_byfactor][-multiply_byfactor][-duty_cyclepercent][-invert][-phasedegrees][-edgesedge_list][-edge_shiftshift_list][targets][-add]TIMEQUESTTA:用GUI创建衍生时钟TIMEQUESTTA:衍生时钟例1create_clock–period10[get_portsclk_in]create_generated_clock–nameclk_div\–source[get_pinsinst|clk]\-divide_by2\[get_pinsinst|regout]TIMEQUESTTA:衍生时钟例2create_clock–period10[get_portsclk_in]create_generated_clock–namepulse_clk_out–sourceclk_in\–edges{145}[get_pinspulse_logic|out]TIMEQUESTTA:衍生时钟例3create_clock–period10[get_portsclk_in]create_generated_clock–namepulse_clk_out-sourceclk_in\–edges{145}-edge_shift{2.52.50}[get_pinspulse_logic|out]TIMEQUESTTA:DERIVEPLLCLOCKSderive_pll_clocks[-use_tan_name][-create_base_clocks]•用于自动地根据PLL的设置产生由PLL输出的衍生时钟•必须已经定义了PLL的输入时钟(除非指定了create_base_clocks选项)•在PLL的输出设置改变时,会自动更新衍生时钟•可以采用write_sdc–expand命令将其扩展为标准的create_clock和create_generated_clock语句•必须在SDC文件或控制台窗口中键入(GUI中没有)TIMEQUESTTA:DERIVEPLLCLOCKS例子create_clock–period10.0[get_portsin_clk]create_generated_clock–namec100\–source[get_pins{inst|altpll_component|pll|inclk[0]}]\-divide_by1\[get_pins{inst|altpll_component|pll|clk[0]}]create_generated_clock–namec200\–source[get_pins{inst|altpll_component|pll|inclk[0]}]\-multiply_by2\[get_pins{inst|altpll_component|pll|clk[1]}]create_generated_clock–namec200_shift\-source[get_pins{inst|altpll_component|pll|inclk[0]}]\-multiply_by2-phase90\[get_pins{inst|altpll_component|pll|clk[2]}]create_clock–period10.0\[get_portsin_clk]derive_pll_clocks#orsimply:derive_pll_clocks\–create_base_clocksTIMEQUESTTA:默认的时钟约束所有的时钟都必须被约束如果有时钟没有被约束,默认的约束将会是:derive_clocks-period1.0derive_pl
本文标题:FPGA和SOPC应用——时序分析与逻辑优化
链接地址:https://www.777doc.com/doc-6150655 .html