您好,欢迎访问三七文档
Verilog综合主讲人:姜小波本章架构•综合的层次–高层次综合概述•逻辑综合–逻辑综合定义–逻辑综合方法(手动、自动)–逻辑综合流程•RTL描述•转换•优化–逻辑优化–门级优化•设计约束•属性设置•工艺库•门级表示(转化为门级网表)–逻辑综合工具本章架构•逻辑综合工具•VerilogHDL综合–可综合建模原则–不可综合语句–可综合语句–部分可综合语句综合实例•设计技巧–VerilogHDL编程技巧–设计划分综合的层次针对一个给定的设计,根据设计应实现的功能与相应的约束条件,通过计算机的优化处理,获得一个满足要求的设计方案的过程,就称为综合。数字系统可以在多个层次上描述,这些层次由高到低可以分为算法层、寄存器传输层、逻辑层、电路层、版图层。通常,综合可以分为3个层次:高层次综合、逻辑综合、版图综合。主要了解从算法级行为描述寄存器传输级结构描述的综合技术。算法级寄存器传输级逻辑级电路级版图级行为特性物理特性结构特性高层次综合版图综合逻辑综合高层次综合(算法级综合)高层次综合:从算法级的行为描述转换到寄存器传输级的描述。高层次综合系统的输入:硬件描述语言的源描述。综合结果:通常包括一个数据通路和一个控制器。数据通路(datapath):由寄存器、功能单元、多路器和总线等模块构成的互连网络,用于实现数据的传输。控制器(controller):通常由硬连逻辑(hardwiredlogic)或固件(firmware)构成,用于控制数据通路中数据的传输。◆数据通路中的功能单元可以是半导体厂商提供的已经设计好的单元,也可以是下一步将要设计的假定单元。◆存储单元包括寄存器和内存单元,其中的使能输入与控制器相连,以控制其读/写操作。◆互联线网包括连线、多路器和总线,其中的选择输入与控制器相连,用于选择输入数据。◆这些模块互连并由控制器提供控制信号后,即完成了一个实现预定功能的寄存器传输级设计。高层次综合(算法级综合)流程编译与转换调度分配控制器综合反编译功能单元库算法描述中间表示格式数据流控制流数据通路硬件逻辑结构描述直接用于文档管理或其他逻辑综合工具的输入直接用于有限状态机综合与逻辑综合的输入确定每个状态发生的时刻ASM图的硬件实现给数据分配寄存器给操作分配功能单元从算法级的行为描述转换到寄存器传输级描述的过程。在寄存器传输级控制器被表示成为一个有限状态机(或微程序)高层次综合优点高层次综合技术的应用可以明显地提高设计速度,缩短设计周期,允许设计者寻求最优或满意的设计方案。高层次综合技术的引入使得集成电路的用户,特别是专用集成电路的用户(可以不是集成电路设计专家),可以直接进行数字系统从行为描述到芯片描述的设计工作。什么是逻辑综合(1)•简单来说,就是将HDL模块的行为描述转换成门级电路,并优化电路结构。什么是逻辑综合(2)具体来说,就是是在标准单元库和特定的设计约束的基础上,把设计的高层次描述转换成优化的门级网表的过程。标准单元库:与门、或门、非门等基本逻辑门;加法器、多路选择器和特殊的触发器。设计约束:时序:电路必须满足的时序要求。面积:最终电路实现的面积或资源占用量。功耗:电路功耗不得超过的上界。工作环境:管脚分布与输入输出延时、驱动强度和负载,环境温度,电压等。逻辑综合逻辑综合:RTL级的描述转换成门级网表的网表视图逻辑综合方法(手动)手动设计的限制:手动转换更容易带来人为的错误。把高层次设计转换成逻辑门占去整个设计周期的大部分时间。推测难以验证。如,设计者设计了一个20ns时钟周期工作的门级模块。如果分析该电路是否能优化到以15ns。为验证这种推测,重新设计。不同设计者设计风格缺乏一致性。最终门级设计中发现了一个错误,需要重新设计数以千计的逻辑门。库单元的时序、面积和功耗是与特定制造工艺相关的。如果改变IC制造商,可能意味着重新设计整个电路,还可能要改变设计方法。设计技术是不能重用的。设计是特定于工艺的,难以改变,也难以重用。逻辑综合方法(自动)自动逻辑综合工具解决方式:采用高层次设计方法,人为错误会更少。高层次设计无需过多关注设计约束。逻辑综合工具确保满足所有的约束。从高层次设计到逻辑门的转换非常迅速。模块重新设计仅需在寄存器传输级完成,重新综合获得门级网表。推测容易验证。高层描述不变,只把时序约束从20ns变到15ns,重新综合。逻辑综合工具在整体上优化了设计。如果发现门级设计中有错误,设计者回头修改高层次描述以消除错误。在不考虑IC制造工艺的情况下编写高层次描述。改变工艺或者IC制造商,设计者只需在新工艺的标准单元库的基础上使用逻辑综合,重新综合到逻辑门。设计重用变成了可能。逻辑综合流程设计者在高层次使用RTL描述设计。功能正确后输入到逻辑综合工具RTL描述被逻辑综合工具转换为一个未经优化的内部中间表示。不考虑面积、时序和功耗等设计约束,仅完成简单的内部资源分配。逻辑综合工具根据内部的数据结构在内部表示设计。删除冗余逻辑,大量使用与工艺无关的布尔逻辑优化技术,产生该设计优化后的内部表示。设计被映射到需要的目标工艺,满足约束要求生成由目标工艺部件所描述的优化后的门级网表。如果该网表满足要求的约束,就制作最终版图。否则,修改RTL描述或约束RTL描述:亦称数据流描述,是一种明确规定寄存器描述的方法。即,是指以规定设计中采用的各种寄存器形式为特征,然后在寄存器之间插入组合逻辑。逻辑综合流程(1)——RTL描述逻辑综合流程(1)——RTL描述RTL描述从RTL描述转换到布尔等式描述通常并不是由用户控制的,所产生的中介形式一般为特定优化工具的格式,甚至是不可能由用户可视的。按照这种中介描述,ALLIF、CASE、LOOP语句、条件信号赋值和选择信号赋值语句转换到它们的布尔表达式,或者由装配组成触发器和锁存器,或者由推论去生成触发器和锁存器。按照其中介的描述这两种情况都能产生同样的触发器和锁存器。逻辑综合流程(2)——转换逻辑综合流程(3)——优化•优化将会在三个层次上进行:•结构层次上的优化包含:–具体实现上的选择–数据通路优化–共享公共的子表达式–资源共享–重新组织运算符逻辑综合流程(3)——优化逻辑综合流程(3)——逻辑优化逻辑层次的优化方法包含:–展平设计(flattening)–提取公因式(structuring)转换非优化布尔描述到一种pla格式的过程称为展平设计,即它将所有的逻辑关系都转换成简单的AND和OR的表达式。目的:使非优化的布尔描述格式转换成能执行优化算法的布尔描述格式。例:a=bandc;b=xor(yandz);c=qorw;展平过程中将消掉这些中间节点:a=(xandq)or(qandyandz)or(wandx)or(wandyandz);这种设计通常非常快。展平设计:逻辑综合流程(3)——逻辑优化提取公因数:提取公因数是把附加的中间项加到结构描述中的一种过程。展平设计通常会使设计变得非常之大,而且要产生大扇出,展平过程可能比提取公因数的设计在速度上要慢得多。•例:x=aandboraandd;y=zorbord;提取公因数之后:x=aandq;y=zorq;z=bord;•提取公因数通常将产生一个“更好些”的设计,但也可能是一个相互非常依赖的设计,附加的结构将在输入与输出之间增加逻辑级数,增加逻辑级又会增加延时,导致设计较慢。逻辑综合流程(3)——逻辑优化•门级优化:组合逻辑和时序逻辑的映射优化。•组合逻辑的映射例子:逻辑综合流程(4)——门级优化逻辑综合流程(4)——门级优化•时序逻辑的映射例子:逻辑综合流程(5)——设计约束延时面积设计约束设计约束通常包含下列内容:1.时序。电路必须满足一定的时序要求。一个内部的静态时序分析器会检查时序。2.面积。最终的版图面积不能超过一定的限制。3.功耗。电路功耗不能超过一定的界限。一般来说,面积和时序约束之间有一个相反的关系。逻辑综合流程(5)——时序约束条件•建立时间–建立时间(Tsu:setuptime)是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器;–保持时间(Th:holdtime)是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。建立与保持时间的简单示意图如下图所示。逻辑综合流程(5)——时序约束条件•实际测试中我发现时钟信号也是存在抖动和偏移的。虽然系统时序设计中对时钟信号的要求非常严格,因为我们所有的时序计算都是以恒定的时钟信号为基准。但实际中时钟信号往往不可能那么理想,常会出现抖动(Jitter)和偏移(Skew)问题。逻辑综合流程(5)——时序约束条件•所谓抖动(jitter),是指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。除此之外,还有一种由于周期内信号的占空比发生变化而引起的抖动,称之为半周期抖动。总的来说,jitter可以认为在时钟信号本身在传输过程中的一些偶然和不定的变化之总和;逻辑综合流程(5)——时序约束条件•时钟偏移(skew)是指同样的时钟产生的多个子时钟信号之间的延时差异。包含时钟缓冲器的多个输出之间的偏移;也包含由于PCB走线的误差而造成的接收端和驱动端时钟信号之间的偏移。在时序设计中都需要考虑这些因素。对于一个数字系统而言,芯片的面积和芯片的速度是综合时要考虑的最主要两方面约束。&&&&ABCDE如下图:假设一个2个管脚的门电路需要4个晶体管,则上图需要16个门电路,最大延时是4个单位的门延时。逻辑综合流程(5)——其他约束条件&&&=1ABCDEC下图是相同功能的等效电路:假设3个管脚的门电路需要6个晶体管,则上图需要18个门电路,最大延时是3个单位的门延时。设计者可通过约束条件对设计进行优化。如对上例中在保持面积不变时(即使用的门数相同),对速度进行约束。逻辑综合流程(5)——其他约束条件用于综合的约束可以用用户定义属性来表示。用户定义只是用于给综合工具传递约束信息,仿真时被忽略。1、约束的表示逻辑综合流程(5)——其他约束条件2、资源的约束例:ifselect=‘1’thenq=a+b;elseq=c+d;endif;点评:上面的例子可以用2个加法器和1个二路选择器实现也可以用1个加法器和2个二路选择器完成。逻辑综合流程(5)——其他约束条件2、资源的约束用2个加法器和1个二路选择器实现用1个加法器和2个二路选择器完成逻辑综合流程(5)——其他约束条件属性:用于规定设计所进行的环境,如用属性规定对输出器件必须驱动的负载、驱动设计时器件的驱动能力和输入信号的时序等。逻辑综合流程(5)——属性负载属性规定在一特定的输出信号上现有的负载能力是多少,按工艺库的单位并以pf计算(或以标准负载计算等等)和规定负载值。例如定时分析器将对弱驱动和强的电容负载计算出一个长延时值,对强驱动和小负载算出一个短的延时值。下面是SynopsysDesignCompilerformat中负载规范的例子:Set_load5xbus该属性规定xbus信号将加载带5个库单元负载的信号。逻辑综合流程(5)——属性驱动属性规定驱动器的电阻,即它控制驱动器的源有多少电流。这个属性也按工艺库的单位来指定,较大型驱定器将对应较快速的特定通道,但较大型驱动器花费的面积也更多些,因此设计者为了得到一种最好的实现方式,需要在速度和面积量方面进行折中优化。按SynopsysDesignCompiler驱动规格的示例如下:Set_drive2.7vbus该属性规定信号ybus有2.7个库单位的驱动能力。逻辑综合流程(5)——属性到达时间是综合期间某些综合工具(如DC)用静态时间分析器检查时,正在建立的逻辑是否满足用户规定的时间限制条件。在节点上有特定信号发生时,在特定的节点上设置到达时间并指定静态定时分析,分析时延后抵达的信号最关键。后到信号激励是在较迟的时间输入到当前模块的,而当前模块的结果仍必
本文标题:L8逻辑综合
链接地址:https://www.777doc.com/doc-5131642 .html