现在,芯片的功能越来越强,使用的组件(IP)越来越多,参与开发一个芯片的人员也越来越多,这对芯片的开发、更新也提出了更高的要求。
Perforce Helix Core可以很好的运用在源代码管理中,还对设计过程中的二进制文件有非常好的支持,任何规模的芯片开发团队都可以简单的将Helix Core导入到他们的工作中。Helix Core提供的Stream可以方便地管理不同团队的代码、二进制文件,本文将通过简单的示例说明如何使用Helix Core来进行芯片开发管理。
1. 芯片开发的基本流程
开发芯片时,通常一般会分以下几个阶段:
需求分析:根据需求确认需要达到的具体功能和性能方面的规格,确定设计架构,得到需要认可的设计方案。
前端设计:芯片前端设计的主要目的是根据需求划分模块功能,为后端设计提供门级网表电路的输入网表。
后端设计:芯片后端设计主要目的是根据前端设计的结果(门级网表电路的输入网表),得到可用于生产芯片的GDSII文件。
芯片制造:将后端设计得到的版图GDSII文件发给流片厂进行掩膜制造。
测试封装:按照项目的需求对制造出来的芯片做相应的测试。
迭代阶段:测试发现错误或有功能更新时,根据迭代的内容,按照上述流程标准不停的做相应的持续开发和调优芯片。
2.各阶段的配置管理需求
前端设计,有需求、设计、开发等多团队同时进行,还需要考虑外部IP、不同团队的成果物的取得及构建,有协同开发管理、分支管理的需求(Perforce Helix Core可以很好地满足这些需求)。
需求分析,参与的人员较少,文档也比较少,配置管理只需要考虑文件的版本管理和权限管理就可以(Perforce Helix Core、SVN、Git等都可以满足需求)。后端设计,有设计、开发、测试等多团队同时进行,主要是物理设计完成后,根据版本需求,取得不同团队的成果物,构建生成GDSII文件,这需要有很好的协同开发管理、分支管理、大批量、大文件的管理能力(Perforce Helix Core可以很好地满足这些需求)。
芯片制造,需要管理厂家生产用的GDSII文件的版本,只要考虑文件的版本管理和权限管理就可以(Perforce Helix Core、Git的LFS都可以满足需求)。
测试封装,主要是测试团队进行测试,并将测试结果反馈给设计、开发团队,只要考虑文件的版本管理和权限管理就可以(Perforce Helix Core、Git的LFS都可以满足需求)。
迭代阶段,这时需要考虑bug的及时对应(分支管理需求),新功能的迭代开发,这时也需要有很好的协同开发管理、分支管理、大批量、大文件的管理需求(Perforce Helix Core可以很好的满足这些需求)。
2.1 版本管理
日常开发过程中,需要对各种文件做版本管理,版本管理工具有很多,常见的Perforce Helix Core,SVN,Git可以满足小规模开发、小团队的日常版本管理的需求。
2.2 权限管理
现在用户对知识产权的保护意识在逐渐增强,Git的权限只能设定到库,而且必须将所有内容都clone到本地,存在一定的泄露风险;SVN的权限也只能设定到目录。Helix Core的权限管理可以更好地满足以下需求:
- 设定目录的权限
- 为单个文件设定权限
- 将目录的权限管理或者用户组的权限委托给非管理员用户
- 限定访问的客户端的IP地址范围
- 以组为单位设定权限,并支持子组
2.3 组装IP和分支管理
芯片开发会有多个团队协同工作,在构建时需要组装多个团队的IP做构建。
Perforce中有工作区和Stream等概念,易于灵活地将服务器端文件(文件夹)映射到本地,实现模块组装和分支管理功能。工作区:定义如何将服务器端文件获取到本地,可以将不同仓库的任意文件夹映射到本地,并可以调整文件夹获取到本地后的目录结构。不需要像Git,SVN那样使用隐藏文件夹来管理文件状态,减少磁盘空间浪费。从服务器端获取文件,可以按需进行,不需要像Git一样要clone整个Repo。
Stream:开发过程中可能应对不同需求会有多个开发分支,Stream就是Helix Core中的一种分支。这种分支除了维护最基础的分支映射关系以外,还提供了分支类型,分支合并方向,模块引用(或排除)等支持。为了易于观察分支之间的关系和差别,还提供了一个分支视图(StreamGraph)。通过引入Stream功能,Helix Core的分支管理功能更加强大。下图是一个分支视图的截图,其中每个长方形都代表一个分支,不同颜色代表了分支不同的分支类型,单向或双向箭头指示了预定义分支间并方向,绿色线代表可合并。
2.4 协同开发
现在芯片开发团队在逐渐增大,也可能有多个团队以及外包在不同地域开发,需要有效的协调不同地域的团队的开发。Helix Core支持多种多服务器架构,可以很好的支持不同团队的跨区域协同开发。通过Proxy缓存服务器,Edge服务器、Replica复制服务器提高异地的工作效率。
多区域服务器架构示例:
内部访问:
- 为提高数据的安全性,Commit服务器和Edge服务器分别有一台Replica备份服务器用于备份。
- Commit服务器和Edge服务器间用专线连接。
外部访问:
- 当访问人数不多时,可以根据地方不同直接访问A城的Commit服务器或B城的Edge服务器。
- 如果某地的访问人数较多时,可以考虑在当地搭建Proxy服务器,提高效能。
2.5 大批量、大文件的管理
现在的芯片的规模越来越大,包含的IP、文件越来越多,二进制文件也越来越大,Helix Core可以支持大批量文件、图像以及各种二进制格式的文件,SVN,Git已经不能很好的满足这些需求。
2.5.1共享存储方式节约存储空间
若资源体积较大,超出了经济的客户机存储配置,则可以考虑将只读的大量资源下载(P4 Sync)到一个共享文件存储器上(NFS等),Client机器仅在修改文件时才需要将涉及到的部分数据复制到本地,这种复制可以根据文件路径直接从P4服务器上Sync,也可以从Share Storage上复制(复制后通知p4服务器)。客户机本地修改后直接提交到P4 server上,之后Share Storage可以从P4 Server上增量Sync到最新修改。Helix Core的Workspace特性允许灵活地定义服务器上文件与本地文件的映射关系,这使得这种部署方式易于实现。
本文为节选,全文目录如下,请扫码文末二维码获取完整版。
扫描下方二维码,获取完整版指南。