All-In-One Platform for Chip Design

Posted by Max on July 26, 2022

本文采用知识共享 署名-非商业性使用-禁止演绎 4.0 国际协议授权(CC BY-NC-ND 4.0),转载请注明出处。

I. Preface

本文简要介绍一下目前的一些工作,规则所限,不涉及具体工作内容,主要介绍一些探索方向。

II. Basics

2.1 Object

集成平台的研究对象为数字IC前端流程,因为越往后端走设计空间越小,调整代价越高。前端设计一般流程如Fig-1所示。其中,

  • ARCH:指ISA架构设计,对不同类型处理器意义不同。对CPU/GPGPU这类通用处理器而言,ISA基本标准化,如x86,ARM,RISC-V,AMD Southern Islands等;对自定义ISA的DSP等ASIP,则需进行ISA架构探索;对Google TPU这类ASIC,用户接口使用了宏指令,但与前述两种ISA稍有不同的是,宏指令解码后直接配置寄存器,而非”取指-译码-发射-执行-写回”的ISA处理流程,所以没什么分支预测,OOO等技术。

  • IA model:指Instruction Accurate Model,也称Instruction Set Simulator (ISS),如RISC-V Spike,作用是从功能上分析ISA对目标应用程序计算逻辑的覆盖情况;一般仿真流程如Fig-2上半部所示,即目标程序经编译器前端转为IR后,后端需根据ISA架构进行IR到ISA的映射和优化(codegen),但不会生成二进制的指令序列文件,而是映射到IA model上,model本身是程序化的ISA,这样目标程序就转化为一组可执行函数构成的可执行序列。对于ISA架构探索而言,难点在后端codegen,如果ISA稳定,可像LLVM一样,为每一种ISA写一个深度优化的后端,但若ISA变来变去,一般很难生成优化的指令序列。

  • CA model:指Cycle Accurate Model,实际上就是一个模拟硬件处理流程的软件Emulator,作用是从性能上分析目标应用程序的计算效率,一般包含硬件模拟模型及CA模型仿真器,仿真器一般和RTL动态仿真器类似,为Event-based类型,如GEM5,QEMU,SST等等很多。

  • Profiling:选择Benchmark跑IA与CA。

===NOTE===

图1流程不具备唯一性,不同公司不同产品,差异很大,如对于CPU或SoC等多时钟域大芯片在综合前还要做UPF低功耗设计与仿真。

Fig-1. Digital IC Frontend Design Flow Fig-2. IA/CA model

2.2 Aim

针对前端流程,集成平台的目标为加速迭代与加速验证,如图Fig-3。加速迭代用以支持基于原型的芯片设计,原型迭代是快速收敛于SPEC的设计方法;芯片开发周期一般为12~36个月,一款设计接近60%的时间在验证,加速验证吼声鼎沸。

Fig-3. All-In-One Platform
加速迭代
  • 复用:基于IP的集成设计已广泛应用于各种处理器产品,实际是将业务惯性量化到芯片设计中,将设计流程、设计方法、功能单元固化复用,如ASIC产品,一般就无需考虑分支预测用什么算法;另外,将业务设计中频繁使用的计算或控制单元参数化模板化构建成库,可以提升设计与验证效率,如FSM,在不同平台或功耗要求下可能采用one-hot或one-cold,在跨时钟域情况下,可能采用gray-code或johnson-count。总之,基于IP库的设计,可显著提升集成效率和验证效率。

  • 自动化:自动化是DARPA 2016年电子复兴计划(ERI)中重点提及的技术探索目标,简单的说,就是利用新手段将设计流程中的设计节点进行融合/打通/联结,减少人的参与度或人人交互环节,提升流程自动化程度。

加速验证
  • 参数化验证:RTL参数化设计或RTL模板业界应用已久,特别是近几年chisel,spinalHDL等新HDL的出现,进一步推动了RTL参数化设计。参数化设计显著提升了设计复用率,但RTL编码在整个设计流程中并非瓶颈问题,因此,未掀起大浪。然而,若能突破参数化验证(这里的验证指EDA动态验证),将实现验证空间换验证时间,意义重大。最早由Breker提出,且已由Accellera标准化的PSS技术,原是为解决EDA行为验证、EDA门级验证、FPGA验证、EMU验证等TC执行平台差异造成同一验证行为变形的问题,即将验证场景/行为从TC执行平台中剥离,独立进行建模来消除平台差异带来的影响;验证场景/行为的建模过程,也许为参数化验证提供了可乘之机。

  • 高阶仿真器:RTL仿真器大家都不陌生,如熟知的SNPS VCS,Cadence IUS ncverilog,IES irun等Event-based 4值仿真器,及Cycle-based的2值开源仿真器Verilator等等;那么“高阶”是什么意思?其实是我瞎起的名字,指可综合HDL的抽象层次。

    • 前述仿真器支持抽象度最高的语言是SystemVerilog,SV提升了验证的语言层次,在Verilog的基础上增加了类、package以及更贴近软件的function/task等语法,但这些都是为构造TB或验证环境准备的,为可综合DUT也仅仅是弥补了Verilog缺少数据结构的空白,加入了struct、union、enum等,语法层次并未提升。
    • 仅从仿真原理角度,Event-based仿真器内部主要管理时间轴、事件队列(如Verilog标准中的active/inactive/nonblocking/monitor/future events)、管理事件触发与事件传播等,换句话说,DUT中被监测的信号越多,仿真事件越多,仿真就越慢。由此,压缩监测信号,减少仿真事件似乎是提升仿真效率的可靠手段,那么,如果仿真器能支持类似scala链式表达语法,就有意思了。

III. Exploration

本节简单介绍几个探索方向

3.1 工具链与RTL联合框架

  • 熟悉SNPS ASIP Designer的同学应该了解,通过nML作中间媒介,硬件侧描述微架构,组装PDG逻辑组件,构建CP与DP;软件侧描述ISA到硬件的映射,实现软件工具链和硬件RTL一锅出。但受限于编译器模板及nML描述能力,目前其应用域并不广。那么,若增加处理器模板,提升架构描述能力,是否能够扩展应用域?

3.2 ISA与微架构联合框架

  • Fig-2描述了IA+CA的功能/性能联合profiling框架,熟知的工具有GEM5, QEMU等,感兴趣的同学可进一步参考系统仿真器工具列表;这类系统仿真器对标准化的ISA较为友好,但对用户自定义,且需不断迭代评估的ISA,快速生成优化的IA model和CA model,并未有效支持。

3.3 微架构与RTL联合框架

  • 随着摩尔定律放缓,靠工艺升级产品的方式越来越难了,连Intel进入10nm后,产品迭代模型也从2年为周期的Tick-Tock转变为3年期的Process-Architecture-Optimization。系统级芯片开始从SoC向SIP(chiplet)过渡,处理器也进入了David Patterson所谓的“A New Golden Age for Computer Architecture”,架构设计空间探索越来越重要。
  • 个人有限了解,架构设计一般有专家经验法、CA仿真法和自动寻优法三种,复杂处理器一般使用后两种,自动寻优法依赖于DSE自动化工具,目前还比较初级,不过近期SNPS声称其DSO.ai帮三星快速设计了好几款片子,RL立功了。
  • CA仿真是应用较普遍的方法,一般流程,CA建模人员用C++或SC构建ESL模型及C++ CA仿真器;基于假设的性能约束,迭代出架构参数;基于该架构参数,RTL建模人员进行编码,之后走后端PnR获取准确PPA;对假设性能约束进行标定;重复前述迭代过程。
  • RTL多久能够收敛于CA仿真结果,依赖于两拨人亲密且即时的合作,所以,开发延期、依赖倒置是常见风险,那么如何通过技术手段摆脱这个依赖于人的束缚?

集成平台开发,上至软件编译器,下至硬件后端,打通流程、杂糅技术、整合流程、优化迭代出可用版本,服务不同业务方、不同岗位的不同定制需求,这酸爽,透心凉!但确实有很多有意思的东西可以玩。

本文简单描述了目前的一些工作,受限公司规则,介绍内容有限,省略了细节,感兴趣的小伙伴需要自己去挖;限于个人知识有限,可能存在描述不准或谬误之处,望各位甄别对待。