CN112905298A - 用于仿真的高效波形生成 - Google Patents
用于仿真的高效波形生成 Download PDFInfo
- Publication number
- CN112905298A CN112905298A CN202110189829.0A CN202110189829A CN112905298A CN 112905298 A CN112905298 A CN 112905298A CN 202110189829 A CN202110189829 A CN 202110189829A CN 112905298 A CN112905298 A CN 112905298A
- Authority
- CN
- China
- Prior art keywords
- signal
- dut
- section
- host system
- emulator
- 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
- 238000004088 simulation Methods 0.000 title abstract description 102
- 238000013461 design Methods 0.000 claims abstract description 45
- 238000012360 testing method Methods 0.000 claims abstract description 8
- 238000005192 partition Methods 0.000 claims description 49
- 238000000034 method Methods 0.000 claims description 40
- 230000008569 process Effects 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 abstract description 16
- 238000012795 verification Methods 0.000 abstract description 13
- 230000015654 memory Effects 0.000 description 30
- 238000013507 mapping Methods 0.000 description 22
- 238000003860 storage Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003278 mimic effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
-
- 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/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- 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
- 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
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/343—Logical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3652—Software debugging using additional hardware in-circuit-emulation [ICE] arrangements
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Tests Of Electronic Circuits (AREA)
Abstract
本公开的实施例涉及用于仿真的高效波形生成。一种仿真环境包括主机系统和仿真器。该主机系统配置仿真器以仿真被测设计(DUT),仿真器从而仿真DUT。在仿真期间,仿真器追踪DUT的有限信号并且存储所追踪的信号的值。当DUT的某些信号的值需要用于分析或验证DUT但信号未被仿真器追踪时,主机系统模拟DUT的一个或多个区段以获得信号的值。由仿真器追踪的信号被用于作为模拟一个或多个区段的输入。
Description
本申请是申请日为2016年2月4日、申请号为201680024377.8、发明名称为“用于仿真的高效波形生成”的中国专利申请的分案申请。
技术领域
本公开一般涉及电路的仿真,更具体地涉及获得仿真结果。
背景技术
已经开发出了仿真器来协助电路设计者设计并且调试高度复杂的集成电路。仿真器包括多个可重新配置部件,诸如现场可编程门阵列(FPGA),其可以一起模仿被测设计(DUT)的操作。通过使用仿真器来模仿DUT的操作,设计者可以在制造前验证DUT符合各种设计要求。
仿真的一个方面包括仿真DUT并且从仿真器取回仿真结果。可以分析仿真结果以验证例如DUT的定时关系和数字逻辑运算。在一种途径中,仿真结果被传送到另一系统进行分析。例如,仿真结果的波形在另一系统处生成,以图形化地表示DUT的定时关系和数字逻辑运算。在先进制程(例如,22nm及以下)中,DUT可以包括数十亿个逻辑电路和信号。仿真这样一个复杂的DUT涉及从仿真器向另一系统以大量循环地传送包括数十亿个信号的状态或值的极其大量数据。因此,常规仿真环境在用于传送数据而不减慢仿真器系统的硬件和通信资源的方面效率低下。
附图说明
所公开的实施例具有的其他优点和特征根据具体实施方式、所附权利要求以及附图(或图)变得更加明显。下文对这些附图进行简要介绍。
图1是根据一个实施例的仿真环境的框图。
图2图示了根据一个实施例的具有DUT的示例电路的仿真环境的示例。
图3是根据一个实施例的主机系统的框图。
图4是图示了根据一个实施例的准备DUT的仿真的主机系统的流程图。
图5是根据一个实施例的配置用于追踪DUT的信号的主机系统和仿真器的流程图。
图6图示了能够从机器可读介质读取指令并且在处理器(或控制器)中执行它们的示例机器的部件的一个实施例。
具体实施方式
仅以说明的方式,附图和以下描述涉及优选实施例。应当注意,从下面的讨论中,本文中所公开的结构和方法的备选实施例将被容易地认为是在不背离所要求保护的原理的情况下可以采用的可行备选方案。
现在将详细参考几个实施例,其示例在附图中图示。附图仅仅出于说明的目的而描绘了所公开的系统(或方法)的实施例。从下面的描述应该认识到,在不背离本文中所描述的原理的情况下,可以采用本文中所图示的结构和方法的备选实施例。
附图使用相同的附图标记来标识相同的元件。诸如“230A”之类的附图标记之后的字母,指示文本特定涉及具有该具体附图标记的元件。文本中诸如“230”之类的没有后续字母的附图标记,指示带有该附图标记的图中的元件中的任一或所有元件。
概述
所公开的仿真环境对被测设计(DUT)执行带宽和资源高效分析。仿真环境的一个实施例包括主机系统和仿真器。主机系统配置仿真器来仿真DUT,仿真器因而仿真DUT。在仿真期间,仿真器追踪DUT的有限信号并且存储所追踪的信号的值(例如,状态)。在一个实施例中,所追踪的信号包括DUT的多个循环。当DUT的某些信号的值需要被用于分析或验证DUT,但信号未被仿真器追踪时,主机系统确定DUT的一个或多个区段,其允许追踪信号并且模拟那些区段以产生未被追踪的信号(例如,其包括一个或多个循环)。仿真器所追踪(即,仿真)的信号用于模拟一个或多个区段。因此,通过主机系统能够模拟DUT的区段,主机系统能够获得附加DUT信号的值,并且仿真器可以追踪更少的信号。进一步地,由于仿真器追踪较少的信号,所以在仿真器和主机系统之间交换较少信号的值,从而实现了通信带宽的节省。附加地,该解决方案非常的可扩展。由于可以通过模拟计算来平衡所需的信号,所以解决方案不会受到DUT变得越来越大和越来越复杂的影响。例如,可以追踪较少的信号,并且可以通过模拟来计算更多的信号。
本文中的仿真是指模仿具有可配置硬件部件的电子设计的行为。
本文中的模拟是指用软件模型模仿电子设计的行为。
本文中的信号是指但不限于具有被携带、被监视或被追踪的值的设计的网络、线、变量、端口或元件。
本文中追踪/产生信号是指基于电子设计的仿真或模拟来获得信号的值。进一步地,当参考本文中的信号时,它是指电子设计中的信号或信号的值。
仿真环境
图1是图示了根据一个实施例的、仿真环境100的框图。仿真环境100包括仿真器110和主机系统120。仿真器110和主机系统120通过接口115进行通信。
接口115是允许主机系统120和仿真器110之间的通信的通信介质。在一个实施例中,接口115是具有电连接的一个或多个电缆。例如,接口115可以是一个或多个RS232,USB,LAN,光学,IEEE 1394(FireWire)或定制电缆。在另一实施例中,接口115是具有一个或多个接入点的无线通信介质或网络。再如,接口115可以是采用蓝牙或IEEE 802.11协议的无线通信介质。在一个实施例中,在主机系统120和仿真器110的操作期间启用接口115。在一个实施例中,仅当主机系统120和仿真器110需要彼此交换信息时,接口115才被启用。
仿真器110是仿真被测设计(DUT)的硬件系统。DUT包括一个或多个电路设计。所仿真的DUT可以是组合的,顺序的,或两者的组合。仿真器110包括多个现场可编程门阵列(FPGA)220,其可以被配置以仿真DUT。每个FPGA 220包括追踪存储器290(例如,追踪缓存),其在仿真期间存储由FPGA 220追踪的信号的值(例如,仿真期间DUT信号的状态)。在其他实施例中,仿真器110包括其他类型的可配置逻辑电路而不是FPGA 220。在其他实施例中,仿真器110包括与FPGA 205分离的一个或多个追踪存储器290,其中多个FPGA 220可以使用一个或多个追踪存储器290存储数据。在其他实施例中,仿真器110包括FPGA 220或其他可配置电路的混合以及位于部件中或与它们分离的存储器的混合,以便实现最优的追踪系统。在另一个实施例中,仿真器110不包含专用于追踪的存储器,并且使用可以用于对设计建模的存储器,或直接通过接口115流式传输所追踪的数据。在仿真完成之后或在仿真期间,仿真器110可以向主机系统120传送存储在一个或多个追踪存储器290中的所追踪的信号的值。仿真器110还可以响应于从主机系统120接收到请求或在从主机系统120接收到请求之前,传送存储在一个或多个追踪存储器中的所追踪的信号的值。仿真器110传送到主机系统的所追踪的信号的值可以跨越多个DUT循环。
对于要仿真的DUT,仿真器110通过接口115从主机系统120接收包括对该DUT的描述的一个或多个二进制文件(例如,DUT的门级或硬件描述语言(HDL)级描述的映射)。二进制文件描述了由主机系统120创建的DUT的分区以及每个分区到FPGA 220的映射。基于二进制文件,仿真器110配置每个FPGA 220以仿真被映射(被指派)到它的DUT的分区,并且追踪其相应分区中的某些信号。FPGA220集体仿真DUT。在仿真期间由FPGA 220追踪的信号的值在通过接口115被传送到主机系统120之前由FPGA 220暂时存储在其追踪存储器290中。下文所描述的这些信号用于生成附加信息和/或处理DUT的仿真结果。
主机系统120配置仿真器110以仿真被测设计(DUT)。主机系统120可以是单个计算机或多个计算机的集合。在主机系统120由多个计算机组成的实施例中,本文中被描述为由主机系统120执行的功能可以分布在多台计算机之间。主机系统120可以通过另一设备、计算机或网络间接连接至仿真器110。
主机系统120从用户接收要由仿真器110仿真的DUT的描述。在一个实施例中,DUT的描述采用HDL的类型,诸如寄存器传送语言(RTL)。主机系统120基于DUT的HDL描述来创建门级网表。主机系统120使用HDL或门级网表将DUT分成多个分区。主机系统120将每个分区映射(指派)到被包括在仿真器110中的一个或多个FPGA 220。FPGA 220一起将仿真DUT并且追踪DUT的某些信号。
主机系统120创建二进制文件,其包括基于DUT和映射来配置FPGA 220的信息。二进制文件可以包括例如一个或多个分区的设计描述(例如,门级或HDL描述)、映射信息(例如,分区的映射)、连接信息(例如,DUT的部件之间的连接和/或FPGA之间的连接)和DUT的设计约束。
另外,主机系统120标识DUT的将要可用于通过主机系统120进行模拟的区段。DUT的区段可以是分区的一部分或者涵盖整个分区。在一个实施例中,区段的集合体涵盖整个DUT。可替代地,区段的集合体可以涵盖DUT的一部分。在另一实施例中,DUT的区段可以是可用于模拟的多个分区的一部分。在一个实施例中,区段的至少一个边缘(例如,电路或信号)与分区的边缘(例如,电路或信号)相对应。在另一实施例中,区段的任何边缘(例如,电路或信号)可能不与分区的边缘(例如,电路或信号)相对应。
DUT的区段被标识,使得在必要时,主机系统120可以模拟区段,以在DUT的仿真期间获得未被仿真器110追踪的DUT区段的某些信号的值。因此,尽管在仿真DUT时仿真器110对DUT的区段进行仿真,但是主机系统120还可以模拟该区段以产生未被仿真器110追踪的附加信号。作为示例,假设为了执行DUT分析需要某个信号的值,但是该信号在DUT的仿真期间未被该仿真器110所追踪。主机系统120可以模拟包括该信号的DUT的区段以获得所期望信号的值(即,产生该信号)。在一个实施例中,主机系统120标识并且模拟需要产生(即,模拟)的用于每个附加信号的区段。在另一实施例中,主机系统120标识并且模拟未被仿真器110追踪的DUT信号的子集或整个DUT信号的区段。
主机系统120创建描述每个被标识的区段的电路的一个或多个区段文件。在一个实施例中,针对每个被标识的区段创建区段文件。例如,区段文件可以是原始HDL,从原始HDL获得的修改后的HDL,从门级网表推导出的HDL,门级网表,系统C模型,C/C++模型,二进制表示或设计的任何表示,该表示允许根据信号的子集模拟设计的部分行为。主机系统120还生成信号信息,其描述当由主机系统120模拟时针对DUT的每个所标识的区段产生的信号以及当由仿真器110仿真时针对每个分区追踪的信号。对于区段,信号信息还描述了需要哪些信号(或信号的值)来模拟区段。所需的信号可以是在仿真期间由仿真器110追踪的信号。在一个实施例中,在仿真期间由仿真器110追踪的信号是所标识的区段的输入。所需的信号还可以是从模拟一个或多个其他区段获得的信号。主机系统120存储所生成的信号信息,以及区段和二进制文件。
主机系统120向仿真器110传送二进制文件,使得仿真器110可以配置FPGA220以仿真它们相应的映射分区。主机系统120指令仿真器110仿真DUT。每个FPGA 220仿真其相应的分区,并且将在仿真期间所追踪的信号的值存储在其追踪存储器290中。在一个实施例中,当FPGA没有正在仿真DUT时,追踪存储器290中的内容由仿真器110通过接口115传送到主机系统120。在另一实施例中,仿真器110通过接口115向主机系统120传送追踪存储器290中的内容,同时FPGA 220正在仿真DUT,从而与仿真DUT并行地生成并通过接口115传送所追踪的信息流。
进一步地,主机系统120接收指示用于执行分析或验证DUT所需的DUT信号的值的验证设置。验证设置可以是例如来自用户的追踪用于调试或测试DUT的DUT的某些信号的请求。验证设置还可以包括用于分析DUT的性能的状态机。验证设置可能包括系统C模型,C/C++模型,分析设计仿真结果的程序或脚本。
基于所接收的验证设置,主机系统120标识用于执行DUT分析而需要获得的DUT的信号的值。基于所存储的信号信息,主机系统120标识DUT的区段,当该区段被模拟时,提供所标识的信号中的一个或多个信号的值。附加地,主机系统120确定需要仿真器的FPGA220所追踪的信号中的哪些信号来模拟所标识的区段。
主机系统120取回描述所标识的区段的设计的一个或多个所存储的区段文件,并且使用从仿真器110接收的追踪信号的值来模拟所标识的区段。所标识的区段的模拟导致主机系统120产生用于执行DUT分析所需的所标识的信号(例如,包括多个循环)。在一个实施例中,主机系统120生成用户界面,其包括被显示为波形的一个或多个所标识的信号。在一个实施例中,如果用于模拟所标识的区段所需的某些信号未被仿真器110追踪到,则主机系统120模拟一个或多个其他区段以产生那些信号。
通过模拟主机系统120中的DUT的区段,主机系统120能够生成DUT的某些信号,以取代仿真器110必须追踪那些信号,从而限制了由仿真器110追踪的信号量。进一步地,由于仿真器110追踪的信号较少,所以在主机系统120和仿真器110之间交换的信号值的量也减小,从而减少仿真器110和主机系统120之间传送相同量的全局信息所使用的带宽。此外,减少了在设计中或在设计过程期间可能被添加以追踪和传送到主机系统120的逻辑量。
图2图示了根据一个实施例的具有DUT的示例电路的仿真环境100的示例。在该示例中,仿真器110包括两个FPGA 220A和220B。FPGA 220A包括追踪存储器290A,而FPGA 220B包括追踪存储器290B。基于从主机系统120接收的二进制文件,FPGA 220A被配置成仿真由区段285A和285B组成的DUT分区270A。附加地,FPGA220B被配置成仿真由区段285C和285D组成的DUT分区270B。每个FPGA 220仿真其相应的分区270,并且在仿真期间追踪的信号的值由FPGA 220存储在其追踪存储器290中。在该示例中,当FPGA220A仿真分区270A时,区段285A的信号232,234和236被追踪并且存储在追踪存储器290A中(可以追踪用于区段285B的附加信号)。在该示例中,每个区段285在其对应的分区270中实现。可替代地,区段285可以跨多个FPGA 220实现,使得区段285的一部分在FPGA 220中实现,并且相同区段285的一部分在一个或多个其他FPGA 220中实现。
主机系统120包括描述区段285A的区段文件280A,描述区段285B的区段文件280B,描述区段285C的区段文件280C,以及描述区段285D的区段文件280D。假设在该示例中,需要区段285A的信号233,235,237和/或238的值用于分析DUT(例如,由主机系统120的用户请求追踪)。主机系统120可以从追踪存储器290A取回所追踪的信号232,234和236的值,并且使用区段文件280A和所取回的信号232,234和236的值作为输入来模拟区段285A。通过模拟区段285A,主机系统120可以产生信号233,235,237和238。因此,即使区段285A已经被FPGA220A仿真,主机系统120还将模拟区段285A以获得信号233,235,237和238的值。
在另一示例中,仅需要信号237的值用于分析DUT,但是主机系统120仍然从追踪存储器290A中取回所追踪的信号232,234和236的值,以模拟区段285A。通过模拟区段285A,主机系统120产生信号237。附加地,即使不请求这些信号233和235,主机系统120也可以产生信号233和235。
由于主机系统120可以通过模拟区段285A来获得这些信号233,235,237和238的值,所以仿真器110不必被配置成追踪那些信号233,235,237和238。在追踪数百万个信号的环境中,具有能够模拟DUT的区段的主机系统将显著地减少必须由FPGA 220追踪的信号的数量和在仿真器110和主机系统120之间交换的信号的值的数量,从而节省仿真资源,通信带宽并提高仿真速度。
进一步地,主机系统120仅模拟用于获得所需信号所必需的那些区段285。在该示例中,由于仅需要来自区段285A的信号的值,所以主机系统120仅模拟区段285A而不模拟区段285B,285C和285D,从而节省主机系统120的资源。然而,如果需要来自区段285B,285C和/或285D的信号的值,则那些区段可以与区段285A同时地或按顺序地通过主机系统120进行模拟。
在一个实施例中,主机系统120仅模拟区段285的一部分或子区段以获得用于执行分析的必要信号。例如,可能需要区段285A的信号233来执行分析或模拟另一区段285,而不需要其他信号234,235,236,237和238。在这种情况下,以信号232作为输入,可以仅对区段285A的子区段进行模拟以生成信号233,而不必模拟整个区段285A,。结果,可以减少执行模拟的硬件资源,并且可以更快地取得结果。
图3是更详细地图示了根据一个实施例的主机系统120的框图。该主机系统120包括设计编译器310、映射模块320、运行时(run time)模块330、模拟模块340、区段模块350、结果模块360和存储装置370。这些部件中的每个部件可以被实现为硬件、软件、固件或其组合。
设计编译器310将DUT的HDL转换为门级逻辑。对于要仿真的DUT,设计编译器310接收HDL中的DUT的描述(例如,RTL或其他抽象级)。设计编译器310综合DUT的HDL以根据门级逻辑创建具有DUT的描述的门级网表。
在一个实施例中,设计编译器310在DUT的仿真期间标识要由仿真器110追踪的DUT的信号。在一个实施例中,所标识的信号不包括DUT中的所有信号或DUT的所有状态。在一个实施例中,从用户或从另一系统接收指示应该被追踪的DUT的信号的信息。设计编译器310将信号追踪逻辑并入到DUT中,以使得能够追踪每个所标识的信号。在一个实施例中,设计编译器310在综合HDL之前并入信号追踪逻辑以创建网表。在该实施例中,在综合之前,设计编译器310从存储装置370取回信号追踪逻辑的HDL,并且对DUT的HDL进行编辑,以包括所取回的信号追踪逻辑的HDL。
在另一实施例中,设计编译器310在为DUT建立网表之后并入信号追踪逻辑。在该实施例中,设计编译器310从存储装置370中取回信号追踪逻辑的门级描述,并且对门级网表进行编辑以包括信号追踪逻辑的门级描述。
在另一实施例中,由设计编译器310接收的DUT的描述已经包括信号追踪逻辑。因此,在该实施例中,设计编译器310不需要添加信号追踪逻辑来追踪所标识的信号。
映射模块320将DUT映射到仿真器110的FPGA 220。在设计编译器310将信号追踪逻辑并入到DUT中并且创建门级网表之后,映射模块320使用网表将处于门级的DUT划分为若干个分区。在一个实施例中,映射模块320基于执行DUT分析所需的可用区段和/或信号通过标识要仿真的DUT的一个或多个分区来对DUT进行分区。映射模块320可以以只有最小数目个信号可以被仿真器110追踪的方式来标识一个或多个分区。在一个实施例中,映射模块320基于接口的可用带宽来标识一个或多个分区。可替代地,映射模块320可以以只有最小数目个区段可以由主机系统120来模拟的方式标识一个或多个分区。映射模块320将每个分区映射到仿真器110的对应的FPGA220。在一种途径中,映射模块320使用以下一项或多项来执行分区和映射:设计规则,设计约束(例如,定时约束或逻辑约束),FPGA220中的可用资源,对追踪存储器290的限制,由HDL形成的门,HDL源代码,用户输入以及关于仿真器110的信息。
映射模块320生成一个或多个二进制文件以配置FPGA以仿真其相应的分区。在一个实施例中,映射模块320为每个FPGA 220生成二进制文件。映射模块320将二进制文件存储在存储装置370中。映射模块320还在存储装置370中存储指示基于映射每个FPGA 220追踪哪些信号的信号信息。
区段模块350标识DUT将要由主机系统120的模拟模块340可用于进行模拟的区段。例如,区段模块350将DUT分成若干个区段。类似于映射模块320,区段模块350可以使用以下一项或多项来标识要由模拟模块340模拟的DUT的区段:模拟速度,HDL行数,由HDL产生的门数,所需输入信号数,模拟约束,设计规则,设计约束,用户输入和仿真器信息。区段模块350可以在考虑到设计本身而不考虑硬件容量的情况下创建区段来加速执行模拟或执行DUT的分析。例如,当创建区段时,区段模块350可以考虑接口的大小,信号的数目和/或区段的信号的时钟频率。另外,当创建区段时,区段模块350可以考虑时间或一个或多个处理器模拟区段所执行的进程的数目。在标识DUT的区段之后,区段模块350生成描述DUT的每个所标识的区段的设计(例如,电路)的区段文件。在一个实施例中,区段模块350为每个所标识的区段创建区段文件。区段模块350将区段文件存储在存储装置370中。区段模块350还在存储装置370中存储信号信息,其针对每个所描述的区段描述了当模拟该区段时追踪的DUT信号以及模拟该区段所需的DUT的信号(例如,输入信号)。
所标识的区段可以包括分区的一部分或整个分区。在一个实施例中,所标识的区段的集合体塑造了整个DUT。然而,如下文所描述的,不是所有区段同时由模拟模块340模拟。在另一实施例中,所标识的区段的集合体仅塑造DUT的一部分。在又一实施例中,DUT的一部分可以被包括在多个区段中。
运行时模块330配置仿真器110用于执行DUT的仿真。运行时模块330经由接口115向仿真器110传送存储在存储装置370中的用于DUT的二进制文件,以配置仿真器110的FPGA220以仿真DUT。运行时模块330指令仿真器110仿真DUT。在一个实施例中,在仿真开始之前或在DUT的仿真期间,运行时模块330向仿真器110传送输入参数和/或状态机以配置和控制DUT的仿真。
模拟模块340模拟DUT的区段。模拟模块340可以模拟任何类型的区段。由模拟模块340模拟的区段包括组合的,顺序的或两种类型的电路的组合。在一个实施例中,模拟模块340可以模拟电路的不可综合部分。在另一实施例中,模拟模块340是不能计算除了信号之外任何其他内容的软件,而在另一实施例中,模拟模块340可以用于计算任何种类的电路,不限于被编译到仿真器的电路。
模拟模块340接收指示用于执行DUT的分析或验证所需的DUT的信号的验证设置。验证设置可以包括追踪某些信号的请求或用于分析DUT的状态机。验证设置可以从用户接收,从另一系统接收,或者可以是仿真器110或DUT的一部分。
模拟模块340基于验证设置来标识需要获得的DUT的信号的值。模拟模块340根据存储在存储装置370中的信号信息标识当被模拟时DUT的哪些区段产生一个或多个所标识的信号。模拟模块340还确定需要哪些信号来模拟所标识的区段。模拟模块340标识已经由仿真器110追踪的所需信号。如果还没有从仿真器110获得所需的信号,则模拟模块340从仿真器110请求并且接收该信号。在一个实施例中,如果模拟所标识的区段所需的信号未被仿真器110追踪到,则模拟模块340模拟一个或多个区段以获得所需的信号。
基于可获得的信号的值与每个区段所需的输入之间的对应关系,模拟模块340确定要模拟的区段。在一个实施例中,模拟模块340以要求产生所需信号需要的最小数目个区段或最小数目个输入信号的方式来标识要模拟的区段。可替代地,模拟模块340基于接口115的可用带宽来标识要模拟的区段。
在一个实施例中,对于一个或多个区段,代替确定模拟整个区段,模拟模块340可以确定仅模拟DUT的该区段的一部分或子区段以产生所标识的信号中的一个或多个信号。可以标识区段或该区段的子区段,使得最小数目个信号被追踪或最小数目个区段被模拟。
模拟模块340使用所获得(例如,来自仿真器110或通过模拟其他区段)的信号的值来模拟所标识的区段中的每个区段。模拟模块340还可以使用所提供的输入参数(例如,来自用户)来模拟区段。模拟模块340将在区段的模拟期间所追踪的信号的值存储在存储装置370中。在一个实施例中,模拟模块340还从仿真器110中取回在验证设置中标识的信号,这些信号在仿真DUT时已经被仿真器110追踪。模拟模块340将从仿真器110中取回的所追踪的信号的值存储在存储装置370中。
作为示例,返回到图2,假设基于验证设置,确定需要追踪区段285A中的信号237,但是信号237未被仿真器110追踪。在这种情况下,模拟模块340将模拟区段285A以获得信号237。
如上文所描述的,可以模拟附加区段以产生模拟区段所需的输入信号。例如,假设做出模拟区段285D以从区段285D获得某个信号值的确定。进一步假设来自区段285A的信号233是区段285D的输入。为了能够模拟区段285D,首先模拟区段285A以产生信号233。一旦获得信号233,就可以模拟区段285D。
模拟模块340被调用并且根据接口115的状态来取回所追踪的信号。在一个实施例中,仿真器110和主机系统120之间的接口115在DUT的仿真期间被启用。模拟模块340在由仿真器110执行的DUT的仿真期间取回由仿真器110追踪的信号的值。模拟模块340还在DUT的仿真期间模拟所标识的区段。
在一个实施例中,当接口115被启用的同时,仿真器110将全部或一些被追踪的值存储在存储装置370中。不管DUT是否被仿真,模拟模块340可以取回由仿真器110存储在存储装置370中的信号的值,并且模拟DUT的一些区段以便提供尚未被存储的信号值。模拟模块340然后可以将所模拟的信号值存储到存储装置370中,或在GUI界面上提供这些值,或向在主机系统120上运行的脚本或软件程序提供这些值,该脚本或软件程序可能请求了那些值中的一些值。
在一个实施例中,主机系统120和仿真器110之间的接口115在仿真期间被禁用,并且在仿真完成之后被启用。在主机系统120完成DUT或DUT的一部分的仿真之后,执行模拟。当仿真完成时,模拟模块340经由接口115取回在仿真过程中追踪的信号,并且模拟所标识的区段。
在一个实施例中,模拟模块340被调用并且以交互模式取回所追踪的信号。在交互模式中,模拟模块340被监视信号或信号的小集合的用户在某个时刻调用。用户通常在如Synopsys公司的Verdi波形查看器之类的GUI界面中请求或选择所需信号。模拟模块340基于所监视的信号通过模拟来获得附加信号值。模拟可以在用于运行Verdi的系统(例如,主机系统)上本地执行。
在一个实施例中,模拟模块340被调用并且以非交互模式取回所追踪的信号。模拟模块340可以在没有用户请求的情况下操作,而是可以基于在仿真之前提供的脚本来操作。当该信号集合大到全部设计时,可以采用非交互模式。
结果模块360提供来自仿真DUT以及模拟DUT的区段的结果。结果模块360处理由DUT区段的模拟产生的所追踪的信号的值和从仿真器110取回的所追踪的信号的值。在一个实施例中,结果模块360从存储装置370中取回所追踪的信号的值,并且生成包括所追踪的信号的值的表示的用户界面以向用户显示。在一个实施例中,结果模块360是生成所追踪的信号的波形用于显示的波形观察器。在一个实施例中,结果模块360包括API,其用于创建所追踪的信号的视觉波形,用于向用户显示。处理所追踪的信号还可以包括结果模块360基于所追踪的信号来对事件进行计数。在另一实施例中,结果模块360包括处理信号值以基于信号值或信息的显示来产生信息的二进制程序(从系统C模型,C/C++模型或任何其他软件语言获得)或脚本。
在一个实施例中,主机系统120的一个或多个功能可以在另一计算机(例如,专用计算机或机器的集合)处执行。例如,设计编译器310和映射模块320可以包括在用于编译和对DUT分区的另一计算机中。
图4是图示了根据一个实施例的准备用于仿真DUT的主机系统120的流程图。其他实施例可以以不同次序执行图4的步骤。而且,其他实施例可以包括与这里描述的步骤不同的和/或附加的步骤。
主机系统120从用户获得410HDL中的DUT的描述。基于DUT的描述,主机系统120生成用于在仿真器110中仿真DUT并且用于在主机系统120中的区段的配置文件。优选地,主机系统120生成要加载到仿真器110的FPGA 220的二进制文件以及当需要模拟一个或多个区段时要由主机系统120使用的区段文件。在一个实施例中,主机系统120并行地生成二进制文件和区段文件。
为了生成二进制文件,主机系统120综合420DUT的HDL描述以创建门级网表。在一个实施例中,主机系统120还获得在仿真期间应该可追踪的DUT的信号的预先确定的列表。为了能够追踪每个信号,主机系统120将信号追踪逻辑并入到DUT中。在一个实施例中,主机系统120在综合HDL描述之前通过编辑DUT的HDL描述来并入信号追踪逻辑。在另一实施例中,在通过编辑网表综合HDL描述之后并入信号追踪逻辑。在另一实施例中,由主机系统120获得的DUT的描述包括信号追踪逻辑。
主机系统120使用门级网表将处于门级的DUT划分430为若干个分区。在一个实施例中,主机系统120基于执行DUT的分析所需的可用区段和/或信号通过标识要仿真的DUT的一个或多个分区来划分DUT。主机系统120可以以可以仅追踪最小数目个信号的方式标识一个或多个分区。可替代地,主机系统120可以以主机系统120将仅需要模拟最少数目个区段的方式来标识一个或多个分区。主机系统120将每个分区映射440到仿真器110的FPGA 220。主机系统120生成450二进制文件,其包括信息以配置FPGA 220来仿真其相应的经映射的DUT分区。
为了生成区段文件,主机系统120标识460将要可用于模拟的DUT的区段(例如,将DUT划分成若干个区段)。在标识DUT的区段之后,主机系统120为每个区段生成470描述该区段的设计的区段文件。主机系统120存储区段文件。标识DUT的区段可以基于以下至少一项:分别针对步骤420,430和440的DUT的综合,划分和映射。DUT的所标识的区段中的信号列表可以至少用于以下任一项:分别针对步骤420,430,440和450的DUT的综合,划分,映射和生成二进制文件。
在生成用于FPGA 220的二进制文件和用于模拟模块340的区段文件二者之后,主机系统120存储480用于每个分区的信号信息,其指示在分区被仿真时追踪哪些信号。主机系统120还针对每个区段存储指示在该区段被模拟时追踪哪些信号的的信号信息,以及指示需要哪些输入信号来模拟该区段的信息。存储480可以在数据库、文件、硬盘、存储器或外部存储设备中的一个或多个中进行。
图5是根据一个实施例的配置主机系统120和仿真器110用于追踪DUT的某些信号的流程图。其他实施例可以以不同次序执行图5的步骤。而且,其他实施例可以包括与这里描述的步骤不同的和/或附加的步骤。
主机系统120向仿真器传送510二进制文件以配置仿真器110的FPGA220来仿真DUT。主机系统向仿真器110传送520指令以仿真DUT。
主机系统120标识530用于分析DUT所需的(例如,用户所需的或系统所需的)DUT的信号。主机系统120基于所标识的信号确定540哪些区段要从区段池中模拟以能够获得所标识的信号。主机系统120以需要最少数目个区段或最小数目个输入信号(或所追踪的信号)来产生所需信号的方式来确定要模拟的区段。主机系统120确定当被模拟时要模拟生成所标识的信号中的一个或多个信号的区段。主机系统120可以确定要模拟区段的子区段而非整个区段。主机系统120还确定550由仿真器110追踪的信号以取回用于模拟所确定的区段。
主机系统120从仿真器110获得560所确定的被追踪信号。如果仿真器110已经追踪到了用于分析DUT所需的信号,则主机系统120还从仿真器110获得该信号。主机系统120使用从仿真器110获得的所追踪的信号和描述区段的设计的区段文件来模拟570所确定的DUT的区段。基于这些区段的模拟,所需的DUT的信号被获得/追踪。
计算机体系架构
现在转到图6,其是图示了能够从机器可读介质读取指令并且在一个或多个处理器(或控制器)中执行它们的示例机器的部件的框图。特定地,图6示出了计算机系统600的示例形式的机器的图解的标识,在该计算机系统内,指令624(例如,软件或程序代码)用于使得机器进行(执行)随图1至图5而描述的方法论中的任一种或多种方法论。另外,计算机系统600可以用于图1的仿真环境100中图示的实体中的一个或多个实体(例如,主机系统120,仿真器110)。
示例计算机系统600包括处理器602(例如,中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、一个或多个专用集成电路(ASIC)、一个或多个射频集成电路(RFIC)或这些的任何组合)、主存储器604和静态存储器606,其被配置成经由总线608彼此通信。计算机系统600还可以包括图形显示单元610(例如,等离子体显示面板(PDP)、液晶显示器(LCD)、投影仪或阴极射线管(CRT))。计算机系统600还可以包括字母数字输入设备612(例如,键盘)、光标控制设备614(例如,鼠标、轨迹球、操纵杆、运动传感器或其他指示仪器)、存储单元616、信号生成设备618(例如,扬声器)和网络接口设备620,其还被配置成经由总线608进行通信。另外,计算机系统600可以具有触敏显示器。
存储单元616包括机器可读介质622,在其上存储有实现本文中所描述的方法论或功能中的任一种或多种方法论或功能的指令624(例如,软件)。在通过计算机系统600执行期间,指令624(例如,软件)还可以完全地或至少部分地驻留在主存储器604内或处理器602内(例如,在处理器的高速缓冲存储器内),主存储器604和处理器602也构成机器可读介质。指令624(例如,软件)可以经由网络接口设备620通过网络626被传送或接收。
虽然在示例实施例中将机器可读介质622示为单个介质,但是术语“机器可读介质”应当被认为包括单个介质或多个介质(例如,集中式数据库或分布式数据库,或相关联的高速缓存和服务器),其能够存储指令(例如,指令624)。术语“机器可读介质”还应被视为包括能够存储指令(例如,指令624)以供机器执行并且使得机器执行本文中所公开的方法论中的任一种或多种方法论的任何介质。术语“机器可读介质”包括但不限于以固态存储器、光学介质和磁介质形式的数据存储库。
如本领域已知的,计算机系统600可以具有与图6所示的不同的和/或其他部件。另外,计算机系统600可能缺少某些所图示的部件。例如,用作仿真器110的计算机系统600可以包括一个或多个硬件处理器602、多个存储单元616、网络接口设备620和多个可配置逻辑电路(如上参考图1所描述的),以及其他部件,但可能缺少字母数字输入设备612和光标控制设备614。再如,用作主机系统120的计算机系统600可以包括一个或多个硬件处理器602。具有多个处理器602的主机系统120可以并行地在多个线程、进程和/或机器上执行多个模拟。区段的子集可以由用户分布或由软件程序自动分布,以通过并行执行的模拟基于输入信号集合来产生信号集合。
附加配置考虑
有利地,所公开的系统和方法可以实现仿真资源和模拟资源的节省。通过仅从仿真器追踪几个信号(例如,区段的边界),仿真器不必追踪所有信号。因此,在仿真器和主机系统之间交换较少信号的值,因此可以节省通信带宽或吞吐量。使用几个所追踪的信号,被仿真和验证的DUT的大小变得可扩展。另外,通过选择具有最小数目个区段或最小数目个输入信号的区段以产生用于执行分析的所需信号,可以节省仿真资源和模拟资源,并且可以提高获得所需信号的值的速度。
应当注意,尽管在用于仿真数字电路和系统的仿真环境的上下文中对主题进行了描述,但是所描述的原理可以应用于任何数字电子设备的分析。而且,虽然本文中的示例在包括FPGA的仿真环境的上下文中,但是本文中所描述的原理可以应用于任何数字逻辑电路的硬件实现方式或诸如EDA之类的软件模拟的其他分析。
在整个说明书中,多个实例可以实现被描述为单个实例的部件、操作或结构。尽管一种或多种方法的个体操作被图示并且描述为单独操作,但是可以同时执行个体操作中的一个或多个操作,并且不需要操作以所图示的次序执行。作为示例配置中的单独部件呈现的结构和功能性可以被实现为组合的结构或部件。类似地,作为单个部件呈现的结构和功能性可以被实现为单独的部件。这些和其他变化、修改、添加和改进落入本文的主题的范围内。
如图1至图5所图示的,某些实施例在本文中被描述为例如包括逻辑或若干个部件,模块(本文中还可以被称为“工具”)或机构。模块可以构成软件模块(例如,在机器可读介质上或传输信号中呈现的代码)或硬件模块。硬件模块是能够执行某些操作的有形单元,并且可以以某种方式配置或布置。在示例实施例中,一个或多个计算机系统(例如,独立的计算机、客户端或服务器计算机系统)或计算机系统的一个或多个硬件模块(例如,处理器或处理器组)可以通过软件(例如,应用或应用部分)被配置,作为操作以执行如本文中所描述的某些操作的硬件模块。
在一些实施例中,可以以电子形式实现硬件模块。例如,硬件模块可以包括永久配置的专用电路或逻辑(例如,作为专用处理器,诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC))来执行某些操作。硬件模块还可以包括通过软件被暂时地配置成执行某些操作的可编程逻辑或电路(例如,如涵盖在通用处理器或其他可编程处理器内)。本文中所实现的硬件模块可以在专用和永久配置的电路中或在暂时配置的电路(例如,由软件配置的)中实现。
至少部分地由一个或多个处理器(例如,处理器602)执行本文中所描述的示例方法的各种操作,该处理器被暂时地配置(例如,通过软件)或被永久地配置成执行相关操作。无论是暂时还是永久配置,这些处理器可以构成操作以执行一个或多个操作或功能的处理器实现的模块。在一些示例实施例中,本文中所引用的模块可以包括处理器实现的模块。
一个或多个处理器还可以操作以支持相关操作在“云计算”环境中的执行或作为“软件即服务”(SaaS)来执行。例如,操作中的至少一些操作可以由计算机组(作为包括处理器的机器的示例)执行,这些操作可经由网络(例如,因特网)和经由一个或多个适当的接口(例如,应用程序接口(API))访问。
操作中的某些操作的性能可以在一个或多个处理器之间进行分布,不仅仅驻留在单个机器内,而且跨越多个机器部署。在一些示例实施例中,一个或多个处理器或处理器实现的模块可以位于单个地理位置(例如,在家庭环境,办公室环境或服务器群内)。在其他示例实施例中,一个或多个处理器或处理器实现的模块可以跨越若干个地理位置分布。
本说明书的一些部分按照在机器存储器(例如,计算机存储器)内被存储为位或二进制数字信号的数据上的操作的算法或符号表示来呈现。这些算法或符号表示是数据处理领域中的普通技术人员用于将其工作的实质传达给本领域技术人员的技术的示例。如本文中所使用的,“算法”是导致所需结果的自洽的操作序列或类似的处理。在该上下文中,算法和操作涉及物理量的物理操作。通常但不一定,这样的数量可以采取能够被机器存储、访问、传送、组合、比较或以其他方式操纵的电、磁或光信号的形式。有时,主要是出于通常用途的原因,使用诸如“数据”、“内容”、“位”、“值”、“元件”、“符号”、“字符”、“术语”、“编号”、“数字”等之类的单词来引用这些信号。然而,这些词仅仅是方便的标签,并且要与适当的物理量相关联。
除非另有说明,否则本文中使用诸如“处理”、“运算”、“计算”、“确定”、“呈现”、“显示”等之类的单词的讨论可以是指机器(例如,计算机)的动作或过程,其在一个或多个存储器(例如,易失性存储器、非易失性存储器或其组合)、寄存器、或接收、存储、传输或显示信息的其他机器部件内操作或变换表示为物理(例如,电子、磁或光)量的数据。
如本文中所使用的,对“一个实施例”或“一实施例”的任何引用意味着结合该实施例描述的具体元件、特征、结构或特性包括在至少一个实施例中。在说明书中的各个地方的短语“在一个实施例中”的出现不一定都是指相同的实施例。
可以使用表达“耦合”和“连接”以及它们的派生词来描述一些实施例。例如,可以使用术语“耦合”来描述一些实施例,以指示两个或多个元件处于直接物理或电接触。然而,术语“耦合”还可能意味着两个或更多个元件彼此不直接接触,但仍然彼此协作或相互作用。实施例在本上下文中不受限制。
如本文中所使用的,术语“包括(comprises)”、“包括(comprising)”、“包含(includes)”、“包含(including)”、“具有(has)”、“具有(having)”或其任何其他变型旨在覆盖非排他性的包含。例如,包括元件列表的过程、方法、物品或装置不一定仅限于那些元件,而是可以包括未明确列出的或这些过程、方法、物品或装置固有的其他元件。进一步地,除非有明确相反的记载,否则“或”是指包含性的或不是排他的或。例如,条件A或B满足以下各项中的任一项:A为真(或存在)以及B为假(或不存在),A为假(或不存在)以及B为真(或存在),A和B都是真(或存在)。
另外,使用“一(a)”或“一个(an)”来描述本文中的实施例的元件和部件。这仅仅为了方便起见,并且给出了本发明的一般意义。该描述应该被解读为包括一个或至少一个,并且单数还包括复数,除非其显然另有含义。
在阅读本公开之后,本领域技术人员将领会用于执行本文中所描述的原理的附加的备选结构设计和功能设计。因此,虽然已经图示并且描述了具体实施例和应用,但是应当理解,所公开的实施例不限于本文中所公开的精确构造和部件。在不背离所附权利要求限定的精神和范围的情况下,可以在本文中所公开的方法和装置的布置、操作和细节中做出对本领域技术人员是明显的的各种修改、改变和变型。
Claims (20)
1.一种在主机系统上执行用于减少所述主机系统和仿真器之间的带宽的计算机实现的方法,所述方法包括:
由所述主机系统标识要追踪的被测设计(DUT)的第一信号,所述DUT包括多个区段,所述主机系统具有多个区段文件,每个区段文件对应于所述DUT的所述多个区段文件中的相应区段文件;
基于所述多个区段文件,标识所述DUT的区段,所述区段在被模拟时提供所述第一信号;
基于所标识的区段,确定由所述仿真器追踪的第二信号;
接收由所述仿真器追踪的第二信号;以及
使用接收到的第二信号来生成所述第一信号。
2.根据权利要求1所述的方法,还包括生成用于评估所述DUT的功能的第三信号,所述第三信号未被请求被追踪。
3.根据权利要求1所述的方法,还包括:
创建所述DUT的多个分区,其中一个分区对应于所述多个区段中的一个或多个区段;以及
创建多个二进制文件,其中每个二进制文件描述所述DUT的相应分区并且将所述相应分区映射到现场可编程门阵列(FPGA)。
4.根据权利要求3所述的方法,进一步包括将所述多个二进制文件发送到所述仿真器,其中所述仿真器使用所述多个二进制文件来配置多个FPGA。
5.根据权利要求1所述的方法,进一步包括:
标识所述多个区段中的至少一个区段,所标识的区段包括所述第一信号,其中所述第一信号不被所述仿真器追踪;以及
创建多个区段文件,所述多个区段文件中的区段文件描述所标识的区段的电路。
6.根据权利要求5所述的方法,其中所标识的至少一个区段包括第一区段和第二区段,进一步包括:
基于由所述仿真器追踪的第二信号,生成所述第一区段的第三信号;以及
基于所述第一区段的第三信号,生成所述第二区段的第一信号。
7.根据权利要求1所述的方法,进一步接收用以追踪所述第一信号的用户请求。
8.根据权利要求1所述的方法,其中在完成对所述DUT的仿真之后,所述第二信号与来自所述仿真器的附加信号一起被接收。
9.根据权利要求1所述的方法,进一步包括生成用于显示的用户界面,所述用户界面包括所述第一信号和所述第二信号的相应值。
10.根据权利要求1所述的方法,进一步包括基于信号的数目或者所述主机系统模拟每个分段所执行的进程的数目来生成所述多个分段。
11.一种存储指令的非暂态计算机可读介质,所述指令在被主机系统执行时,使得所述主机系统:
标识要追踪的被测设计(DUT)的第一信号,所述DUT包括多个区段,所述主机系统具有多个区段文件,每个区段文件对应于所述DUT的所述多个区段文件中的相应区段文件;
基于所述多个区段文件,标识所述DUT的区段,所述区段在被模拟时提供所述第一信号;
基于所标识的区段,确定由所述仿真器追踪的第二信号;
接收由所述仿真器追踪的第二信号;以及
使用接收到的第二信号来生成所述第一信号。
12.根据权利要求11所述的非暂态计算机可读介质,其中所述指令进一步使得所述主机系统生成用于评估所述DUT的功能的第三信号,所述第三信号未被请求被追踪。
13.根据权利要求11所述的非暂态计算机可读介质,其中所述指令进一步使得所述主机系统:
创建所述DUT的多个分区,其中一个分区对应于所述多个区段中的一个或多个区段;以及
创建多个二进制文件,其中每个二进制文件描述所述DUT的相应分区并且将所述相应分区映射到现场可编程门阵列(FPGA)。
14.根据权利要求13所述的非暂态计算机可读介质,其中所述指令进一步使得所述主机系统将所述多个二进制文件发送到所述仿真器,其中所述仿真器使用所述多个二进制文件来配置多个FPGA。
15.根据权利要求11所述的方法,其中所述指令进一步使得所述主机系统:
标识所述多个区段中的至少一个区段,所标识的区段包括所述第一信号,其中所述第一信号不被所述仿真器追踪;以及
创建多个区段文件,所述多个区段文件中的区段文件描述所标识的区段的电路。
16.根据权利要求15所述的方法,其中所标识的至少一个区段包括第一区段和第二区段,并且其中所述指令进一步使得所述主机系统:
基于由所述仿真器追踪的第二信号,生成所述第一区段的第三信号;以及
基于所述第一区段的第三信号,生成所述第二区段的第一信号。
17.根据权利要求11所述的方法,其中所述指令进一步使得所述主机系统接收用以追踪所述第一信号的用户请求。
18.根据权利要求11所述的方法,其中在完成对所述DUT的仿真之后,所述第二信号与来自所述仿真器的附加信号一起被接收。
19.根据权利要求11所述的方法,其中所述指令进一步使得所述主机系统生成用于显示的用户界面,所述用户界面包括所述第一信号和所述第二信号的相应值。
20.根据权利要求11所述的方法,其中所述指令进一步使得所述主机系统基于信号的数目或者所述主机系统模拟每个分段所执行的进程的数目来生成所述多个分段。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/703,718 | 2015-05-04 | ||
US14/703,718 US9286424B1 (en) | 2015-05-04 | 2015-05-04 | Efficient waveform generation for emulation |
US15/007,040 US9852244B2 (en) | 2015-05-04 | 2016-01-26 | Efficient waveform generation for emulation |
US15/007,040 | 2016-01-26 | ||
CN201680024377.8A CN107533473B (zh) | 2015-05-04 | 2016-02-04 | 用于仿真的高效波形生成 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680024377.8A Division CN107533473B (zh) | 2015-05-04 | 2016-02-04 | 用于仿真的高效波形生成 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112905298A true CN112905298A (zh) | 2021-06-04 |
Family
ID=57218276
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680024377.8A Active CN107533473B (zh) | 2015-05-04 | 2016-02-04 | 用于仿真的高效波形生成 |
CN202110189829.0A Pending CN112905298A (zh) | 2015-05-04 | 2016-02-04 | 用于仿真的高效波形生成 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680024377.8A Active CN107533473B (zh) | 2015-05-04 | 2016-02-04 | 用于仿真的高效波形生成 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9852244B2 (zh) |
EP (1) | EP3292467A4 (zh) |
JP (1) | JP6600011B2 (zh) |
CN (2) | CN107533473B (zh) |
WO (1) | WO2016178724A2 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10120965B2 (en) * | 2015-09-30 | 2018-11-06 | Synopsys, Inc. | Waveform based reconstruction for emulation |
CN116796672A (zh) | 2016-11-11 | 2023-09-22 | 美商新思科技有限公司 | 用于仿真的基于波形的重构 |
US11169895B2 (en) | 2020-01-27 | 2021-11-09 | International Business Machines Corporation | Emulation latch to capture state |
US11244096B2 (en) | 2020-04-29 | 2022-02-08 | International Business Machines Corporation | Simulating operation of an electronic device tracing using port mirroring |
US11023635B1 (en) * | 2020-07-27 | 2021-06-01 | Synopsys, Inc. | Sequence of frames generated by emulation and waveform reconstruction using the sequence of frames |
CN111931445B (zh) * | 2020-10-09 | 2020-12-29 | 芯华章科技股份有限公司 | 用于调试逻辑系统设计的方法、仿真器及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090248390A1 (en) * | 2008-03-31 | 2009-10-01 | Eric Durand | Trace debugging in a hardware emulation environment |
CN101952827A (zh) * | 2008-04-30 | 2011-01-19 | 新思科技有限公司 | 用于执行硬件仿真和验证解决方案的方法和装置 |
CN103927219A (zh) * | 2014-05-04 | 2014-07-16 | 南京大学 | 可重构专用处理器核的周期精确的仿真模型及其硬件架构 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5680583A (en) | 1994-02-16 | 1997-10-21 | Arkos Design, Inc. | Method and apparatus for a trace buffer in an emulation system |
US5790832A (en) | 1996-04-23 | 1998-08-04 | Mentor Graphics Corporation | Method and apparatus for tracing any node of an emulation |
US6134516A (en) | 1997-05-02 | 2000-10-17 | Axis Systems, Inc. | Simulation server system and method |
US6009256A (en) | 1997-05-02 | 1999-12-28 | Axis Systems, Inc. | Simulation/emulation system and method |
US6061511A (en) | 1998-06-12 | 2000-05-09 | Ikos Systems, Inc. | Reconstruction engine for a hardware circuit emulator |
US7379860B1 (en) | 2002-03-29 | 2008-05-27 | Cypress Semiconductor Corporation | Method for integrating event-related information and trace information |
US7089135B2 (en) * | 2002-05-20 | 2006-08-08 | Advantest Corp. | Event based IC test system |
US7440884B2 (en) | 2003-01-23 | 2008-10-21 | Quickturn Design Systems, Inc. | Memory rewind and reconstruction for hardware emulator |
US7379861B2 (en) | 2004-05-28 | 2008-05-27 | Quickturn Design Systems, Inc. | Dynamic programming of trigger conditions in hardware emulation systems |
US7571086B2 (en) | 2005-11-04 | 2009-08-04 | Springsoft Usa, Inc. | Incremental circuit re-simulation system |
JP4589255B2 (ja) * | 2006-03-13 | 2010-12-01 | 富士通株式会社 | ハードウェア/ソフトウェア協調検証装置 |
JP2008226083A (ja) | 2007-03-15 | 2008-09-25 | Nec Electronics Corp | オンチップ・デバッグ・エミュレータおよびデバッグ方法並びにマイクロコンピュータ |
US8706467B2 (en) * | 2008-04-02 | 2014-04-22 | Synopsys, Inc. | Compact circuit-simulation output |
US20090259457A1 (en) | 2008-04-14 | 2009-10-15 | Mentor Graphics Corporaton | Trace Routing Network |
US8504344B2 (en) * | 2008-09-30 | 2013-08-06 | Cadence Design Systems, Inc. | Interface between a verification environment and a hardware acceleration engine |
US10423740B2 (en) | 2009-04-29 | 2019-09-24 | Synopsys, Inc. | Logic simulation and/or emulation which follows hardware semantics |
US8898051B2 (en) | 2009-06-12 | 2014-11-25 | Cadence Design Systems, Inc. | System and method for implementing a trace interface |
CN101996262B (zh) * | 2009-08-12 | 2012-07-25 | 上海华虹集成电路有限责任公司 | 非接触式智能卡通用数字验证平台 |
US8738350B2 (en) * | 2010-03-04 | 2014-05-27 | Synopsys, Inc. | Mixed concurrent and serial logic simulation of hardware designs |
US8751998B2 (en) * | 2011-07-01 | 2014-06-10 | Altera Corporation | Method and system for partial reconfiguration simulation |
CN102521473B (zh) * | 2012-01-06 | 2014-04-16 | 江苏省电力公司电力科学研究院 | 基于DIgSILENT的并网型光伏仿真发电系统 |
US8982936B2 (en) * | 2012-04-10 | 2015-03-17 | Insight Scientific International (Shanghai) Ltd. | Method and apparatus for simultaneous RF testing of multiple devices in specific frequency bands |
US8739091B1 (en) | 2012-11-19 | 2014-05-27 | International Business Machines Corporation | Techniques for segmenting of hardware trace and verification of individual trace segments |
US9959375B2 (en) * | 2014-10-06 | 2018-05-01 | Synopsys, Inc. | Efficient emulation and logic analysis |
-
2016
- 2016-01-26 US US15/007,040 patent/US9852244B2/en active Active
- 2016-02-04 JP JP2017555800A patent/JP6600011B2/ja active Active
- 2016-02-04 CN CN201680024377.8A patent/CN107533473B/zh active Active
- 2016-02-04 CN CN202110189829.0A patent/CN112905298A/zh active Pending
- 2016-02-04 EP EP16789705.7A patent/EP3292467A4/en not_active Ceased
- 2016-02-04 WO PCT/US2016/016660 patent/WO2016178724A2/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090248390A1 (en) * | 2008-03-31 | 2009-10-01 | Eric Durand | Trace debugging in a hardware emulation environment |
CN101952827A (zh) * | 2008-04-30 | 2011-01-19 | 新思科技有限公司 | 用于执行硬件仿真和验证解决方案的方法和装置 |
CN103927219A (zh) * | 2014-05-04 | 2014-07-16 | 南京大学 | 可重构专用处理器核的周期精确的仿真模型及其硬件架构 |
Non-Patent Citations (1)
Title |
---|
JOSHUA MARANTZ: "Enhanced visibility and performance in functional verification by reconstruction", DESIGN AUTOMATION CONFERENCE, 19 June 1998 (1998-06-19), pages 164 - 169 * |
Also Published As
Publication number | Publication date |
---|---|
WO2016178724A3 (en) | 2016-12-15 |
CN107533473B (zh) | 2021-03-02 |
US20160328499A1 (en) | 2016-11-10 |
JP2018524652A (ja) | 2018-08-30 |
EP3292467A4 (en) | 2018-12-26 |
US9852244B2 (en) | 2017-12-26 |
JP6600011B2 (ja) | 2019-10-30 |
WO2016178724A2 (en) | 2016-11-10 |
EP3292467A2 (en) | 2018-03-14 |
CN107533473A (zh) | 2018-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107533473B (zh) | 用于仿真的高效波形生成 | |
US9959376B2 (en) | Isolated debugging in an FPGA based emulation environment | |
US9286424B1 (en) | Efficient waveform generation for emulation | |
US9959375B2 (en) | Efficient emulation and logic analysis | |
JP6527226B2 (ja) | 効率的な電力解析 | |
US9547040B2 (en) | Efficient event detection | |
US10235483B2 (en) | Capturing time-slice of emulation data for offline embedded software debug | |
US9910944B2 (en) | X-propagation in emulation using efficient memory | |
CN106802972B (zh) | 时钟抖动仿真 | |
US10331825B2 (en) | Waveform based reconstruction for emulation | |
US9959381B2 (en) | Placing and routing debugging logic | |
US9659118B2 (en) | X-propagation in emulation | |
US9684755B2 (en) | Isolation of IP units during emulation of a system on a chip | |
US9958917B1 (en) | Generalized resettable memory | |
Plyaskin et al. | A method for accurate high-level performance evaluation of MPSoC architectures using fine-grained generated traces | |
Uddin et al. | Analytical-based high-level simulation of the microthreaded many-core architectures | |
EP3248103B1 (en) | X-propagation in emulation | |
Yi et al. | I/O Modeling and Refinement for HW/SW Codesign of Embedded Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |