




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Verilog的逻辑综合学习目标对逻辑综合的概念进行定义,解释逻辑综合的优点。弄清楚哪些VerilogHDL结构和操作符能用于逻辑综合,理解逻辑综合工具如何解释这些结构。解释使用逻辑综合进行设计的典型流程,描述基于逻辑综合设计流程的主要组成部分。描述如何验证由逻辑综合生成的门级网表。了解编写高效率RTL描述的各种技巧。描述能为逻辑综合提供最佳门级网表的分割技术。使用逻辑综合的方法进行组合电路和时序电路的设计。EDA技术什么是逻辑综合逻辑综合是在标准单元库和特定的设计约束的基础上,把设计的高层次描述转换成优化的门级网表的过程。标准单元库:与门、或门、非门等基本逻辑门;加法器、多路选择器和特殊的触发器。设计约束:时序、面积、可测试性和功耗等方面。将设计者的大脑用作逻辑综合工具EDA技术什么是逻辑综合计算机辅助逻辑综合工具的出现把高层次描述向逻辑门的转化过程自动化了。该综合工具在内部进行几次反复,生成最优化的门级描述。基本的计算机辅助逻辑综合过程EDA技术逻辑综合对数字设计行业的影响手动设计的限制:手动转换更容易带来人为的错误。把高层次设计转换成逻辑门占去整个设计周期的大部分时间。推测难以验证。如,设计者设计了一个20ns时钟周期工作的门级模块。如果分析该电路是否能优化到以15ns。为验证这种推测,重新设计。不同设计者设计风格缺乏一致性。最终门级设计中发现了一个错误,需要重新设计数以千计的逻辑门。库单元的时序、面积和功耗是与特定制造工艺相关的。如果改变IC制造商,可能意味着重新设计整个电路,还可能要改变设计方法。设计技术是不能重用的。设计是特定于工艺的,难以改变,也难以重用。
EDA技术自动逻辑综合工具解决方式:采用高层次设计方法,人为错误会更少。高层次设计无需过多关注设计约束。逻辑综合工具确保满足所有的约束。从高层次设计到逻辑门的转换非常迅速。模块重新设计仅需在寄存器传输级完成,重新综合获得门级网表。推测容易验证。高层描述不变,只把时序约束从20ns变到15ns,重新综合。逻辑综合工具在整体上优化了设计。如果发现门级设计中有错误,设计者回头修改高层次描述以消除错误。在不考虑IC制造工艺的情况下编写高层次描述。改变工艺或者IC制造商,设计者只需在新工艺的标准单元库的基础上使用逻辑综合,重新综合到逻辑门。设计重用变成了可能。逻辑综合对数字设计行业的影响EDA技术VerilogHDL综合RTL级风格寄存器传输级层次用硬件描述语言(HDL)编写设计该风格的HDL描述采用了数据流和行为结构相结合的方式。基于RTL的综合逻辑综合工具接受寄存器传输级HDL描述并把它转化为优化的门级网表。用于把行为描述转换成RTL描述的行为综合工具发展缓慢EDA技术可综合的verilog结构如下所示,使用时有一定的限制。
Verilog结构
VerilogHDL综合EDA技术①强制具有周期到周期的行为,避免组合反馈②逻辑综合忽略所有由#<delay>指定的延迟③用复位机制取代initial结构,进行电路信号初始化中国科学技术大学软件学院SchoolofSoftwareEngineeringofUSTCVerilogHDL综合EDA技术Verilog中几乎所有的操作符都可用于逻辑综合。只有===和!==这种与x和z相关的操作符不能用于逻辑综合。编写表达式时,推荐使用圆括号来使逻辑更清晰,达到预期的目的。如果依赖操作符的优先级,逻辑综合工具有可能产生不尽人意的逻辑结构。
Verilog操作符
VerilogHDL综合EDA技术部分Verilog结构的解释
赋值语句赋值结构是在RTL级用于描述组合逻辑的最基本的结构。转换成的门级电路实现:如果a,b,c和out是两位的向量[1:0],上面的赋值语句会被转换成两个完全相同的电路,分别对应其中一位。EDA技术
用到算术操作符例如设计一个一位全加器,假设逻辑综合工具内部有一位全加器可用,逻辑综合工具直接调用内部全加器模块,如果综合多位加法器,会进行优化,可能得到一个不同的结果。使用条件操作符(多路选择器)综合后:部分Verilog结构的解释EDA技术
if-else语句
单个if-else语句被转换成多路选择器,控制信号是if子句中的信号或者变量。多个if-else-if语句不会综合成庞大的多路选择器。
case语句
case语句用于生成多路选择器。庞大的case语句可以用来生成庞大的多路选择器。
for循环语句
for循环可用于产生级联的链式组合逻辑。
always语句
always语句可用于生成时序和组合逻辑。对于时序逻辑来说,always语句必须由时钟信号clk的变化所控制。部分Verilog结构的解释EDA技术
例:
对于组合逻辑来说,always语句必须由clk,reset或者preset之外的其他信号触发(所有的触发信号都必须写在敏感列表中)。部分Verilog结构的解释EDA技术
函数语句
函数综合成具有一个输出变量的组合模块。输出变量可以是标量或者向量。
中国科学技术大学软件学院SchoolofSoftwareEngineeringofUSTC部分Verilog结构的解释EDA技术逻辑综合流程设计者在高层次使用RTL描述设计。功能正确后输入到逻辑综合工具RTL描述被逻辑综合工具转换为一个未经优化的内部中间表示。不考虑面积、时序和功耗等设计约束,仅完成简单的内部资源分配。逻辑综合工具根据内部的数据结构在内部表示设计。删除冗余逻辑,大量使用与工艺无关的布尔逻辑优化技术,产生该设计优化后的内部表示。设计被映射到需要的目标工艺,满足约束要求生成由目标工艺部件所描述的优化后的门级网表。如果该网表满足要求的约束,就制作最终版图。否则,修改RTL描述或约束EDA技术工艺库
单元的集合称为工艺库。单元描述信息:功能、版图面积、时序信息、功耗设计约束
设计约束通常包含下列内容:
1.
时序。电路必须满足一定的时序要求。一个内部的静态时序分析器会检查时序。
2.
面积。最终的版图面积不能超过一定的限制。
3.功耗。电路功耗不能超过一定的界限。
一般来说,面积和时序约束之间有一个相反的关系。
逻辑综合流程EDA技术设计说明设计一个具有如下说明的四位数值比较器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为真。数值比较器电路必须尽可能快,为提高速度,可以牺牲面积。
逻辑综合流程EDA技术RTL描述工艺库每个单元的功能、时序、面积和功耗都在工艺库中说明逻辑综合流程EDA技术设计约束
只有一个设计约束:优化最终电路,获得最快时序逻辑综合逻辑综合工具读取数值比较器的RTL描述。把针对目标工艺abc_100的设计约束和工艺库提供给逻辑综合工具。逻辑综合工具进行必要的优化,并产生针对abc_100工艺优化后的门级描述。最终优化后的门级描述
逻辑综合工具产生最终的门级描述。门级电路的逻辑图
逻辑综合工具为该电路生成的门级Verilog描述。IC制造
逻辑综合流程EDA技术门级网表的验证
功能验证:
最初编写的RTL模块和其综合后的门级模块用同一个测试激励模块进行测试。比较它们的输出结果,找出其中的不一致。对于门级描述,必须有一个由工艺厂商提供的仿真库支持。
时序验证:
通常使用时序仿真或者静态时序验证工具来检查门级网表的时序。如果违反任何时序约束,设计者必须重新设计RTL模块或者改变设计约束。循环反复,直到满足时序要求为止。EDA技术逻辑综合建模技巧:Verilog编码风格使用有意义的信号和变量名称
信号和变量的命名应具有意义,使代码自身有清晰的注释信息。避免混合使用上升沿和下降沿触发的触发器
混合使用上升沿和下降沿触发的触发器可能在时钟树中引入反向器和缓冲器。这将在电路中引入时钟偏斜。使用基本构造模块与使用连续赋值语句的对比
连续assign语句非常简洁的表示功能,通常能生成性能很好的随机逻辑电路。但最终的逻辑结构不一定对称。
调用基本构造模块可以产生对称的设计,且逻辑综合工具能更高效地优化小模块。但不太简洁,制约了针对变化工艺的重定向,并且通常会降低仿真器性能。EDA技术调用多路选择器与使用if-else或者case语句的对比
结构化的实现,最好直接使用多路选择器,更容易控制,综合速度更快,但依赖于工艺,且表达代码比较长。
if-else和case常用于建立不依赖工艺的RTL描述。使用圆括号优化逻辑结构
设计者可以使用圆括号将逻辑组合起来,以便于控制最终的结构,也提高了Verilog描述的可读性。逻辑综合建模技巧:Verilog编码风格EDA技术使用算术操作符*,/和%与使用现有构造模块的对比
乘、除、取模操作在逻辑和面积上实现代价高,但不依赖于工艺;设计自定义模块完成乘、除和取模操作,可能要花费大量的时间,并且RTL描述会变得与工艺相关。注意多条赋值语句对同一个变量赋值的情况
多条赋值语句对同一个变量赋值可能导致生成意料之外的电路。前面的赋值可能被忽略,只最后一次赋值起作用。
显式地定义if-else或者case语句
在if-else或者case语句中必须说明各种可能的条件分支,否则可能产生电平敏感的锁存器,而不是多路选择器。逻辑综合建模技巧:Verilog编码风格EDA技术设计划分水平划分
使用位划分方式为逻辑综合工具提供更小的模块进行优化,这种方式称为水平划分。
降低了问题的复杂度,为每个模块产生了更为优化的结果。EDA技术垂直划分(编写的大模块包含多种功能)
把模块按功能划分成更小的子模块。
设计划分EDA技术并行化设计结构
用更多的资源来生成运行速度更快的设计。
将顺序操作转换成并行操作,以提高运行速度。
超前进位加法器比较
脉动进位加法器
设计划分EDA技术小结逻辑综合:把设计的高层次描述转换成优化的、使用工艺库中单元描述的门级描述。并非所有的Verilog结构都能被逻辑综合工具接受。逻辑综合工具接受RTL描述、设计约束和工艺库,产生优化的门级网表。翻译、逻辑优化和工艺映射是逻辑综合工具内部的过程,它们对用户通常是不可见的。EDA技术通过把相同的激励应用到RTL描述和门级网表并比较输出结果,验证优化后的门级网表的功能。必须使用适当的Verilog编码技术编写高效的RTL模块。必须评估设计的各种选择方案。设计划分是用于将设计分割成更小模块的重要技术。更小的模块减少了综合工具优化的复杂度。精确的设计约束指定是逻辑综合的重要组成部分。小结EDA技术返回EDA技术返回EDA技术编程语言接口(PLI)EDA技术本章学习目标解释在Verilog仿真中如何使用PLI子程序。定义用户自定义系统任务和函数以及用户自定义C子程序。理解用户自定义系统任务的连接和调用。从概念上解释在Verilog仿真器内部如何表示PLI。区别并描述怎样使用两类PLI库子程序:access子程序和utility子程序。学习如何创建用户自定义系统任务和函数,并学习如何在仿真中使用它们。EDA技术概述在设计时,经常会遇到一些特殊情况,需要通过定义自己的系统任务和函数才能实现设计目标。编程语言接口提供了一组接口子程序,用于访问内部的数据表示,并可以提取仿真环境信息。用户自定义的系统任务和函数可以通过这组预定义的PLI接口子程序来创建。EDA技术VerilogPLI的发展经历了三代。1.任务/函数(tf_)子程序(又称实用子程序)。主要用于:用户自定义的任务和函数、实用函数、回调机制和把数据写到输出设备。2.存取(acc_)子程序。可直接在VerilogHDL内部数据结构中进行面向对象的数据存取。这些子程序能用于访问和修改VerilogHDL描述的多种对象。3.Verilog过程接口(vpi_)子程序。这些子程序是acc_和tf_子程序功能扩展的集合。概述EDA技术
难以用标准的Verilog结构实现系统任务和函数:监控任务、激励任务、调试任务和复杂操作等。
提取设计信息,比如层次、互连、扇出等。
编写专用或自定义的输出显示子程序。
为仿真提供激励的子程序也可以用PLI编写。
普通的基于Verilog的应用软件,可以与任何Verilog仿真器一起工作,因为PLI接口提供了统一的存取方式。概述EDA技术使用PLI子程序的规范仿真流程用户自定义系统任务连接到一个用户自定义C子程序以PLI接口子程序标准库的方式实现PLI接口允许用户:读取/修改内部数据结构、存取仿真环境EDA技术PLI任务的连接和调用功能:当系统任务$hello_verilog被调用时,输出一条消息“HelloVerilogWorld”。首先,实现该任务的C子程序必须用PLI库子程序定义。hello_verilog.c中的子程序hello_verilog如下:io_printf是PLI库子程序,其功能类似于printf。hello_verilog是用户自定义C子程序$hello_verilog是用户自定义系统任务EDA技术仿真器要连接到C子程序hello_verilog,
意识到存在一个名为$hello_verilog的新系统任务。生成一个包含$hello_verilog新系统任务的特殊的二进制可执行文件,设文件名为hverilog,这已不是惯用的运行仿真器的二进制可执行文件。仿真时,不要运行惯用的仿真器可执行文件(如Verilog-XL),只需要运行hverilog就可以。用户自定义任务被连接到Verilog仿真器中,可以像任何其他Verilog系统任务,通过关键字$hello_verilog来调用。①
PLI任务的连接PLI任务的连接和调用EDA技术hello.v中定义了一个名为hello_top的Verilog模块,该模块调用了用户自定义任务$hello_verilog:输出结果:
②
PLI任务的调用PLI任务的连接和调用EDA技术PLI任务的连接和调用③
添加和调用PLI任务的典型流程EDA技术PLI内部数据表示每个模块被看做一组对象类型,对象类型是Verilog中定义的元素,如:
模块实例、模块端口、模块的端到端路径以及模块之间的路径顶层模块原语实例和原语端口(terminal)线网类型(net)、寄存器类型(register)、参数类型(parameter和specparam)整型、时间型和实型变量时序检查名事件每种对象类型都有一个相应集合,包含模块中所有该类型的对象,所有对象类型的集合互连在一起。EDA技术PLI内部数据表示双向EDA技术PLI内部数据表示包括原语实例、原语实例端口(terminal)、模块端口和网络。其他对象类型在本模块中没有出现
EDA技术EDA技术PLI库子程序PLI库子程序提供了对表示设计的内部数据结构进行存取的标准接口,用户自定义C子程序是用PLI库子程序编写的。
PLI库子程序有两大类:
存取子程序----提供了对内部数据结构访问的接口,它允许用户的C子程序遍历数据结构并提取与设计有关的信息。
实用子程序----主要用于在Verilog和编程语言的边界之间传送数据并做一些日常管理维护工作。EDA技术PLI库子程序详细参见《VerilogHDL数字设计与综合》(第二版)的附录BEDA技术PLI库子程序存取子程序通常也称为acc子程序。可以完成下列工作:1.从内部数据结构的有关项读取特定对象的信息2.把特定对象的信息写入内部数据结构的有关项可以读取设计中的对象的类型:1.模块实例、模块端口、模块的端到端路径以及模块之间的路径2.顶层模块3.原语实例和原语端口4.网络类型(net)、寄存器类型(register)、参数类型(parameter和specparam)、整型、时间型和实型变量5.时序检查6.命名事件①存取子程序EDA技术PLI库子程序存取子程序的特征
ⅰ存取子程序总是以前缀acc_开头。
ⅱ使用存取子程序的用户自定义C子程序必须调用子程序acc_initialize(),以初始化环境。退出时,用户自定义子程序必须调用acc_close()。
ⅲ
如果一个文件中用到存取子程序,那么必须包含头文件acc_user.h。所有存取子程序的数据类型和常量都预定义在文件acc_user.h中。ⅳ存取子程序使用句柄的概念来访问对象。对象句柄标识符由关键字handle声明。EDA技术PLI库子程序存取子程序的分类ⅰ句柄子程序。返回句柄给设计中对象,名字以前缀acc_handle_开头。ⅱ后继子程序。返回句柄给设计中特定类型对象集合中的下一个对象。以前缀acc_next_开头,以引用的对象作为参数。ⅲ值变链接(VCL)子程序。从监视对象值变化的对象列表中添加和删除对象。以前缀acc_vcl_开头,没有返回值。ⅳ取值(fetch)子程序。提取各种对象信息,比如完整的层次路径名、相对名以及其他属性信息。以前缀acc_fetch_开头。ⅴ实用存取子程序。执行与存取子程序相关的杂项操作。如,acc_initialize()和acc_close()都是实用子程序。ⅵ修改子程序。修改内部数据结构。可参考IEEEStandardVerilogHardwareDescriptionLanguage文档。EDA技术PLI库子程序存取子程序例1:获取模块端口列表功能描述:写一个用户自定义系统任务$get_ports寻找模块中的所有input,output和inout端口的完整层次名称;计算input,output和inout端口的数目。
这个用户自定义系统任务在Verilog中以$get_ports(“<hierarchical_module_name>”)的形式调用。文件get_ports.c的用户自定义C子程序get_ports:EDA技术EDA技术PLI库子程序顶层模块:仿真输出:EDA技术PLI库子程序②实用子程序实用子程序的特征
1.实用子程序总是以前缀tf_开头。2.文件使用实用子程序,必须包含头文件veriuser.h。实用子程序的类型
1.获取Verilog系统调用任务的信息2.获取参数列表信息3.获取参数值4.把参数新值回传给调用它的系统任务5.监视参数值的改变6.获取仿真时间和被调度事件的信息7.执行日常管理维护任务,例如保存工作区,保存任务指针8.执行long类型的算术运算9.显示信息10.挂起、终止、保存和恢复仿真EDA技术PLI库子程序实用子程序举例
功能描述:定义自己的系统任务$my_stop_finish,根据不同的参数值,分别完成挂起和终止两项任务,如下表所示。EDA技术PLI库子程序程序源码:见书《VerilogHDL数字设计与综合(第二版)》P197---P198顶层模块:仿真输出:EDA技术实例(计数器)EDA技术EDA技术EDA技术modelsim仿真器调用PLI,需要创建函数列出所有在verilog中要使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《内战的爆发》人民解放战争的胜利课件-1
- 2025届江西省浮梁一中高三摸底考试数学试题
- 《二泉映月》音乐课件
- 机械制造工艺模考试题(含参考答案)
- 老年股骨颈骨折术前术后护理
- 事业单位环保培训
- 2025年昌吉货运资格证模拟考试新题库
- 2025个体商户的买卖合同协议
- 保洁卫生协议书
- 合作协议 上市
- 瓶瓶罐罐做花瓶课件
- 创意设计工作室合伙合同
- 居家托养合同范本
- 血透导管滑脱应急预案
- 浙江省杭州市学军小学数学六年级小升初期末复习试卷(含答案)
- 【年加工500吨鲍鱼的综合加工生产工艺设计10000字(论文)】
- JBT 7387-2014 工业过程控制系统用电动控制阀
- 湖南省长沙市浏阳市2023-2024学年七年级下学期期中数学试题(含解析)
- 家宴主题宴会设计说明
- 北京市海淀区2024年七年级下学期语文期中试卷(附答案)
- 2022版义务教育(信息科技)课程标准(附课标解读)
评论
0/150
提交评论