前言
基于文件存储 CPFS 的 EDA 解决方案可大大加速 EDA 工作流,提高效能。 CPFS 提供高性能文件处理,缩短芯片上市周期;其云端的弹性扩展,使得业务快速上线;并行计算共享存储,加速工作流效率;同时提供简单易用的特性简化数据管理。本文详细剖析了 EDA 行业背景、EDA 芯片设计流程及 EDA 工具、EDA 工作流的存储需求和 IO 模型以及EDA 工作流的数据挑战。详细阐述了 EDA 数据上云整体解决方案以及基于 CPFS 的 EDA 解决方案、最佳实践及案例。
1. EDA 行业背景
1.1 EDA 综述
EDA 是芯片设计最上游、最高端的产业。集成电路(Integrated Circuit,简称 IC)作为半导体产业核心,由于其技术复杂性,产业结构高度专业化。目前市场产业链为 IC 设计、IC 制造和 IC 封装测试。在核心环节中, IC 设计处于产业链上游,IC 制造为中游环节,IC 封装为下游环节。EDA (Electronic Design Automation) 是指电子设计自动化用于芯片设计时的重要工具,设计时工程师会用程式码规划芯片功能,再透过 EDA 工具让程式码转换成实际的电路设计图。在 IC 设计中,逻辑合成这个步骤便是将确定的 HDL code,放入电子设计自动化工具( EDA tool),让电脑将 HDL code 转换成逻辑电路,产生电路图。之后反复的确定此逻辑闸设计图是否符合规格并修改,直到功能正确为止。
根据 EDA 市场公司分析统计,国外排名前三的应用软件厂商 Synopsys, Cadence,Mentor Graphics 占比 95%,国产化率低于 5%。大多数 EDA 应用软件可运行于阿里云公共云文件存储 CPFS。
图 1.1 EDA 中国市场公司地图 图 1.2 芯片设计- 集成电路产业链
1.2 EDA 必备基础知识
1.2.1 IC 设计工具按用途分类
•设计输入与仿真工具:Cadence Virtuoso composer/Verilog-XL/NC-Verilog;
•综合工具:Synopsys DC Expert, Cadence BuilderGates, Magma Blast RTL;
•布局和布线:Cadence PKS/SE-PKS , Synopsys Physical Compiler, Magma Blast Fusion;
•物理版图设计和验证工具:Cadence Virtuoso Layout Editor,Synopsys ComsSE, Tanner L –edit;
•模拟电路编辑与仿真:Synopsys Hspice, Cadence Spectre Simulator, Tanner S-edit;
1.2.2 EDA 主要供应商
图 1.3 EDA 主要供应商
1.2.3 EDA 业界三强
图 1.4 EDA 业界三强
1.2.4 EDA 软件功能
EDA 软件功能主要分为两类:
•设计工具:以人机接口环境为主
•综合工具:处理设计目标
1.2.5 EDA 应用
EDA 应用主要有三个方面:
•印制电路板设计:PCB
•可编程数字系统设计:CPLD FPGA SOPC
•IC (集成电路) 设计:ASIC SOC
1.2.6 EDA 工具
EDA 工具分为三部分:
•前端-逻辑工具:基于网表、布尔逻辑、传输时序等概念
•后端-物理工具:实现物理布局布线
•验证工具:DRC LVS 等
图 1.5 EDA 软件工具、应用及工具
1.3 EDA 芯片设计流程及 EDA 工具
EDA 芯片设计根据电路功能和性能需求,选择系统配置、电路形式、器件结构、工艺方案和设计规则,最终输出掩膜版图,通过制版和工艺流片得到所需的集成电路。 EDA 芯片设计的主要目标是:
- 设计出满足需求的集成电路
- 尽量减少芯片面积
- 降低设计成本
- 缩短设计周期以保全全局优化
1.3.1 EDA 芯片设计流程解析
EDA 芯片设计流程主要分为三个阶段,前端仿真(逻辑设计)、后端仿真(物理设计)以及生产制造。
图 1.6 EDA 芯片设计流程及常用 EDA 工具
前端仿真阶段的关键流程的第一个步骤是规格定制,是指芯片需要达到具体的功能和性能方面需求。然后详细设计解决方案和具体实现架构,划分模块功能,使用的 EDA 工具主要是 Synopsys CoCentric 软件、基于 System C 仿真工具。采用 HDL 编码将实际的硬件电路功能通过 HDL 语言(Verilog 或 VHDL)描述,形成 RTL(集群器传输机),使用的 EDA 工具主要是 Active-HDL,RTL 分析检查工具 Synopsys LEDA。仿真验证是非常重要的流程,在这一环节会检测编码设计的正确性,检测标准是第一步制定的规格,常用的 EDA 工具是 Mentor Modelsim, Cadence Verilog-XL/ NC-Verilog/Leapfrog, Analog Artist, Synopsys VCS。逻辑综合将 HDL 代码编译成门级网表 netlist,使用 Synopsys Design Compile, Cadence PKS, Behavior Compiler, Ambit, FPGA Express, Synplicity Synplity, Leonardo 等 EDA 工具。然后静态时序分析 STA 时序上,检查电路的建立时间(setup time)和保持时间(hold time)是否有违例(violation),常见的 EDA 工具是 Synopsys Prime Time, PEAD。最后形式验证,从功能上对综合后的网表进行验证。保障在逻辑综合过程中没有改变原先HDL 描述的电路功能,利用 EDA 工具 Synopsys Formality, Cadence Encounter Conformal。以上前端仿真的流程会循环往复确保符合最严苛的逻辑设计标准。
接下来,我们来探讨后端仿真(物理设计)的流程。首先,可观测设计 DFT 设计中插入扫描链,将非扫描单一(如寄存器)变为扫描单元,将一些特殊结构在设计阶段植入电路,以便设计完成后进行测试,借助 EDA 工具 DFT Compiler。布局规划 Place & Route 阶段,标准单一、I/O Pad 和宏单元的布局。放置芯片的宏单位模块,确定芯片大小、core 面积、row 形式、电源及地线的 ring 和 strip,通常采用 Astro, Cadence spectra: Cell3, Silicon Ensemble, Gate Ensemble, Design Planner, Physical Compiler 等 EDA 工具。时钟树生成 CTS 阶段,实现时钟树综合和时钟的布线。接下来布线,将前段提供的网表,实现成版图,这是后端仿真至关重要的流程,采用 EDA 工具 Synopsys Astro, Cadence spectra: Cell3, Silicon Ensemble, Gate Ensemble, Design Planner, Physical Compiler。通过寄生参数提取,借助 Synopsys Star-RCXT 工具,再次分析验证,分析信号完整性问题,防止因导线耦合导致的信号噪声。最后物理版图验证,DRC 对芯片版图中的各层物理图形进行设计规则检查,LVS 验证版图和电路网表对比验证,确保正常流片版图和实际需要一致。常用的 EDA 工具是 CDN Dracula, Virtuso, Vampire, Synopsys Hercules, Mentor Calibre。
最后,在生产制造阶段,送交制造 Tape Out,在所有检查和验证都正确无误情况下,将最后的版图 GDSII 文件传递给 Foundry 厂进行掩膜制造。
1.3.2 在 EDA 芯片设计流程中所需要的数据准备
- 后端设计所需数据主要由 Foundry 厂提供的标准单元、宏单元和 I/O Pad 的库文件,包括物理库、时序库及网表库,分别以 .lef、.tlf 和 .v 的形式给出。
- 前端的芯片设计经过综合后生成的门级网表,具有时序约束和时钟定义的脚本文件和由此产生的 .gcf 约束文件以及定义电源 Pad 的 DEF(Design Exchange Format)文件。(对 synopsys 的 Astro 而言, 经过综合后生成的门级网表,时序约束文件 SDC 是一样的,Pad 的定义文件 --tdf , .tf 文件 --technology file,Foundry 厂提供的标准单元、宏单元和 I/O Pad 的库文件就与 FRAM, CELL view, LM view 形式给出 (Milkway 参考库和 DB, LIB file)。
2. EDA 工作流的存储需求
2.1 EDA 工作流的存储需求和 IO 模型
2.1.1 前端仿真的存储需求和 IO 模型
前端逻辑设计产生大量仿真工作,不断改进设计需多次循环迭代。创建、调度和执行仿真作业的效率决定了芯片推向市场时间。前端验证阶段,大量作业并行访问,生产海量随机 IO 小文件,存储的 IO 特点是 KB 小文件读写为主的 OPS 型业务,伴有大量的元数据操作,对文件的元数据与数据读写速度要求极为苛刻,存储的缓存大小、读写策略及性能对验证结果产生重要影响。前端仿真的主要 IO 模型是:
- 高并发:大量作业并行访问,计算节点规模数百至上千台节点
- 随机 IO:作业生产大量随机访问 IO,元数据操作1密集型
- 海量小文件:读取编译百万个小的源文件构建模拟芯片设计,文件大小在 1K-16K 范围
- Read/Write 占比:15% ;Metadata 占比:85%
- 作业运行周期:几小时-几天
* 1:元数据操作详情如下:
元数据 操作 |
GetAttr |
检查深目录结构的目录/文件属性,并确定文件是否在创建前存在 |
Lookup |
长路径,生成多个查找 |
|
Access |
检查用户是否有创建文件的权限 |
|
SetAttr |
当权限的变化,文件重命名,删除 在目录或 Link 其他文件,等等 |
|
Create |
在模拟过程中创建新日志文件 |
|
Rename |
重命名一些文件在设计仿真 |
|
Link |
创造了大量的符号链接到源文件 |
|
Delete |
一旦测试通过,删除大量日志文件 |
|
Open/Close |
不打开/关闭同一文件的所有时间 |
2.1.2 后端仿真的存储需求和 IO 模型
后端物理设计将网表转换成版图和版图优化的仿真,处理大量物理版图制作文件。随着芯片规格增加,转化版图非常耗时。后端验证阶段,工作负载是顺序 IO 大文件,IO 特点是以 GB 级别的大文件大 IO 写为主,带宽型业务,对带宽要求较高。后端仿真的主要 IO 模型是:
-共享存储:管理芯片设计目录和文件,如 Library 、tool、user space、tmp、home 目录
-用户权限管理:不同的目录、脚本和应用程序可以访问数据
-顺序 IO大文件:芯片设计 Tape-out 阶段输出文件,作业生产大量的顺序 IO
-大文件读写:GB 级别大文件,<1GB 占比 50%,,<5GB 占比 50%
-Read/Write占比:45% ;Metadata 占比:55%
-作业运行周期:几天-几周
2.1.3 总结
图 2.1 EDA 工作流的存储需求和 IO 模型
阶段 |
描述 |
IO 特点 |
Read/Write Metadata 占比 |
存储需求 |
前端仿真 |
前端逻辑设计结果得到芯片的门级网表电路。 |
•百万级别以上的 KB 小文件 •随机读写为主的 OPS 型业务 •伴有大量的元数据操作 •对文件系统的 IO 性能要求很高 |
•Read/Write 占比:15% •Metadata 占比:85% |
•高并发 •随机 IO •海量小文件读写 •元数据优化 •缓存加速 |
后端仿真 |
后端物理设计将网表转换成版图和版图优化的仿真,处理大量物理版图制作文件。 |
•GB 级别的大文件 •顺序 IO 写为主 •带宽型业务 •对带宽要求较高 |
•Read/Write 占比:45% •Metadata 占比:55% |
•共享存储 •用户权限管理 •顺序 IO •大文件写 |
表 2.1 EDA 工作流的存储需求和 IO 模型
2.2 EDA 工作流的数据挑战
芯片设计流程高度复杂,越来越多的 EDA 厂商转向云端扩展数据存储,用户可以按需弹性配置存储资源。云端存储的高并发、高性能和良好的可扩展性,极大的缩短了EDA 工作流作业的运行时间。
图 2.2 EDA 工作流的数据挑战
性能瓶颈:流程复杂,海量文件的性能处理瓶颈
- EDA 工作流程仿真、设计、验证、生产过程中,前端仿真需要小文件高并发低时延的读写和巨量元数据处理能力,后端仿真存储需要提供很大的读写带宽满足大量数据的实时写入要求。
- EDA 整个芯片设计流程非常长,一颗芯片的时间从数月到数年不止,仿真、设计流程耗时,芯片的上市周期是赢得市场的关键,需要更快的算力和高效的存储换时间。
交付难:资源无法短期到位
- EDA 工作负载的数据容量快速增长,容量每两年翻一倍,面临数据业务突增,计算和存储资源无法短期到位。弹性开箱即用的云端资源即将成为新的趋势。
- EDA 工作负载按照传统经验对于未来所需的 IT 资源预估越来越困难,计算/存储负载不可预知,弹性的算力和存储资源逐渐成为迫切需求。
流程复杂:EDA 设计流程复杂,计算精准度要求高
- EDA 设计环节多,涉及到多个流程,每个流程有多次验证,流程与流程之间可能多次返工,大量计算单元并发,多人多部门协同工作处理复杂的数据流程,亟待提高效率。
- EDA 工作负载处理的工作流。一次流片的成本高昂,流片设计、仿真各个环节,确保零失误非常关键,需要提高数据分析和计算精准度。
数据收集和管理困难:
- 数据孤岛难以统一管理
- EDA 芯片设计过程中的数据交付复杂,且体量巨大,其中包括 IC 设计企业内部流程的数据交付、异地管理也包含第三方 IP 工艺数据,需要企业级的存储数据管理。
- EDA 设计流程数据收集困难,影响 EDA 工作流效率
- EDA 设计流程数据收集是非常关键的环节,不同的用户同时访问相同的数据集。EDA 多流程中多份数据拷贝造成大量的资源传输消耗和数据不一致,严重影响 EDA 工作流的的效率,降低了产品上市的时间。需要存储数据共享。
- 在混合云架构中,线下的用户/用户组和云端的访问权限需求统一。数据搬站上云的用户权限统一管理,零改造。
3. EDA 解决方案
3.1 EDA 上云整体解决方案架构
图 3.1 EDA 上云整体解决方案架构
架构描述:EDA 上云方案包括线下 IDC 和阿里云公共云的整体解决方案。
- 根据业务需求,线下 IDC 的解决方案包括:
1)高性能存储方案。满足 EDA 芯片设计流程数据的设计/仿真/验证/生产需求。采用 CPFS 高性能存储集群,高性能处理 EDA 芯片设计流程数据,移除 IO 瓶颈,同时兼容异构 NAS 存储。
2)通过 TCP/IP 或 InfiniBand 高速网络互连
3)高性能计算方案。并行运行 EDA 工作负载,满足算力和内存的机制需求。其中高性能计算集群的资源调度管理,多以 IBM LSF 资源调度平台为主流,实现提交运行交互作业、跑批作业等的作业调度。
4)云桌面方案。同时为满足研发人员远程桌面访问、或直接本地进行前后处理,采用阿里云远程图形工作站,远程机型 EDA 设计工作。
- 线下 IDC 可通过专线和阿里云公共云互连。
- 阿里云公共云的解决方案包括:
1)高性能存储方案。采用公共云文件存储 CPFS,实现 EDA 芯片设计流程数据的设计/仿真/验证/生产的需求。公共云文件存储 CPFS 提供高性能,缓存加速,分布式元数据架构,支持数十 GB 吞吐,百万 IOPS;易管理,全托管,免运维,简化用户管理,支持 ACL/LDAP 集成;提供高弹性,满足业务快速上线,开箱即用,加速系统交付;高可靠高可用设计,提供 99.999999999 数据可靠性。
2)通过 VPC 实现公共云网络互连
3)CPFS 集成超级计算集群、弹性高性能计算以及云桌面。大规模的 GPU 实例、神龙裸金属、ECS 实例并行运算 EDA 工作负载。其中,利用 HPC 集群管理实现端到端的计算集群管理,如创建、变更、释放、集群自动伸缩。
4)安全方案。通过终端接入、漏洞扫描、云安全中心、加密等安全解决方案,确保云端数据安全。
3.2 EDA 数据上云的 CPFS 高性能存储的多云架构解决方案
图 3.2 EDA 数据上云的 CPFS 高性能存储的多云架构
EDA 数据上云的 CPFS 高性能存储的多云架构解决方案是云原生、分布式、高性能、高可用和多云架构:
- 与资源调度管理平台、并行计算集群等计算生态整合
- 支持纯线下、混合云和公共云等多种灵活部署,EDA 多云数据流动
- 极致性能,满足 EDA 高性能计算集群的可靠、稳定、高性能需求
- 云原生极致弹性,性能和容量按需扩展,即开即用,灵活适配 EDA 业务快速发展
3.3 基于公共云文件存储 CPFS 的 EDA 解决方案的优势
基于阿里云公共云文件存储 CPFS 的 EDA 解决方案的优势主要是加速 EDA 工作流,提高效能
图 3.3 公共云文件存储 CPFS 的 EDA 解决方案优势
高性能文件处理:缩短芯片上市周期
- CPFS 提供200 MB/s/TB 和每 TB 30000 的高 IOPS,采用分布式元数据,支持客户端缓存、高可用写缓存、本地只读缓存、自定义的可变数据块条带化技术等,加速元数据处理,提高并发访问性能。满足 EDA 工作负载前端仿真百万随机 IO 小文件,后端仿真海量顺序读写大文件的高并发访问需求,简化 EDA 的工作流程,降低了仿真作业的时间,缩短芯片上市周期。
云端弹性扩展:业务快速上线
- CPFS 可以按需在线扩容 (3.6 TB起配),应用无任何感知,随着容量的提升,性能(吞吐和 IOPS)线性同步增长 。弹性扩展完美应对 EDA 工作负载的弹性资源需求。 CPFS 开箱即用,确保资源快速供应到位,业务快速上线。
并行计算共享存储:加速工作流效率
- CPFS 支持近万个客户端并行访问,海量计算实例同时高并发处理相同的处理集,CPFS 提供设计流程数据的共享访问,这些数据集无需反复拷贝和传输,极大提升了 EDA 工作负载复杂的工作流的数据共享访问能力,加速 EDA 工作流效率。
简单易用:简化数据管理
- CPFS 云端托管服务,用户无需担心物理设施和底层运维。支持 ACL 访问控制、集成 LDAP,统一管理用户访问权限。
3.4 CPFS 针对 EDA 场景数据的性能优化
CPFS 针对元数据和小文件性能优化的总结如下
- 文件以条带化的方式散列在所有的存储空间上,所有的存储节点同时对所有的客户端提供数据 I/O 服务,单个文件跨节点和存储系统分布,提高并发访问性能。
- 数据块的大小可自定义,64K, 128K,256K, 512K, 1M,2M,4M,8M,16M
- 利用 4 MB 默认块大小(block size)和基于块大小选择的可变子块大小(subblock size),可同时改善许多小型和大型块文件大小工作负载的性能
- 智能预取机制,通过对文件访问模式的预测来进行预取,降低读写延迟
- 分布式的块级锁管理,包括文件和目录两个级别,支持上万个客户端的并发访问
- 没有专用的中央控制元数据服务器,采用分布式元数据架构, 元数据处理无任何性能瓶颈
- 闪存加速元数据,元数据包括目录、inode、indirect blocks
- 支持客户端数据缓存,不同节点可以根据需要设置不同的缓存大小,缓存优化
- 高可用写缓存 (HAWC),改善小同步写性能,小同步写写往日志
- 本地只读缓存 (LROC),扩展 page pool 内存,包括本地 DAS/SSD 支持读缓存,基于策略引擎压缩有意义的数据并扩展至缓存
- IOPS QoS,支持后台限制功能,如在磁盘重建或异步复制时在后台启动 QoS,同时可灵活的设置时间周期策略, 如指定每周几天、每天的时间点等
4. 公共云 CPFS – EDA 存储最佳实践
4.1 公共云 CPFS – EDA 存储最佳实践-配置规划表
4.1.1 业务数据参考模型
最大文件数量 = 磁盘容量空间/(inode size +subblock size)
•前端仿真
-随机IO小文件读写
-文件大小:读 4K和16K,写 4K 以下
-文件个数:单目录上千个文件,集群百十亿文件
-深目录结构:deepdirectory
-Client 并发数量:100-2000
-Read/Write占比:15% ;Metadata 占比:85%
•后端仿真
-顺序 IO 大文件读写
-文件大小:>1GB 占比50%, >5GB 占比50%
-深目录结构:deepdirectory
-Client 并发数量:64-256 Read/Write占比:45% ;Metadata 占比:55%
4.1.2 配置推荐
- CPFS 存储推荐配置
•规格优选: 200MB/s/TiB 规格
•起配容量: 3.6TiB
•扩容步长:1.2TiB
•最大扩展容量:1PiB
CPFS Client 推荐配置
•CPFS Client 并发规模:数百台
•占用计算 CPU 核数比例:xx 核
•占用计算内存比例:xxGB
- 计算配置推荐
•规格优选/ VCPU/主频/内存/内网带宽: ECS EDA 主推机型
•内存压力参考:<80%-90%
•CPU利用率参考:<80%-90%
•网络延时参考:1ms
- 网络配置推荐
•网络:10Gb
- 权限控制配置推荐
•ACL
•集成 AD、LDAP
4.1.3 CPFS 存储配置及调优的重要参数示例
•元数据 Inode 设置:
-Inodesize
-maxfile
Cache策略(顺序 IO 、随机 IO、metadatadisk)
-☐enableread/writecache
-☐enablereadprefetch
条带化参数配置:I/O characteristics
-Block
-Subblock
-Sector
-Indirectblock
•性能调优参数设置:
-Pagepool
-maxFilesToCache
-maxStatCache
-maxMBps
-workerThreads
-prefetchPct
-vm.min_free_kbytes 内存占比 5-6%
•Characteristic consideration:
推荐目录结构:WideorDeepDirectoryStructures
附:客户应用调研表
应用软件调研表 |
Top3:Synopsys, Cadence, Mentor Graphics |
||||
应用软件名称 |
应用软件版本 |
操作系统类型 |
操作系统版本 |
操作系统 Kernel 版本 |
应用客户端数量 |
业务场景调研表 |
|||||||||||||||
前端仿真 |
✔️ |
规格定制 |
✔️ |
详细设计 |
✔️ |
HDL 编码 |
✔️ |
仿真认证 |
✔️ |
逻辑综合 |
✔️ |
STA |
✔️ |
形成验证 |
✔️ |
后端仿真 |
✔️ |
DFT |
✔️ |
布局规划 |
✔️ |
CTS |
✔️ |
布线 |
✔️ |
寄生参数提前 |
✔️ |
物理版图验证 |
✔️ |
计算业务运行调研表 |
|||||||
业务运行时,计算节点 CPU 占用比例 |
是否预留一部分 CPU 核 运行存储客户端服务? |
_ 核数 |
|||||
业务运行时,计算节点 内存 占用比例 |
是否预留一部分 内存 运行存储客户端服务? |
_ GB内存 |
|||||
计算节点配置实例规格 |
计算节点数量 |
是否有计算节点伸缩要求 |
最大/小节点数 平均伸缩数/间隔 |
附:计算实例详表 |
配置数量 |
地域 |
可用区 |
计算实例规格 |
操作系统类型 |
操作系统版本 |
vCPU |
内存 |
主频 |
带宽 |
存储数据模型 |
前端仿真业务访问存储数据模型 (随机 IO 小文件 关注 IOPS 元数据操作和时延敏感) |
||||||||||
读比例 |
写比例 |
Metadata 比例 |
热数据比例 |
||||||||
文件大小 |
文件数量 |
目录数量 |
目录深度 |
文件总量 GB |
Concurrent Job |
||||||
聚合读带宽GB/s要求 |
聚合读 IOPS 要求 |
聚合读 OPS 要求 |
聚合写带宽GB/s要求 |
聚合写 IOPS 要求 |
聚合写 OPS 要求 |
||||||
存储数据模型 |
后端仿真业务访问存储数据模型 (顺序 IO 大块文件 关注带宽吞吐) |
||||||||||
读比例 |
写比例 |
Metadata 比例 |
热数据比例 |
||||||||
文件大小 |
文件数量 |
目录数量 |
目录深度 |
文件总量 GB |
Concurrent Job |
||||||
聚合读带宽GB/s要求 |
聚合读 IOPS 要求 |
聚合读 OPS 要求 |
聚合写带宽GB/s要求 |
聚合写 IOPS 要求 |
聚合写 OPS 要求 |
用户访问和安全权限控制 |
|||||||||||
用户管理 |
☐ AD ☐ NIS ☐LDAP |
访问协议 |
☐ NFS ☐ SMB/CIFS ☐ POSIX ☐ 多协议互访 |
Valid User |
☐ Windows ☐ Linux |
权限管理 |
✔️ |
目录隔离 |
✔️ |
用户隔离 |
✔️ |