张海平,万 清
(中国电子科技集团公司第58研究所,江苏 无锡 214035)
FPGA(Field Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。当前,中国所采用的FPGA芯片基本依赖于进口,受制于国外巨头公司的垄断,在芯片型号和封装类型等方面都受到很多限制,成本压力很大,在国防战略安全方面也有很大的风险。与ASIC不同,FPGA是由存放在片内RAM中的程序来设置其工作状态的,用户需要对片内的RAM进行编程。FPGA产品不仅包含FPGA芯片,还必须提供配套的EDA软件才能使用。配套的EDA软件的主要功能包括设计输入、综合、仿真、实现和下载,涵盖用户FPGA 编程的全过程。
研发具有自主知识产权的FPGA芯片及其配套的EDA工具具有重要意义,已成为一个迫在眉睫的问题。自主千万门级FPGA产品开发平台集成了软件开发和芯片设计两种环境,用于研发具有自主知识产权的千万门级FPGA产品。软件开发环境集成了 Microsoft Visual Studio和其他软件开发工具,用于开发与FPGA芯片配套的EDA软件。芯片设计环境集成了一套满足pdk库要求的EDA工具,用于开发FPGA集成电路芯片。两种环境集成在一个平台上,便于软件开发工程师和芯片设计工程师之间的数据传输和信息共享。
系统集成(SI,System Integration)是以用户的应用需要为出发点,综合应用各种计算机网络相关技术,适当选择各种软硬件设备,经过相关人员的集成设计、安装调试、应用开发等大量技术性工作,使集成后的系统能够满足用户对实际工作的要求,开发出具有良好性能的计算机网络系统的全过程。FPGA开发平台的系统集成以虚拟化技术为基础,集成了软件开发和芯片设计两种环境。虚拟化技术是对物理资源(CPU、内存、网络等)的逻辑表示,以降低物理资源不同层次之间的耦合程度,使系统所需资源不受物理资源的限制,从而获得高性能、高可扩展性等特性。通过应用虚拟化技术,实现主机和存储资源的一体化整合、主机和存储资源的共享利用,提高资源利用率。
虚拟化软件品牌有VMWare(免费的是ESXi,收费的是vSphere)、思杰(免费的是XenServer,收费的是Essentials)、KVM、微软(Hyper-V)等。VMWare的vSphere相对比较成熟,可以安装于大多数操作系统。通过服务器虚拟化,可以将一台服务器当做N台服务器来使用,比如一台性能强劲的物理服务器可以虚拟出数台虚拟服务器,这样对于计算能力要求不高的系统,可以实现多个系统在一台物理服务器上运行而不会互相影响。多台物理服务器可以组建服务器集群,使用相应管理软件来托管,实现负载均衡和故障转移。服务器集群包括运行服务器和存储服务器。运行服务器承载计算负载,存储服务器承载存储负载。服务器集群将运行服务器组构成一个虚拟化资源池,然后将虚拟化计算资源重新划分,并分配给桌面虚拟机的实例。虚拟机实例能够无缝运行电脑操作系统和应用。根据同一个虚拟机模板复制、创建而成的桌面虚拟机实例具有相同的配置和功能。当服务器集群中的某个物理服务器出现异常时,其上面运行的虚拟机实例可以快速地迁移到其他物理服务器上继续运行。存储服务器上存放所有的桌面虚拟机实例,集中存储用户配置文件、用户资料及虚拟机OS镜像。
本文的FPGA开发平台选用VMware ESXi5.1作为服务器虚拟化软件,平台总体框架如图1所示。
图1 FPGA开发平台总体框架
(1)用5台戴尔R720物理服务器组建服务器集群,用NetApp FAS3210提供共享存储。服务器集群提供一个虚拟化层,该层可将物理主机的处理器、内存、存储器及网络资源等抽象化为多台虚拟机。
(2)vCenter Server是整个虚拟化架构的管理中心,主动监控客户端设备与桌面虚拟机的连接状态,当客户端设备请求与桌面虚拟机断开连接时,vCenter Server便会结束会话、断开此连接,根据相应的调度策略释放虚拟机资源,对桌面虚拟机实例做相应的处理。vCenter Server同时动态地监测服务器的负载情况,保证将用户连接到负载最轻的服务器,并保证任何服务器出现故障后自动把用户引导到正常工作的服务器上。
(3)vShere Client用作虚拟机的管理控制台,提供vCenter Serve和ESX主机的管理界面。
(4)按照FPGA芯片设计流程,在两台高性能服务器上集成FPGA芯片设计流程中各个阶段所需要的Cadence、Synopsys、Mentor等公司的各种EDA工具。
(5)本地用户使用SunRay瘦客户机访问各自的虚拟机,远程用户使用SGD访问各自的虚拟机。本地或远程访问都是通过SunRay server或SGD Server推送桌面到终端,在服务器和终端之间传输的仅仅是鼠标键盘的输入和屏幕的变化量,终端只负责交互,所有计算和存储都在服务器端完成。
依据上述设计方案,具体实施的关键步骤如下:
(1)在5台戴尔R720物理服务器上安装VMware ESXi 5.1操作系统。在其中一台ESXi主机上安装vCenter Server,在管理用PC机上安装vShere Client。在vShere Client上登录到vCenter Server,建立主机集群cluster,将5台主机加入cluster,将NetApp分配的存储加入数据存储群集,为每个vlan建立对应的虚拟交换机。至此,一个完整的虚拟化层构建完毕。
(2)新建几个虚拟机,分别安装Windows 2008 R2、Windows7、Windows8、Solaris10、Redhat Enterprise等操作系统,并将安装好的操作系统转换成模板。
(3)从模板部署虚拟机,分别建立SunRay server、SGD server、SGD GateWay server、AD server、exchange server、ftp server、svn server、bugzilla server、NTP server、NIS server、FLEXlm server等服务器。
(4)根据EDA工具对操作系统版本的要求,分别在两台高性能服务器(戴尔R910,每台1T内存,40核CPU)上安装Redhat Enterprise 4 update 8和Redhat Enterprise 5 update 8两个版本的操作系统。集成电路芯片设计集成环境IDE(Integrated Development Environment)需要满足foundary厂家PDK库的要求。PDK(process design kit)是沟通IC设计公司、代工厂与EDA厂商的桥梁。PDK用代工厂的语言定义了一套反映foundary工艺的文档资料,包含了反映制造工艺的基本数据集。根据PDK对EDA工具及版本的要求,在两台高性能服务器上按照FPGA芯片设计流程,集成了设计流程中各个阶段所需要的Cadence、Synopsys、Mentor等公司的EDA工具。
(5)安装版本控制和缺陷追踪等管理软件。在整个FPGA开发流程中,无论是配套EDA软件的开发还是FPGA芯片设计,每一个设计环节都需要一个团队来完成。在多团队紧密合作开发流程中,版本控制和缺陷追踪等管理软件是必不可少的。在FPGA开发平台上,安装了SVN、SOS版本管理软件和Bugzilla缺陷追踪软件。SVN是开源软件,适合配套EDA软件开发中的代码版本控制和芯片设计流程中的文档版本管理。SOS是ClioSoft公司开发的集成电路设计数据版本控制软件,支持Cadence公司virtuoso平台的DFII。 开源的Bugzilla是一个搜集缺陷的数据库,它用于记录和管理产品缺陷从发现到修复的全流程。
(6)从模板部署虚拟机,按设计工作需求,为每位用户分配一台或两台虚拟机。每台虚拟机均按需求配置好软件开发编程、文档处理、邮件通讯等环境。为保障FPGA开发平台稳定运行和资源的充分利用,需要对平台中的虚拟机进行合理的调度,确保虚拟化服务器集群的负载均衡和存储系统的负载均衡。在优化过程中需要分析虚拟机的历史数据,统计虚拟机资源的使用情况,对分配不合理的虚拟机进行优化,为每个虚拟机分配合理的计算能力(CPU和内存)以及存储和网络流量。
(7)登录SunRay server,将分配给用户的虚拟机和集成电路芯片设计集成环境发布到对应的SunRay终端。打开Windows虚拟机上的远程登录服务,选择仅允许运行使用网络级别身份验证的远程桌面的计算机连接。Linux操作系统配置XDM服务以允许远程登录。
(8)登录到SGD Server,发布用户对应的虚拟机和集成电路芯片设计集成环境。SGD(Secure Global Desktop)是一个跨平台的应用软件,具有Web化、跨域的安全访问控制、优化的远程访问效率和灵活的用户认证等特点,可以快速实现网络应用的集中管理和发布、安全地实现远程应用访问。在FPGA开发平台中,软件开发环境和集成电路芯片设计环境中的各种应用,如linux系统的EDA工具、windows系统的软件开发工具等应用程序,都可以通过SGD远程显示,远程用户用IE浏览器或Firefox浏览器通过互联网就能够使用FPGA开发平台上的各种应用软件。
在FPGA开发平台上已经完成第一个全自主千万门级FPGA的MPW芯片设计。设计团队采用中芯国际SMIC 40 nm CMOS技术,用正向设计的方法,设计基于SRAM配置的面向高性能通用逻辑与信号处理的自主千万门级FPGA器件。器件含有数字ASIC电路、全定制电路、数模混合电路以及memory complier等。
FPGA开发平台采用虚拟化的网络架构,集成FPGA软件开发环境和集成电路芯片设计环境,利用SVN、SOS版本控制和Bugzilla缺陷管理软件,进行设计数据和文档的规范化、标准化管理,实现了设计数据的版本可追溯、可查询、可更新。FPGA开发平台是为面向高性能通用逻辑与信号处理的自主千万门级FPGA课题产品研发建立的设计平台。在FPGA开发平台上,已经完成第一个全自主千万门级FPGA的第一次MPW芯片设计,打通了数字ASIC设计、定制设计、数模混合设计全流程。
[1] 张峰,李艳,等. 用于FPGA的多层次集成设计系统的设计与实现[J]. 深圳大学学报理工版,2012,29(5):377-385.
[2] 朱运航. EDA技术在芯片设计中的发展与应用[J]. 信息技术,2006,(5):184-186.
[3] 宋正国,刁秀丽. 虚拟实验教学环境研究现状及趋势探悉[J]. 现代教育技术,2009,19(12):115-117.