CN103678114B - 产生断言的设备和方法以及验证处理器的设备和方法 - Google Patents

产生断言的设备和方法以及验证处理器的设备和方法 Download PDF

Info

Publication number
CN103678114B
CN103678114B CN201310407224.XA CN201310407224A CN103678114B CN 103678114 B CN103678114 B CN 103678114B CN 201310407224 A CN201310407224 A CN 201310407224A CN 103678114 B CN103678114 B CN 103678114B
Authority
CN
China
Prior art keywords
user program
processor
instruction
code
asserted
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.)
Expired - Fee Related
Application number
CN201310407224.XA
Other languages
English (en)
Other versions
CN103678114A (zh
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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
Priority claimed from KR1020130096109A external-priority patent/KR101968214B1/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN103678114A publication Critical patent/CN103678114A/zh
Application granted granted Critical
Publication of CN103678114B publication Critical patent/CN103678114B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • 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
    • 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
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • 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
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • 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
    • G06F30/3323Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

提供一种产生断言的设备和方法以及验证处理器的设备和方法。示例性实施例公开了一种用于基于用户程序代码产生断言的方法。所述方法包括接收包括至少一个断言指令的用户程序、用户程序的编译结果以及处理器的架构信息,并基于用户程序的编译结果和处理器的架构信息产生规定处理器需要根据由所述至少一个断言指令中的每个断言指令指示的用户程序的代码执行的操作的断言。

Description

产生断言的设备和方法以及验证处理器的设备和方法
本申请要求于2012年9月7日提交的第61/698,050号美国临时专利申请以及于2013年8月13日提交的第10-2013-0096109号韩国专利申请的优先权,所述申请的全部公开通过引用合并于此。
技术领域
示例性实施例涉及一种用于产生断言并使用所述断言验证处理器的技术。
背景技术
现有技术中的处理器的功能验证意味着用于检查处理器的架构规范以及在寄存器传输级(RTL)设计的处理器是否在逻辑上执行相同操作的验证。现有技术中的验证测试案例(诸如回归测试和随机测试)应用于验证设计的处理器。另外,测试覆盖率被测量以检查是否已经验证了各种设计功能。
现有技术中的测试覆盖率大致被划分为代码覆盖率和功能覆盖率。代码覆盖率是在测试案例的仿真期间设计的代码被如何彻底地测试的指标,并且功能覆盖率是工程师想要测量的功能是否被执行的指标。
功能覆盖率是用于通过设计用于在工程师想要测量的处理器操作之中必须被执行或不应该被执行的操作的断言来测量断言是否被执行的方法。
在基于断言的验证(ABV)中,将断言插入到设计的处理器中,并且对被插入断言的处理器进行仿真。在处理器的仿真期间,通过监视和检查插入的断言容易地发现错误检测点,使得验证时间被减少。
然而,现有技术中的断言必须由用户基于处理器的架构规范被设计并且每当所述架构规范被改变时都需要重新设计断言。另外,在现有技术中,有必要验证断言是否被适当地设计。因此,需要大量的时间和精力来设计断言。
发明内容
在示例性实施例的一个方面,提供一种用于基于用户程序代码产生断言的方法,并且所述方法包括:接收包括至少一个断言指令的用户程序、用户程序的编译结果以及处理器的架构信息;基于用户程序的编译结果以及处理器的架构信息产生规定处理器需要根据由所述至少一个断言指令中的每个断言指令指示的用户程序的代码执行的操作的断言。
所述至少一个断言指令可指示在用户程序中包含的多个代码中需要处理器的操作验证的代码。
产生断言的步骤可包括:基于所述至少一个断言指令的解释来确定在用户程序中包含的多个代码中需要处理器的操作验证的代码;基于在编译结果中的调度信息以及处理器的架构信息,确定由所述至少一个断言指令中的每个断言指令指示的用户程序的被确定的代码被执行的时间点以及在所述时间点执行所述代码的功能块。
产生断言的步骤可包括:产生规定所述功能块需要在所述时间点执行的操作的断言。
产生断言的步骤可包括:使用硬件描述语言(HDL)产生所述断言。
产生断言的步骤可包括:产生与所述至少一个断言指令中的每个断言指令相应的断言。
在示例性实施例的另一方面,提供一种断言产生设备,并且所述断言产生设备包括:接收器,被配置为接收包括至少一个断言指令的用户程序、用户程序的编译结果以及处理器的架构信息;断言产生器,被配置为基于用户程序的编译结果以及处理器的架构信息产生规定处理器需要根据由所述至少一个断言指令中的每个断言指令指示的用户程序的代码执行的操作的断言。
所述至少一个断言指令可指示在用户程序中包含的多个代码中需要处理器的操作验证的代码。
断言产生器可确定在用户程序中包含的多个代码中需要处理器的操作验证的代码;并基于编译结果中包含的调度信息以及处理器的架构信息,确定由所述至少一个断言指令中的每个断言指令指示的用户程序的被确定的代码被执行的时间点以及在所述时间点执行所述代码的功能块。
断言产生器可产生规定所述功能块需要在所述时间点执行的操作的断言。
断言产生器可使用硬件描述语言(HDL)产生所述断言。
断言产生器可产生与所述至少一个断言指令中的每个断言指令相应的断言。
在示例性实施例的另一方面,提供一种用于验证处理器的方法,并且所述方法包括:接收包括至少一个断言指令的用户程序、用户程序的编译结果以及处理器的架构信息;基于所述编译结果以及处理器的架构信息产生规定处理器需要根据由所述至少一个断言指令中的每个断言指令指示的用户程序的代码执行的操作的断言;在寄存器传输级(RTL)的处理器模型中仿真所述编译结果,以便验证在处理器模型中在所述断言中规定的操作是否被执行。
所述至少一个断言指令中的每个断言指令可指示在用户程序中包含的多个代码中需要处理器的操作验证的代码。
产生断言的步骤可包括:基于所述至少一个断言指令的解释来确定在用户程序中包含的多个代码中需要处理器的操作验证的代码;基于在编译结果中包含的调度信息以及处理器的架构信息,确定由所述至少一个断言指令中的每个断言指令指示的用户程序的被确定的代码被执行的时间点以及在所述时间点执行所述代码的功能块。
产生断言的步骤可包括:产生规定所述功能块在所述时间点需要执行的操作的断言。
产生断言的步骤可包括:使用硬件描述语言(HDL)产生所述断言。
产生断言的步骤可包括:产生与所述至少一个断言指令中的每个断言指令相应的断言。
仿真编译结果的步骤可包括:将断言插入到处理器模型中,并在被插入断言的处理器模型中仿真所述编译结果。
在示例性实施例的另一方面,提供一种处理器验证设备,并且所述处理器验证设备包括:接收器,被配置为接收包括至少一个断言指令的用户程序、用户程序的编译结果以及处理器的架构信息;断言产生器,被配置为基于用户程序的编译结果以及处理器的架构信息产生规定处理器需要根据由所述至少一个断言指令中的每个断言指令指示的用户程序的代码执行的操作的断言;验证器,被配置为在寄存器传输级(RTL)的处理器模型中仿真所述编译结果,以便验证在所述处理器模型中在所述断言中规定的操作是否被执行。
所述至少一个断言指令中的每个断言指令可指示在用户程序中包含的多个代码中需要处理器的操作验证的代码。
断言产生器可解释所述至少一个断言指令,以便确定在用户程序中包含的多个代码中需要处理器的操作验证的代码,并基于在编译结果中包含的调度信息以及处理器的架构信息,确定由所述至少一个断言指令中的每个断言指令指示的用户程序的被确定的代码被执行的时间点以及在所述时间点执行所述代码的功能块。
断言产生器可产生规定所述功能块需要在所述时间点执行的操作的断言。
断言产生器使用硬件描述语言(HDL)产生所述断言。
断言产生器可产生与所述至少一个断言指令中的每个断言指令相应的断言。
验证器可将断言插入到处理器模型中,然后在被插入所述断言的处理器模型中仿真所述编译结果。
在示例性实施例的另一方面,一种用于基于用户程序代码产生断言的方法可包括:接收用户程序、用户程序的编译结果以及处理器的架构信息;解释断言指令,以便从用户程序中的多个代码中确定代码;确定用户程序的被确定的代码被执行的时间点;确定在所述时间点执行用户程序的被确定的代码的功能块;在用户程序的被确定的代码被执行的时间点产生断言。
从以下详细描述、附图和权利要求中,其他特征和方面可以是清楚的。
附图说明
通过参照附图详细描述示例性实施例,示例性实施例的以上和其他方面和优点将变得更加清楚,其中:
图1是示出根据示例性实施例的断言产生设备的配置的示图。
图2是示出根据示例性实施例的处理器验证设备的配置的示图。
图3是用户程序的示例。
图4是图3中示出的用户程序的编译结果的示例。
图5是产生的断言的示例。
图6是示出根据示例性实施例的用于产生断言的方法的流程图。
图7是示出根据示例性实施例的用于产生断言的方法的详细流程图。
图8是示出根据示例性实施例的用于验证处理器的方法的流程图。
具体实施方式
在整个附图和详细说明中,除非另有描述,否则相同的附图参考标号将被理解为指示相同的元件、特征和结构。为了清楚、说明和方便,可夸大这些元件的相对大小和描绘。
以下描述被提供用于帮助读者获得在此描述的方法、设备和/或系统的全面理解。因此,在此描述的方法、设备和/或系统的各种改变、修改和等同物将被建议给本领域的普通技术人员。此外,为了更加清楚和方便,可省略公知功能和结构的描述。
图1是示出根据示例性实施例的断言产生设备的配置的示图。
参照图1,断言产生设备100使用硬件描述语言(HDL)产生断言,以便验证在寄存器传输级(RTL)设计的处理器模型的操作。
断言是关于处理器在运行时间期间必须执行的操作的语句。例如,断言可规定处理器必须执行的操作的条件,并可规定如果处理器在用户程序的运行时间期间无法满足所述条件则错误将被输出。
断言产生设备100可包括接收器110和断言产生器130。
接收器110接收用户程序、用户程序的编译结果以及处理器的架构信息。
用户程序由程序员任意实现以验证处理器的操作,并可包括一个或多个断言指令。
断言指令指示用户程序的全部代码中需要处理器的操作验证的代码。另外,用户可产生断言,诸如将断言指令插入到在用户程序的全部代码中需要处理器的操作验证的代码中。
参照图3中示出的用户程序的示例,断言指令300规定,如果循环计数器(i)是3,则产生断言以验证执行操作“A[i]=result”的处理器。可将一个或多个断言指令插入用户程序。
处理器的架构信息可包括在处理器中包含的功能块的数量和类型、功能块之间的互连、功能块的控制流程以及关于处理器的配置的信息。
用户程序的编译结果是指由编译器从用户程序转换以便在处理器中被立即执行的二进制代码。
断言产生器130基于输入用户程序的源代码、用户程序的编译结果以及处理器的架构信息来产生断言。
断言产生器130可解释在用户程序中包括的断言指令,以便从用户程序的全部代码中找到需要处理器的操作验证的代码。例如,图3中示出的断言指令300规定,如果循环计数器(i)为3,则产生断言以验证在存储变量A[i]的处理器的功能块中所存储的值。因此,给定断言指令300,断言产生器130在循环计数器(i)为3时验证执行“A[i]=result”的处理器的操作。
对断言指令300进行解释不足以找到处理器的哪个功能块在哪个时间点执行由断言指令300指示的代码。为此,为了找到在处理器中如何执行由断言指令指示的操作,需要用户程序的编译结果以及处理器的架构信息。
例如,假定断言指令指示验证由处理器执行的预定倍增计算,所述计算是在用户程序的代码中规定的操作。在此情况下,基于在用户程序的编译结果中包括的调度信息和处理器的架构信息,必须找到执行所述预定倍增计算的处理器的功能块以及所述功能块执行预定倍增计算的执行周期。
因此,基于编译结果和处理器的架构信息,断言产生器130确定由断言指令指示的用户程序的代码被执行的时间点以及在所述时间点执行所述代码的处理器的功能块。另外,用户程序的编译结果包括用户程序被调度以适合处理器的架构的调度信息,使得用户程序在处理器中被立即执行。因此,基于调度信息和处理器架构,能够找到处理器的功能块以及由断言指令指示的用户程序的预定代码被执行的周期。
例如,如图4所示,可调度图3中示出的用户程序。在图4中,FU#00至FU#09中的每个是指在处理器中包括的功能单元,并且将操作分配给每个功能单元以在每个周期被执行。如果在调度信息中的循环计数器为3,则操作“A[i]=result”在周期22被分配给FU#00。因此,如图5所示,当用指示循环计数器的变量i映射的FU#05为0时,断言产生器130可考虑循环开始。因此,可产生断言以在周期22之后验证在FU#00中存储的值。
如果用户程序包括一个或多个断言指令,则断言产生器130可产生与每个断言指令相应的断言。
另外,断言产生器130可使用硬件描述语言(HDL)(例如,System Verilog、VerilogHDL、VHDL和HDVL)。
图2是示出根据示例性实施例的处理器验证设备的配置的示图。
参照图2,处理器验证设备230被设计用来使用硬件描述语言(HDL)(诸如,SystemVerilog、Verilog HDL、Vhsic硬件描述语言(VHDL)和硬件描述和验证语言(HDVL))验证在RTL设计的处理器模型的操作。
编译器210转换用户程序的代码以适合设计的处理器的架构来验证处理器,在处理器的功能块中调用转换的代码,并产生可在处理器中执行的二进制代码。用户程序可包括一个或多个断言指令。
处理器验证设备230可包括接收器231、断言产生器233和验证器235。
接收器231接收用户程序、用户程序的编译结果以及处理器的架构信息。用户程序的编译结果可由编译器210来提供。另外,用户程序和处理器的架构信息可从用户接收。
与图1中示出的断言产生设备100相应的断言产生器233可基于通过接收器231接收的用户程序、用户程序的编译结果和处理器的架构信息来产生断言。
可使用HDL(诸如,System Verilog、Verilog HDL、VHDL和HDVL)来产生断言。
另外,断言产生器233可解释在用户程序中包括的断言指令,以便从用户程序的全部代码中找到需要处理器的操作验证的代码。另外,基于在编译结果中包含的调度信息以及处理器的架构信息,断言产生器233确定根据由断言指令指示的代码执行处理器的操作的时间点以及在所述时间点执行所述操作的功能块。断言产生器233产生规定功能块在所述时间点执行的所述操作的断言。
验证器235在RTL设计的处理器模型中仿真用户程序的编译结果,以便验证在断言中规定的操作是否被执行。
另外,验证器235基于处理器设计层次信息将由断言产生器233产生的断言插入到处理器模型中。然后,验证器235在被插入断言的处理器模型中仿真用户程序的编译结果。验证器235通过检查在仿真期间在断言中规定的操作是否被执行,来验证处理器的操作。
图6是示出根据示例性实施例的用于产生断言的方法的流程图。
参照图6,在步骤610,断言产生设备100接收用户程序、用户程序的编译结果以及处理器的架构信息。
用户程序可包括一个或多个断言指令。
在图6的步骤630,基于用户程序的编译结果以及处理器的架构信息,断言产生设备100产生规定处理器需要根据由断言指令指示的用户程序的代码执行的操作的断言。可使用HDL(诸如,System Verilog、Verilog HDL、VHDL和HDVL)产生断言。
另外,如果用户程序包括一个或多个断言指令,则断言产生设备100可产生与每个断言指令相应的断言。
图7是示出根据示例性实施例的用于产生断言的方法的详细流程图。
参照图7,在步骤710,断言产生设备100可接收包括一个或多个断言指令的用户程序、用户程序的编译结果以及处理器的架构信息。
参照图7,在步骤730,断言产生设备100可解释断言指令,以便确定在用户程序中包括的全部代码中需要处理器的操作验证的代码。
在图7的步骤750,基于在编译结果中包括的调度信息以及处理器的架构信息,断言产生设备100确定由断言指令指示的用户程序的代码被执行的时间点以及在所述时间点执行所述代码的功能块。
在图7的步骤770,断言产生设备100产生规定处理器的功能块需要在用户程序的代码被执行的时间点执行的操作的断言。
图8是示出根据示例性实施例的用于验证处理器的方法的流程图。
参照图8,在步骤810,处理器验证设备230接收包括一个或多个断言指令的用户程序、用户程序的编译结果以及处理器的架构信息。
参照图8,在步骤830,基于用户程序的编译结果以及处理器的架构信息,处理器验证设备230产生规定处理器需要根据由断言指令指示的用户程序的代码执行的操作的断言。处理器验证设备230可使用与图7中描述的相同的方法来产生断言。
另外,处理器验证设备230可使用HDL产生断言。如果用户程序包括多个断言指令,则处理器验证设备230产生与每个断言指令相应的断言。
参照图8,在步骤850,处理器验证设备230在RTL设计的处理器模型中仿真用户程序的编译结果,以便验证在断言中规定的操作是否被执行。
另外,处理器验证设备230可基于处理器设计层次信息将断言插入处理器模型。然后,处理器验证设备230通过在被插入断言的处理器模型中仿真用户程序的编译结果,来检查在所述断言中规定的操作是否被执行。处理器验证设备230以这种方式验证处理器的操作。
以上描述的方法和/或操作可被记录,存储或固定在包括程序指令的一个或多个计算机可读存储介质中,其中,计算机将所述程序指令以促使处理器运行或执行所述程序指令。所述介质还可单独包括数据文件、数据结构等,或可与程序指令相结合地包括数据文件、数据结构等。计算机可读存储介质的示例包括磁介质(诸如硬盘、软盘和磁带)、光学介质(诸如CD ROM盘和DVD)、磁光介质(诸如光盘)以及被专门配置为存储和执行程序指令的硬件装置(诸如只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。程序指令的示例包括机器代码(诸如由编译器产生)以及包含可由计算机使用解释器执行的更高级代码的文件两者。为了执行上述操作和方法,所描述的硬件装置可被配置为充当一个或多个软件模块,反之亦然。另外,计算机可读存储介质可被分布在通过网络连接的计算机系统上中,并且计算机可读代码或程序指令可按分散方式被存储和执行。
以上已经描述了多个示例。然而,应理解可实现多种修改。例如,如果所描述的技术按不同顺序被执行,和/或如果所描述的系统、架构、装置或电路中的组件按不同方式被组合和/或由其他组件或其等同物替代或补偿,则可实现适当的结果。因此,其他实现方式在权力要求的范围内。

Claims (30)

1.一种用于基于用户程序代码产生断言的方法,所述方法包括:
接收包括至少一个断言指令的用户程序、用户程序的编译结果以及处理器的架构信息;
基于用户程序的编译结果以及处理器的架构信息,产生规定处理器需要根据由所述至少一个断言指令中的每个断言指令指示的用户程序的代码执行的操作的断言,
其中,用户程序的编译结果是指由编译器从用户程序转换以便在处理器中被立即执行的二进制代码,并包括用户程序被调度以适合处理器的架构的调度信息。
2.如权利要求1所述的方法,其中,所述至少一个断言指令指示在用户程序中包含的多个代码中需要处理器的操作验证的代码。
3.如权利要求1所述的方法,其中,产生断言的步骤包括:
基于所述至少一个断言指令的解释来确定在用户程序中包含的多个代码中需要处理器的操作验证的代码;
基于在编译结果中包含的调度信息以及处理器的架构信息,确定由所述至少一个断言指令中的每个断言指令指示的用户程序的被确定的代码被执行的时间点以及在所述时间点执行所述代码的功能块。
4.如权利要求3所述的方法,其中,产生断言的步骤包括:产生规定所述功能块需要在所述时间点执行的操作的断言。
5.如权利要求1所述的方法,其中,产生断言的步骤包括:使用硬件描述语言HDL产生所述断言。
6.如权利要求1所述的方法,其中,产生断言的步骤包括:产生与所述至少一个断言指令中的每个断言指令相应的断言。
7.一种断言产生设备,包括:
接收器,被配置为接收包括至少一个断言指令的用户程序、用户程序的编译结果以及处理器的架构信息;
断言产生器,被配置为基于用户程序的编译结果以及处理器的架构信息产生规定处理器需要根据由所述至少一个断言指令中的每个断言指令指示的用户程序的代码执行的操作的断言,
其中,用户程序的编译结果是指由编译器从用户程序转换以便在处理器中被立即执行的二进制代码,并包括用户程序被调度以适合处理器的架构的调度信息。
8.如权利要求7所述的断言产生设备,其中,所述至少一个断言指令指示在用户程序中包含的多个代码中需要处理器的操作验证的代码。
9.如权利要求7所述的断言产生设备,其中,断言产生器确定在用户程序中包含的多个代码中需要处理器的操作验证的代码;并基于编译结果中包含的调度信息以及处理器的架构信息,确定由所述至少一个断言指令中的每个断言指令指示的用户程序的被确定的代码被执行的时间点以及在所述时间点执行所述代码的功能块。
10.如权利要求9所述的断言产生设备,其中,断言产生器产生规定所述功能块需要在所述时间点执行的操作的断言。
11.如权利要求7所述的断言产生设备,其中,断言产生器使用硬件描述语言HDL产生所述断言。
12.如权利要求7所述的断言产生设备,其中,断言产生器产生与所述至少一个断言指令中的每个断言指令相应的断言。
13.一种用于验证处理器的方法,所述方法包括:
接收包括至少一个断言指令的用户程序、用户程序的编译结果以及处理器的架构信息;
基于所述编译结果以及处理器的架构信息,产生规定处理器需要根据由所述至少一个断言指令中的每个断言指令指示的用户程序的代码执行的操作的断言;
在寄存器传输级RTL的处理器模型中仿真所述编译结果,以便验证在所述处理器模型中在所述断言中规定的操作是否被执行,
其中,用户程序的编译结果是指由编译器从用户程序转换以便在处理器中被立即执行的二进制代码,并包括用户程序被调度以适合处理器的架构的调度信息。
14.如权利要求13所述的方法,其中,所述至少一个断言指令中的每个断言指令指示在用户程序中包含的多个代码中需要处理器的操作验证的代码。
15.如权利要求13所述的方法,其中,产生断言的步骤包括:
基于所述至少一个断言指令的解释来确定在用户程序中包含的多个代码中需要处理器的操作验证的代码;
基于在编译结果中包含的调度信息以及处理器的架构信息,确定由所述至少一个断言指令中的每个断言指令指示的用户程序的被确定的代码被执行的时间点以及在所述时间点执行所述代码的功能块。
16.如权利要求15所述的方法,其中,产生断言的步骤包括:产生规定所述功能块需要在所述时间点执行的操作的断言。
17.如权利要求13所述的方法,其中,产生断言的步骤包括:使用硬件描述语言HDL产生所述断言。
18.如权利要求13所述的方法,其中,产生断言的步骤包括:产生与所述至少一个断言指令中的每个断言指令相应的断言。
19.如权利要求13所述的方法,其中,仿真编译结果的步骤包括:将断言插入到处理器模型中,并且在被插入断言的处理器模型中仿真所述编译结果。
20.一种处理器验证设备,包括:
接收器,被配置为接收包括至少一个断言指令的用户程序、用户程序的编译结果以及处理器的架构信息;
断言产生器,被配置为基于用户程序的编译结果以及处理器的架构信息,产生规定处理器需要根据由所述至少一个断言指令中的每个断言指令指示的用户程序的代码执行的操作的断言;
验证器,被配置为在寄存器传输级RTL的处理器模型中仿真所述编译结果,以便验证在所述处理器模型中在所述断言中规定的操作是否被执行,
其中,用户程序的编译结果是指由编译器从用户程序转换以便在处理器中被立即执行的二进制代码,并包括用户程序被调度以适合处理器的架构的调度信息。
21.如权利要求20所述的处理器验证设备,其中,所述至少一个断言指令中的每个断言指令指示在用户程序中包含的多个代码中需要处理器的操作验证的代码。
22.如权利要求20所述的处理器验证设备,其中,断言产生器解释所述至少一个断言指令,以便确定在用户程序中包含的多个代码中需要处理器的操作验证的代码,并基于在编译结果中包含的调度信息以及处理器的架构信息,确定由所述至少一个断言指令中的每个断言指令指示的用户程序的被确定的代码被执行的时间点以及在所述时间点执行所述代码的功能块。
23.如权利要求22所述的处理器验证设备,其中,断言产生器产生规定所述功能块需要在所述时间点执行的操作的断言。
24.如权利要求20所述的处理器验证设备,其中,断言产生器使用硬件描述语言HDL产生所述断言。
25.如权利要求20所述的处理器验证设备,其中,断言产生器产生与所述至少一个断言指令中的每个断言指令相应的断言。
26.如权利要求20所述的处理器验证设备,其中,验证器将断言插入到处理器模型中,然后在被插入所述断言的处理器模型中仿真所述编译结果。
27.一种用于基于用户程序代码产生断言的方法,所述方法包括:
接收用户程序、用户程序的编译结果以及处理器的架构信息;
解释断言指令,以便从用户程序中的多个代码中确定代码;
确定用户程序的被确定的代码被执行的时间点;
确定在所述时间点执行用户程序的被确定的代码的功能块;
在用户程序的被确定的代码被执行的时间点产生断言,
其中,用户程序的编译结果是指由编译器从用户程序转换以便在处理器中被立即执行的二进制代码,并包括用户程序被调度以适合处理器的架构的调度信息。
28.如权利要求27所述的方法,其中,被确定的代码需要处理器的操作验证。
29.如权利要求27所述的方法,其中,基于在用户程序的编译结果中包括的调度信息以及处理器的架构信息来确定所述时间点和所述功能块。
30.如权利要求27所述的方法,其中,产生的断言规定处理器的功能块需要在用户程序的被确定的代码被执行的时间点执行的操作。
CN201310407224.XA 2012-09-07 2013-09-09 产生断言的设备和方法以及验证处理器的设备和方法 Expired - Fee Related CN103678114B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261698050P 2012-09-07 2012-09-07
US61/698,050 2012-09-07
KR10-2013-0096109 2013-08-13
KR1020130096109A KR101968214B1 (ko) 2012-09-07 2013-08-13 사용자 프로그램 코드에 기반한 어써션 생성 장치 및 방법, 어써션을 이용한 프로세서 검증 장치 및 방법

Publications (2)

Publication Number Publication Date
CN103678114A CN103678114A (zh) 2014-03-26
CN103678114B true CN103678114B (zh) 2018-11-02

Family

ID=50234751

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310407224.XA Expired - Fee Related CN103678114B (zh) 2012-09-07 2013-09-09 产生断言的设备和方法以及验证处理器的设备和方法

Country Status (4)

Country Link
US (1) US9448777B2 (zh)
EP (1) EP2720149A3 (zh)
JP (1) JP6352607B2 (zh)
CN (1) CN103678114B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105589993B (zh) * 2015-12-18 2019-01-15 中国科学院微电子研究所 微处理器功能验证设备及微处理器功能验证方法
CN105760612B (zh) * 2016-02-26 2018-12-04 中国科学院计算技术研究所 用于硅后芯片验证的断言检测装置、方法、系统、芯片
CN107402883B (zh) * 2017-07-27 2018-07-20 腾讯科技(深圳)有限公司 一种数据测试处理方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100456308C (zh) * 2004-09-30 2009-01-28 株式会社理光 断言产生系统、电路验证系统以及断言产生方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000268074A (ja) * 1999-03-18 2000-09-29 Toshiba Corp 検証プログラム自動生成装置および方法並びにプロパティ自動生成装置および方法
US7051299B2 (en) * 2003-07-31 2006-05-23 International Business Machines Corporation Method for generating reusable behavioral code
US20050209840A1 (en) * 2004-01-09 2005-09-22 Mikhail Baklashov Method and apparatus for functional language temporal extensions, dynamic modeling, and verification in a system-level simulation environment
WO2005093575A1 (en) * 2004-03-09 2005-10-06 Seiyang Yang Dynamic-verification-based verification apparatus achieving high verification performance and verification efficency and the verification methodology using the same
KR100921314B1 (ko) * 2004-07-12 2009-10-13 양세양 검증결과 재활용 기법을 채용한 고성능 설계검증 장치 및이를 활용한 신속한 설계검증 방법
JP2006172113A (ja) * 2004-12-15 2006-06-29 Toshiba Corp 高位合成装置、自動高位合成方法及び高位合成プログラム
US7313772B2 (en) 2005-05-24 2007-12-25 International Business Machines Corporation Systems, methods, and media for block-based assertion generation, qualification and analysis
US20060277534A1 (en) * 2005-06-07 2006-12-07 Atsushi Kasuya Evaluation of a temporal description within a general purpose programming language
TW200717276A (en) 2005-09-12 2007-05-01 Koninkl Philips Electronics Nv Development of assertions for integrated circuit design simulation
US7711534B2 (en) * 2005-12-09 2010-05-04 International Business Machines Corporation Method and system of design verification
WO2007139840A2 (en) * 2006-05-24 2007-12-06 Syver, Llc Method and tool for automatic verification of software protocols
US20070294647A1 (en) * 2006-06-01 2007-12-20 Via Technologies, Inc. Transferring software assertions to hardware design language code
JP2008047053A (ja) * 2006-08-21 2008-02-28 Toshiba Corp アサーション記述変換装置および変換方法
JP5109143B2 (ja) * 2007-06-28 2012-12-26 株式会社東芝 検証装置および検証方法
US7992114B1 (en) * 2008-08-19 2011-08-02 Magma Design Automation, Inc. Timing analysis using statistical on-chip variation
FI20095884A0 (fi) * 2009-08-27 2009-08-27 Martti Venell Menetelmä integroidun piirin suunnittelun verifioimiseksi verifiointiympäristössä
JP2011100194A (ja) * 2009-11-04 2011-05-19 Seiko Epson Corp ランダム検証装置、ランダム検証方法及びランダム検証プログラム
KR101635397B1 (ko) * 2010-03-03 2016-07-04 삼성전자주식회사 재구성 가능한 프로세서 코어를 사용하는 멀티코어 시스템의 시뮬레이터 및 시뮬레이션 방법
US20120005681A1 (en) 2010-06-30 2012-01-05 Subodh Moolamalla Reddy Assertions-based optimizations of hardware description language compilations
US9430596B2 (en) * 2011-06-14 2016-08-30 Montana Systems Inc. System, method and apparatus for a scalable parallel processor
US8584062B2 (en) * 2011-10-27 2013-11-12 Apple Inc. Tool suite for RTL-level reconfiguration and repartitioning
US9268889B2 (en) * 2013-12-05 2016-02-23 International Business Machines Corporation Verification of asynchronous clock domain crossings

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100456308C (zh) * 2004-09-30 2009-01-28 株式会社理光 断言产生系统、电路验证系统以及断言产生方法

Also Published As

Publication number Publication date
US20140075421A1 (en) 2014-03-13
JP2014053011A (ja) 2014-03-20
CN103678114A (zh) 2014-03-26
EP2720149A2 (en) 2014-04-16
US9448777B2 (en) 2016-09-20
EP2720149A3 (en) 2018-01-24
JP6352607B2 (ja) 2018-07-04

Similar Documents

Publication Publication Date Title
US8640084B2 (en) Generating validation test suites
US8683282B2 (en) Automatic identification of information useful for generation-based functional verification
CN109144584A (zh) 一种可编程逻辑器件及其启动方法、系统和存储介质
US8990622B2 (en) Post-silicon validation using a partial reference model
CN106909498A (zh) 一种Java程序注入故障的方法和系统
US9589087B2 (en) Verification environments utilizing hardware description languages
CN111767217B (zh) Js单元测试案例生成方法及装置
CN103678114B (zh) 产生断言的设备和方法以及验证处理器的设备和方法
Sousa et al. Bounded model checking of C++ programs based on the Qt framework
US10169217B2 (en) System and method for test generation from software specification models that contain nonlinear arithmetic constraints over real number ranges
US20100042965A1 (en) Method and System for Scalable Reduction in Registers With Sat-Based Resubstitution
US10606732B2 (en) Hybrid genetic concolic co-verification of hardware and software
US8909579B2 (en) Identifying invariant candidates based on proofs
Amirat et al. Automatic generation of PROMELA code from sequence diagram with imbricate combined fragments
CN109815682A (zh) 一种对权限进行追踪管理的方法、装置和计算机记录介质
US8938646B2 (en) Mutations on input for test generation
CN107665169B (zh) 处理器程序的测试方法和装置
US9646252B2 (en) Template clauses based SAT techniques
US9372772B1 (en) Co-verification—of hardware and software, a unified approach in verification
US20090070717A1 (en) Method and System for Generating Coverage Data for a Switch Frequency of HDL or VHDL Signals
CN113656070A (zh) 处理器的随机指令验证方法、装置、电子设备及存储介质
CN112540766A (zh) 现场可编程门阵列编码方法、装置和系统
US9891894B1 (en) Code continuity preservation during automatic code generation
KR101731629B1 (ko) Circus로부터 go 코드를 자동으로 생성하는 방법 및 장치
US20180121341A1 (en) Method and apparatus for coverage analysis of srt look-up table

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20181102

Termination date: 20190909