HW/SW Co-emulation System for Embedded System/ SoC Design Based on HAPS Platform
Wei Wangwei.wang@intel.com
Kevin Wangkevin.wang@intel.com
Intel Labs China
Abstract
This paper introduces the accomplishment of a HW/SW co-emulation system built on Synopsys HAPS platform. The hardware consists of full speed on-chip fabric, DDR2 memory controller and I/O peripherals while the software part is an ISS (instruction set simulator). To exchange information between hardware and software in high efficiency and low cost, a communication link is implemented on Synopsys standardized UMRbus. Adopting HW/SW co-emulation methodology can provide a high speed full SoC emulation environment for SW development and IP integration before RTL freezing and according to our record HAPS platform as well as UMRbus can bring efficiency and success with its state-of-the-art techniques.
Key words:HAPS, Co-emulation, IA SoC
1. 前言
目前已有的验证技术中,仿真( Simulation) 和模拟( Emulation) 是系统功能验证中应用最广泛的两种技术。这两种技术各有优缺点,于是有人进一步提出了一种将两者方法相结合的验证技术,即协同仿真(Co-Emulation) 技术。协同仿真是指一部分验 证环境在硬件仿效器中运行,部分环境在计算机主机上运行。一般来说,DUT加上一部分可综合的Test bench 在硬件模拟器 上运行,而测试程序则在计算机主机上运行。传统协同仿真系 统存在可移植性差的问题,不同协同验证系统向用户提供的API 不相同,用户需根据各自的API 开发不同的验证环境。
本文描述的硬件软件协同仿真系统采用了Synopsys公司被广泛验证使用的高性能通用多源总线(UMRBus),并利用其提供 的标准API实现了基于x86的SoC全系统的验证以及Linux操作系 统的移植。通过该系统可以方便的在Fabric不变的情况下,进 行IA加速指令集扩展的研究并进行相应的软件开发工作。
2. 硬件平台简介
HAPS(High-performance ASIC Prototyping System)是 Synopsys公司推出的基于FPGA的ASIC原型验证平台。它提 供了单芯片至多芯片的FPGA主板选择,如最新的HAPS-64、 HAPS-62、HAPS-600等,并且可根据待验证设计的规模将多块主板级联或堆叠,使得FPGA芯片容量不再成为原型验证的瓶颈。HAPS提供了一系列HapsTrak标准接口的扩展子板以支持图像、DRAM、SATA、PCI-E、USB、以太网等功能或I/O接口, 为IC原型验证对I/O接口与物理层硬件的需求提供了丰富的可选择性,便利的可配置性和灵活的可替换性。HAPS自带板级故障检 测模块,板上HapsTrak接口的短路、断路等故障可通过LED信号灯及检测子板直观的检测出来。对于扩展子板的功能正确性, Synopsys也提供了对应的自测程序和配套检测子板,保证HAPS平台在原型验证过程中的稳定可靠。另外,HAPS平台即时可 用,省去了FPGA板的设计开发周期,在验证需求变化时可直接更换主板或扩展子板来解决,为项目的原型验证工作顺利推进赢得 了宝贵的时间。
本设计所使用的HAPS-60系列的运行速度比上一代产品提高了30%,实现了高达200MHz的时钟频率,可支持要求实时接口的各 种应用,比如IA系统中的FSB前端总线。此外,HAPS-60系列还包含其它解决方案所没有的各种性能增强技术。这种技术优势确 保了全系统集成和现实环境中所有硬件和软件的检测。软件开发者通过在接近实时和系统级环境中编写、执行和调试代码而获益 匪浅,从而确保在芯片问世前的几个月就能尽早发现和消除硬件和软件中的错误。其次,实现了更高的容量:HAPS-60首次在原 型设计平台中引入HSTDM(自动化高速时分复用),并增加了控制功耗的高容量分区软件管理。与HAPS-50系列相比,HAPS-60系 列容量是上一代产品的两倍多,单独的一块HAPS电路板能够支持高达1800万ASIC门的各种设计,而且还可将多个电路板连接在 一起(包括和上一代HAPS-50的堆叠使用),从而实现更高的容量。
3. 系统的结构组成
本设计所采用的HAPS-64 和HAPS-51T FGPA平台,配备了DDR2、BIO(UART)接口板以及PCIE套件, 成功实现了嵌入式IA
SoC的协同仿真。
整个硬件系统由HAPS64中的DUT和UMRbus驱动模块以及HAPS51T中的UMRbus组成。软件系统由UMR driver/library,BIU library和IA的指令集模拟器(instruction set simulator)组成。系统中采用的HAPS51T也可以单独配置成x86 软核,本文限于篇幅 仅介绍co-emulation系统的构建。
• IA ISS负责产生IO和Memory的激励, 再通过BIU library发送给UMRbus软件子系统
• UMRbus软件子系统通过PCIe driver与HAPS51T中的UMRbus design交互。HAPS51T进一步通过UMRbus通知相应的CAPIM,并进一步驱动UMR2BIU bridge
• UMR2BIU bridge和 BIU DUT产生对DUT(IA SoC Fabric)的激励。
中断系统也经由UMRbus的中断机制传送给ISS。

图1: Co-emulation系统的组成
4. 系统开发与结果
4.1 UMRbus系统
HOST系统和HAPS硬件之间由一条被称为UMRbus的总线连接,这条UMRbus总线在物理上是PCIe总线,是在PCIe基础上加了一 层Synopsys自定义的协议。基于这条UMRbus总线,主机就可以对待验证的设计(DUT) 进行控制,比如总线的监控,信号的输 入,设计中变量的监测,设计中Memory的读写,设计结果的反溃等等,他是运行在主机上的Testbench与待验证的设计(DUT) 之间通信的渠道,本文中的设计就是利用这个渠道构建软硬件协同验证。
下图是UMRBus总线以及CAPIM的结构图。

图2 HAPS平台中的UMRBUS总线
其中, 在Host端,软件接口模块(Software Interface Module,SIM)是底层的PCIe 的驱动,主机应用接口模块(Host Application Interface Module,HAPIM)是软件端的函数库,用户程序调用这些函数库来控制UMRBUS的读写。在硬件端,硬 件接口模块(Hardware Interface Module,HIM)提供UMRBus到目标设备的通道,CAPIM是硬件端的函数库,其接口信号图2 右侧所示。可以看出,它其实是的读写控制协议的接口,用户的RTL代码通过例化这个函数库与UMRBus建立通信联系, 用户端 RTL代码中的输入输出信号都可以由这些接口信号产生。
4.2基于UMRbus的co-emulation接口设计
HOST上的BIU library提供了如下的接口供ISS调用,同时也提供了对SystemC的接口,方便了TLM事务级的协同仿真。由于ISS不提供时序信息,为了提高吞吐率,接口并没有采用Cycle级的同步。
• coemu_open
• coemu_close
• coemu_mem_rd
• coemu_mem_wr
• coemu_mem_check
• coemu_io_rd
• coemu_io_wr
• coemu_get_status
• coemu_set_status
• coeme_intr_callback
4.3 实验结果

图3 协同仿真硬件

图4 HOST上的QEMU调试信息
图3所示系统为IA SoC协同仿真系统,左侧HAPS64中运行的 IA fabric频率在50Mhz,DDR2运行在166Mhz,Basic IO运行 在20Mhz,右侧的HAPS51T中的UMRbus运行在200Mhz,两 块HAPS板卡由数据线相连。HAPS64接DDR2的子卡和GPIO 实现内存和基本IO设备(UART如)的访问。系统中的时钟系 统,通过一个外部PLL给出并通过内部的DCM完成各模块所需 频率组成, 并完成了数据跨时钟域的特殊设计。本设计在综合 过程中, 为了系统的稳定运行, 对系统的各个时钟进行了严格 约束。图4中的HOST运行的ISS为QEMU,同时我们也提供了 对Wind River Simics仿真软件的支持。图5展示了Linux 2.6成 功在co-emulation平台上启动,所有的Memory,IO访问都由 HAPS中的Fabric导向真实的DDR模块和硬件外设。Linux系统 的启动时间由VCS+QEMU的co-simulation的数小时缩短为8分 钟以内。

图5 Linux 终端通过UART显示在调试机上
5. 总结与展望
随着集成技术的飞速发展,集成电路设计规模越来越大,速度越来越快,复杂度也越来越高。除了CPU芯片上往往会集成 UART,LCDC,SRAM,DRAM等电路。因此有必要实现更 快的仿真速度。软硬件的协同验证往往可以达到此目的。软硬件协同验证可以在芯片生产之前,对包含软件和硬件的整个系统的功能进行验证,对系统体系结构设计、软硬件功能划分以 及对驱动程序和Middleware的开发,缩短开发周期、降低开发成本、提高系统性能、避免独立设计软硬件体系结构带来 的问题。软硬件协同验证正成为SoC设计中一个重要的部分。基于HAPS的协同仿真充分利用了Synopsys的高速通信通道 UMRBUS总线优势,达到仿真加速的目的。UMRbus提供的软硬件API,方便了协同仿真的软硬件接口设计,保证了项目的进 度和可靠性,其高性能的表现在大规模的芯片设计验证中得到 了充分的体现。
6. 参考文献
[1] Synopsys Inc. UMRBus Communication System handbook,2010
[2] Synopsys Inc. HAPS Mother Board HAPS-64 datasheet, 2010.
[3] Synopsys Inc. HAPS Mother Board HAPS-51T datasheet, 2010.
[4] Synopsys Inc. HAPS Daughter Board DDR2_2×1 datasheet, 2010.
[5] Synopsys Inc. HAPS Daughter Board BIO1_1×1 datasheet, 2010.



