基金项目:国家自然科学基金项目(No.61173007);国家自然科学基金青年基金项目(No.61100015);作者简介: 朱博元(1986-),男,硕士研究生,主要研究方向:IC 前端设计、计算机体系结构;刘高辉(1968-),男,副教授,硕士生导师,主要研究方向:数字移动通信、集成电路设计;李政运(1986-),男, 硕士,主要研究方向:CPU 小核设计、片上多核系统设计;安述倩(1986-),女, 硕士研究生,主要研究方向:计算机体系结构。
RISC 指令集众核处理器功能验证与实现朱博元1,刘高辉1,李政运2,安述倩2ZHU Boyuan 1, LIU Gaohui 1, LI Zhengyun 2, AN Shuqian 21.西安理工大学自动化与信息工程学院,陕西 西安,7100482.中国科学院计算技术研究所,计算机体系结构国家重点实验室,北京,1001901. School of automation & information engineering, Xi’an University of Technology, Xi’an, Shaanxi, 7100482. State Key Laboratory of Computer System Structure, Institute of Computing Technology, Chinese Academy of Sciences, Beijing, 100190ZHU Boyuan, LIU Gaohui , LI Zhengyun, AN Shuqian. Functional verification and implemen-tation of RISC multi-core processorAbstract : Multi-Core technology has become the inevitable trend of current processor architecture; it is an efficient and sufficient functional verification of the multi-core design that has become one of the hot points in IC design and verification fields, and also one of the key factors to the success final tape-out. Different from the common verification pattern that based on emulation, this paper pays more attention in highlighting the overall functional verification environment design droved with the coverage functional verification strategy to verify RISC multi-core processor, and putting forward the idea of "passive authentication" with hardware and software co-verification strategy, ultimately achieve the goal of "single instruction comparison".Timing verification and power evaluation strate-gies are also introduced in the later validation stage, providing a complete verification solution for the RISC multi-core processor.Key words : Multi-Core Processor; Functional Verification; Coverage; Timing Verification; Power Evaluation;摘 要:众核技术已成为当前处理器体系结构发展的必然趋势,如何对众核处理器设计进行有效而充分的验证,成为当今IC 设计验证领域的研究热点之一,也是众核处理器芯片能否成功流片的关键因素之一。
目前工业界采用基于仿真的验证作为主要的验证方式,本文重点介绍了以覆盖率为导向的RISC 众核处理器的功能验证环境的整体设计,提出了“被动式”的验证思想,并采用“软硬件协同验证”的策略,最终达到每条指令都比对通过的验证目标,辅以后期阶段所引入的时序验证策略和功耗评估策略,完整地提出了一套芯片验证平台搭建和验证功能实现的方法流程。
关键词:众核处理器;功能验证;覆盖率;时序验证;功耗评估;文献标志码:A 中图分类号:TP302.7 doi :10.3778/j.issn.1002-8331.1211-00211 引言在随着集成电路制造工艺的进步和处理器设计水平的不断提高,众核技术已成为当前处理器体系结构发展的必然趋势。
处理器的复杂度呈指数幅度上升,使故障的查找和修复变得越来越困难,如何对众核处理器进行有效而充分的验证,成为当今IC设计验证领域的研究热点之一,也是其能否能最终流片成功的决定性因素。
传统的功能验证方法主要采用监测并控制其地址与数据总线的方法,这对于高度集成化的众核芯片,其追踪系统总线的策略往往不能定位内部故障所在,从而不能进行下一步的分析和修改故障。
基于软件和硬件分别进行独立的仿真验证仍然是目前IC验证主要应用的功能验证方式,在此基础上,本文重点介绍了以覆盖率为功能验证导向的RISC众核处理器的验证环境的整体搭建,提出了“被动式”的测试验证思路,并采用“软硬件协同验证”的策略,最终达到了处理器运行的每条指令都对比通过的验证目标。
再辅以相应基于成熟EDA工具的功耗和时序分析验证方式,完整地提出了一套芯片验证平台搭建和验证功能实现的方法流程。
文章共分为以下几个部分:第2部分描述在“被动式验证”思想的指导下RISC众核处理器验证环境的搭建;第3部分详细描述为了达到“单条指令对比”效果的众核处理器的验证策略和具体实现;第4部分为结束语,作为本文总结。
2 众核处理器验证环境的搭建2.1 软硬件协同验证的发展现状软硬件协同验证与传统的数字系统仿真验证方法不同,它是针对软件和硬件系统模块进行的混合模拟仿真。
传统的系统验证方法通常是将软件部分和硬件部分的设计验证分开独立进行,二者在确定了设计目标之后就很少再相互考虑。
这样的设计验证方法在系统设计后期才会发现比如软硬件接口或在设计初期没有考虑到的系统功能方面的问题,导致设计资源的浪费与设计周期的延长和开发成本的不断增加。
软硬件协同验证技术的出现很好地改善了这一现状,它分为外围硬件模型验证和处理器核心验证两个部分。
软硬件协同验证通常使用硬件模拟器作为验证工具,通过执行RTL级设计描述模拟设计的物理实现,其仿真结果取决于设计描述是否正确反映了设计的物理实现,验证时需要通过测试平台产生激励和开发人员检查响应的有效性[1]。
2.2 RISC众核处理器概述本文选取一款名为“Godson-T”的RISC架构处理器芯片为研究对象和载体。
该款芯片是由中国科学院计算技术研究所系统结构国家重点实验室设计的一款片上众核处理器芯片,主要面向电信应用、服务器、金融管理、医疗和大型数据库系统等领域的高性能计算。
该款众核处理器目前已经顺利通过各项验证和测试,并成功Tape-out。
该款众核处理器的结构如图1所示,中间部分为四纵四横的十六单元阵列,每个单元由一个处理器小核和一个RT组成,两边各有两个L2--Cache,为二级数据缓存,为十六个独立小核共享。
在示意图的上方,SYNC-ma模块(同步管理器)负责同步管理各独立小核间的互联与协调[2][3]。
TAP端口负责与JTAG调试相关的接口进行通信的模块,IO模块负责向片外发送相关配置信息。
图1 Godson-T众核处理器的结构示意图2.3 验证语言System Verilog概述SystemVerilog简称为SV验证语言,是IEEE 1364 Verilog-2001标准的扩展增强,兼容Verilog HDL 2001,并已经成为硬件设计下一代验证仿真的主流编辑语言。
SV语言结合了来自Verilog HDL、C语言、面向对象设计语言的部分概念,另外包含了Assertion语言和平台语言,完美结合了验证过程中使用频繁的高层验证性语言(HVL)和开发过程中使用较多的硬件描述性语言(HDL),对于进行当今高度愈加复杂的设计验证工作无疑是提供了一种有效的解决思路。
它具有接口(interface)、断言(Assertion)、多线程(multiple threads)和函数和任务(Function and Task)等多种新的验证平台建模技术[4][5][6]。
朱博元,刘高辉,李政运,安述倩:RISC 指令集众核处理器的功能验证与实现 32.4 验证环境的整体设计Godson-T 整体验证环境设计主要由六部分组成。
包含处理器小核在内的其顶层实现模块作为待测硬件部分,参考验证模型模拟器Transformer 作为测试软件部分,这两部分具体体现软硬件协同验证的策略;内存空间Memory 由一段C 代码负责维护和执行相关操作,容量为4GB 。
输入输出接口模块(IOI )负责进行接口配置;两个同构的Memory Controller 模块(MC )分置两侧,用来针对和控制访存操作;一个存放着在验证过程中可能出现故障信息的数据库Data_base 和若干具有分选功能的选择器等共同组成验证环境中的附属模块。
其结构示意图如图2所示。
图2 Godson-T 验证环境结构示意图在Godson-T 被动式验证的指导思想下,验证环境必须做到主动去适应和满足测试小核的对每个测试程序的执行操作和处理动作,而让待测小核能够在不受平台外部条件任何干扰和容错性相关的影响下自主完成自身设计功能体现。
验证环境中由C 代码负责维护的内存空间只识别可执行文件,故在初始化时,程序列表中等待测试的程序需首先进行编译,再进行加载。
向内存中加载可执行文件是通过调用加载函数实现的,该加载函数的功能是从程序列表按照一定次序依次中读取测试程序,直到所有测试程序都加载完毕。
编号为core[0,0]作为测试程序的主核,既是需要测试的小核之一,也是测试环境中负责向其余小核客户传递消息的起点。