CN117454811A - 待测设计的验证方法及装置 - Google Patents

待测设计的验证方法及装置 Download PDF

Info

Publication number
CN117454811A
CN117454811A CN202311496505.7A CN202311496505A CN117454811A CN 117454811 A CN117454811 A CN 117454811A CN 202311496505 A CN202311496505 A CN 202311496505A CN 117454811 A CN117454811 A CN 117454811A
Authority
CN
China
Prior art keywords
dut
sub
output result
point
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311496505.7A
Other languages
English (en)
Inventor
田畅
郭龙成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gechuang Communication Zhejiang Co ltd
Original Assignee
Gechuang Communication Zhejiang Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Gechuang Communication Zhejiang Co ltd filed Critical Gechuang Communication Zhejiang Co ltd
Priority to CN202311496505.7A priority Critical patent/CN117454811A/zh
Publication of CN117454811A publication Critical patent/CN117454811A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

本发明实施例提供了待测设计的验证方法及装置,方法包括:将待测数据输入DUT,获取DUT在多个目标检测点的第一输出结果;每一目标检测点对应于DUT中的一个待测子设计,待测子设计是基于DUT的寄存器转换基级RTL描述,根据数据流在DUT内的特定行为发生点对DUT进行拆分后获得的;将待测数据输入与DUT对应的RM,获取RM包含的每个子模型的第二输出结果;每一子模型对应于一个待测子设计;针对每一目标检测点的第一输出结果,基于该目标检测点对应的子模型的第二输出结果,对该第一输出结果进行验证。能够提升芯片验证的准确性和调试效率。

Description

待测设计的验证方法及装置
技术领域
本发明涉及芯片测试技术领域,特别是涉及待测设计的验证方法及装置。
背景技术
随着芯片制造技术的发展,芯片的设计和验证变得越来越复杂。在芯片设计和验证的过程中,RM(Reference Model,参考模型)是非常重要的一环。RM是指利用软件或硬件等方式对芯片进行仿真和测试,以检查芯片的正确性和性能。
传统的RM设计方法通常采用黑盒验证方法,然而,这种验证方法仅能验证DUT运算结果的准确性,无法保证DUT(Design under Test,待测设计)运算过程的准确性,针对设计复杂的DUT无法满足验证需求。
发明内容
本发明实施例的目的在于提供一种待测设计的验证方法及装置,以提升芯片验证的准确性和调试效率。具体技术方案如下:
第一方面,本发明实施例提供了一种待测设计的验证方法,包括:
将待测数据输入待测设计DUT,获取所述DUT在多个目标检测点的第一输出结果;每一所述目标检测点对应于所述DUT中的一个待测子设计,所述待测子设计是基于所述DUT的寄存器转换基级RTL描述,根据数据流在所述DUT内的特定行为发生点对所述DUT进行拆分后获得的;
将所述待测数据输入与所述DUT对应的参考模型RM,获取所述RM包含的每个子模型的第二输出结果;每一所述子模型对应于一个所述待测子设计;
针对每一所述目标检测点的第一输出结果,基于该目标检测点对应的子模型的第二输出结果,对该第一输出结果进行验证。
可选的,所述将所述待测数据输入与所述DUT对应的参考模型RM,获取所述RM包含的每个子模型的第二输出结果之后,还包括:
针对每一所述子模型的第二输出结果,基于该子模型对应的第一输出结果的预期输出时序,对该第二输出结果进行打拍处理,以使所述第二输出结果的输出时序与所述预期输出时序对齐;每一所述第一输出结果的预期输出时序,是基于所述DUT的RTL描述预先确定的;
所述针对每一所述目标检测点的第一输出结果,基于该目标检测点对应的子模型的第二输出结果,对该第一输出结果进行验证,包括:
针对每一所述目标检测点的第一输出结果,基于该目标检测点对应的子模型的打拍处理后的第二输出结果,对该第一输出结果的数据正确性以及时序正确性进行验证。
可选的,所述方法还包括:
通过预设断言语句,对所述DUT中预设信号线上和/或预设缓存位置的目标数据的正确性进行验证。
可选的,所述特定行为发生点包括缓存点、汇聚点、调度点、反压点/删除点、释放点中的任意一项或多项。
第二方面,本发明实施例提供了一种待测设计的验证装置,包括:
第一获取模块,用于将待测数据输入DUT,获取所述DUT在多个目标检测点的第一输出结果;每一所述目标检测点对应于所述DUT中的一个待测子设计,所述待测子设计是基于所述DUT的RTL描述,根据数据流在所述DUT内的特定行为发生点对所述DUT进行拆分后获得的;
第二获取模块,用于将所述待测数据输入与所述DUT对应的RM,获取所述RM包含的每个子模型的第二输出结果;每一所述子模型对应于一个所述待测子设计;
第一验证模块,用于针对每一所述目标检测点的第一输出结果,基于该目标检测点对应的子模型的第二输出结果,对该第一输出结果进行验证。
可选的,还包括:
处理模块,用于针对每一所述子模型的第二输出结果,基于该子模型对应的第一输出结果的预期输出时序,对该第二输出结果进行打拍处理,以使所述第二输出结果的输出时序与所述预期输出时序对齐;每一所述第一输出结果的预期输出时序,是基于所述DUT的RTL描述预先确定的;
所述第一验证模块,具体用于:
针对每一所述目标检测点的第一输出结果,基于该目标检测点对应的子模型的打拍处理后的第二输出结果,对该第一输出结果的数据正确性以及时序正确性进行验证。
可选的,还包括:
第二验证模块,用于通过预设断言语句,对所述DUT中预设信号线上的目标数据,和/或,对所述DUT中数据缓存时序与数据释放时序进行验证。
可选的,所述特定行为发生点包括缓存点、汇聚点、调度点、反压点/删除点、释放点中的任意一项或多项。
第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一项待测设计的验证方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项待测设计的验证方法。
本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一待测设计的验证方法。
本发明实施例有益效果:
本发明实施例提供的待测设计的验证方法及装置,针对DUT进行验证时,预先基于数据流在DUT内的特定行为发生点,将DUT拆分为了多个待测子设计,且每个待测子设计均基于自身的逻辑对数据进行相应的处理。在此基础上,实质将针对DUT的验证过程解耦为了针对其中包含的多个待测子设计的验证,也就是说,针对DUT的最终输出结果的验证,被解耦为了针对与每个待测子设计对应的目标检测点的输出结果的验证。从而在进行RM的设计时,可以基于DUT中每个待测子设计预期实现的功能,设计与该待测子设计对应的子模型。
在进行验证的过程中,具体是将待测数据分别输入DUT和RM,针对DUT在每个目标检测点的输出结果,具体基于RM与该目标检测点对应的子模型的输出结果对其进行验证。相较于传统的验证方法,除了能够实现对DUT运算结果的准确性进行验证之外,还能够对运算过程中DUT内特定待测子设计的功能是否满足预期进行验证,避免出现运算结果正确但运算过程实际并不满足预期的情况。并且,在任一目标检测点的输出结果不满足预期时,还能够较为简化地将出现bug的位置定位于特定的待测子设计内,便于进行bug分析和排除,提升调试效率,验证准确性更高、验证效果更好。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1是本发明实施例提供的芯片验证平台的一种示意图;
图2是本发明实施例提供的待测设计的验证方法的流程示意图;
图3是本发明实施例提供的DUT中的待测子设计的示意图;
图4是本发明实施例提供的数据流结构的示意图;
图5是本发明实施例提供的待测设计的验证装置的结构示意图;
图6是本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的芯片验证平台的一种示意图,为了便于理解,下面先结合图1对本发明实施例一种可能的应用场景进行示例性说明。
芯片验证,具体即验证芯片设计的实现是否与设计意图相符。在芯片验证环节,待测试的芯片被称为DUT,具体可以理解为通过verilog(一种硬件描述语言)编写成的时序电路。为了测试DUT的正确性,通常需要设计一个与该DUT对应的RM,RM用于实现和DUT相同的功能,且RM的输出结果即被认为是DUT的预期输出结果。因此,通过对RM和DUT的输出结果之间的一致性进行比对,即可实现对于DUT的验证。
参见图1所示的芯片验证平台,其中具体包括driver(驱动程序)、DUT、RM、monitor(监测器)、以及scoreboard(计分板)。其中,driver、RM、monitor和scoreboard具体通过芯片验证平台的验证环境env中的类进行派生实现,并且在芯片验证平台当中,上述不同组件之间的通信通常使用TLM(Transaction Level Modeling,事务级建模)机制进行实现。
在图1所示的芯片验证平台中,driver具体用于为DUT施加不同的激励,DUT在接收到对应的激励之后即可生成需要被验证的输出结果,且芯片验证平台具体通过monitor来对DUT的输出结果进行监测、将DUT的输出结果转换为与RM的输出结果具有相同数据结构的输出数据并将其发送至scoreboard。RM用于实现与DUT相同的功能,其输入数据与DUT一致,且其输出数据具体被发送至scoreboard。Scoreboard具体用于对接收到的DUT的输出结果和RM的输出结果进行比较,从而判断DUT的输出结果是否满足预期。
然而,传统的黑盒验证方法仅能验证DUT运算结果的准确性,无法保证DUT运算过程的准确性,针对设计复杂的DUT无法满足验证需求。
为了解决上述问题,本发明实施例提供了一种待测设计的验证方法,图2是本发明实施例提供的待测设计的验证方法的流程示意图,参见图2,该方法具体包括以下步骤:
步骤S201:将待测数据输入DUT,获取DUT在多个目标检测点的第一输出结果;每一目标检测点对应于DUT中的一个待测子设计,待测子设计是基于DUT的RTL描述,根据数据流在DUT内的特定行为发生点对DUT进行拆分后获得的。
在本发明实施例中,DUT即芯片验证过程中需要被验证的对象。具体的,在进行芯片设计的过程中,通常会采用RTL代码来进行芯片的描述。从而在本发明实施中,实际可以将被验证的对象理解为预先设计好的RTL代码、或者说是RTL描述。
基于前文中的说明能够看出,由于进行芯片验证时具体将RM的输出数据认为是DUT的预期输出数据,因此RM的设计准确性与设计合理性对于芯片的验证效果起着至关重要的作用。就传统的芯片验证方法而言,具体会基于实际预期DUT具备的功能与特征进行RM的编写,编写出的RM要实现的功能与DUT要实现的功能一致。
针对通过RTL描述实现的DUT而言,设计人员在编写RTL代码时,具体会根据数据在寄存器之间的流动和处理过程进行电路描述。因此,基于RTL代码即可实现对于DUT内部数据流的分析,确定数据从输入到输出期间在DUT内不同部件之间的流动和处理过程,从而在从数据流的角度上理解DUT时,DUT内部的设计其实可以在逻辑上被解耦为多个子设计。也就是说,从数据进入DUT、到处理结果从DUT中输出的整个过程当中,DUT内被解耦出的子设计会依次基于自身逻辑对数据进行相应的处理,且从当前的子设计中流出的输出数据,即要流入到下一个子设计中的输入数据。在这个角度上而言,每个子设计的内部逻辑与其它子设计的内部逻辑可以认为是相互独立的。
图3是本发明实施例提供的DUT中的待测子设计的示意图,参见图3,a1即输入到DUT中的待测数据,a5即从DUT中输出的结果数据。在图3的示例中,具体可以从数据流的角度将DUT解耦为A至D共四个待测子设计,每个待测子设计均对应于DUT内部的一部分时序电路、并能够基于自身逻辑对其内部的数据进行相应处理。从而,DUT将a1处理为a5的过程,具体包括A将a1处理为a2的过程、B将a2处理为a3的过程、C将a3处理为a4的过程以及D将a4处理为a5的过程。由于待测子设计A至D均用于实现特定的功能,因此针对DUT的验证,实际上也可以通过对A至D这四个待测子设计的验证实现。
传统的芯片验证方法具体要对DUT的输出结果进行验证,在将DUT拆解为多个待测子设计的基础上,在对DUT进行验证时,则可以对其中的每一待测子设计的输出结果进行验证。由于待测子设计其实仅为针对DUT的逻辑拆分结果,而无需在实质上对待测试的DUT进行拆解,所以在测试过程中仍可以将待测数据输入作为一个整体的DUT进行验证。在这种情况下,为了获取每个待测子设计的输出结果,具体需要根据待测子设计的逻辑拆分结果,将每个待测子设计在DUT中对应的数据输出位置作为目标检测点,后续将待测数据输入DUT之后,具体需要获取DUT在每个目标检测点的输出结果。
作为一个示例,针对图3中的待测子设计A至D,具体需要在DUT中确定四个目标检测点,从而能够在a2、a3、a4和a5对应的输出位置分别获取到待测子设计A至D的输出结果。
在本发明实施例中,在从数据流的角度对DUT进行拆分时,具体可以根据数据流在DUT内的特定行为发生点进行DUT的拆分。
前文中提及,通过对DUT进行拆分,具体可以将针对DUT的验证解耦为针对其包含的各个待测子设计的验证,也就是说,后续可以较为简化的将bug(错误)的出现位置定位到特定的待测子设计。在验证效率的角度上而言,如果数据在DUT内部的部分组件之间仅进行简单的传输、则这部分组件出现bug的可能性并不高,也就没有必要将这部分组件拆分为多个待测子设计。从而在本发明实施例中,可以根据实际需求对数据流的特定行为进行指定,认为DUT内的数据流在发生这些特定行为时更容易出现bug,从而在对DUT进行拆分时,可以根据RTL描述对数据在DUT内的具体流动和处理过程进行分析,以确定数据流在DUT内的特定行为发生点,然后基于这些特定行为发生点对DUT进行拆分并确定目标检测点。
以图3为示例,DUT中的待测子设计A至D具体可以是基于数据流的特定行为发生点p1至p3对DUT进行拆分后获得的,其中,A用于对DUT的输入点和p1之间的数据进行处理,B用于对p1和p2之间的数据进行处理,C和D同理。
本发明实施例不对数据流的特定行为发生点的范围进行具体限定,作为一个示例,数据流的特定行为发生点具体可以包括数据流的汇聚点、缓存点、释放点等。
步骤S202:将待测数据输入与DUT对应的RM,获取RM包含的每个子模型的第二输出结果;每一子模型对应于一个待测子设计。
前文中提及,将DUT拆分为多个待测子设计,实际上将针对DUT的验证拆分为了针对这些待测子设计的验证。而RM具体用于验证特定功能的实际实现是否与其预期实现一致,因此,在将DUT拆分为多个待测子设计的基础上,也就能够基于其中每个待测子设计所预期实现的功能,设计与每个待测子设计对应的子模型,获得与该DUT对应的RM。
以图3为示例,具体可以基于A至D中的每个待测子设计预期要实现的功能,分别设计与A至D对应的RM。在这种情况下,DUT对应的RM具体可以包含与A对应的子模型RM-A,与B对应的子模型RM-B,与C对应的子模型RM-C和与D对应的子模型RM-D,其中,子模型RM-A用于实现与A相同的功能,子模型RM-B至RM-D同理。
前文中提及,DUT具体可以理解为通过verilog语言实现的时序电路,因此DUT的功能实际上是基于硬件层面的逻辑来实现的。而RM则仅是在DUT预期功能上的等效,在功能的具体实现逻辑上区别于DUT。在实际应用中,开发人员可以根据待测子设计预期实现的功能,使用相较于verilog更为抽象的编程语言在软件层面对这一功能进行实现,开发与待测子设计对应的RM。作为一个示例,可以通过System Verilog(一种编程语言)或C++(一种编程语言)进行RM的设计。
在完成RM中包含的每一子模型的设计之后,在对DUT进行验证的过程中,具体需要将输入到DUT中的待测数据也输入到RM中,获取其中的每一个子模型的输出结果。应当理解,RM实际上为一段程序代码,因此,每个子模型具体可以理解为RM的完整代码中的一部分代码片段,且当前的代码片段的输出,即下一个代码片段的输入。
步骤S203:针对每一目标检测点的第一输出结果,基于该目标检测点对应的子模型的第二输出结果,对该第一输出结果进行验证。
前文中提及,每一目标检测点均对应于DUT的一个待测子设计,该目标检测点的第一输出结果具体可以理解为对应的待测子设计的输出结果,且每一待测子设计均与RM的一个子模型相对应,从而,每一目标检测点具体与一个子模型相对应。
因此,要对任一待测子设计进行验证,具体即对与该待测子设计对应的目标检测点的第一输出结果进行验证。并且在对任一目标检测点的第一输出结果进行验证时,具体是基于与该目标检测点对应的子模型的第二输出结果,对这一第一输出结果进行验证。前文中提及,子模型用于实现与待测子设计相同的功能,且子模型的输出结果被认为是待测子设计的预期输出结果,因此在实际的验证过程中,若任一目标检测点的第一输出结果与对应的第二输出结果一致,可以认为对应的待测子设计的实现满足预期,若任一目标检测点的第一输出结果与对应的第二输出结果不一致,则可以认为对应的待测子设计的实现不满足预期。
承接前例,结合图3对DUT的验证过程进行示例性说明,若子模型RM-A至RM-D的第二输出结果分别为a2’、a3’、a4’和a5’,对DUT进行验证,具体即对a2和a2’之间、a3和a3’之间、a4和a4’之间以及a5和a5’之间的一致性进行比较。示例性的,若a2和a2’不一致,则认为DUT的验证不通过,且由于a2具体为待测子设计A对a1进行处理后获得的,因此可以将DUT中出现bug的位置具体定位于待测子设计A内。
本发明实施例提供的待测设计的验证方法,针对DUT进行验证时,预先基于数据流在DUT内的特定行为发生点,将DUT拆分为了多个待测子设计,且每个待测子设计均基于自身的逻辑对数据进行相应的处理。在此基础上,实质将针对DUT的验证过程解耦为了针对其中包含的多个待测子设计的验证,也就是说,针对DUT的最终输出结果的验证,被解耦为了针对与每个待测子设计对应的目标检测点的输出结果的验证。从而在进行RM的设计时,可以基于DUT中每个待测子设计预期实现的功能,设计与该待测子设计对应的子模型。
在进行验证的过程中,具体是将待测数据分别输入DUT和RM,针对DUT在每个目标检测点的输出结果,具体基于RM与该目标检测点对应的子模型的输出结果对其进行验证。相较于传统的验证方法,除了能够实现对DUT运算结果的准确性进行验证之外,还能够对运算过程中DUT内特定待测子设计的功能是否满足预期进行验证,避免出现运算结果正确但运算过程实际并不满足预期的情况。并且,在任一目标检测点的输出结果不满足预期时,还能够较为简化地将出现bug的位置定位于特定的待测子设计内,便于进行bug分析和排除,提升调试效率,验证准确性更高、验证效果更好。
此外,在芯片验证中,时序相关的复杂数据通路的验证是非常重要也是薄弱的一环,是数据通路模块的验证中最复杂的部分之一。时序相关的数据通路的验证不仅要考虑数据传输的正确性和稳定性,还需要考虑时序问题。
考虑时序问题,可以理解为:在芯片验证过程中,存在按时序严格比对的机制,要求根据DUT时钟上升沿采样的结果进行比对。时序的比对机制优点在于精确性与实时性,但难点也在于精确性与实时性,这种比对机制会极大地增加RM的设计难度与编码难度。
传统的RM设计方法通常采用无时序的方法,即RM/DUT的输出结果按照其输出顺序被依次存入了队列当中,芯片验证平台的scoreboard在进行结果比对时,按顺序依次取出队列中的结果数据,有顺序的对RM和DUT的输出结果进行比对。
然而,这种验证方法仅适用于输出顺序与DUT时序及内部存储空满状态无关的设计代码,当DUT特性是输出结果与时序和DUT内部存储空满状态相关时,传统的RM无法模拟这种时序与真实队列的空满状态,无法满足对DUT的输出结果在时序上进行验证的需求。
为了解决这一问题,强时序的RM采用了白盒验证策略,即完全按照DUT的设计方式用System Verilog实现与DUT相同的逻辑,并保证RM的每一拍输出数据都与DUT严格同步。这种验证策略通常使用DUT的接口和RM的数据直接按时钟沿进行每周期对比或者采用断言的方式验证,对于一些较难实现的逻辑,则采用拉DUT信号的方式进行判断。
然而,这种强时序的RM采用按时钟沿采样的比对机制,适用于输出顺序与DUT时序及内部存储空满状态相关性强的设计代码,并且需要采用白盒验证策略进行验证时。当DUT特性是输出结果与时序和DUT内部存储空满状态非紧密相关时,DUT的输出时序难以预期,不适宜采用强时序的RM,并且拉DUT信号的方式存在一定风险,所以需要采用新的验证方法。
并且,这种强时序的RM具体需要采用System Verilog语言进行实现,由于这一语言是在verilog语言的基础上发展出来的、且需要通过RM对于DUT的逻辑进行严格模拟,因此编写出的RM的实现逻辑与DUT的实现逻辑之间的相似性较高,使得编写出的RM容易与待验证的DUT出现趋同性错误,导致以RM的输出结果为参照时无法准确检测出DUT中存在的bug,验证准确性和可靠性不足。
有鉴于此,在本发明的一个实施例中,提供了一种能够实现时序精确比对机制的验证方法,在该实施例中,前述将待测数据输入与DUT对应的RM,获取RM包含的每个子模型的第二输出结果之后,还包括:
针对每一子模型的第二输出结果,基于该子模型对应的第一输出结果的预期输出时序,对该第二输出结果进行打拍处理,以使第二输出结果的输出时序与预期输出时序对齐;每一第一输出结果的预期输出时序,是基于DUT的RTL描述预先确定的;
相应的,前述针对每一目标检测点的第一输出结果,基于该目标检测点对应的子模型的第二输出结果,对该第一输出结果进行验证,包括:
针对每一目标检测点的第一输出结果,基于该目标检测点对应的子模型的打拍处理后的第二输出结果,对该第一输出结果的数据正确性以及时序正确性进行验证。
前文中提及,DUT是根据芯片的预期功能在硬件层面进行的具体实现,因此DUT在对待测数据进行处理的过程中,需要按照时钟一拍一拍进行,耗费大量的仿真时间。而在通过如C++等编程语言进行RM的实现时,RM理论上不存在时钟,因此RM仅消耗执行时间,而执行时间相较于仿真时间是几乎可以忽略不记的。从而在应用图1所示的芯片验证平台时,RM的输出结果会优先到达scoreboard,因此无法基于RM的输出结果对DUT的时序进行验证,也无法实现RM的输出结果和DUT的输出结果之间一对一的实时比对。
在本发明实施例中,为了对DUT的时序进行验证并实现实时比对,采用了弱时序的RM设计,具体即,根据数据在DUT内从输入到输出的逻辑特点,采用延时技术实现RM的输出结果与DUT的输出结果同步。
具体的,在实际应用中,可以从DUT的设计方案出发,结合RTL描述,分析数据在DUT内部的具体逻辑,确定DUT的输出结果的预期输出时序。在存在如数据反压等特殊情况时,还可以结合外部的反压信号确定具体的预期输出时序。
在确定出DUT中目标检测点的输出结果的预期输出时序之后,即可对该目标检测点对应的子模型的输出结果进行打拍处理,使得该子模型的输出结果与该目标检测点的输出结果时序对齐。
在对子模型的输出结果进行打拍处理后,DUT在每个目标检测点的输出结果、与RM包含的子模型的输出结果严格时序对齐以及数据对齐,因此,可以按照时序直接进行DUT的输出结果与RM的输出结果之间的比对。
以图3为示例,若预期待测子设计A在子模型RM-A输出结果后的n拍输出结果数据,则在子模型RM-A获得自身的输出结果之后,对RM-A的输出结果进行打拍处理,使得其输出结果的输出时序与A的输出结果的时序对齐。在此基础上,在对DUT的输出数据进行验证时,由于RM的输出数据与DUT的输出数据同步,可以基于时钟对DUT的输出数据和RM的输出数据进行逐拍比对,实现实时检测。
在本发明实施例中,采用弱时序的方式进行RM和DUT之间输出时序的同步,具体即针对RM的每个子模型的输出结果,根据与其对应的目标检测点的输出结果的预期输出时序,对该子模型的输出结果进行打拍处理,实现RM的输出结果与DUT的输出结果之间的时序对齐,通过弱时序机制的RM有效模拟了芯片在实际工作情况下的时序不确定性,实现基于时序的精确实时比对,验证精度及可靠性更高。
并且,由于本发明实施例不需要通过RM本身对DUT内部的时序进行模拟,因此可以选用例如C++等抽象程度更高的语言进行RM的设计,这样设计出的RM与DUT在实现逻辑上的差异较大,编写的RM与DUT产生相同错误的概率小,从而能够避免RM与DUT产生趋同性错误导致的验证准确性不足的问题。
在本发明的一个实施例中,前述特定行为发生点包括缓存点、汇聚点、调度点、反压点/删除点、释放点中的任意一项或多项。
在实际应用中,可以通过对数据在DUT内的具体流向和处理过程进行分析,定位数据流在DUT中的特定行为发生点。图4是本发明实施例提供的数据流结构的示意图,下面结合图4对上述特定行为发生点进行简要说明。
其中,缓存点即对数据进行缓存的点,参见图4,输入数据输入1至输入n被存入队列1至队列n,因此能够在DUT内确定出缓存点。实际应用中,后级的反压和删除信号可能会对缓存点的时序造成影响,导致数据的缓存难以预期。
汇聚点即多数数据流汇聚成少数数据流的点,参见图4,队列1至队列n中的多路数据流被汇聚,因此在DUT内确定出汇聚点。汇聚点的输入速率大于输出速率时,容易造成阻塞导致反压。
调度点则是使用了调度算法或随机算法的点,因算法结果具有微观不确定性,使得结果不好预期。例如,在数据的汇聚点可能需要对多个数据进行选择,此时需要通过调度算法或随机算法进行数据处理,因此DUT中的对应位置存在调度点,类似的,数据的缓存输出侧也可能存在调度点。参见图4,针对在链路1至链路n中传输的数据,需要使用调度/随机算法对这些数据进行处理,因此能够在DUT内的对应位置确定出调度点。
反压点/删除点则是会引起发压/删除的点,后级模块的反压、或者模块内的逐级反压/删除容易使得模块数据流变得复杂。例如,数据缓存位置可能会由于缓存速率过高导致数据的反压/删除,因此可以在DUT中的对应位置确定反压点/删除点。
释放点即将数据从RAM(Random Access Memory,随机存取存储器)中读出的点,容易因前级复杂的数据量导致缓存的数据释放不好预期。参见图4,在数据的输出侧即可确定出一个释放点。
基于上述说明可以看出,针对上述的特定行为发生点,由于其对应位置的数据通路复杂、在芯片实际工作情况下具有时序不确定性,难以通过采用强时序RM的方式准确构造验证环境。而本发明实施例则基于上述特定行为发生点将DUT拆分了多个待测子设计,并通过弱时序的机制对RM的输出结果进行延时处理,以保证RM的输出结果时序能够有效模拟芯片在实际工作情况下的时序不确定性,实现DUT和RM的输出结果之间基于时序的严格比对,提高芯片验证的精度和可靠性,并且能够适用于芯片的通路结构复杂、DUT特性为输出结果与时序和DUT内部空满状态非紧密相关的情况,或者是难以通过黑盒验证方法得知激励得到怎样的响应的场景。
参见图4的示例,基于其中示出的缓存点、汇聚点、调度点、释放点以及反压点/删除点,能够将DUT拆分为sub1至sub4共四个待测子设计,在进行RM设计时,可以基于每一待测子设计预期实现的功能,设计与sub1至sub4分别对应的子模型RM-1至RM4。在这种情况下对sub1进行验证,具体即比对DUT在图中示意的汇聚点的输出结果与RM-1的输出结果,若输出结果不一致,可以直接将出现bug的位置定位于待测子设计sub1内。
在本发明的一个实施例中,还可以将断言检测的方式作为对上述弱时序的验证方案的补充,进一步提升芯片验证的准确性,在该实施例中,上述待测设计的验证方法还包括:
通过预设断言语句,对DUT中预设信号线上和/或预设缓存位置的目标数据的正确性进行验证。
具体的,针对DUT要实现的某些复杂功能,RM可能无法直接仿照DUT的功能,所以需要使用DUT的信号线,使用DUT的信号线就需要佐证它的正确性,在本发明实施例中,针对拉DUT信号线使用的情况,可以通过断言的方式对信号线上数据的正确性进行验证。
其中,断言具体为用于对功能和时序的预期行为进行描述的语句,例如,断言语句可以用于描述信号之间的时序关系,或者信号的具体属性。当信号的实际时序关系、信号属性与断言语句中的具体描述为一致/不一致,断言检测的检测结果为真/假,从而在应用断言的检测方式时,当信号线中信号的实际情况与描述不符,即可确定对应功能不满足预期。
此外,实际的DUT中还可能存在缓存的使用存在异常的情况。并且,针对某些DUT而言,可能存在数据的预缓存/预释放,这使得RM在时序上难以与DUT对齐,较难直接应用上述弱时序的检测机制对缓存是否存在异常情况进行验证,此时具体可以采用断言的方法判断缓存位置的相关数据是否正确。作为一个示例,可以通过断言语句判断特定缓存地址中的缓存是否溢出、是否存在异常读写,以及缓存的申请和回收是否一致等。例如,若通过断言语句描述缓存的申请和回收应当一致,但DUT在实际运行过程中出现了缓存的重复申请,与断言语句的描述不符,此时可以根据断言语句的执行结果判断出DUT中存在对应的异常情况。
基于相同的发明构思,本发明实施例还提供了一种待测设计的验证装置,参见图5,该装置包括:
第一获取模块501,用于将待测数据输入DUT,获取DUT在多个目标检测点的第一输出结果;每一目标检测点对应于DUT中的一个待测子设计,待测子设计是基于DUT的RTL描述,根据数据流在所述DUT内的特定行为发生点对DUT进行拆分后获得的;
第二获取模块502,用于将待测数据输入与DUT对应的RM,获取RM包含的每个子模型的第二输出结果;每一子模型对应于一个待测子设计;
第一验证模块503,用于针对每一目标检测点的第一输出结果,基于该目标检测点对应的子模型的第二输出结果,对该第一输出结果进行验证。
本发明实施例提供的待测设计的验证装置,针对DUT进行验证时,预先基于数据流在DUT内的特定行为发生点,将DUT拆分为了多个待测子设计,且每个待测子设计均基于自身的逻辑对数据进行相应的处理。在此基础上,实质将针对DUT的验证过程解耦为了针对其中包含的多个待测子设计的验证,也就是说,针对DUT的最终输出结果的验证,被解耦为了针对与每个待测子设计对应的目标检测点的输出结果的验证。从而在进行RM的设计时,可以基于DUT中每个待测子设计预期实现的功能,设计与该待测子设计对应的子模型。
在进行验证的过程中,具体是将待测数据分别输入DUT和RM,针对DUT在每个目标检测点的输出结果,具体基于RM与该目标检测点对应的子模型的输出结果对其进行验证。相较于传统的验证方法,除了能够实现对DUT运算结果的准确性进行验证之外,还能够对运算过程中DUT内特定待测子设计的功能是否满足预期进行验证,避免出现运算结果正确但运算过程实际并不满足预期的情况。并且,在任一目标检测点的输出结果不满足预期时,还能够较为简化地将出现bug的位置定位于特定的待测子设计内,便于进行bug分析和排除,提升调试效率,验证准确性更高、验证效果更好。
在本发明的一个实施例中,该装置还包括:
处理模块,用于针对每一子模型的第二输出结果,基于该子模型对应的第一输出结果的预期输出时序,对该第二输出结果进行打拍处理,以使第二输出结果的输出时序与预期输出时序对齐;每一第一输出结果的预期输出时序,是基于DUT的RTL描述预先确定的;
第一验证模块503,具体用于:
针对每一所述目标检测点的第一输出结果,基于该目标检测点对应的子模型的打拍处理后的第二输出结果,对该第一输出结果的数据正确性以及时序正确性进行验证。
在本发明的一个实施例中,该装置还包括:
第二验证模块,用于通过预设断言语句,对DUT中预设信号线上和/或预设缓存位置的目标数据的正确性进行验证。
在本发明的一个实施例中,特定行为发生点包括缓存点、汇聚点、调度点、反压点/删除点、释放点中的任意一项或多项。
本发明实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现如下步骤:
将待测数据输入DUT,获取DUT在多个目标检测点的第一输出结果;每一目标检测点对应于DUT中的一个待测子设计,待测子设计是基于DUT的RTL描述,根据数据流在DUT内的特定行为发生点对DUT进行拆分后获得的;
将待测数据输入与DUT对应的参考模型RM,获取RM包含的每个子模型的第二输出结果;每一子模型对应于一个待测子设计;
针对每一目标检测点的第一输出结果,基于该目标检测点对应的子模型的第二输出结果,对该第一输出结果进行验证。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一待测设计的验证方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一待测设计的验证方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于待测设计的验证装置、电子设备即可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种待测设计的验证方法,其特征在于,包括:
将待测数据输入待测设计DUT,获取所述DUT在多个目标检测点的第一输出结果;每一所述目标检测点对应于所述DUT中的一个待测子设计,所述待测子设计是基于所述DUT的寄存器转换基级RTL描述,根据数据流在所述DUT内的特定行为发生点对所述DUT进行拆分后获得的;
将所述待测数据输入与所述DUT对应的参考模型RM,获取所述RM包含的每个子模型的第二输出结果;每一所述子模型对应于一个所述待测子设计;
针对每一所述目标检测点的第一输出结果,基于该目标检测点对应的子模型的第二输出结果,对该第一输出结果进行验证。
2.根据权利要求1所述的方法,其特征在于,所述将所述待测数据输入与所述DUT对应的参考模型RM,获取所述RM包含的每个子模型的第二输出结果之后,还包括:
针对每一所述子模型的第二输出结果,基于该子模型对应的第一输出结果的预期输出时序,对该第二输出结果进行打拍处理,以使所述第二输出结果的输出时序与所述预期输出时序对齐;每一所述第一输出结果的预期输出时序,是基于所述DUT的RTL描述预先确定的;
所述针对每一所述目标检测点的第一输出结果,基于该目标检测点对应的子模型的第二输出结果,对该第一输出结果进行验证,包括:
针对每一所述目标检测点的第一输出结果,基于该目标检测点对应的子模型的打拍处理后的第二输出结果,对该第一输出结果的数据正确性以及时序正确性进行验证。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过预设断言语句,对所述DUT中预设信号线上和/或预设缓存位置的目标数据的正确性进行验证。
4.根据权利要求1所述的方法,其特征在于,所述特定行为发生点包括缓存点、汇聚点、调度点、反压点/删除点、释放点中的任意一项或多项。
5.一种待测设计的验证装置,其特征在于,包括:
第一获取模块,用于将待测数据输入DUT,获取所述DUT在多个目标检测点的第一输出结果;每一所述目标检测点对应于所述DUT中的一个待测子设计,所述待测子设计是基于所述DUT的RTL描述,根据数据流在所述DUT内的特定行为发生点对所述DUT进行拆分后获得的;
第二获取模块,用于将所述待测数据输入与所述DUT对应的RM,获取所述RM包含的每个子模型的第二输出结果;每一所述子模型对应于一个所述待测子设计;
第一验证模块,用于针对每一所述目标检测点的第一输出结果,基于该目标检测点对应的子模型的第二输出结果,对该第一输出结果进行验证。
6.根据权利要求5所述的装置,其特征在于,还包括:
处理模块,用于针对每一所述子模型的第二输出结果,基于该子模型对应的第一输出结果的预期输出时序,对该第二输出结果进行打拍处理,以使所述第二输出结果的输出时序与所述预期输出时序对齐;每一所述第一输出结果的预期输出时序,是基于所述DUT的RTL描述预先确定的;
所述第一验证模块,具体用于:
针对每一所述目标检测点的第一输出结果,基于该目标检测点对应的子模型的打拍处理后的第二输出结果,对该第一输出结果的数据正确性以及时序正确性进行验证。
7.根据权利要求5所述的装置,其特征在于,还包括:
第二验证模块,用于通过预设断言语句,对所述DUT中预设信号线上的目标数据,和/或,对所述DUT中数据缓存时序与数据释放时序进行验证。
8.根据权利要求5所述的装置,其特征在于,所述特定行为发生点包括缓存点、汇聚点、调度点、反压点/删除点、释放点中的任意一项或多项。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-4任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4任一所述的方法步骤。
CN202311496505.7A 2023-11-10 2023-11-10 待测设计的验证方法及装置 Pending CN117454811A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311496505.7A CN117454811A (zh) 2023-11-10 2023-11-10 待测设计的验证方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311496505.7A CN117454811A (zh) 2023-11-10 2023-11-10 待测设计的验证方法及装置

Publications (1)

Publication Number Publication Date
CN117454811A true CN117454811A (zh) 2024-01-26

Family

ID=89590775

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311496505.7A Pending CN117454811A (zh) 2023-11-10 2023-11-10 待测设计的验证方法及装置

Country Status (1)

Country Link
CN (1) CN117454811A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117725866A (zh) * 2024-02-07 2024-03-19 北京开源芯片研究院 一种验证方法、装置、电子设备及可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117725866A (zh) * 2024-02-07 2024-03-19 北京开源芯片研究院 一种验证方法、装置、电子设备及可读存储介质
CN117725866B (zh) * 2024-02-07 2024-05-14 北京开源芯片研究院 一种验证方法、装置、电子设备及可读存储介质

Similar Documents

Publication Publication Date Title
US10083262B2 (en) Deadlock detection in hardware design using assertion based verification
CN112417798B (zh) 一种时序测试方法、装置、电子设备及存储介质
US7437701B1 (en) Simulation of a programming language specification of a circuit design
US8560988B2 (en) Apparatus and method thereof for hybrid timing exception verification of an integrated circuit design
US7536662B2 (en) Method for recognizing and verifying FIFO structures in integrated circuit designs
US9600398B2 (en) Method and apparatus for debugging HDL design code and test program code
US20120227021A1 (en) Method for selecting a test case and expanding coverage in a semiconductor design verification environment
CN117454811A (zh) 待测设计的验证方法及装置
Jindal et al. Verification of transaction-level SystemC models using RTL testbenches
US8650519B2 (en) Automated functional coverage for an integrated circuit design
US10515169B1 (en) System, method, and computer program product for computing formal coverage data compatible with dynamic verification
WO2023245719A1 (zh) 时序逻辑元件性能检查方法及设备
KR101042979B1 (ko) 임베디드 시스템의 신뢰성 평가를 위한 시뮬레이션 커널을 이용하는 오류주입시험 장치
CN117094269B (zh) 一种验证方法、装置、电子设备及可读存储介质
US10929584B1 (en) Environmental modification testing for design correctness with formal verification
US9058452B1 (en) Systems and methods for tracing and fixing unknowns in gate-level simulation
CN115470125B (zh) 基于日志文件的调试方法、设备以及存储介质
US9946624B1 (en) Systems and methods to capture data signals from a dynamic circuit
US8359503B2 (en) Method and system for generating an integrated circuit chip facility waveform from a series of chip snapshots
US7630876B1 (en) Method and system for filtering unknown values in ASIC design simulation
KR20180089121A (ko) 온 칩 dram을 사용한 멀티코어 환경에서의 포스트 실리콘 디버그 장치 및 방법
US10546083B1 (en) System, method, and computer program product for improving coverage accuracy in formal verification
US10606971B2 (en) Testing netlists based on singular independent signals
CN117113908B (zh) 一种验证方法、装置、电子设备及可读存储介质
CN117113907B (zh) 一种验证方法、装置、电子设备及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination