CN118070723A - 使用状态序列检测器来提供集成电路功能覆盖指示符 - Google Patents
使用状态序列检测器来提供集成电路功能覆盖指示符 Download PDFInfo
- Publication number
- CN118070723A CN118070723A CN202311106503.2A CN202311106503A CN118070723A CN 118070723 A CN118070723 A CN 118070723A CN 202311106503 A CN202311106503 A CN 202311106503A CN 118070723 A CN118070723 A CN 118070723A
- Authority
- CN
- China
- Prior art keywords
- state
- fcg
- states
- hardware component
- sequence detector
- 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
Links
- 238000012360 testing method Methods 0.000 claims abstract description 87
- 238000000034 method Methods 0.000 claims abstract description 36
- 230000004044 response Effects 0.000 claims abstract description 33
- 230000006870 function Effects 0.000 claims description 158
- 230000007704 transition Effects 0.000 claims description 62
- 239000004065 semiconductor Substances 0.000 claims description 24
- 230000015654 memory Effects 0.000 claims description 22
- 230000001419 dependent effect Effects 0.000 claims description 18
- 238000004891 communication Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000013475 authorization Methods 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 23
- 238000013461 design Methods 0.000 description 64
- 238000004088 simulation Methods 0.000 description 22
- 238000004458 analytical method Methods 0.000 description 14
- 230000006399 behavior Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000000630 rising effect Effects 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000010230 functional analysis Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000004549 pulsed laser deposition Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Tests Of Electronic Circuits (AREA)
Abstract
本公开涉及使用状态序列检测器来提供集成电路功能覆盖指示符。过程包括由可编程逻辑器件仿真硬件组件以提供仿真硬件组件。仿真硬件组件能够执行预定功能。该过程包括测试仿真硬件组件。该过程包括由可编程逻辑器件确定仿真硬件组件在测试期间是否执行了预定功能。该确定包括响应于测试而由可编程逻辑器件的状态序列检测器检测仿真硬件组件是否顺序通过与预定功能相关联的多个状态。该过程包括响应于检测到仿真硬件组件是否顺序通过多个状态而由可编程逻辑器件生成表示测试对预定功能的覆盖的指示符。
Description
背景技术
电子设计自动化(EDA)工具可以用于设计集成电路(IC)并在一个或多个抽象层上模拟IC设计的行为。EDA工具可以进一步用于通过基于模拟的测试来验证IC设计。IC设计的基于模拟的测试可能不会调用或执行IC设计的所有特征和能力。
附图说明
图1是根据示例实施方式的包括可编程逻辑器件(PLD)的基于仿真的测试环境的框图,该可编程逻辑器件(PLD)提供仿真被测设备(DUT)并且包括功能覆盖组(FCG)状态序列检测器以提供功能覆盖信息。
图2描述了根据示例实施方式的FCG状态序列检测器的状态图。
图3是描述根据示例实施方式的用于初始化FCG状态序列检测器的过程的流程图。
图4是根据示例实施方式的FCG配置表的图示。
图5是根据示例实施方式的用于创建具有FCG引擎的可编程逻辑器件的过程的流程图。
图6是示出根据示例实施方式的具有带有FCG引擎的计算机平台的系统的框图,该FCG引擎跟踪功能使用并向远程计算机系统发送对应的使用度量以用于分析。
图7是描述根据示例实施方式的用于使用可编程逻辑器件来仿真硬件组件、测试仿真硬件组件并提供表示预定功能的覆盖的指示符的过程的流程图。
图8是根据示例实施方式的具有硬件设备和状态序列检测器的装置的框图,该硬件设备能够执行预定功能,该状态序列检测器用于提供硬件设备是否执行预定功能的指示符。
图9是根据示例实施方式的可编程逻辑器件的框图,该可编程逻辑器件包括用于提供仿真设备的元件,并提供用于提供与预定功能相关联的功能覆盖的指示符的状态序列检测器。
具体实施方式
以下详细描述参考附图。只要有可能,在附图和以下描述中使用相同的附图标记来指代相同或类似的部分。然而,应当清楚地理解,附图仅用于示出和描述的目的。虽然在本文档中描述了多个示例,但是修改、适配和其他的实施方式是可能的。因此,以下的详细描述并不限制所公开的示例。相反,所公开的示例的适当范围可以由所附权利要求限定。
本文中所使用的术语仅出于描述特定示例的目的,而不旨在是限制性的。如本文所使用的,除非上下文另外明确指示,否则单数形式“一”、“一个”和”“该”旨在也包括复数形式。本文中所使用的术语“多个”被定义为两个或多于两个。本文中所使用的术语“另一个”被定义为至少第二个或更多个。除非另有说明,否则本文中所使用的术语“连接”被定义为连接,无论是没有任何中间元件的直接连接还是利用至少一个中间元件的间接连接。两个元件可以通过通信信道、路径、网络或系统机械地、电气地或通信地耦接。本文中所使用的术语“和/或”是指并且涵盖相关联的所列项中的任何项和所有可能的组合。还将理解的是,虽然术语第一、第二、第三等在本文中可用于描述各种元件,但除非另有说明或上下文另有指示,否则这些元件不应受这些术语的限制,因为这些术语仅用于将一个元件与另一个元件区分开。如本文中所使用的,术语“包括”意指包括但不限于,术语“包括有”意指包括但不限于。术语“基于”意指至少部分地基于。
验证集成电路(IC)设计的一种方法是测试对应于该IC设计的被测设计(DUT)。在此上下文中,验证IC设计通常是指为了确定IC设计是否如预期的那样起作用而对IC设计进行评估。作为一个示例,验证IC设计可以包括测试DUT以确定IC设计是否满足设计规范。作为另一示例,验证IC设计可以包括测试DUT以识别IC设计中的缺陷和缺陷的程度。
DUT可以是IC设计的实际的物理表现。例如,针对对应的IC设计的DUT可以是基于该IC设计制造的IC。作为更具体的示例,DUT可以是对应于IC设计并且在半导体晶圆上的未封装管芯中制造的IC。作为另一示例,DUT可以是包含在其上制造有对应于IC设计的IC的管芯的半导体封装(或“芯片”)。
DUT可以是仿真DUT,该仿真DUT是IC设计的原型版本并且由硬件仿真提供。在此上下文中,IC的硬件仿真是指除了对应的制造IC之外的硬件设备模仿或仿真经制造IC的行为的过程。例如,可以通过编程可编程逻辑器件(PLD)来原型化IC设计,以提供模仿或仿真IC设计的行为的仿真DUT。在本文中使用的上下文中,“PLD”是指可以被专门配置为或编程为具有一个或多个功能的可重配置逻辑组件。对于仿真DUT的情况,PLD可以被编程为例如仿真IC设计的不同的块、模块和/或子系统。复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)和可擦除可编程逻辑器件(EPLD)是PLD的示例。
DUT可以是虚拟设备或模拟DUT。以此方式,可以对IC设计进行建模,并且可以通过执行模拟软件来观察IC设计的行为。模拟DUT可以对应于IC设计的许多不同的抽象中的一个。作为示例,模拟DUT可以对应于使用寄存器传输级(RTL)建模的IC设计的基于硬件描述语言(HDL)的描述,并且RTL模拟工具可以基于RTL建模来创建IC设计的行为。RTL模型根据顺序逻辑和组合逻辑中的存储元件之间的数据传输来描述IC设计的时钟行为。
模拟DUT可以对应于IC设计的高于、低于或等于RTL抽象的抽象。例如,模拟DUT可以对应于IC设计的基于较高级系统Verilog的描述。作为另一示例,逻辑合成器可以用于从IC设计的RTL描述生成描述在逻辑门级的IC设计的网表,并且逻辑门模拟工具可以模拟在逻辑门级的IC设计的行为。作为另一示例,模拟的模拟工具可以模拟在晶体管级的IC设计的行为。
在制造IC之前通过测试模拟DUT和仿真DUT两者来验证特定IC设计可能是有益的。这样一来,可以对IC设计进行改变和重新设计,而不会引入重新制造IC所涉及的时间和成本。测试仿真DUT的特别益处在于仿真DUT能够并行地执行复杂IC功能的大部分,并且以比模拟DUT高几个数量级的性能来做到这些。由于现代IC设计的不断增加的复杂性,DUT的测试可能不会执行(并且可能不期望执行)DUT的所有功能,因此,测试可能不会验证DUT的某些功能是否如测试所期望的那样被调用或执行。
在本文中所使用的上下文中,DUT的“功能”是指DUT的一组一个或多个特征和/或能力(即,IC设计的特征和/或能力)。功能可以对应于IC设计的架构的多个不同级中的任何一个。举例来说,给定功能可以对应于总线接口、有限状态机、存储器、处理核或IC设计的功能块或模块的其它组件的特征或能力。作为另一示例,给定功能可以对应于节点逻辑电平和时钟信号转换的特定集合。作为另一示例,给定功能可以与对应于IC设计的功能块或模块之间的通信的特征和/或能力相对应。作为另一示例,给定功能可以与对应于IC设计和外部组件之间的通信的特征和/或能力相对应。作为另一示例,给定功能可以与对应于一个或多个子系统(例如,每个包含IC设计的多个功能块或模块的子系统)的特征和/或能力相对应。
作为实际情况,IC设计的测试可能不覆盖IC设计的所有功能,尤其是当设计相对复杂时,例如对片上系统(SoC)或相对复杂的专用集成电路(ASIC)的设计。在此上下文中,测试“覆盖”特定功能是指测试调用或执行该功能预定次数。该次数可以特定于特定功能。测试过程可以提供被称为“功能覆盖”的洞察,其表示某些功能是否被测试覆盖。功能覆盖信息可以有利于确定IC设计的既往测试是否足够或者是否应当通过更多的测试来进一步评估IC设计。此外,功能覆盖信息可以增强对IC设计的重要的或关键的功能不受制于缺陷、错误或漏洞的信心。
对于为何IC设计的基于模拟的测试可能本身可能无法满足功能覆盖目标可能存在多个潜在原因。例如,可能存在与在模拟期间生成适当的输入刺激以覆盖某些功能相关的挑战。作为另一示例,模拟时间与墙上时钟时间之间的差异(例如,墙上时钟时间的一秒可能等于模拟时间的几分钟、几小时或者甚至几天)可能是覆盖某些功能的障碍。例如,IC可以意在成为计算机平台的组件,并且覆盖计算机平台的整个启动序列的模拟可能会花费几天或者甚至几个月的模拟时间。作为另一示例,由于缺乏对IC设计的外部的组件的行为的了解,因此可能无法覆盖某些功能。
为了提高功能覆盖,可以结合基于模拟的测试来使用基于硬件仿真的测试。基于硬件仿真的测试环境可以包括例如提供仿真DUT以原型化IC设计的PLD以及连接到PLD的外部终端的测试设备。此外,基于硬件仿真的测试环境可以包括要与最终系统中的IC通信的仿真和/或实际的外部组件。基于硬件仿真的测试可以覆盖未被基于模拟的测试所覆盖的某些关键功能。因此,经由模拟和仿真来测试IC设计可以覆盖比任一方法可以单独覆盖的功能更多的功能。
与基于模拟的测试相比,IC设计的基于硬件仿真的测试可以提供相当有限的功能覆盖信息。与模拟不同,对仿真DUT的内部元件(例如,内部节点、总线、计数器、寄存器和存储器)的访问可能是受限的或不可用的。因此,虽然IC设计的基于硬件仿真的测试可能实际上覆盖给定功能,但是要验证该覆盖可能是有挑战性的。
根据本文所描述的示例实施方式,通过增加由基于硬件仿真的测试环境提供的功能覆盖信息量来增强经由环境对IC设计的测试。根据示例实施方式,PLD被编程为仿真DUT以形成仿真DUT。根据示例实施方式,PLD包含经由PLD的编程而被配置为形成编程的PLD元件(本文中称为“DUT元件”)的元件,该编程的PLD元件共同地提供仿真DUT。以此方式,DUT元件的子集可以对应于DUT的不同的功能块。
作为示例,DUT元件可以是逻辑门、触发器、逻辑门块、可编程互连、输入/输出(I/O)块、存储器、单位或多位节点、寄存器、或功能块(例如,微处理器、算术逻辑单元(ALU)、或数字信号处理器(DSP))。根据示例实施方式,为了对PLD进行编程以仿真DUT,可以将表示DUT的HDL描述(例如,非常高速集成电路硬件描述语言(VHDL)描述、Verilog语言描述或更高级的语言描述)提供给合成软件。合成软件可以用于将HDL描述转换成包含对应于DUT元件的原语的网表。该网表可以被转变成用于对PLD进行编程的比特流表示。
根据示例实施方式,给定功能可以由状态图来表示,状态图在本文中被称为功能覆盖组(FCG)状态序列(本文中也称为“FCG序列”)。状态以及状态之间的转换可以由状态图来表示,诸如有向图。有向图的顶点可以对应于各个状态,并且有向图的边可以表示状态之间的转换。根据示例实施方式,FCG序列的状态可以通过循环(在本文中称为“FCG循环”)来转换。FCG序列的初始状态对应于FCG循环的开始,并且FCG序列的最终状态对应于FCG循环的结束。
根据示例实施方式,如果某功能在测试期间被执行了至少预定的最小次数,则该功能被认为在测试期间被覆盖。为此,根据示例实施方式,可以由相关联的状态的FCG序列和相关联的循环重复计数来表示给定功能。循环重复计数定义在相关联的功能被认为被覆盖之前FCG序列要循环的预定的最小次数。作为示例,特定FCG序列的循环重复计数可以是“一”,这意味着如果对应的功能在测试期间被执行了一次,则认为该功能被覆盖。作为另一示例,循环重复计数可以是“四”,这意味着对应的功能不被认为被覆盖,直到该功能被执行了四次。
根据示例实施方式,对多个不同的功能中的任何一个功能的覆盖可以由相关联的FCG序列和相关联的循环重复计数来表示。作为示例,功能可以对应于仿真DUT的总线接口对特定总线事务场景的响应。例如,总线接口可以与主中央处理单元(CPU)核和计算机平台的外围设备通信,并且特定功能可以对应于总线接口对由特定外围设备所发起的指定访问(例如,读取访问或写入访问)的响应。作为示例,FCG序列的状态可以包括对应于特定外围设备发起指定访问的总线寻址阶段的状态,并且FCG序列的另一状态可以对应于总线接口响应的总线数据阶段。作为示例,如果该功能被执行了大于一次的最小次数(对应于重复计数间隔),则该功能可以被认为被覆盖。出于多种不同的原因,在测试期间重复地执行功能可能是有益的。例如,重复地执行功能可以赋予信心度,即测试足以识别潜在的问题(例如,总线时序相关的问题、环境性问题、对应于所定义功能的类别的问题或其它问题)。
作为另一示例,用于特定功能的FCG序列的状态可以对应于当组件的缓冲器已满时仿真DUT的组件的响应。作为另一示例,用于特定功能的FCG序列的状态可以对应于仿真DUT的组件通过发起仿真DUT的复位或断电来识别和响应事件。作为另一示例,用于特定功能的FCG序列的状态可以对应于仿真DUT处理与仿真DUT的启动或加电或者外部系统的启动或加电有关的特定事件集合。作为另一示例,用于特定功能的FCG序列的状态可以对应于仿真DUT与特定外部组件通信消息。作为另一示例,用于特定功能的FCG序列的状态可以对应于由与执行安全检查的组件有关的仿真DUT的组件所采取的动作。作为另一示例,用于特定功能的FCG序列的状态可以对应于当仿真DUT的组件的安全检查被复位或断电中断时由该组件所采取的动作。作为另一示例,用于特定功能的FCG序列的状态可以对应于仿真DUT实施特定缓存策略。
作为另一示例,用于特定功能的FCG序列的状态可以对应于远程主机访问功能和与提供远程主机访问功能相关联的特定场景。作为另一示例,用于特定功能的FCG序列的状态可以对应于组件控制电源节省模式和与电源节省模式之间的转换相关联的特定场景。作为另一示例,用于特定功能的FCG序列的状态可以对应于与总线重试模式相关联的特定场景。
作为另一示例,用于特定功能的FCG序列的状态可以对应于与总线仲裁相关联的特定场景。作为另一示例,用于特定功能的FCG序列的状态可以对应于DUT对特定硬件故障场景进行响应。作为另一示例,用于特定功能的FCG序列的状态可以对应于结合对安全凭证的检查或对访问特权的设置而发生的特定场景。
特定功能可以比上述高层级功能示例更基本或者处于相对较低的层级。例如,用于特定功能的FCG序列的状态可以对应于验证定义在特定状态序列中的有限状态机转换的寄存器。作为甚至更低层级的示例,寄存器A和寄存器B可以对应于相应的D型触发器。特定FCG序列的状态转换可以在寄存器A的D端子为高(或“逻辑1”)时发生,此时寄存器B的Q端子在寄存器A和寄存器B二者的时钟端子的上升沿处为低(或“逻辑0”)。
根据示例实施方式,除了被编程为提供仿真DUT之外,PLD还被编程为提供一个或多个FCG状态序列检测器。根据示例实施方式的FCG状态序列检测器与仿真DUT的特定功能相关联。FCG状态序列检测器提供相关联的FCG指示符,该FCG指示符提供关于相关联的功能是否被覆盖的信息(例如,提供相关联的功能是否被执行的指示和/或提供相关联的功能被执行了如由循环重复计数所定义的最小次数的指示)。根据一些实施方式,FCG状态序列检测器是有限状态机,其跟踪相关联的功能的FCG状态,以检测FCG循环并基于该检测为相关联的功能提供覆盖指示符。
根据示例实施方式,FCG状态序列检测器由存储在PLD的存储器中的FCG配置表配置。通常,存储在FCG配置表中的数据配置FCG状态序列检测器以在仿真DUT的测试期间检测FCG循环,并响应于FCG循环检测而提供FCG指示符。根据示例实施方式,FCG配置表包含表示与特定功能相关联的FCG状态序列的数据,并且FCG配置表包含表示针对FCG状态之间的转换的依赖条件的数据。此外,在FCG配置表的其它特征中,根据示例实施方式,FCG配置表可以包含表示相关联的功能的循环重复计数的数据。
作为示例,根据一些实施方式,FCG状态序列检测器提供表示FCG状态序列检测器在仿真DUT的测试期间检测到FCG循环的次数的指示符。作为另一示例,根据一些实施方式,FCG状态序列检测器提供功能覆盖指示符,该功能覆盖指示符是表示在测试期间功能是否被执行了至少如由循环重复计数所定义的最小次数的二进制指示。
参考图1,作为更具体的示例,根据一些实施方式,基于仿真的测试环境100可以包括PLD 110,该PLD 110被编程为在其他可能的组件中提供仿真DUT 119和FCG引擎101。根据一些实施方式,仿真DUT 119可以对应于IC设计,例如片上系统(SoC)、专用集成电路(ASIC)或其他电路。
根据示例实施方式,FCG引擎101是提供FCG指示符159的功能覆盖监测基础设施,该FCG指示符159表示在仿真DUT 119的测试期间仿真DUT 119的相关联的相应功能是否被覆盖。通常,给定功能被覆盖是指功能在测试期间被执行了预定的最小次数。如本文进一步所描述的,根据一些实施方式,FCG指示符159可以具体地指示在测试期间仿真DUT 119的相关联的功能被调用或被执行的次数。根据进一步的实施方式,给定FCG指示符159可以具体地指示相关联的功能是否被执行了预定义的最小次数(例如,FCG指示符159可以被设置为布尔TRUE以表示该功能被执行),如由对应的循环重复计数所配置的。如本文进一步所描述的,根据一些实施方式,FCG引擎101包括一个或多个FCG状态序列检测器158和存储器156。
根据示例实施方式,FCG状态序列检测器158是具有对应于相关联的功能的状态序列的状态(本文中称为“FCG状态”)的序列171的有限状态机。FCG状态序列检测器158使用序列171来跟踪相关联的功能的状态序列的循环。如本文进一步所描述的,FCG状态序列检测器158响应于某些依赖条件被满足而在序列171的FCG状态之间进行转换。根据示例实施方式,序列171的完成在本文中被称为“FCG循环”,并且意味着相关联的功能已经被执行。根据示例实施方式,FCG状态序列检测器158具有其自身的时钟域,并且FCG状态序列检测器158利用该时钟域同步地在序列171的FCG状态之间转换。根据示例实施方式,FCG状态序列检测器158利用检测器的时钟域来同步其所接收的任何信号(例如,与DUT覆盖元件120相关联的信号,如下文进一步所描述的)。
根据示例实施方式,FCG状态序列检测器158还可以包括循环重复计数器173,该循环重复计数器由FCG状态序列检测器158用于跟踪序列171重复的次数。根据示例实施方式,可以由循环重复计数来配置次数。根据示例实施方式,FCG状态序列检测器158可以响应于PLD 110的通电或复位而利用循环重复计数来初始化循环重复计数器173,并且FCG状态序列检测器158可以在每次序列171完成时(即,每当检测到对应的FCG循环时)递减循环重复计数器173。以此方式,根据示例实施方式,当循环重复计数器173递减到零时,FCG状态序列检测器158可以停止跟踪相关联的功能直到PLD 110的下一次通电或复位并且相应地将其FCG指示符设置为TRUE。
FCG状态序列检测器158提供FCG指示符159以表示相关联的功能的覆盖。根据一些实施方式,FCG指示符159为二进制值,并且FCG状态序列检测器158响应于所检测到的FCG循环的数量等于循环重复计数而断言FCG指示符159(例如,设置布尔TRUE或者从布尔FALSE改变为布尔TRUE)以具体地指示相关联的功能已被覆盖。根据其它实施方式,FCG指示符159可以是表示所检测到的FCG循环的数量的多位指示符。以此方式,根据示例实施方式,FCG指示符159可以具体地指示相关联的功能已被执行的次数(或者取决于具体实施方式,至少指示直到达到最小次数之前的次数)。
根据示例实施方式,存储器156可以存储一个或多个FCG配置表157。作为示例,在一些实施方式中,FCG配置表157可以包含数据记录以配置对应的相应FCG状态序列检测器158。根据一些实施方式,FCG配置表157可以存储用于多个相应FCG状态序列检测器158的记录。根据进一步的实施方式,FCG配置表157可以存储用于单个FCG状态序列检测器158的记录。根据示例实施方式,用于特定FCG状态序列检测器158的记录利用序列171和循环重复计数来配置检测器158。如图1中所描绘的,存储器156可以存储由相应FCG状态序列检测器158所提供的一个或多个FCG指示符159。
通常,形成存储器156以及本文中所描述的其它存储器和存储介质的电气组件可以由非暂时性存储器设备形成,例如半导体存储设备、闪存设备、忆阻器、相变存储器设备、前述存储技术中的一个或多个的组合等。此外,除非本文另有说明,否则存储器设备可以是易失性存储器设备(例如,动态随机存取存储器(DRAM)设备、静态随机存取(SRAM)设备等)或非易失性存储设备(例如,闪存设备、只读存储器(ROM)设备等)。
根据示例实施方式,FCG引擎101可以包括多个计数器170。根据一些实施方式,每个FCG状态序列检测器158可以与其相应的计数器170集合相关联。根据示例实施方式,计数器170集合配置相关联的FCG状态序列检测器158以根据不同的时间间隔测量DUT覆盖元件120的值。计数器170集合的时钟输入可以由建立不同的增量频率的不同的使能信号门控,以使得集合中的计数器170可以具有不同的增量时间分辨率。
例如,使能信号可以是到时钟域的周期性单时钟脉冲,在该时钟域中状态序列检测器158和计数器170是同步的。以此方式,可以利用相对较小的计数器来跟踪相对较大的时间段。作为示例,可以调节与特定FCG状态序列检测器158相关联的一组三个计数器170的使能信号,使得这三个计数器170分别具有对应于一毫秒、一微秒和一秒的增量。根据一些实施方式,FCG状态序列检测器158可以使用特定计数器170的计数值来触发对DUT覆盖元件120的特定值的测量。因此,不同计数器170的计数值可以配置将在不同的时间间隔被测量的DUT覆盖元件120的值。测量值可以例如控制对控制FCG状态之间的转换的依赖条件的评估,如本文进一步所描述的。
测试系统180可以耦合到PLD 110以用于测试仿真DUT 119。测试系统180可以包括多个数字和/或模拟测量和刺激生成子系统中的任何一个,例如数字信号生成器、函数生成器、数字逻辑分析器、示波器、波形生成器、万用表、频谱分析器、网络分析器、串行解码器、串行编码器,以及其他和/或不同的测试设备。
测试系统180可以以输入182的形式提供各种刺激以测试仿真DUT 119。作为示例,输入182可以是控制信号、地址信号、表示请求的信号或信号序列、表示预定值或参数的数据信号、以及其他刺激。测试系统180可以经由从PLD 110接收的一个或多个输出184来观察仿真DUT 119对测试的响应。作为示例,输出184可以是数据信号、地址信号、控制信号、序列、输出数据、值、信号模式、数据模式以及其他的响应指示。
根据一些实施方式,测试系统180可以对与仿真DUT 119接口或通信的外部组件进行建模。根据示例实施方式,测试系统180可以是DUT 119解决方案发布/产品化时该解决方案将最终针对的硬件平台和环境。例如,外部组件可以是除对应于仿真DUT 119的IC之外的硬件平台和环境的其他组件。建模的外部组件可以向仿真DUT 119提供刺激以刺激仿真DUT119的序列和状态空间。根据进一步的示例实施方式,基于仿真的测试环境100可以包括一个或多个实际的物理组件,该一个或多个实际的物理组件耦接到仿真DUT 119并且是将包括对应于仿真DUT 119的IC的系统的一部分。
根据示例实施方式,PLD 110包括共同涵盖仿真DUT 119的DUT元件120和121。根据一些实施方式,仿真DUT 119可以对应于IC设计的RTL抽象。
DUT元件120和121可以包括例如逻辑门、触发器、计数器、同步逻辑、组合逻辑、互连、单位和多位节点、导线、I/O块、功能块,以及PLD 110的其他和/或不同的元件。如图1所描绘的,DUT元件120是“DUT覆盖元件”,其提供在对仿真DUT 119的测试期间由FCG引擎101的FCG状态序列检测器158跟踪或监测的值,以确定仿真DUT 119的某些功能是否被测试覆盖,如本文进一步所描述的。如图1所描绘的,DUT元件121是仿真DUT 119的“其他DUT元件121”,其在测试期间未被FCG状态序列检测器158主动地监测。
根据示例实施方式,在特定测试执行中未被主动地监测的一个或多个其他DUT元件121可以变成在另一测试执行中被主动地监测的DUT覆盖元件120,反之亦然。以此方式,对DUT覆盖元件120和其它DUT元件121的指定可以对应于针对特定测试执行的特定编程的PLD 110。相同的PLD 110可以被重新编程以用于一个或多个其它的测试执行,该一个或多个其它的测试执行可以涉及重新指定哪些DUT元件被或不被主动地监测。
如在164处所指示的,测试系统180可以耦接到PLD 110的一个或多个I/O接口160。I/O接口160提供用于从PLD 110下载功能覆盖信息的卸载路径。如本文进一步所描述的,在仿真DUT 119的测试结束时,测试系统180可以与I/O接口160通信以获得表示FCG指示符159的数据。此外,I/O接口160可以在测试之前提供上传路径,I/O接口160可以用于将FCG配置表157上传到存储器156中以配置FCG引擎101的一个或多个FCG序列检测器158。作为示例,I/O接口160可以符合网络接口(例如,以太网接口)、边界扫描接口(例如,联合测试动作组(JTAG)接口)、串行接口(例如,串行外围接口(SPI)总线、集成电路(I2C)总线或改进的I2C(I3C)总线)或另一通信接口。在仿真DUT 119的情况下,I/O接口160可以专用于测试目的。如本文进一步描述的,根据进一步的示例实施方式,I/O接口160可以是产品化IC的一部分,并且对于这些实施方式,I/O接口可以是在DUT 119的IC实施内产品化的共享活动接口。
图2描绘了根据示例实施方式的FCG状态序列检测器的状态图200。FCG状态序列检测器与仿真DUT的特定功能相关联,并且根据示例实施方式,通过按照状态图200操作,FCG状态序列检测器提供FCG指示符以指示相关联功能的功能覆盖。
参考图2,根据一些实施方式,PLD可以在对仿真DUT的测试开始时被通电或重位,并且响应于PLD的通电或复位,状态序列检测器转换到初始化状态204。对于图2中所描绘的示例实施方式,相关联的功能包括N个状态,并且初始化可以包括FCG状态序列检测器设置N个FCG状态的序列171,该序列对应于相关联的功能的N个状态的序列。根据示例实施方式,FCG状态序列检测器使用序列171来跟踪对应的功能何时已被执行。根据示例实施方式,相关联的功能的执行对应于序列171的一个完整转换或循环(本文中称为FCG循环)。图4中描绘了示例FCG配置表157并在下文进一步描述。同样在初始化状态204中,FCG状态序列检测器可以利用循环重复计数(来自FCG配置表)来初始化循环重复计数器,该循环重复计数表示针对要覆盖的相关联功能序列171将被重复的次数(例如,FCG循环的数量)。
通常,序列171可以对应于有向图,其中,有向图的顶点对应于相应FCG状态。有向图的边对应于FCG状态转换。虽然图2是对应于无环有向图的序列171的相对简单的示例并且其中,序列171的每个FCG状态具有到另一状态的单一转换,但是根据进一步的示例实施方式,序列171可以相对更复杂。例如,根据进一步的实施方式,序列171可以具有给定FCG状态,该给定FCG状态可以根据条件而转换到两个或更多个FCG状态。作为另一示例,根据进一步的实施方式,序列171可以对应于有向图,该有向图在图内具有一个或多个有向循环。无论其特定形式如何,序列171具有初始FCG状态(例如,图2的FCG S-1状态220)和最终FCG状态(例如,图2的FCG S-N状态236)。
如图2中所描述的,根据示例实施方式,响应于FCG状态序列检测器被初始化(如在208处所描绘的),FCG状态序列检测器从初始化状态转换到FCG S-1状态220,FCG S-1状态序列171的第一FCG状态。FCG状态序列检测器评估一个或多个依赖条件224以确定是否从FCG S-1状态220转换到下一FCG S-2状态228。
根据一些实施方式,一个或多个依赖条件224由FCG配置表定义。此外,根据一些实施方式,对于多个依赖条件与给定FCG状态相关联的情况,FCG状态序列检测器执行依赖条件的逻辑OR以确定是否满足依赖条件中的至少一个以引起到下一FCG状态的转换。对于FCGS-1状态220的情况,如果满足(潜在的多个依赖条件224中的)依赖条件224,则FCG状态序列检测器从FCG S-1状态224转换到FCG S-2状态228。
根据示例实施方式,依赖条件可以是通过将组合逻辑应用于由一个或多个DUT覆盖元件所提供的一个或多个值来决定或评估的条件。根据示例实施方式,对给定依赖条件的评估可以导致布尔TRUE或导致布尔FALSE,布尔TRUE触发到序列171的下一FCG状态的转换,布尔FALSE暗示没有针对活动循环的状态转换。
被满足的依赖条件可以对应于与仿真DUT一起或在仿真DUT中发生的一个或多个特定事件。通常,事件可以与仿真DUT的指示符或者任何特征或能力相关联或相对应。作为示例,给定依赖条件可以取决于一个或多个逻辑电平转换(例如,上升沿转换和/或下降沿转换)的逻辑组合;一个或多个计数器值;一个或多个节点逻辑状态;一个或多个信号状态;或由DUT覆盖元件提供的一个或多个其它指示或信号。
根据一些实施方式,依赖条件可以是一个或多个其他FCG序列是否已经实现了其覆盖状态(例如,一个或多个FCG指示符159被设置为TRUE)。例如,第一FCG状态序列可能依赖于第二FCG状态序列被覆盖,然后第一FCG状态序列才继续进行其他FCG序列状态。
作为一个示例,事件可以是信号的传输或接收。作为另一示例,事件可以是消息的传输或接收。作为另一示例,事件可以是错误信号的断言。作为另一示例,事件可以是计数器达到阈值。作为另一示例,事件可以是特定实体的特定总线访问。作为另一示例,事件可以是缓冲器满信号。作为另一示例,事件可以是故障状况。作为另一示例,事件可以是安全检查失败。作为另一示例,事件可以是验证失败。作为另一示例,事件可以是认证失败。作为另一示例,事件可以是不稳定的电源检测。作为另一示例,事件可以是决策点处的特定分支。
在FCG S-2状态228中,状态序列检测器确定是否满足另一组一个或多个依赖条件232,并且如果满足,则状态序列检测器转换到序列171的下一FCG状态(图2中未描绘)。状态序列检测器继续评估依赖条件,并且基于这些评估在FCG状态之间转换,直到状态序列检测器响应于一个或多个依赖条件(如在240处所描绘的)被满足而从先前FCG状态转换到第NFCG S-N状态236为止。对于该示例实施方式,FCG S-N状态236是序列的最终FCG状态。根据一些实施方式,响应于一个或多个依赖条件242被满足,状态序列检测器转换到状态244,在状态244处状态序列检测器评估或确定是否重复序列,如在246处所描绘的。
虽然对于图2中所描绘的示例序列171而言每个状态转换是转换到序列171的新状态,但是根据进一步的实施方式,序列171的给定状态转换可以是转换到先前状态。例如,根据进一步的实施方式,对于另一序列171,可以存在从状态A到状态B的转换、从状态B到状态C的转换、以及从状态C回到状态A的转换。作为另一示例,对于另一序列171,取决于哪些依赖条件被满足,从状态A可以存在到状态B的转换或回到状态A的转换。
根据一些实施方式,在状态244中状态序列检测器递减循环重复计数器,并且如果循环重复计数为非零,则状态序列检测器转换(如在246处所描绘的)回FCG S-1状态220以检测另一FCG循环。否则,状态序列检测器已经检测到相关联的功能在测试期间被覆盖,并且状态序列检测器转换到状态248,在状态248处状态序列检测器设置FCG指示符以表示该覆盖。
根据进一步的示例实施方式,取代提供功能是否被覆盖的二进制指示,FCG指示符可以是表示功能已被执行的次数(例如,直到由重复计数值设定的最小值的次数或不受重复计数值限制的次数)的多位值。对于这些示例实施方式,FCG状态序列检测器可以不具有设置FCG指示符的状态248,如图2中所描绘的。而是,作为状态244的一部分,FCG状态序列检测器可以利用功能已经被执行的当前次数来更新多位FCG指示符。
图3描绘了根据示例实施方式的初始化FCG状态序列检测器的过程300。根据一些实施方式,FCG状态序列检测器或FCG引擎的另一组件可以执行过程300。参考图3,根据一些实施方式,过程300包括从PLD的存储器读取FCG配置表的数据(块304)。接下来,根据块308,过程300包括基于该数据设置FCG状态序列。这可以包括例如创建由该数据指定的多个状态,并且为每个FCG状态设置依赖条件评估。此外,根据块312,过程300包括基于来自FCG配置表的数据为要被覆盖的功能设置FCG循环的最小数量(例如,初始化循环重复计数器)。根据框316,过程300发起到序列的初始FCG状态的转换。
图4描绘了根据示例实施方式的FCG配置表157。参考图4,FCG配置表157包括用于配置一个或多个FCG状态序列检测器的记录450。图4中具体地示出了示例记录450-1、450-2和450-N,其对应于用于配置具有对应标识(ID)“000”(如由N个记录450的FCG ID字段404所表示的)的FCG状态序列检测器的N个记录450。
根据示例实施方式,每个记录450具有包括对应于特定FCG状态的数据的字段408。根据示例实施方式,特定FCG状态序列检测器的记录450根据对应FCG状态的顺序排序在表157中被顺序排序。更具体地,对于该示例,N个记录450-1至450-N分别对应于FCG状态1至N。
记录450还具有一个或多个依赖条件组字段412,该一个或多个依赖条件组字段412包含表示相关联的FCG状态的相应条件依赖的数据。换句话说,给定记录450的每个字段412存储表示条件依赖的数据,如果条件依赖被满足,则触发从与给定记录450相关联的FCG状态转换到与表157中的给定记录450之后的下一记录450相关联的下一FCG状态。根据示例实施方式,条件依赖可以基于状态和DUT覆盖元件(例如,图1的DUT覆盖元件120)的值以及FCG指示符。
对于图4中所描绘的示例,记录450-1具有M个依赖条件组,包括具体的示例依赖条件组412-1、412-2和412-M。这M个依赖条件组对应于M个依赖条件,使得任何依赖条件被满足会触发从与记录450-1相关联的FCG状态0到与记录450-2相关联的FCG状态1的转换。记录450-1的依赖条件组412-1指定如果特定单位节点(MONITOR_NODE_0000[0])具有上升沿,则从FCG状态0转换到FCG状态1。记录450-1的依赖条件组412-2指定如果特定单位节点(MONITOR_NODE_0001[0])具有逻辑值1并且另一单位节点(MONITOR_NODE_0002[0])具有逻辑值0,则从FCG状态0转换到FCG状态1。记录450-1的依赖条件组412-M指定如果特定单节点(MONITOR_NODE_0003[0])具有下降沿、多位节点(MONITOR_NODE_0004[15:0])具有特定值(0xCFFD)并且特定计数器(COUNTER_00)具有特定值(0xD01),则从FCG状态0转换到FCG状态1。
与FCG状态1相关联的记录450-2具有单个依赖条件组412-1。组412-1指定如果特定计数器(COUNTER_01)具有特定值(0xF),则从FCG状态1转换到FCG状态2。
对于该示例,与最终FCG状态(FCG状态N)相关联的记录450-N包含M个依赖条件组412-1至412-M。这些依赖条件组中的每一个指定相应的依赖条件,如果该相应的依赖条件被满足,则对应于FCG序列的结束。换句话说,如果满足这些条件依赖中的任何一个并且FCG状态序列检测器处于FCG状态N,则相关联的功能已经被执行(对应于一个FCG循环)。
根据示例实施方式,给定依赖条件可以基于另一功能是否已被覆盖和/或另一功能是否已被执行。更具体地,记录450-N的依赖条件组412-1指定如果特定FCG指示符(FC_GROUP_ID-000.FC_COMP_FLAG)被设置为1(其表示对应的功能已经被执行了一次)并且特定单位节点(MONITOR_NODE_0001[0])具有逻辑值0,则序列结束。记录450-N的依赖条件组412-2指定如果特定FCG指示符(FC_GROUP_ID-0012.FC_COMP_FLAG)不等于2(例如,对应的功能尚未被执行两次)、特定单位节点(MONITOR_NODE_0001[0])具有逻辑值1并且特定计数器(COUNTER_02)具有某个值(0x6FFF),则序列结束。记录450-N的依赖条件组412-M指定如果特定FCG指示符(FC_GROUP_ID-0010.FC_COMP_FLAG)不等于1(例如,对应的功能已经被执行了两次或尚未被执行)并且特定单位节点(MONITOR_NODE_1001[0])具有逻辑值0,则序列结束。
根据一些实施方式,记录450可以包括字段424,字段424存储表示一个或多个计数器(例如,图1的计数器170)的一个或多个标识的数据,该一个或多个计数器的一个或多个条目将在FCG循环开始时被状态序列检测器清除。此外,记录450可以包括字段428,字段428存储表示一个或多个计数器的一个或多个标识的数据,该一个或多个计数器的条目将在FCG循环结束时被状态序列检测器清除。根据示例实施方式,记录450的字段432包括循环重复计数。字段436包含用以识别对应于序列的最终FCG状态的记录450的数据。对于该示例,记录450-1至450-N-1的字段436各自包含位“0”,并且记录450-N的字段436包含位“1”以表示记录450-N对应于序列的最后一个FCG状态。根据进一步的示例实施方式,出于节省存储器空间的目的,字段436可以由记录的结束来暗示以相应地暗示序列的最后一个FCG状态。
参考图5,根据一些实施方式,过程500可用于创建PLD覆盖捕获框架。作为示例,过程500可以由执行过程500的脚本或图形用户界面(GUI)工具来执行。根据示例实施方式,基于表的方法可以被用作开发框架的一个或多个脚本的输入。根据示例实施方式,源寄存器传输逻辑(RTL)文件可以由在调用编译器指令或硬件描述符语言定义开关时启用的专用调试和覆盖部分后面的配置和设置脚本来注释。
过程500包括基于用户定义的选择标准扫描(框504)一个或多个设计文件(例如,RTL文件)以识别DUT内的一个或多个覆盖元件。用户输入还可以包括标识特定DUT覆盖元件和相关联的状态转换覆盖以及与这些元件相关联的事件覆盖的用户数据。基于用户输入,根据框508,过程500包括构建一个或多个设计文件内的插入(例如,RTL插入)以为所识别的覆盖元件创建和连接框架逻辑、存储原语和一个或多个卸载路径。
根据一些实施方式,包含FCG状态序列检测器的一个或多个FCG引擎可以被整合到最终的可生产集成电路中。例如,图6描绘了根据示例实施方式的一个或多个计算机平台610的系统600。
根据示例实施方式,计算机平台610是包括框架或机箱的模块化单元。此外,该模块化单元可以包括安装到机箱并且能够执行机器可读指令的硬件。根据一些实施方式,刀片服务器是计算机平台610的示例。根据进一步的实施方式,计算机平台610可以具有多个不同的其他形式,例如机架式服务器、独立服务器、客户端、台式计算机、智能电话、可穿戴计算机、联网组件、网关、网络交换机、存储阵列、便携式电子设备、便携式计算机、平板计算机、瘦客户端、笔记本计算机、电视、模块化交换机、消费电子设备、家电、边缘处理系统、传感器系统、手表、可移除外围卡、或者通常而言任何其他基于处理器的平台。
如图6中所描绘的,根据示例实施方式,给定计算机平台610可以在其其它元件中包括一个或多个主处理核620(例如,中央处理单元(CPU)处理核、通用图形处理单元(GPU)核等)和系统存储器614。
如图6中所描绘的,计算机平台610可以通过网络结构670耦接到远程计算机系统680。网络结构670可以与一种或多种类型的通信网络相关联,例如(作为示例)光纤通道网络、高速计算链路(CXL)结构、专用管理网络、局域网(LAN)、广域网(WAN)、全球网络(例如,因特网)、无线网络或其任何组合。
远程计算机系统680的性能和分析引擎684可以例如获取和分析从计算机平台610收集的使用数据度量。作为示例,使用数据度量可以用于性能分析以及其他类型的分析(例如,功能分析、电路利用分析、功率分析、安全分析或其他分析)的目的。以此方式,根据示例实施方式,性能和分析引擎684可以分析由计算机平台610提供的使用度量数据以确定计算机平台610的某些功能的特性(例如,功能是否被使用、功能被使用的频率、何时使用功能、功能的使用频率或其他表征属性)。
根据示例实施方式,计算机平台610可以包括半导体封装630,该半导体封装630进而可以包括一个或多个半导体管芯640。如图6中所描绘的,根据示例实施方式,FCG引擎101被制造在半导体管芯640中。FCG引擎101包括耦接到一个或多个半导体管芯640的覆盖元件644的一个或多个FCG状态序列检测器652。在本文中,覆盖元件644可以属于在一个或多个半导体管芯640中制造的元件的子集。以此方式,一个或多个半导体管芯640的元件提供对应于半导体封装630的功能的各种特征和/或能力。根据示例实施方式,FCG状态序列检测器652检测与给定功能相关联的FCG循环,并且提供表示功能被执行的次数的FCG指示符。
根据示例实施方式,FCG引擎101的使用监测器650可以基于FCG指示符来计算表征功能的使用的使用度量。例如,使用度量可以是表征功能的使用的统计数据(例如,平均值、中位数、预期值、方差或其他统计数据)。使用监测器可以耦接到通信接口660,并且在计算机平台610的所有者(或其它适当的用户)许可、或者响应于被另一策略所允许的情况下,可以经由网络结构670将使用度量发送到远程计算机系统680以用于由性能和分析引擎684进行分析。
性能和分析引擎684可以出于各种不同的目的分析不同的计算机平台610上的半导体封装630的使用度量。例如,由性能和分析引擎684进行的分析可以向半导体封装630的制造商或向计算机平台610的制造商揭示半导体封装630的特定功能是否实际上被客户使用。
作为一个具体示例,根据一些实施方式,半导体封装630可以是用于计算机平台610的诸如基板管理控制器(BMC)等管理控制器,并且对于这些实施方式,远程计算机系统680可以是例如经由管理网络耦接到计算机平台610的BMC的远程管理服务器。
在本文所使用的上下文中,“BMC”或“基板管理控制器”是专用服务处理器,其使用传感器监测服务器或其他硬件的物理状态,并且通过管理网络与管理系统通信。基板管理控制器还可以通过输入/输出控制器(IOCTL)接口驱动器、表述性状态转移(REST)应用程序接口(API)或辅助基板管理控制器与应用程序之间的通信的一些其他系统软件代理与在操作系统级执行的应用程序进行通信。基板管理控制器可以具有对位于包括系统存储器的服务器机箱中的硬件设备的硬件级访问。基板管理控制器可能能够直接修改硬件设备。基板管理控制器可以独立于基板管理控制器设置于其中的系统的操作系统而操作。基板管理控制器可以位于要监测的服务器或其他设备的主板或主电路板上。
基板管理控制器被安装在被管理的服务器/硬件的母板上或者以其他方式连接或附接到被管理的服务器/硬件的事实并不妨碍基板管理控制器被认为与服务器/硬件“分离”。如本文中所使用的,基板管理控制器具有对计算设备的子系统的管理能力,并且与执行计算设备的操作系统的处理资源分离。基板管理控制器与诸如中央处理单元等处理器分离,其在系统上执行高级操作系统或管理程序。
参考图7,根据示例实施方式,过程700包括由可编程逻辑器件来仿真(块704)硬件组件以提供仿真硬件组件。仿真硬件组件能够执行预定功能。过程700包括测试(块708)仿真硬件组件。过程700包括由可编程逻辑器件确定(块712)仿真硬件组件是否在测试期间执行了预定功能。该确定包括:响应于测试,由可编程逻辑器件的状态序列检测器检测仿真硬件组件是否顺序通过了与预定功能相关联的多个状态。
根据一些实施方式,状态序列检测器可以由存储在可编程逻辑器件的存储器中的配置数据表来配置。例如,数据可以指定状态序列检测器的多个状态,并且还可以指定状态序列检测器为了控制状态之间的转换而评估的依赖条件。根据一些实施方式,配置表还可以包括表示为了使预定功能被认为被覆盖而预定功能要被执行的最小次数的数据。根据一些实施方式,可编程逻辑器件可以提供多个状态序列检测器以提供仿真硬件组件的多个功能的覆盖信息。根据一些实施方式,仿真硬件组件可以是计算机平台的管理控制器,例如基板管理控制器。根据一些实施方式,可以经由寄存器传输逻辑(RTL)描述创建状态序列检测器,该RTL描述被转换成描述状态序列检测器的组件的对应网表。根据一些实施方式,可以响应于可编程逻辑器件的通电或复位而初始化状态序列检测器。
过程700包括响应于检测到仿真硬件组件是否顺序通过多个状态而由可编程逻辑器件生成(块716)表示该测试对预定功能的覆盖的指示符。根据一些实施方式,指示符可以是表示预定功能是否已被执行预定的最小次数的二进制指示。根据进一步的实施方式,指示符可以是表示预定功能已被执行的次数的多位指示。
参考图8,根据示例实施方式,装置800包括半导体封装810。半导体封装810包括硬件设备820、存储器824和状态序列检测器828。硬件设备820包括多个元件,并且硬件设备能够执行预定功能。存储器824存储表示硬件设备的状态序列以及元件的特性与状态序列之间的关系的数据。
根据示例实施方式,存储器824还可以存储表示为了预定功能被覆盖的目的预定功能将被执行的次数的数据。根据示例实施方式,硬件设备820可以包括与状态序列检测器828相关联的一个或多个计数器,以允许状态序列检测器828经由计数器以不同的时间增量测量时间。根据一些实施方式,半导体封装810可以是可编程逻辑器件。根据进一步的实施方式,半导体封装810可以是制造的集成电路。根据一些实施方式,半导体封装810可以包括将关于功能覆盖的统计信息传送到远程服务器的通信接口和使用监测器。状态序列检测器828监测元件,以响应于特性而确定硬件设备是否转换通过状态序列。
状态序列检测器828响应于确定硬件设备820是否转换通过状态序列而提供硬件设备820是否执行预定功能的指示符830。根据一些实施方式,指示符830可以是表示预定功能是否已被执行预定的最小次数的二进制指示。根据进一步的实施方式,指示符830可以是表示预定功能已被执行的次数的多位指示。
参考图9,根据示例实施方式,可编程逻辑器件900包括多个元件904和状态序列检测器912。元件904仿真电子设备以提供仿真设备。元件904包括与能够由仿真设备执行的预定功能相关联的多个覆盖元件908。根据一些实施方式,可编程逻辑器件900可以是复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)或可擦除可编程逻辑器件(EPLD)。根据一些实施方式,多个元件904可以包括逻辑门、触发器、计数器、同步逻辑、组合逻辑、互连、节点、线、输入/输出(I/O)块或功能块。根据一些实施方式,元件908可以包括一个或多个功能覆盖指示符。
状态序列检测器912耦接到元件,以响应于对仿真设备904的测试而通过与预定功能相关联的状态序列来检测仿真设备的循环。序列检测器912响应于检测到循环而提供与预定功能相关联的功能覆盖的指示符920。
根据一些实施方式,指示符920可以是表示预定功能是否已被执行预定的最小次数的二进制指示。根据进一步的实施方式,指示符920可以是表示预定功能已被执行的次数的多位指示。
根据示例实施方式,序列检测器可以由存储在可编程逻辑器件中的数据的配置表来配置。根据一些实施方式,配置表可以存储表示多个状态和序列检测器为了状态之间的转换而评估的依赖条件的数据。根据一些实施方式,该表可以存储表示重复循环计数的数据,该重复循环计数表示为了使预定功能被覆盖预定功能将被执行的最小次数。根据一些实施方式,可编程逻辑器件可以响应于可编程逻辑器件的通电或复位而初始化序列检测器。
根据示例实施方式,检测仿真硬件组件是否顺序通过多个状态包括由状态序列检测器确定仿真硬件组件是否从第一状态转换到第二状态。确定仿真硬件组件是否从第一状态转换到第二状态包括由状态序列检测器确定与第一状态相关联的多个条件依赖组中的条件依赖组是否被满足。特别的优点在于可以增强仿真硬件组件的功能覆盖报告。
根据示例实施方式,确定条件依赖组是否被满足包括由状态序列检测器确定仿真硬件组件的一组元件的特性是否满足与条件依赖组相关联的条件。特别的优点在于可以增强仿真硬件组件的功能覆盖报告。
根据示例实施方式,确定仿真硬件组件是否执行了预定功能还包括确定仿真硬件组件是否顺序通过多个状态预定的次数。特别的优点在于可以增强仿真硬件组件的功能覆盖报告。
根据示例实施方式,确定仿真硬件组件是否执行了预定功能还包括访问存储在可编程逻辑器件中的表。该表包括定义多个状态的数据。特别的优点在于可以增强仿真硬件组件的功能覆盖报告。
根据示例实施方式,表经由可编程逻辑器件的接口进行更新。特别的优点在于可以增强仿真硬件组件的功能覆盖报告。
根据示例实施方式,确定仿真硬件组件是否执行了预定功能还包括访问存储在可编程逻辑器件中的表。该表包括定义预定次数的数据。特别的优点在于可以增强仿真硬件组件的功能覆盖报告。
根据示例实施方式,生成指示符包括生成硬件组件顺序通过多个状态的次数的指示。特别的优点在于可以增强仿真硬件组件的功能覆盖报告。
虽然已经关于有限数量的实施方式描述了本公开,但受益于本公开的本领域技术人员将理解其许多修改和变化。所附权利要求旨在覆盖所有这样的修改和变化。
Claims (20)
1.一种方法,包括:
由可编程逻辑器件仿真硬件组件以提供仿真硬件组件,其中,所述仿真硬件组件能够执行预定功能;
测试所述仿真硬件组件;
由所述可编程逻辑器件确定所述仿真硬件组件在所述测试期间是否执行了所述预定功能,其中,所述确定包括:响应于所述测试,由所述可编程逻辑器件的状态序列检测器检测所述仿真硬件组件是否顺序通过与所述预定功能相关联的多个状态;以及
响应于检测到所述仿真硬件组件是否顺序通过所述多个状态,由所述可编程逻辑器件生成表示所述测试对所述预定功能的覆盖的指示符。
2.根据权利要求1所述的方法,其中:
检测所述仿真硬件组件是否顺序通过所述多个状态包括由所述状态序列检测器确定所述仿真硬件组件是否从所述多个状态中的第一状态转换到所述多个状态中的第二状态;并且
确定所述仿真硬件组件是否从所述第一状态转换到所述第二状态包括由所述状态序列检测器确定与所述第一状态相关联的多个条件依赖组中的条件依赖组是否被满足。
3.根据权利要求2所述的方法,其中,确定所述条件依赖组是否被满足包括由所述状态序列检测器确定所述仿真硬件组件的一组元件的特性是否满足与所述条件依赖组相关联的条件。
4.根据权利要求1所述的方法,其中,确定所述仿真硬件组件是否执行了所述预定功能还包括确定所述仿真硬件组件是否顺序通过所述多个状态预定次数。
5.根据权利要求4所述的方法,其中,确定所述仿真硬件组件是否执行了所述预定功能还包括访问存储在所述可编程逻辑器件中的表,其中,所述表包括定义所述多个状态的数据。
6.根据权利要求5所述的方法,还包括经由所述可编程逻辑器件的接口来更新所述表。
7.根据权利要求4所述的方法,其中,确定所述仿真硬件组件是否执行了所述预定功能还包括访问存储在所述可编程逻辑器件中的表,其中,所述表包括定义所述预定次数的数据。
8.根据权利要求1所述的方法,其中,所述仿真硬件组件包括与所述预定功能相关联的多个元件,并且确定所述仿真硬件组件是否执行了所述预定功能还包括响应于由所述多个元件提供的值而跟踪所述多个状态之间的转换。
9.根据权利要求1所述的方法,其中,生成所述指示符包括生成对所述硬件组件顺序通过所述多个状态的次数的指示。
10.一种装置,所述装置包括:
半导体封装,所述半导体封装包括:
包括多个元件的硬件设备,其中,所述硬件设备能够执行预定功能;
存储器,所述存储器用于存储数据,所述数据表示所述硬件设备的状态序列以及所述元件的特性与所述状态序列之间的关系;以及
状态序列检测器,所述状态序列检测器用于:
监测所述元件,以响应于所述特性而确定所述硬件设备是否转换通过所述状态序列;并且
响应于确定所述硬件设备是否转换通过所述状态序列,提供所述硬件设备是否执行了所述预定功能的指示符。
11.根据权利要求10所述的装置,其中,所述指示符表示与所述预定功能相关联的功能覆盖是否已被覆盖。
12.根据权利要求11所述的装置,其中,所述数据还表示所述硬件设备转换通过针对待覆盖的所述功能的所述状态序列的次数的计数。
13.根据权利要求10所述的装置,其中,所述半导体封装还包括:
使用监测器,所述使用检测器用于响应于所述指示符而确定表示所述预定功能的使用的统计数据;以及
通信引擎,所述通信引擎用于与远程计算机系统传送表示所述统计数据的数据。
14.根据权利要求13所述的装置,其中,所述通信引擎用于响应于用户授权策略而调节与所述远程计算机系统的所述数据的通信。
15.根据权利要求10所述的装置,其中,所述半导体封装是基板管理控制器的一部分,并且所述装置还包括用于执行机器可读管理堆栈指令的处理核以为计算机平台提供管理功能。
16.一种可编程逻辑器件,包括:
多个元件,所述多个元件仿真电子设备以提供仿真设备,其中,所述多个元件包括与所述仿真设备的预定功能相关联的多个覆盖元件;以及
耦接到所述多个覆盖元件的状态序列检测器,所述状态序列检测器用于:
响应于对所述仿真设备的测试,通过与所述预定功能相关联的状态序列来检测所述仿真设备的循环;并且
响应于对所述循环的检测,提供与所述预定功能相关联的功能覆盖的指示符。
17.根据权利要求16所述的可编程逻辑器件,还包括:
耦接到所述状态序列检测器的存储器,其中,所述存储器用于存储表示标准的数据,所述标准由所述状态序列检测器使用以确定所述仿真设备在所述测试期间是否转换通过预定的所述状态序列。
18.根据权利要求17所述的可编程逻辑器件,其中,所述数据还表示依赖组集合,其中,每个依赖组集合表示针对所述状态序列的状态转换要满足的至少一个标准。
19.根据权利要求17所述的可编程逻辑器件,其中,所述数据还表示所述状态序列中的第一状态的多个依赖组,其中,所述多个依赖组中的每个依赖组表示所述设备从所述第一状态转换到所述多个状态中的第二状态要满足的至少一个标准,并且所述状态序列检测器响应于所述多个依赖组中的任何依赖组的所述至少一个标准被满足而确定所述设备从所述第一状态转换到所述第二状态。
20.根据权利要求17所述的可编程逻辑器件,其中,所述数据还表示在所述状态序列检测器确定所述设备执行所述预定功能之前所述状态序列的循环计数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18/058,127 US20240168784A1 (en) | 2022-11-22 | 2022-11-22 | Providing integrated circuit functionality coverage indicators using state sequence detectors |
US18/058,127 | 2022-11-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118070723A true CN118070723A (zh) | 2024-05-24 |
Family
ID=90923050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311106503.2A Pending CN118070723A (zh) | 2022-11-22 | 2023-08-30 | 使用状态序列检测器来提供集成电路功能覆盖指示符 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240168784A1 (zh) |
CN (1) | CN118070723A (zh) |
DE (1) | DE102023121497A1 (zh) |
-
2022
- 2022-11-22 US US18/058,127 patent/US20240168784A1/en active Pending
-
2023
- 2023-08-10 DE DE102023121497.7A patent/DE102023121497A1/de active Pending
- 2023-08-30 CN CN202311106503.2A patent/CN118070723A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102023121497A1 (de) | 2024-05-23 |
US20240168784A1 (en) | 2024-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8997034B2 (en) | Emulation-based functional qualification | |
US5425036A (en) | Method and apparatus for debugging reconfigurable emulation systems | |
EP3369015B1 (en) | Methods and circuits for debugging circuit designs | |
WO2014116408A1 (en) | Embedded tester | |
Bernardeschi et al. | Accurate simulation of SEUs in the configuration memory of SRAM-based FPGAs | |
US9846587B1 (en) | Performance analysis using configurable hardware emulation within an integrated circuit | |
CN116663462B (zh) | 断言验证方法、断言验证平台、电子设备及可读存储介质 | |
US20070043548A1 (en) | Verifying a simulated hardware environment for a simulated device under test | |
CN109445365B (zh) | 一种fpga嵌入式乘法器的筛选测试方法 | |
US20220253375A1 (en) | Systems and methods for device testing to avoid resource conflicts for a large number of test scenarios | |
Maragos et al. | In-the-field mitigation of process variability for improved FPGA performance | |
Djedidi et al. | Power profiling and monitoring in embedded systems: A comparative study and a novel methodology based on NARX neural networks | |
Nacif et al. | The Chip is Ready. Am I done? On-chip Verification using Assertion Processors. | |
US6973405B1 (en) | Programmable interactive verification agent | |
US20240168784A1 (en) | Providing integrated circuit functionality coverage indicators using state sequence detectors | |
CN103064013B (zh) | 一种基于故障模型的集成电路测试方法 | |
Caba et al. | Testing framework for on-board verification of HLS modules using grey-box technique and FPGA overlays | |
US9581643B1 (en) | Methods and circuits for testing partial circuit designs | |
Kafka et al. | FPGA-based fault simulator | |
Vanhauwaert et al. | A flexible SoPC-based fault injection environment | |
Tuzov et al. | BAFFI: a bit-accurate fault injector for improved dependability assessment of FPGA prototypes | |
JP2021534427A (ja) | デジタル回路試験及び分析モジュール、システム及びそれの方法 | |
Bernardeschi et al. | A tool for signal probability analysis of FPGA-based systems | |
Lin et al. | Speed binning with high-quality structural patterns from functional timing analysis (FTA) | |
US9608871B1 (en) | Intellectual property cores with traffic scenario data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |