首页 » 科学 » 深入浅出芯片设计流程_芯片_时序

深入浅出芯片设计流程_芯片_时序

乖囧猫 2025-01-16 23:10:31 0

扫一扫用手机浏览

文章目录 [+]

芯片,英文为Chip;芯片组为Chipset。
芯片一样平常是指集成电路的载体,也是集成电路经由设计、制造、封装、测试后的结果,常日是一个可以立即利用的独立的整体。
“芯片”和“集成电路”这两个词常常混着利用,比如在大家平常谈论话题中,集成电路设计和芯片设计说的是一个意思,芯片行业、集成电路行业、IC行业每每也是一个意思。
实际上,这两个词有联系,也有差异。
集成电路实体每每要以芯片的形式存在,由于狭义的集成电路,是强调电路本身,比如大略到只有五个元件连接在一起形成的相移振荡器,当它还在图纸上呈现的时候,我们也可以叫它集成电路,当我们要拿这个小集成电路来运用的时候,那它必须以独立的一块实物,或者嵌入到更大的集成电路中,依托芯片来发挥他的浸染;集成电路更着重电路的设计和布局布线,芯片更强调电路的集成、生产和封装。
而广义的集成电路,当涉及到行业(差异于其他行业)时,也可以包含芯片干系的各种含义。

芯片也有它独特的地方,广义上,只假如利用微细加工手段制造出来的半导体电影,都可以叫做芯片,里面并不一定有电路。
比如半导体光源芯片;比如机器芯片,如MEMS陀螺仪;或者生物芯片如DNA芯片。
在通讯与信息技能中,当把范围局限到硅集成电路时,芯片和集成电路的交集便是在“硅晶片上的电路”上。
芯片组,则是一系列相互关联的芯片组合,它们相互依赖,组合在一起能发挥更大的浸染,比如打算机里面的处理器和南北桥芯片组,手机里面的射频、基带和电源管理芯片组。

深入浅出芯片设计流程_芯片_时序 科学

芯片设计流程

芯片设计分为前端设计和后端设计,前端设计(也称逻辑设计)和后端设计(也称物理设计)并没有统一严格的界线,涉及到与工艺有关的设计便是后端设计。

芯片的设计事理图

芯片设计之前端设计

1. 规格制订芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计哀求,包括芯片须要达到的详细功能和性能方面的哀求。

2. 详细设计

Fabless根据客户提出的规格哀求,拿出设计办理方案和详细实现架构,划分模块功能。

3. HDL编码

利用硬件描述措辞(VHDL,Verilog HDL,业界公司一样平常都是利用后者)将模块功能以代码来描述实现,也便是将实际的硬件电路功能通过HDL措辞描述出来,形成RTL(寄存器传输级)代码。

4. 仿真验证

仿真验证便是考验编码设计的精确性,考验的标准便是第一步制订的规格。
看设计是否精确地知足了规格中的所有哀求。
规格是设计精确与否的黄金标准,统统违反,不符合规格哀求的,就须要重新修正设计和编码。
设计和仿真验证是反复迭代的过程,直到验证结果显示完备符合规格标准。
仿真验证工具Synopsys的VCS,还有Cadence的NC-Verilog。

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。
前端设计的流程暂时写到这里。
从设计程度上来讲,前端设计的结果便是得到了芯片的门级网表电路。

芯片设计之后端设计

1. DFTDesign For Test,可测性设计。
芯片内部每每都自带测试电路,DFT的目的便是在设计的时候就考虑将来的测试。
DFT的常见方法便是,在设计中插入扫描链,将非扫描单元(如寄存器)变为扫描单元。
关于DFT,有些书上有详细先容,对照图片就好理解一点。
DFT工具Synopsys的DFT Compiler

2. 布局方案(FloorPlan)

布局方案便是放置芯片的宏单元模块,在总体上确定各种功能电路的摆放位置,如IP模块,RAM,I/O引脚等等。
布局方案能直接影响芯片终极的面积。
工具为Synopsys的Astro

3. CTS

Clock Tree Synthesis,时钟树综合,大略点说便是时钟的布线。
由于时钟旗子暗记在数字芯片的全局指挥浸染,它的分布该当是对称式的连到各个寄存器单元,从而使时钟从同一个时钟源到达各个寄存器时,时钟延迟差异最小。
这也是为什么时钟旗子暗记须要单独布线的缘故原由。
CTS工具,Synopsys的Physical Compiler

4. 布线(Place & Route)

这里的布线便是普通旗子暗记布线了,包括各种标准单元(基本逻辑门电路)之间的走线。
比如我们平常听到的0.13um工艺,或者说90nm工艺,实际上便是这里金属布线可以达到的最小宽度,从微不雅观上看便是MOS管的沟道长度。
工具Synopsys的Astro

5. 寄生参数提取

由于导线本身存在的电阻,相邻导线之间的互感,耦合电容在芯片内部会产生旗子暗记噪声,串扰和反射。
这些效应会产生旗子暗记完全性问题,导致旗子暗记电压颠簸和变革,如果严重就会导致旗子暗记失落真缺点。
提取寄生参数进行再次的剖析验证,剖析旗子暗记完全性问题是非常主要的。
工具Synopsys的Star-RCXT

6. 版图物理验证

对完成布线的物理版图进行功能和时序上的验证,验证项目很多,如LVS(Layout Vs Schematic)验证,大略说,便是版图与逻辑综合后的门级电路图的比拟验证;DRC(Design Rule Checking):设计规则检讨,检讨连线间距,连线宽度等是否知足工艺哀求, ERC(Electrical Rule Checking):电气规则检讨,检讨短路和开路等电气 规则违例;等等。
工具为Synopsys的Hercules实际的后端流程还包括电路功耗剖析,以及随着制造工艺不断进步产生的DFM(可制造性设计)问题,在此不说了。
物理版图验证完成也便是全体芯片设计阶段完成,下面的便是芯片制造了。
物理版图以GDS II的文件格式交给芯片代工厂(称为Foundry)在晶圆硅片上做呈现实的电路,再进行封装和测试,就得到了我们实际瞥见的芯片。

芯片设计之工艺文件

在芯片的设计主要设计环节,像综合与时序剖析,版图绘制等都须要用到工艺库文件,而大家每每又对工艺文件缺少认识,以是导致想自学一些芯片设计的东西就显得很困难。
例如,没有工艺版图库文件,学习版图设计便是纸上谈兵。
这篇文章紧张先容一下工艺库干系的知识。

工艺文件由芯片制造厂供应,以是概括性的理解海内和国际上有哪些芯片制造厂是很有必要的。
国际上,紧张有台积电,英特尔,三星等紧张半导系统编制造商。
海内,紧张有中芯国际,华润上华,深圳方正等公司。
这些公司都供应干系的工艺库文件,但条件是要与这些公司进行互助才能获取,这些工艺文件都属于机密性文件。

完全工艺库文件紧张组成为:

1,仿照仿真工艺库,紧张以支持spectre和hspice这两个软件为主,后缀名为scs——spectre利用,lib——hspice利用。

2,仿照版图库文件,紧张是给cadence版图绘制软件用,后缀名为tf,drf。

3,数字综合库,紧张包含时序库,根本网表组件等干系综合及时序剖析所须要用到的库文件。
紧张是用于DC软件综合,PT软件时序剖析用。

4,数字版图库,紧张是给cadence encounter软件用于自动布局布线,当然自动布局布线工具也会用到时序库,综合约束文件等。

5,版图验证库,紧张有DRC,LVS检讨。
有的是专门支持calibre,有的专门支持dracula,diva等版图检讨工具用。
每一种库文件都有相应的pdf解释文档。

反向设计会用到1,2,5等工艺库文件,3和4是不会用到了。
正向设计(从代码开始设计的正向设计)则所有的文件都须要用到。
由于工艺文件在芯片设计中霸占极主要的位置,在每一个关键设计环节都要用到,再加上它的机密属性,以是网络上很难找到完全的工艺文件对付个人学习用,EETOP上有一份cadence公开的用于个人学习的工艺库文件可以方便大家学习,但彷佛也是不完全的。

芯片设计之综合

什么是综合?综合便是将RTL级verilog代码用Design Compiler 工具 转换/映射成用根本门级单元表示的电路的过程。
根本门级单元也便是平时我们学的与非门,或非门,寄存器之类的,只不过,这些门级单元已经做成了标准的单元库,我们可以直策应用软件来调用,而不须要自己调用门级单元来搭建电路。
大略的来说,Design Compiler软件便是做翻译的事情——将代码翻译成实际电路,但又不仅仅是翻译这么大略,它涉及到电路的优化与时序约束,使之符合我们做制订的性能哀求。
前文提到该软件是约束驱动型软件,那么约束从何而来?答案是,设计规格书。
每一个芯片设计项目都会有一个项目规格解释书,这是在芯片设计之初,整体方案(见前文)的步骤中要制订好的。
详细详细的约束哀求须要在综合过程中仔细的推敲决定。
综合的一样平常流程:

1,预综合过程;

2,施加设计约束过程;

3,设计综合过程;

4,后综合过程。

PS,利用Design Compiler软件一个必备的条件是要学会利用DC TCL脚本。

预综合过程。
这部分紧张是准备好综合过程所利用的库文件(包括工艺库、链接库、符号库、综合库)、设计输入文件,设置好环境参数。

施加设计约束过程。
这部分紧张是用DC TCL脚本编写约束文件。
详细的约束项目可以分为三大类:

a,面积约束,定义时钟,约束输入/输出路径;

b(环境属性),约束输入驱动,约束输出负载,设置事情条件(最好、范例、最差情形),设置连线负载模型;

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

约束的内容详细便是这么多。
一个详细的TCL脚本约束文件基本包含上述所有的约束。
后面有一个约束范文。

设计综合过程。
紧张是先容电路模块设计方案(以利于更好的进行约束),Design Compiler综合优化的过程(三大优化阶段,构造级,逻辑级,门级),时序剖析的详细过程等综合过程中的一些详细信息。

后综合过程。
综合完毕该怎么当作果,时序违反该如何办理?这便是后综合过程所要办理的问题。
在综合之后,通过剖析综合报告,可以得知这次的电路综合结果如何,根据不符合的哀求,进行重新约束,乃至重新设计电路。
在这个阶段特殊值得一提的是综合预估,由于在写综合约束脚本的时候,须要确定约束条件,规格书一样平常不能够涉及到如此细节的部分,以是须要根据实际电路进行综合预估,这个步骤是在代码编写完之后,与验证同时进行的,目的在于大致估计电路是否符合哀求,此时的预综合过程与正式的综合过成是一样的,但,哀求会宽松许多,时序违反的哀求大概为 10%-15%,也便是说电路纵然有10%-15%的电路不知足时序也没有关系。

综合约束过程是一个反复迭代的过程,须要多次设计预估,这样才能不断改动时序违反。
范文:

# Set the current_design #

read_verilog {counter_pad.v counter.v} //读取设计文件

current_design Cnt10_PAD

link

set_operating_conditions -max slow -max_library slow -min fast -min_library fast //设置事情条件

set_wire_load_mode enclosed //设置连线负载模型

set_wire_load_model -name tsmc18_wl10 -library slow //设置连线负载模型

set_local_link_library {slow.db fast.db} //设置链接库

set_max_area 0 //设置面积

set_max_fanout 5 [get_ports reset_n] //设置最大扇出

set_max_fanout 4 [get_ports clk] //设置最大扇出

set_max_fanout 4 [get_ports in_ena] //设置最大扇出

set_max_transition 0.3 [get_ports reset_n] //设置旗子暗记翻转韶光

set_max_transition 0.3 [get_ports clk]//设置旗子暗记翻转韶光

set_max_transition 0.5 [get_ports in_ena]//设置旗子暗记翻转韶光

create_clock [get_ports clk] -period 10 -waveform. {0 5}//创建时钟

set_clock_latency 1 [get_clocks clk]//设置时钟源延时

set_clock_latency -source 1 [get_clocks clk]

set_clock_uncertainty -setup 0.5 [get_clocks clk]//设置时钟不愿定度

set_clock_uncertainty -hold 0.4 [get_clocks clk]

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

set_clock_transition -fall 0.3 [get_clocks clk]设置低落沿旗子暗记翻转韶光

set_clock_transition -rise 0.3 [get_clocks clk]///设置上升沿沿旗子暗记翻转韶光

set_input_delay -clock clk -max 3 [get_ports in_ena]//设置输入延时

set_output_delay -clock clk -max 4 [get_ports cnt]//设置输出延时

set_output_delay -clock clk -min 0.5 [get_ports cnt]

set_output_delay -clock clk -max 4 [get_ports carry_ena]

set_output_delay -clock clk -min 0.5 [get_ports carry_ena]

compile//编译

report_timing -delay max > ./reports/pad_setup_rt.rpt//报告最大时序延时

report_timing -delay min > ./reports/pad_hold_rt.rpt//报告最小时序延时

report_constraint -verbose > ./reports/pad_rc.rpt

report_qor > ./reports/pad_rq.rpt

remove_unconnected_ports -blast_buses [get_cells -hierarchical ]

set bus_inference_style. {%s[%d]}

set bus_naming_style. {%s[%d]}

set hdlout_internal_busses true

change_names -hierarchy -rule verilog

define_name_rules name_rule -allowed {a-z A-Z 0-9 _} -max_length 255 -type cell

define_name_rules name_rule -allowed {a-z A-Z 0-9 _[]} -max_length 255 -type net

define_name_rules name_rule -map {{"\\cell\\" "cell"}}

define_name_rules name_rule -case_insensitive

change_names -hierarchy -rules name_rule

write -format verilog -hier -o ./outputs/pad_counter.sv

write -format ddc -hier -o ./outputs/pad_counter.ddc

write_sdc ./outputs/pad_counter.sdc

write_sdf ./outputs/pad_counter.sdf

总结

芯片设计的过程中是十分繁芜,本文也是大略的将芯片设计流程梳理一遍,繁芜的就不再赘述了。
芯片是什么?芯片的详细设计流程又是什么?本文磋商的便是芯片在字面以外的意义,以及芯片是怎么被设计成的。

芯片

芯片,又称微电路(microcircuit)、微芯片(microchip)、集成电路(英语:integrated circuit, IC)。
是指内含集成电路的硅片,体积很小,常常是打算机或其他电子设备的一部分。

芯片,英文为Chip;芯片组为Chipset。
芯片一样平常是指集成电路的载体,也是集成电路经由设计、制造、封装、测试后的结果,常日是一个可以立即利用的独立的整体。
“芯片”和“集成电路”这两个词常常混着利用,比如在大家平常谈论话题中,集成电路设计和芯片设计说的是一个意思,芯片行业、集成电路行业、IC行业每每也是一个意思。
实际上,这两个词有联系,也有差异。
集成电路实体每每要以芯片的形式存在,由于狭义的集成电路,是强调电路本身,比如大略到只有五个元件连接在一起形成的相移振荡器,当它还在图纸上呈现的时候,我们也可以叫它集成电路,当我们要拿这个小集成电路来运用的时候,那它必须以独立的一块实物,或者嵌入到更大的集成电路中,依托芯片来发挥他的浸染;集成电路更着重电路的设计和布局布线,芯片更强调电路的集成、生产和封装。
而广义的集成电路,当涉及到行业(差异于其他行业)时,也可以包含芯片干系的各种含义。

芯片也有它独特的地方,广义上,只假如利用微细加工手段制造出来的半导体电影,都可以叫做芯片,里面并不一定有电路。
比如半导体光源芯片;比如机器芯片,如MEMS陀螺仪;或者生物芯片如DNA芯片。
在通讯与信息技能中,当把范围局限到硅集成电路时,芯片和集成电路的交集便是在“硅晶片上的电路”上。
芯片组,则是一系列相互关联的芯片组合,它们相互依赖,组合在一起能发挥更大的浸染,比如打算机里面的处理器和南北桥芯片组,手机里面的射频、基带和电源管理芯片组。

芯片设计流程

芯片设计分为前端设计和后端设计,前端设计(也称逻辑设计)和后端设计(也称物理设计)并没有统一严格的界线,涉及到与工艺有关的设计便是后端设计。

芯片设计流程 芯片的设计事理图

芯片的设计事理图

芯片设计之前端设计

1. 规格制订

芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计哀求,包括芯片须要达到的详细功能和性能方面的哀求。

2. 详细设计

Fabless根据客户提出的规格哀求,拿出设计办理方案和详细实现架构,划分模块功能。

3. HDL编码

利用硬件描述措辞(VHDL,Verilog HDL,业界公司一样平常都是利用后者)将模块功能以代码来描述实现,也便是将实际的硬件电路功能通过HDL措辞描述出来,形成RTL(寄存器传输级)代码。

4. 仿真验证

仿真验证便是考验编码设计的精确性,考验的标准便是第一步制订的规格。
看设计是否精确地知足了规格中的所有哀求。
规格是设计精确与否的黄金标准,统统违反,不符合规格哀求的,就须要重新修正设计和编码。
设计和仿真验证是反复迭代的过程,直到验证结果显示完备符合规格标准。

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

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。

前端设计的流程暂时写到这里。
从设计程度上来讲,前端设计的结果便是得到了芯片的门级网表电路。

芯片设计之后端设计

1. DFT

Design For Test,可测性设计。
芯片内部每每都自带测试电路,DFT的目的便是在设计的时候就考虑将来的测试。
DFT的常见方法便是,在设计中插入扫描链,将非扫描单元(如寄存器)变为扫描单元。
关于DFT,有些书上有详细先容,对照图片就好理解一点。

DFT工具Synopsys的DFT Compiler

2. 布局方案(FloorPlan)

布局方案便是放置芯片的宏单元模块,在总体上确定各种功能电路的摆放位置,如IP模块,RAM,I/O引脚等等。
布局方案能直接影响芯片终极的面积。

工具为Synopsys的Astro

3. CTS

Clock Tree Synthesis,时钟树综合,大略点说便是时钟的布线。
由于时钟旗子暗记在数字芯片的全局指挥浸染,它的分布该当是对称式的连到各个寄存器单元,从而使时钟从同一个时钟源到达各个寄存器时,时钟延迟差异最小。
这也是为什么时钟旗子暗记须要单独布线的缘故原由。

CTS工具,Synopsys的Physical Compiler

4. 布线(Place & Route)

这里的布线便是普通旗子暗记布线了,包括各种标准单元(基本逻辑门电路)之间的走线。
比如我们平常听到的0.13um工艺,或者说90nm工艺,实际上便是这里金属布线可以达到的最小宽度,从微不雅观上看便是MOS管的沟道长度。

工具Synopsys的Astro

5. 寄生参数提取

由于导线本身存在的电阻,相邻导线之间的互感,耦合电容在芯片内部会产生旗子暗记噪声,串扰和反射。
这些效应会产生旗子暗记完全性问题,导致旗子暗记电压颠簸和变革,如果严重就会导致旗子暗记失落真缺点。
提取寄生参数进行再次的剖析验证,剖析旗子暗记完全性问题是非常主要的。

工具Synopsys的Star-RCXT

6. 版图物理验证

对完成布线的物理版图进行功能和时序上的验证,验证项目很多,如LVS(Layout Vs Schematic)验证,大略说,便是版图与逻辑综合后的门级电路图的比拟验证;DRC(Design Rule Checking):设计规则检讨,检讨连线间距,连线宽度等是否知足工艺哀求, ERC(Electrical Rule Checking):电气规则检讨,检讨短路和开路等电气 规则违例;等等。

工具为Synopsys的Hercules

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

物理版图验证完成也便是全体芯片设计阶段完成,下面的便是芯片制造了。
物理版图以GDS II的文件格式交给芯片代工厂(称为Foundry)在晶圆硅片上做呈现实的电路,再进行封装和测试,就得到了我们实际瞥见的芯片。

芯片设计之工艺文件

在芯片的设计主要设计环节,像综合与时序剖析,版图绘制等都须要用到工艺库文件,而大家每每又对工艺文件缺少认识,以是导致想自学一些芯片设计的东西就显得很困难。
例如,没有工艺版图库文件,学习版图设计便是纸上谈兵。
这篇文章紧张先容一下工艺库干系的知识。

工艺文件由芯片制造厂供应,以是概括性的理解海内和国际上有哪些芯片制造厂是很有必要的。
国际上,紧张有台积电,英特尔,三星等紧张半导系统编制造商。
海内,紧张有中芯国际,华润上华,深圳方正等公司。
这些公司都供应干系的工艺库文件,但条件是要与这些公司进行互助才能获取,这些工艺文件都属于机密性文件。

完全工艺库文件紧张组成为:

1,仿照仿真工艺库,紧张以支持spectre和hspice这两个软件为主,后缀名为scs——spectre利用,lib——hspice利用。

2,仿照版图库文件,紧张是给cadence版图绘制软件用,后缀名为tf,drf。

3,数字综合库,紧张包含时序库,根本网表组件等干系综合及时序剖析所须要用到的库文件。
紧张是用于DC软件综合,PT软件时序剖析用。

4,数字版图库,紧张是给cadence encounter软件用于自动布局布线,当然自动布局布线工具也会用到时序库,综合约束文件等。

5,版图验证库,紧张有DRC,LVS检讨。
有的是专门支持calibre,有的专门支持dracula,diva等版图检讨工具用。
每一种库文件都有相应的pdf解释文档。

反向设计会用到1,2,5等工艺库文件,3和4是不会用到了。
正向设计(从代码开始设计的正向设计)则所有的文件都须要用到。
由于工艺文件在芯片设计中霸占极主要的位置,在每一个关键设计环节都要用到,再加上它的机密属性,以是网络上很难找到完全的工艺文件对付个人学习用,EETOP上有一份cadence公开的用于个人学习的工艺库文件可以方便大家学习,但彷佛也是不完全的。

芯片设计之综合

什么是综合?综合便是将RTL级verilog代码用Design Compiler 工具 转换/映射成用根本门级单元表示的电路的过程。
根本门级单元也便是平时我们学的与非门,或非门,寄存器之类的,只不过,这些门级单元已经做成了标准的单元库,我们可以直策应用软件来调用,而不须要自己调用门级单元来搭建电路。
大略的来说,Design Compiler软件便是做翻译的事情——将代码翻译成实际电路,但又不仅仅是翻译这么大略,它涉及到电路的优化与时序约束,使之符合我们做制订的性能哀求。
前文提到该软件是约束驱动型软件,那么约束从何而来?答案是,设计规格书。
每一个芯片设计项目都会有一个项目规格解释书,这是在芯片设计之初,整体方案(见前文)的步骤中要制订好的。
详细详细的约束哀求须要在综合过程中仔细的推敲决定。
综合的一样平常流程:

1,预综合过程;

2,施加设计约束过程;

3,设计综合过程;

4,后综合过程。

PS,利用Design Compiler软件一个必备的条件是要学会利用DC TCL脚本。

预综合过程。
这部分紧张是准备好综合过程所利用的库文件(包括工艺库、链接库、符号库、综合库)、设计输入文件,设置好环境参数。

施加设计约束过程。
这部分紧张是用DC TCL脚本编写约束文件。
详细的约束项目可以分为三大类:

a,面积约束,定义时钟,约束输入/输出路径;

b(环境属性),约束输入驱动,约束输出负载,设置事情条件(最好、范例、最差情形),设置连线负载模型;

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

约束的内容详细便是这么多。
一个详细的TCL脚本约束文件基本包含上述所有的约束。
后面有一个约束范文。

设计综合过程。
紧张是先容电路模块设计方案(以利于更好的进行约束),Design Compiler综合优化的过程(三大优化阶段,构造级,逻辑级,门级),时序剖析的详细过程等综合过程中的一些详细信息。

后综合过程。
综合完毕该怎么当作果,时序违反该如何办理?这便是后综合过程所要办理的问题。
在综合之后,通过剖析综合报告,可以得知这次的电路综合结果如何,根据不符合的哀求,进行重新约束,乃至重新设计电路。
在这个阶段特殊值得一提的是综合预估,由于在写综合约束脚本的时候,须要确定约束条件,规格书一样平常不能够涉及到如此细节的部分,以是须要根据实际电路进行综合预估,这个步骤是在代码编写完之后,与验证同时进行的,目的在于大致估计电路是否符合哀求,此时的预综合过程与正式的综合过成是一样的,但,哀求会宽松许多,时序违反的哀求大概为 10%-15%,也便是说电路纵然有10%-15%的电路不知足时序也没有关系。

综合约束过程是一个反复迭代的过程,须要多次设计预估,这样才能不断改动时序违反。
范文:

# Set the current_design #

read_verilog {counter_pad.v counter.v} //读取设计文件

current_design Cnt10_PAD

link

set_operating_conditions -max slow -max_library slow -min fast -min_library fast //设置事情条件

set_wire_load_mode enclosed //设置连线负载模型

set_wire_load_model -name tsmc18_wl10 -library slow //设置连线负载模型

set_local_link_library {slow.db fast.db} //设置链接库

set_max_area 0 //设置面积

set_max_fanout 5 [get_ports reset_n] //设置最大扇出

set_max_fanout 4 [get_ports clk] //设置最大扇出

set_max_fanout 4 [get_ports in_ena] //设置最大扇出

set_max_transition 0.3 [get_ports reset_n] //设置旗子暗记翻转韶光

set_max_transition 0.3 [get_ports clk]//设置旗子暗记翻转韶光

set_max_transition 0.5 [get_ports in_ena]//设置旗子暗记翻转韶光

create_clock [get_ports clk] -period 10 -waveform. {0 5}//创建时钟

set_clock_latency 1 [get_clocks clk]//设置时钟源延时

set_clock_latency -source 1 [get_clocks clk]

set_clock_uncertainty -setup 0.5 [get_clocks clk]//设置时钟不愿定度

set_clock_uncertainty -hold 0.4 [get_clocks clk]

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

set_clock_transition -fall 0.3 [get_clocks clk]设置低落沿旗子暗记翻转韶光

set_clock_transition -rise 0.3 [get_clocks clk]///设置上升沿沿旗子暗记翻转韶光

set_input_delay -clock clk -max 3 [get_ports in_ena]//设置输入延时

set_output_delay -clock clk -max 4 [get_ports cnt]//设置输出延时

set_output_delay -clock clk -min 0.5 [get_ports cnt]

set_output_delay -clock clk -max 4 [get_ports carry_ena]

set_output_delay -clock clk -min 0.5 [get_ports carry_ena]

compile//编译

report_timing -delay max > ./reports/pad_setup_rt.rpt//报告最大时序延时

report_timing -delay min > ./reports/pad_hold_rt.rpt//报告最小时序延时

report_constraint -verbose > ./reports/pad_rc.rpt

report_qor > ./reports/pad_rq.rpt

remove_unconnected_ports -blast_buses [get_cells -hierarchical ]

set bus_inference_style. {%s[%d]}

set bus_naming_style. {%s[%d]}

set hdlout_internal_busses true

change_names -hierarchy -rule verilog

define_name_rules name_rule -allowed {a-z A-Z 0-9 _} -max_length 255 -type cell

define_name_rules name_rule -allowed {a-z A-Z 0-9 _[]} -max_length 255 -type net

define_name_rules name_rule -map {{"\\cell\\" "cell"}}

define_name_rules name_rule -case_insensitive

change_names -hierarchy -rules name_rule

write -format verilog -hier -o ./outputs/pad_counter.sv

write -format ddc -hier -o ./outputs/pad_counter.ddc

write_sdc ./outputs/pad_counter.sdc

write_sdf ./outputs/pad_counter.sdf

总结

芯片设计的过程中是十分繁芜,本文也是大略的将芯片设计流程梳理一遍,繁芜的就不再赘述了。

标签:

相关文章

SIM卡的引脚定义拿去不谢_卡座_卡托

先来看下几代SIM卡的示意图,除了外围部分的尺寸,核心部分基本没什么变革:三种SIM卡SIM卡管脚定义如下:SIM卡管脚定义现在我...

科学 2025-01-16 阅读0 评论0

工业相机芯片选型浅析_相机_工业

图1、工业相机硬件架构 工业相机按照芯片类型可分为CCD和CMOS相机;按传感器的构造特性可分为线阵和面阵相机;按扫描办法可...

科学 2025-01-16 阅读0 评论0