电子说
当前开源芯片仍存在“死结”。具体而言,芯片设计阶段需要投入大量的人力、电子设计自动化(EDA)和IP成本,因此开发人员或企业不愿意将其设计的芯片与IP开源;这导致业界与社区无高质量的开源芯片与IP可用,于是企业只能购买高价的IP;这进一步推高了开发代价,导致企业希望充分验证设计来提高流片的成功率,这又需要投入更多的人力和时间进行验证⋯⋯如此循环,最终形成了一个“死结”。
通过深入的调研并结合近年来的一些实践经验,中科院计算所团队分析了国内外开源芯片生态发展现状与趋势,认为随着开放指令集(如RISC-V)、硬件描述新语言(如Chisel)、硬件生成器敏捷开发模式、开源EDA工具、云计算等技术涌现与普及,多种技术之间相互组合并不断产生新的“化学反应”,促进开源芯片发展到了一个新的转折点,因此开源芯片面临的“死结”有望被打破。但是构建完善的开源芯片生态是一个长期而艰巨的系统工程,正如今天开源软件生态也是20余年积累而成。目前的开源芯片生态就如1990年代初的开源软件生态,全世界范围都处于起步阶段,尚无法构成一个独立(self-contained)生态——即完全采用开源模式,用开源EDA工具链开发开源IP,进而完成开源SoC芯片设计。
要实现开源芯片生态目标,我们认为需要在四个方面积极投入并取得突破:(1)开放指令集、开源IP与SoC设计;(2)开源EDA工具链;(3)低成本的芯片开发验证平台;(4)快速适配芯片的系统软件。
1.开放指令集、开源IP与SoC设计:
“指令集→处理器核→SoC芯片”是芯片设计的三个阶段,每个阶段均存在三种模式:开放免费(open&free)、可授权(licensable)、封闭(closed)。
在2010年左右,加州大学伯克利分校(UC Berkeley)认识到只有基于开放的指令集,才能实现开源处理器核以及开源SoC芯片。因此他们推出了一套开放指令集RISC-V,允许全世界免费自由地使用RISC-V指令集规范设计各自的处理器。但值得一提的是指令集(SA)仅仅是规范标准,往往用一本书甚至几张纸即可描述,需要根据规范编写出相应的源代码,才是处理器核。因此仅有开放指令集还远不足以构建开源芯片生态,还需要一系列开源的IP和SoC设计。
开源IP和SoC设计要成为主流需要解决两个问题:一是解决P核的质量控制难题。开源IP核并不是一种新的模式,事实上提供开源P核的OpenCores社区已经存在了20年,到如今已经拥有超过30万会员。但是OpenCores存在的核心问题是绝大多数开源IP核未经严格测试验证,质量不可靠。解决IP质量控制问题可以从两方面入手,首先是完善芯片敏捷开发流程,通过Chisel这样的具有更高抽象的硬件描述语言,实现基于一套代码同时生成用于测试的仿真模拟代码以及用于流片的代码,提高测试效率,快速定位错误,从而改善IP核质量;其次实现IP核与工艺库高效对接的流程,从而推进IP核达到可流片的成熟度,并通过建立快速流片认证与测试机制,为开源社区提供经过流片验证的IP核组合。通过这两种方式积累出定数量的高质量IP核,就可以形成支持90%重用的开源SoC框架。
二是可扩展的松耦合架构支持社区协作开发。传统处理器采用紧耦合架构,模块之间的交互非常紧密,不利于开源社区多人协作开发,也不以利于用户的自定义扩展。传统基于互连总线的可扩展方式具有较好的灵活性,但编程与访存效率低下,需要软件显式地进行数据移动。基于RISC-V进行可扩展指令是一种更高效的机制,但仍需要深入研究。对比开源软件生态,大型开源软件的多人协作开发模式已经比较成熟,面向对象思想、微内核思想等一系列新技术与理念使大型软件开发可分解、可扩展、可组合,这些思想与理念值得处理器设计领域学习与借鉴。
2.开源EDA工具链:
开源EDA工具链涉及硬件开发语言与综合、布局布线工具,类比于开源软件生态中的编程语言与编译器。如今工业界广泛使用的硬件描述语言Verilog已经是1980年代初的产物,一直沿用到今天。但相比于软件领域,几乎每十年都有更高效、更抽象的开发语言出现,比如C、C++、Java、Python、Go、Rust等。近年来,硬件开发语言开始出现变革,Chisel、PyMTL等更高抽象的硬件开发新语言涌现出来。以Chisel为例,它基于函数式语言Scala,通过元编程、面向对象、函数式编程等诸多高级特性,极大地提升了开发效率。我们团队前期研究工作也证明了Chisel比传统Verilog在开发效率方法可提升一个数量级,且具有相当的开发质量。
近年来,在DARPA的支持和推动下,出现了越来越多的开源EDA项目。在芯片设计的前端(从RTL到网表)与后端(从网表到GDS版图)均有一系列开源工具组件。同时也出现像QFlow、OpenRoad、Hammer等开源EDA框架。我们通过实验验证了现有开源EDA工具链已经可以满足小规模芯片开发—基于中芯国际180nm工艺库,使用全开源EDA工具链可将一个32位的RISC-V开源核生成GDS版图。但是,当前开源EDA工具链的挑战是在先进工艺支持、稳定性和可用性方面仍与商业版有很大差距。
未来,提升开源EDA工具链质量可在四方面加强研究:一是与先进工艺库有机结合,二是提高开源组件的算法效率,三是针对领域专用加速器设计定制开源EDA组件,四是更好地支持Chisel等更高级硬件描述语言。今年8月在CCF容错大会上,北京大学、中科院计算所、清华大学等国内十余所大学与研究机构共同发起了OpenBelt倡议,将会在开源EDA方向积极投入,做出中国的贡献。
3.低成本的芯片开发验证平台:
芯片开发过程中的模拟仿真与验证环境是非常耗时耗钱的环节,一些加速仿真平台(如Cadence的Palladium平台)甚至单台价格就达上千万元人民币。是否有可能将模拟仿真与验证的成本降低1~2个数量级?我们认为基于云租赁模式可降低这方面的门槛。而基于云平台进行芯片开发、仿真与验证平台将是未来趋势,尤其是针对中小企业用户。
FPGA云平台只是芯片设计过程中的一个环节,要更大幅度地降低成本,还需进一步与公用云平台结合,支持运行开源EDA工具链、下载与集成开源IP核的开源SoC芯片完整开发流程,实现构建更完善的芯片开发/验证/测试云平台。国际一些大学与企业也在朝着这个方面努力:加州大学伯克利分校基于亚马逊F1 FPGA云平台研制了FireSim平台,目标是构建使用FPGA加速的时钟级精确的全系统硬件模拟平台;SiFive公司正在研发的DesignShare平台则希望在云平台上提供芯片开发所需要的各种资源,包括IP库、EDA工具链等;Astera Lab与Synopsys合作,实现了完全在云上进行设计与验证的SoC。
4.系统软件与开发环境:
上述三方面的目标是允许开发者重用90%的已有功能、只需专注10%的创新功能,从而数量级降低芯片开发成本与周期。而快速经济地定制领域专用芯片是应对物联网(IoT)面临的“昆虫纲”挑战(碎片化问题)的有效途径。但这对系统软件与软件开发环境如何能快速适配新芯片则是很大的挑战。当一款新的芯片推出,软件需在三个层次予以适配:第一层是操作系统与编译器,针对新扩展的指令或者新加的传感器等;第二层是功能软件层,如Apache、MySQL等;第三层是面向用户和程序员,需要为用户提供易用的操作方式,也需要为程序员提供更好统一的API,就如移动领域安卓的作用。
全部0条评论
快来发表一下你的评论吧 !