CN101952827A - 用于执行硬件仿真和验证解决方案的方法和装置 - Google Patents
用于执行硬件仿真和验证解决方案的方法和装置 Download PDFInfo
- Publication number
- CN101952827A CN101952827A CN2009800002447A CN200980000244A CN101952827A CN 101952827 A CN101952827 A CN 101952827A CN 2009800002447 A CN2009800002447 A CN 2009800002447A CN 200980000244 A CN200980000244 A CN 200980000244A CN 101952827 A CN101952827 A CN 101952827A
- Authority
- CN
- China
- Prior art keywords
- processor
- simulation kernel
- dut
- change data
- simulation
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design 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)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明的一个实施方式提供用以在多处理器系统上执行硬件仿真和验证解决方案的系统和技术。硬件仿真和验证解决方案可以分割成不同模块,这些模块包括:用以对信号值的变更进行仿真的仿真内核;用以将信号值的变更存储在计算机可读存储介质上的值变更转储模块;用以检查功能的功能覆盖模块;用以检查信号跳转的跳转覆盖模块;用以检查复杂行为的断言引擎;以及用以生成测试场景的测试台模块。本发明的实施方式可以在不同处理器上执行不同模块,从而改进性能。
Description
技术领域
本发明总体上涉及硬件设计和验证。更具体地,本发明涉及用于执行硬件仿真和验证解决方案的方法和装置。
背景技术
设计和验证工具的发展使计算技术的迅速发展成为可能,因为没有这样的工具将几乎不可能设计和验证在当今的计算设备中司空见惯的复杂集成电路。由于集成电路的尺寸和复杂性迅速地增加,非常需要找到用以改进硬件仿真和验证解决方案的性能的方法和装置。
遗憾的是,用于改进软件性能的传统技术并非总是有效的。例如,从头开始改写软件使得其可以并行执行是不切实际的,这是由改写这种复杂软件片段的高昂成本决定的。并行化编译器也可能无法改进性能,因为即使最精密的并行化编译器也常常无法在这种复杂的软件片段中利用并行化机会。另外,由于Amdahl定律,仅仅对软件的小部分进行并行化无法明显改进性能,并且如果不同的片段需要大量同步,则将软件分割成不同软件片段可能降低性能。
发明内容
本发明的一个实施方式提供用以在多处理器系统上执行硬件仿真和验证解决方案的系统和技术。具体而言,一个实施方式将硬件仿真和验证解决方案分割成不同模块,使这些模块可以并行执行,而无需在模块之间进行大量通信或者同步。
硬件仿真和验证解决方案可以分割为:用以对信号值的变更进行仿真的仿真内核;用以将信号值的变更存储在计算机可读存储介质上的值变更转储(VCD)模块;用以检查功能的功能覆盖模块;用以检查信号跳转的跳转覆盖模块;用以检查复杂行为的断言引擎;以及用以生成测试场景的测试台模块。本发明的实施方式可以在不同处理器上执行不同模块,从而改进性能。
附图说明
图1示出了根据本发明实施方式的集成电路的设计和制作中的各步骤。
图2示出了根据本发明实施方式的用于仿真和验证解决方案的工作流。
图3示出了根据本发明实施方式的多处理器系统。
图4给出了示出根据本发明实施方式的时隙中的不同事件区域的图示。
图5示出了根据本发明实施方式的可以用来执行仿真和验证系统的计算机系统。
图6给出了示出根据本发明实施方式的用于在多个处理器上执行包括仿真内核和值变更转储模块的硬件仿真和验证解决方案的过程的流程图。
图7给出了示出根据本发明实施方式的用于在多个处理器上执行包括仿真内核和功能覆盖模块的硬件解决方案和验证解决方案的过程的流程图。
图8给出了示出根据本发明实施方式的用于在多个处理器上执行包括仿真内核和跳转覆盖模块的硬件仿真和验证解决方案的过程的流程图。
图9给出了示出根据本发明实施方式的用于在多个处理器上执行包括仿真内核和断言引擎的硬件仿真和验证解决方案的过程的流程图。
图10给出了示出根据本发明一个实施方式的用于在多个处理器上执行包括仿真内核和测试台模块的硬件仿真和验证解决方案的过程的流程图。
具体实施方式
图1示出了根据本发明实施方式的在集成电路的设计和制作中的各个阶段。
该过程通常开始于产品构思(步骤100),它是使用EDA软件设计工艺来实现的(步骤110)。一旦设计完成,通常对该设计进行流片(事件140),并且对其进行制造过程(步骤150)以及封装和组装过程(步骤160),以产生成品芯片(结果170)。
EDA软件设计过程(步骤110)包括步骤112-130,下文仅出于示例目的来描述这些步骤,并且并非意在限制本发明。例如,实际集成电路设计可能要求设计者按照不同于以下顺序的顺序来执行设计步骤。
系统设计(步骤112):在这一步骤中,设计者描述他们想要实现的功能。设计者还可以执行假设(what-if)规划以完善功能、检查成本等。可以在这一阶段进行硬件-软件架构划分。可以在这一步骤使用的来自Synopsys公司的示例性EDA软件产品包括ModelArchitect、System Studio和产品、
逻辑设计和功能验证(步骤114):在这一阶段,编写用于系统中模块的VHDL或者Verilog代码,并且检查设计的功能准确性。具体而言,检查设计以保证它产生正确输出。可以在这一步骤使用的来自Synopsys公司的示例性EDA软件产品包括 MagellanTM、ESP和产品。
综合与测试设计(步骤116):在此将VHDL/Verilog转译成网表。可以针对目标技术优化网表。此外,可以设计和实现测试以检查成品芯片。可以在这一步骤使用的来自Synopsys公司的示例性EDA软件产品包括DesignPhysicalTestCompiler、Power CompilerTM、FPGA Compiler、和产品。
设计规划(步骤120):这里,构造和分析芯片的总体布图规划以用于定时和高层布线。可以在这一步骤使用的来自Synopsys公司的示例性EDA软件产品包括AstroTM和IC Compiler产品。
物理实现(步骤122):在这一步骤进行布置(电路元件的定位)和布线(电路元件的连接)。可以在这一步骤使用的来自Synopsys公司的示例性EDA软件产品包括AstroTM和IC Compiler产品。
分析和抽象(步骤124):在这一阶段,在晶体管级验证电路功能,这继而允许假设完善。可以在这一步骤使用的来自Synopsys公司的示例EDA软件产品包括AstroRailTM、PrimeRail、和Star-RCXTTM产品。
物理验证(步骤126):在这一步骤中,检查设计以保证制造、电气问题、平版印刷问题和电路的正确性。可以在这一步骤使用的来自Synopsys公司的示例EDA软件产品包括HerculesTM产品。
解析度增强(步骤128):这一步骤包括对布局的几何操控,从而改进设计的可制造性。可以在这一步骤使用的来自Synopsys公司的示例性EDA软件产品包括Proteus/Progen、ProteusAF和PSMGen产品。
可以在一个或者多个上述步骤期间使用本发明的实施方式。具体而言,可以在逻辑设计和功能验证步骤114期间使用本发明的一个实施方式。
仿真和验证解决方案
HDL(硬件描述语言)的引入变革了硬件验证,并且到20世纪90年代早期,基于HDL的仿真器已经成为硬件设计中的重要工具。自从引入之后,HDL仿真器的性能持续改进,并且验证技术进入了开发大量“插入式(bolt-on)”工具以改进验证能力的阶段。
然而,插入式工具方法降低了仿真和验证解决方案的整体性能,因为其导致一种成本高昂且零碎的解决方案,该解决方案是多个方法和销售商的混杂。每个插入式工具独立地编译或者解译其自己的语言,这引起了分析或者编译阶段期间的低效率,并且还会由于设计中对某些硬件构造的解释差异而导致工具之间的不一致。随着半导体集成密度持续迅速增长,很明显,需要一种用于硬件仿真和验证的统一全面解决方案。针对这一需要,Synopsys引入了它是一种全面的硬件仿真和验证解决方案。
图2示出了根据本发明实施方式的用于仿真和验证解决方案的工作流。
该过程通常开始于创建对被测设计(DUT)进行描述的源文件204(步骤202)。源文件204可以使用标准化非专用的硬件描述语言来描述DUT。
接下来,使用编译器来编译源文件以获得仿真可执行文件206(步骤204)。仿真可执行文件206可以是在执行时对DUT的行为进行仿真的软件应用。仿真可执行文件还可以包括用以在仿真期间执行DUT验证的指令。例如,可以这样来配置编译器,使其生成用于在仿真期间检查DUT不同部分的功能的指令。类似地,可以这样来配置编译器,使其生成检查用户指定的一组信号在仿真期间跳转了多少次的指令。
继而可以执行仿真可执行文件,以便对DUT进行仿真、执行交互式调试、以及生成仿真转储文件210以用于后续分析(步骤208)。仿真转储文件210通常包含关于信号值在仿真期间如何改变的信息。本发明的一个实施方式使用压缩技术以减小仿真转储文件的大小。接下来,可以分析仿真转储文件(步骤212)以调试DUT。
图2所示工作流用于说明目的,并非旨在于限制本发明的范围。例如,解释型仿真器通常在其工作流中不需要编译步骤。然而,与基于解释器的方式相比,基于编译器的方式通常能够更快地进行仿真并且使用更少的存储器,这是因为基于编译器的方式避免了基于解释器方式的额外层和低效率。另外,可以使用增量式编译来充分降低编译源文件所需的时间,其中增量式编译将复用已编译的模块,除非从上次编译起更新了相关联的源文件。
虽然全面的仿真和验证解决方案代表了相对于较早的插入式方式而言的显著改进,但是由于集成电路的尺寸和复杂性迅速地增加,仍然需要找到用以改进硬件仿真和验证解决方案的性能的方法和装置。
直至最近,微处理器销售商已经能够通过提高时钟速度来提高性能。然而,随着半导体密度持续增加,提高时钟速度越发困难,这是由诸如散热和同步的物理限制造成的。因此,计算机业正在探索用于提高应用性能的其它途径,例如并行处理。具体而言,微处理器销售商已经引入在单个芯片中包括多个处理器的多核处理器。
微处理器系统
图3示出了根据本发明实施方式的多处理器系统。
多处理器系统可以包括可使用总线或者交换器来耦合的多个处理器。处理器通常可以是能够执行指令从而使电路对存储于计算机可读存储介质中的数据进行操作的任何电路。例如,微处理器系统300包括使用总线320耦合的处理器302、304和310。
处理器可以包括一个或者多个核,其中每个核实质上是处理器,也即,其是能够执行指令的电路。例如,处理器302包括一个核,处理器304包括两个核(核306和308),而处理器310包括四个核(核312、314、316和318)。下文可互换地使用术语“处理器”和“核”。
除了具有一个或者多个核之外,处理器可以包括一级或者多级高速缓存。例如,处理器302可以使用单级高速缓存,而处理器304使用两级高速缓存。具体而言,处理器304中的每个核具有其自己的L1(1级)高速缓存,并且这些核共享L2(2级)高速缓存。处理器可以包括分离的指令高速缓存和数据高速缓存,或者可以包括存储指令和数据的单个高速缓存。
可以使用多种技术来实现处理器之间的通信。在共享存储器架构中,多个处理器可以访问相同地址空间。因此,第一处理器可以在共享存储器位置存储数据,而第二处理器可以从该共享存储器位置读取该数据。在其它类型的架构中,处理器可以通过总线或者交换器来发送消息或者分组从而彼此通信。例如,第一处理器可以在分组中存储数据并且将分组发送到第二处理器,该第二处理器继而可以使用该数据以进行进一步处理。
存在用于为多处理器系统设计软件的多种技术。可以通过并发编程语言来编写应用,其中并发编程语言允许应用开发者显式指定哪些步骤要并行执行。然而,由于改写大型软件应用所关联的高昂成本,这一选项常常不切实际。另一选项是使用并行化编译器,其可以自动检测可并行执行的指令序列。然而,即使最精密的并行化编译器也常常无法在复杂的软件应用中利用并行化机会。
又一选项是将软件应用分割成不同组件或者模块,这些部件或者模块可以并行执行而无需在模块之间进行大量通信。应用级分割可能颇具挑战性,因为这要求软件开发者具有对软件应用的内部工作的深入理解。即使在软件开发者获得深入理解之后,开发者仍然需要找到一种用来分割软件使得并行执行它们将会改进性能的方式。具体而言,如果将软件分割为在其之间需要大量同步的组件,则可能由于通信瓶颈而实际上降低了性能。此外,分割解决方案必须相当易于实施,也即,其应当成本有效地修改顺序化软件代码以使其可以在多处理器系统上执行。
本发明的实施方式是基于对如下问题创新的深入思考,即如何以用成本有效的方式将硬件仿真和验证解决方案(该解决方案是很复杂的软件片段)分割成不同模块,使得这些模块可以并行执行而无需在模块之间进行大量同步或者通信。
仿真内核
仿真内核通常是仿真和验证解决方案的一部分,除其它任务之外,仿真内核调度事件队列中的仿真事件、推进仿真时间、并且随着仿真时间进展来处理所调度的事件。注意,这些任务并非意在穷尽或是将仿真内核限于所公开的任务。在一个实施方式中,仿真内核的部分可以存储于软件库中。在编译期间,系统可以将该库与其它代码进行链接以创建仿真内核。
仿真内核可以显露可以用来安装回调函数的回调接口。当关联事件发生时或者当仿真处于时隙中的特定事件区域中时,可以调用回调函数。
在一个实施方式中,系统可以在单个处理器上执行仿真内核。在这一实施方式中,整个DUT中的信号值取决于在处理器上执行的仿真内核。在另一实施方式中,可以在不同处理器上对DUT的不同部分进行仿真。注意,这一实施方式可能在不同处理器之间需要大量通信和同步,因为DUT一部分中的信号变更可能影响DUT另一部分中的信号值。
图4给出了示出根据本发明一个实施方式的时隙中的不同事件区域的图示。
时隙可以划分成一组有序区域,并且每个区域可以用于处理某些类型的仿真事件。将时隙划分成区域可以保证:与特定区域相关联的一组仿真事件确保在与另一区域相关联的另一组事件之前(或者之后)被处理。然而,可以不通过HDL的语义来指定在任何给定区域中执行事件的顺序。备选地,HDL可以包括允许用户指定区域内的事件顺序的构造。
在一个实施方式中,时隙可以包括提前(preponed)区域402、活跃区域404、不活跃区域406、NBA(无阻分配)区域408、观测区域410、反应区域412和推迟(postponed)区域414。提前区域402出现在针对当前时隙对信号值的变更进行仿真之前。因此,提前区域402可以用来安装以下回调函数,该回调函数需要在变量改变之前并且在针对当前时隙执行过程之前访问仿真数据。提前区域402还可以用来对稳态数据进行采样。活跃区域404、不活跃区域406、NBA区域408、观测区域410和反应区域412称为迭代区域。推迟区域414出现在已经针对当前时隙对信号值的所有变更进行仿真之后。因此,推迟区域414可以用来安装需要以下回调函数,该回调函数在所有变量已经变更状态之后并且在已经针对当前时隙而执行了所有过程之后访问仿真数据。
DUT的描述通常包括对DUT的部分(例如,组件或者电路)的功能进行描述的模块。活跃区域404用来通过执行DUT描述中的模块来确定信号值。不活跃区域406用来执行由于竞态条件(racecondition)而无法在活跃区域中执行的任何HDL代码。如果按照某些编码原则来编写HDL代码,则有可能可以消除对不活跃区域406的需要。
NBA区域408可以用来高效地处置仿真竞态条件。具体而言,对NBA区域408中事件的处理是在已经传播了所有设计时钟信号并且时钟触发的过程已经执行之后、但是在仿真时间推进之前。观测区域410是可以为不变断言赋值的区域,并且这一区域在NBA区域408之后,因为NBA区域408中的无阻断言可能变更变量值。观测区域410还是可以为钟控断言赋值的最后区域。
测试台代码用来生成用于DUT的刺激,以及检查结果以验证设计是否符合规范。反应区域412可以用来执行包括通过/失败的断言语句在内的测试台代码。
值变更转储
仿真和验证解决方案常常将信号值变更转储在文件中,以供后续分析。例如,在图2中所示工作流中,系统生成仿真转储文件210以进行后续分析。由于信号值变更的数目可能很大,所以一些仿真和验证解决方案利用压缩技术来减少转储文件的大小。遗憾的是,压缩值变更数据可能需要大量计算,这可能降低仿真性能。
注意,可以独立于仿真本身来执行压缩,因为压缩值变更数据并不改变DUT中的信号状态。本发明的一个实施方式利用这一认识来并行地执行仿真内核以及对值变更数据的压缩。具体而言,回调函数可以安装于仿真内核中,以收集信号值变更以及将值变更数据存储在共享存储器中。接下来,可以在另一处理器上执行值变更转储模块,以压缩值变更数据并且存储已压缩数据以供后续分析。
功能覆盖
功能覆盖可以用来测量验证工作的进度。在一种方式中,系统可以使用功能覆盖模型来限定如何测量验证工作的进度。功能覆盖模型通常包括功能覆盖对象,其表示满足验证计划的条件。
在一种带约束的随机测试方法中,可以利用功能覆盖提供刺激。可以测量随机刺激以确定是否所有重要输入条件都出现在了测试组中以及设计中。可以针对功能覆盖模型中指定的所有验证结果来收集功能覆盖,并且可以基于测试数据来确定功能覆盖度量。功能覆盖度量可以帮助工程师确定需要什么样的附加测试(如果需要),这些附加测试是随机的或者可能是定向的。功能覆盖对象可以用来确定功能覆盖度量,其可以指示验证工作的进度。
在一个实施方式中,可以通过允许用户指定行为的语言来描述功能覆盖模型,并且功能覆盖模块可以记录行为出现的次数。具体而言,覆盖模型可以包括一组覆盖群组,其中每个覆盖群组可以包括采样事件和覆盖表达式。采样事件通常可以是任何仿真事件,例如信号或者变量变更。覆盖表达式可以指定所采样变量的感兴趣值、非法值和忽略的值。感兴趣值可以用来指定希望的行为,非法值可以用来指定标识DUT中的错误,而忽略的值可以用来定义在确定功能覆盖度量时没有收集的和/或被忽略的状态。功能覆盖模型还可以指定覆盖群组的所采样变量的交叉,这可以使功能覆盖模块能够在多个覆盖项之间进行相关。
注意,可以或多或少独立于硬件仿真来执行功能覆盖计算,因为确定功能覆盖并未改变DUT中的信号状态。本发明的一个实施方式利用这一认识来并行地执行仿真内核和功能覆盖模块。具体而言,可以在仿真内核中安装回调函数,以收集信号值变更,并且将值变更数据存储在共享存储器中。接下来,可以在另一处理器上执行功能覆盖模块,以确定功能覆盖度量并且向用户报告该度量。
跳转覆盖
覆盖度量可以基于其所提供的信息类型被划分成两类。控制流覆盖度量指示已经进行的控制流程覆盖的程度,也即,在仿真期间采用的线路、路径和分支的程度。值覆盖度量指示已经进行的值覆盖的程度,也即,在仿真期间的信号值与预期信号值相匹配的程度。
跳转覆盖度量是跟踪DUT内的信号线路是否跳转的值覆盖度量。跳转覆盖通常用来保证DUT中的信号线路是“激活的”,即信号线路在仿真期间改变其值。
跳转覆盖模型可以指定将监测哪些信号线以及将如何基于测试数据来计算一个或者多个跳转覆盖度量。例如,跳转覆盖模型可以包括总线中的所有信号线,并且相关联的跳转覆盖度量可以报告总线中在仿真期间跳转至少一次的信号线的百分比。备选地,跳转覆盖度量可以包括信号线在仿真期间跳转的平均次数。给出这些跳转覆盖模型和度量示例是出于说明目的,而非意在穷举或者将本发明限于所公开的形式。
注意,可以或多或少独立于硬件仿真来执行跳转覆盖计算,因为确定跳转覆盖并不改变DUT中的信号状态。本发明的一个实施方式利用这一认识来并行地执行仿真内核和跳转覆盖模块。具体而言,可以在仿真内核中安装回调函数,以收集信号值变更并且将值变更数据存储在共享存储器中。接下来,可以在另一处理器上执行跳转覆盖模块,以确定跳转覆盖度量并且向用户报告该度量。
断言
断言是关于诸如信号、寄存器、事务等设计要素的语句,这些设计要素被假设为在DUT恰当工作的情况下被赋值为“真”。检查断言可能需要在逐个循环的基础上对这些设计要素进行访问。因此,为了加速仿真吞吐,优选地可以最小化在仿真期间访问设计要素的开销。具体而言,尝试通过应用接口(例如,通过安装回调函数)来访问设计要素可能会明显降低性能,因此优选地在仿真内核中支持断言。
在传统方法中,断言通常是在图4所示的观测区域410中被赋值。然而,注意断言通常使用在先前时隙中确定的信号值。因此,可以在时隙开始时对断言进行赋值。本发明的一个实施方式利用这一认识以在独立线程中对断言进行赋值。具体而言,可以在第一核上执行的第一线程上执行仿真内核,而在第二核上执行的第二线程中执行断言引擎。仿真内核可以通知断言引擎新时隙已经开始。响应于接收到该通知,断言引擎可以使用在先前时隙中确定的信号值来为断言赋值。
由于断言引擎使用在先前时隙中确定的信号值,所以断言可以与仿真内核并行执行。另外注意,在断言引擎线程与仿真内核线程之间可能只需要很少量的同步,因为在时隙开始时和/或结束时可能足以对线程进行同步。
测试台
测试台模块通常用来生成用于DUT的刺激,并且检查结果以验证设计是否符合规范。测试台可以包括多个模块,这些模块可以在不同的抽象水平上编写,并且有时可能需要紧密同步。通常,使用支持用户指定如何生成测试场景的语言来编写测试台模型。如果仿真内核和测试台需要紧密同步,则并行执行它们可能是无益的。然而,通过以下特定的编码限制,有可能最小化所需的同步数量。本发明的一个实施方式利用这一认识来创建可以与仿真内核并行执行的测试台模型。
具体而言,针对测试台模型的编码限制可以包括以下限制:(1)应当利用非零扭斜(skew)对设计信号进行采样;(2)测试台代码与仿真内核代码之间不应当存在层级式引用;(3)不应使用异步采样和事件控制;以及(4)不应在测试台代码与仿真内核代码之间共享变量。如果遵守这些编码限制,则很有可能并行执行仿真内核与测试台模块,而无需二者之间的大量同步。
在一个实施方式中,仿真内核和测试台模块具有其各自的事件驱动的调度器,该调度器或多或少相互独立地执行。在时隙中的反应区域末端,可以将测试台输出事件传播至仿真内核。由于测试台中在NBA区域中调度的事件仅对应于对设计信号的指派,所以这些事件可以在处理了反应区域中的所有其它事件之后由仿真内核加以处置。注意,这一方案向后兼容,因为它维持从测试台模块到仿真内核的事件传播的通常语义。另外注意,每一时隙对仿真内核与测试台模块进行一次同步可能就足够了。
用于执行仿真和验证解决方案的过程
图5示出了根据本发明实施方式的可以用来执行仿真和验证系统的计算机系统。
计算机系统502包括处理器504、存储器506和存储设备508。计算机系统502可以耦合到显示器514、键盘510和指示设备512。存储设备508可以存储源文件516、编译器518和可执行文件520。处理器504可以包括一个或者多个核,和/或计算机系统502可以包括多处理器系统。
在操作期间,计算机系统502可以将编译器518加载到存储器506中。接下来,用户可以使用编译器518来编译源文件516,从而生成可执行文件520。可执行文件520可以包括一个或者多个文件,并且可以被存储在计算机可读存储介质(例如,存储设备508)上。计算机系统502可以将可执行文件520加载到存储器506中,并且使用处理器502来执行可执行文件520中存储的指令。在一个实施方式中,可执行文件520可以包括用于仿真内核、值变更转储模块、功能覆盖模块、跳转覆盖模块、断言引擎和测试台模块的指令。
在传统技术中,硬件和验证解决方案通常在单个处理器上作为单个进程来执行。因而,用于提高硬件仿真和验证解决方案性能的传统技术着重于代码优化。与之不同,本发明的实施方式通过以下方式来改进性能:将硬件仿真和验证解决方案分割成不同组件,并且在多处理器系统上将不同组件作为分离的进程或者线程加以执行。
图6给出了示出根据本发明实施方式的用于在多个处理器上执行如下硬件仿真和验证解决方案的过程的流程图,该解决方案包括用以对信号值变更进行仿真的仿真内核和用以将信号值变更存储在计算机可读存储介质上的VCD模块。
在操作期间,系统可以接收使用标准化非专用HDL描述DUT的源文件。接下来,系统可以编译源文件以获得仿真内核。备选地,系统可以接收经过预编译的仿真内核。
在一个实施方式中,仿真内核可以显露回调接口,该接口用来安装在特定事件发生时调用的回调函数。在编译期间,可以安装在每个时隙中调用的回调函数。回调函数可以包括用于收集值变更数据的指令以及用于存储值变更数据从而使得另一处理器可以访问该值变更数据的指令。
具体而言,回调函数可以使用库功能来收集值变更数据。接下来,回调函数可以将值变更数据存储在执行值变更转储模块的另一处理器可访问的共享存储器段中。所述另一处理器上的值变更转储模块继而可以读取值变更数据并且进行相应处理,例如,值变更转储模块可以压缩值变更数据,并且将经过压缩的值变更数据存储在计算机可读存储介质中以供后续分析。
在编译之后,系统可以在第一处理器上执行仿真内核,从而使第一处理器:生成表示一组信号值的变更的值变更数据,以及存储值变更数据,使得不同于第一处理器的第二处理器能够访问该值变更数据(步骤602)。
系统可以在第二处理器上执行VCD模块,从而使第二处理器:压缩值变更数据;以及将经过压缩的值变更数据存储在计算机可读存储介质中以供后续分析(步骤604)。仿真内核和VCD模块可以作为分离的进程或者作为分离的线程来执行。
图7给出了示出根据本发明实施方式的用于在多个处理器上执行如下硬件仿真和验证解决方案的过程的流程图,该解决方案包括用以对信号值变更进行仿真的仿真内核和用以检查DUT的覆盖的功能覆盖模块。
在操作期间,系统可以在第一处理器上执行仿真内核,从而使第一处理器:生成值变更数据,其表示在DUT的功能覆盖模型中使用的一组信号值的变更;以及存储该值变更数据,使得不同于第一处理器的第二处理器能够访问该值变更数据(步骤702)。
系统可以在第二处理器上执行功能覆盖模块,从而使第二处理器:使用功能覆盖模型和值变更数据来确定功能覆盖度量;以及向用户报告该功能覆盖度量(步骤704)。仿真内核和功能覆盖模块可以作为分离的进程或者作为分离的线程来执行。
图8给出了示出根据本发明实施方式的用于在多个处理器上执行如下硬件仿真和验证解决方案的过程的流程图,该解决方案包括用以对信号值的变更进行仿真的仿真内核和用以检查DUT的信号跳转的跳转覆盖模块。
在操作期间,系统可以在第一处理器上执行仿真内核,从而使第一处理器:生成值变更数据,其表示在DUT的跳转覆盖模型中使用的一组信号值的变更;以及存储该值变更数据,使得不同于第一处理器的第二处理器能够访问该值变更数据(步骤802)。
系统可以在第二处理器上执行跳转覆盖模块,从而使第二处理器:使用跳转覆盖模型和值变更数据来确定跳转覆盖度量;以及向用户报告该跳转覆盖度量(步骤804)。仿真内核和跳转覆盖模块可以作为分离的进程或者作为分离的线程来执行。
图9给出了示出根据本发明一个实施方式的用于在多个处理器上执行如下硬件仿真和验证解决方案的过程的流程图,该解决方案包括用以对信号值的变更进行仿真的仿真内核和用以检查被测设计DUT的复杂行为的断言引擎。
在操作期间,系统可以在第一处理器上执行仿真内核,从而使第一处理器:在仿真时隙开始时便立刻通知第二处理器(与第一处理器不同)上的断言引擎;在仿真时隙期间对DUT的信号值的变更进行仿真;以及检查断言引擎是否在第二处理器上完成执行(步骤902)。
系统可以在第二处理器上执行断言引擎,从而使第二处理器:响应于从仿真内核接收到仿真时隙已经开始的通知,使用在先前时隙期间确定的信号值来为断言赋值;报告为断言赋值的结果;以及一旦为断言进行了赋值便通知仿真内核(步骤904)。仿真内核和断言引擎可以作为分离的进程或者作为分离的线程来执行。
在一个实施方式中,系统不使用内核的回调接口来安装向断言引擎通知仿真时隙开始的回调函数。编译器可以代之以生成用以向第二处理器上的断言引擎通知仿真时隙已经开始的指令。具体而言,这些指令可以是仿真内核的代码的部分,并且这些指令可以在每个仿真时隙开始时由第一处理器执行,从而使第一处理器向第二处理器上的断言引擎通知仿真时隙已经开始。
图10给出了示出根据本发明实施方式的用于在多个处理器上执行以下硬件仿真和验证解决方案的过程的流程图,该解决方案包括用以对信号值的变更进行仿真的仿真内核和用以生成DUT测试场景的测试台模块。
在操作期间,系统可以在第一处理器上执行仿真内核,从而使第一处理器:通知第二处理器(与第一处理器不同)上的测试台模块生成用于测试DUT的测试信号;从第二处理器上的测试台模块接收测试信号;以及在仿真时隙期间使用该测试信号对DUT的信号值的变更进行仿真(步骤1002)。
系统可以在第二处理器上执行测试台模块,从而使第二处理器生成用于测试DUT的测试信号并且将测试信号发送到第一处理器上的仿真内核(步骤1004)。仿真内核和测试台模块可以作为分离的进程或者作为分离的线程来执行。
在一个实施方式中,编译器可以生成用以通知第二处理器上的测试台模块生成用于测试DUT的测试信号的指令。这些指令可以是仿真内核的代码的部分,并且这些指令可以在仿真时隙开始之前由第一处理器执行,从而使第一处理器通知测试台模块生成用于在仿真时隙期间测试DUT的测试信号。
结论
在本详细描述中所描述的数据结构和代码通常存储于计算机可读存储介质上,该介质可以是能够存储用于由计算机系统使用的代码和/或数据的任何设备或者介质。这包括但不限于:易失性存储器、非易失性存储器、磁和光学存储设备(例如盘驱动、磁带、CD(光盘)、DVD(数字万用盘或者数字视频盘))或者现在已知或者以后开发的能够存储计算机可读介质的其它介质。
另外,给出对本发明实施方式的上文描述仅仅是出于说明和描述目的。其并非意在穷举或者将本发明限于所公开的形式。因而,多种修改和变形对于本领域技术人员而言将是显然的。此外,上述公开内容并非旨在限制本发明。本发明的范围由所附权利要求限定。
Claims (20)
1.一种用于在多个处理器上执行硬件仿真和验证解决方案的方法,所述解决方案包括用以对信号值的变更进行仿真的仿真内核以及用以在将所述信号值的变更存储在计算机可读存储介质上的值变更转储(VCD)模块,所述方法包括:
在第一处理器上执行所述仿真内核,从而使所述第一处理器:
生成表示一组信号值的变更的值变更数据;以及
存储所述值变更数据,使得不同于所述第一处理器的第二处理器能够访问所述值变更数据;以及
在所述第二处理器上执行所述VCD模块,从而使所述第二处理器:
压缩所述值变更数据;以及
将经过压缩的所述值变更数据存储在所述计算机可读存储介质中以供后续分析。
2.根据权利要求1所述的方法,其中在执行所述仿真内核之前,所述方法包括:
接收描述被测设计(DUT)的源文件;以及
编译所述源文件以获得所述仿真内核。
3.根据权利要求2所述的方法,
其中所述仿真内核显露回调接口,所述回调接口用来安装在特定事件出现时被调用的回调函数;
其中编译所述源文件包括安装第一回调函数,其中无论何时当所述仿真内核生成所述值变更数据,则调用所述第一回调函数;以及
其中所述第一回调函数包括:
用于收集所述值变更数据的指令;以及
用于存储所述值变更数据使得所述第二处理器可以访问所述值变更数据的指令。
4.根据权利要求2所述的方法,其中所述源文件使用标准化非专用硬件描述语言(HDL)来描述所述DUT,并且其中所述仿真内核和所述VCD模块在分离的过程中执行。
5.一种用于在多个处理器上执行硬件仿真和验证解决方案的方法,所述解决方案包括用以对信号值的变更进行仿真的仿真内核以及用以检查被测设计(DUT)的覆盖的功能覆盖模块,所述方法包括:
在第一处理器上执行所述仿真内核,从而使所述第一处理器:
生成值变更数据,其表示在所述DUT的功能覆盖模型中使用的一组信号值的变更;以及
存储所述值变更数据,使得不同于所述第一处理器的第二处理器能够访问所述值变更数据;以及
在所述第二处理器上执行所述功能覆盖模块,从而使所述第二处理器:
使用所述功能覆盖模型和所述值变更数据来确定功能覆盖度量;以及
向用户报告所述功能覆盖度量。
6.根据权利要求5所述的方法,其中在执行所述仿真内核之前,所述方法包括:
接收描述所述DUT的源文件;以及
编译所述源文件以获得所述仿真内核。
7.根据权利要求6所述的方法,
其中所述仿真内核显露回调接口,所述回调接口用来安装在特定事件出现时被调用的回调函数;
其中编译所述源文件包括安装第一回调函数,其中无论何时当所述仿真内核生成所述值变更数据,则调用所述第一回调函数;以及
其中所述第一回调函数包括:
用于收集所述值变更数据的指令;以及
用于存储所述值变更数据使得所述第二处理器可以访问所述值变更数据的指令。
8.根据权利要求6所述的方法,其中所述源文件使用标准化非专用硬件描述语言(HDL)来描述所述DUT,并且其中所述仿真内核和所述功能覆盖模块在分离的过程中执行。
9.一种用于在多个处理器上执行硬件仿真和验证解决方案的方法,所述解决方案包括用以对信号值的变更进行仿真的仿真内核以及用以检查被测设计(DUT)的信号跳转的跳转覆盖模块,所述方法包括:
在第一处理器上执行所述仿真内核,从而使所述第一处理器:
生成值变更数据,其表示在所述DUT的跳转覆盖模型中使用的一组信号值的变更;以及
存储所述值变更数据,使得不同于所述第一处理器的第二处理器能够访问所述值变更数据;以及
在所述第二处理器上执行所述跳转覆盖模块,从而使所述第二处理器:
使用所述跳转覆盖模型和所述值变更数据来确定跳转覆盖度量;以及
向用户报告所述跳转覆盖度量。
10.根据权利要求9所述的方法,其中在执行所述仿真内核之前,所述方法包括:
接收描述所述DUT的源文件;以及
编译所述源文件以获得所述仿真内核。
11.根据权利要求10所述的方法,
其中所述仿真内核显露回调接口,所述回调接口用来安装在特定事件出现时被调用的回调函数;
其中编译所述源文件包括安装第一回调函数,其中无论何时当所述仿真内核生成所述值变更数据,则调用所述第一回调函数;以及
其中所述第一回调函数包括:
用于收集所述值变更数据的指令;以及
用于存储所述值变更数据使得所述第二处理器可以访问所述值变更数据的指令。
12.根据权利要求10所述的方法,其中所述源文件使用标准化非专用硬件描述语言(HDL)来描述所述DUT,并且其中所述仿真内核和所述跳转覆盖模块在分离的过程中执行。
13.一种用于在多个处理器上执行硬件仿真和验证解决方案的方法,所述解决方案包括用以对信号值的变更进行仿真的仿真内核以及用以检查被测设计(DUT)的复杂行为的断言引擎,所述方法包括:
在第一处理器上执行所述仿真内核,从而使所述第一处理器:
在仿真时隙开始时便立即通知第二处理器上的所述断言引擎,其中所述第二处理器不同于所述第一处理器;
在所述仿真时隙期间对所述DUT的信号值的变更进行仿真;以及
等待所述断言引擎在所述第二处理器上为所述断言赋值;以及
在所述第二处理器上执行所述断言引擎,从而使所述第二处理器:
响应于从所述仿真内核接收到所述仿真时隙已经开始的通知,使用在先前时隙期间确定的信号值来为断言赋值;报告为所述断言赋值的结果;以及
一旦已经为所述断言赋值,便通知所述仿真内核。
14.根据权利要求13所述的方法,其中在执行所述仿真内核之前,所述方法包括:
接收描述所述DUT的源文件;以及
编译所述源文件以获得所述仿真内核。
15.根据权利要求14所述的方法,其中编译所述源文件包括生成用以向所述第二处理器上的所述断言引擎通知所述仿真时隙已经开始的指令。
16.根据权利要求14所述的方法,其中所述源文件使用标准化非专用硬件描述语言(HDL)来描述所述DUT,并且其中所述仿真内核和所述断言引擎在分离的线程中执行。
17.一种用于在多个处理器上执行硬件仿真和验证解决方案的方法,所述解决方案包括用以对信号值的变更进行仿真的仿真内核以及用以生成被测设计(DUT)的测试场景的测试台模块,所述方法包括:
在第一处理器上执行所述仿真内核,从而使所述第一处理器:
通知第二处理器上的所述测试台模块生成用于测试所述DUT的测试信号,其中所述第二处理器不同于所述第一处理器;
从所述第二处理器上的所述测试台模块接收所述测试信号;以及
在仿真时隙期间使用所述测试信号对所述DUT的信号值的
变更进行仿真;以及
在所述第二处理器上执行所述测试台模块,从而使所述第二处理器:
响应于从所述仿真内核接收用以生成测试信号的通知,生
成用于测试所述DUT的所述测试信号;以及
将所述测试信号发送到所述第一处理器上的所述仿真内 核。
18.根据权利要求17所述的方法,其中在执行所述仿真内核之前,所述方法包括:
接收描述所述DUT的源文件;以及
编译所述源文件以获得所述仿真内核。
19.根据权利要求18所述的方法,其中编译所述源文件包括生成用以通知所述第二处理器上的所述测试台模块生成所述测试信号的指令。
20.根据权利要求18所述的方法,其中所述源文件使用标准化非专用硬件描述语言(HDL)来描述所述DUT,并且其中所述仿真内核和所述测试台模块在分离的线程中执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/112,222 | 2008-04-30 | ||
US12/112,222 US8121825B2 (en) | 2008-04-30 | 2008-04-30 | Method and apparatus for executing a hardware simulation and verification solution |
PCT/US2009/037951 WO2009134550A2 (en) | 2008-04-30 | 2009-03-23 | Method and apparatus for executing a hardware simulation and verification solution |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101952827A true CN101952827A (zh) | 2011-01-19 |
CN101952827B CN101952827B (zh) | 2013-08-14 |
Family
ID=41059452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009800002447A Active CN101952827B (zh) | 2008-04-30 | 2009-03-23 | 用于执行硬件仿真和验证解决方案的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (4) | US8121825B2 (zh) |
CN (1) | CN101952827B (zh) |
TW (1) | TWI468950B (zh) |
WO (1) | WO2009134550A2 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615477A (zh) * | 2013-11-01 | 2015-05-13 | 国际商业机器公司 | 运行中的fpga 系统的周期精确级重放和调试 |
CN107533473A (zh) * | 2015-05-04 | 2018-01-02 | 美商新思科技有限公司 | 用于仿真的高效波形生成 |
CN108932355A (zh) * | 2017-05-23 | 2018-12-04 | 大唐移动通信设备有限公司 | 一种逻辑验证方法及装置 |
CN111400994A (zh) * | 2018-12-29 | 2020-07-10 | 广东高云半导体科技股份有限公司 | 网表形式验证方法、装置、计算机设备及存储介质 |
CN111510932A (zh) * | 2020-03-21 | 2020-08-07 | 杭州迪普科技股份有限公司 | 无线接入点部署方法、装置、电子设备及计算机可读介质 |
CN111936998A (zh) * | 2018-04-05 | 2020-11-13 | 畅想科技有限公司 | 数据变换流水线的硬件设计的验证 |
CN114237767A (zh) * | 2022-02-24 | 2022-03-25 | 西安羚控电子科技有限公司 | 一种实现多倍速仿真的系统及方法 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8397195B2 (en) * | 2010-01-22 | 2013-03-12 | Synopsys, Inc. | Method and system for packet switch based logic replication |
US8638792B2 (en) | 2010-01-22 | 2014-01-28 | Synopsys, Inc. | Packet switch based logic replication |
US8738350B2 (en) * | 2010-03-04 | 2014-05-27 | Synopsys, Inc. | Mixed concurrent and serial logic simulation of hardware designs |
US8683282B2 (en) * | 2011-03-01 | 2014-03-25 | International Business Machines Corporation | Automatic identification of information useful for generation-based functional verification |
US8429581B2 (en) * | 2011-08-23 | 2013-04-23 | Apple Inc. | Method for verifying functional equivalence between a reference IC design and a modified version of the reference IC design |
US9057764B2 (en) * | 2011-10-27 | 2015-06-16 | International Business Machines Corporation | Detection of unchecked signals in circuit design verification |
KR20130081354A (ko) * | 2012-01-09 | 2013-07-17 | 삼성전자주식회사 | 분산 병렬 시뮬레이션에서의 통신 방법 |
US8881075B2 (en) | 2013-03-04 | 2014-11-04 | Atrenta, Inc. | Method for measuring assertion density in a system of verifying integrated circuit design |
US8739090B1 (en) * | 2013-03-15 | 2014-05-27 | Cadence Design Systems, Inc. | Probe signal compression method and apparatus for hardware based verification platforms |
GB2512888A (en) | 2013-04-10 | 2014-10-15 | Ibm | Verification assistance method in particular for the design of digital circuits |
KR102198499B1 (ko) * | 2013-12-31 | 2021-01-05 | 주식회사 아이씨티케이 홀딩스 | 디지털 값 처리 장치 및 방법 |
CN104090839B (zh) * | 2014-07-02 | 2017-03-15 | 中国银行股份有限公司 | 异常场景模拟测试方法及装置 |
US9619312B2 (en) | 2015-02-12 | 2017-04-11 | International Business Machines Corporation | Persistent command parameter table for pre-silicon device testing |
US9529963B1 (en) | 2015-03-27 | 2016-12-27 | Microsemi Storage Solutions (U.S.), Inc. | Method and system for partitioning a verification testbench |
US9934343B2 (en) | 2016-05-27 | 2018-04-03 | International Business Machines Corporation | System and method for generation of an integrated circuit design |
US10242179B1 (en) * | 2017-06-08 | 2019-03-26 | Rockwell Collins, Inc. | High-integrity multi-core heterogeneous processing environments |
US11023637B1 (en) | 2019-12-20 | 2021-06-01 | Cadence Design Systems, Inc. | Hybrid deferred assertion for circuit design |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7480606B2 (en) * | 1998-08-31 | 2009-01-20 | Versity Design, Inc. | VCD-on-demand system and method |
US6087967A (en) * | 1998-09-03 | 2000-07-11 | International Business Machines Corporation | Method for generating and reading a compressed all event trace file |
US6523151B2 (en) * | 2000-05-25 | 2003-02-18 | International Business Machines Corporation | Method for verifying the design of a microprocessor |
US7222315B2 (en) * | 2000-11-28 | 2007-05-22 | Synplicity, Inc. | Hardware-based HDL code coverage and design analysis |
US6691301B2 (en) * | 2001-01-29 | 2004-02-10 | Celoxica Ltd. | System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures |
US6745374B2 (en) * | 2002-06-10 | 2004-06-01 | Sun Microsystems, Inc. | Algorithms for determining path coverages and activity |
US7454324B1 (en) * | 2003-01-10 | 2008-11-18 | James Andrew Garrard Seawright | Selection of initial states for formal verification |
US20070299648A1 (en) * | 2003-01-10 | 2007-12-27 | Levitt Jeremy R | Reuse of learned information to simplify functional verification of a digital circuit |
US7346903B2 (en) | 2003-02-04 | 2008-03-18 | Sun Microsystems, Inc. | Compiling and linking modules of a cycle-based logic design |
US20040243371A1 (en) * | 2003-05-30 | 2004-12-02 | Intel Corporation | System and method for automatic derivation of coverage metrics for validation of pipelined designs |
US7899659B2 (en) * | 2003-06-02 | 2011-03-01 | Lsi Corporation | Recording and displaying logic circuit simulation waveforms |
US8099273B2 (en) | 2003-06-05 | 2012-01-17 | Mentor Graphics Corporation | Compression of emulation trace data |
US20060004557A1 (en) * | 2004-07-01 | 2006-01-05 | Synopsys, Inc. | System and method for reducing size of simulation value change files |
US7742905B2 (en) * | 2005-02-25 | 2010-06-22 | Coware, Inc. | Method and system for dynamically adjusting speed versus accuracy of computer platform simulation |
US7408336B2 (en) * | 2005-10-26 | 2008-08-05 | International Business Machines Corporation | Importation of virtual signals into electronic test equipment to facilitate testing of an electronic component |
TWI274171B (en) * | 2005-12-22 | 2007-02-21 | Magima Digital Information Co | A scan chain and an IC verification method using the scan chain |
US7827541B2 (en) * | 2006-03-16 | 2010-11-02 | International Business Machines Corporation | Method and apparatus for profiling execution of code using multiple processors |
-
2008
- 2008-04-30 US US12/112,222 patent/US8121825B2/en active Active
-
2009
- 2009-03-10 TW TW98107709A patent/TWI468950B/zh active
- 2009-03-23 CN CN2009800002447A patent/CN101952827B/zh active Active
- 2009-03-23 WO PCT/US2009/037951 patent/WO2009134550A2/en active Application Filing
-
2012
- 2012-01-26 US US13/359,386 patent/US8341570B2/en active Active
- 2012-11-26 US US13/685,412 patent/US8782580B2/en active Active
-
2014
- 2014-05-08 US US14/273,152 patent/US9536027B2/en active Active
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615477A (zh) * | 2013-11-01 | 2015-05-13 | 国际商业机器公司 | 运行中的fpga 系统的周期精确级重放和调试 |
CN104615477B (zh) * | 2013-11-01 | 2018-03-27 | 国际商业机器公司 | 分析fpga的方法和系统 |
CN107533473A (zh) * | 2015-05-04 | 2018-01-02 | 美商新思科技有限公司 | 用于仿真的高效波形生成 |
CN107533473B (zh) * | 2015-05-04 | 2021-03-02 | 美商新思科技有限公司 | 用于仿真的高效波形生成 |
CN112905298A (zh) * | 2015-05-04 | 2021-06-04 | 美商新思科技有限公司 | 用于仿真的高效波形生成 |
CN108932355A (zh) * | 2017-05-23 | 2018-12-04 | 大唐移动通信设备有限公司 | 一种逻辑验证方法及装置 |
CN108932355B (zh) * | 2017-05-23 | 2020-11-20 | 大唐移动通信设备有限公司 | 一种逻辑验证方法及装置 |
CN111936998A (zh) * | 2018-04-05 | 2020-11-13 | 畅想科技有限公司 | 数据变换流水线的硬件设计的验证 |
CN111400994A (zh) * | 2018-12-29 | 2020-07-10 | 广东高云半导体科技股份有限公司 | 网表形式验证方法、装置、计算机设备及存储介质 |
CN111400994B (zh) * | 2018-12-29 | 2024-04-05 | 广东高云半导体科技股份有限公司 | 网表形式验证方法、装置、计算机设备及存储介质 |
CN111510932A (zh) * | 2020-03-21 | 2020-08-07 | 杭州迪普科技股份有限公司 | 无线接入点部署方法、装置、电子设备及计算机可读介质 |
CN114237767A (zh) * | 2022-02-24 | 2022-03-25 | 西安羚控电子科技有限公司 | 一种实现多倍速仿真的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
US8121825B2 (en) | 2012-02-21 |
US8341570B2 (en) | 2012-12-25 |
US20140244233A1 (en) | 2014-08-28 |
US9536027B2 (en) | 2017-01-03 |
US20130085738A1 (en) | 2013-04-04 |
WO2009134550A2 (en) | 2009-11-05 |
TW200949569A (en) | 2009-12-01 |
US8782580B2 (en) | 2014-07-15 |
CN101952827B (zh) | 2013-08-14 |
TWI468950B (zh) | 2015-01-11 |
US20120123763A1 (en) | 2012-05-17 |
WO2009134550A3 (en) | 2010-03-04 |
US20090276738A1 (en) | 2009-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101952827B (zh) | 用于执行硬件仿真和验证解决方案的方法和装置 | |
JP3131177B2 (ja) | エミュレーションとシミュレーションを用いた設計検証のための方法および装置 | |
US20070276644A1 (en) | Conversion of circuit description to a transaction model | |
JP4806529B2 (ja) | 複製されたロジックを使用するデバッグの方法とシステム | |
US20060130029A1 (en) | Programming language model generating apparatus for hardware verification, programming language model generating method for hardware verification, computer system, hardware simulation method, control program and computer-readable storage medium | |
US8473886B2 (en) | Parallel parasitic processing in static timing analysis | |
US7849362B2 (en) | Method and system of coherent design verification of inter-cluster interactions | |
US9600398B2 (en) | Method and apparatus for debugging HDL design code and test program code | |
Posadas et al. | RTOS modeling in SystemC for real-time embedded SW simulation: A POSIX model | |
KR20130048204A (ko) | 하드웨어 설계들의 혼합된 동시 및 순차 로직 시뮬레이션 | |
TWI474203B (zh) | 模擬電路的方法、積體電路、電腦系統及電腦程式產品 | |
Lin et al. | Concolic testing of SystemC designs | |
JP2007164780A (ja) | 方法、システムおよびプログラム(設計を検証する方法およびシステム) | |
Uddin et al. | Collecting signatures to model latency tolerance in high-level simulations of microthreaded cores | |
Park et al. | Post-silicon bug localization for processors using IFRA | |
Entrena et al. | Hardware fault injection | |
Mahadevan et al. | A reactive and cycle-true ip emulator for mpsoc exploration | |
US20130311966A1 (en) | Circuit design support apparatus, computer-readable recording medium, and circuit design support method | |
Chenard | Hardware-based temporal logic checkers for the debugging of digital integrated circuits | |
US10635769B1 (en) | Hardware and software event tracing for a system-on-chip | |
Siddiqui | System-on-Chip (SoC) emulation | |
Klein et al. | Migrating software to hardware on FPGAs | |
Stoucny et al. | Alpha 21164 manufacturing test development and coverage analysis | |
Coppola et al. | Cycle-Accurate System-Level Modeling and Performance Evaluation | |
Scherrer et al. | A generic multi-phase on-chip traffic generation environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |