一种芯片的系统级验证方法、系统及相关装置与流程

文档序号:24875060发布日期:2021-04-30 12:49阅读:117来源:国知局
一种芯片的系统级验证方法、系统及相关装置与流程
本申请涉及芯片验证领域,特别涉及一种芯片的系统级验证方法、系统及相关装置。
背景技术
:在整个芯片开发设计流程中,功能验证已经成为最大最耗时间的瓶颈。目前越来越多的芯片设计企业采用核心功能模块自研,通用模块外购的片上系统(system-on-a-chip,soc)设计策略,却给芯片的系统级功能验证工作带来了严峻的挑战。系统级验证主要确认芯片体系结构满足所赋予的功能/性能要求,通过将用户需求转换成功能/性能要求,并实现行为/功能设计,然后映射到相应的体系结构上(设计输入、硬ip核、软ip核、软/硬件划分、性能分析、总体优化、性价比评估等反复迭代),最后进行系统级验证。soc进行系统仿真时会暴露,ip核与ip核之间信号时序的不匹配、控制逻辑无法协调、功能不能衔接等问题。为了减少在soc级别上的部署时间,目前主流做法是对模块或子模块的验证组件、环境和方案进行可复用检查并合理的在soc级别进行复用。在soc级上,主要关注soc顶层同各个验证子模块之间的数据交互是否正确。但如果每一次系统级验证都要重新搭建验证环境、编写验证代码,将耗费巨大的时间成本和人力成本。此外测试过程中时常出现其中某些模块购买或者开发已经完成,而另外一些互联的模块不能及时完成交付从而影响协同功能验证。技术实现要素:本申请的目的是提供一种芯片的系统级验证方法、系统、计算机可读存储介质和电子设备,能够灵活搭配模块,提高系统级验证效率。为解决上述技术问题,本申请提供一种芯片的系统级验证方法,具体技术方案如下:接收验证请求;根据所述验证请求确认待验证模块的模块路径和模块名;所述待验证模块包括待剔除模块和待替换模块;利用剔除脚本解析所述待验证模块执行挖空操作,得到端口信号,并结合所述模块路径和所述模块名生成挖空文件;对所述挖空文件中的端口信号进行赋值,得到挖空模块;利用所述挖空模块替换所述待验证模块添加至仿真脚本进行系统级验证。可选的,对所述挖空文件中的端口信号进行赋值,得到挖空模块包括:根据所述端口信号的信号类别确定对应的信号固定值;根据所述信号固定值对所述端口信号进行赋值,得到挖空模块。可选的,根据所述端口信号的信号类别确定对应的信号固定值包括:调用端口赋值表根据所述端口信号的信号类别确定对应的信号固定值。可选的,若进行所述待验证模块的协同仿真,还包括:根据待验证模块的端口定义生成所述待验证模块的通用模型验证环境;调用序列类驱动通用模型验证环境;将所述通用模型验证环境添加至仿真脚本,进行所述协同仿真。可选的,根据待验证模块的端口定义生成所述待验证模块的通用模型验证环境包括:根据所述待验证模块的端口信号的功能类别生成所述待验证模块的通用模型验证环境;若所述端口信号为总线类端口,指定所述总线类端口对应的总线验证ip挂载至所述总线类端口,以生成所述待验证模块的通用模型验证环境;若所述端口信号为非通用功能,配置所述通用模型验证环境中定序器的启用模式,并生成所述待验证模块的通用模型验证环境;若所述端口信号为通用功能,对所述定序器进行驱动更新后,生成所述待验证模块的通用模型验证环境。可选的,若所述待验证模块还需要模拟驱动类和序列类,还包括:复用与所述待验证模块对应相关模块在模块机验证环境中的驱动类和序列类,并参与所述系统级验证。本申请还提供一种芯片的系统级验证系统,包括:请求接收模块,用于接收验证请求;解析模块,用于根据所述验证请求确认待验证模块的模块路径和模块名;所述待验证模块包括待剔除模块和待替换模块;挖空模块,用于利用剔除脚本解析所述待验证模块执行挖空操作,得到端口信号,并结合所述模块路径和所述模块名生成挖空文件;赋值模块,用于对所述挖空文件中的端口信号进行赋值,得到挖空模块;验证模块,用于利用所述挖空模块替换所述待验证模块添加至仿真脚本进行系统级验证。可选的,所述赋值模块包括:值确定单元,用于根据所述端口信号的信号类别确定对应的信号固定值;赋值单元,用于根据所述信号固定值对所述端口信号进行赋值,得到挖空模块。本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。本申请还提供一种电子设备,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的方法的步骤。本申请提供一种芯片的系统级验证方法,包括:接收验证请求;根据所述验证请求确认待验证模块的模块路径和模块名;所述待验证模块包括待剔除模块和待替换模块;利用剔除脚本解析所述待验证模块执行挖空操作,得到端口信号,并结合所述模块路径和所述模块名生成挖空文件;对所述挖空文件中的端口信号进行赋值,得到挖空模块;利用所述挖空模块替换所述待验证模块添加至仿真脚本进行系统级验证。本申请通过对待验证模块进行解析和复制,并生成对应的挖空模块作为待验证模块的替代品参与系统级验证,能够在待验证模块未完成时降低对其余模块的验证影响,缩短验证周期,同时采用挖空模块替代待验证模块参与系统级验证该你可以解决由于不同模块设计交付节点不一致导致的多模块无法协同验证的问题。本申请还提供一种芯片的系统级验证系统、计算机可读存储介质和电子设备,具有上述有益效果,此处不再赘述。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本申请实施例所提供的一种芯片的系统级验证方法的流程图;图2为本申请实施例所提供的协同验证方法的流程图;图3为本申请实施例所提供的一种芯片的系统级验证系统结构示意图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。一颗芯片里逻辑功能模块的开发一般是由不同的架构和设计工程师负责,基于不同模块的复杂难易程度,所有模块的设计往往会发生交付时间先后不一,设计质量参差不齐等问题。这些问题会影响到相应的系统级集成设计,进而影响到芯片的系统级验证工作。基于这样的场景,在系统级功能验证阶段,当出问题的模块和其他模块之间交互性不大,不会因为该模块的缺失而影响其它模块的协同仿真时,本申请可以在原有系统级验证环境不变的基础上,通过简单参数的传递和信号的赋值来快速完成该模块在待测设计里的移除和替换操作,具体步骤可以如下:请参考图1,图1为本申请实施例所提供的一种芯片的系统级验证方法的流程图,该方法包括:s101:接收验证请求;本步骤旨在系统级验证的验证请求,在此对于该验证请求所包含的信息内容不作具体限定。其可以包含验证对象,即待验证模块的相关信息,也可以不包含,由后续过程根据验证请求获取,均可以实现本实施例,并得到本实施例对应的技术效果。s102:根据所述验证请求确认待验证模块的模块路径和模块名;本步骤旨在确认待验证模块的模块路径和模块名,而该待验证模块可以包括待剔除模块和待替换模块。待剔除模块指需要被删除的模块,待替换模块可以为当前尚未设计完成的模块,均可以为本实施例中的待验证模块,即利用本实施例的系统级验证方法进行验证。本步骤需要根据验证请求确认模块路径和模块名,但对于如何根据验证请求获得上述信息不作具体限定。若验证请求中包含模块路径和模块名,则可以直接解析验证请求以得到模块路径和模块名。若验证请求中不包括上述信息,则可以根据验证请求的路径信息向请求方获取模块路径和模块名。此外,本步骤中要求至少获得模块路径和模块名,而在本实施例的具体应用过程中,本领域技术人员还可以确认待验证模块的其他模块相关信息,例如模块功能、模块接口和模块的相关信号信息等等,也应在本申请的保护范围内。s103:利用剔除脚本解析所述待验证模块执行挖空操作,得到端口信号,并结合模块路径和所述模块名生成挖空文件;本步骤旨在执行剔除脚本,对待验证模块的端口信号进行解析,再根据解析得到的端口信号、模块路径和模块名得到挖空文件。在此对于采用何种剔除脚本不作具体限定,只要其可以解析待验证模块的端口信号即可。需要注意的是,本实施例的目的在于利用挖空模块替换待验证模块,而只需要模拟出待验证模块的相同作用即可,即保证输入信号输入后可以得到与待验证模块预期输出结果一直的输出信号供后续模块使用即可,因此,本步骤重点在于解析待验证模块的端口信号,以及生成相应的挖空文件,为替换待验证模块做准备。s104:对所述挖空文件中的端口信号进行赋值,得到挖空模块;本步骤旨在对端口信号进行赋值,赋值的目的在于避免未赋值的端口信号输出不确定信号,影响系统级验证,甚至可能影响其他模块的正常运行。因此,需要对各端口信号进行赋值。优选的,在执行本步骤时,可以先根据端口信号的信号类别确定对应的信号固定值,再根据所述信号固定值对端口信号进行赋值,得到挖空模块。由于赋值的目的主要在于避免未赋值的端口信号对于系统级验证的影响,因此可以给端口信号赋固定值。该信号固定值与端口信号的信号类别相关,可以由本领域技术人事先计算或者确定。此外,如果不赋值,可以默认所有端口信号都接固定值0,以避免未赋值的端口信号造成不良影响。参见表1,表1为端口赋值列表,包含了几种端口信号的赋值示例。表1端口赋值列表信号名类型位宽逻辑赋值注释modulea_clk_iinput1always100m100m时钟modulea_rst_ninput10,0us;1,1us0时刻0,1微秒赋1modulea_req_iinput11始终1modulea_ack_ooutput10,0us;1,1us0时刻0,1微秒赋1modulea_bus1_ooutput[15:0]15'hffff输出全1modulea_data_ooutput[31:0]32'b0输出32位0赋值后,挖空文件即可作为挖空模块,替代待验证模块。此外,作为一种优选的执行方式,在执行本步骤时,可以调用端口赋值表根据端口信号的信号类别确定对应的信号固定值。该端口赋值表可以如表1所示,包含端口信号名称、类型等信息,当前述步骤中解析得到端口信号后,即可查表得到每个端口信号的逻辑赋值,并针对端口信号进行赋值。s105:利用所述挖空模块替换所述待验证模块添加至仿真脚本进行系统级验证。在得到挖空后,利用挖空模块替换所述待验证模块添加至仿真脚本,在仿真脚本中重新编译和链接该文件,进行系统级验证。本申请实施例通过对待验证模块进行解析和复制,并生成对应的挖空模块作为待验证模块的替代品参与系统级验证,能够在待验证模块未完成时降低对其余模块的验证影响,缩短验证周期,同时采用挖空模块替代待验证模块参与系统级验证该你可以解决由于不同模块设计交付节点不一致导致的多模块无法协同验证的问题。在上述实施例的基础上,上述实施例旨在实现待验证模块的替换过程。而在系统级验证中的模块协同验证时,也存在模块交付时间不一等问题,这种情况导致的结果就是只能等到相关的模块全部设计完成后才能进行协同验证,这样往往会拖慢系统级验证的进度。为了能够尽快开始系统级的协同验证,至少保证已设计完成的模块不会被未完成模块所影响,此时还可以包括如下步骤,参见图2,图2为本申请实施例所提供的协同验证方法的流程图:s201:根据待验证模块的端口定义生成待验证模块的通用模型验证环境;s202:调用序列类驱动通用模型验证环境;s203:将通用模型验证环境添加至仿真脚本,进行协同仿真。在执行步骤s201时,可以根据待验证模块的端口信号的功能类别生成待验证模块的通用模型验证环境。该通用模型验证环境可以基于已有的通用验证ip模板生成,但需要匹配待验证模块的功能加以实现,并听过端口驱动以完成和其关联模块的协同验证。首先需要明确待验证模块的端口信号的功能划分。若端口信号为总线类端口,指定总线类端口对应的总线验证ip挂载至总线类端口,以生成待验证模块的通用模型验证环境;若端口信号为非通用功能,配置通用模型验证环境中定序器的启用模式,并生成待验证模块的通用模型验证环境;若端口信号为通用功能,对定序器进行驱动更新后,生成待验证模块的通用模型验证环境。步骤s202中的序列类可以事先开发完毕,也可以现场开发,适配通用模型验证环境即可。最后可以通用模型验证环境添加至仿真脚本,进行协同仿真。此外,若待验证模块还需要模拟驱动类和序列类,可以直接复用与待验证模块对应相关模块在模块机验证环境中的驱动类和序列类,并参与系统级验证。当要替换的待验证模块需要开发模拟该模块的驱动类和序列类时,完全可以复用和其相关模块在模块级验证环境里的驱动类和序列类,可以进一步提升从模块级到系统级验证环境的复用性,让整个复用变得更加简单高效。本申请主要的应用场景是系统级阶段模块间的协同仿真验证。一般系统级验证在整个验证周期都是排在比较靠后的阶段,比如所有模块级验证都结束后。因为如果模块功能设计开发没有完成,相关模块功能没有验证通过的话,系统级的系统验证是没法开始的。但是如果所有模块级验证结束后再来启动系统级验证的话,就会加长验证周期,给整个验证环节尤其系统级验证阶段带来很大的压力。本申请可以让验证工程师在部分模块还没有设计开发完成时,又或者在部分模块压根还没有开发时,就可以通过简单的参数配置来保证系统级验证平台的完备性,来尽早开始系统级阶段的模块协同验证工作,在简单高效的测试方法的基础上保证系统模块的功能正确性,为整个项目验证周期节约时间,保证并提升芯片功能质量。下面对本申请实施例提供的一种芯片的系统级验证系统进行介绍,下文描述的系统级验证系统与上文描述的芯片的系统级验证方法可相互对应参照。参见图2,图2为本申请实施例所提供的一种芯片的系统级验证系统结构示意图,本申请还提供一种芯片的系统级验证系统,包括:请求接收模块100,用于接收验证请求;解析模块200,用于根据所述验证请求确认待验证模块的模块路径和模块名;所述待验证模块包括待剔除模块和待替换模块;挖空模块300,用于利用剔除脚本解析所述待验证模块执行挖空操作,得到端口信号,并结合所述模块路径和所述模块名生成挖空文件;赋值模块400,用于对所述挖空文件中的端口信号进行赋值,得到挖空模块;验证模块500,用于利用所述挖空模块替换所述待验证模块添加至仿真脚本进行系统级验证。基于上述实施例,作为优选的实施例,所述赋值模块400包括:值确定单元,用于根据所述端口信号的信号类别确定对应的信号固定值;赋值单元,用于根据所述信号固定值对所述端口信号进行赋值,得到挖空模块。基于上述实施例,作为优选的实施例,所述值确定单元为用于调用端口赋值表根据所述端口信号的信号类别确定对应的信号固定值的单元。基于上述实施例,作为优选的实施例,还包括:协同仿真模块,用于进行所述待验证模块的协同仿真时,根据待验证模块的端口定义生成所述待验证模块的通用模型验证环境;调用序列类驱动通用模型验证环境;将所述通用模型验证环境添加至仿真脚本,进行所述协同仿真。基于上述实施例,作为优选的实施例,上述协同仿真模块包括:环境配置单元,用于根据所述待验证模块的端口信号的功能类别生成所述待验证模块的通用模型验证环境;若所述端口信号为总线类端口,指定所述总线类端口对应的总线验证ip挂载至所述总线类端口,以生成所述待验证模块的通用模型验证环境;若所述端口信号为非通用功能,配置所述通用模型验证环境中定序器的启用模式,并生成所述待验证模块的通用模型验证环境;若所述端口信号为通用功能,对所述定序器进行驱动更新后,生成所述待验证模块的通用模型验证环境。基于上述实施例,作为优选的实施例,还可以包括:复用模块,用于复用与所述待验证模块对应相关模块在模块机验证环境中的驱动类和序列类,并参与所述系统级验证。本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1