首页> 中国专利> 片上系统(SoC)的系统级验证

片上系统(SoC)的系统级验证

摘要

公开了用于验证集成电路,尤其是由其构成的片上系统的改进的方法和结构。我们的方法——我们称为快速错误检测——硬件(QED‑H)——有利地快速检测和修复SoC硬件部件内的异常(漏洞)——并且特别地定制的不必是软件可编程的SoC硬件部件。进一步有利地,本公开的方法与现有的快速错误检测(QED)技术兼容,并且还可扩展至目标软件可编程部件。与现有方法强烈对比,本公开的方法表示新系统验证方法,其在软件和硬件部件中无缝且系统地建立验证检查,因而使整个SoC的所有数字部件的极快速错误检测和定位能够有利地产生生产率和上市时机收益。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-08-21

    授权

    授权

  • 2018-05-11

    实质审查的生效 IPC(主分类):G01R31/28 申请日:20160606

    实质审查的生效

  • 2018-03-27

    公开

    公开

说明书

相关申请的交叉引用

本申请要求2015年06月06日递交的美国临时申请序列号No.62172092的权益。

技术领域

本公开总体涉及集成电路,并且更特别地涉及用于片上系统的有效系统级验证的方法和结构。

背景技术

如本领域技术人员容易理解的,集成电路以及在其上构成的系统的功能性和普遍性已经以惊人的速度发展。因此,这种电路和系统在当代社会已经具有深远的影响。

考虑到其重要性,很欢迎将用于验证这些电路和系统的方法和结构加入到本领域。

发明内容

根据本公开的一个方面作出本领域的发展,涉及用于验证集成电路及特别地由其构成的片上系统的改进方法和结构。我们的根据本公开的方法——我们称为快速错误检测——硬件(QED-H)——有利地快速检测和修复SoC硬件部件内的异常(漏洞)——并且特别是定制的不必要的软件可编程的SoC硬件部件。进一步有利地,根据本公开的方法与现有的快速错误检测(QED)技术兼容,并且还可扩展至目标软件可编程部件。

更特别地,根据本公开的方法提供了数字硬件系统的系统级验证的计算机实施的方法,生成数字硬件系统的高级描述;将若干快速错误检测(QED)转换插入高级描述;由高级描述生成表示数字系统的操作的可执行软件程序;从包括QED转换的高级描述生成数字硬件系统;在处理器上执行可执行软件程序,其中一个或多个软件签名基于执行而生成;操作所生成的数字硬件系统,其中一个或多个硬件签名基于操作而生成;将软件签名与硬件签名进行比较,以及响应于比较,提供指示该比较的输出,其转而指示系统的正确操作。特别有利地,计算机实施的方法可用于片上系统(SoC)数字系统。进一步有利地,软件执行和硬件操作不需要同时进行或以锁定步进进行。最后,所验证的数字系统不需要其自身是软件可编程的。

与现有技术方法形成强烈对比的是,根据本公开的方法表示新系统验证方法,其在研发的所有阶段是可用的——包括硅前——在软件和硬件部件中无缝且系统地建立验证检查,因而对于整个SoC的所有数字部件来说能够进行极快速的错误检测和定位——有利地产生排错和所得到的系统的改进性能以及显著的生产力和上市时机增益。

附图说明

通过参考所附附图可以实现对于本公开更完整的理解,其中

图1显示了本公开的一个方面的、描述了示例性时间冗余QED-QH(TR-QH)执行的示意性图示;

图2(A)显示了本公开的一个方面的、描述了采用复制寄存器的TR-QH的示例性寄存器转换的示意性图示;

图2(B)显示了本公开的一个方面的、描述了采用具有变化检测器的寄存器的TR-QH的示例性寄存器转换的示意性图示;

图3显示了显示出利用TR-QH、针对基准JPEG进行错误检测相对于没有TR-QH的基线设计的错误检测的图示;

图4(A)-4(B)显示了针对例示计算的两个非常不同的调度的示意性图示,其中调度B是以不同执行次序来再执行调度A;

图5显示了本公开的一个方面的、通过QED-H转换来插入示例性签名提取部件的示意性图示;

图6显示了本公开的一个方面的、示例性QED-H缓存操作的示意性图示,其中实线对应于第一路径而虚线对应于第二路径;

图7、8和9显示了本公开的一个方面的QED-H方法的示意性流程图;

图10显示了描绘用于实施本公开的一个方面的方法的示例性计算机系统的框图。

具体实施方式

以下仅示出了本公开的原理。应当理解的是,本领域技术人员将会能够想到各种布置,其虽然在这里未明确地描述或显示,但仍然体现了本公开的原理并且包括在其精神和范围内。更特别地,虽然描述了许多特定细节,但是应当理解的是,可以在没有这些特定细节的情况下实施本公开的实施例,并且在其他实例中,已知的电路、结构和技术没有显示,是为了不会对本公开的理解产生模糊。

此外,这里所描述的所有示例和条件句主要是特别意在仅出于教示的目的,以有助于读者理解本公开的原理和发明人为了推进本领域而提供的概念,以及理解为在不限于这种特别描述的示例和条件。

此外,这里描述本公开的原理、方面和实施例的所有陈述及其特定示例意在包含其结构和功能的等价特征。此外,它意在于,无论什么结构,这种等价特征包括当前已知的等价特征以及将来研发的等价特征,即执行相同功能所研发的任意元件。

因此,例如,本领域技术人员应当理解的是,这里的图示表示体现了本公开的原理的示例性结构的概念视图。

此外,本领域技术人员应当理解的是,任意流程图、程序图、状态转换图、伪代码等表示了不同的进程,其可以实质上用计算机可读介质表示,并且由计算机或处理器执行,而不管这种计算机或处理器是否明确显示。

在本申请的权利要求中,描述为用于执行特定功能的装置的任意元件意在涵盖执行包括例如以下功能的任意方式:a)执行该功能的电路元件的组合或b)任何形式的软件,由此包括固件、微代码等,该软件与用于执行软件以实施该功能的适当电路相结合。该权利要求所定义的本发明存在以下事实:由各种所描述的装置提供的功能相互结合并且以权利要求所要求的形式一起出现。申请人因而将能够提供那些功能的任何装置视为与本文所示的是等价的。最后,除非这里特别明确指出,附图未按比例绘制。

因此,例如本领域技术人员应当理解的是,这里的图表示了体现本公开原理的示例性结构的概念视图。

术语

以下术语包括提供的定义,以帮助对本公开的进一步理解。

快速错误检测(QED)——涉及现有硅后验证测试转换成新的验证测试的减少错误检测延迟的技术。QED转换允许在错误检测延迟、覆盖和复杂度之间灵活地权衡,并且可以在有很小或没有改变硬件的情况下在软件中实施。

漏洞——计算机程序或系统中的错误、缺陷、故障或缺点,其引起或以其他方式有助于产生不正确的或意外的结果或以无计划的方式表现。

电气漏洞——仅仅是在特定操作条件(电压、频率、温度等)下显露自身,并且可以通过设计边缘化、同步问题、噪声等引起的漏洞类型。

片上系统(SoC)是将系统所有部件集成至单个芯片或集成的芯片包中/上的集成电路(IC)。其可以包含数字、模拟、混合信号和射频功能。SoC还可能指对单个集成电路上的系统的所有部件进行打包或以其他方式集成的技术。

签名是数字系统的操作实体或表示数字系统的软件程序的特征。

以下仅使出了本公开的原理。因而应当理解的是,本领域技术人员将能够想到体现了本公开的原理并且包括在其精神和范围内的各种配置,即使本文未明确描述或显示。更特别地,尽管描述了多个特定细节,应当理解的是,本公开的实施例可以在没有这些特定细节的情况下实施,并且在其他实例中,为了不会对本公开的理解产生模糊,已知的电路、结构和技术未显示。

通过一些额外的背景,我们开始注意到在集成电路和特定片上系统(SoC)设计中的改进常常伴随着复杂度的增加。在没有管理和/或缓解这种复杂度及验证正确操作的可伸缩方式的情况下,将来的系统对于逻辑和电气漏洞来说是脆弱的,其可能危害到正确的电路和/或系统操作。

不幸的是,单独的传统现有技术的硅前验证技术对于验证当代片上系统的正确操作来说是不充分的。本领域技术人员应当理解的是,这种传统技术一般来说太慢而且不能充分处理电气漏洞。因此,本领域技术人员对于系统级验证(即,仿真)和硅后验证(PSV)技术来说增加了依赖。

目前,新技术——快速错误检测(QED)——对于SoC中可编程部件的硅后验证来说已经显示出高度的有效性。在操作上,QED转换软件程序,以使得软件可编程部件中的错误可以快速检测到。不幸的是,QED不是常常为被包括成SoC的部件的特定硬件结构工作,尤其——诸如高分辨率视频加速器和功率管理电路。

相应地,本公开的方面针对我们称之为QED-H(硬件的QED)的新系统验证方法的集合,其有利地检测和修理SoC硬件部件内的错误——包括不是软件可编程的部件。进一步的优势在于,QED–H与现有的QED技术兼容并且因此也可以扩展至软件可编程部件。

有利地,QED-H利用了高级合成(HLS)的快速发展。通过HLS优化,QED-H转换是自然而然地且无缝插入到硬件设计的高级描述中,并且相应的RTL设计自动生成,满足我们的PSV目标,同时有效控制区域/功率/性能占用最小化。同时,我们获得了HLS的签名益处:沿途显著地改善设计产率。重要的是,QED-H可以应用于任何数字系统且可以开始于包括在C++、C#、JAVA、VERILOG等中的高级描述。甚至进一步地,即使在那些输入为RTL代码或用诸如Verilog或VHDL语言写的实例中,QED-H可应用于硅前验证。

在这一点上,值得注意的是包括以下的QED-H的几个特征:

超短错误检测延迟

错误检测延迟是对由漏洞导致到错误的时间到其被检测到的时间所逝去的时间的测量。因为潜在的“影响锥”和错误的潜在源的数量一般随着错误检测延迟的增加而以指数方式增加,对于有效减少与漏洞定位相关联的时间和精力来说,低错误检测延迟是必要的。本领域技术人员容易理解的是,错误检测延迟比几百个时钟周期还要长的漏洞说明,定位是一个高度挑战,因为追踪如此长的循环历史是极其困难的。如我们现在注意的且即将随后描述的——针对SoC中特定硬件部件——通常在没有采用QED-H的情况下会经历幅度高达数百万个时钟循环的错误检测延迟,而在采用QED-H时会经历<100个时钟循环的中值检测延迟。

最小侵入

QED-H有利地确保了漏洞在引入QED-H之后继续检测到。

高度多样性

QED-H通过再利用现有硬件来检测由设计漏洞引起的错误,从而有利地利用隐式冗余。在隐式冗余校验路径之间的较高程度的“多样性”改进了漏洞覆盖以及由漏洞引起的错误的快速检测。

低区域/延迟占用

在QED-H确实征用特定区域和/或性能代价的同时,有利地,QED-H在这种代价中是相当地适度的。更特别地,QED-H相对于制造之后的原始设计征用了少于3%的区域代价和可以忽略的性能占用。

为了配备QED-H及高级综合,我们采用两种补充方式,我们称为:1)时间冗余QED-H(TR-QH)和2)混合QED-H(H-QH)。如我们将显示的,每一个方法提供了关于特定特征的权衡,特定特征诸如是错误检测延迟、侵入性、多样性和占用。

更特别地,TR-QH通过冗余执行包括校验的操作序列和比较该执行来检测错误。我们注意到,因为硬件再用于所有执行,TR-QH不是模块化冗余技术。有利地,TR-QH展示了低检测延迟、适度侵入性、适度高度多样性及适度占用。

通过与现有片上处理器上的加速器具有相同的功能性的高级软件仿真,H-QH利用加速器的冗余执行来检测错误。H-QH具有适度的检测延迟、低侵入性、高度多样性和非常低的占用。

在概括我们的方法目的时,我们首先注意到,区域/功率/性能占用的控制针对我们的方法来说是一个优先考虑事项。第二,我们还对快速检测漏洞引起的错误(即,低错误检测延迟)优先化,如本领域技术人员容易理解的——对于有效漏洞定位是必要的。第三,我们通过最小化侵入性和最大化多样性对高的错误覆盖优先化。有利地,这些优先化的对象通过我们的新的硅后校验(PSV)来实现——中心的高级综合(HLS)引擎以及特别设计的辅助逻辑和存储部件。如我们观察到的,在QED-H确实引入一些测试执行占用(如,PSV期间的冗余执行时间)时,应当注意的是在QED-H一般执行系统验证时,是排错时间而不是测试执行时间,在总时间“代价”中占支配地位。因此,如果错误检测延迟大大减小,一些测试执行时间占用是可以容忍的。

时间冗余QED-H

根据本公开的一个方面,时间冗余QED-H(TR-QH)是修改电路的状态机的转换,以再执行代码的每一个单个入口点、单个出口点区域(如,基本块)。可操作地,这种转换插入使用C/C++/SystemC或其他适当语言的系统设计的高级描述。然后,这种转换的设计的高级描述应用于HLS,以自动产生寄存器转换逻辑(RTL)。

现在转至图1,显示了描述概念性TR-QH执行的示意性图示。如可以理解的是,根据本公开,每一个区域执行转换为步骤集合,如图1中示意性示出的。更特别地,可以观察到的是,对于诸如所显示的(ADD(添加)、STORE(储存)、MUL、SUB、LOAD(加载)、LOAD(加载)、BRANCH(分支))操作集合,出现的执行包括在首次通过之前保存状态、保存首次通过结果、在二次通过之前倒回至开始并恢复所保存的状态、保存二次通过结果及比较首次通过和二次通过的结果。

显著地,如果纯粹地实施,那么在图1中概述的进程可以展示高的区域和性能占用。如本领域技术人员可以容易地理解的,针对TR-QH的HLS的一个目标是具有非常低的区域和性能占用的重大PSV益处。相应地,我们已经针对以上步骤认定获得令人满意的TR-QH实施的两个需求,即:

TR-QH(1):表示至区域的输入变量,其中这些输入在该区域进行修改,变量被保存并恢复以进行再执行。这表示在时间冗余执行中的写入前读出损坏。

TR-QH(2):表示区域的输出的变量,被保存在首次通过中以用于与二次通过进行比较。

现在转至图2(A)和2(B),以示意性形式显示了本公开的一个方面的寄存器转换的两个示例性技术。更特别地,图2(A)显示了复制寄存器技术,而图2(B)显示了具有变化检测器技术的寄存器。

现在参考图2(A),可以观察到的是,这里根据本公开所描述的技术是寄存器副本的一种,即使用第一寄存器(即,图2(A)中的首次通过中的寄存器a)和第二寄存器(即,图2(A)中的二次通过中的寄存器a’)。在完成之后,两次通过的结果通过连接至寄存器输出端的专用比较器的效应进行比较。

如可以理解的,“保存”是利用第二寄存器在进入区域时执行的,而该第二寄存器在此之前验证为匹配第一寄存器。“恢复”仅仅是切换多路复用器以从第二保存寄存器进行读取的事件。如果寄存器在写入一区域之前未被读取,则TR-QH(1)不再采用。

显著地,我们可以将复制的寄存器重叠至具有低区域改变检测器的一个寄存器,如图2(B)所示。结果是检测原始寄存器中的变化的低占用电路具有低混叠可能性。我们使TR-QH(2)满足于当前寄存器值与下一个值的比较链,其从首次通过的写入延伸至二次通过的相同写入。如果每一个比较结果是“相等”,则我们过渡地证明第一和第二写入匹配。有利地,这些特定的PSV定制的硬件随后无缝地插入至我们的HLS引擎,从而产生针对区域/功率/性能和PSV进行优化的硬件——因而得到显著的生产率和上市时间收益。

初步结果

为了根据错误覆盖和检测延迟来评估TR-QH的质量,我们已经基于低级虚拟机(LLVM)编译器框架、通过高级综合(HLS)流来实施。我们选择基础块作为区域粒度,使用改变检测寄存器和复制寄存器以用于所有区域的寄存器输出,以及使用插入存储控制器的QED-H缓存(稍后介绍)来校验存储器输出。在执行每一个HLS核时,我们通过将短暂的错误注入随机选择的随机循环的实况转播触发器来评估覆盖。JPEG基准的结果在图3中图形化显示。

如参考图3可以理解的是,TR-QH通过五级量级来改善错误检测延迟(在10个时钟周期内92.4%的错误,而基线会耗费成千上万或数百万个循环来检测错误)。并且,TR-QH导致未检测错误少12倍(2.2%相对于基线的25.4%未检测错误)。由于寄存器副本,针对这个设计的QED-H区域占用是3.1%,并且QED-H缓存和时钟周期占用是4.4%。

TR-QH的多样性调度和绑定

对于增加的多样性,我们可以有利地修改二次通过的调度,从而不仅是在不同时间执行双通过,而且在二次通过的一些操作在不同循环中执行,而不是如图4(A)和4(B)中所示的首次通过。

参考图4(A)和4(B),显示了示例性计算的两个不同调度。更特别地,图4(A)描述了调度A,而图4(B)描述了调度B。如本文所描述的,调度B是调度A的再执行,但是用不同的执行次序。

在这一点上,应当注意的是,我们可以通过针对在首次和二次通过中的一些操作而使用不同的硬件资源来增加硬件多样性。这里额外的硬件多样性伴随着一些增加的侵入代价以及一些用于更广泛/更多的多路复用器(MUX)的区域代价。

进一步注意的是,增加检查原始的绑定技术方案的绑定知晓再调度器及构造再利用尽可能多的原始硬件资源的可替换调度,即:最大化多样性的每秒浮点运算、FU和接线。

混合QED-H

混合QED-H(H-QH)包括两个部分:

将通过采用加速器规范的不同HLS流、用高级描述语言自动生成加速器。然而,所生成的加速器不包含特定硬件部件,诸如之前参考图2所描述的。相对于PSV的唯一需求为这种新的HLS引擎以固定间隔将加速器修改为输出状态和数据历史签名。

加速器的相同高级描述将编译为软件,并且在已经在SoC中存在的处理器中执行,其会产生相同的签名集合并且将其与硬件输出比较以识别第一差异。

H-QH转换

现在参考图5,显示了本公开的一个方面的、通过QED-H转换所插入的签名提取部件的示意图。可操作地,我们将每一个“非暂态”寄存器连接至一个或多个MUX树,从而没有两个寄存器(动态)在它们以相同状态被写入时,连接至相同的树。因此MUX树的数量必须至少是在某一状态出现的同步非暂态寄存器写入的最大数量。有利地,树将数据比特的数量减少为很少的数量(如,128比特),其然后可以与控制状态寄存器一起传至线性反馈移位寄存器(LFSR),以用于进一步减小。

然后,包含在LFSR内的签名以固定间隔写入存储的记录中。我们将以这种方式使用LLVM中间表达(LLVM-IR)。LLVM架构与即时(JIT)编译引擎一起出现,其使LLVM-IR能够实现CPU原始速度执行,得到硬件的快速且高保真度仿真,因为每一个LLVM-IR指令密切地对应于硬件寄存器和在加速器模块中执行的功能单元。

检测由漏洞引起的存储错误

对于TR-QH和H-QH二者,检测漏洞引起的存储错误的一种方式是通过由核使用的概念复制的存储器。如本领域技术人员可以容易想到的,存储器的物理复制会引发不可接受的区域占用,所以实际上,我们通过将分配给加速器的存储空间划分为两个同等大小的部分来实施复制。一个存储器部分用于一种执行,以及另一存储器部分用于冗余(或第二)执行。有利地,我们采用双管齐下的方法来检测存储错误:利用加载和存储校验,检查存储器的输入和输出的数据,以及利用主动擦写来检查隐性的存储受损。

对于TR-QH和H-QH二者,我们认为即将作为区域输出的储存需要进行检查。在TR-QH中,我们修改存储控制器,以添加对校验操作的支持,校验操作通过发布加载操作并且与输入数据比较来验证第二冗余写入匹配第一冗余写入。在H-QH中,我们在签名计算中包括每一个储存地址和数据。

然而,不幸的是,这种校验对于检查存储控制器或存储块本身的错误来说是不够的。例如,破坏的存储块可以在发布储存的时候“击倒”邻近的存储位置。等待从这种存储位置加载以检查错误可能会耗时太久,导致高错误检查延迟。

为了克服这个问题,我们实施了存储筛选器,通过适时地执行在原始和复制部分从同一个位置加载及校验他们是否匹配,来执行主动加载和校验(PLC)。PLC在高存储通信中可能未有效工作,这意味着我们可能需要停止加速器,以便获得合理的错误检测延迟。我们将探索这种侵入延迟权衡。

在特定情况下,没有足够存储器以供划分存储空间。例如,加速器可能具有有限的本地存储缓存。为了避免针对TR-QH的存储缓存的物理复制,我们可以使用QED-H缓存,其操作在图6中示出。

参考图6,我们注意到,特定传输开始于读取操作而其他开始于写入操作——如所指示的。此外,实线对应于首次通过操作而虚线对应于二次通过操作。

在首次通过中,读取和写入通常直接进入存储器,有一个例外:满足TR-QH(1),加载并然后存储在区域中的存储位置需要在储存发生之前保存(即,为了防止WAR损坏)。这些保存的值插入至QED-H缓存,或者适时地在储存之前发生加载时(如通过地址别名分析所确定的),或者在加载之后发生储存时通过发布旧值的同时读取(图6)。在二次执行通过,我们从QED-H缓存加载重写的存储位置(通过首次通过重写)的初始值。在发布二次通过写入时,我们相反地加载存储位置,并比较所加载的值与待写入的数据,以满足TR-QH(2)。同时,我们告诉缓存对于这个位置驱逐QED-H缓存进入,以使得从随后加载的视角来看,写入已经产生影响。

在QED-H缓存满足TR-QH需求时,没有解决隐性存储损坏问题。在仍能够执行PLC时,避免复制存储是感兴趣的问题。一个解决方案涉及划分存储并且对每一个部分保持签名(如,所有数据值的XOR)。对于每一次存储写入,旧值是XOR的输出且新值是XOR的输入。进一步并发事件是,一些加速器设计涉及不同的存储块集合及不同的字大小和比特掩码能力,这对划分造成了挑战。

通过FPGA仿真加速延迟和覆盖评估

评估错误检测方法的覆盖涉及随机采样的(适当建模的)错误注入空间及足够的样本,以建立关于覆盖和检测延迟实际所在之处的高精度。这可能涉及几百或几千次错误注入测试,在通过仿真来完成的情况下,其可能耗费好几天。因而为了加速评估QED-H,我们研发了自动评估框架,该自动评估框架综合了来自C源的电路,应用了QED-H转换,并在FPGA上评估了电路和错误注入。为了启动错误注入,我们执行错误注入使能转换。该转换产生了使其能够用于多次随机选择错误注入的网表,然后其应用于具有测试驱动器的商业可购得的系统(Altera的Quartus),其使用Altera的源探针宏功能来与主系统谈话。测试驱动器将握手协议与主系统一起使用,这使每一次测试能够在不用重编程序的情况下快速连续地运行。例如,JPEG基准电路的10,000次测试(其每一次测试涉及超过百万次执行循环)可以在我们的FPGA仿真平台上运行大约一小时。

图7-10显示了描述本公开的方法的流程图形式的步骤。如从这一系列附图可以观察的,当在数字计算机或其他可编程设备上实施时,若干步骤可以有利地根据本公开的方面并行进行,如在图11中示意性示出的。更特别地,应当注意的是,偶数的块标识符和奇数的块标识符可以在这样实施时并行进行。

同时参考图7-10,应当注意的是,本公开的示例性进程开始于块701并进行至块703,其中源代码编译为中间指令。接下来,变量生命周期在块703进行分析,待追踪的变量在块707进行选择,追踪端口的初始集合在块709创建,以及追踪所有所追踪的变量的可行调度的检索在块711进行。如果这种调度在块713发现,则控制直接离开表单至#1,则更多追踪端口在块715添加且控制返回至块711。

与块703-715的操作并行,在块702阵列变量集合用随机数据填补。未初始化变量随机地在块704进行初始化,并且追踪变量在块706进行加载。地址转换初始化在块708插入,并且控制直接离开表单至#2。

继续参考图8进行我们的整个过程的讨论,应当观察到#1和#2二者并行进行。#1在块801开始将追踪的变量映射至追踪端口,然后在块803将追踪的变量信号连接至追踪端口。硬件签名生成器在块805添加,并且硬件规范在块807生成。硬件在块809制造并且然后在块811执行。

参考图8的#2,签名生成指令在块802插入,指令在块804进行优化,软件可执行在块806生成并且然后在块808执行。

在块810进行在块811(硬件)和808(软件)生成的硬件与软件签名之间的比较,并且控制直接离开表单至#3。

参考图9的#3,如果在块902签名匹配,则验证成功在块904报告给用户。在块902如果签名未匹配中,那么每一个未匹配的循环数在块901确定,每一个错误循环的控制状态在块903确定,在块905查找在每一个控制状态中追踪的变量,在块907变量和控制状态映射至源代码,以及在块909报告关于每一个错误的信息。

在这一点,我们注意到,本公开的方法、结构和技术将为硅前验证工作,即使在输入是用诸如Verilog代码语言写入的RTL代码时。在这种情况下,比较硬件路径与软件路径之间的签名不是完全可用的。更特别地,在RTL是输入时,两个路径都描述相同硬件功能,然而两个路径可以具有不同的执行次序和不同的所利用资源。重要的是,两个路径源于相同的RTL代码。

图10显示了适用于实施本公开的一个方面的方法和系统的示例性计算机系统1000。如可以直接理解的是,这种计算机系统可以集成至诸如路由器的另一系统,并且可以经由不连续的元件或一个或多个集成的部件来实施。计算机系统可以包括例如运行若干操作系统中的任意操作系统的计算机。以上所描述的本公开的方法可以在计算机系统1000上实施为所储存的程序控制指令。

计算机系统1000包括处理器1010、存储器1020、存储设备1030和输入/输出结构1040。一个或多个输入/输出设备可以包括显示器1045。一个或多个总线1050一般互联部件1010、1020、1030和1040。处理器1010可以是单核或多核。此外,系统可以包括加速器等,其进一步包括片上系统。

处理器1010执行指令,其中本公开的实施例可以包括附图的一者或多者中所描述的步骤。该指令可以储存在存储器1020或存储设备1030中。数据和/或信息可以使用一个或多个输入/输出设备来接收和输出。

存储器1020可以储存数据并可以是计算机可读介质,诸如易失性或非易失性存储器。存储设备1030可以针对系统1000提供例如包括之前所描述的方法的存储。在各个方面,存储设备1030可以是闪存设备、磁盘驱动、光盘设备或者采用磁、光或其他记录技术的磁带设备。

输入/输出结构1040可以提供用于系统1000的输入/输出操作。

在这一点,本领域技术人员容易理解的是,虽然本公开的方法、技术和结构已经参考特定实现方式和/或实施例进行描述,但是本领域技术人员应当意识到,本公开不限于此。相应地,本公开的范围将仅通过所附权利要求进行限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号