昨天的文章,我们谈了SoC技术的概念,基本构成,介绍了基于IP模块的SoC设计方法,以及IP的分类,今天我们来聊一聊用SoC技术设计芯片的详细步骤。

用SoC 技术设计系统芯片,一般先要进行软硬件划分。将设计基本分为两部分:芯片硬件设计和软件协同设计。今天的内容重点描述硬件设计部分,软件协同设计部分,只简单带过。
一般的芯片的设计过程分为以下步骤:
确定规格
设计人员根据产品的应用场合,设定一些诸如功能、操作速度、接口规格、环境温度及消耗功率等规格,以此作为将来进行电路设计时的依据。
软硬划分
在规格确定之后,在此基础上,进一步规划软件模块及硬件模块该如何划分,哪些功能该整合于SOC 内,哪些功能可以设计在电路板上。
硬件模块实现及仿真
依据功能将SOC 划分为若干功能模块,并决定实现这些功能将要使用的IP 核。此阶段将直接影响SOC 内部的架构,以及各模块间互动的信号,未来产品的可靠性。
决定模块之后,可以用VHDL 或Verilog 等硬件描述语言,进行各模块的设计实现。接着,利用VHDL 或Verilog 的电路仿真器(modelsimNC-verilog),对设计进行功能验证(function simulation,或行为验证behavioral simulation)。注意,这种功能仿真没有考虑电路实际的延迟,是一种理想状态下的仿真,无法获得精确的结果。

逻辑综合
确定设计描述正确后,可以使用逻辑综合工具(synthesizerdesign compiler)进行综合。综合过程中,需要选择适当的逻辑器件库(logic cell library),作为合成逻辑电路时的参考依据。
描述文件的硬件语言设计风格,是决定综合工具执行效率的一个重要因素。事实上,综合工具支持的HDL 语法均是有限的,一些过于抽象的语法,只适于做为系统评估时的仿真模型,而不能被综合工具接受。逻辑综合得到门级网表。

门级验证(Gate-Level Netlist Verification)
门级功能验证主要的工作,是要确认经综合后的电路是否符合功能需求,该工作一般利用门电路级验证工具完成。注意,此阶段仿真需要考虑门电路的延迟,门电路的延迟,可以从逻辑综合的输出获得。
布局和布线
布局指将设计好的功能模块合理地安排在芯片上,规划好它们的位置。布线则指完成各模块之间互连的连线。注意,各模块之间的连线通常比较长,因此,产生的延迟会严重影响SOC 的性能,尤其在0.25 微米制程以上,这种现象更为显著。
电路仿真
在这个阶段,除了重复验证SOC 的功能是否外,还需要确认在考虑门电路延迟和连线延迟的条件之下,电路能否正常运作。
电路仿真是基于最终时序的版图后仿真,往往作为流片前签收sign-off 的条件。进行时序仿真时候,一般使用标准延时文件(SDF),输入延时信息。由于需要考虑的参考很多,这次仿真时间将会很长,一般是先前的仿真时间的几倍。

软件协同设计
同时进行的软件协同设计,要考虑指令集、指令编译系统、开发集成环境、模拟仿真设备等。
小结
在整个的流程当中,我认为其中有三个地方比较关键:
- 先进的设计工具及可靠的设计方法。设计工具和方法决定了SoC 设计效率和芯片性能的基础。对于在进行具体的SoC 设计的同时,高效和及时的EDA 厂商的设计工具本地化支持,以及先进设计方法的交流也是一个SoC 芯片设计成功及能持续提高的重要保证。
- 适当的IP(包括IP 提供商及其IP 的选择)和可靠的Library(包括Library 提供商的选择)。
- 在硬件和软件设计的过程中,需要进行系统验证,一般对于数字电路采用FPGA 基本就可以实现验证过程,而对于数模混合电路的系统芯片来说,验证则要复杂得多。