文献标识码:B
文章编号: 0258-7998(2011)11-0134-03
随着集成电路设计和工艺的不断发展,人们已经可以把复杂的电子系统集成到一个芯片上,即片上系统SoC(System on Chip)。SoC的设计以应该是一个软件、硬件协同设计的过程,而传统的以寄存器传输级(RTL)建模为基础的设计方法,只有在全部的硬件设计完成后才能进行软件测试和系统集成,降低了开发的效率,延长了产品面市的时间。
近来,为了解决上述问题,国内外提出了很多不同的方法。其中,电子系统级设计(ESL)被认为是用来解决诸如系统级仿真和验证、架构探测、片上总线设计和系统性能评估等系统级问题最有前途的一种方法。ESL的关键就是用事务级建模(TLM)来建立一个SoC系统的模型。所谓事务,一方面指把低层次的信息传输组合成较高级别的传输,例如把读写一大块数据作为一个事务,包含总线上的若干次突发传输,每个突发传输又会包含地址连续的多个数据传输;另一方面指不牵涉具体的信号,而是把传输中涉及到的信息分类作为整体表示。在事务级的传输机制可以通过信道来完成,模块之间的通信则可以通过调用接口函数来完成,这样可以大大提高仿真的速度[1]。
在事务级建模领域,国内外做了大量的研究。OSCI组织推出的SystemC语言为SoC的事务级建模提供了良好的语言支持,Synopsys公司已经推出AMBA的事务级模型。国内在事务级建模方面也取得了一些成就[2-3]。国芯CLB总线具有优良的数据传输性能和可扩展性,因此,它具有很强的发展潜力。但是,如何建立CLB周期精确的事务级模型仍是一个有待解决的问题。
1 CLB事务级模型的建立
1.1 建模语言
本文采用SystemC建立国芯CLB总线的事务级模型。SystemC在C++的基础上发展而来,可以支持门级、RTL级和系统级等不同抽象层次的建模和仿真。在SystemC TLM 2.0中,定义了非定时模型、近似定时模型、松散定时模型和周期精确定时模型,分别用于满足不同级别精度的需要,并且支持多个时钟之间的任意相位关系[4]。同时,SystemC具有所有硬件描述语言所共有的基本特征,包括模块、进程、端口和信号等,这使得SystemC可以很好地完成CLB的事务级建模。
1.2 CLB总线
CLB总线是基于我国具有自主知识产权的32位RISC嵌入式CPU-C*Core的SoC平台中使用的层次化片上总线体系结构[4]研制的。CLB总线采用了高效的流水线 (Pipeline)结构,能在读写数据的同时产生下一访问的地址信号;总线支持字节、半字和字三种类型的数据传输;总线接口支持C*Core和系统中的其他设备之间的数据同步传输,内部分布的时钟信号用来提供逻辑时序。
图1所示为CLB的工作示意图,其中BCU(Bus Control Unit)相当于总线仲裁器,由它控制总线的使用权;Slave0、Slave1的选择由CLB内部的地址译码逻辑完成。
1.3 CLB的VCI封装及建模的设计
IP(Intellectual Property)是构成SoC的基本单元,IP的复用可以有效缩短产品的开发时间、减少产品投放市场的时间、降低产品的开发成本。因此,IP复用是SoC设计的一个重要的组成部分。为了增加CLB总线模型的可复用性,本文对其进行了标准的VCI封装。根据VCI协议的标准[5],本文将CLB的VCI封装设计成BCU、CLB Initiator Wrapper和CLB Target Wrapper三个部分,如图2所示。
图中BCU负责总线的控制部分,包括总线的仲裁和地址译码。地址译码部分通过存储器映射机制完成,每一个从设备都有一个属于它自己的存储器映射地址。这样,通过总线上的地址就可以很容易地确定所需要选择的从设备。Initiator Wrapper的作用则是把接收到的外部VCI信号转换成为能够在CLB总线上进行传输的CLB总线信号。这就涉及到不同协议之间信号时序的转换与匹配的问题。对此,本文采用以下策略:(1)对于协议两侧功能相同、时序上无差别的信号,将其直连; (2)对于协议两侧功能有对应关系、时序上无差别的信号,采取组合逻辑的方法进行转换;(3)对于协议两侧功能上有对应关系而时序上又有一定差别的信号,采用有限状态机的方法对其进行时序的转换; (4)对于协议两侧无对应关系的信号,对其进行舍去或者悬空处理[6]。
在进行协议转换时,如果采用同一时钟进行转换,会导致CLB总线上信号时序与实际的时序有较大的差异。为了保证系统模型时序的周期精确,本文采用多时钟技术,将系统时钟和控制总线的时钟分离,并采用一个四倍于系统时钟的虚拟时钟来控制总线状态的转换。这样,可以使有限状态机能够有充足的时间进行协议的转换,也能保证时序的周期精确。
在进行信号转换时,有限状态机由transition()和genMealy()两个方法来描述。其中transition()方法根据状态机中寄存器的当前值和从输入端口得到的值来计算寄存器下一时刻的值,并可用来控制状态机的状态转换;而genMealy()方法则根据状态机内部寄存器的值和输入端口的输入值来计算输出端口的输出信号的值,并可用来产生状态机的输出。同样Target Wrapper也可以采用相同的策略来实现。
2 仿真验证平台的设计
在完成了对CLB的事务级建模后,将对其进行仿真和验证。本文采用的验证环境为SoCLib平台。SoCLib平台是一个由法国TIMA Lab、Lip6等研究机构与STMicroelectronics等知名企业联合开发、用于多核SoC系统架构设计的开放式ESL建模仿真平台。
本文所建立的基于SoCLib的仿真验证平台如图3所示。其中,CLB/VCI和BCU组成整个SoC的片上总线,它带有标准的VCI接口协议的封装,负责整个SoC的通信工作;C*Core ISS是C*Core的指令集仿真器,用来执行编译好的C*Core的程序代码;RAM是整个SoC的片上存储器,用来存储编译好的程序;TTY是一个虚拟的可视化终端,可用它来观察程序运行的结果;TIMER则是一个定时器,用来记录程序运行的时间,便于性能分析。所有这些模块均带有标准的VCI接口协议的封装。
系统在运行时,首先将编译好的程序代码加载到RAM中,通过总线将RAM中的指令传输到C*Core ISS仿真器,最后,C*Core ISS通过总线将运算结果输出到TTY上,同时,TIMER完成程序运行时间的计时工作。
3 结果分析
利用搭建好的SoCLib平台,对所建立的CLB模型进行了大量仿真和测试,其结果表明CLB模型的功能完全正确。为了验证所建立模型与实际波形在时序周期上是否精确,可在顶层配置文件加入产生波形文件的语句,并用这些语句将仿真信息输出到一个扩展名为.vcd的文件中。最后,利用Debussy将SoCLib仿真产生的波形文件与国芯公司提供的CLB的RTL级的仿真平台NCVerilog产生的波形文件进行比较。其仿真波形对比如图4所示。
从图中可以看出,在第一个时钟周期的上升沿,处理器核将所有访问的地址(0x80001234)及所要进行的操作(读/写)置于总线上,并在第二个时钟周期到所需要的数据(0x12345678)。而在SoCLib平台上,由于采用了多时钟的方法控制CLB的传输状态的转换,因此能够做到周期精确。此外,两个平台上运行相同的国芯公司提供的测试程序所用的时间如表1所示。
从表中可以看出,由于在SoCLib平台上事务级总线每次的读、写均是以事务进行,NCVerilog平台上的总线则是按位进行的,因此SoCLib平台的仿真速度要比NCVerilog平台的仿真速度快很多。
与寄存器传输级(RTL)模型相比,CLB总线事务级模型(TLM)是在更高的抽象层次对系统硬件进行建模,相比RTL模型更容易开发,在设计初期就可得到系统的硬件模型,并且事务级平台的仿真速度要比RTL级快很多,因此该模型非常适合于架构和性能分析及早期的软硬件协同设计和验证。另外,对CLB进行标准的VCI协议的封装,提高了CLB模块的复用性,也可以为SoCLib提供一种新的片上总线的模型;同时,此次建模也是首次对国内具有自主知识产权CPU的片上总线CLB的事务级建模,对推动我国自主CPU的发展和使用具有重要的意义。
参考文献
[1] CHANG C Y, HSIAO C Y, LEE K J. Transaction level modeling and design space exploration for SoC test architectures[C]. Asian Test Symposium, 2009.
[2] Home page of OSCI [EB/OL].http://www.systemc.org,2010
[3] 朱小虎,曹阳,罗娟. 基于SystemC的周期精确事务级AMBA总线建模[J]. 武汉大学学报(理学版),2005,50(5):629-632.
[4] C*Core Technology(Suzhou) Co., Ltd. C*Core 310 User manual version 1.0 [R], 2009.
[5] Virtual Socket Interface Alliance. VSI alliance virtual component Interface Standard Version 2.0(OCB 2.2.0)[S]. OnChip Bus Development Working Group, 2001.
[6] Zhang Qingli, Yu Mingyan, Wang Jinxiang. The design of AMBA AHB/VCI wrapper [C]. 5th International Conference on ASIC, 2003.