专利名称:覆盖率驱动的随机验证的方法
技术领域:
本发明涉及集成电路的验证,特别涉及基于覆盖率驱动的随机验证。
背景技术:
随着集成电路设计规模的不断增大,功能日趋复杂,验证逐渐成为制约集成电路设计的瓶颈之一。传统的验证方法不仅效率低,而且验证结果的可靠性也不能完全得到保证,验证的遗漏点往往会成为导致芯片崩溃的杀手。为了解决验证的问题,最近出现了很多新的验证方法学,例如基于断言的验证,覆盖率驱动的随机验证等。通过随机激励能够发现很多设计和验证人员没有预想到的角落,但是如果不对随机激励源加以约束往往会产生很多重复的激励,这些激励不能提高验证的质量,只会降低验证的效率,延长验证的收敛时间。为了加速随机验证的收敛,我们通常会把覆盖率数据反馈给激励源,激励源根据当前的覆盖率情况对后续的随机激励加以约束,产生有针对性的激励,这样就可以减少简单重复的随机激励,加速验证的收敛过程。目前基于覆盖率驱动的随机验证都是使用单台计算机或工作站进行的,在项目进度紧迫时不能有效加快验证的速度。因此需要一种能够加速验证的收敛过程的基于覆盖率驱动的随机验证的方法。
发明内容
本发明的目的在于解决上述问题中的一个或多个。为了达到上述目的,本发明提出一种方法,其充分利用多计算机的资源,通过共享及融合覆盖率数据加快基于覆盖率驱动的随机验证的收敛过程。本发明在一个方面,提出一种利用至少两个计算单元进行覆盖率驱动的随机验证的方法,所述至少两个计算单元包括第一计算单元和第二计算单元,所述第一计算单元具有第一覆盖率数据库,所述第二计算单元具有第二覆盖率数据库,所述第一计算单元和所述第二计算单元均可访问总覆盖率数据库,所述方法包括
所述第一计算单元启动第一随机验证,并将第一随机验证产生的第一覆盖率数据写入第一覆盖率数据库,
所述第二计算单元启动第二随机验证,并将第二随机验证产生的第二覆盖率数据写入第二覆盖率数据库,
每隔一段时间,将第一覆盖率数据库的第一覆盖率数据和第二覆盖率数据库的第二覆盖率数据写入总覆盖率数据库,
对总覆盖率数据库中的第一覆盖率数据和第二覆盖率数据进行融合,得到融合的覆盖率数据,
将融合的覆盖率数据写入第一覆盖率数据库和第二覆盖率数据库。根据本发明的另一方面,第一计算单元使用第一随机激励启动第一随机验证,第二计算单元使用第二随机激励启动第二随机验证,第一随机激励与所述第二随机激励不CN 同。根据本发明的另一方面,第一计算单元根据融合的覆盖率数据调整第一随机激励,第二计算单元根据融合的覆盖率数据调整第二随机激励。根据本发明的另一方面,调整第一随机激励包括改变第一激励或者调整指令的权重。根据本发明的另一方面,还包括使用第三计算单元根据融合的覆盖率数据进行第三随机验证。本发明具有下列优点
1、各计算机间通过网络共享覆盖率数据,并行工作减少单个计算机性能对验证速度的制约,可有效加快基于覆盖率驱动的随机验证的收敛过程。2、通过在仿真脚本中加入网络传输命令或使用已有的网络传输工具即可将覆盖率数据发送到远程的覆盖率数据库。通常仿真工具产生覆盖率数据可以通过简单的办法进行融合。整个控制简单,避免了实现的复杂性。3、可以根据计算机资源,随时增加或减少整个验证网络中计算机的数目,不会中断验证进程。
图1是根据本发明的一个实施例的使用多计算单元加速覆盖率驱动的随机验证的系统架构示意图。
具体实施例方式以下结合附图,对本发明的具体实施例进行详细的说明。如图1所示,多个计算单元,例如计算单元1、2、3和4,连接到中心计算单元5,该连接可以是无线连接或者有线连接。本发明的计算单元可以是常用的计算机,但不限于此, 计算单元可以包括能够进行仿真的任何计算设备。各计算单元能够分别启动自己的随机仿真,为了减小各计算单元产生的激励的相关性,各计算单元使用的随机激励或随机种子应有足够差别。各计算单元有本地的覆盖率数据库,这样可以减少通信给仿真速度造成的影响。远程覆盖率数据库(即,总覆盖率数据库)位于中心计算单元5上。总覆盖率数据库融合来自各计算单元的覆盖率数据。例如,总覆盖率数据库利用可以利用仿真工具提供的覆盖率融合办法或脚本语言融合来自各计算单元的覆盖率数据,从而生成总覆盖率数据。总覆盖率数据库也可以位于计算单元1-4其中之一从而不需要中心计算单元5。下面以Synopsys公司的VCS作为仿真工具示例性地说明本发明的使用多计算单元加速覆盖率驱动的随机验证的具体过程。需要说明的是本发明不限于VCS,本发明提出的方法适用于所有支持覆盖率仿真的EDA工具。首先,各计算机(仿真计算机)分别启动自己的仿真,仿真使用设计好的侧重于不同验证点的激励,例如验证设计中的不同模块的激励,各指令比重不同的激励,正常模式和异常模式的激励等。当仅有一条随机激励时可以使用不同的种子作为随机激励的种子, 例如各计算机的MAC地址,计算机号等有区分的信息。
4
仿真时各计算机维护一套本地的覆盖率数据,覆盖率的数据从名称上加以区分, 各仿真计算机的本地覆盖率数据使用-cm_name选项生成名称不同的本地覆盖率数据。每隔一段时间,各计算机使用网络命令(例如Linux操作系统下的scp或FTP传输工具,例如 gftp等)将本地的覆盖率数据拷贝到网络中具有固定网址的中心计算机(中心计算单元), 中心计算机具有远程覆盖率数据库(即,总覆盖率数据库)。也可以不需要专门的存放共享的覆盖率数据的中心计算机,使用其中一台仿真用的计算机存储总覆盖率数据库。作为选择,各仿真计算机本地仿真时可以使用-O选项生成名称不同的本地仿真数据,然后将本地仿真数据发送到总覆盖率数据库。总覆盖率数据库对收集到的来自各计算机的覆盖率数据进行融合,总覆盖率数据库仅保存和更新来自各仿真计算机的不同数据,使用名称作为区分,不需要额外的融合。例如覆盖率数据库使用-cm_dir -cm_map -cm_name选项将来自各仿真计算机的数据融合成一个统一的覆盖率数据,减少总的覆盖率文件的数据。每隔一段时间,当各计算机需要根据覆盖率情况对随机激励的产生进行新的调整时,发送命令从总覆盖率数据库取回融合后的覆盖率数据,并根据各计算机仿真的总覆盖率情况对后续产生的随机激励进行约束调整。例如,每隔一段时间或当各计算机的覆盖率提升较慢时,各计算机使用网络命令或FTP工具从远程覆盖率数据库拷贝出融合后的覆盖率数据并和本地的覆盖率数据进行再融合,随机激励源根据当前的覆盖率情况对后续产生的激励进行调整,例如,选择不同的激励或者调整各指令的权重等。当需要加快验证的收敛速度时,可直接把新的计算机连接到验证网络上。新计算机首先从总覆盖率数据库拷贝出目前已验证的总的覆盖率,然后根据当前验证的情况启动新的验证。另外,当需要把其中某些计算机用于其他用途时,也可在该计算机将本地覆盖率数据拷贝到总覆盖率数据库后中止该计算机的仿真。实例
下面列举具体的例子。通过以一款USB2.0 Slave控制器为例,说明如何实现使用多计算机加速覆盖率驱动的随机过程。对于USB2. 0 Slave控制器的验证至少要包括低速/全速,控制传输/等时传输/ 中断传输/块传输,各种类型枚举,电气层正常/异常,内部缓存空/满等情况的验证。这些功能点将通过System Verilog中的covergroup禾口 assert进行描述,covergroup的覆盖率会反馈到激励源以调整各种USB包的比例以及插入异常包等以实现基于覆盖率驱动的验证。当设计修改后,我们需要对设计进行回归验证,为了缩短验证时间,我们可能会同时启动多台仿真计算机从不同方面验证修改后的设计,例如分别验证各种枚举,缓存空满,正常异常包等。为了使验证人员的覆盖率数据能够共享,从整体上评估验证的进度,我们需要融合各计算机的验证结果。各仿真计算机生成本地覆盖率数据库时,使用VCS中的-ο选项生成不同的覆盖率数据,例如-ο simv. enum, -ο simv. buffer,-ο simv. error_ pkg等,每运行一小时,所有仿真计算机将本地覆盖率数据拷贝到网络上特定计算机(总覆盖率数据库)的C0Verage_SUm文件夹下。当总覆盖率数据库检查到本地文件有更新时,使用VCS - cm_dir simv. enum - cm_dir simv. buffer - cm_dir simv. error_pkg - cm_map sum - cm_name c0V_sum生成统一的覆盖率数据C0V_sum。然后各仿真计算机从总覆盖率数据库拷贝回coV_Sum以替代原有的本地覆盖率数据,这样各仿真计算机就得到了其他计算机的覆盖率数据,此时各仿真计算机可以根据总的覆盖率情况调整激励产生策略,例如缓存满没有发生时,即可调整USB Host发包的速度,降低CPU读取包的速度。通过四台计算机共享覆盖率的办法进行回归验证可以将原本一台计算机需要三天的验证时间降低到一天左右,充分利用了多计算机的资源。通过上述实施例的描述,本发明的优点是明显的。本发明可以充分利用计算机资源,通过共享覆盖率数据库减少单个计算机性能对验证的制约,加速覆盖率驱动的随机验证的收敛速度。应当理解的是,上述针对具体实施方式
的描述较为具体,只是为了更好的将本发明所公开的验证方法进行阐述,并不能因此而认为是对本发明专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。
权利要求
1.一种利用至少两个计算单元进行覆盖率驱动的随机验证的方法,所述至少两个计算单元包括第一计算单元和第二计算单元,所述第一计算单元具有第一覆盖率数据库,所述第二计算单元具有第二覆盖率数据库,所述方法包括所述第一计算单元启动第一随机验证,并将第一随机验证产生的第一覆盖率数据写入第一覆盖率数据库,所述第二计算单元启动第二随机验证,并将第二随机验证产生的第二覆盖率数据写入第二覆盖率数据库,将第一覆盖率数据库的第一覆盖率数据和第二覆盖率数据库的第二覆盖率数据写入总覆盖率数据库,对总覆盖率数据库中的第一覆盖率数据和第二覆盖率数据进行融合,得到融合的覆盖率数据,将融合的覆盖率数据写入第一覆盖率数据库和第二覆盖率数据库。
2.根据权利要求1所述的方法,其中,所述第一计算单元使用第一随机激励启动第一随机验证,所述第二计算单元使用第二随机激励启动第二随机验证,所述第一随机激励与所述第二随机激励不同。
3.根据权利要求2所述的方法,其中,所述第一计算单元根据融合的覆盖率数据调整第一随机激励,所述第二计算单元根据融合的覆盖率数据调整第二随机激励。
4.根据权利要求3所述的方法,其中调整第一随机激励包括改变第一激励或者调整指令的权重。
5.根据权利要求1-4中任一项所述的方法,还包括使用第三计算单元根据融合的覆盖率数据进行第三随机验证。
6.根据权利要求1-4中任一项所述的方法,其中总覆盖率数据库位于与第一和第二计算单元连接的中心计算单元。
7.根据权利要求1-4中任一项所述的方法,其中总覆盖率数据库位于第一或第二计算单元。
全文摘要
本发明提出一种利用至少两个计算单元进行覆盖率驱动的随机验证的方法,所述至少两个计算单元包括第一计算单元和第二计算单元,所述第一和第二计算单元分别具有第一和第二覆盖率数据库,所述第一和第二计算单元均可访问总覆盖率数据库,所述第一和第二计算单元分别启动各自的随机验证,并将产生的覆盖率数据写入各自的覆盖率数据库,然后将覆盖率数据库的覆盖率数据写入总覆盖率数据库,并对总覆盖率数据库中的覆盖率数据进行融合,得到融合的覆盖率数据,最后将融合的覆盖率数据写入第一覆盖率数据库和第二覆盖率数据库。
文档编号G06F17/50GK102542088SQ20101060722
公开日2012年7月4日 申请日期2010年12月27日 优先权日2010年12月27日
发明者陈涛 申请人:北京国睿中数科技股份有限公司