IC设计后端流程(初学必看)
- 格式:doc
- 大小:1.84 MB
- 文档页数:36
基本后端流程(漂流&雪拧)----- 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,如果通过,则进入下一步。
ic设计流程的先后顺序IC设计流程的先后顺序可以分为以下几个步骤:1.定义设计规格:在开始IC设计之前,需要明确这个芯片的设计规格和需求。
这包括确定芯片的功能、性能要求、功耗、工作频率等等。
设计规格的准确定义对后续设计步骤非常重要。
2.系统级设计:在系统级设计阶段,设计人员会将整个系统的功能进行划分和定义,确定各个模块之间的接口和通信方式。
这一阶段还可能包括算法设计和建立性能模型等。
3.架构设计:架构设计进行具体芯片内部功能的划分和组织。
设计人员需要根据功能要求和非功能要求,确定芯片中各个模块的划分,并建立模块之间的逻辑结构和通信方式。
4. 逻辑设计:在逻辑设计阶段,设计人员主要负责将功能要求转化为数字逻辑电路。
这一阶段的主要任务是使用硬件描述语言(如Verilog或VHDL)来描述各个功能模块的功能,然后对这些模块进行综合、优化和验证。
5.线路和物理设计:线路设计包括电路设计、布局设计和布线设计。
电路设计是指将逻辑电路转化为物理电路,包括选择和设计电路的各个组成部分,如逻辑门、触发器等。
布局设计是指确定电路中各个元件的位置和相互关系。
布线设计是将元件之间连接的路径进行规划和优化。
6.设计验证:设计验证是确保设计工作符合规格要求的一个重要步骤。
在设计验证中,设计人员使用仿真工具来验证设计的正确性,并进行功能验证、时序验证和功耗验证等。
这一步骤帮助设计人员发现和修复设计中的错误和问题。
7.物理验证:物理验证主要是为了保证物理设计的正确性,并确保设计在布局和布线阶段的实现是否满足规定的约束和特定的目标。
物理验证通常包括设计规则检查(DRC)、布局与尺寸规则检查(LVS)、电器规则检查(ERC)等。
8.仿真和验证:设计完成后,需要对芯片进行全面的仿真和验证以确保芯片的正确性和性能。
这包括行为仿真、时序仿真、功耗仿真等。
9.制造准备:制造准备是确定制造芯片所需的流程、工艺和设备,并生成相应的工艺文件和掩模文件。
1.1从RTL到GDSⅡ的设计流程:
这个可以理解成半定制的设计流程,一般用来设计数字电路。
整个流程如下(左侧为流程,右侧为用到的相应EDA工具):
一个完整的半定制设计流程应该是:RTL代码输入、功能仿真、逻辑综合、门级验证、时序/功耗/噪声分析,布局布线(物理综合)、版图验证。
整个完整的流程可以分为前端和后端两部分,
前端的流程图如下:
前端的主要任务是将HDL语言描述的电路进行仿真验证、综合和时序分析,最后转换成基于工艺库的门级网表。
后端的流程图如下,也就是从netlist到GDSⅡ的设计流程:
后端的主要任务是:
(1)将netlist实现成版图(自动布局布线APR)
(2)证明所实现的版图满足时序要求、符合设计规则(DRC)、layout与netlist一致(LVS)。
(3)提取版图的延时信息(RC Extract),供前端做post-layout仿真。
1.2从Schematic到GDSⅡ的设计流程:
这个可以理解成全定制的设计流程,一般用于设计模拟电路和数模混合电路。
整个流程如下(左侧为流程,右侧为用到的相应EDA工具):
一个完整的全定制设计流程应该是:电路图输入、电路仿真、版图设计、版图验证(DRC和LVS)、寄生参数提取、后仿真、流片。
IC设计的前端和后端(转)问题:我是刚刚接触这⽅⾯不久,所以迫切想了解⼀下: 1.什么是⼤家常说的IC前端设计和后端设计?他们之间的区别是什么? 2.做前端设计和后端设计需要掌握哪些最基本的⼯具和知识呢?⽐如多⼿机或者其他娱乐型电⼦产品上的IC设计. 3.对于不太精通编程,但对数字和模拟电路有⼀定基础的⼈是适合做前端,还是后端呢?整理的回帖如下:⾸先,我不算是⾼⼈,不过前,后端都有接触,我就⼤概回答⼀下吧,有说的不对的地⽅,请⾼⼈指正。
1,前端主要负责逻辑实现,通常是使⽤verilog/VHDL之类语⾔,进⾏⾏为级的描述。
⽽后端,主要负责将前端的设计变成真正的schematic&layout,流⽚,量产。
打个⽐喻来说,前端就像是做蓝图的,可以功能性,结构性的东西。
⽽后端则是将蓝图变成真正的⾼楼。
2,前端设计主要是进⾏功能设计,代码的编写,要会使⽤硬件描述语⾔,也就是上⾯有提到的verilog/VHDL等,当然,也会要使⽤⼀些仿真软件。
后端设计需要的则会更加多⼀些了,包括综合,到P&R,以及最后的STA,这些⼯具⾥candence和synopsys都有⼀整套系统的。
有关⼼的可以去他们的⽹站看看。
3,其实前端和后端对于编程没有特别的要求。
前端的设计会需要使⽤硬件描述语⾔来写代码,但是,需要注意的是,这⾥指的是"描述",⽽不像是C或者java之类的强调编程技巧啊什么的。
所以,这个选择就看你⾃⼰了,⽽与编程没有什么特别的关系了。
glclub 后端設計主要要求哪些技能呢?譬如在ic layout過程中要求那些軟件呢?:包括综合,到P&R,以及最后的STA ,这些是我上⾯的提到的,各个公司根据需要,还会有不同的其它的要求。
另外,我不是特别清楚你指的"ic layout"是什么概念,P&R的话有candence soc-encounter /synopsys Astro,⼿⼯的话,有candence virtuoso。
IC设计后端流程1. 物理设计(Physical Design):物理设计是将逻辑实现转化为布局和电路图的过程。
这个过程包括几个重要的步骤:-针对不同目标和约束进行电气特性分析和规划。
-进行物理分区和布局设计,在芯片上规划各个模块的位置和大小,并控制电路的连线密度和线长。
-进行电源网络设计,确保芯片内部各个模块的电源供应稳定。
-进行时序和容忍度等电性约束的分析和完成。
- 进行时序收敛(Timing Closure),优化电路以达到时序要求。
-进行时钟树设计和布线,确保时钟信号的传输稳定性和可靠性。
-进行信号连线布线,满足电性约束并最小化线长,以减小功耗、提高性能和降低突发噪声。
- 进行DRC(Design Rule Check)和LVS(Layout vs Schematic)等验证。
2. 标准细胞库设计(Standard Cell Library Design):标准细胞库是一组预先设计好的、可重复使用的、具有标准接口的逻辑门和存储器单元的集合。
在这个过程中,需要:-设计标准细胞的逻辑和物理结构,以及相应的特性和工艺库。
-进行标准细胞的电源和地设计,以提供正确的电源和地连接接口。
-进行标准细胞的物理特性模拟和验证,以确保其满足设计要求。
3. 物理验证(Physical Verification):物理验证是对物理设计结果进行各种检查的过程,以确保设计的正确性、规范性和可制造性。
主要包括以下环节:-设计规则检查(DRC):检查设计是否符合制造厂商的设计规则,包括线宽、线距、开孔等。
-电路规则检查(ERC):检查设计是否符合电路连接和功能规则,包括电压等级、电压偏置等。
-布局与原理图一致性检查(LVS):检查布局和电路图是否一致。
-容忍度分析和优化:分析设计中的容忍度并进行优化,以提高电路的可靠性和稳定性。
-功耗分析和优化:分析设计中的功耗并进行优化,以减小芯片的功耗。
-可制造性分析:分析设计是否可制造,并针对可制造性问题进行修复。
IC后端流程物理设计是指将逻辑设计的电路转化为实际的二维或三维布局,并进行时序分析和电源规划等工作。
物理设计流程主要包括:1. 高层综合(High-Level Synthesis):将逻辑设计中的高级语言描述(比如Verilog或VHDL)转化为RTL级(Register Transfer Level)的电路描述。
2. 逻辑综合(Logic Synthesis):将RTL级电路描述转换为门级(Gate-Level)的逻辑网表,实现逻辑优化以精简电路规模和提高性能。
3.时序约束:在逻辑综合的基础上,制定时序约束,包括时钟频率、输入输出时序、时钟分频等,以保证电路的正确功能和时序性能。
4. 布局设计(Layout Design):将门级逻辑网表进行物理布局,确定电路中各个元件(比如门、寄存器)的相对位置和连线的走向,以满足电路的性能、功耗和几何约束。
5. 连线设计(Routing Design):根据布局设计结果,进行连线布线,包括选择连线层次、路由器设置、连线规则等,以确保电路的连接和稳定性。
6. 特殊器件布局(Placement of Special Devices):针对一些特殊性能要求的电路元件,进行专门的布局设计和优化,以实现电路性能的最佳化。
验证是指对设计的逻辑正确性、时序性能和功能进行验证和检查。
验证流程主要包括:1. 仿真测试(Simulation Testing):通过对设计的逻辑电路进行仿真验证,对设计进行功能和性能的测试,以保证电路的正确性和稳定性。
2. 时序分析和优化(Timing Analysis and Optimization):对电路设计进行时序分析,确定时钟频率、数据传输速率、时钟延迟等,以优化电路的时序性能。
3. 功耗分析和优化(Power Analysis and Optimization):对电路设计进行功耗分析,确定功耗峰值、功耗分布、功耗控制等,以优化电路的功耗性能。
ic设计流程
IC设计(Integrated Circuit Design)是指将电子元器件和电路集成到单个芯片上的过程。
它经历了几个主要的流程,包括前端设计、物理设计和后端设计。
以下是每个流程的详细介绍:
前端设计流程:
前端设计流程是指在编写RTL代码后,将其转换为物理设计中的网表(Netlist)的过程。
这是芯片设计过程中的第一步。
此流程包括各种步骤,如功能验证、RTL设计、综合、时序分析和设计约束。
物理设计流程:
物理设计流程是指将RTL代码(硬件描述语言)转换为芯片的物理结构的过程。
这涉及到的主要任务包括物理验证、布局设计、时钟设计、布线和静态时序分析等。
后端设计流程:
后端设计流程是指在芯片物理结构设计后,进行后续的电路细节设计、验证和优化的过程。
该过程包括各种步骤,如电路模拟、电路提取、电路优化、时序确认和信号完整性验证等。
综上所述,IC设计流程是一个复杂的过程,需要经过多个阶段的设计和验证。
仔细规划和执行这些流程,可以确保芯片能够满足性能和可靠性方面的要求,同时也可以提高设计效率和降低开发成本。
芯片后端开发基础知识
芯片后端开发基础知识包括以下内容:
1.芯片设计流程:芯片后端开发是芯片设计流程中的最后一步,主要包括物理设计、逻辑合成、时序收敛和功耗优化四个阶段。
2.物理设计:物理设计是指根据芯片的逻辑设计,将电路图形
状信息转换为与制造工艺相适应的具体布局和元件尺寸。
物理设计包括芯片的布局与布线、时钟树设计、功耗分析等。
3.逻辑合成:逻辑合成是将芯片的高层抽象电路设计转换为门
级电路网表的过程。
通过逻辑合成,可以将设计语言描述的电路逻辑转换成标准的门级电路网表,为后续物理设计提供输入。
4.时序收敛:时序收敛是指保证芯片内各个时序约束得以满足
的过程。
通过时序收敛,可以保证芯片在各种工作条件下均能正常工作。
5.功耗优化:芯片功耗优化是指通过各种手段降低芯片的功耗,包括电源管理、电路设计、时钟树设计等。
功耗优化旨在提高芯片的功耗效率和续航时间。
6.物理验证:物理验证是对芯片物理设计的可靠性和正确性进
行验证的过程。
物理验证主要包括电路规则检查、布局vs原
理图符合性检查、电气规则检查等。
7.设计规则:芯片后端开发涉及到各种设计规则,包括电路规
则、布局规则、布线规则、时序约束等。
设计规则旨在保证芯片的可靠性和一致性。
8.EDA工具:芯片后端开发通常使用多种EDA(Electronic Design Automation)工具,包括逻辑合成工具、物理设计工具、时序分析工具、布局工具等。
这些工具可以实现芯片后端开发的各个环节。
以上是芯片后端开发的基础知识,对于从事芯片设计和开发的人员来说,掌握这些知识是非常重要的。
基本后端流程(漂流&雪拧)----- 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,如果通过,则进入下一步。
基本后端流程(漂流&雪拧)----- 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,如果通过,则进入下一步。
数字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)流程,一般四百万门以下的设计均可使用这一流程。
数字IC后端设计实现流程之initialdesign1.好了,下面直接进入今天的主题。
前端提供的文件•门级网表(Gate Level Netlist)数字前端工程师或者是R2N的同事在release 东西给后端工程师做PR时,一定会release 一个门级网表,这个netlist是基于RTL或者gtech文件进行逻辑综合后产生的一个门级网表。
这个网表包含了当前block的所有sub-module,通过hierarchy的调用方式,最后有个顶层的设计,这个顶层名字就是我们所说的设计module名字。
另外还有指出了block有哪些输入端口,输出端口,block中用到了标准单元库中的那些cell。
•时序约束文件(Timing Constraint)时序约束文件在整个数字IC设计过程的作用是一样的。
它都是guide 工具基于某个特定的目标去做逻辑和时序的优化。
一个时序约束文件都需要含有以下几个部分:Crete_clock –name CLK -period 10 [get_ports clk]Set_clock_uncertainty -setup 0.1 [all_clocks]Set_max_transition –max 0.2 [current_design]Set_max_transition 0.1 -clock CLKSet load 50 [all_outputs]Set_max_fanout 40 [current_design]Set_dont_touch $cellsSet_input_delay –clock -max [get_ports **]Set_input_delay –clock -min [get_ports **]Set_output_delay -clock -max [get_ports **]Set_output_delay -clock –min [get_ports **]Set_multicycle_path 3 -setup -end -from ***Set_multicycle_path 2 -hold -end -from ***Set_false_path -from ** -to **Set_clock_group –async -name ic-backend -group {A B} -group {C D}•Memory的lef文件前端工程师在compiler 对应memory的时候会产生对应的一些文件,比如LEF,DB和GDS文件等。
芯片后端开发基础知识一、引言芯片后端开发是指对芯片设计的后续步骤进行开发和优化的过程。
芯片后端开发负责将芯片设计的前端产物进行物理实现,包括布局布线、时序优化、功耗优化等工作。
本文将介绍芯片后端开发的基础知识,帮助读者了解这一领域的重要概念和技术。
二、芯片后端开发流程芯片后端开发流程一般包括以下几个阶段:物理设计、布局布线、时序优化和功耗优化。
下面将对这些阶段进行详细介绍。
1. 物理设计物理设计是芯片后端开发的第一步,主要包括以下几个方面:(1)芯片核心区域的划分:将芯片划分为多个区域,根据不同的功能和性能要求进行划分,以便进行后续的布局布线和优化。
(2)引脚规划:确定芯片的输入输出引脚的位置和布局,以保证芯片与外界的连接和通信。
(3)时钟规划:确定芯片的时钟网络的布局,以保证芯片内部各个模块的同步和协调。
(4)电源规划:确定芯片的电源网络的布局,以保证芯片的正常供电和电源噪声的控制。
2. 布局布线布局布线是芯片后端开发的核心环节,主要包括以下几个步骤:(1)布局:将芯片的各个模块按照物理设计的要求进行摆放,以保证芯片的性能和功耗要求。
(2)布线:将芯片的各个模块之间按照物理设计的要求进行连线,以保证芯片的信号传输和时序要求。
3. 时序优化时序优化是为了保证芯片在工作时能够满足时序约束和性能要求,主要包括以下几个方面:(1)时钟树优化:优化芯片的时钟网络,以保证时钟信号的稳定和时钟偏移的控制。
(2)路径优化:优化芯片中关键路径的时延,以保证芯片的工作频率和性能要求。
(3)时序收敛:通过合理的时序约束和设计方法,保证芯片的时序收敛和稳定。
4. 功耗优化功耗优化是为了降低芯片的功耗,延长芯片的续航时间,主要包括以下几个方面:(1)电源规划:通过合理的电源网络设计,降低芯片的功耗和电源噪声。
(2)逻辑优化:通过逻辑优化和综合,减少芯片中的逻辑门数量,降低功耗。
(3)时钟门控:通过合理的时钟门控设计,降低芯片的时钟功耗。
芯片后端设计芯片后端设计是IC设计过程中的最后一步,主要包括芯片版图设计、逻辑综合和物理综合三个环节。
其目的是将前端设计得到的逻辑电路转化为实际的物理布局,并确保芯片的性能、功耗和可靠性等方面的要求得到满足。
下面将对芯片后端设计的三个环节进行详细介绍。
芯片版图设计是芯片后端设计的第一步。
在此环节中,设计师根据前端设计得到的逻辑电路,将其转化为实际的物理结构。
具体来说,设计师需要确定芯片的布局,将各个模块的位置进行规划,同时需要完成电路的连线,以确保信号的传输路径尽量短,减小功耗和延迟。
此外,芯片版图设计还需要考虑引脚的位置、大小和布线,以及电源和接地等关键电路的布局和设计。
芯片版图设计需要兼顾不同的设计指标,如性能、面积和功耗等,需要进行多次布局和优化,直到满足设计要求。
逻辑综合是芯片后端设计的第二步。
在此环节中,设计师需要将前端设计得到的RTL(Register Transfer Level)描述转化为与具体库进行匹配的门级网表,以便进行后续的物理布局和布线。
逻辑综合的目标是优化芯片的性能、功耗和面积等指标。
具体来说,逻辑综合会对电路进行优化和转换,如逻辑合并、逻辑代数优化、常数传播和时序约束等操作,以减小逻辑门的数量、减小电路延迟、提高电路性能,并满足时序约束。
逻辑综合是一个关键的步骤,需要兼顾不同的设计指标,以得到满足设计要求的门级网表。
物理综合是芯片后端设计的第三步。
在此环节中,设计师将前面得到的门级网表转化为物理布局和布线。
物理综合的目标是将电路的逻辑结构转化为实际的物理结构,并进一步优化芯片的性能和功耗等指标。
具体来说,物理综合会对电路进行布局和布线,以最小化电路的面积、减小电路延迟和功耗,并且满足时序约束。
物理综合需要考虑不同的设计约束和限制,如密度约束、时序约束、电源引脚约束等,并进行布线、光学投影和曝光等操作,以得到满足设计要求的芯片物理布局。
综上所述,芯片后端设计是IC设计过程中的最后一步,主要包括芯片版图设计、逻辑综合和物理综合三个环节。
ic的前端设计和后端设计流程根据个人掌握的知识,写写自己的理解。
前端设计(也称逻辑设计)和后端设计(也称物理设计)并没有统一严格的界限,涉及到与工艺有关的设计就是后端设计。
1.规格制定芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。
2.详细设计Fabless根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。
3.HDL编码使用硬件描述语言(VHDL,Verilog HDL,业界公司一般都是使用后者)将模块功能以代码来描述实现,也就是将实际的硬件电路功能通过HDL语言描述出来,形成RTL (寄存器传输级)代码。
4.仿真验证仿真验证就是检验编码设计的正确性,检验的标准就是第一步制定的规格。
看设计是否精确地满足了规格中的所有要求。
规格是设计正确与否的黄金标准,一切违反,不符合规格要求的,就需要重新修改设计和编码。
设计和仿真验证是反复迭代的过程,直到验证结果显示完全符合规格标准。
仿真验证工具 Synopsys的VCS。
5.逻辑综合――Design Compiler仿真验证通过,进行逻辑综合。
逻辑综合的结果就是把设计实现的HDL代码翻译成门级网表(netlist)。
综合需要设定约束条件,就是你希望综合出来的电路在面积,时序等目标参数上达到的标准。
逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元(standard cell)的面积,时序参数是不一样的。
所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的。
一般来说,综合完成后需要再次做仿真验证(这个也称为后仿真,之前的称为前仿真)逻辑综合工具Synopsys的Design Compiler。
6.STAStatic Timing Analysis(STA),静态时序分析,这也属于验证范畴,它主要是在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例(violation)。
ic的前端设计和后端设计流程根据个人掌握的知识,写写自己的理解。
前端设计(也称逻辑设计)和后端设计(也称物理设计)并没有统一严格的界限,涉及到与工艺有关的设计就是后端设计。
1.规格制定芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。
2.详细设计Fabless根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。
3.HDL编码使用硬件描述语言(VHDL,Verilog HDL,业界公司一般都是使用后者)将模块功能以代码来描述实现,也就是将实际的硬件电路功能通过HDL语言描述出来,形成RTL (寄存器传输级)代码。
4.仿真验证仿真验证就是检验编码设计的正确性,检验的标准就是第一步制定的规格。
看设计是否精确地满足了规格中的所有要求。
规格是设计正确与否的黄金标准,一切违反,不符合规格要求的,就需要重新修改设计和编码。
设计和仿真验证是反复迭代的过程,直到验证结果显示完全符合规格标准。
仿真验证工具 Synopsys的VCS。
5.逻辑综合――Design Compiler仿真验证通过,进行逻辑综合。
逻辑综合的结果就是把设计实现的HDL代码翻译成门级网表(netlist)。
综合需要设定约束条件,就是你希望综合出来的电路在面积,时序等目标参数上达到的标准。
逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元(standard cell)的面积,时序参数是不一样的。
所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的。
一般来说,综合完成后需要再次做仿真验证(这个也称为后仿真,之前的称为前仿真)逻辑综合工具Synopsys的Design Compiler。
6.STAStatic Timing Analysis(STA),静态时序分析,这也属于验证范畴,它主要是在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例(violation)。
基本后端流程(漂流&雪拧)----- 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,如果通过,则进入下一步。
芯片后端开发基础知识芯片后端开发是指在芯片设计的最后阶段,通过将设计转化为实际的芯片布局和电路连接,完成芯片的生产。
本文将从几个方面介绍芯片后端开发的基础知识。
一、芯片后端开发的流程芯片后端开发的流程主要包括芯片布局、布线和物理验证三个阶段。
1. 芯片布局:芯片布局是指将芯片的各个功能模块进行合理的位置分配,以满足芯片性能和功耗的要求。
布局过程需要考虑电路的连接、信号传输的延迟和功耗等因素。
2. 布线:布线是指根据芯片布局的结果,将各个功能模块之间的电路连接起来。
布线过程需要考虑信号传输的延迟、噪声和功耗等因素,以实现芯片设计的性能要求。
3. 物理验证:物理验证是指对芯片的布局和布线结果进行验证,确保芯片在物理层面上能够正常工作。
物理验证主要包括电气规则检查、设计规则检查和电磁兼容性分析等。
二、芯片后端开发的工具在芯片后端开发过程中,需要使用一些专门的EDA(Electronic Design Automation)工具来辅助设计和验证。
1. 布局工具:布局工具可以帮助设计师将芯片的功能模块进行位置分配,并优化布局以满足性能和功耗要求。
常用的布局工具有Cadence的Virtuoso和Synopsys的IC Compiler等。
2. 布线工具:布线工具可以根据给定的布局结果,将芯片的功能模块进行电路连接,并优化布线以满足性能要求。
常用的布线工具有Cadence的Innovus和Synopsys的IC Compiler等。
3. 物理验证工具:物理验证工具可以对芯片的布局和布线结果进行各种检查和分析,确保芯片在物理层面上能够正常工作。
常用的物理验证工具有Cadence的Assura和Synopsys的StarRC等。
三、芯片后端开发的基本原理芯片后端开发的基本原理是在保证电路功能正确的前提下,最大限度地提高芯片性能和降低功耗。
为了实现这一目标,需要注意以下几点:1. 布局规则:布局规则是指在芯片布局过程中需要遵循的一些规则,如电源和地线的布局、时钟树的布局和功耗分布等。
基本后端流程(漂流&雪拧)----- 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步1.逻辑综合1)设计的8*8verilog代码如下module mux (clk,clr,data1,data2,dataout);input clk,clr;input [7:0] data1,data2;output reg [15:0] dataout;always (posedge clk)beginif(!clr)begindataout<=0;endelsebegindataout<=data1*data2;endendendmodule2)综合之前,我们要选取库,写好约束条件,修改dc的启动文件synopsys_dc.setup,目标库选择TSMC(此设计都是用TSMC18的库)的typical.db。
(选择max库会比较好)Dc的命令众多,但是最基本的命令差不多,此设计的约束文件命令如下:create_clock -period 10 [get_ports clk] //用于时钟的创建set_clock_latency -source -max 0.2 [get_ports clk] //外部时钟到core的clk连线延时set_clock_latency -max 0.1 [get_ports clk] //core的clk到寄存器clk端的net连线延时set_clock_uncertainty -setup 2 [get_ports clk] //时钟延时的不确定性,求setup违规时会被计算进去set_clock_uncertainty –hold 1 【all_clocks】set_input_delay -max 0.5 -clock clk[get_ports [list [remove_from_coll [all_inputs] clk] ] //输入延时,外部信号到input端的连线延时set_output_delay -max 0.5 -clock clk [all_outputs] //输出延时set_driving_cell -lib_cell INVX4 [all_inputs] //输入端的驱动强度set_load -pin_load 0.0659726 [all_outputs] //输出端的驱动力set_wire_load_model -name tsmc18_wl10 -library typical //部net的连线模型set_wire_load_mode enclosed //定义建模连线负载相关模式set_max_area 0compilereport_timingreport_constraintchange_names -rule verilog –hierset_fix_multiple_ports_net –allwrite -format verilog -hier -output mux.sv //输出网表,自动布局布线需要write -format ddc -hier -output mux.ddc //输出ddcwrite_sdf mux.sdf //输出延时文件,静态时序分析时需要write_sdc mux.sdc //输出约束信息,自动布局布线需要3)逻辑综合启动design_vision。
Read->mux.v输入约束文件。
File->excute script->verti.con之后会产生mux.sv,mux.sdc,mux.sdf,mux.ddc等文件4)时序分析综合以后我们需要分析一下时序,看时序是否符合我们的要求,综合实际上是一个setup时间的满足过程,但是我们综合的时候,连线的负载只是库提供的(即上面的wire_load),并不是实际的延时,所以一般做完综合以后,时间余量(slack)应该为时钟的30%(经验值),以便为后面实际布局布线留下充足的延时空间。
因为如果slack太小,甚至接近于0,虽然我们看起来是没有时序违规的,但是实际布局以后,时序肯定无法满足。
使用report_timing命令,可以查看时序分析报告:****************************************Report : timing-path full-delay max-max_paths 1-sort_by groupDesign : muxVersion: D-2010.03-SP1Date : Fri Jul 2 12:29:44 2010****************************************Operating Conditions: typical Library: typical(模型库)Wire Load Model Mode: enclosedStartpoint: data2[4] (input port clocked by clk)Endpoint: dataout_reg_15_(rising edge-triggered flip-flop clocked by clk)Path Group: clkPath Type: maxDes/Clust/Port Wire Load Model Library------------------------------------------------mux tsmc18_wl10 typical (线载模型及库)Point Incr Path-------------------------------------------------------------------------- clock clk (rise edge) 0.00 0.00 clock network delay (ideal) 0.00 0.00 input external delay 0.50 0.50 f data2[4] (in) 0.01 0.51 f mult_14/b[4] (mux_DW_mult_uns_0) 0.00 0.51 f mult_14/U131/Y (INVX1) 0.54 1.05 r mult_14/U161/Y (NOR2X1) 0.14 1.18 f mult_14/U39/S (CMPR42X1) 0.68 1.87 f mult_14/U12/CO (ADDFX2) 0.32 2.19 f mult_14/U11/CO (ADDFX2) 0.23 2.42 f mult_14/U10/CO (ADDFX2) 0.23 2.65 f mult_14/U9/CO (ADDFX2) 0.23 2.88 f mult_14/U8/CO (ADDFX2) 0.23 3.10 f mult_14/U7/CO (ADDFX2) 0.23 3.33 f mult_14/U6/CO (ADDFX2) 0.23 3.56 f mult_14/U5/CO (ADDFX2) 0.23 3.79 f mult_14/U4/CO (ADDFX2) 0.23 4.02 f mult_14/U3/CO (ADDFX2) 0.23 4.25 f mult_14/U2/CO (ADDFX2) 0.22 4.47 f mult_14/product[15] (mux_DW_mult_uns_0) 0.00 4.47 f dataout_reg_15_/RN (DFFTRXL) 0.00 4.47 f data arrival time 4.47clock clk (rise edge) 10.00 10.00 clock network delay (ideal) 0.30 10.30 clock uncertainty -0.10 10.20 dataout_reg_15_/CK (DFFTRXL) 0.00 10.20 r library setup time -0.19 10.01 data required time 10.01-------------------------------------------------------------------------- data required time 10.01 data arrival time -4.47-------------------------------------------------------------------------- slack (MET) 5.55 我们来看以上报告,dc报告的时候会显示出关键路径,即延时最大的路径,时序分析包括两段,前面一段是信号的延迟时间,即data arrival time 为4.47,下面是计算要求时间,也即相对于时钟,设计所能忍受的最大延时,由于到达寄存器clk端延时,即clock network delay,所以设计增加了0.30的余量,同样由于时钟的不确定度(可能提前也可能延后0.1),我们取最坏情况,就是时钟超前0.1,则时间余量减去0.1,最后一个是门的建立时间要求,是0.19,最后得到数据的要求时间。