EDA如何支持RISC-V?
【导(dǎo)语(yǔ)】RISC-V以(yǐ)其(qí)高(gāo)度(dù)可(kě)定(dìng)制(zhì)、模(mó)块(kuài)化(huà)及(jí)多(duō)样(yàng)化(huà)的(de)应(yīng)用(yòng)场(chǎng)景(jǐng),为(wèi)计(jì)算(suàn)产(chǎn)业(yè)带(dài)来(lái)了(le)高(gāo)效(xiào)、灵(líng)活(huó)与(yǔ)开(kāi)放(fàng)的(de)新(xīn)机(jī)遇(yù)。然(rán)而(ér),这(zhè)一(yī)创(chuàng)新(xīn)技(jì)术也对芯片的验证调试提出了新的挑战。在第五届RISC-V中国峰会上,业界聚焦于如何通过IP、EDA等设计工具提升RISC-V处理器的开发、验证与调试效率。多家EDA企业与研发团队展示了最新的验证方法学、工具链创新以及开源EDA解决方案,旨在充分发挥RISC-V指令集的优势,加速芯片设计与验证进程。
RISC-V具有高度可定制、模块化、场景多样的特点,在为计算产业带来高效、灵活、开放、易协作等一系列优势的同时,也对芯片的验证调试带来新的考验。在近日举行的第五届RISC-V中国峰会(以下简称“峰会”)上,如何从IP、EDA等设计工具层面,提升RISC-V处理器的开发、验证和调试效率,以充分发挥RISC-V指令集的优势,成为业界关心的焦点。
新的验证方法学:提升RISC-V处理器验证效率和质量
仿真验证是芯片实现设计目标和功能正确的必备步骤,直接影响芯片设计的成功率。在峰会展区,记者在思尔芯、芯华章等EDA企业展台都看到了原型验证平台。据思尔芯工作人员介绍,基于FA原型验证平台和操作系统,RISC-V设计企业可以将写好的代码通过FA进行硬件实现和模拟,继而开展功能开发和Debug,完整这套流程后就可以进行客户演示。“这样的好处有两个,一是给客户信心;二是客户可以将这套完整的、堪比流片后的环境融入自己的系统,做进一步的开发。”
思尔芯原型验证平台
目前,RISC-V处理器常用的仿真框架是协同仿真验证,其原理是将待测设计(DUT)与参考模型(REF)一起仿真。DUT每执行一条指令,REF也执行一条指令,并且对比二者执行指令(lìng)之(zhī)后(hòu)的(de)结(jié)果(guǒ)是(shì)否(fǒu)一(yī)致(zhì)。
但(dàn)RISC-V的(de)技(jì)术(shù)趋(qū)势(shì),正(zhèng)在(zài)给(gěi)协(xié)同(tóng)仿(fǎng)真(zhēn)验(yàn)证(zhèng)带(dài)来(lái)挑(tiāo)战(zhàn)。首(shǒu)先(xiān)是(shì)RISC-V指(zhǐ)令(lìng)集的(de)复(fù)杂(zá)度(dù)迅(xùn)速(sù)膨(péng)胀(zhàng)。比(bǐ)如(rú)RVA23有(yǒu)33个(gè)必(bì)选(xuǎn)扩(kuò)展(zhǎn)、830页(yè)指(zhǐ)令(lìng)集手(shǒu)册,相比2019年已经翻倍,且不同的RISC-V扩展有不同的验证需求,导致验证难度提升。其次是处理器的电路仿真速度正在放慢。尤其是最常使用的软件仿真,其速度随着处理器规模扩大而大幅下降。
为了改善芯片验证质量与效率,产业界转向基于Emulator(硬件仿真器)、FA的硬件仿真平台,其特点在于将REF部署在Host环境,以软硬件(RTL-Host)通信为核心,利用PCIE、以太网、InfiniBand等连接手段在软件(Host侧)和硬件(RTL侧)之间传递信息,实现了对电路仿真的数量级加速。比如香山团队长期维护的DiffTest框架,已经支持硬件仿真加速。
但香山团队发现,RTL-Host架构带来的通信开销,限制了DiffTest对香山等复杂处理器的验证加速效果。面向这一瓶颈,香山团队提出了SVM(可综合验证方法),把整个REF映射到FA上或者Emulator上,使REF与DUT的通信都在片上完成,从而避免通信开销。
但SVM架构的构建,也面临一些挑战。对此,香山团队进行了一系列技术和模型创新。
一是如何确保REF的电路代码实现。REF通常为软件指令集模拟器,如何用硬件描述和实现,尚(shàng)处(chù)于(yú)空(kōng)白(bái)。香(xiāng)山(shān)团(tuán)队(duì)采用(yòng)了(le)语(yǔ)义(yì)代(dài)码(mǎ)迁(qiān)移(yí)技(jì)术(shù),通(tōng)过(guò)构(gòu)造(zào)指(zhǐ)令(lìng)操(cāo)作(zuò)树(shù),将(jiāng)Spike的(de)基(jī)本(běn)语(yǔ)义(yì)转(zhuǎn)变(biàn)成(chéng)REF或(huò)者(zhě)RTL的(de)语(yǔ)义(yì),支(zhī)持(chí)指(zhǐ)令(lìng)功(gōng)能(néng)、控(kòng)制(zhì)和(hé)状(zhuàng)态(tài)寄(jì)存器(CSR)、常量等语义信息自动迁移。
二是如何提升硬件REF的执行效率。香山团队提出了硬件参考模型(SRef)设计:当DUT提交N条指令,SRef执行N条指令,并对比结果。同时,通过全流水无阻塞的工作流程,消除RISC-V指令间的控制依赖。
三是如何提升SVM框架的可调试性。香山团队提出了一种可综合的调试技术,当CPU执行出错时,将REF转换为独立执行的通用CPU。这意味着REF可以作为CPU去读取片上提取器,判断是哪个硬件化断言出错,从而用于调试。
随着香山处理器迭代到第三代架构“昆明湖”,核心数量增加至16核,并构建了面向高性能计算场景的系统级SoC架构,其CPU系统复杂性进一步提升,亟需大规模FA平台与自动化工具链。围绕香山昆明湖16核CPU的大级联FA系统验证,香山团队与EDA企业合见工软进行了实践。
昆明湖处理器验证挑战
合见工软验证产品线市场总监曹梦侠表示,构建大型FA系统有三个难点。首先是如何将大规模设计切割到不同的FA中,这是困扰产业界几十年的难题;其次是切割后如何保证功能正确;再次是怎么建立精确的时序模型。
面向以上难点,合见工软和香山团队建立了提出了一套系统化的多核处理器 FA验证方法论,包括设计移植与适配、编译迭代效率与资源优化使用的最大化平衡、渐进式启动策略与软硬协同调试技术。
基于这套方法论,双方实现了四个成果。一是自动化的编译流程。除了必要的Porting之外,时钟转换、自动分割、TDM IP绑定等关键工作都可以交给EDA工具,让用户将最宝贵的时间留给项目本身。二是达成了性能目标,在16核完整版本中将CPU主时钟稳定运行在10.2 MHz。三是在FA原型验证平台上,完整运行一个未经裁剪的、可启动OS的16核高性能昆明湖RISC-V处理器系统。四是相比传统方法,整体验证效率提升约40%,大幅缩短产品上市时间。
未来,双方希望EDA企业协同推动RISC-V验证方法学标准化。北京开源芯片研究院(以下简称“开芯院”)高级工程师李贤飞表示,希望EDA厂商能开发更多支持CPU核心之外验证场景的特性,包括动态功耗验证和低功耗验证。同时,开芯院希望与EDA厂商一起构建工具链,包括Emulator与UVHS(原型验证)的混合验证模式;在多核验证方法学上,构建存储一(yī)致(zhì)性(xìng)协(xié)议(yì)的(de)验(yàn)证(zhèng)方(fāng)法(fǎ)学(xué),探(tàn)索(suǒ)跨(kuà)核(hé)事(shì)件(jiàn)的(de)追(zhuī)踪(zōng)框(kuāng)架(jià)。此(cǐ)外(wài),基(jī)于(yú)EDA厂(chǎng)商(shāng)提(tí)供(gōng)的(de)新(xīn)方(fāng)案(àn)、新(xīn)技(jì)术(shù)和(hé)新(xīn)方(fāng)法(fǎ),探(tàn)索(suǒ)温(wēn)榆河NOC的相关应用,开发基于Emulator的CPU Tracer类的调试工具,并增加功耗—性能联合分析能力,为SoC设计提供更全面的评估维度。
更精微的工具链:释放RISC-V可定制可扩展优势
可定制、可扩展是RISC-V的天然优势,但要让开发者便捷高效地开发出能运行在CPU上的定制化指令,依然需要工具链从更细颗粒度予以支持。
在演讲中,晶心科技介绍了其Andes ACE框架与AndesCycle模拟平台,助力加速RISC-V自定义指令的开发与验证流程。据晶心软件工程师颜敬哲介绍,开发者将ACE定义文件和精简Verilog文件提交至ACE框架的COPILOT代码生成器,就能获取C语言编程辅助函数接口、汇编器、OpenOCD调试工具等所需的扩展文件。COPILOT还会自动生成控制逻辑(ACE引擎)与指令模块的Verilog代码,开发者可将这些代码集成至现有的AndesCore处理器架构,从而得到定制化的CPU指令。接下来,开发者可基于AndesCycle模拟器,对指令进行性能分析和调试,从而加速自定义指令的开发。
基于RISC-V指(zhǐ)令(lìng)集的(de)ASIC(专(zhuān)用(yòng)集成(chéng)电(diàn)路)芯片被视为AI芯片架构创新的重要契机。威尔逊研究小组研报显示,ASIC项目平均50%的时间用于验证,验证耗时最少的项目通常复用经过预验证的IP模块。反之,验证耗时较长的项目往往涉及大量新开发(fā)的(de)IP模(mó)块(kuài)。
为(wèi)降(jiàng)低(dī)RISC-V企(qǐ)业(yè)的(de)IP验(yàn)证(zhèng)成(chéng)本(běn),西(xi)门(mén)子(zi)EDA团(tuán)队(duì)带(dài)来(lái)了(le)端(duān)到(dào)端(duān)RISC-V调(diào)试(shì)和追踪解决方案Ultra Sight-V,包括硬件IP层面的运行控制、高效追踪、高效调试IP、经过预验证和量产验证的IP、UVM(通用验证方法学)验证环境、系统可扩展性等,USB、JTAG、AXI等接口,主机软件套件和兼容第三方工具的用户环境。在调试RISC-V核心的IP硬件中,西门子团队提供了RISC-V高效追踪(E-Trace),能够对RISC-V指令进行高度压缩。开启RISC-V追踪的可扩展功能后,压缩率——即测试基准程序的BPI(记录一条指令所需比特数)下降40%。这意味着利用E-Trace进行追踪,在相同时间下消耗的带宽更少,在相同的存储空间和带宽下可以追溯更长时间之前发生的错误。
随着RISC-V生态系统的快速发展,SoC系统建模需求日益增长。当前主流的RISC-V仿真工具主要包括QEMU、Spike和Gem5,其建模优势各有不同,比如QEMU运行性能较强,Spike开发较容易,Gem5模拟精度高且可兼容SystemC TLM。但也存在一些痛点。一(yī)是QEMU、Spike的精度仅为functional水平,至少需将其精度提升至Near-Cycle级别,才能支持Profiling(性能分析)等工具的扩展。二是QEMU、Spike不支持SystemC TLM-2.0——作为通过事务级通信抽象的标准化接口,SystemC TLM-2.0实现了不同厂商RISC-V模型在同一虚拟平台上的即插即用兼容性,方便集成到第三方VP。三是模型软件接口不友好,没有为集成自定义指令提供足够便利。
各类仿真工具建模特点
面向以上痛点,芯来科技构建了Nuclei Model。据芯来科技建模工(gōng)程(chéng)师(shī)徐(xú)子(zi)泰介绍,Nuclei Model在ISS基础上建立Timing Model(时序模型),使RISC-V SoC系统达到 Near Cycle的建模精度。构建时序模型之后,还需进行Profiling。Nuclei Model有两种Profiling方式,其一是将指令解码后,将PC(程序计数器)和Cycle(周期数)输出给Profiling处理单元,再通过Gprof等性能分析工具呈现CPU占用率,进而分析性能瓶颈。其二是通过火焰图,芯来团队结合了Flame Chart和Flame Graph两种火焰图的优点,实现了带时间轴属性,调用栈关系以及多线程应用程序可视化等特点的火焰图。基于Profiling定位热点函数后,再结合自定义指令,可以快速优化算法程序。
为了进一步发挥RISC-V“任何用户都可以不受限制地获得RISC-V指令集”的开放性优势,中国科学院大学于2019年启动“一生一芯”开源处理器芯片教学流片实践项目计划,以开源处理器芯片为切入点,让学生可以带着自己设计的处理器芯片毕业。中国科学院计算所副(fù)研(yán)究(jiū)员(yuán)解(jiě)壁(bì)伟(wěi)在(zài)峰(fēng)会(huì)现(xiàn)场(chǎng)表(biǎo)示(shì),RISC-V的(de)价(jià)值(zhí)在(zài)于(yú)人(rén)人(rén)都(dōu)可(kě)以(yǐ)定(dìng)制自己的芯片,这一目标的实现需要开源EDA。
“开源EDA的作用,就如GCC等开源编译器之于开源软件生态。”解壁伟表示。其所在的开源芯片生态团队推出了ECOS Studio开源芯片设计解决方案,推动EDA工具及(jí)工(gōng)具(jù)链(liàn)开(kāi)源(yuán),构建基于开源EDA工具链的SoC和后端学习流程及讲义。据悉,这套解决方案已经在今年7月“一生一芯”暑期宣讲会正式开放内测。