一种软硬件协同仿真的同步方法

文档序号:9597713阅读:225来源:国知局
一种软硬件协同仿真的同步方法
【技术领域】
[0001]本发明涉及芯片验证领域,特别是涉及一种待验证CPU上执行的软件代码与芯片验证平台的软硬件协同仿真的同步方法。
【背景技术】
[0002]在当前的系统级验证中,往往需要在CPU中执行软件代码来验证系统的功能及可靠性等。例如CPU执行一段特定的代码,完成对芯片某个功能配置,当验证人员需要检查CHJ所设定的配置是否生效,就需要在验证平台中写特定的代码去检查。由于当前的验证方法及平台无法直接知道CPU代码执行情况,进而验证人员就无法及时获知及做出检查。当前通用的做法是在CPU上执行软件代码,通过仿真器记录波形的方式来完成检查,这种做法的缺点是需要人工检查记录下来的波形,无法做到自动化,记录波形耗费时间长,更无法做到大量的测试。另一种流行的方案是,在一个测试用例中,CPU只进行一项操作,验证人员根据经验等待一个特定的时候后去检查,这种做法的缺点也很明显:一个测试用例只能完成做小化的简单检查,由于等待时间的不确定性,无法做出复杂的连续性测试用例。

【发明内容】

[0003]针对以上缺陷,本发明目的在于如何实现在验证CPU代码执行过程中需要检查时及时通知验证平台做出相应的检查,验证平台可实时的响应并完成检查。
[0004]为了实现上述目的,本发明提供了一种软硬件协同仿真的同步方法,待验证CPU与验证平台通过总线相连接,其特征在于在待验证CPU中预留一触发事件地址空间,所述触发事件地址空间为一段或多段不与待验证CPU内部寄存器和存储器的实际地址重合的虚拟地址;将所述触发事件地址空间按总线宽度分为多个事件触发地址,不同的事件触发地址预先定义映射不同的触发事件;在待验证CPU内部执行代码执行过程中在需要检查的位置中增加事件触发代码;验证平台上设有总线功能模块、解码模块和验证平台回调;当待验证CPU内部执行代码执行到事件触发代码时,向需要触发的检查事项对应的事件触发地址写入数据;总线功能模块接收事件触发地址的数据并将事件触发地址和接收到的数据传递给解码模块,解码模块解析出需要检查事项对应的事件所对应的回调函数,验证平台回调执行回调函数触发的检查。
[0005]所述的软硬件协同仿真的同步方法,其特征在于同一个事件触发地址预先可定义映射一个触发事件或多个触发事件。
[0006]所述的软硬件协同仿真的同步方法,其特征在于所述验证平台上还设有检查测试用例库,所述回调函数触发的检查通过系统调用测试用例库中的测试用例实现。
[0007]本发明能够实时监测到待验证CPU的代码执行状态,通过同步来做出实时检查,适用于构造复杂的测试用例,并结合验证方法学的回调,减轻验证人员的编程负担。
【附图说明】
[0008]图1是软硬件协同仿真的同步方法的系统框图。
【具体实施方式】
[0009]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0010]图1是软硬件协同仿真的同步方法的系统框图,待验证CPU与验证平台通过总线相连接,其特征在于在待验证CPU中预留一触发事件地址空间,所述触发事件地址空间为一段或多段不与待验证CPU内部寄存器和存储器的实际地址重合的虚拟地址DrnnrnyAddress ;将所述触发事件地址空间按总线宽度分为多个事件触发地址,不同的事件触发地址预先定义映射不同的触发事件;在待验证CPU内部执行代码执行过程中在需要检查的位置中增加事件触发检查;验证平台上设有总线功能模块BFM、解码模块Decoder、验证平台回调和测试用例;当待验证CPU内部执行代码执行到事件触发检查时,向需要触发的检查事项对应的事件触发地址写入数据;总线功能模块接收事件触发地址的数据并将事件触发地址和接收到的数据传递给解码模块,解码模块解析出需要检查事项对应的事件所对应的回调函数,验证平台回调触发对应的回调函数,并调用测试用例完成待验证CPU触发的检查。
[0011 ] 以ARM为待验证CPU的S0C为例,阐述本方法的步骤:
[0012]在ARM内定义0xa000_0000为虚拟起始地址,0xa000_fffc为结束地址,这一连续的地址空间共有2048个字。这段地址空间不与芯片内部的真实寄存器和存储等实际地址重合。将0xa000_0000定义为事件0,0xa000_0004定义为事件1,以此类推,0xa000_fffc为事件2047。
[0013]在验证平台的总线功能模块BFM中,在地址空间0xa000_0000 ~ 0xa000_fffc的接口处,使用硬件语言开发出符合ARM AMAB总线协议的接收模块与CPU连接,用于接收ARM发送的命令。
[0014]自仿真开始总线功能模块一直在等待CPU的命令,例如当CPU内的执行代码执行到需要触发事件0,需向0xa000_0000地址写了数据为0x0000_0000。BFM将接收到的地址(0xa000_0000)与数据(0x0000_0000)传到下一级模块一解码模块。
[0015]解码模块在接收到来自上一级总线功能模块的数据后进行解码,例如收到0xa000_0000与0x0000_0000的数据后,解码出CPU触发了事件0。例如收到0xa000_0004与0x0000_0001后,解码出CPU触发事件1,以此类推。
[0016]验证平台中定义了与虚拟地址的数目一样的回调(callback)数目,此例为2048个。
[0017]在解码模块解码出CPU触发的事件0,此时解码模块将启动验证平台回调中的callbackO,以此类推。
[0018]经过一系列的操作,达到了 CPU操作验证平台的目的,也就是完成了软件(CPU)到硬件(验证平台)的同步。
[0019]在测试用例中继承callback N并写入硬件检查代码,完成对CPU事件N的响应。
[0020]此外,Dummy Address可以预留了一个可扩展的地址,该地址不同于DummyAddress内的其他地址,此地址为“一个地址对应多个事件,既是一个地址对应多个callback”。解码模块在接到该地址的“地址+数据”时,通过“数据”来解析CPU想触发的事件。相应的,需要多定义一些callback与之对应。
[0021]以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。
【主权项】
1.一种软硬件协同仿真的同步方法,待验证CPU与验证平台通过总线相连接,其特征在于在待验证CPU中预留一触发事件地址空间,所述触发事件地址空间为一段或多段不与待验证CPU内部寄存器和存储器的实际地址重合的虚拟地址;将所述触发事件地址空间按总线宽度分为多个事件触发地址,不同的事件触发地址预先定义映射不同的触发事件;在待验证CPU内部执行代码执行过程中在需要检查的位置中增加事件触发检查;验证平台上设有总线功能模块、解码模块和验证平台回调;当待验证CPU内部执行代码执行到事件触发检查时,向需要触发的检查事项对应的事件触发地址写入数据;总线功能模块接收事件触发地址的数据并将事件触发地址和接收到的数据传递给解码模块,解码模块解析出需要检查事项对应的事件所对应的回调函数,验证平台回调执行回调函数触发的检查。2.根据权利要求1所述的软硬件协同仿真的同步方法,其特征在于同一个事件触发地址预先可定义映射一个触发事件或多个触发事件。3.根据权利要求2所述的软硬件协同仿真的同步方法,其特征在于所述验证平台上还设有检查测试用例库,所述回调函数触发的检查通过系统调用测试用例库中的测试用例实现。
【专利摘要】本发明公开了一种软硬件协同仿真的同步方法,通过待验CPU向虚拟地址写特定的数据,由验证平台中的总线功能模块收到相关信息,再由解码模块解析数据的特定事件。每一个事件用一个方法学的回调callback与之对应。芯片验证人员在开发测试用例时,只需先在CPU执行代码的某处加入触发CPU向Dummy?Address写数据的代码,再在方法学中继承相对应事件的callback就可以完成同步。本发明能够实时监测到待验证CPU的代码执行状态,通过同步来做出实时检查,适用于构造复杂的测试用例,并结合验证方法学的回调,减轻验证人员的编程负担。
【IPC分类】G06F9/455
【公开号】CN105354075
【申请号】CN201510685351
【发明人】赵胜平, 张鹏
【申请人】记忆科技(深圳)有限公司
【公开日】2016年2月24日
【申请日】2015年10月20日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1