高性能集成电路设计IT环境
----王光辉
前记:
我在芯片设计公司工作的几年中,接触到了很多IC设计环境,这些环境离不开IT的支持,但是由于芯片设计有其特殊性,一般的IT系统集成商根本没办法做好支持。另外,中国的大部分IC设计公司还属于创业阶段的公司,这些公司往往资源不足,也没有太多的钱去配置高价格的设备,所以我萌生了写一篇能适合中小IC设计公司使用的文档,这份文档将会汇集我几年工作中对于这类公司IT环境建设的体会。由于每个公司都会有其特别之处,所以我写的文档不一定完全符合你的要求,但是我会写一个符合大部分中小IC设计公司的文档。对于服务器,我选择了性价比最好的x86+linux的服务器。这篇文章前后经过了好几年,每次都是写一半,然后就放下没再拿起来。等下一次写的时候,发现整个环境已经改变,所以又不得不修改很多内容。IC设计环境是一个不断发展的过程,所以如果你看到这篇文章的时间跟我写的时间差别太大,请联系我了解最新的情况吧。
Update(2008-3-13):synopsys已经release支持multicore的Hspice了,接下来还会release其他软件的multicore版本。也就是说,以后很多软件可以并行跑,对于当前IC设计中单进程跑很久的job是一个极大的好消息。
个人简历:
2004年3月8日,入职到苏州中科集成电路设计中心做系统管理员的工作。在这之前,我在大学网络中心兼职,学习了solaris和linux的系统管理。工作之后全力进入一个新的领域:IC设计环境。从安装IC设计软件开始,了解各种IC设计软件对操作系统版本,Glibc库,内核,内存等要求;同时学习了基于flexlm的 license management软件的各种配置和含义;设计了一个通过VPN进行license分发的环境。苏州中科是sun sparc的设计环境,但是我却在工作后通过对比,发现基于x86的linux环境更加适合IC设计中的大部分阶段,比如simulation,verification,routing等。在中科,我接触了苏州大部分的IC设计公司,学习了他们的环境,也加深了我对整个系统环境的理解。
2006年4月5日,入职到盛科网络(苏州)有限公司,做IT Manager。事实上,目前为止,我的工作仍然不太忙,大部分都是杂事。因为我设计了一个很好的IC设计环境,几乎都不需要太多时间来维护。当然,我也走过不少弯路,比如服务器不稳定等问题。这些问题的解决,大部分都是经验积累的过程。我希望别人少走弯路。盛科的IC设计环境是我一直都认为非常优秀的环境,因为这个环境下设计出了好几颗大型芯片。比如IPv4/v6双栈万兆以太网交换核心芯片“Bay”,芯片规模达到1100万门电路、集成9600万个晶体管,采用0.13u高速CMOS芯片工艺。但是这个环境的所有设备成本不到50万RMB,都是价格低廉的x86服务器组成,价格最高的一台服务器也不过5万RMB。当然,要是EDA软件方面有问题,也可以找我。尽管我不做IC设计,但是我们公司所有EDA软件相关问题,基本都是我解决,因为我熟悉系统,我熟悉软件,我熟悉相关的各个方面。
联系方式:wanggh# @gmail.com
Mobile:13606212363
IC设计环境目前几个方面的需求
a. 操作系统版本要求限制比较严格
b. 低成本和高性能要求
c. 免费的集群环境软件
d. 用户使用方便
e. 快速稳定方便的存储系统
f. 明晰的目录结构设计和权限管理
g. 在跨平台环境下使用
h. 安全的外部VPN接入
i. 低成本的服务器硬件
j. 版本控制和bug控制
IC设计环境范例:
A公司:服务器集群+基于windows的客户端,通过vnc和samba访问服务器,所有的Job都在服务器上run。好处是客户端简单易用,特别是用户可以使用自己喜爱的windows平台下的编辑器编辑代码,比如UltraEdit等。并且对于不熟悉linux的用户也很方便,几乎不需要培训就可以很快进入工作状态。
B公司:Linux服务器+Linux的客户端,通过X-Windows转发使用eda软件。这样的优点是可以在服务器繁忙的时候,利用客户端的PC来工作,特别是现在的客户端PC计算能力都非常强的情况下。
综上,其实采用什么样的结构,需要结合实际情况考虑。任何一种结构都会有它自己的优缺点。建议:采用Linux的服务器集群+双OS的客户端,这样可以由用户端自行选择。
IC设计中集群的一般情况:
IC设计环境中的集群一般情况下并不能缩短单个进程的运行时间,它只是帮助你有效调度,将空闲时间都利用上。目前的这类软件有openpbs,grid enginee,lsf等。部分EDA软件可以做到缩短运行时间,比如mentor的calibre,但是它主要是软件自身的一个功能,大部分软件是没办法做到的。但是,用户完全可以把job分成多个片段,逐个计算,这样就可以分布在多台服务器上同时run了。
下面先给出一个集群环境的一般网络结构图,以方便大家能更快理解我提出的几个问题。
图中的工作站可以理解为带有linux+windows双操作系统的PC
下面我们回到前面提出的几个要求上来,看看我们如何看待和解决这些问题。
1. 操作系统版本要求限制比较严格。
每个软件对OS的版本要求不完全相同,而我们在服务器上一般只安装一个版本的OS。
大部分的IC设计软件在目前都支持redhat enterprise 3和suse 9,部分支持redhat enterprise 4。但是为了统一OS平台,我们目前最好选择redhat enterprise 3 update 8。这个选择只适合大部分情况,需要根据你的需求进行修正,也许07年下半年,大部分都只选择redhat enterprise 4作为基本平台了。某些早期的软件还要求只能使用redhat 7.2,但是如果你真选择了redhat 7.2,你现在买的服务器能否安装上redhat 7.2都是一个问题。
这里我们要注意一个原则:OS一定要选择最新update的,EDA软件要能支持这个平台。EDA软件一般选择较新的版本,最新的可能引入了某些bug,所以谨慎使用,但是新版本一般会提升性能和加强功能。比如synopsys的dc,在新的版本中引入了新的数据格式,结果是内存使用减少一半左右,而速度同时提升了一倍以上。对于软件版本的选择,确实是一个非常头疼的问题,即便是非常熟悉的人员,他也得考虑你的环境才能给出建议,所以最好做好这方面的咨询。
其他的Linux发行版大部分情况下也是可以支持,但是一旦存在问题的时候,我们解决起来就会很麻烦。所以,我强烈推荐redhat enterprise。当然,centos也是可以使用的,只是,某些软件会去检查是否是redhat,比如vcs会检查/etc/redhat-release文件,如果没有找到redhat字样,就会报错,还会报告编译方面的错误,让你花费大量时间去检查编译器和库文件问题,结果根本不是那里的问题。Redhat的enterprise是可以免费从redhat网站download的,只是没有购买软件授权而没有技术支持而已。
Notes:等我在08年3月末修改这篇文章的时候,我发现很多软件目前都支持redhat enterprise 4.0了,当然update要选择最新的。所以,如果你是做数字IC设计的,请尽量选择用redhat enterprise4.0作为OS的基本平台。同时,考虑到数字电路的规模越来越大,请考虑采用x86_64版本,当你有需求的时候,可以用64位的IC设计软件,获取大内存的支持。
2. 低成本和高性能要求
中小公司对于成本的控制的同时,要求获取高性能的系统。
高性能的设计环境一般需要高性能的cpu支持,不同的服务器平台有很大的差异。在2004年以前,几乎所有的IC设计环境都是sun服务器的天下,少部分采用HP和IBM的服务器。但是几乎清一色的RISC架构服务器。为什么会出现这种情况?因为几乎所有的EDA软件都只支持UNIX平台,同时因为sun服务器的易用性好,性价比高而获得了特别青睐。但是这种情况在03年开始改变,而04年以来,在中国很大部分新买的服务器都没有再采用Sun的服务器了。因为linux+x86服务器的性价比更高。
Linux服务器的性价比到底多高?我想举例来说明。苏州中科集成电路设计中心机房的IC设计服务器是03年采购的,基本都是Sun的服务器。服务器是双CPU的Blade2000,4G内存,价格大约10万一台。05年成立的盛科网络(苏州)有限公司采购的全是x86的linux服务器,配置同样为双CPU,4G内存,价格大约2.5万。以上两个配置的服务器,同样跑一个vcs的simulation,Sun服务器完成时间大约比Linux服务器的多2倍。这样的性价比会让大部分的公司都做出正确的选择。
Notes:盛科05买的第一批服务器,目前的性能看起来就非常差了。他们的性能只有06年采购的基于单核心Opteron的服务器的70%,比起后来的双核以及4核心处理器的差别就更大了。目前盛科的一台最新的服务器,配置为2*XEON 5430,8*2G内存,价格大约2.6万。但是整体性能保守估计是05年采购的第一批linux服务器的5倍以上,价格跟当初购买的服务器差不多。
3. 免费的集群环境软件
集群环境的软件最好能免费,否则大量软件费用的支出是一个中小公司无法承受的。
大部分的外资IC设计公司使用LSF来作为集群环境的管理软件。在这里给platform公司做一小广告。LSF对于IC设计环境来说,确实很不错,可以说是IC集群环境中使用的最多的集群管理软件。但是,这个软件的授权价格费用很高,一般的小公司承受不了,对于初创公司,更是一笔很大的开支。所以我推荐使用sun grid enginee,基本能满足要求。Sun是一家伟大的公司,它把很多我们喜欢的东西都开源了,对于小公司来说,这是很幸福的事情。Sun Grid Enginee尽管目前还没lsf做的好,但是就凭借不花钱这一条,对预算紧张的公司来说都是值得部署的。
4. 用户使用方便
使用方便,对使用者(用户)的培训必须短,用户能自行很快上手。
集群软件的使用使用命令很少,以前提交的命令前面加入qsub就可以提交到default queue了。例如:
$qsub job.sh
$qstat
同样,用户从windows登录服务器的时候,可以通过vnc登录,通过samba访问后用UltraEdit来编辑代码。如果用户使用的是linux的客户端,完全可以ssh到服务器后,在服务器上直接run job或者提交到集群,或者打开GUI的软件,通过X-Windows转发,对用户来说,都是非常简单方便的。
最重要的是对使用者来说,服务器上的所有一切都是透明的,他不用关心服务器的软件在哪儿,Jobs会在哪台服务器上跑。他只需要提交到队列,然后自己等结果即可。所有者一切,都是通过自动的调度完成。