芯片设计需要做哪些事情?

拓荒号:陈峰 (企业头条)

芯片设计这个行当,从大的方面讲,主要分模仿和数字两大块,而每大块又分前端和后端,我想大部分同窗对这个肯定是十分分明的,下面就数字电路聊聊芯片设计的一些事情,就是芯片设计有哪些活要做,这并不是全面完好的系统引见,只是个人的理解和总结,希望抛砖引玉,或许不全面,不正确,欢送大家指正和补充。


芯片设计


说到数字芯片,不能不说FPGA,这种是可编程的数字电路,用法原理也不说了,数字电路设计的目的就是把这些功用做成我们本人专用的ASIC/SoC,这样无论面积、本钱或者平安性等都能有保证。

从流程上讲,数字芯片设计的大致步骤就是系统与功用定义、RTL完成考证、综合及可测试性设计、ATPG仿真、时序剖析到自动规划布线(APR),直至托付fab的GDS网表。

这个流程是能够重复迭代的
关于不同类型芯片,如纯数ASIC或混合电路(mix-signal)及系统级芯片(SoC),每一步的办法和详细施行流程上可能又有所差别。下面就这些根本流程分步谈一些主要问题。

系统设计主要触及到功用定义及架构设计、总线架构的配置、模块设计、数据流的分配、时钟的设计等问题。总线包括模块之间,模块与MCU核之间,外部主机和芯片之间通讯,或者测试需求等等一系列要素。时钟触及到数据流的规划、通讯接口或内部MCU的时钟商定、工艺条件、功耗等要素。模块需求明白接口和定义。


芯片设计


在系统级设计上,特别是很多数模混合电路中或对功耗有特别请求的电路中
还要有电压域的设计,不同模块之间,功用模块和接口之间可能都需求依据工艺条件、功耗请求设置不同的电压。

无论是时钟,还是电压,都能够经过控制开关来完成功耗的请求,时钟完成比拟简单,在大局部电路中都能够完成这种时钟控制。电压控制普通是完成在集成有电源管理芯片的较大范围芯片上,但将来趋向是即便没有电源管理芯片,电压的gating也需求归入思索范围。

在SoC系统设计上,一个重要的环节是MCU内核的选型,如今常用的内核普通是ARM、较老的ARM7、ARM9等系列,较新的是三大系列Cortex-A、R、M,详细的用处不做细致描绘,选定好后,依据需求进行设置,普通做硬件的人不需求对它的指令集理解太多,但是需求理解它的总线接口、数据总线、指令总线,以及存储系统的设计,普通需求布置ROM、RAM分别作为指令和数据存储器,由于ROM是不可更改的,普通也需求参加flash作为补丁程序写入地,也可能需求外部存储器或者DMA控制器来增加外部存储空间。地址的分配是依照功用需求来进行的,如今有很多工具如synopsys的DesignKits能够产生外部总线代码及进行地址分配。


芯片硬件电路


第一步完成系统和功用定义后,要施行的就是RTL,RTL是特地描绘硬件电路的工具言语,有Verilog和VHDL。RTL的特性就是硬件上的同时触发性,不同于软件的按次第执行,电路由时序逻辑和组合逻辑组成。时序逻辑在物理构成上就是一些存放器,这些存放器受时钟控制,存放器代表了电路中的数据或控制信号,这些信号受时钟的驱动活动。组合逻辑是不受时钟控制的电路块,组合逻辑望文生义经过一些信号的组合直接生成一些逻辑结果。

RTL设计中,一大问题是异步设计问题

异步数据的处置依据不同状况有很多方式,最简单的对异步的电平信号,能够直接在新的时钟域中加2级存放器来隔离,防止不定态的发作。关于总线的处置或者脉冲的处置,则需求同步模块。同步模快普通是指需求握手信号,就是前一级时钟通知采样的时钟——信号ok了,采样的第二个时钟再去采样,采好后再通知前一级时钟,我搞定了~那样前一级时钟就能够换数据或做其他处置。


有一种状况就是前一级时钟太快

形成第二级来不及传送信号,则需求参加FIFO作为隔离,就是让那些数据先放好,我在渐渐来取。这个FIFO的设计触及到读写地址的判别,写满或读空都需求作相应处置,读写地址之间的判别只能在其中一个时钟域中进行,这自身又触及异步信号的处置问题。普通用格雷玛处理,或者有些中央直接能够判别地址高位,这些办法的目的就是不能让地址在比较的时分不稳定。


芯片设计制造


RTL设计中,时钟自身的设计问题也要留意,我们在一个芯片中,尽量把时钟产生电路放在一块,主要是从综合DFT的角度去思索的,让这些时钟统一管理和约束。时钟的分频、切换也要特地处置,否则容易产生毛刺等事情。

RTL设计中还有很多需求留意的问题,比方可综合性,还有要思索到电路的面积,以及响应速度等等,这些问题是RTL coding的根底问题。代码写完后,需求进行的是考证工作,下面谈谈这方面的事情:

芯片考证普通有这几个层面
一个是RTL级或者Netlist(pre or post PR with SDF),这个也是普通意义上的芯片考证工作,一个是FPGA级的,也是RTL,只不过download到FPGA中,借助硬件环境,也能够直接做应用实验。

芯片考证的工作量在芯片设计中占领了大局部的时间和精神
无论是哪种考证,都需求搭建测试平台(testbench),考证平台从软件构造上模仿芯片的工作环境。既有明晰的连线构造,也有完成这些测试所需求的非构造性的函数或任务包。测试平台中的被测试芯片是RTL级的,测试向量或者说施加的鼓励能够是verilog/VHDL,HDL言语自身就具有比拟完善的行为级描绘功用,也能够满足绝大局部测试平台的搭建和测试鼓励的产生,当然我们面对更复杂的设计,或追求更高效率,也能够运用其它被编译器兼容的言语,如C/C++、SC、SV等等。

很显然,测试鼓励是有时间概念的,是按次第进入和流出芯片的
运用的这些非电路描绘言语和功用和软件简直是没有区别的,所以考证中也越来越多地运用软件的一些技术,如面向对象的编程技术、SystemVerilog、Specman E等。

无论传统的考证还是最新的考证办法学,都需求追求考证的收敛性,即考证完整是自动化的检测,除非debug,我们无需经过波形判别测试经过与否。

考证系统中,运用的普通是存储器的模型加上文本格式的代码文件,普通完成是直接经过系统读入指令把文件读入到存储器模型中。(有些仿真工具能够直接经过选项导入,相似SDF文件,如工具nscim)。


芯片制程


仿真器能够直接写出指令执行的log,以用于debug,不过如今有更先进的方式用于复杂SoC考证,如Codelink工具,可以在原仿真器的根底上,树立起MCU和HDL电路曾经软件的关系,经过展现波形和固件(firmware)源码的链接进行更便当的debug。

(科技产业责编:陈峰 )
2022年01月25日 14:38[查看原文]