soc设计方法与实现_浅谈SoC (System On Chip)技术(二)

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

76509bc30c264d7bd3eb7134868117f6.png

用SoC 技术设计系统芯片,一般先要进行软硬件划分。将设计基本分为两部分:芯片硬件设计和软件协同设计。今天的内容重点描述硬件设计部分,软件协同设计部分,只简单带过。

一般的芯片的设计过程分为以下步骤:

确定规格

设计人员根据产品的应用场合,设定一些诸如功能、操作速度、接口规格、环境温度及消耗功率等规格,以此作为将来进行电路设计时的依据。

软硬划分

在规格确定之后,在此基础上,进一步规划软件模块及硬件模块该如何划分,哪些功能该整合于SOC 内,哪些功能可以设计在电路板上。

硬件模块实现及仿真

依据功能将SOC 划分为若干功能模块,并决定实现这些功能将要使用的IP 核。此阶段将直接影响SOC 内部的架构,以及各模块间互动的信号,未来产品的可靠性。

决定模块之后,可以用VHDL 或Verilog 等硬件描述语言,进行各模块的设计实现。接着,利用VHDL 或Verilog 的电路仿真器(modelsimNC-verilog),对设计进行功能验证(function simulation,或行为验证behavioral simulation)。注意,这种功能仿真没有考虑电路实际的延迟,是一种理想状态下的仿真,无法获得精确的结果。

ae04c814a4dc10b06bf702e3d89bd128.png

逻辑综合

确定设计描述正确后,可以使用逻辑综合工具(synthesizerdesign compiler)进行综合。综合过程中,需要选择适当的逻辑器件库(logic cell library),作为合成逻辑电路时的参考依据。

描述文件的硬件语言设计风格,是决定综合工具执行效率的一个重要因素。事实上,综合工具支持的HDL 语法均是有限的,一些过于抽象的语法,只适于做为系统评估时的仿真模型,而不能被综合工具接受。逻辑综合得到门级网表。

bac6a50e398042cefaf068f05d8024da.png

门级验证(Gate-Level Netlist Verification)

门级功能验证主要的工作,是要确认经综合后的电路是否符合功能需求,该工作一般利用门电路级验证工具完成。注意,此阶段仿真需要考虑门电路的延迟,门电路的延迟,可以从逻辑综合的输出获得。

布局和布线

布局指将设计好的功能模块合理地安排在芯片上,规划好它们的位置。布线则指完成各模块之间互连的连线。注意,各模块之间的连线通常比较长,因此,产生的延迟会严重影响SOC 的性能,尤其在0.25 微米制程以上,这种现象更为显著。

电路仿真

在这个阶段,除了重复验证SOC 的功能是否外,还需要确认在考虑门电路延迟和连线延迟的条件之下,电路能否正常运作。

电路仿真是基于最终时序的版图后仿真,往往作为流片前签收sign-off 的条件。进行时序仿真时候,一般使用标准延时文件(SDF),输入延时信息。由于需要考虑的参考很多,这次仿真时间将会很长,一般是先前的仿真时间的几倍。

2309970875ffb2e7fa5e6bbd795bf422.png

软件协同设计

同时进行的软件协同设计,要考虑指令集、指令编译系统、开发集成环境、模拟仿真设备等。

小结

在整个的流程当中,我认为其中有三个地方比较关键:

  1. 先进的设计工具及可靠的设计方法。设计工具和方法决定了SoC 设计效率和芯片性能的基础。对于在进行具体的SoC 设计的同时,高效和及时的EDA 厂商的设计工具本地化支持,以及先进设计方法的交流也是一个SoC 芯片设计成功及能持续提高的重要保证。
  2. 适当的IP(包括IP 提供商及其IP 的选择)和可靠的Library(包括Library 提供商的选择)。
  3. 在硬件和软件设计的过程中,需要进行系统验证,一般对于数字电路采用FPGA 基本就可以实现验证过程,而对于数模混合电路的系统芯片来说,验证则要复杂得多。