Actel FPGA静态时序分析
asic

●专用集成电路的类型及特点分为三类:1全定制(Full Custom)全定制ASIC芯片的各层掩模都是按特定电路功能专门制造的. 2半定制(Semi-Custom)半定制ASIC芯片的单元电路是用预制的门阵(Gate Array)做成的,只有芯片的金属连线是按电路功能专门设计制造的。
一般称为MPGA,即:掩模可编程门阵。
3可编程(Programable )单元电路、金属连线和I/O引脚都是可编程的ASIC。
●可编程ASIC主要包括两大类:l CPLD(Complex programmable logic device):复杂可编程逻辑器件。
l FPGA(Field programmable Gate Array):现场可编程门阵列。
●集成电路设计和制造过程设计过程1制定规范(SPEC)2系统设计(System Design)3电路设计(Circuit Design)4版图设计(Layout Design)制造过程1制版2掩膜版制造(MASK)3流片(Fab) 4光刻、生长、扩散、掺杂、金属化,蒸铝等产生Pn结、NPN结构、MOS 电阻、电容等5 测试(Testing) 以Spec和Test Vector 为标准检测制造出的芯片是否满足设计要求6封装(Packaging) 7磨片划片(Sawing) 8键合(Wire Bonding) 9包封(Packaging)形式:DIP, QFP,PLCC,PGA,BGA,FCPGA 等●专用集成电路预测与发展SOC (System on a chip)1 工艺(Process)由0.35um,0.25um,0.18um进入0.13um,0.10um即高速,低压,低功耗2 EDA设计工具与设计方法必须变革以适应深亚微米工艺的发展(如Single Pass , Physical Synthesis 等)3 可编程器件向更高密度,更大规模和更广泛的领域发展(如Mixed Signal )4 Analog 电路-- 高速,高精度,低功耗,低电压●ASIC产品的发展动向内嵌式系统(Embeded System) (自动控制, 仪器仪表)计算机,通讯结合的系统芯片(Cable Modem, 1G )多媒体芯片(Mpeg Decoder Encoder, STB , IA )人工智能芯片光集成电路●设计过程分电路设计---前端设计版图设计---后端设计●设计流程(方法)分1.bottom-Up自底向上(Bottom-Up)设计是集成电路和PCB板的传统设计方法,该方法盛行于七、八十年设计从逻辑级开始,采用逻辑单元和少数行为级模块构成层次式模型进行层次设计,从门级开始逐级向上组成RTL级模块,再由若于RTL模块构成电路系统对于集成度在一万门以内的ASIC设计是行之有效的,无法完成十万门以上的设计设计效率低、周期长,一次设计成功率低2 Top-Downop-Down流程在EDA工具支持下逐步成为IC主要的设计方法从确定电路系统的性能指标开始,自系统级、寄存器传输级、逻辑级直到物理级逐级细化并逐级验证其功能和性能●Top-Down设计与Bottom-Up设计相比,具有以下优点:设计从行为到结构再到物理级,每一步部进都进行验证,提高了一次设计的成功率。
静态时序分析(statictiminganalysis)---时序路径

静态时序分析(statictiminganalysis)---时序路径时序分析⼯具会找到且分析设计中的所有路径。
每⼀个路径有⼀个起点(startpoint)和⼀个终点(endpoint)。
起点是设计中数据被时钟沿载⼊的那个时间点,⽽终点则是数据通过了组合逻辑被另⼀个时间沿载⼊的时间点。
路径中的起点是⼀个时序元件的时钟pin或者设计的input port。
input port可以作为起点是因为数据可以由外部源(external source)进⼊设计。
终点则是时序元件的数据输⼊pin或者设计的output port。
同理output port可以作为终点是因为数据可以被外部源捕捉到。
上图显⽰⼀个时序路径的例⼦。
path1 开始于⼀个input port 且结束于时序元件的数据输⼊端path2 开始于时序元件的时钟pin且结束于时序元件的数据输⼊端path3 开始于时序元件的时钟pin且结束在⼀个output portpath4 开始于input port 且结束于 output port每⼀个path都有专属的slack,slack值可以是正,0或者负。
某⼀个path拥有最坏的slack的话则称之为 critical pathcritical path拥有最⼤的负slack值。
若是所有的path都没有时序违规,则slack都是正数,此时最⼩的那个slack则是critical path。
复数critical paths意味着某⼀组的path都是critical path。
路径可以被分组(group)来得到各⾃的时序分析,时序报告和优化。
在IC compliler中输⼊report_timimg可以得到时序报告,如下所⽰。
Startpoint: I_RISC_CORE/I_INSTRN_LAT/Instrn_1_reg_27_ (rising edge-triggered flip-flop clocked by SYS_2x_CLK)Endpoint: I_RISC_CORE/I_ALU/Zro_Flag_reg (rising edge-triggered flip-flop clocked by SYS_2x_CLK)Path Group: SYS_2x_CLKPath Type: maxPoint Incr Path----------------------------------------------------------------------------------clock SYS_2x_CLK (rise edge) 0.000.00clock network delay (propagated) 0.510.51I_RISC_CORE/I_INSTRN_LAT/Instrn_1_reg_27_/CP (senrq1) 0.000.51 rI_RISC_CORE/I_INSTRN_LAT/Instrn_1_reg_27_/Q (senrq1) 0.62 1.13 fI_RISC_CORE/I_INSTRN_LAT/Instrn_1[27] (INSTRN_LAT) 0.00 1.13 fI_RISC_CORE/I_ALU/ALU_OP[3] (ALU) 0.00 1.13 fI_RISC_CORE/I_ALU/U288/ZN (nr03d0) 0.36 * 1.49 rI_RISC_CORE/I_ALU/U261/ZN (nd03d0) 0.94 * 2.43 fI_RISC_CORE/I_ALU/U307/ZN (invbd2) 0.35 * 2.78 rI_RISC_CORE/I_ALU/U343/Z (an02d1) 0.16 * 2.93 rI_RISC_CORE/I_ALU/U344/ZN (nr02d0) 0.11 * 3.04 fI_RISC_CORE/I_ALU/U348/ZN (nd03d0) 0.28 * 3.32 rI_RISC_CORE/I_ALU/U355/ZN (nr03d0) 0.29 * 3.60 fI_RISC_CORE/I_ALU/U38/Z (an02d1) 0.15 * 3.75 fI_RISC_CORE/I_ALU/U40/Z (an02d1) 0.12 * 3.87 fI_RISC_CORE/I_ALU/U48/ZN (nd02d1) 0.06 * 3.93 rI_RISC_CORE/I_ALU/U27/ZN (nd02d1) 0.06 * 3.99 fI_RISC_CORE/I_ALU/Zro_Flag_reg/D (secrq4) 0.00 * 3.99 fdata arrival time 3.99clock SYS_2x_CLK (rise edge) 4.00 4.00clock network delay (propagated) 0.47 4.47clock uncertainty -0.10 4.37I_RISC_CORE/I_ALU/Zro_Flag_reg/CP (secrq4) 0.00 4.37 rlibrary setup time -0.37 4.00data required time 4.00--------------------------------------------------------------------------------data required time 4.00data arrival time -3.99-------------------------------------------------------------------------------slack (MET) 0.01此例⼦的图如下:报告开始显⽰了路径的起点,路径终点,路径组名和路径检测的类型。
FPGA时序参数分析及输入延时对布线的影响

FPGA时序参数分析及输入延时对布线的影响FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,广泛应用于数字电路设计和实现。
在FPGA设计中,时序参数分析和输入延时对布线的影响是非常重要的。
时序参数分析是指对FPGA设计中各个时钟周期内的各个信号的到达时间和处理时间进行分析和优化的过程。
FPGA设计中的时序参数包括时钟频率、时钟延迟、最大延时等。
通过对时序参数的分析,可以保证FPGA设计在给定的时钟频率下正常工作,并优化设计以满足性能要求。
输入延时是指信号从输入端口到达FPGA内部逻辑电路的时间延迟。
输入延时可以分为外部输入延时和内部输入延时。
外部输入延时是指信号从FPGA器件引脚到达输入寄存器的延时。
内部输入延时是指信号从输入寄存器到达逻辑电路的延时。
输入延时对FPGA设计的布线有重要影响。
输入延时对布线的影响主要体现在以下几个方面:1.时序约束:输入延时决定了信号在FPGA内部的传播时间,而时序约束描述了这些信号到达和离开各个逻辑单元的时间关系。
因此,通过对输入延时的分析,可以确定适当的时序约束,并在布线过程中对信号路径进行约束,以满足时序要求。
2.时钟分配:输入延时还影响时钟信号在FPGA内部的分配方式。
时钟分配是指将时钟信号传递给各个逻辑单元的过程。
如果输入延时较大,可能需要采取更长的时钟路径,使时钟能够及时到达各个逻辑单元。
3.时钟域划分:输入延时也会对时钟域划分造成影响。
时钟域是指在不同时钟频率下工作的信号集合。
输入延时较大的信号可能要求在不同的时钟域中处理,进而需要将不同时钟域的逻辑电路进行分离,以避免时序问题。
对布线的影响主要可以从以下几方面进行分析:1.布线路径:输入延时较大的信号路径可能需要更长的线长,因而需要更多的布线资源。
布线路径决定了信号传播的延时和稳定性。
因此,在布线过程中,需要根据输入延时的要求合理规划布线路径,并进行资源分配和优化。
XilinxISE下的静态时序分析与时序优化

XilinxISE下的静态时序分析与时序优化单击Design Summary中的Static Timing就可以启动时序分析器(Timing Analyzer)。
在综合、布局布线阶段ISE就会估算时延,给出⼤概的时延和所能达到的最⼤时钟频率,经过PAR后,在Static Timing中给出的是准确的时延,给出的时序报告可以帮助我们找到关键路径,然后针对其进⾏优化,提⾼系统的时钟频率。
这⾥的Minimum period指的是最⼩的逻辑延迟;造成时序性能差的原因很多,主要缘由以下⼏种:1. 布局太差⼀般和代码本⾝没有关系。
解决⽅案:只能从软件⾃⾝的布局算法考虑(调整布局的努⼒程度)或者使⽤⾼端芯⽚2. 逻辑级数太多逻辑级数越多,资源的利⽤率越⾼,但是对⼯作频率的影响也越⼤。
解决⽅案:1.使⽤流⽔线技术;2.如果是多周期路径,添加多周期约束;3.良好的编码习惯,不要过多嵌套if-else,尽量使⽤case代替if语句。
3. 信号扇出过⾼⾼扇出会造成信号传输路径过长,从⽽降低时序性能。
解决⽅案:1.逻辑复制;2.区域约束,想过逻辑放置在⼀起。
4. 不要同时使⽤双边沿触发FPGA的底层⼯艺都是单向的同步电路,所以本⾝不⽀持统⼀信号的双边沿触发,ISE在实际处理的时候,会⾃动将该信号2倍频,然后利⽤第⼀个沿处理上升沿,第⼆个沿处理下降沿。
这样在分析时序时,⾃动把约束升级为ucf⽂件中的两倍。
5. Xilinx最优时序解决⽅案1.I/O约束 根据Xilinx器件的特点,控制信号置于器件的顶部或底部,且垂直布置;数据总线的I/O置于器件的左右两侧,且⽔平布置,这样可以最⼤程度的利⽤芯⽚底层结构。
2.ISE实现⼯具 ISE中的⼯具具备不同的努⼒程度,直接使⽤最⾼级别的可以提⾼时序性能,但是会耗费很多时间,所以应该逐步调整努⼒程度。
第⼀遍使⽤默认的参数选项,如果不满⾜再调整综合、映射、布局布线的参数。
时序优化的若⼲策略优化⽅向⼀:合理使⽤Blcok RAM和Distributed RAM1. 均衡Block RAM和Distributed RAM的使⽤。
【第八章时序检查下】静态时序分析圣经翻译计划

【第⼋章时序检查下】静态时序分析圣经翻译计划8.9 举例在本节中,我们将介绍发起和捕获时钟的不同情况,并分别说明如何执⾏建⽴时间和保持时间检查。
图8-28为所举例⼦的⽰意图:半周期路径——情况1在此⽰例中,两个时钟具有相同的周期,但相位相反。
以下是时钟定义,其波形如图8-29所⽰。
create_clock -name CLKM -period 20 -waveform {0 10} [get_ports CLKM]create_clock -name CLKP -period 20 -waveform {10 20} [get_ports CLKP]建⽴时间检查是从发起沿(0ns)到下⼀个捕获沿(10ns)的。
半个时钟周期的裕量可⽤于保持时间检查,以验证在20ns处发起的数据是否在10ns处未被捕获沿所捕获。
以下是建⽴时间检查的路径报告:以下是保持时间检查的路径报告:半周期路径——情况2此⽰例与情况1类似,不过发起时钟和捕获时钟的相位相反。
以下是时钟定义,其波形如图8-30所⽰。
create_clock -name CLKM -period 10 -waveform {5 10} [get_ports CLKM]create_clock -name CLKP -period 10 -waveform {0 5} [get_ports CLKP]建⽴时间检查从5ns的发起时钟沿到10ns的下⼀个捕获时钟沿。
保持时间检查从5ns的发起时钟沿到0ns的捕获时钟沿。
以下是建⽴时间检查的路径报告:以下是保持时间检查的路径报告:快速时钟域到慢速时钟域在此⽰例中,捕获时钟是发起时钟的⼆分频。
以下是时钟定义:create_clock -name CLKM -period 10 -waveform {0 5} [get_ports CLKM]create_clock -name CLKP -period 20 -waveform {0 10} [get_ports CLKP]波形如图8-31所⽰。
静态时序分析(statictiminganalysis)

静态时序分析(statictiminganalysis)静态时序分析(static timing analysis,STA)会检测所有可能的路径来查找设计中是否存在时序违规(timing violation)。
但STA只会去分析合适的时序,⽽不去管逻辑操作的正确性。
其实每⼀个设计的⽬的都相同,使⽤Design Compiler和IC Compile来得到最快的速度,最⼩的⾯积和最少的耗能。
根据设计者提供的约束,这些⼯具会在⾯积,速度和耗能上做出权衡。
更深层的来看,STA⼀直都寻找⼀个问题的答案:在所有条件下,当时钟沿到达时,数据会正确地在每个同步device的输⼊端正确显⽰吗?这问题可以⽤下图来表⽰:如图中所⽰,虚线表⽰了时序路径。
两者使⽤了同⼀个时钟驱动,理想情况下FF1的数据变化之后在下个时钟沿能够准确到达FF2。
两者的时序图如下:在FF1的时钟沿到来时,会把FF1的D端的数据送⼊flip-flop。
在经过⼀个clock-to-Q的延时之后,数据会送⼊FF1的Q端。
此过程叫做时序路径的launch event。
信号经过了两个FF之间的组合逻辑之后,到达了组合逻辑的输出,也就是FF2的输⼊端(FF2.D),这个叫做arrival time。
然⽽数据并不是在时钟沿到达FF2的同时到达,⽽是要⽐时钟沿早到那么⼀点点。
早到的这个时间叫做required time,不同的device的required time不⼀样。
数据装载到FF2的时间点叫做capture event。
device的required time和数据到达的时间(arrival time)两者之差则叫做slack。
图中所⽰,数据⽐时钟早到很多,则slack为正。
如果数据刚好在required time时间点到达,则slack为0,若是数据晚到的话则是负了。
例如required time是launch event之后的1.8ns,⽽arrival time是launch event之后的1.6ns,则slack = 1.8-1.6=0.2ns。
IC芯片设计中的静态时序分析实践读书记录

《IC芯片设计中的静态时序分析实践》读书记录一、内容概览本书详细介绍了静态时序分析的基本概念、原理、方法及其在IC芯片设计中的应用。
在阅读本书的过程中,我形成了一些对该书的理解和内容概览。
该书从静态时序分析的基本原理入手,讲解了静态时序分析在IC芯片设计流程中的地位和作用。
静态时序分析是一种通过静态的方法来分析电路时序的过程,它在芯片设计的验证阶段起到至关重要的作用,确保芯片在规定的时序约束下正确运行。
书中详细阐述了静态时序分析的具体实践方法,包括建立有效的时序分析环境、设置合理的时序约束、进行静态时序分析的工具使用等。
还介绍了静态时序分析中常见的优化技巧,如降低时序违规的风险、提高分析效率等。
在深入理解了静态时序分析的基本原理和方法后,书中还探讨了现代IC芯片设计中的挑战和问题。
随着工艺技术的发展,IC芯片的设计复杂度不断提高,静态时序分析面临着更高的挑战。
书中通过实例分析,展示了如何运用静态时序分析技术来解决这些挑战。
本书还强调了团队合作在IC芯片设计中的重要性,特别是在静态时序分析过程中。
有效的团队协作和沟通能够大大提高分析效率,减少错误的发生。
书中通过实际案例,展示了团队合作在静态时序分析中的具体应用和优势。
本书总结了静态时序分析在IC芯片设计中的应用价值和实践经验。
通过学习和实践本书中的知识和方法,读者能够掌握静态时序分析的核心技能,为未来的IC芯片设计领域做出贡献。
在阅读本书的过程中,我不仅了解了静态时序分析的基本原理和方法,还深入理解了其在现代IC芯片设计中的应用和实践。
通过对书中内容的梳理和总结,我对静态时序分析有了更加全面和深入的认识,为今后的学习和工作打下了坚实的基础。
1. 书籍简介《IC芯片设计中的静态时序分析实践》是一本专注于集成电路(IC)芯片设计领域静态时序分析的权威指南。
本书旨在帮助读者理解并掌握静态时序分析的基本原理、方法与实践应用。
静态时序分析是IC芯片设计过程中的关键环节,对于确保芯片性能、优化功耗以及避免设计缺陷具有重要意义。
FPGA静态时序分析

1. 适用范围本文档理论适用于Actel FPGA并且采用Libero软件进行静态时序分析(寄存器到寄存器)。
2. 应用背景静态时序分析简称STA,它是一种穷尽的分析方法,它按照同步电路设计的要求,根据电路网表的拓扑结构,计算并检查电路中每一个DFF(触发器)的建立和保持时间以及其他基于路径的时延要求是否满足。
STA作为FPGA设计的主要验证手段之一,不需要设计者编写测试向量,由软件自动完成分析,验证时间大大缩短,测试覆盖率可达100%。
静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,给出正确是时序报告。
进行静态时序分析,主要目的就是为了提高系统工作主频以及增加系统的稳定性。
对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味着高处理能力。
通过附加约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。
3. 理论分析3.1 静态时序分析的理论基础知识在进行正确的时序分析前,我们必须具备基本的静态时序的基本知识点,不然看着编译器给出的时序分析报告犹如天书。
如图3.1所示,为libero软件给出的寄存器到寄存器模型的时序分析报告的截取,接下来我们会弄清楚每个栏目的数据变量的含义,以及计算方法。
图3.1 libero静态时序分析报告3.1.1 固定参数launch edge、latch edge、Tsu、Th、Tco概念1. launch edge时序分析起点(launch edge):第一级寄存器数据变化的时钟边沿,也是静态时序分析的起点。
2. latch edge时序分析终点(latch edge):数据锁存的时钟边沿,也是静态时序分析的终点。
3. Clock Setup Time (Tsu)建立时间(Tsu):是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 适用范围
本文档理论适用于Actel FPGA并且采用Libero软件进行静态时序分析(寄存器到寄存器)。
2. 应用背景
静态时序分析简称STA,它是一种穷尽的分析方法,它按照同步电路设计的要求,根据电路网表的拓扑结构,计算并检查电路中每一个DFF(触发器)的建立和保持时间以及其他基于路径的时延要求是否满足。
STA作为FPGA设计的主要验证手段之一,不需要设计者编写测试向量,由软件自动完成分析,验证时间大大缩短,测试覆盖率可达100%。
静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,给出正确是时序报告。
进行静态时序分析,主要目的就是为了提高系统工作主频以及增加系统的稳定性。
对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味着高处理能力。
通过附加约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。
3. 理论分析
3.1 静态时序分析的理论基础知识
在进行正确的时序分析前,我们必须具备基本的静态时序的基本知识点,不然看着编译器给出的时序分析报告犹如天书。
如图3.1所示,为libero软件给出的寄存器到寄存器模型的时序分析报告的截取,接下来我们会弄清楚每个栏目的数据变量的含义,以及计算方法。
图3.1 libero静态时序分析报告
3.1.1 固定参数launch edge、latch edge、Tsu、Th、Tco概念
1. launch edge
时序分析起点(launch edge):第一级寄存器数据变化的时钟边沿,也是静态时序分析的起点。
2. latch edge
时序分析终点(latch edge):数据锁存的时钟边沿,也是静态时序分析的终点。
3. Clock Setup Time (Tsu)
建立时间(Tsu):是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器。
如图3.2所示:
图3.2 建立时间图解
4. Clock Hold Time (Th)
保持时间(Th):是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。
保持时间示意图如图3.3所示:
图3.3 保持时间图解
5. Clock-to-Output Delay(tco)
数据输出延时(Tco):这个时间指的是当时钟有效沿变化后,数据从输入端到输出端的最小时间间隔。
3.1.2 Clock skew
时钟偏斜(clock skew):是指一个时钟源到达两个不同寄存器时钟端的时间偏移,如图3.4所示:
图3.4 时钟偏斜
时钟偏斜计算公式如下:
Tskew = Tclk2 - Tclk1(公式3-1)3.1.3 Data Arrival Time
数据到达时间(Data Arrival Time):输入数据在有效时钟沿后到达所需要的时间。
主要分为三部分:时钟到达寄存器时间(Tclk1),寄存器输出延时(Tco)和数据传输延时(Tdata),如图3.5所示
图3.5 数据到达时间
数据到达时间计算公式如下:
Data Arrival Time = Launch edge + Tclk1 +Tco + Tdata(公式3-2)3.1.4 Clock Arrival Time
时钟到达时间(Clock Arrival Time):时钟从latch边沿到达锁存寄存器时钟输入端所消耗的时间为时钟到达时间,如图3.6所示
图3.6 时钟到达时间
时钟到达时间计算公式如下:
Clock Arrival Time = Lacth edge + Tclk2(公式3-3)
3.1.5 Data Required Time(setup/hold)
数据需求时间(Data Required Time):在时钟锁存的建立时间和保持时间之间数据必须稳定,从源时钟起点达到这种稳定状态需要的时间即为数据需求时间。
如图3.7所示:
图3.7 数据需求时间
(建立)数据需求时间计算公式如下:
Data Required Time = Clock Arrival Time - Tsu(公式3-4)(保持)数据需求时间计算公式如下:
Data Required Time = Clock Arrival Time + Th(公式3-5)3.1.6 Setup slack
建立时间余量(setup slack):当数据需求时间大于数据到达时间时,就说时间有余量,Slack是表示设计是否满足时序的一个称谓。
图3.8 建立时间余量
如图3.8所示,建立时间余量的计算公式如下:
Setup slack = Data Required Time - Data Arrival Time(公式3-6)由公式可知,正的slack表示数据需求时间大于数据到达时间,满足时序(时序的余量),负的slack表示数据需求时间小于数据到达时间,不满足时序(时序的欠缺量)。
3.1.7 时钟最小周期
时钟最小周期:系统时钟能运行的最高频率。
1.当数据需求时间大于数据到达时间时,时钟具有余量;
2. 当数据需求时间小于数据到达时间时,不满足时序要求,寄存器经历亚稳态或者不能正确获得数据;
3. 当数据需求时间等于数据到达时间时,这是最小时钟运行频率,刚好满足时序。
从以上三点可以得出最小时钟周期为数据到达时间等于数据需求时间,的运算公式如下:Data Required Time = Data Arrival Time(公式3-7)由上式推出如下公式:
Tmin + Latch edge + Tclk2 - Tsu = Launch edge + Tclk1 + Tco + Tdata
最终推出最小时钟周期为:
Tmin = Tco + Tdata + Tsu - Tskew(公式3-8)4. 应用分析
4.1 设置时钟主频约束
所有的静态时序分析都是在有约束的情况下编译器才给出分析报告,所以进行时序分析的第一步就是设置约束。
Libero软件设置时钟约束的途径三种,单时钟约束,多时钟约束和在Designer里面进行约束。
4.1.1 单时钟约束
有时我们系统所有模块都采用同一个时钟,这种方式最为简单,直接在Synplify主界面上有个设置时钟约束的,如图4.1中红框所示:
图4.1 单时钟设置
设置完成后,编译,通过Synplify时钟报告看初步时钟运行频率能否达到要求,时钟报告如图4.2所示,设定100Mhz,能运行102.7Mhz,满足时序。
图4.2 时序报告
4.2 多时钟约束
当系统内部模块采用了多个时钟时,那就需要进行多时钟约束了。
首先需要打开设置界面,在Synplify中选择:File->New->Constraint File建立SDC文件,选择时钟约束如图4.3所示:
图4.3 多时钟约束
对时钟进行如下约束后保存SDC文件,约束如图4.4所示
图4.4 多时钟约束完成
4.3 Designer SmartTime时钟约束
时钟约束除了在Synplify中可以约束外,还可以在Designer SmartTime中设置时钟约束,打开Designer Constraint,选择Clock进行针对每个使用时钟的设置,如图4.5所示:
图4.5 Designer时序约束
4.4 时序报告分析
4.4.1 Synplify时序报告
当约束了时序后,需要观察时序报告,看时钟能否达到我们需要的时钟,首先观察Synplify 综合报告。
以多时钟约束为例子,从Synplify得到的时序报告如图4.6所示:
图4.6 多时钟约束时序报告
由上图可知时序都满足约束,未出现违规,可以在下面的报告中查看最差路径,如图4.7所示是clk2的最差路径。
图4.7 最差路径
4.4.2 Designer SmartTime时序分析报告
当设计经过Synplify综合给出网表文件后,还需要Designer进行布局布线,通过布局布线优化后的时序会有变化,因此,还需要分析布局布线后的时序,打开Designer->Timing Analyzer查阅整体时序分析报告如图4.8所示:
图4.8 布局布线后时序报告
由Synplify综合后的报告和Designer进行布局布线后的报告可以看出,布局布线后优化了一些时序,特别是clk2时钟,通过布局布线后优化到了184Mhz,完全满足时序。
4.4.3 详细时序报告图
通过Synplify综合后的和Designer进行布局布线都只是看到了一个大体的时序报告,当我们需要分析时序时候必须观察仔细的时序报告,在SmartTime中提供这种报告功能,以clk2分析为例,在Timing Analyzer找到如下区域。
图4.9 时序报告选择
如图4.9所示,选择寄存器到寄存器进行分析时钟主频。
图4.10 寄存器到寄存器分析
如图4.10所示,时序报告中给出了数据延时,时序余量,数据到达时间,数据需求时间,数据建立时间,以及最小周期和时钟偏斜等信息,有了上一节的时序分析基础知识,我们完全能看懂这些数据代表的意义,这样对我们时序分析就知己知彼,进一步双击其中一条路径,还会给出这条路径的硬件电路图,如图4.11所示,有了这些详细的时序报告,对设计进行调整更加清晰。
图4.11 硬件路径。