当前位置:文档之家› 数字IC后端设计流程

数字IC后端设计流程

数字IC后端设计流程
数字IC后端设计流程

ASIC/SoC后端设计作业流程剖析

关键词place route DSM megacell clock_tree STA OPT ECO

引言众所周知,ASIC产品是从用硬件描述语言(verilog HDL,VHDL)开始进行数字逻辑电路设计的,经过相关的仿真、综合出门级网表、验证直至完成电路布局布线并优化,最终经流片成功形成的芯片产品。随着中国经济的持续稳定地增长,国内生产厂家对IC需求增长势头强劲与自身设计IC能力薄弱的突出矛盾已经被国家和企业认识。为了缓解这一矛盾并更多地实现IC自主设计,近两年国内陆续出现了一些著名的传统通信系统厂商设立的IC设计队伍,以及归国留学人员领头创办的创业型IC设计公司,他们大多数有相当强的前端设计能力,但在IC后端设计领域的实践经验还较欠缺。在完成前端逻辑设计综合出门级网表后,真正能做好后端设计的公司还不多,有的则通过委托设计服务的方式完成后端布局布线及流片。本文

作者有多年从事覆盖前后端IC设计全流程并有每年几次成功流片数百万门级深亚微米SoC 的经验,并担任IC设计的项目管理工作,对国外大公司的设计流程十分熟悉,并愿意就积累的经验与国内同行分享交流,以利于国内IC设计水平的提高。本文着重介绍国内设计公司薄弱的后端设计,介绍其流程并对在设计过程中的关键步骤进行一些讨论。传统的后端设计流程指的是从门级网表(gate level netlist)开始的,根据设计要求的不同,后端流程可以分为扁平流程(flat flow)和层次化流程(hierarchy flow)两种,在深亚微米DSM(deep sub-micron)领域,又增加了布局加逻辑合成的前后端合二为一的扁平流程(flat flow)和分层流程(hierarchy flow)。我们首先介绍传统的两种后端流程。前后端合一的流程将作为另一个专题在以后讨论。

一、扁平流程(Flat flow)介绍

最简单的后端设计是扁平(flat)流程,一般四百万门以下的设计均可使用这一流程。芯片设计的最高境界是设计完成后一次性投片(Tape Out)成功,这一成功必须建立在正确的前端电路逻辑设计和科学合理及高效的后端布局布线上,要想获得最后的成功,设计阶段就来不得带有半点的侥幸心态, 否则就算在电路功能上满足设计要求,在参数性能上的任何失误也是导致返工的重要因素。因此,后端设计阶段很难保证一遍成功,走几个来回是常事,要期望在最终投片时一次成功,就需要在设计阶段多下工夫。我们不妨给这些大循环起个名字,第一轮叫试验(trial),第二轮叫首次签收(first Sign Off), 第三轮叫最后签收(final Sign Off),每轮包括的前后端设计主要任务和结果如表一所示。不同的循环应该有不同的侧重点,为了节省时间,这些大循环还应该尽可能安排前后端设计同步进行。

Trial:80%模块设计完成数据库准备,流程确认,流程运行中问题的解决,主要设计数据(芯片大小,总体布局,大体时序)的可行性确认

First Sign Off:100%设计,DFT,I/O完成数据库已确定,时序收敛基本完成,没有大的拥塞(congestion)

Final Sign Off:最后细小的功能修改,时序收敛所有时序和布局布线问题解决

我们在简单介绍每一步工作的同时,着重介绍应该注意的问题,遇到的困难和解决的方法。

A. 质量检查(Quality check)

在流程的开始,至少有三样东西需要前端工程师提供:门级网表(gate level netlist),时序约束(timing constraint)和时序分析报告(timing analysis report)。其中网表文件是最重要的,拿到它之后,先不要急于将它放到后端EDA软件里去,而是要先检查一下它的质量,确认已消除哪怕是细小的错误/ 瑕疵,比如检查有无以下情况:文法错误,连接短路,无任何连接的net,无驱动的输入引脚(pin),assign语句,wire类型以外的net,使用了由"\"开始的特别字符,数据总线的写法,名字的长度等,不同的厂家和软件对此都会有一些限制,为了后续工作的方便,建议定义一套比较严格的网表书写规则。

例如:不许有"无任何连接的net"和"无驱动的输入pin",无assign语句,只允许线(wire)型

net,所有名字只许使用大小写英文字母,数字和下划线,头一个文字是英文字母,长度小于1024,模块之间的调用一律使用explicit格式。这些要求看似繁琐,但是只要事先同前端工程师说明,在做逻辑合成之前设定好几个参数就可以了,并不增加他们的工作量。其次要看设计是否需要DFT(可测试性),ATPG(自动测试格式生成),如果要的话,检查是否符合扫描链(scan chain)和存储器内建自测(memBist:Memory BIST)的设计要求。然后要仔细阅读拿到的时序约束(timing constrain)文件,检查时序设定是否完整、合理。最后要流览时序分析报告,如果有setup violation(setup 冲突)存在的话,一般不允许大于时钟周期的10%,hold violation暂时可以不解决,留到布线后再去除。

B. I/O单元布置(I/O Place)

按顺序摆放I/O PAD本不是难事,但是如果考虑到内部各模块的位置、电源PAD 的个数和种类时,有时排放I/O PAD也要仔细斟酌才行。不同种类的信号PAD需要不同种类的电源,有些相同电压的电源也是不能共用的,特别是模拟信号及其电源本身都需要与其它信号隔离,电源PAD的个数计算要兼顾芯片封装的最低要求和芯片内部的功耗。近两年常用的一种叫倒装片(flip chip)封装,其核心电路的供电不象传统的芯片由四周的电源PAD供电,而是由芯片中部的电源PAD直接从顶部灌到芯片中去,这种设计大大降低了对四周电源PAD的个数要求。在试验轮(trial)时如果无法确定PAD个数、种类和位置,可以暂时跳过这步,并同时无视与PAD直接相连net的时序。

C. 兆单元布置(Megacell Place)

ADC、DAC、PLL、memory这类部件属于兆单元或称巨集(megacell),所有的后端EDA 布局软件都有自动放置兆单元(megacell)的功能,但是很少听说厂家建议用户去相信自动放置后的结果,基本上来讲,在有五个以上兆单元(megacell)的设计中,这一步属于手工劳动。排放前要同前端工程师沟通,了解运算数据的流向、各大模块间的关系和位置,依此来决定兆单元(megacell)的大体位置。在逐一放置各个兆单元(megacell)时,要考虑其引脚(pin)的位置、方向、数量及相互间的对应关系,因为兆单元(megacell)常常会禁止几层金属布线层的使用,所以要注意给穿过它的信号线留有足够的空间,特别是兆单元(megacell)之间的距离。如果兆单元(megacell)本身没有电源环(power ring),则要在它四周留下更大的空间以备加环。环的宽度由厂商提供的公式,依速度、数据变化率求得。有些软件可以将相邻的几个兆单元(megacell)合在一起做个环以节省空间,此时公共环的宽度应该是各个单独环宽度中最大者。常见的布局规划(floor plan)方法是兆单元(megacell)放在四周,标准单元(standard cell)放在中间。留给标准单(standard cell)的空间形状以方形为好,应尽量避免采用预留L形,U形或几个分离的标准单元(standard cell)空间方法。但是这也不可以一概而言,它和设计本身关系密切,要依据情况分析而定。兆单元(megacell)的排放极其重要,它可以决定后期工作的难易,建议在此多花工夫,找专家商量一下,力求精益求精。

D. 行通道生成(Row Generation)

行通道(Row)是为放标准单元(standard cell)用的,其整体形状已经被兆单元(megacell)的位置大致决定,行通道(row)和兆单元(megacell)之间要留有一定的空间,以利于兆单元(megacell)的信号连线。在兆单元(megacell)之间做少许行通道(row),以备连线过长,加缓冲器接力,或生成时钟树时使用。

E. 电源布线(Power Routing)

电源布线前的功耗估算不是一件简单的事情,过于保守则功耗过大,芯片封装无法承受,过于乐观则有供电不足而影响速度的危险,到底什么才是合适的功耗只有在芯片做成之后才知道。建议在管脚和面积允许的范围之内多留一些富裕。电源布线时依各个模块的功耗不同,布线密度并不相同。布线完了,应该用IR drop 检验整体的供电情况。在传统的通过

四周管脚供电、标准单元(standard cell)放在中央的设计中,标准单元(standard cell)集中的row 的四周应该考虑加一圈电源环,环的宽度按如下方法计算:环的宽度= 所有row的电源线宽度之和/ 四周直接供电电源条数之和

E. 布局(Placement)

布局主要指的是如何合理地放置标准单元(standard cell),我们并不希望软件过多地移动已经放好的兆单元(megacell)。布局可以简单地根据cell的连接进行,也可以根据时序要求来做,还可以以拥塞程度(congestion)为主进行。随着芯片速度的提高,越来越多的人首先选择按时序要求来布局,这时,先前入手的时序约束(timing constrain)就派上用场了。在布局开始之前,有人喜欢做一些分组(group)或分区(region),其好处是可以告诉布局软件一个大致的摆放范围,但是有一点要记住,这种作法会同所给的时序要求发生矛盾,特别是对边界的连接单元(cell)。所以建议在定义分组(group)或分区(region)时,尽量宽松一些,并允许一定百分比的单元(cell)放在分组(group)或分区(region)之外,这样

做的结果同所谓的"变形虫"(amoeba)布局有同样的效果。如果使用有时序要求的布局,而布局用的时序引擎(timing engine)与布线或计算延迟用的引擎(engine)不一样,则要注意引擎(engine)之间的计算误差,它们有时会有10倍之差。

如何有效地减小误差是一件技术性很强的工作,因为这常常涉及到数据库中最底层参数的变动。不同的软件多少都会留几个相关的参数用来调整误差。要谨慎使用两三年前出售的布局软件中的再优化功能,先作个小的验证后再决定是否使用。如果有扫描链(scan chain),可以考虑在此时按照单元(cell)的物理位置做一次重新排序,以减少不必要的连线长度。但是在空间不紧张的情况下,不做扫描链(scan chain)重新排序也未尝不可,毕竟它要花费时间,还要重新生成测试向量。

F. 时钟树(Clock Tree)

我们将时钟树(clock tree)和缓冲器树(buffer tree)合在一起,并且着重讨论时钟树(clock tree),因为二者的区别是缓冲器树(buffer tree)一般只考虑驱动能力而不在乎树的延迟。和扭曲(skew)等问题,它主要用于复位(reset),扫描使能(scan enable)等无时序要求的连线。所以知道了如何做时钟树,再来做缓冲器树就变得容易多了。做时钟树会碰到以下几项必要的指标:树的根结点、时钟周期、树的最大延迟、树的最小延迟、扭曲(skew)、传递时间(transition time)和缓冲器的种类。还有一些可选项:特别要作叶子的结点(leaf pin)、特别不要作叶子的结点(excluded pin)和特别需要保留在时钟树里的单元(cell)保护单元:(preserved cell)等。搞清楚各个指标的优先顺序,按其特点设定一组特别的参数,可以检测出软件的潜在能力。比如CADENCE的CTGen,如果设定树的最小延迟为0.0ns, 树的最大延迟为0.1ns, 扭曲(skew)为0.0ns或是设定树的最小延迟为0.0ns, 树的最大延迟为10.0ns, 扭曲(skew)为0.0ns,在这两种不近情理的极端情况下,可以得到最小延迟和最小扭曲(skew)的时钟树。时钟树对位置十分敏感,有时稍微调整一下中间几个单元(cell)的位置就会得到意想不到的好结果。这是一种需要多实践,多摸索的经验。再复杂一些的问题有:门时钟(gated clock),生成时钟(generated clock),多时钟(multiple clock)和时钟树与时钟树之间的扭曲(skew)。一般软件可以自动处理gated clock,但是不一定会处理generated clock 和multiple clock,解决方法是:让软件做两次树的生成,第一次生成主要的树,第二次生成另一个,并在已经做好的树的根结点上加一个特别的延迟,对于时钟树与时钟树之间的扭曲(skew),如果软件不会自行处理,则要用树的最大最小延迟来控制。最后提醒一句:做时钟树时也要计算线间延迟,所以同样会有布局中提到的不同时序引擎(timing engine)之间的误差的问题。最近有些软件会利用时钟扭曲(clock skew)帮助解决setup冲突(setup violation),其结果是时钟扭曲(clock skew)很大,但是时序很好。

G. 静态时序分析和优化(STA & OPT)

到此我们已经有了一个完整的布局结果,如果没有拥塞(congestion)问题,就可以按预估线长提取延迟数据作静态时序分析和再优化了。此时要注意的问题有:延迟数据的精度和误差、静态时序分析所用条件的更改,例如把理想时钟(ideal clock)变成传播时钟(propagated clock)、输入(input)和输出(output)延迟的更改、再优化时是否提供了详细的布局信息和所用时序引擎(timing engine)之间的误差等。再优化软件的选择非常重要,好的软件可以很快达到收敛的目的,差的软件会一遍一遍地绕圈,浪费很多时间。软件的好坏与设计和工艺密切相关,很难一概而论,若要更详细的资料,请留意参阅本文作者在其它同期IC相关刊物上发表的文章"EDA工具的选择"。事先对再优化软件作个性能评估是明智和必要的.

H. 布局工程变更(Placement ECO)

通常我们说ECO是指所变更(包括增加和删除)单元(cell)的总数少于10%的情况,太大的变更建议从头再来一遍。如果不想变更时钟树,则要求ECO没有触发器的增减和位置的挪动,但是可以允许变更现有触发器的大小(size up/down) ,如果时钟树尚未布线。而一般的逻辑组合单元(cell)则可以作任何的修改。布局变更(Placement ECO)和静态时序分析和再优化(STA&OPT)可以多次循环,直到没有大的冲突(violation)为止。

I. 布线(Routing)

布线时首先留出模拟信号用的走线和隔离空间。然后考虑时钟树的布线,此时因为还没有数字信号走线,所以可以有很大的自由来选择用传输速度较快的金属层作时钟树布线。最后是数字信号布线。如果布线软件可以考虑时序要求,建议使用这一功能。如果没有这个功能,并且又有一些关键路径(critical path),则可以加权给这些net,让它们优先被布线。布好线的结果中,如果没有大面积或集中在一起的布线问题,可以暂时不去修正自动布线产生的小问题,而先作STA,因为很可能会有布线工程变更(routing ECO)要作。

J. 静态时序分析和再优化(STA & OPT)

因为布线已经完成,这时提取出来的延迟数据应该是十分真实的了,在此基础上作的再优化应该能够有效地去除任何setup和hold冲突(violation)。其它注意事项与布局后的STA&OPT相似。万一试过手头所有的软件,仍然有少量冲突(violation)存在时,手工修改是最后一招了。

K. 布线工程变更(Routing ECO)

这时ECO所受到的限制比布局变更(placement ECO)更多,不能有任何触发器的修改,只能变更逻辑组合单元(cell)。任何与时钟树相连单元(cell)的变更都会导致时钟树连线的变化,为了尽可能地减少对时序的影响,建议用手工做时钟树的修改。布线变更(routing ECO)可以循环多次,直到所有setup和hold violation去除为止。

L. 签收交付(Tap Out)

以上是对传统的后端flat流程的简单介绍,在实际工作中,还会有不少附加的工作,例如对有小修改的网表做formal验证,在几个大的里程碑处,做详细的仿真,以确保电路与原设计功能一致。如果希望结合利用不同软件的优点来完成整个流程,数据传送和格式转换又是另一个话题,在这些过程中,工程师需要自己写一些小的脚本程序(script)去帮助完

成工作。

二、层次化流程(Hierarchy flow)简介

当芯片的规模过大时,考虑到软件的承受能力和运行时间,我们不得不使用层次(hierarchy)化流程。与扁平(flat)流程相比,分层(hierarchy)流程有不少附加的工作要做,如果不是必须,工程师一般不愿意用它。下面的心得

体会,重点放在没有扁平(flat)流程的环节上。

A. 顶层布局规划(Top floorplan)

主要决定每个物理模块的大小、形状和位置,除一些模拟电路有特殊要求,需要放在

最顶层以外,尽量将数字电路归入各个模块。其余事项与扁平(flat)流程的兆单元布置(megacell place)相似。

B. 创建和布置宏单元(Create & Place Macro)

生成和放置各个模块时,要注意模块间的间距,最顶层的走线、缓冲器的插入都会使用这些空间。

C. 电源布线(Power routing)

用与扁平(flat)流程相同的方法在最顶层做完电源布线后,可以将结果打到各个模块中去,这样也就把各模块的电源布线做完了。

D. 全局引脚优化(Global Pin Optimization)

一般软件会按照最短距离来自动决定所有模块的输入输出引脚(IO PIN)。依据条件可以分别对模块的PIN间距、使用的金属层和方向(哪侧可以使用,哪侧不能使用)做特别定义。注意检验优化好的PIN不要和电源线有冲突。如果一个模块被多次调用,在同时对这几个模块作PIN优化时,因为每个模块的位置不同,一个PIN会有多个最优化的位置,哪个是需要的,要事先指定清楚,或者干脆就不允许一个模块的多次调用。

E.时序分配预算(Timing Budget)

从最顶层的时序要求算出各个模块的时序要求时,要验证算法的合理性。比如,从模块A到模块B共有10ns的时间,A本身要2ns,B本身要5ns,剩下的3ns如何分配?全部给A、全部给B、一半一半、还是按比例分配?以上各种分法都算合法,但是如果将这3ns 用两次,既给A又给B,就不合理了。相反,在时序不够时,也会有类似的问题发生。F.模块分层(Block Level)各个模块内部的布局布线作法大致与扁平(flat)流程相同,不再赘述。在完成最后的布线后,为了最顶层的布局布线,要多一步抽取模块的物理属性和时序属性的工作。模块的时序属性是为减少最顶层的运算量准备的,这在SoC中十分有效。

G.修改布局规划(Update Floorplan)

做完模块内布局布线的各步工作后,再回到最顶层,首先用抽出的实际物理属性和时序属性替换以前的模块。

H.顶层布局(Top Placement)

如果有其它未确定位置的单元(cell),还要做一次最顶层的布局

I. 顶层时钟树(Top Clock tree)

因为各模块已经有时钟树,最顶层的时钟树只需要作到各个模块的PIN为止。由于每个模块中时钟树的最大最小延迟不同,要象扁平(flat)流程中提及的方法那样,在PIN上设定一个特别得到延迟。顶层布线(Top Routing)和交付(Tap Out)无特别需要另外陈述的。结束语

本文介绍的后端设计流程是对后端设计中必须重点考虑和面对的课题的总览性介绍,具体

每一个专题的实现又需单独另行讨论,作者将结合国内目前的实际情况有计划地将设计工程师和相关读者感兴趣的专题逐一讨论,并欢迎国内外专家批评指正,共同促进国内IC设计水平的提高。

关键词释义:

EDA tools EDA工具软件

flip chip 倒装芯片

gate level netlist 门级网表

place 布局

deep sub-micron 深亚微米

route 布线

flat flow 扁平流程

group 分组

hierarchy flow 分层次流程

region 分区

timing constrain 时序约束

power ring 电源环

timing analysis 时序分析

row 行通道

net 线,连线

Congestion 拥塞

pin 引脚

timing engine 时序引擎

cell 单元

scan chain 扫描链

PAD 基座

clock tree 时钟树

Buffer 缓冲器

buffer tree 缓冲器树

fill cell 填充单元

clock insertion delay 时钟树延迟megacell 兆单元(巨集)

clock skew 时钟扭曲

standard cell 标准单元

transition time 传递时间

ECO 工程变更要求

tap out (Sign off) 交付(签收)

scan chain 扫描链

PAD 基座

clock tree 时钟树

Buffer 缓冲器

buffer tree 缓冲器树

fill cell 填充单元

clock insertion delay 时钟树延迟megacell 兆单元(巨集)

clock skew 时钟扭曲

standard cell 标准单元

transition time 传递时间

ECO 工程变更要求

tap out (Sign off) 交付(签收)

setup/hold time violation建立/维持时序冲突top level 最顶层

layer 金属(布线)层

script 脚本

BIST(Built-in self-test) 内建自测

DFT 可测试性设计

集成电路IC设计完整流程详解及各个阶段工具简介

IC设计完整流程及工具 IC的设计过程可分为两个部分,分别为:前端设计(也称逻辑设计)和后端设计(也称物理设计),这两个部分并没有统一严格的界限,凡涉及到与工艺有关的设计可称为后端设计。 前端设计的主要流程: 1、规格制定 芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。 2、详细设计 Fabless根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。 3、HDL编码 使用硬件描述语言(VHDL,Verilog HDL,业界公司一般都是使用后者)将模块功能以代码来描述实现,也就是将实际的硬件电路功能通过HDL语言描述出来,形成RTL(寄存器传输级)代码。 4、仿真验证 仿真验证就是检验编码设计的正确性,检验的标准就是第一步制定的规格。看设计是否精确地满足了规格中的所有要求。规格是设计正确与否的黄金标准,一切违反,不符合规格要求的,就需要重新修改设计和编码。设计和仿真验证是反复迭代的过程,直到验证结果显示完全符合规格标准。仿真验证工具Mentor公司的Modelsim,Synopsys的VCS,还有Cadence的NC-Verilog均可以对RTL级的代码进行设计验证,该部分个人一般使用第一个-Modelsim。该部分称为前仿真,接下来逻辑部分综合之后再一次进行的仿真可称为后仿真。 5、逻辑综合――Design Compiler 仿真验证通过,进行逻辑综合。逻辑综合的结果就是把设计实现的HDL代码翻译成门级网表netlist。综合需要设定约束条件,就是你希望综合出来的电路在面积,时序等目标参数上达到的标准。逻辑综合需要基于特定的综合库,不同的库中,门电路基

后端流程(初学必看)(DOC)

基本后端流程(漂流&雪拧) ----- 2010/7/3---2010/7/8 本教程将通过一个8*8的乘法器来进行一个从verilog代码到版图的整个流程(当然只是基本流程,因为真正一个大型的设计不是那么简单就完成的),此教程的目的就是为了让大家尽快了解数字IC设计的大概流程,为以后学习建立一个基础。此教程只是本人探索实验的结果,并不代表内容都是正确的,只是为了说明大概的流程,里面一定还有很多未完善并且有错误的地方,我在今后的学习当中会对其逐一完善和修正。 此后端流程大致包括一下内容: 1.逻辑综合(逻辑综合是干吗的就不用解释了把?) 2.设计的形式验证(工具formality) 形式验证就是功能验证,主要验证流程中的各个阶段的代码功能是否一致,包括综合前RTL代码和综合后网表的验证,因为如今IC设计的规模越来越大,如果对门级网表进行动态仿真的话,会花费较长的时间(规模大的话甚至要数星期),这对于一个对时间要求严格的asic设计来说是不可容忍的,而形式验证只用几小时即可完成一个大型的验证。另外,因为版图后做了时钟树综合,时钟树的插入意味着进入布图工具的原来的网表已经被修改了,所以有必要验证与原来的网表是否逻辑等价。 3.静态时序分析(STA),某种程度上来说,STA是ASIC设计中最重要的步骤,使用primetime对整个设 计布图前的静态时序分析,没有时序违规,则进入下一步,否则重新进行综合。(PR后也需作signoff 的时序分析) 4.使用cadence公司的SOCencounter对综合后的网表进行自动布局布线(APR) 5.自动布局以后得到具体的延时信息(sdf文件,由寄生RC和互联RC所组成)反标注到网表,再做静 态时序分析,与综合类似,静态时序分析是一个迭代的过程,它与芯片布局布线的联系非常紧密,这个操作通常是需要执行许多次才能满足时序需求,如果没违规,则进入下一步。 6.APR后的门级功能仿真(如果需要) 7.进行DRC和LVS,如果通过,则进入下一步。 8.用abstract对此8*8乘法器进行抽取,产生一个lef文件,相当于一个hard macro。 9.将此macro作为一个模块在另外一个top设计中进行调用。 10.设计一个新的ASIC,第二次设计,我们需要添加PAD,因为没有PAD,就不是一个完整的芯片,具体 操作下面会说。 11.重复第4到7步

浅谈数字IC设计技术(一)

浅谈数字IC设计技术(一) 摘要:随着数字电路设计的规模以及复杂程度的提高,对其进行设计所花费的时间和费用也随之而提高。根据近年来的统计,对数字系统进行设计所花的时间占到了整个研发过程的60%以上。所以减少设计所花费的实践成本是当前数字电路设计研发的关键,这就必须在设计的方法上有所突破。 关键词:数字系统;IC;设计 一、数字IC设计方法学 在目前CI设计中,基于时序驱动的数字CI设计方法、基于正复用的数字CI设计方法、基于集成平台进行系统级数字CI设计方法是当今数字CI设计比较流行的3种主要设计方法,其中基于正复用的数字CI设计方法是有效提高CI设计的关键技术。它能解决当今芯片设计业所面临的一系列挑战:缩短设计周期,提供性能更好、速度更快、成本更加低廉的数字IC芯片。 基于时序驱动的设计方法,无论是HDL描述还是原理图设计,特征都在于以时序优化为目标的着眼于门级电路结构设计,用全新的电路来实现系统功能;这种方法主要适用于完成小规模ASIC的设计。对于规模较大的系统级电路,即使团队合作,要想始终从门级结构去实现优化设计,也很难保证设计周期短、上市时间快的要求。 基于PI复用的数字CI设计方法,可以满足芯片规模要求越来越大,设计周期要求越来越短的要求,其特征是CI设计中的正功能模块的复用和组合。采用这种方法设计数字CI,数字CI包含了各种正模块的复用,数字CI的开发可分为模块开发和系统集成配合完成。对正复用技术关注的焦点是,如何进行系统功能的结构划分,如何定义片上总线进行模块互连,应该选择那些功能模块,在定义各个功能模块时如何考虑尽可能多地利用现有正资源而不是重新开发,在功能模块设计时考虑怎样定义才能有利于以后的正复用,如何进行系统验证等。基于PI复用的数字CI的设计方法,其主要特征是模块的功能组装,其技术关键在于如下三个方面:一是开发可复用的正软核、硬核;二是怎样做好IP复用,进行功能组装,以满足目标CI的需要;三是怎样验证完成功能组装的数字CI是否满足规格定义的功能和时序。 二、典型的数字IC开发流程 典型的数字CI开发流程主要步骤包含如下24方面的内容: (1)确定IC规格并做好总体方案设计。 (2)RTL代码编写及准备etshtnehc代码。 (3)对于包含存储单元的设计,在RTL代码编写中插入BIST(内建自我测试)电路。 (4)功能仿真以验证设计的功能正确。 (5)完成设计综合,生成门级网表。 (6)完成DFT(可测试设计)设计。 (7)在综合工具下完成模块级的静态时序分析及处理。 (8)形式验证。对比综合网表实现的功能与TRL级描述是否一致。 (9)对整个设计进行Pre一layout静态时序分析。 (10)把综合时的时间约束传递给版图工具。 (11)采样时序驱动的策略进行初始化nooprlna。内容包括单元分布,生成时钟树 (12)把时钟树送给综合工具并插入到初始综合网表。 (13)形式验证。对比插入时钟树综合网表实现的功能与初始综合网表是否一致。 (14)在步骤(11)准布线后提取估计的延迟信息。 (15)把步骤(14)提取出来的延迟信息反标给综合工具和静态时序分析工具。 (16)静态时序分析。利用准布线后提取出来的估计延时信息。 (17)在综合工具中实现现场时序优化(可选项)。

后端基本概念

为了方便大家尽快找到需要的话题,经icfb版主建议,编辑这个数字后端的FAQ。 如果您是初学者,建议先搜索相关的资料,读读其他人的帖子,一些基本概念在那里都已经讨论过了。 如果您已经有2年以上的实战经验,下面这些雕虫小技就不太值得您去浪费时间了。 先说说作为一个有经验的后端(暫不包括DFT工程师和layout工程师)工程师,需要掌握哪些知识 4个级别: 1)知道一些基本概念, 2)简单地掌握这门技术, 3)熟练 4)精通 半导体工艺--2 RTL coding -- 2 综合-- 2 时序约束-- 3 APR -- 3 DFT -- 2 DRC/LVS -- 3 仿真-- 2 形式验证-- 2 以下是FAQ分类: 2楼:时序约束,STA 3楼:综合DC/RC 4楼:APR (floorplan,place,CTS,route) 5楼:验证(LEC,DRC,LVS等) 6楼:DFT 7楼:低功耗 8楼:面试 9楼:名词解释

时序约束,STA (1) clock Q1.1 什么是同步时钟? 时钟频率是整倍数,并且相互之间的相位是固定而且相差可预知的,才可以称得上是同步时钟。其他的都算异步时钟。 比如, 5M,10M是同步 2M,3M一般算异步 一个时钟,输出到另一个芯片中,转一圈后,以同样的频率返回到自己的芯片,因为无法确定时钟在另一个芯片里面的latency,所以输出的时钟与输入的时钟算异步一个时钟进到2个PLL,就算那2个PLL的输出频率相同,一般也算是异步时钟,除非你de-skew Q1.2 如何处理同步时钟? 设计要求严格的公司,就算是同步时钟,数据在同步时钟间传送时,依然要用meta-stability FF,可以set_false_path 如果放松要求,不用meta-stability FF,则同步时钟之间是real path,做CTS时,同步时钟要clock tree balance。 注意不同频率的同步时钟的最小时间间隔被用来检查setup 如果上升下降沿混用的话,setup的时间间隔就只有半个时钟周期了 Q1.3 如何处理异步时钟? 很简单,set_false_path 注意要from A to B,同时要from B to A Q1.4 如何定义时钟? create_clock 如果指定某个pin/port,就是实时钟,如果没有指定pin和port,就是虚拟时钟 巧妙利用waveform选项可以做出不同波形的时钟 被定义成时钟的net,在综合时,自动带有ideal network和dont_touch的属性。但是当它被用作data计算延迟时,ideal net的属性会自动消失 时钟会自动穿过逻辑单元,停在时序单元的时钟端,所以用FF产生的分频时钟要再用create_generated_clock定义一次 Q1.5 如何处理多选一时钟? 在实际应用当中,如果这几个时钟不会同时出现的话,则在定义时钟时,只选择最快频率的就可以了 如果是多个时钟同时出现,可以用set_case_analysis选一个, 也可以放它们全都过去,但是在MUX后面把它们之间set_false_path Q1.6 巧妙定义时钟

IC设计流程

设计流程 IC的设计过程可分为两个部分,分别为:前端设计(也称逻辑设计)和后端设计(也称物理设计),这两个部分并没有统一严格的界限,凡涉及到与工艺有关的设计可称为后端设计。 前端设计的主要流程: 1、规格制定 芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。 2、详细设计 Fabless根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。 3、HDL编码 使用硬件描述语言(VHDL,Verilog HDL,业界公司一般都是使用后者)将模块功能以代码来描述实现,也就是将实际的硬件电路功能通过HDL语言描述出来,形成RTL(寄存器传输级)代码。 4、仿真验证 仿真验证就是检验编码设计的正确性,检验的标准就是第一步制定的规格。看设计是否精确地满足了规格中的所有要求。规格是设计正确与否的黄金标准,一切违反,不符合规格要求的,就需要重新修改设计和编码。设计和仿真验证是反复迭代的过程,直到验证结果显示完全符合规格标准。仿真验证工具Mentor公司的Modelsim,Synopsys的VCS,还有Cadence的NC-Verilog均可以对RTL级的代码进行设计验证,该部分个人一般使用第一个-Modelsim。该部分称为前仿真,接下来逻辑部分综合之后再一次进行的仿真可称为后仿真。 5、逻辑综合――Design Compiler

仿真验证通过,进行逻辑综合。逻辑综合的结果就是把设计实现的HDL代码翻译成门 级网表netlist。综合需要设定约束条件,就是你希望综合出来的电路在面积,时序等目标参数上达到的标准。逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元(standard cell)的面积,时序参数是不一样的。所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的。一般来说,综合完成后需要再次做仿真验证(这个也称为后仿真,之前的称为前仿真)逻辑综合工具Synopsys的Design Compiler,仿真工具选 择上面的三种仿真工具均可。 6、STA Static Timing Analysis(STA),静态时序分析,这也属于验证范畴,它主要是在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例(violation)。这个是数字电路基础知识,一个寄存器出现这两个时序违例时,是没有办法正确采样数据和输出数据的,所以以寄存器为基础的数字芯片功能肯定会出现问题。STA工具有Synopsys的Prime Time。 7、形式验证 这也是验证范畴,它是从功能上(STA是时序上)对综合后的网表进行验证。常用的就是等价性检查方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描述的电路功能。形式验证工具有Synopsys的Formality。前端设计的流程暂时写到这里。从设计程度上来讲,前端设计的结果就是得到了芯片的门级网表电路。 Backend design flow后端设计流程: 1、DFT Design ForTest,可测性设计。芯片内部往往都自带测试电路,DFT的目的就是在设计的时候就考虑将来的测试。DFT的常见方法就是,在设计中插入扫描链,将非扫描单元(如寄存器)变为扫描单元。关于DFT,有些书上有详细介绍,对照图片就好理解一点。DFT工具Synopsys的DFT Compiler

数字IC设计笔试面试经典100题

1:什么是同步逻辑和异步逻辑?(汉王) 同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。 同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入x 有无变化,状态表中的每个状态都是稳定的。 异步时序逻辑电路的特点:电路中除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件,电路中没有统一的时钟,电路状态的改变由外部输入的变化直接引起。 2:同步电路和异步电路的区别: 同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。 异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,只有这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步。 3:时序设计的实质: 时序设计的实质就是满足每一个触发器的建立/保持时间的要求。 4:建立时间与保持时间的概念? 建立时间:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。保持时间:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间。 5:为什么触发器要满足建立时间和保持时间? 因为触发器内部数据的形成是需要一定的时间的,如果不满足建立和保持时间,触发器将进入亚稳态,进入亚稳态后触发器的输出将不稳定,在0和1之间变化,这时需要经过一个恢复时间,其输出才能稳定,但稳定后的值并不一定是你的输入值。这就是为什么要用两级触发器来同步异步输入信号。这样做可以防止由于异步输入信号对于本级时钟可能不满足建立保持时间而使本级触发器产生的亚稳态传播到后面逻辑中,导致亚稳态的传播。 (比较容易理解的方式)换个方式理解:需要建立时间是因为触发器的D端像一个锁存器在接受数据,为了稳定的设置前级门的状态需要一段稳定时间;需要保持时间是因为在时钟沿到来之后,触发器要通过反馈来锁存状态,从后级门传到前级门需要时间。 6:什么是亚稳态?为什么两级触发器可以防止亚稳态传播? 这也是一个异步电路同步化的问题。亚稳态是指触发器无法在某个规定的时间段内到达一个可以确认的状态。使用两级触发器来使异步电路同步化的电路其实叫做“一位同步器”,他只能用来对一位异步信号进行同步。两级触发器可防止亚稳态传播的原理:假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态,那么在下一个脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳定的数据必须满足第二级触发器的建立时间,如果都满足了,在下一个脉冲沿到来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时间。同步器有效的条件:第一级触发器进入亚稳态后的恢复时间+ 第二级触发器的建立时间< = 时钟周期。

IC设计流程之实现篇全定制设计

IC设计流程之实现篇——全定制设计 要谈IC设计的流程,首先得搞清楚IC和IC设计的分类。 集成电路芯片从用途上可以分为两大类:通用IC(如CPU、DRAM/SRAM、接口芯片等)和专用IC(ASIC)(Application Specific Integrated Circuit),ASIC是特定用途的IC。从结构上可以分为数字IC、模拟IC和数模混合IC三种,而SOC(System On Chip,从属于数模混合IC)则会成为IC设计的主流。从实现方法上IC设计又可以分为三种,全定制(full custom)、半定制(Semi-custom)和基于可编程器件的IC设计。全定制设计方法是指基于晶体管级,所有器件和互连版图都用手工生成的设计方法,这种方法比较适合大批量生产、要求集成度高、速度快、面积小、功耗低的通用IC或ASIC。基于门阵列(gate-array)和标准单元(standard-cell)的半定制设计由于其成本低、周期短、芯片利用率低而适合于小批量、速度快的芯片。最后一种IC设计方向,则是基于PLD或FPGA器件的IC设计模式,是一种“快速原型设计”,因其易用性和可编程性受到对IC制造工艺不甚熟悉的系统集成用户的欢迎,最大的特点就是只需懂得硬件描述语言就可以使用EDA工具写入芯片功能。从采用的工艺可以分成双极型(bipolar),MOS和其他的特殊工艺。硅(Si)基半导体工艺中的双极型器件由于功耗大、集成度相对低,在近年随亚微米深亚微米工艺的的迅速发展,在速度上对MOS管已不具优势,因而很快被集成度高,功耗低、抗干扰能力强的MOS管所替代。MOSFET工艺又可分为NMOS、PMOS和CMOS三种;其中CMOS工艺发展已经十分成熟,占据IC市场的绝大部分份额。GaAs器件因为其在高频领域(可以在0.35um下很轻松作到10GHz)如微波IC中的广泛应用,其特殊的工艺也得到了深入研究。而应用于视频采集领域的CCD传感器虽然也使用IC一样的平面工艺,但其实现和标准半导体工艺有很大不同。在IC开发中,常常会根据项目的要求(Specifications)、经费和EDA工具以及人力资源、并考虑代工厂的工艺实际,采用不同的实现方法。 其实IC设计这个领域博大精深,所涉及的知识工具领域很广,本系列博文围绕EDA工具展开,以实现方法的不同为主线,来介绍这三种不同的设计方法:全定制、半定制和基于FPGA

2017年数字IC设计工程师招聘面试笔试100题附答案

2017年数字IC设计工程师招聘面试笔试100 题附答案 1:什么是同步逻辑和异步逻辑?(汉王) 同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。 同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入x 有无变化,状态表中的每个状态都是稳定的。 异步时序逻辑电路的特点:电路中除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件,电路中没有统一的时钟,电路状态的改变由外部输入的变化直接引起。 2:同步电路和异步电路的区别: 同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。 异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,只有这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步。 3:时序设计的实质: 时序设计的实质就是满足每一个触发器的建立/保持时间的要求。

4:建立时间与保持时间的概念? 建立时间:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。 保持时间:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间。 5:为什么触发器要满足建立时间和保持时间? 因为触发器内部数据的形成是需要一定的时间的,如果不满足建立和保持时间,触发器将进入亚稳态,进入亚稳态后触发器的输出将不稳定,在0和1之间变化,这时需要经过一个恢复时间,其输出才能稳定,但稳定后的值并不一定是你的输入值。这就是为什么要用两级触发器来同步异步输入信号。这样做可以防止由于异步输入信号对于本级时钟可能不满足建立保持时间而使本级触发器产生的亚稳态传播到后面逻辑中,导致亚稳态的传播。 (比较容易理解的方式)换个方式理解:需要建立时间是因为触发器的D端像一个锁存器在接受数据,为了稳定的设置前级门的状态需要一段稳定时间;需要保持时间是因为在时钟沿到来之后,触发器要通过反馈来锁存状态,从后级门传到前级门需要时间。 6:什么是亚稳态?为什么两级触发器可以防止亚稳态传播?

数字IC设计工具介绍

COMPOSER - CADENCE 逻辑图输入 这个工具主要针对中小规模的ASIC以及MCU电路的逻辑设计,大的东西可能需要综合了。虽然现在电路越设计越大,有人言必称SYNOPSYS,但只要仔细到市场上端详一下,其实相当大部分真正火暴卖钱的东西还是用CADENCE的COMPOSER加VIRTUOSO加VERILOG—XL加DRACULA流程做的。原因很简单,客户可不买你什么流程的帐,什么便宜性能又好就买什么。备用PC上的工具:WORKVIEW OFFICE DC - SYNOPSYS 逻辑综合 这个不用说了,最经典的。但老实说在我们现在的设计流程里用得还不多,最关键问题还是一个市场切入问题。备用工作站上的工具:AMBIT,这个工具其实很不错,它和SE都是CADENCE出的,联合起来用的优势就很明显了。PC上用的备用工具可以选NT版的SYNOPSYS,SYNPILIFY也不错,但主要是用做FPGA综合的。其实最终你拿到的库有时最能说明问题,它不支持某工具,转换?急吧。 VIRTUOSO - CADENCE 版图设计 这个大家比较熟了,但个人还是喜欢用PC上的TANNER。原因是层与层之间的覆盖关系用调色的模式显示出来比直接覆盖显示就是舒服。可惜人家老大,国产的《熊猫》也学了这个模式。倒是以前有个COMPASS,比较好用,可惜现在不知哪去了。 SE - CADENCE 自动布局布线 有了它,很多手工版图的活儿就可以不用做的,实在是一大进步。可惜残酷市场上如果规模不大的东西人家手画的东西比你自动布的小40%,麻烦就大了。APOLLO用的人还不是很多吧。PC上的TANNER 据说也能做,针对线宽比较粗,规模不太大的设计。 VERILOG—XL - CADENCE 逻辑仿真 VERILOG就是CADENCE的发明,我们的版本比较老,现在该工具是不是停止开发了?CADENCE 新推都叫NC-VERILOG。SYNOPSYS的VCS是不是比NC强,反正两公司喊的挺凶,哪位对这个两个东西都比较了解,不妨对比一下。PC上的Model Sim也很不错。我一直觉得仿真是数字逻辑设计的核心,DEGUG 靠脑子和手推是不够用的。可惜往往有时候还不能过分依赖仿真结果,因为一些因素还是不能完全包罗进去。如果哪天真的仿真完芯片就必定OK了,做芯片的乐趣也没了。 DRACULA - CADENCE LVS、DRC、ERC、LPE 虽然比较老,已经成了CADENCE搭售的产品,但是经典了。 STAR—SIM - SYNOPSYS(原A VANT!)后仿真 如果你对小规模的电路不放心(尤其是自建库的设计),用这个做一次FULL-CHIP的后仿真,问题就不大了。还有一个是查电路的故障,一个芯片所有逻辑设计都对的,东西就出不来,可以针对性的仿真内部的关键信号。不看过就不知道,其实内部信号的传输远不如你在数字仿真时漂亮。 以上都是传统工具,还有好多新出的工具,因为只是停留在概念基础上,不敢评论了。 以下是几个硬件工具: 示波器、信号发生器、逻辑分析仪: 尤其是逻辑分析仪,查找硬件故障,甚至分析简单的通讯协议,好东西。

synopsys数字前后端设计流程

synopsys数字前后端设计流程 数字前端设计流程(synopsys)流程 1. 设计输入1) 设计的行为或结构描述。2) 典型文本输入工具有UltraEdit- 32 和Editplus.exe.。3) 典型图形化输入工具-Mentor 的Renoir。 2. 代码调试1) 对设计输入的文件做代码调试,语法检查。2) 典型工具为Debussy。 3.前仿真1)功能仿真2)验证逻辑模型(没有使用时间延迟)。 4.综合1)把设计翻译成原始的目标工艺2) 最优化3) 合适的面积要求和性能要求 5. 布局和布线1) 映射设计到目标工艺里指定位置2) 指定的布线资源应被使用3) 采用Altera 公司的QuartusII 和MaxplusII、Xilinx 公司的ISE 和Foudation 布局和布线 6.后仿真1)时序仿真2) 验证设计一旦编程或配置将能在目标工艺里工作(使用时间延迟)3)所用工具同前仿真所用软件。 7. 时序分析 8. 验证合乎性能规范1) 验证合乎性能规范,如果不满足,回到第一步。 9. 版图设计1) 验证版版图设计。2) 在板编程和测试器件。 数字后端设计流程 1. 数据准备Foundry 厂提供的标准单元、宏单元和I/O Pad 的库文件,它包括物理库、时序库及网表库,分别以.lef、.tlf 和.v 的形式给出。前端的芯片设 计经过综合后生成的门级网表,具有时序约束和时钟定义的脚本文件和由此产 生的.gcf 约束文件以及定义电源Pad 的DEF 文件。 2. 布局规划。主要是标准单元、I/O Pad 和宏单元的布局。 3. Placement -自动放置标准单元 4. 时钟树生成(CTSClock tree synthesis)时钟网络及其上的缓冲器构成了时钟树。

IC设计流程及工具

[FPGA/CPLD]典型的FPGA设计流程 skycanny 发表于 2005-12-8 22:17:00 转自EDA专业论坛作者:lixf 1.设计输入 1)设计的行为或结构描述。 2)典型文本输入工具有UltraEdit-32和Editplus.exe.。

3)典型图形化输入工具-Mentor的Renoir。 4)我认为UltraEdit-32最佳。 2.代码调试 1)对设计输入的文件做代码调试,语法检查。 2)典型工具为Debussy。 3.前仿真 1)功能仿真 2)验证逻辑模型(没有使用时间延迟)。 3)典型工具有Mentor公司的ModelSim、Synopsys公司的VCS和VSS、Aldec公司的Active、Ca dense公司的NC。 4)我认为做功能仿真Synopsys公司的VCS和VSS速度最快,并且调试器最好用,Mentor公司的ModelSim对于读写文件速度最快,波形窗口比较好用。 4.综合 1)把设计翻译成原始的目标工艺 2)最优化 3)合适的面积要求和性能要求 4)典型工具有Mentor公司的LeonardoSpectrum、Synopsys公司的DC、Synplicity公司的Synp lify。 5)推荐初学者使用Mentor公司的LeonardoSpectrum,由于它在只作简单约束综合后的速度和面积最优,如果你对综合工具比较了解,可以使用Synplicity公司的Synplify。 5.布局和布线 1)映射设计到目标工艺里指定位置 2)指定的布线资源应被使用 3)由于PLD市场目前只剩下Altera,Xilinx,Lattice,Actel,QuickLogic,Atmel六家公司,其中前5家为专业PLD公司,并且前3家几乎占有了90%的市场份额,而我们一般使用Altera,Xilinx公司的PLD居多,所以典型布局和布线的工具为Altera公司的Quartus II和Maxplus II、Xilinx公司的ISE和Foudation。 4)Maxplus II和Foudation分别为Altera公司和Xilinx公司的第一代产品,所以布局布线一般使用Quartus II和ISE。 6.后仿真 1)时序仿真 2)验证设计一旦编程或配置将能在目标工艺里工作(使用时间延迟)。 3)所用工具同前仿真所用软件。 7.时序分析 4)一般借助布局布线工具自带的时序分析工具,也可以使用Synopsys公司的 PrimeTime软件和Mentor Graphics公司的Tau timing analysis软件。 8.验证合乎性能规范 1)验证合乎性能规范,如果不满足,回到第一步。 9.版图设计 1)验证版版图设计。

数字后端流程一【Design Compile】实例笔记

DC 综合 DC 又称为设计综合将设计的RTL代码综合成门级网表的过程。 在DC 流程中一般要经过以下几个步骤,以项目A为例做如下分析: 1】在项目子目录下创建DC文件夹,在DC文件夹下分别创建db in lib_syn log netlist rpt和script 文件夹以及一个makefile 文件用来运行DC 脚本。 2】第二步就是复制相应工艺技术库文件到lib_syn ,一般有2种文件各3个分别包括了typical worst 和best情况,一类是db,文件一类是lib 文件也可以在lc_shell 下读取lib 得到相应的db文件。 3】第三步将需要综合的设计RTL代码(Verilog 文件)复制到in 文件夹 4】第四步在script 创建综合脚本,脚本创建过程将在后面介绍 5】第五步编写运行脚本的makefile 文件 6】第六步运行脚本而后查看综合报告,是否有违例现象出现,如果有修改脚本加以修复直到最终通过设计。 注意另外的几个文件夹作用db文件夹存放DC综合生成的项目db文件,综合网表输出到netlist 文件夹,综合程序运行报告存放在log文件夹中,而综合结果的数据报告则存放在rpt 文件夹中。 DC脚本的编写(A.scr) DC综合脚本基本上有几大部分组成 1】定义综合环境中命名规则(分别对net cell port 命名) define_name_rules verilog –casesensitive define_name_rules verilog –type net –allowed “a-z A-Z 0-9 _ ” \ -first_restricted “ _ 0-9 N ” \ -replacement_char “_” \ -prefix “n” define_name_rules verilog –type cell –allowed “a-z A-Z 0-9 _ ” \ -first_restricted “ _ 0-9 ” \ -replacement_char “_” \ -prefix “u” define_name_rules verilog –type port –allowed “a-z A-Z 0-9 _ ” \ -first_restricted “ _ 0-9 ” \ -replacement_char “_” \ -prefix “p” 2】综合环境的建立 指明库所在的位置 Search_path = { lib_syn/db } 指定综合所需目标库一般选用最恶劣情况worst 库作目标库

数字ic设计经验分享

摘要:随着数字电路设计的规模以及复杂程度的提高,对其进行设计所花费的时间和费用也随之而提高。根据近年来的统计,对数字系统进行设计所花的时间占到了整个研发过程的60%以上。所以减少设计所花费的实践成本是当前数字电路设计研发的关键,这就必须在设计的方法上有所突破。 关键词:数字系统;IC;设计 一、数字IC设计方法学 在目前CI设计中,基于时序驱动的数字CI设计方法、基于正复用的数字CI设计方法、基于集成平台进行系统级数字CI设计方法是当今数字CI设计比较流行的3种主要设计方法,其中基于正复用的数字CI设计方法是有效提高CI设计的关键技术。它能解决当今芯片设计业所面临的一系列挑战:缩短设计周期,提供性能更好、速度更快、成本更加低廉的数字IC芯片。 基于时序驱动的设计方法,无论是HDL描述还是原理图设计,特征都在于以时序优化为目标的着眼于门级电路结构设计,用全新的电路来实现系统功能;这种方法主要适用于完成小规模ASIC的设计。对于规模较大的系统级电路,即使团队合作,要想始终从门级结构去实现优化设计,也很难保证设计周期短、上市时间快的要求。 基于PI复用的数字CI设计方法,可以满足芯片规模要求越来越大,设计周期要求越来越短的要求,其特征是CI设计中的正功能模块的复用和组合。采用这种方法设计数字CI,数字CI包含了各种正模块的复用,数字CI的开发可分为模块开发和系统集成配合完成。对正复用技术关注的焦点是,如何进行系统功能的结构划分,如何定义片上总线进行模块互连,应该选择那些功能模块,在定义各个功能模块时如何考虑尽可能多地利用现有正资源而不是重新开发,在功能模块设计时考虑怎样定义才能有利于以后的正复用,如何进行系统验证等。 基于PI复用的数字CI的设计方法,其主要特征是模块的功能组装,其技术关键在于如下三个方面:一是开发可复用的正软核、硬核;二是怎样做好IP复用,进行功能组装,以满足目标CI的需要;三是怎样验证完成功能组装的数字CI是否满足规格定义的功能和时序。 二、典型的数字IC开发流程 典型的数字CI开发流程主要步骤包含如下24方面的内容: (1)确定IC规格并做好总体方案设计。 (2)RTL代码编写及准备etshtnehc代码。 (3)对于包含存储单元的设计,在RTL代码编写中插入BIST(内建自我测试)电路。 (4)功能仿真以验证设计的功能正确。 (5)完成设计综合,生成门级网表。 (6)完成DFT(可测试设计)设计。 (7)在综合工具下完成模块级的静态时序分析及处理。 (8)形式验证。对比综合网表实现的功能与TRL级描述是否一致。 (9)对整个设计进行Pre一layout静态时序分析。 (10)把综合时的时间约束传递给版图工具。 (11)采样时序驱动的策略进行初始化nooprlna。内容包括单元分布,生成时钟树 (12)把时钟树送给综合工具并插入到初始综合网表。 (13)形式验证。对比插入时钟树综合网表实现的功能与初始综合网表是否一致。 (14)在步骤(11)准布线后提取估计的延迟信息。 (15)把步骤(14)提取出来的延迟信息反标给综合工具和静态时序分析工具。 (16)静态时序分析。利用准布线后提取出来的估计延时信息。

数字IC设计学习路线

数字IC必读书籍 本文将从简单到复杂的顺序依次列出数字IC设计需要阅读的书籍。 1、数字电路基础 数字IC设计最基础的书籍了,相关书籍比较多,可以随意挑选:主要是为了弄清楚与或门电路,触发器、译码器、脉冲产生、逻辑化简等待。 读书策略: 用时短、打基础、必读 认真阅读、把书中的习题都做一遍、每章节重点必须要掌握。 书籍选择: 数字电路与系统(第3版)戚金清,王兢编 2、《数字集成电路--电路、系统与设计》 经典书籍:畅销书、本书详细地介绍了MOS管原理、CMOS组合逻辑、时序逻辑、加法器乘法器等运算单元、存储结构、以及时序、互连、电路寄生效应,包含充分的理论分析和电路结构图。掌握此书能为数字IC设计打下非常坚固的基础。 读书策略:非常重要、堪称数字IC设计基石、慢慢研读---基础书籍此书耗时较长,不必一口气看完,慢慢研读即可、掌握其中的理论知识、理论推导不必非常了解,能够知道公式的结论即可。 3、《Verilog数字系统设计教程(第4版)》 Verilog语言学习经典书籍,教你学会使用Verilog编写电路,实现

常见功能。Verilog是IC设计必须掌握的语言、常备此书,时常查阅。 读书策略:必读、时常查阅----基础书籍 第一遍可以快速阅读、知道知识点含义以及相应的位置、忘记的时候翻一翻书籍。 4、《Verilog编程艺术》 本书介绍了大量verilog实现实例、包含计算单元、分频电路、状态机等,并且介绍了verilog设计的良好习惯,可以称之为初学者的Verilog规范与素材库。 读书策略:verilog进阶书籍、常备---进阶书籍 对于初学者来说,此书很使用,Verilog数字系统设计教程知识介绍了verilog的设计语法与少量实例,此书能够帮助我们更扎实的掌握verilog语言、能够教会我们如何使用verilog语言设计电路。 5、《专用集成电路设计实用教程》 此书介绍了集成电路设计的整个流程,其中重点介绍了综合原理、电路优化、最后还介绍了后端各流程的知识点。学完此书,对电路设计流程以及综合原理、建立时间、保持时间等知识点会有深刻的了解。读出策略:系统而全面的书籍,有助于个人提升--基础书籍 6、《SOC设计方法与实现》

IC设计流程

大体是 1. 首先是使用HDL语言进行电路描述,写出可综合的代码。然后用仿真工具作前仿真, 对理想状况下的功能进行验证。这一步可以使用Vhdl或Verilog作为工作语言,EDA工具 方面就我所知可以用Synopsys的VSS(for Vhdl)、VCS(for Verilog)Cadence的工具也就是著名的Verilog-XL和NC Verilog 2.前仿真通过以后,可以把代码拿去综合,把语言描述转化成电路网表,并进行逻辑和 时序电路的优化。在这一步通过综合器可以引入门延时,关键要看使用了什么工艺的库 这一步的输出文件可以有多种格式,常用的有EDIF格式。 综合工具Synopsys的Design Compiler,Cadence的Ambit 3,综合后的输出文件,可以拿去做layout,将电路fit到可编程的片子里或者布到硅片上 这要看你是做单元库的还是全定制的。 全定制的话,专门有版图工程师帮你画版图,Cadence的工具是layout editor 单元库的话,下面一步就是自动布局布线,auto place & route,简称apr cadence的工具是Silicon Ensembler,Avanti的是Apollo layout出来以后就要进行extract,只知道用Avanti的Star_rcxt,然后做后仿真 如果后仿真不通过的话,只能iteration,就是回过头去改。 4,接下来就是做DRC,ERC,LVS了,如果没有什么问题的话,就tape out GDSII 格式的文件 送制版厂做掩膜板,制作完毕上流水线流片,然后就看是不是work了 做DRC,ERC,LVSAvanti的是Hercules,Venus,其它公司的你们补充好了 btw:后仿真之前的输出文件忘记说了,应该是带有完整的延时信息的设计文件如:*.VHO,*.sdf RTL->SIM->DC->SIM-->PT-->DC---ASTRO--->PT----DRC,LVS--->TAPE OUT 1。PT后一般也要做动态仿真,原因:异步路径PT是做不了的 2。综合后加一个形式验证,验证综合前后网表与RTL的一致性 3。布版完成后一般都会有ECO,目的手工修改小的错误 SPEC->ARCHITECTURE->RTL->SIM->DC->SIM-->PT-->DC---ASTRO--->PT----DRC, LVS--->TAPE OUT SPEC:specification,在进行IC设计之前,首先需要对本IC的功能有一个基本的定义。 ARCHITECTURE:IC的系统架构,包括算法的设计,算法到电路的具体映射,电路的具体实现方法,如总线结构、流水方式等。 在IC前端的设计中,ARCHITECTURE才是精华,其他的大部分都是EDA工具的使用,技术含量不高。

后端设计流程

后端设计流程 ASIC/SoC后端设计作业流程剖析 Toshiba(美国) 秦晓凌 Trident(上海) 潘中平 关键词place route DSM megacell clock_tree STA OPT ECO 引言众所周知,ASIC产品是从用硬件描述语言(verilog HDL,VHDL)开始进行数字逻辑电路设计的,经过相关的仿真、综合出门级网表、验证直至完成电路布局布线并优化,最终经流片成功形成的芯片产品。随着中国经济的持续稳定地增长,国内生产厂家对IC需求增长势头强劲与自身设计IC能力薄弱的突出矛盾已经被国家和企业认识。为了缓解这一矛盾并更多地实现IC自主设计,近两年国内陆续出现了一些著名的传统通信系统厂商设立的IC设计队伍,以及归国留学人员领头创办的创业型IC设计公司,他们大多数有相当强的前端设计能力,但在IC后端设计领域的实践经验还较欠缺。在完成前端逻辑设计综合出门级网表后,真正能做好后端设计的公司还不多,有的则通过委托设计服务的方式完成后端布局布线及流片。本文 作者有多年从事覆盖前后端IC设计全流程并有每年几次成功流片数百万门级深亚微米SoC的经验,并担任IC设计的项目管理工作,对国外大公司的设计流程十分熟悉,并愿意就积累的经验与国内同行分享交流,以利于国内IC设计水平的提高。本文着重介绍国内设计公司薄弱的后端设计,介绍其流程并对在设计过程中的关键步骤进行一些讨论。传统的后端设计流程指的是从门级网表(gate level netlist)开始的,根据设计要求的不同,后端流程可以分为扁平流程(flat flow)和层次化流程(hierarchy flow)两种,在深亚微米 DSM(deep sub-micron)领域,又增加了布局加逻辑合成的前后端合二为一的扁平流程(flat flow)和分层流程(hierarchy flow)。我们首先介绍传统的两种后端流程。前后端合一的流程将作为另一个专题在以后讨论。 一、扁平流程(Flat flow)介绍 最简单的后端设计是扁平(flat)流程,一般四百万门以下的设计均可使用这一流程。芯片设计的最高境界是设计完成后一次性投片(Tape Out)成功,这一成功必须建立在正确的前端电路逻辑设计和科学合理及高效的后端布局布线上,要想获得最后的成功,设计阶段就来不得带有半点的侥幸心态,否则就算在电路功能上满足设计要求,在参数性能上的任何失误也是导致返工的重要因素。因此,后端设计阶段很难保证一遍成功,走几个来回是常事,要期望在最终投片时一次成功,就需要在设计阶段多下工夫。我们不妨给这些大循环起个名字,第一轮叫试验(trial),第二轮叫首次签收(first Sign Off), 第三轮叫最后签收(final Sign Off),每轮包括的前后端设计主要任务和结果如表一所示。不同的循环应该有不同的侧重点,为了节省时间,这些大循环还应该尽可能安排前后端设计同步进行。 Trial:80%模块设计完成数据库准备,流程确认,流程运行中问题的解决,主要设计数据(芯片大小,总体布局,大体时序)的可行性确认 First Sign Off:100%设计,DFT,I/O完成数据库已确定,时序收敛基本完成,没有大的拥塞(congestion) Final Sign Off:最后细小的功能修改,时序收敛所有时序和布局布线问题解决

相关主题
文本预览
相关文档 最新文档