对于一个芯片设计企业,需要怎么样的IT支撑,这看起来并不是那么重要,并不影响芯片企业是否取得成功,但真正进入这个行业,你会发现,这里还是有一些门道的。
实际上,芯片设计企业对于IT的依赖很重,并没有想象的那么简单,我这里简单整理一下,其中的要点。
首先,讨论支撑点前,我们先来看一下芯片设计企业的一些特殊性,行业背景:
一:行业背景
1:芯片设计行业比较封闭,默默的发展了将近40年,相关的管理手段还比较传统,和互联网的开发环境有很大的差异。主要一个原因是,代码的安全性要求更高。因为一旦代码和设计被外部获取,可能全部知识产权都被窃取,会导致整个产品在商业上的失败(因为产品的研发周期较长,更新较慢)。所以,芯片行业的开发/工作环境会相对特殊,需要有严格的安全保障,保护代码和设计,甚至文档和计划的安全。
2:芯片的验证和测试是一个庞大的事情,因为芯片的规模非常的大,而测试和验证/仿真需要有很高的覆盖度,因此,不论是在计算机上仿真验证,还是在板上测试,都非常的消耗资源。主要涉及功能,性能,可靠性测试和验证。硬件行业的测试更多采用的是仿真,仿真时需要高密集运算资源,一般是采用高阶的CPU,我们称之为HPC计算集群。这有点类似目前大模型训练需要的AI智算资源,只是芯片的验证需要的是高密集运算(CPU)而不是GPU资源。这些资源往往都是非常贵的,一台普通运算服务器,往往需要 20-40万,一款普通FPGA芯片的研发,可能需要50台以上的资源,也就是说,光是运算服务器可能就需要千万级的投入。
3:硬件需要做上板测试,需要配合其它测量仪器,相应的验证板卡也有环境要求,测量仪器,如:高带宽的高速示波器价格非常贵。一般需要建专用的实验室,实验室需要严格的安全保障。
4:需要做可靠性,老化测试以及一些专用的芯片测试,除了要开发专用的测试板,还需要使用到专用的ATE测试机台,因为价格问题,还很可能会是远程按小时租用,因为需要传送相应的测试代码,所以,也需要有相应的安全管控。
5:出于成本考虑,如果并不是长期需要计算资源,可能还需要考虑租用或者使用第三方的云服务资源,采用混合云方案,这可能在芯片企业的开始阶段是必须的,弥补一些短时的运算需求。
6:芯片设计会用到大量的EDA工具(当然,主要是三大厂的工具),包括模拟,数字,前后端的各种工具。由于芯片设计要匹配工艺设计厂的要求,可能还需要使用EDA工具的不同版本,所以,需要有很好的版本管理,由于软件的费用昂贵,需要有合理的License管理(不能浪费)。而EDA工具的维护,我们称为CAD管理,也是必须的。
从上面简单列出的这些需求,可以看出,芯片设计企业,对于IT的需求远比普通软件企业要复杂。如果不能提供好的支撑,很可能会影响产品。
讲了背景,我们再回到问题的根本,以终为始,我们需要支撑的主要目标是什么?
二:IT支撑的目标
下面,我们来仔细看看这三个主要目标:
首先是时间:对于芯片这种产品,时间虽然长,但往往也是最重要的,如果没有搭建合理的IT支撑,可能会让研发的资源不能及时到位,开发环境可用性不强,导致研发进度受很大影响。
然后是质量:花多少钱,办多少事。对于芯片这种高技术含量的产品,质量问题和测试的力度息息相关,而测试的力度往往取决于可以投入的可用的资源。所以,IT建设的好坏,会影响产品的质量,比如:性能测试的力量,可靠性测试的完整度。
最后是成本:高技术含量的芯片,比如:高工艺水准,高算力能力的芯片,可能需要更多的运算服务器来支持研发,服务器的利用度非常重要,如果光有服务器,但不能充分在7*24小时内高负菏运算,那肯定是很浪费,如果运行程序经常失败,那也不行。合理的运算资源调度,非常的重要。
前面提到过,芯片设计最终的资产就是代码和设计,而代码的安全是企业生存的根本。所以,在提供相应支撑的时候,一定要考虑适度的安全,否则,给他人做嫁衣裳,竹篮打水。但是,安全与效率往往是相悖的,所以,如何权衡两者,做到适度,是非常有讲究的。
我们认为这是IT支撑主要分为技术维度,信息化支撑,常规办公支撑。今天,我们会重点谈它对芯片设计企业的技术支撑。后面会再说说芯片行业的信息化支持,至于常规办公的桌面运维,就是大家都清楚的常规运维,这个就要讲了。
三:技术服务要点
对于技术支撑,我们把重要的点拆解出来,下面的图有一定代表性,我们逐一讲解。
3.1:VDI 远程桌面
出于安全考虑,需要将开发环境进行物理隔离,也就是我们传统讲的红区开发,红区建立的方法,一般是通过远程桌面来搭建,也就是工作的环境在服务端,所有文件都只能进不能出,操作人员通过远程登录服务器,进行工作,这样来保证数据的安全。
所以,登录服务软件的选择很重要,但实际符合芯片设计行业的并不多。如果不想踩坑,性能最佳就是 ETX了(Exceed TuborX),芯片的版图设计,对操作的界面响应度要求高,目前看来,能稳定,低带宽满足要求,只有这一款软件。基本上是在业内首选。但价格非常的昂贵。
我们曾经尝试过NoMachine,但确认无法达到要求。也使用过国内的产品(勉强可用,但性能和体验仍然是弱于ETX,并且也不便宜)。
这是连接工具,另外,对于登录服务器的使用,也会有一些讲究。因登录人员众多,一些占用内存较高的应用,不建议在登录服务上直接使用,当然,你也可以通过建立较大的登录服务的集群来解决问题,但这样并不划算。登录服务不建议做复杂的操作。建议将其转移到运算服务器上。比如:一些耗内存较大的IDE工具。
3.2:HPC运算集群
对于大规模的仿真,验证,测试,需要提供计算集群来完成,来保证计算资源能得到充分利用。集群调度需要软件支撑,一般采用的是IMB LSF集群管理(也会有一些基于开源的产品,但稳定性不好)。
运算集群的管理方式,主要是通过队列定义。不同队列因为使用场景不同,可挂接不同的物理资源。主要考虑 CPU核,内存,磁盘I/O,网络的不同要求。
还有,根据运算任务的时间特点。结合资源需求,进行队列的规划。
按行业的标准,一般希望有 60%以上的资源利用率,最佳利用率是 70-85%。利用率主要考察CPU,内存,磁盘的使用。
在业务早期,有可能服务资源较少,不太可能跑满,但随着业务成熟, 一定需要大量的运算资源。一些仿真验证的工作,也一定是7*24小时不停的跑。
我们有时会碰到如下一些场景:
1:IDE工具编码,如:vs-code, cline,…… 高内存使用
2:EDA工具,如:Virtuoso…… 需要很高操作响应度
3:软件的构建/编译。需要高磁盘 I/O
4:验证,仿真,测试 需要高 CPU,高内存
5:EDA Flow 运行。需要 高CPU,高内存
在使用LSF定义队列和bsub提交任务时,需要注意保留使用数据作为参考,不断优化。为了保证关键任务始终可用,还需要提供优先级,需要做相应的保护设置,限制资源的使用。
3.3:CAD 管理
包括开发环境,主要是各种EDA Tools 的安装和配置。处理各种环境变量和依赖项。
不同版本的管理,主要通过Modules工具,License的管理可以采用标准的软件,也可以直接使用FlexLM的管理功能(因为大多EDA使用的都是Flex)。
另外,还需要关注不同tools的 job 执行情况,做相应的优化。
3.4:存储/备份
最头疼的可能是存储的问题。由于开发规范的原因,一些管理不规范的部门,运行的文件无法及时备份/转移和清理,会导致无谓的空间浪费。特别是NetApp这种高费用的磁盘空间,不可以无限扩容,必须要将文件转储或者清理。
一般的处理方案:
1:对于个人,按岗位提供固定的限制内的磁盘空间。
2:业务运行产生磁盘消耗应该在公共空间使和,而公区空间按一定规则对数据进行保存,然后定义合理的文件转储和清理的规则,自动进行磁盘的整理。
另外,最关键的数据一定是在机要库中(SVN,Git,SOS),一定要及时备份。对于权限,需要做合理的管理管控,按最小原则授权,并且授权要做到自动化,定期让业务负责人对权限进行审视。
3.5:网络管理
因为安全原因,会划分,红区(开发绝密区),实验区(实验室区域),黄区(普通办公区),绿区(公网区)。需要做合理的网络规划。一般是通过路由器和防火墙来配合管理。
对于芯片的上板测试,会存在一种情况,代码在红区,但需要不断输出位流结果到测试板。这时候,可以提供远程调试服务,达成相应的要求(有相应的软件支持,有些EDA工具本身也支持)。
对于跨区的文件传递,用户间的共享,可提供专用文件传输工具。(如:飞弛)。
对于有安全要求的转移,可以集成审批流程。
对于一些特殊的数据,比如:红区的位流要自动扭转到实验室。可以使用工具对数据文件进行特征训练,然后特例放行。还是非常方便的。
3.6:安全管理
首先,是IT运维自身的安全,一般是通过规范化流程,完全数据审计的方式来达成。另外,需要将管理权和操作权分享。
办公电脑最好采用台式机,控制好存储读写的端口和外设。
如果有采用协同办公软件,如果是公网的,需要看相应的软件的安全控制功能。这方面,飞书做得比较好。
对于邮件,需要有合理的管控。
对于互联网访问,如果可以只在绿区访问,那是最好的。绿区最好设置在专用电脑,控制内容只进不能出。如果一定要在本地电脑上网,那只能做严格的事后审计和关闭一些网站。
办公区的打印可以做到实名和数据可审计。
安全涉及问题很多,还是服务器的网格安全等……不再一一细讲。
3.7:CI/CD DevOps 平台
CI/CD,DevOps一开始是纯软件行业,特别是互联网行业的说法。但其实芯片设计企业也会用到。特别是需要做EDA软件开发的企业,以及在芯片验证,生产测试的环节,实际上涉及大量的自动化/回归测试的场景,都可以搭建构建和输出平台,自动完成各种环境输出,完成自动化的验证和测试工作。当然,对于和硬件相关的测试,要做到自动化,需要做一些到电脑的数据转化工作。
四:信息服务要点
对于信息服务,实际上最重要的是如下几个点:
协同办公。
产品管理,项目管理,客户管理,
数据整理管理,
如何应用AI大模型为开发提效。
4.0:协同办公平台
这个市场上的软件很多,大企业也有自研。如果采购软件,那安全可能会是一个问题,要根据实际的需求来选择。
协同平台一般会有流程审批,有消息通道,这个可以作为重要的开发过程管理。
4.1:产品管理
产品生命周期管理,我之前的文章提到过,有标准的IPD管理规范。
-
Charter(项目规划):启动项目的初始阶段,设定需求、目标。
-
Design(设计):进行产品设计,包括硬件和软件设计。
-
Validation(验证):产品测试和验证,确保其符合规格要求。
-
Pilot(试生产):在大规模量产前的小规模生产,测试产品的生产可行性。
-
Mass Production(量产):大规模生产阶段,产品开始进入市场。
-
In Use(使用中):产品投入使用后的监控和反馈阶段。
过程和决策/技术评审,可以通过信息化系统来完成,因为这些过程基本都是固定的。一些工作任务结点可以定义专用的流程来控制和沉淀经验,非常重要。对于评审的模板也需要重点设计和不断优化。
4.2:项目管理
项目管理不再多说,有很多成熟软件。芯片行业一般要求本地部署,所以,选择最多会是Jira。它的二次开发能力强,基本上是行业标准。国内有Ones,也是不错的选择,基本可以完成瀑布/敏捷的研发管理。
4.3:客户管理
客户管理这里分为客户技术支持和客户关系管理。
客户关系指的是开拓和维护客户,这对于市场最为重要。
技术支持是指已有客户的维护工作,产品的需求大都来源于客户,需要做好相应的需求跟踪,并且与产品研发拉通进行管理。
4.4:二次开发平台
一定需要有一个二次开发平台,可能是一款低代码平台,或者像飞书多维表格这样的0代码平台。可以定制一些小的需求。
4.5:AI大模型应用
现在各行各业都需要应用AI大模型来赋能,最近爆火的DeepSeek又将开源模型的能力提升了数倍,成本大大聊低。所以,如何利用好私有大模型来为开发提效,是非常重要的,否则,可能会被同行远远落下。
好了,就先凑这么多内容了。