SoC(System on Chip,系统级芯片)是一种将完整的电子系统集成到单一芯片上的技术。其核心目标是通过高度集成化设计,将多个功能模块(如CPU、GPU、内存、电源管理、通信接口等)整合到一颗芯片中。
SoC的设计流程可以划分为前端设计(Front-End)、中端设计(Mid-End)、后端设计(Back-End)这三大部分,每部分包含的具体环节如下图。
前端设计(Front-End Design)
目标:功能定义与逻辑实现,与工艺无关。
1. 产品定义
根据产品的应用场合,确定芯片功能、性能、功耗、面积等指标。
2. 架构设计
定义软硬件划分、总线架构、IP核选型(如CPU、GPU、TPU等)。
3. RTL开发
使用HDL(硬件描述语言)开发定制IP或集成第三方IP(如RISC-V处理器、DDR)。
4. 功能验证(前仿)
基于UVM搭建验证平台,进行功能仿真,保证RTL代码的功能正确性。
中端设计(Mid-End Design)
目标:将RTL转换为可物理实现的网表,插入可测试性结构。
1. 逻辑综合
选择适当的逻辑器件库和SDC约束文件,将RTL转换为工艺相关的门级网表。
2. DFT(可测试性设计)
插入MBIST(存储器测试)、扫描链(Scan Chain)、边界扫描(Boundary Scan)等结构。
后端设计(Back-End Design)
目标:物理实现与工艺相关优化,确保芯片可制造。
1. Floorplan(布局规划)
确定SoC中各个模块在版图上的区域,包括标准单元、I/O接口和宏单元。
2. 布局(Placement)
根据网表和时序约束信息,结合Floorplan产生的DEF文件,使用工具自动放置标准单元。
3. CTS(时钟树综合)
优化时钟延迟与偏差,构造SoC内部全局或局部平衡的时钟链。
4. 布线(Routing)
在满足工艺规则和布线限制等约束下,根据电路连接关系将各单元和I/O接口用互连线连接起来。
5. 物理验证
包含DRC(设计规则检查)、LVS(版图与原理图一致性检查)、功耗完整性分析等。
6. 功能验证(后仿)
利用布局布线后获得的精确延迟参数(SDF文件)和网表进行仿真,验证网表的功能和时序是否正确。
7. 流片(Tape-out)
生成GDSII文件交付晶圆厂,如台积电(TSMC)、中兴国际(SMIC)等。
上面的SoC设计流程图中,STA和形式验证这两个环节在中端设计以及后端设计中都有涉及,具体作用如下:
静态时序分析(STA)
STA(Static Timing Analysis)是SoC设计中验证时序收敛性的重要工具,贯穿中端设计到后端设计的多个关键环节,以下是其具体参与环节及作用:
场景 | 作用 |
---|---|
逻辑综合后 | 初步时序收敛,避免后端设计返工 |
DFT后 | 确保测试逻辑(如Scan Chain)的时序不影响芯片功能 |
布局后 | 基于线负载模型,估算线延迟 |
CTS后 | 修正时钟树偏差 |
布线后 | 基于实际寄生参数,验证全局时序收敛 |
形式验证
形式验证通过数学方法穷举所有可能的状态空间,验证设计是否满足预设的功能属性或与参考模型逻辑等价。以下是其在芯片设计流程中的参与环节及作用:
场景 | 作用 |
---|---|
逻辑综合后 | 确保综合生成的网表与原始RTL功能等价 |
DFT后 | 确保测试逻辑(如Scan Chain)不影响功能 |
布局布线后 | 确认布局布线后的网表仍与RTL功能一致 |
最后,对芯片设计中前/中/后端的核心任务以及使用的典型工具与技术总结如下表
阶段 | 核心任务 | 典型工具与技术 |
---|---|---|
前端 | 功能定义、架构决策、RTL代码编写与验证 | Verilog/VHDL、UVM、Matlab/SystemC |
中端 | 逻辑综合、测试结构插入、初步时序收敛 | Design Compiler、Tessent DFT、PrimeTime |
后端 | 物理布局、时序/功耗/面积优化、制造规则检查 | Innovus、ICC、Calibre、StarRC |
感觉文章写的还不错的朋友,动动您发财的手指,点一个免费的关注和赞👍,感谢~~