✅ 操作成功!

芯片的英文

发布时间:2023-06-13 作者:admin 来源:文学

芯片的英文

芯片的英文

-

2023年3月19日发(作者:项目概述)

芯⽚设计流程芯⽚的设计原理图

芯⽚是什么?芯⽚的具体设计流程⼜是什么?本⽂探讨的就是芯⽚在字⾯以外的意义,以及芯⽚是怎么被设计成的。

芯⽚

芯⽚,⼜称微电路(microcircuit)、微芯⽚(microchip)、集成电路(英语:integratedcircuit,IC)。是指内含集成电路的硅⽚,体积很

⼩,常常是计算机或其他电⼦设备的⼀部分。

芯⽚,英⽂为Chip;芯⽚组为Chipset。芯⽚⼀般是指集成电路的载体,也是集成电路经过设计、制造、封装、测试后的结果,通常是⼀个

可以⽴即使⽤的独⽴的整体。“芯⽚”和“集成电路”这两个词经常混着使⽤,⽐如在⼤家平常讨论话题中,集成电路设计和芯⽚设计说的是⼀个

意思,芯⽚⾏业、集成电路⾏业、IC⾏业往往也是⼀个意思。实际上,这两个词有联系,也有区别。集成电路实体往往要以芯⽚的形式存

在,因为狭义的集成电路,是强调电路本⾝,⽐如简单到只有五个元件连接在⼀起形成的相移振荡器,当它还在图纸上呈现的时候,我们也

可以叫它集成电路,当我们要拿这个⼩集成电路来应⽤的时候,那它必须以独⽴的⼀块实物,或者嵌⼊到更⼤的集成电路中,依托芯⽚来发

挥他的作⽤;集成电路更着重电路的设计和布局布线,芯⽚更强调电路的集成、⽣产和封装。⽽⼴义的集成电路,当涉及到⾏业(区别于其

他⾏业)时,也可以包含芯⽚相关的各种含义。

芯⽚也有它独特的地⽅,⼴义上,只要是使⽤微细加⼯⼿段制造出来的半导体⽚⼦,都可以叫做芯⽚,⾥⾯并不⼀定有电路。⽐如半导体光

源芯⽚;⽐如机械芯⽚,如MEMS陀螺仪;或者⽣物芯⽚如DNA芯⽚。在通讯与信息技术中,当把范围局限到硅集成电路时,芯⽚和集成电

路的交集就是在“硅晶⽚上的电路”上。芯⽚组,则是⼀系列相互关联的芯⽚组合,它们相互依赖,组合在⼀起能发挥更⼤的作⽤,⽐如计算

机⾥⾯的处理器和南北桥芯⽚组,⼿机⾥⾯的射频、基带和电源管理芯⽚组。

芯⽚设计流程

芯⽚设计分为前端设计和后端设计,前端设计(也称逻辑设计)和后端设计(也称物理设计)并没有统⼀严格的界限,涉及到与⼯艺有关的

设计就是后端设计。

芯⽚的设计原理图

芯⽚设计之前端设计

1.规格制定

芯⽚规格,也就像功能列表⼀样,是客户向芯⽚设计公司(称为Fabless,⽆晶圆设计公司)提出的设计要求,包括芯⽚需要达到的具

体功能和性能⽅⾯的要求。

2.详细设计

Fabless根据客户提出的规格要求,拿出设计解决⽅案和具体实现架构,划分模块功能。

编码

使⽤硬件描述语⾔(VHDL,VerilogHDL,业界公司⼀般都是使⽤后者)将模块功能以代码来描述实现,也就是将实际的硬件电路功能

通过HDL语⾔描述出来,形成RTL(寄存器传输级)代码。

4.仿真验证

仿真验证就是检验编码设计的正确性,检验的标准就是第⼀步制定的规格。看设计是否精确地满⾜了规格中的所有要求。规格是设计正

确与否的黄⾦标准,⼀切违反,不符合规格要求的,就需要重新修改设计和编码。设计和仿真验证是反复迭代的过程,直到验证结果显⽰完

全符合规格标准。

仿真验证⼯具Synopsys的VCS,还有Cadence的NC-Verilog。

5.逻辑综合――DesignCompiler

仿真验证通过,进⾏逻辑综合。逻辑综合的结果就是把设计实现的HDL代码翻译成门级⽹表netlist。综合需要设定约束条件,就是你希

望综合出来的电路在⾯积,时序等⽬标参数上达到的标准。逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元(standard

cell)的⾯积,时序参数是不⼀样的。所以,选⽤的综合库不⼀样,综合出来的电路在时序,⾯积上是有差异的。⼀般来说,综合完成后需

要再次做仿真验证(这个也称为后仿真,之前的称为前仿真)。

逻辑综合⼯具Synopsys的DesignCompiler。

StaticTimingAnalysis(STA),静态时序分析,这也属于验证范畴,它主要是在时序上对电路进⾏验证,检查电路是否存在建⽴时间

(setuptime)和保持时间(holdtime)的违例(violation)。这个是数字电路基础知识,⼀个寄存器出现这两个时序违例时,是没有办法

正确采样数据和输出数据的,所以以寄存器为基础的数字芯⽚功能肯定会出现问题。

STA⼯具有Synopsys的PrimeTime。

7.形式验证

这也是验证范畴,它是从功能上(STA是时序上)对综合后的⽹表进⾏验证。常⽤的就是等价性检查⽅法,以功能验证后的HDL设计为

参考,对⽐综合后的⽹表功能,他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描述的电路功能。

形式验证⼯具有Synopsys的Formality。

前端设计的流程暂时写到这⾥。从设计程度上来讲,前端设计的结果就是得到了芯⽚的门级⽹表电路。

芯⽚设计之后端设计

DesignForTest,可测性设计。芯⽚内部往往都⾃带测试电路,DFT的⽬的就是在设计的时候就考虑将来的测试。DFT的常见⽅法就

是,在设计中插⼊扫描链,将⾮扫描单元(如寄存器)变为扫描单元。关于DFT,有些书上有详细介绍,对照图⽚就好理解⼀点。

DFT⼯具Synopsys的DFTCompiler

2.布局规划(FloorPlan)

布局规划就是放置芯⽚的宏单元模块,在总体上确定各种功能电路的摆放位置,如IP模块,RAM,I/O引脚等等。布局规划能直接影响

芯⽚最终的⾯积。

⼯具为Synopsys的Astro

ClockTreeSynthesis,时钟树综合,简单点说就是时钟的布线。由于时钟信号在数字芯⽚的全局指挥作⽤,它的分布应该是对称式的

连到各个寄存器单元,从⽽使时钟从同⼀个时钟源到达各个寄存器时,时钟延迟差异最⼩。这也是为什么时钟信号需要单独布线的原因。

CTS⼯具,Synopsys的PhysicalCompiler

4.布线(Place&Route)

这⾥的布线就是普通信号布线了,包括各种标准单元(基本逻辑门电路)之间的⾛线。⽐如我们平常听到的0.13um⼯艺,或者说90nm

⼯艺,实际上就是这⾥⾦属布线可以达到的最⼩宽度,从微观上看就是MOS管的沟道长度。

⼯具Synopsys的Astro

5.寄⽣参数提取

由于导线本⾝存在的电阻,相邻导线之间的互感,耦合电容在芯⽚内部会产⽣信号噪声,串扰和反射。这些效应会产⽣信号完整性问题,

导致信号电压波动和变化,如果严重就会导致信号失真错误。提取寄⽣参数进⾏再次的分析验证,分析信号完整性问题是⾮常重要的。

⼯具Synopsys的Star-RCXT

6.版图物理验证

对完成布线的物理版图进⾏功能和时序上的验证,验证项⽬很多,如LVS(LayoutVsSchematic)验证,简单说,就是版图与逻辑综

合后的门级电路图的对⽐验证;DRC(DesignRuleChecking):设计规则检查,检查连线间距,连线宽度等是否满⾜⼯艺要求,

ERC(ElectricalRuleChecking):电⽓规则检查,检查短路和开路等电⽓规则违例;等等。

⼯具为Synopsys的Hercules

实际的后端流程还包括电路功耗分析,以及随着制造⼯艺不断进步产⽣的DFM(可制造性设计)问题,在此不说了。

物理版图验证完成也就是整个芯⽚设计阶段完成,下⾯的就是芯⽚制造了。物理版图以GDSII的⽂件格式交给芯⽚代⼯⼚(称为

Foundry)在晶圆硅⽚上做出实际的电路,再进⾏封装和测试,就得到了我们实际看见的芯⽚。

芯⽚设计之⼯艺⽂件

在芯⽚的设计重要设计环节,像综合与时序分析,版图绘制等都需要⽤到⼯艺库⽂件,⽽⼤家往往⼜对⼯艺⽂件缺乏认识,所以导致想⾃学

⼀些芯⽚设计的东西就显得很困难。例如,没有⼯艺版图库⽂件,学习版图设计就是纸上谈兵。这篇⽂章主要介绍⼀下⼯艺库相关的知识。

⼯艺⽂件由芯⽚制造⼚提供,所以概括性的了解国内和国际上有哪些芯⽚制造⼚是很有必要的。国际上,主要有台积电,英特尔,三星等主

要半导体制造商。国内,主要有中芯国际,华润上华,深圳⽅正等公司。这些公司都提供相关的⼯艺库⽂件,但前提是要与这些公司进⾏合

作才能获取,这些⼯艺⽂件都属于机密性⽂件。

完整⼯艺库⽂件主要组成为:

1,模拟仿真⼯艺库,主要以⽀持spectre和hspice这两个软件为主,后缀名为scs——spectre使⽤,lib——hspice使⽤。

2,模拟版图库⽂件,主要是给cadence版图绘制软件⽤,后缀名为tf,drf。

3,数字综合库,主要包含时序库,基础⽹表组件等相关综合及时序分析所需要⽤到的库⽂件。主要是⽤于DC软件综合,PT软件时序分析

⽤。

4,数字版图库,主要是给cadenceencounter软件⽤于⾃动布局布线,当然⾃动布局布线⼯具也会⽤到时序库,综合约束⽂件等。

5,版图验证库,主要有DRC,LVS检查。有的是专门⽀持calibre,有的专门⽀持dracula,diva等版图检查⼯具⽤。每⼀种库⽂件都有相应的pdf

说明⽂档。

反向设计会⽤到1,2,5等⼯艺库⽂件,3和4是不会⽤到了。正向设计(从代码开始设计的正向设计)则所有的⽂件都需要⽤到。由于⼯艺

⽂件在芯⽚设计中占有极重要的位置,在每⼀个关键设计环节都要⽤到,再加上它的机密属性,所以⽹络上很难找到完整的⼯艺⽂件对于个

⼈学习⽤,EETOP上有⼀份cadence公开的⽤于个⼈学习的⼯艺库⽂件可以⽅便⼤家学习,但似乎也是不完整的。

芯⽚设计之综合

什么是综合?综合就是将RTL级verilog代码⽤DesignCompiler⼯具转换/映射成⽤基础门级单元表⽰的电路的过程。基础门级单元也就是平

时我们学的与⾮门,或⾮门,寄存器之类的,只不过,这些门级单元已经做成了标准的单元库,我们可以直接使⽤软件来调⽤,⽽不需要⾃

⼰调⽤门级单元来搭建电路。简单的来说,DesignCompiler软件就是做翻译的⼯作——将代码翻译成实际电路,但⼜不仅仅是翻译这么简

单,它涉及到电路的优化与时序约束,使之符合我们做制定的性能要求。前⽂提到该软件是约束驱动型软件,那么约束从何⽽来?答案

是,设计规格书。每⼀个芯⽚设计项⽬都会有⼀个项⽬规格说明书,这是在芯⽚设计之初,整体规划(见前⽂)的步骤中要制定好的。具体

详细的约束要求需要在综合过程中仔细的斟酌决定。综合的⼀般流程:

1,预综合过程;

2,施加设计约束过程;

3,设计综合过程;

4,后综合过程。

PS,使⽤DesignCompiler软件⼀个必备的条件是要学会使⽤DCTCL脚本。

预综合过程。这部分主要是准备好综合过程所使⽤的库⽂件(包括⼯艺库、链接库、符号库、综合库)、设计输⼊⽂件,设置好环境参数。

施加设计约束过程。这部分主要是⽤DCTCL脚本编写约束⽂件。具体的约束项⽬可以分为三⼤类:

a,⾯积约束,定义时钟,约束输⼊/输出路径;

b(环境属性),约束输⼊驱动,约束输出负载,设置⼯作条件(最好、典型、最差情况),设置连线负载模型;

c(⾼级时钟约束),对时钟的抖动、偏移、时钟源延迟,同步多时钟,异步时钟,多周期路径,这⼏类进⾏细致的约束。

约束的内容具体就是这么多。⼀个详细的TCL脚本约束⽂件基本包含上述所有的约束。后⾯有⼀个约束范⽂。

设计综合过程。主要是介绍电路模块设计规划(以利于更好的进⾏约束),DesignCompiler综合优化的过程(三⼤优化阶段,结构级,逻

辑级,门级),时序分析的具体过程等综合过程中的⼀些详细信息。

后综合过程。综合完毕该怎么看结果,时序违反该如何解决?这就是后综合过程所要解决的问题。在综合之后,通过分析综合报告,可以得

知此次的电路综合结果如何,根据不符合的要求,进⾏重新约束,甚⾄重新设计电路。在这个阶段特别值得⼀提的是综合预估,因为在写综

合约束脚本的时候,需要确定约束条件,规格书⼀般不能够涉及到如此细节的部分,所以需要根据实际电路进⾏综合预估,这个步骤是在代

码编写完之后,与验证同时进⾏的,⽬的在于⼤致估计电路是否符合要求,此时的预综合过程与正式的综合过成是⼀样的,但,要求会宽松

许多,时序违反的要求⼤概为10%-15%,也就是说电路即使有10%-15%的电路不满⾜时序也没有关系。

综合约束过程是⼀个反复迭代的过程,需要多次设计预估,这样才能不断修正时序违反。范⽂:

#Setthecurrent_design

#read_verilog{counter_er.v}//读取设计⽂件

current_designCnt10_PAD

link

set_operating_conditions-maxslow-max_libraryslow-minfast-min_libraryfast//设置⼯作条件

set_wire_load_modeenclosed//设置连线负载模型

set_wire_load_model-nametsmc18_wl10-libraryslow//设置连线负载模型

set_local_link_library{}//设置链接库

set_max_area0//设置⾯积

set_max_fanout5[get_portsreset_n]//设置最⼤扇出

set_max_fanout4[get_portsclk]//设置最⼤扇出

set_max_fanout4[get_portsin_ena]//设置最⼤扇出

set_max_transition0.3[get_portsreset_n]//设置信号翻转时间

set_max_transition0.3[get_portsclk]//设置信号翻转时间

set_max_transition0.5[get_portsin_ena]//设置信号翻转时间

create_clock[get_portsclk]-period10-waveform.{05}//创建时钟

set_clock_latency1[get_clocksclk]//设置时钟源延时

set_clock_latency-source1[get_clocksclk]

set_clock_uncertainty-setup0.5[get_clocksclk]//设置时钟不确定度

set_clock_uncertainty-hold0.4[get_clocksclk]

set_dont_touch_network[get_clocksclk]//设置伪路径,不要约束

set_clock_transition-fall0.3[get_clocksclk]设置下降沿信号翻转时间

set_clock_transition-rise0.3[get_clocksclk]///设置上升沿沿信号翻转时间

set_input_delay-clockclk-max3[get_portsin_ena]//设置输⼊延时

set_output_delay-clockclk-max4[get_portscnt]//设置输出延时

set_output_delay-clockclk-min0.5[get_portscnt]

set_output_delay-clockclk-max4[get_portscarry_ena]

set_output_delay-clockclk-min0.5[get_portscarry_ena]

compile//编译

report_timing-delaymax>./reports/pad_setup_//报告最⼤时序延时

report_timing-delaymin>./reports/pad_hold_//报告最⼩时序延时

report_constraint-verbose>./reports/pad_

report_qor>./reports/pad_

remove_unconnected_ports-blast_buses[get_cells-hierarchical*]

setbus_inference_style.{%s[%d]}

setbus_naming_style.{%s[%d]}

sethdlout_internal_bussestrue

change_names-hierarchy-ruleverilog

define_name_rulesname_rule-allowed{a-zA-Z0-9_}-max_length255-typecell

define_name_rulesname_rule-allowed{a-zA-Z0-9_[]}-max_length255-typenet

define_name_rulesname_rule-map{{"*cell*""cell"}}

define_name_rulesname_rule-case_insensitive

change_names-hierarchy-rulesname_rule

write-formatverilog-hier-o./outputs/pad_

write-formatddc-hier-o./outputs/pad_

write_sdc./outputs/pad_

write_sdf./outputs/pad_

总结

芯⽚设计的过程中是⼗分复杂,本⽂也是简单的将芯⽚设计流程梳理⼀遍,复杂的就不再赘述了。

👁️ 阅读量:0