Design Compiler指南——概述和基本流程

        综合是前端模块设计中的重要步骤之一,综合的过程是将行为描述的电路、RTL级的电路转换到门级的过程;Design Compiler是Synopsys公司用于做电路综合的核心工具,它可以方便地将HDL语言描述的电路转换到基于工艺库的门级网表。本文将简单介绍综合的原理以及使用Design Compiler做电路综合的全过程。

一、概述

        综合的目的在于:决定电路门级结构,寻求时序与面积的平衡,寻求功耗与时序的平衡,增强电路的测试性。它是根据一个系统逻辑功能与性能的要求,在一个包含众多结构、功能、性能均已知的逻辑元件的单元库的支持下,寻找出一个逻辑网络结构的最佳实现方案。即实现在满足设计电路的功能、速度及面积等限制条件下,将行为级描述转化为指定的技术库中单元电路的连接。

         综合主要包括三个阶段:转换(translation)、映射(mapping) 与优化(optimization)。综合工具首先将HDL的描述转换成一个与工艺独立(technology-independent)的RTL级网表(网表中RTL模块通过连线互联),然后根据具体指定的工艺库,将RTL级网表映射到工艺库上,成为一个门级网表,最后再根据设计者施加的诸如延时、面积方面的约束条件,对门级网表进行优化。

        逻辑综合具有以下几个层次:

        随着抽象层次的升高,设计者对于最终硬件(门和触发器)的控制能力越来越小。设计者可以在上述的三个层次用HDL语言描述他的设计,根据HDL语言描述的层次的高低,综合也相应的可以分为逻辑级综合,RTL级综合以及行为级综合。

  • 逻辑级综合中,设计被描述成布尔等式的形式,触发器、锁存器这样的基本单元采用元件例化(instantiate)的方式表达出来。逻辑级描述实际上已经暗示了综合以后的网表。
  • 在RTL级综合中,电路的数学运算和行为功能分别通过HDL语言特定的运算符和行为结构描述出来。对于时序电路,我们可以明确的描述它在每个时钟边沿的行为。
  • 行为级综合比RTL级综合层次更高,同时它描述电路也越抽象,在RTL级中,电路在每个时钟边沿的行为必须确切的描述出来,而行为级描述却不是这样,这里没有明确规定电路的时钟周期。电路的行为可以描述成一个时序程序(sequential program),综合工具的任务就是根据指定的设计约束,找出哪些运算可以在哪个时钟周期内完成,需要在多个周期内用到的变量值需要通过寄存器寄存起来。

         上图向我们展示了一个设计从最初的最抽象的概念阶段到最终的芯片阶段的转化过程,在这个过程当中,Design Compiler主要完成将设计的RTL级描述转化到门级网表的过程。

二、Design compiler基本流程

        

         与一般的综合过程相同,使用DC做综合也包含转换、优化和映射三个阶段。

        转换阶段综合工具将HDL语言描述的电路或未映射的电路用工艺独立的RTL级的逻辑来实现,对于Synopsys的综合工具DC来说,就是使用gtech.db库中的RTL级单元来组成一个中间的网表

        优化与映射是综合工具对已有的中间网表进行分析,去掉其中的冗余单元,并对不满足限制条件(如constraints.tcl)的路径进行优化,然后将优化之后的电路映射到由制造商提供的工艺库上(如core_slow.db)。        

        使用DC进行综合的实施流程为:

  1. 预综合过程(pre-synthesis process)
  2. 施加设计约束(contrainting design)
  3. 设计综合(synthesizing design)
  4. 后综合过程(post-synthesis process)

        当半导体工艺的最小特征尺寸小于1um时,称之为亚微米设计技术,当最小特征尺寸小于0.5um时称为深亚微米设计技术(DSM:Deep Sub Micrometer),而当进一步小于0.25um时,则称为超深亚微米设计技术(VDSM:Very Deep Sub Micrometer)。当进入超深亚微米设计后,原有的综合工具受到了很大的挑战,其中一个主要表现是:连线的延时迅速上升。

        当特征尺寸大于0.5um时,电路的延时主要集中在门级单元的延时上,如果门级单元延时占系统延时的70%以上,则前端综合后的电路延时与后端进行布局布线以后反标(back-annotate)回来的电路延时相差不大。

        通常在0.35um设计时,连线延时已经达到了总延时的50%以上,于是版图反标的延时与综合出来得到延时相差会比较大,单靠一次综合已经不能准确估计电路的延时情况,此时需要经过前端后端工具不断叠代来达到比较真实的结果。如下图:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux常用网络命令

关键词:linux网络命令、ifconfig、route、ip、netstat、socket flag 引言: 想成为真正的高手,必须要熟练掌握linux系统的命令行操作,今天就回顾一下linux在网络上的常用命令相关知识, 另外,实践才是最终的方…

图像增强汇总

1、 图像增强技术包括 1) 图像灰度变换方法 2) 直方图修正方法 3) 图像平滑处理 4) 图像尖锐化处理 5) 彩色处理技术 2、 图像增强技术基本上分为两大类:频域处理法和时域处理法。 3、 频…

javaweb(三十八)——mysql事务和锁InnoDB(扩展)

MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题&…

Design Compiler指南——预综合过程

预综合过程是指在综合过程之前的一些为综合作准备的步骤,包括Design Compiler的启动、设置各种库文件、创建启动脚本文件、读入设计文件、DC中的设计对象、各种模块的划分以及Verilog的编码等等。 一、Design Compiler的启动 目前,DC的启动方式有三种&a…

KAFKA介绍(分布式架构)

2019独角兽企业重金招聘Python工程师标准>>> 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kaf…

jquery 回车事件

简单地记下jquery实现回车事件,代码如下:全局: $(document).keydown(function(e){if(e.keyCode13){$(".login-li input[typebutton]").trigger("click");} });某个控件: $("body").keydown(functio…

Three.js 详细解析(持续更新)

1、简介; Three.js依赖一些要素,第一是scene,第二是render,第三是carmea npm install --save three import * as THREE from "three"; import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js&quo…

[js高手之路]构造函数的基本特性与优缺点

上文,通过基本的对象创建问题了解了构造函数,本文,我们接着上文继续了解构造函数的基本特性,以及优缺点. 每个对象上面都有一个constructor属性( 严格意义上来说,是原型上的,对象是通过查找到原型找到 constructor属性…

Design Compiler指南——施加设计约束

Design Compiler是一个约束驱动(constrain-driven)的综合工具,它的结果是与设计者施加的约束条件密切相关的。在本文里,我们主要讨论怎样给电路施加约束条件,这些约束主要包括——时序和面积约束、电路的环境属性、时序和负载在不同模块之间的…

Python:eval的妙用和滥用

时间 2014-07-08 13:05:24 CSDN博客 原文 http://blog.csdn.net/zhanh1218/article/details/37562167主题 Python eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。 so,结合math当成一个计算器很好用…

程维柳青发布道歉声明:滴滴顺风车业务将无限期下线

雷锋网(公众号:雷锋网)消息,8 月 28 日晚间,滴滴创始人兼 CEO 程维和滴滴总裁柳青正式发出道歉声明,向受害者和受害者家属道歉——这已经离本次滴滴顺风车悲剧的发生整整四天的时间。 声明表示,滴滴不再以规模和增长作…

MATLAB图像增强程序举例

1.灰度变换增强程序: % GRAY TRANSFORM clc; Iimread(pout.tif); imshow(I); Jimadjust(I,[0.3 0.7],[0 1],1); %transforms the walues in the %intensity image I to values in J by linealy mapping %values between 0.3 and 0.7 to values between 0 and 1. fi…

Design Compiler指南——设计综合过程

在前面一章介绍完施加约束之后,接下来要做的工作就是将设计进行综合编译(compile),本文我们将主要讨论综合编译的过程。主要分为这样几个部分: 优化的三个阶段及其特点编译的策略编译层次化的设计 一、优化的三个阶段 这一节我们介绍Design …

How to find Material based on Sales Organization and Distribution Channel

Fetch data from Database View /BEV1/RBEA_V Fields: VKORG - Sales Organization VTWEG - Distribution Channel MATNR - Material Number 转载于:https://www.cnblogs.com/JulietLV/p/7436028.html

iOS开发 iOS10兼容访问http

添加NSAppTransportSecurity的字典会自动变成 AppTransportSecurity再添加 allow Arbitary Loads Boolean YES转载于:https://www.cnblogs.com/diweinan/p/6233052.html

django 利用PIL 保存图片

在使用django时不知道怎么保存图片,又不想用它的form ,在网上找了许久,终于找到个解决方案,利用PIL.image 将POST上来的图片保存到media目录下,然后再修改models from PIL import Imagescreen_name request.POST.get(…

图像转灰度图

MyYuanLaiPic imread(e:/image/matlab/darkMouse.jpg);%读取RGB格式的图像 MyFirstGrayPic rgb2gray(MyYuanLaiPic);%用已有的函数进行RGB到灰度图像的转换 [rows , cols , colors] size(MyYuanLaiPic);%得到原来图像的矩阵的参数 MidGrayPic zeros(rows , cols);…

Design Compiler指南——后综合过程

本文我们着重讨论使用Design Compiler综合大型设计时要注意的一些问题,比如怎样调整综合方法,出现约束违反后怎样修正,怎样给不同的子模块作时序和负载预算,以及给整个设计在具体综合之前先作一个预估(Design Exploration)等等。 …

web worker原理 SSE原理

第一部分 什么是 web worker? 我们一直强调JavaScript是单线程的,但是web worker的出现使得JavaScript可以在多线程上跑,只是web worker本身适合用于一些复杂的、耗费cpu的运算,不能操作window、document、parent对象&#xff0c…

如何寻回xp盘符丢失的数据

分区丢失是比较常见的数据恢复案例,需要注意,分区丢失后不要再重建新的分区。保护好资料丢失现场,可以最大程度的恢复出资料。具体的恢复方法看正文了解。 工具/软件:星空数据恢复软件 步骤1:先百度搜索并下载程序打开…