您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 第六章EDA-Verilog的逻辑综合
Verilog的逻辑综合学习目标1.对逻辑综合的概念进行定义,解释逻辑综合的优点。2.弄清楚哪些VerilogHDL结构和操作符能用于逻辑综合,理解逻辑综合工具如何解释这些结构。3.解释使用逻辑综合进行设计的典型流程,描述基于逻辑综合设计流程的主要组成部分。4.描述如何验证由逻辑综合生成的门级网表。5.了解编写高效率RTL描述的各种技巧。6.描述能为逻辑综合提供最佳门级网表的分割技术。7.使用逻辑综合的方法进行组合电路和时序电路的设计。什么是逻辑综合逻辑综合是在标准单元库和特定的设计约束的基础上,把设计的高层次描述转换成优化的门级网表的过程。标准单元库:与门、或门、非门等基本逻辑门;加法器、多路选择器和特殊的触发器。设计约束:时序、面积、可测试性和功耗等方面。将设计者的大脑用作逻辑综合工具什么是逻辑综合计算机辅助逻辑综合工具的出现把高层次描述向逻辑门的转化过程自动化了。该综合工具在内部进行几次反复,生成最优化的门级描述。基本的计算机辅助逻辑综合过程逻辑综合对数字设计行业的影响手动设计的限制:手动转换更容易带来人为的错误。把高层次设计转换成逻辑门占去整个设计周期的大部分时间。推测难以验证。如,设计者设计了一个20ns时钟周期工作的门级模块。如果分析该电路是否能优化到以15ns。为验证这种推测,重新设计。不同设计者设计风格缺乏一致性。最终门级设计中发现了一个错误,需要重新设计数以千计的逻辑门。库单元的时序、面积和功耗是与特定制造工艺相关的。如果改变IC制造商,可能意味着重新设计整个电路,还可能要改变设计方法。设计技术是不能重用的。设计是特定于工艺的,难以改变,也难以重用。自动逻辑综合工具解决方式:采用高层次设计方法,人为错误会更少。高层次设计无需过多关注设计约束。逻辑综合工具确保满足所有的约束。从高层次设计到逻辑门的转换非常迅速。模块重新设计仅需在寄存器传输级完成,重新综合获得门级网表。推测容易验证。高层描述不变,只把时序约束从20ns变到15ns,重新综合。逻辑综合工具在整体上优化了设计。如果发现门级设计中有错误,设计者回头修改高层次描述以消除错误。在不考虑IC制造工艺的情况下编写高层次描述。改变工艺或者IC制造商,设计者只需在新工艺的标准单元库的基础上使用逻辑综合,重新综合到逻辑门。设计重用变成了可能。逻辑综合对数字设计行业的影响VerilogHDL综合RTL级风格寄存器传输级层次用硬件描述语言(HDL)编写设计该风格的HDL描述采用了数据流和行为结构相结合的方式。基于RTL的综合逻辑综合工具接受寄存器传输级HDL描述并把它转化为优化的门级网表。用于把行为描述转换成RTL描述的行为综合工具发展缓慢可综合的verilog结构如下所示,使用时有一定的限制。①Verilog结构VerilogHDL综合①强制具有周期到周期的行为,避免组合反馈②逻辑综合忽略所有由#delay指定的延迟③用复位机制取代initial结构,进行电路信号初始化中国科学技术大学软件学院SchoolofSoftwareEngineeringofUSTCVerilogHDL综合Verilog中几乎所有的操作符都可用于逻辑综合。只有===和!==这种与x和z相关的操作符不能用于逻辑综合。编写表达式时,推荐使用圆括号来使逻辑更清晰,达到预期的目的。如果依赖操作符的优先级,逻辑综合工具有可能产生不尽人意的逻辑结构。②Verilog操作符VerilogHDL综合部分Verilog结构的解释①赋值语句赋值结构是在RTL级用于描述组合逻辑的最基本的结构。转换成的门级电路实现:如果a,b,c和out是两位的向量[1:0],上面的赋值语句会被转换成两个完全相同的电路,分别对应其中一位。②用到算术操作符例如设计一个一位全加器,假设逻辑综合工具内部有一位全加器可用,逻辑综合工具直接调用内部全加器模块,如果综合多位加法器,会进行优化,可能得到一个不同的结果。使用条件操作符(多路选择器)综合后:部分Verilog结构的解释③if-else语句单个if-else语句被转换成多路选择器,控制信号是if子句中的信号或者变量。多个if-else-if语句不会综合成庞大的多路选择器。④case语句case语句用于生成多路选择器。庞大的case语句可以用来生成庞大的多路选择器。⑤for循环语句for循环可用于产生级联的链式组合逻辑。⑥always语句always语句可用于生成时序和组合逻辑。对于时序逻辑来说,always语句必须由时钟信号clk的变化所控制。部分Verilog结构的解释例:对于组合逻辑来说,always语句必须由clk,reset或者preset之外的其他信号触发(所有的触发信号都必须写在敏感列表中)。部分Verilog结构的解释⑦函数语句函数综合成具有一个输出变量的组合模块。输出变量可以是标量或者向量。中国科学技术大学软件学院SchoolofSoftwareEngineeringofUSTC部分Verilog结构的解释逻辑综合流程设计者在高层次使用RTL描述设计。功能正确后输入到逻辑综合工具RTL描述被逻辑综合工具转换为一个未经优化的内部中间表示。不考虑面积、时序和功耗等设计约束,仅完成简单的内部资源分配。逻辑综合工具根据内部的数据结构在内部表示设计。删除冗余逻辑,大量使用与工艺无关的布尔逻辑优化技术,产生该设计优化后的内部表示。设计被映射到需要的目标工艺,满足约束要求生成由目标工艺部件所描述的优化后的门级网表。如果该网表满足要求的约束,就制作最终版图。否则,修改RTL描述或约束工艺库单元的集合称为工艺库。单元描述信息:功能、版图面积、时序信息、功耗设计约束设计约束通常包含下列内容:1.时序。电路必须满足一定的时序要求。一个内部的静态时序分析器会检查时序。2.面积。最终的版图面积不能超过一定的限制。3.功耗。电路功耗不能超过一定的界限。一般来说,面积和时序约束之间有一个相反的关系。逻辑综合流程设计说明设计一个具有如下说明的四位数值比较器IC芯片:设计名称是magnitude_comparator。输入A和B是4位输入,输入端A和B不会出现x或者z值。如果A大于B,那么输出A_gt_B为真。如果A小于B,那么输出A_lt_B为真。如果A等于B,那么输出A_eq_B为真。数值比较器电路必须尽可能快,为提高速度,可以牺牲面积。逻辑综合流程RTL描述工艺库每个单元的功能、时序、面积和功耗都在工艺库中说明逻辑综合流程设计约束只有一个设计约束:优化最终电路,获得最快时序逻辑综合逻辑综合工具读取数值比较器的RTL描述。把针对目标工艺abc_100的设计约束和工艺库提供给逻辑综合工具。逻辑综合工具进行必要的优化,并产生针对abc_100工艺优化后的门级描述。最终优化后的门级描述逻辑综合工具产生最终的门级描述。门级电路的逻辑图逻辑综合工具为该电路生成的门级Verilog描述。IC制造逻辑综合流程门级网表的验证①功能验证:最初编写的RTL模块和其综合后的门级模块用同一个测试激励模块进行测试。比较它们的输出结果,找出其中的不一致。对于门级描述,必须有一个由工艺厂商提供的仿真库支持。②时序验证:通常使用时序仿真或者静态时序验证工具来检查门级网表的时序。如果违反任何时序约束,设计者必须重新设计RTL模块或者改变设计约束。循环反复,直到满足时序要求为止。逻辑综合建模技巧:Verilog编码风格使用有意义的信号和变量名称信号和变量的命名应具有意义,使代码自身有清晰的注释信息。避免混合使用上升沿和下降沿触发的触发器混合使用上升沿和下降沿触发的触发器可能在时钟树中引入反向器和缓冲器。这将在电路中引入时钟偏斜。使用基本构造模块与使用连续赋值语句的对比连续assign语句非常简洁的表示功能,通常能生成性能很好的随机逻辑电路。但最终的逻辑结构不一定对称。调用基本构造模块可以产生对称的设计,且逻辑综合工具能更高效地优化小模块。但不太简洁,制约了针对变化工艺的重定向,并且通常会降低仿真器性能。调用多路选择器与使用if-else或者case语句的对比结构化的实现,最好直接使用多路选择器,更容易控制,综合速度更快,但依赖于工艺,且表达代码比较长。if-else和case常用于建立不依赖工艺的RTL描述。使用圆括号优化逻辑结构设计者可以使用圆括号将逻辑组合起来,以便于控制最终的结构,也提高了Verilog描述的可读性。逻辑综合建模技巧:Verilog编码风格使用算术操作符*,/和%与使用现有构造模块的对比乘、除、取模操作在逻辑和面积上实现代价高,但不依赖于工艺;设计自定义模块完成乘、除和取模操作,可能要花费大量的时间,并且RTL描述会变得与工艺相关。注意多条赋值语句对同一个变量赋值的情况多条赋值语句对同一个变量赋值可能导致生成意料之外的电路。前面的赋值可能被忽略,只最后一次赋值起作用。显式地定义if-else或者case语句在if-else或者case语句中必须说明各种可能的条件分支,否则可能产生电平敏感的锁存器,而不是多路选择器。逻辑综合建模技巧:Verilog编码风格设计划分①水平划分使用位划分方式为逻辑综合工具提供更小的模块进行优化,这种方式称为水平划分。降低了问题的复杂度,为每个模块产生了更为优化的结果。②垂直划分(编写的大模块包含多种功能)把模块按功能划分成更小的子模块。设计划分③并行化设计结构用更多的资源来生成运行速度更快的设计。将顺序操作转换成并行操作,以提高运行速度。超前进位加法器比较脉动进位加法器设计划分小结逻辑综合:把设计的高层次描述转换成优化的、使用工艺库中单元描述的门级描述。并非所有的Verilog结构都能被逻辑综合工具接受。逻辑综合工具接受RTL描述、设计约束和工艺库,产生优化的门级网表。翻译、逻辑优化和工艺映射是逻辑综合工具内部的过程,它们对用户通常是不可见的。通过把相同的激励应用到RTL描述和门级网表并比较输出结果,验证优化后的门级网表的功能。必须使用适当的Verilog编码技术编写高效的RTL模块。必须评估设计的各种选择方案。设计划分是用于将设计分割成更小模块的重要技术。更小的模块减少了综合工具优化的复杂度。精确的设计约束指定是逻辑综合的重要组成部分。小结返回返回编程语言接口(PLI)本章学习目标解释在Verilog仿真中如何使用PLI子程序。定义用户自定义系统任务和函数以及用户自定义C子程序。理解用户自定义系统任务的连接和调用。从概念上解释在Verilog仿真器内部如何表示PLI。区别并描述怎样使用两类PLI库子程序:access子程序和utility子程序。学习如何创建用户自定义系统任务和函数,并学习如何在仿真中使用它们。概述在设计时,经常会遇到一些特殊情况,需要通过定义自己的系统任务和函数才能实现设计目标。编程语言接口提供了一组接口子程序,用于访问内部的数据表示,并可以提取仿真环境信息。用户自定义的系统任务和函数可以通过这组预定义的PLI接口子程序来创建。VerilogPLI的发展经历了三代。1.任务/函数(tf_)子程序(又称实用子程序)。主要用于:用户自定义的任务和函数、实用函数、回调机制和把数据写到输出设备。2.存取(acc_)子程序。可直接在VerilogHDL内部数据结构中进行面向对象的数据存取。这些子程序能用于访问和修改VerilogHDL描述的多种对象。3.Verilog过程接口(vpi_)子程序。这些子程序是acc_和tf_子程序功能扩展的集合。概述难以用标准的Verilog结构实现系统任务和函数:监控任务、激励任务、调试任务和复杂操作等。提取设计信息,比如层次、互连、扇出等。编写专用或自定义的输出显示子程序。为仿真提供激励的子程序也可以用PLI编写。普通的基于Verilog的应用软件,可以与任何Verilog仿真器一起工作,因为PLI接口提供了统一的存取方式。概述使用PLI子程序的规范仿真流程用户自定义系统任务连接到一个用户自定义C子程
本文标题:第六章EDA-Verilog的逻辑综合
链接地址:https://www.777doc.com/doc-5241240 .html