本发明涉及Soc芯片设计及制造领域,特别涉及一种Soc芯片验证方法。

背景技术:

随着设计与工艺技术的不断发展,集成电路设计的规模越来越大,复杂度越来越高,为了缩短芯片的上市时间,节约开发成本,多家IP的集成也渐渐成为主流,即SoC(System-on-Chip)技术发展越来越成熟,但也带来SoC的验证复杂度呈现指数级的增长。因此,一个高效的验证平台使得验证迅速收敛显得尤为重要。验证的收敛与激励产生的有效性以及调试的便利性息息相关,而SoC芯片中通常会嵌入CPU,CPU程序激励的随机性也变得很重要。传统的验证平台主要有两种:如图1是程序生成随机数Soc验证平台示意图,该方法通过在CPU程序中直接进行随机数生成,如C调用rand函数生成随机数,此方法缺点是无法做到真正的随机,每次运行得到的随机数都是一样的,无法满足激励随机的要求;图2是脚本生成随机数Soc验证平台示意图,如通过脚本语言perl产生随机数,然后使用如C语言include语句加载这部分随机数据后用来产生随机激励,此方法缺点是每次运行SoC仿真前,都必须先运行产生随机数的程序,使用不方便且影响验证效率。或增加多个用例修改种子,这又带来重复性的劳动,降低验证的效率。C语言实现的CPU程序为例,如果在C程序中直接调用rand函数随机,由于rand函数取决于种子的随机性,而嵌入式CPU并没有提供有效的种子生成机制,这会导致每次运行产生的数据都是固定的,即SoC仿真每次跑的都是固定的测试用例,从而无法提高其覆盖率。同样的,如果使用外部程序产生随机数,C程序include的方式,则有导致测试用例运行失败无法复现场景的缺点。此外,两种验证平台都没有提供很好的调试手段,这对于定位问题的效率大大降低。因此,需要提供一种新的SoC验证平台克服上述问题,以提高效率,减少验证时间并提高验证覆盖率。

技术实现要素:

针对以上缺陷,本发明目的是如何在不增加设计成本的前提下提高随机激励的覆盖率,进而实现提升验证效率的目的。

为了解决以上问题本发明提出了一种Soc芯片验证方法,其特征在于在待验证Soc芯片内部的地址空间中划分一段或者2段以上的总线地址空间作为虚拟通讯接口,待验证Soc芯片的外部还挂载有包括外部驱动模块和监控模块的虚拟接口;当待验证Soc芯片的CPU程序运行需要随机数据时,CPU通过虚拟通讯接口将随机数据需求信息写入虚拟存储载体,并在总线上发起随机数据交易申请,监控模块监控到该交易申请,则通过调用随机数生成模块产生随机数据,并通过外部驱动模块将生成的随机数据写入虚拟存储载体中并通知CPU,CPU读取虚拟存储载体中的随机数据实现随机数据的获取并实现CPU程序激励的动态随机;在虚拟通讯接口的地址范围内将不同的地址定义为不同通讯请求,虚拟接口通过总线上数据的地址信息来识别是否属于事先规划好通讯请求,待验证Soc芯片的CPU通过虚拟存储载体与虚拟接口进行数据动态交互。

所述的Soc芯片验证方法,其特征在于所述的虚拟接口通过硬件仿真实现。

所述的Soc芯片验证方法,其特征在于所述虚拟通讯接口至少包括一个调试信息打印的访问接口,将虚拟通讯接口中的一个地址指定作为调试信息打印的访问接口专用,该地址上携带的数据为需要输出的具体打印信息数据,打印信息数据采用ASCII格式;并分别通过定义特定的数据作为打印开始和结束标志。

所述的Soc芯片验证方法,其特征在于所述虚拟通讯接口至少包括一个控制访问接口,将虚拟通讯接口中的一个地址指定作为控制的访问访问接口专用,该地址上携带的数据为具体的控制指令。

所述的Soc芯片验证方法,其特征在于所述的虚拟存储载体为Soc芯片外部或外部的存储器或FIFO。

所述的Soc芯片验证方法,其特征在于外部驱动模块将生成的随机数据写入虚拟存储载体后再写入结束标记,CPU通过查询是否存在结束标记来判定当前随机数是否写入。

本发明通过引入虚拟通讯接口的实时监控,有效控制随机激励的产生,并通过打印信息,仿真进程控制,实现CPU程序与硬件仿真程序的实时交互,有利于问题的快速定位,使得验证能够快速收敛。

附图说明

图1是程序生成随机数Soc验证平台示意图;

图2是脚本生成随机数Soc验证平台示意图;

图3是新型Soc验证平台示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图3是新型Soc验证平台示意图。对传统的程序生成随机数Soc验证平台和脚本生成随机数Soc验证平台,其主要的不同在于通过虚拟通信接口实现CPU程序激励的动态随机化,激励的约束可以更精细,同时可以通过监控虚拟通信接口实现动态调试信息的打印,随机激励产生的控制,以及实时控制仿真结束和暂停等操作。

首先在待验证SoC芯片设计时预留冗余地址空间用于虚拟通信接口访问,接口与CPU,接口与芯片外部激励模块之间的交互虚拟存储载体可以是一个通用的存储介质模型,如SRAM(静态随机访问存储),FIFO(先入先出存储)等。虚拟接口协议可以采用SoC常用的总线接口协议,如AHB,APB等,或者也可以自定义一组接口协议。由于该虚拟接口主要用于仿真使用,所以在实际芯片制造时并不需要实现这块对应的逻辑,即不产生实际成本。

其次是芯片外部挂载一个虚拟通信接口驱动和监控模块。CPU程序(如C/C++编写)通过编译器生成指令代码加载到CPU的内存中。当CPU程序需要随机数据时,CPU驱动虚拟接口在总线上发起一笔事先规定好的地址和数据(如地址为0xf100,数据为0x1010)表征CPU需要取得一组随机数据,虚拟接口监控模块解析到该笔交易后,通过SystemVerilog的随机函数产生随机数据,经过芯片外部驱动模块写入虚拟存储载体,并写入结束标志位到一个虚拟存储载体的特殊位置。CPU读取虚拟存储载体查询到该特殊标志位后,即可读取这些随机数据。从而实现CPU程序激励的动态随机化。由于SystemVerilog随机化特有的约束方法,可以实现随机数据之间的相关性,使得随机数据的精细化程度增强,从而更有效的提高验证的覆盖率。

由于CPU驱动虚拟接口在总线上可以发起任意的传输,那么就可以规定好一个特殊地址(如0xe100)作为调试信息打印的访问接口,而在该地址上传输的数据即为打印的信息,外部虚拟接口监控模块解析该地址上的数据时用ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)字符方式打印输出,即可以阅读的文字信息。类似的,可以规定地址为0xd100,数据为0x55表征结束仿真程序;规定地址为0xd100,数据为0xaa表征暂停仿真程序,从而有效的控制仿真进程。

通过上面描述的方式进行SoC验证,可以真正做到CPU程序与硬件仿真程序之间的动态交互,CPU程序激励的有效随机化大大提高了SoC验证的效率和覆盖率。此外,如果SoC仿真出现错误,由于整个SoC验证平台使用了同一随机种子,因此完全可以使用此种子再次跑仿真来复现和定位问题。

综上所述,本发明解决了传统SoC验证平台上的缺陷,使用上方便高效,并使CPU程序做到了真正的随机,加上调试信息的动态打印,仿真的实时控制,可以大大提高SoC验证的效率。

虽然本发明中阐述了使用虚拟通信接口和虚拟存储载体实现CPU程序与硬件仿真程序之间的交互方式,并列举相应的接口协议和程序语言,但这只是常用的接口协议和程序语言的几种,本技术领域普通人员应该认识到,以上只是用来说明本发明,在没有脱离本发明精神的情况下,可以做出各种等效的变化,如程序语言可以有SystemC,e语言,汇编语言等,接口协议可以有I2C,SPI等。因此,只要在本发明实质精神范围内对上述采用的变化,变型都将落在本发明权利要求书范围内。

以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。

soc验证 c语言,一种Soc芯片验证方法与流程相关推荐

  1. 【揭秘】50K+验证工程师求职加分项——MCU芯片验证

    无论是在秋招.春招.还是社招,IC企业在招聘时,芯片验证的岗位的需求量往往都是排在前列.即便是在内卷比较严重的今年,验证工程师的需求量要是排名前三. 一款芯片从立项到流片生产需要经过层层自测和验证,否 ...

  2. 【机器学习】交叉验证详细解释+10种常见的验证方法具体代码实现+可视化图

    [机器学习]交叉验证详细解释+10种常见的验证方法具体代码实现+可视化图 一.使用背景 由于在训练集上,通过调整参数设置使估计器的性能达到了最佳状态:但在测试集上可能会出现过拟合的情况. 此时,测试集 ...

  3. 芯片验证从零开始系列(一)——芯片验证概论

    芯片验证从零开始系列(一)--芯片验证概论 芯片开发流程 动态验证技术 静态验证技术 Emulation和FPGA原型开发 测试平台框架 检查设计 回归测试

  4. 验证工程师,掌握Cortex-M3 MCU芯片验证真的太太太……重要啦!

    找工作的时候,你是不是也希望能够掌握公司的核心技术?成为不可或缺的人才?那你需要掌握的技能必须要足够多,对于芯片行业来说,技术决定了一切.今天我们来聊一聊芯片验证工程师的必备技能:Cortex-M3 ...

  5. 字符指针分拣C语言,一种货物自动分拣方法及系统与流程

    本发明属于自动分拣系统及方法领域,尤其是一种货物自动分拣方法及系统. 背景技术: 自动分拣系统包括控制装置.分类装置.输送装置和分拣道口,控制装置的作用是识别.接收和处理分拣信号,根据分拣信号的要求控 ...

  6. ic 主动均衡_一种电池主动均衡方法与流程

    电池主动均衡技术领域,具体是一种电池均衡方法. 背景技术: 现有主动均衡技术主要通过检测电池电压差异或容量差异,并通过电子元器件(DC/DC或电容器)来实现单体与单体.单体与模组.模组与单体之间的能量 ...

  7. java游戏房间匹配_一种游戏房间匹配方法与流程

    本发明涉及计算机技术领域,尤其涉及一种游戏房间匹配方法. 背景技术: 在目前的网络游戏中,游戏对象与游戏对象会通过互联网在线上进行竞技比赛,很多时候都需要多名玩家共同参与,现有的游戏对象的配对方法大多 ...

  8. ue4导入倾斜摄影_一种高精度倾斜摄影建模方法与流程

    技术领域:本发明属于测绘技术领域,涉及矿山地形监测.测绘地形图.珍贵建筑物修复重建.林业.农业.采矿业.公用事业和能源.城市开发.国防和灾害应急的地理信息处理. 背景技术: :目前成熟的倾斜三维建模软 ...

  9. matlab预处理光谱数据,一种近红外光谱数据预处理方法与流程

    本发明公开了属于近红外光谱分析技术领域,尤其涉及一种近红外光谱数据预处理的新方法,主要用于建立近红外定量和定性模型时对近红外光谱数据的预处理. 背景技术: 近红外光谱技术具有分析速度快.样本制作简单的 ...

最新文章

  1. visual Studio 2010 自带报表RDLC动态生成
  2. dmg文件转换iso ultraiso_mac去除dmg打开密码的方法
  3. 粗略的看JFinal的基于AOP的拦截器的实现
  4. linux下达梦数据库启动_linux上安装tomcat和达梦数据库
  5. HDU-4618 Palindrome Sub-Array 暴力枚举
  6. hdu 5119 (类似于划分数的状态定义) (DP中的计数问题)
  7. PowerDesigner(七)-数据库的生成和修改
  8. python开发面试笔试题_python集合面试笔试题
  9. OpenSea联合创始人Devin Finzer:NFT空间在未来几年会产生更多应用 | FBEC 2020
  10. 业务逻辑层的Helper基类
  11. 终面后拿offer几率_战绩 | 恭喜VIP学员斩获德勤(北京)风险分析师全职Offer!...
  12. oracle extract类型,Oracle中extract()函数
  13. 电话聊天狂人(25 分)(散列函数)
  14. 计算机毕业设计(18)java毕设作品之旅游景区景点售票购票系统
  15. 墨卡托经纬度坐标转换
  16. 货币市场基金基础知识
  17. 油猴Tampermonkey安装使用教程
  18. 金格WebOffice2015-----vue项目
  19. 使用pytorch进行深度学习网络模型训练,实现车型识别
  20. python将excel数据提取到word

热门文章

  1. 缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印
  2. 用Python写炸金花代码,学习python语言精品案例
  3. linux dd命令
  4. 2016年下半年总结(连载)!
  5. mysqldump单个库导出_mysql mysqldump只导出表结构或只导出数据的实现方法
  6. 【随机优化】李雅普诺夫优化在通信与排队系统中的应用(第一章)-绪论
  7. html论文参考文献m,论文与排版
  8. 【web前端开发 | CSS】页面布局之盒子模型
  9. vsCode安装使用教程和插件安装
  10. windows下连接服务器