CN117272883A - 电路设计的分布式仿真同步 - Google Patents

电路设计的分布式仿真同步 Download PDF

Info

Publication number
CN117272883A
CN117272883A CN202310735176.0A CN202310735176A CN117272883A CN 117272883 A CN117272883 A CN 117272883A CN 202310735176 A CN202310735176 A CN 202310735176A CN 117272883 A CN117272883 A CN 117272883A
Authority
CN
China
Prior art keywords
client device
simulation
clock signal
data
simulation data
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
Application number
CN202310735176.0A
Other languages
English (en)
Inventor
P·比斯瓦斯
S·萨赫
T·C·V·K·梅卡
S·贾因
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Synopsys Inc
Original Assignee
Synopsys Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Synopsys Inc filed Critical Synopsys Inc
Publication of CN117272883A publication Critical patent/CN117272883A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/02CAD in a network environment, e.g. collaborative CAD or distributed simulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

一种用于使用分布式仿真系统的系统和方法,包括由第一客户端设备在第一仿真环境内仿真电路设计的第一部分,以生成第一仿真数据。此外,由第二客户端设备在第二仿真环境内仿真电路设计的第二部分,以生成第二仿真数据。第一仿真数据和第二仿真数据彼此异步地生成。此外,第一仿真数据和第二仿真数据在主客户端设备处彼此同步地被接收。

Description

电路设计的分布式仿真同步
技术领域
本公开总体涉及电子设计自动化(EDA)系统,并且更具体地,涉及用于将电路设计的分布式仿真进行同步的系统和方法。
背景技术
电路设计被仿真以验证电路设计的功能。分布式仿真模型被应用于电路设计以减少用于仿真电路设计的时间量。分布式仿真模型被应用于包括多个集成电路(IC)芯片(或裸片)、人工智能(AI)芯片和大型处理器设计的电路设计,以减少仿真期间花费的时间。在分布式仿真模型中,电路设计的不同部分由不同的客户端设备进行仿真。
发明内容
一种方法包括:接收电路设计,以及由第一客户端设备在第一仿真环境内仿真电路设计的第一部分以生成第一仿真数据。方法还包括由第二客户端设备在第二仿真环境内仿真电路设计的第二部分以生成第二仿真数据。第一仿真数据和第二仿真数据彼此异步地生成。此外,方法包括在主客户端设备处接收第一仿真数据和第二仿真数据。第一仿真数据和第二仿真数据彼此同步地由主客户端设备接收。此外,电路设计的功能基于第一仿真数据和第二仿真数据被确定。
一种系统包括第一客户端设备、第二客户端设备和第三客户端设备。第一客户端设备在第一仿真环境内仿真电路设计的第一部分以生成第一仿真数据。第二客户端设备在第二仿真环境内仿真电路设计的第二部分以生成第二仿真数据。第一仿真数据和第二仿真数据彼此异步地生成。第三客户端设备从第一客户端设备与第二客户端设备彼此同步地接收第一仿真数据与第二仿真数据。电路设计的功能基于第一仿真数据和第二仿真数据被确定。
一种包括存储的指令的非暂态计算机可读介质。当指令由一个或多个处理器执行时,该指令使一个或多个处理器接收电路设计,电路设计包括第一本地时钟信号、第二本地时钟信号和主时钟信号。一个或多个处理器在第一仿真环境内仿真电路设计的第一部分,以基于第一本地时钟信号生成第一仿真数据。此外,一个或多个处理器在第二仿真环境内仿真电路设计的第二部分,以基于第二本地时钟信号生成第二仿真数据。一个或多个处理器还基于主时钟信号并且彼此同步地接收第一仿真数据和第二仿真数据。第一仿真数据和第二仿真数据彼此异步地并且与主时钟信号异步地生成。电路设计的功能基于第一仿真数据和第二仿真数据被确定。
附图说明
从下面给出的详细描述并且从本公开实施例的附图,将更充分地理解本公开。附图用于提供本公开的实施例的知识和理解,并且不将本公开的范围限制于这些特定实施例。此外,附图不一定按比例绘制。
图1图示了根据一个或多个示例的电路仿真系统的框图。
图2图示了根据一个或多个示例的用于将分布式仿真过程的仿真进行同步的方法。
图3图示了根据一个或多个示例的配置文件的连接。
图4图示了根据一个或多个示例的时钟信号波形。
图5A和图5B图示了根据一个或多个示例的仿真环境的阶段图。
图6图示了根据一个或多个示例的主时钟信号的波形和对应的读取请求和写入请求。
图7图示了根据一个或多个示例的与不同测试台相关联的阶段。
图8描绘了根据本公开的一些实施例的在集成电路的设计和制造期间使用的各种过程的流程图。
图9描绘了根据本公开的一些实施例的示例模拟系统的图。
图10描绘了本公开的实施例可以在其中操作的示例计算机系统的图。
具体实施方式
本公开的方面涉及将电路设计的分布式仿真(simulation)进行同步。
分布式仿真用于利用不同的客户端设备来仿真电路设计的不同部分。在一个示例中,电路设计可以包括多个集成电路(IC)芯片(或裸片)。在这种示例中,可以对电路设计进行划分,使得每个IC芯片是不同的分区(partition)(例如,部分)。在这种示例中,每个IC芯片由不同的客户端设备仿真。在其他示例中,电路设计以其他方式进行划分。例如,IC芯片可以被划分成多个分区。此外,可以分析电路设计以确定如何划分电路设计。可以对电路设计进行划分以平衡设计的大小。可以基于电路设计的不同部分的仿真时间来动态地划分电路设计。每个分区由不同的客户端设备仿真。由不同的客户端设备执行的仿真彼此并行执行,使得仿真的至少一部分在重叠的时间段期间发生。由于分布式仿真过程采用重叠仿真,因此与不采用分布式仿真过程的电路仿真系统相比,分布式仿真过程使用更少的处理时间,改进了对应电路仿真系统的运行时容量和运行时性能。此外,在分布式仿真过程中,可以仿真多个IC芯片,而不必将所有IC芯片集成在单个片上系统(SoC)中。
通常,在分布式仿真过程中,随着数据在仿真之间传送,仿真彼此紧密同步。在仿真过程期间,存在仿真在其期间相互畅通执行的时段,并且存在仿真在其期间彼此同步以在仿真之间传送数据的时段。然而,当前的同步过程遭受对电路设计仿真过程产生负面影响的问题。例如,当前的同步过程可能会使分布式仿真欠同步,这可以导致对被测电路设计的功能的错误判断。在其他情况下,当前的同步过程可能会使分布式仿真过度同步,这增加处理功率要求和/或处理时间。
如本文中描述的,本公开的用于分布式仿真的同步系统和方法改进了分布式仿真过程处理在分布式仿真过程的仿真期间发生的同步事件和异步事件的能力,并且改进了以不同速度操作的仿真。下面描述的同步过程允许每个仿真针对大部分仿真时间彼此异步地运行,在公共仿真阶段完成时将仿真进行同步,和/或基于主时钟信号(例如,同步信号或sync_signal)选择性地将仿真进行同步。
本公开的技术优点包括但不限于一种同步过程,该同步过程改进了分布式仿真过程处理同步事件和异步事件的能力,并且改进了以不同速度操作的仿真。与其他同步过程相比,本公开的同步过程使用更少的处理资源和/或处理时间,并且改进了分布式仿真过程准确确定电路设计的功能的能力。此外,本公开的同步过程允许每个仿真针对大部分仿真时间彼此异步运行,在公共仿真阶段完成时将仿真进行同步,和/或基于主时钟信号选择性地将仿真进行同步。虽然一些仿真过程可以使用分布式仿真过程,但如果发生异步事件,当分布式仿真之间存在时序(例如,速度)差异时,仿真可能变得不确定,并且可能提供非确定性结果。然而,本公开的分布式仿真系统和方法通过跨分布式仿真维持公共同步时钟信号,并且通过允许分布式仿真的写入彼此异步,以及确保分布式仿真的读取与同步时钟信号同步,来提供确定性的结果,而不管分布式仿真之间的时序差异如何。此外,本公开的分布式仿真系统和方法的测试台阶段(phase)通过在测试台内使用等待命令跨各种仿真进行同步,而不是基于仿真时间进行同步。
图1图示了根据一个或多个示例的电路仿真系统100。电路仿真系统100使用分布式仿真过程来对电路设计(例如,电路设计122)进行仿真,以验证电路设计的功能。电路仿真系统100将电路设计划分成多个分区,这些分区彼此单独地进行仿真。电路仿真系统100根据每个分区的仿真生成仿真数据,并且将仿真数据组合以确定电路设计的功能。
电路仿真系统100包括执行指令(例如,图10的指令1026)的一个或多个处理器(例如,图10的处理设备1002)、存储用存储器(例如,存储器120、主存储器1004和/或图10的机器可读介质1024),来仿真和确定电路设计的功能。
电路仿真系统100包括测试台引擎110、存储器120和客户端设备130。测试台引擎110包括执行指令(例如,图10的指令1026)的一个或多个处理器(例如,图10的处理设备1002)、存储用存储器(例如,存储器120、主存储器1004和/或图10的机器可读介质1024)。测试台引擎110包括验证引擎112和调试引擎114。在一个或多个示例中,测试台引擎110的处理器中的一个或多个处理器执行与验证引擎112和/或调试引擎114相关联的指令。验证引擎112从存储器120或电路仿真系统100外部的系统接收电路设计122。
电路设计122描述了电路组件和由电路组件执行的逻辑操作、以及电路组件之间的数据交换。电路设计122在寄存器传输级(RTL)对设备进行建模,例如,利用诸如Verilog或超高速集成电路硬件设计语言(VHDL)等的硬件描述语言(HDL)的代码。在一个示例中,电路设计122可以包括一个或多个IC芯片。IC芯片可以彼此竖直地堆叠成三维(3D)IC芯片器件。在另一示例中,IC芯片可以被水平地布置在基板上,并且经由基板上的导线连接。此外,在其他示例中,IC芯片被竖直地堆叠并且被水平地布置在基板上。
在一个或多个示例中,验证引擎112包括一个或多个测试台116。测试台116根据电路设计122生成,并且用于定义在电路设计122上执行的仿真。测试台116定义测试激励,例如时钟信号、激活信号、功率信号、控制信号和/或数据信号。时钟信号、激活信号、功率信号、控制信号和/或数据信号可以被组合以形成测试台事务(transaction)。测试台事务用于在电路设计122的一个或多个部分内实施操作。在一个示例中,电路设计122包括多个IC芯片。在这种示例中,为每个IC芯片生成测试台116,并且每个测试台116实施电路设计内的对应IC芯片的操作。当测试台116被执行时,测试台组件被动态生成,以用于电路设计122的至少一部分的仿真。
测试台116用面向对象的编程语言(例如,SystemVerilog等)进行编写。在一个或多个示例中,方法学库用于创建测试台116并且仿真电路设计122。在一个或多个示例中,方法学库是通用验证方法学(UVM)库、开放验证方法学(OVM)库、高级验证方法学(AVM)学库或验证方法学手册(VMM)库等库中的一种。方法学库包括指令(例如,代码),该指令在由处理器执行时,使处理器在仿真环境内执行电路设计122的对应部分(例如,电路设计122内的IC芯片)的仿真。
在一个或多个示例中,测试台引擎110从外部源接收测试台116,外部源诸如是计算机系统(例如,图10的计算机系统1000或图9的主机系统907)的用户接口、电路仿真系统100内的另一引擎和/或电路仿真系统100外部的系统。
验证引擎112基于测试台116来对电路设计122进行仿真。测试台环境根据测试台生成测试激励。测试激励包括矢量,矢量包括在电路设计122的仿真期间被使用的时钟信号、激活信号、功率信号、控制信号和/或数据信号等。验证引擎112基于提供给电路设计122的测试激励来生成仿真数据(例如,仿真结果)。
验证引擎112将根据基于测试台116在IC电路设计122的不同分区上执行的仿真所确定的仿真数据与预期仿真数据进行比较,以确定电路设计122的功能。从存储器120或电路仿真系统100外部的系统接收预期仿真数据。仿真数据可以是波形数据等形式。在一个或多个示例中,基于仿真数据与预期仿真数据的比较,当仿真数据指示电路设计122与预期不同地操作时,确定电路设计122内存在缺陷。
验证引擎112对测试台116进行编译,并且将测试台116与电路设计122链接。在一个示例中,验证引擎112检查电路设计122和测试台116的错误(例如,语法错误和其他问题),并且相应地发出警告。在一个或多个示例中,验证引擎112标识来自测试台116的库组件,并且将UVM、OVM或AVM等库组件标准化。
验证引擎112将测试台116细化(elaborate)以用于电路设计122的仿真。测试台116的细化包括在测试台116中的每个测试台内实例化对象和/或类,来准备测试台116,以用于在客户端设备130内进行电路设计122的仿真。基于库组件,验证引擎112基于对象实例化和与测试台116中的每个测试台相关联的配置数据(信息),来构建针对测试台116中的每个测试台的层级,并且构建测试台116中的每个测试台中的信号连接性。
在一个或多个示例中,调试引擎114可以用于标识和隔离电路设计122内的缺陷,并且纠正电路设计122内的缺陷。调试引擎114接收用以标识和纠正电路设计122内的缺陷的仿真数据、预期信号数据和/或电路设计122。
存储器120可以被配置成类似于图10的主存储器1004和/或图10的机器可读介质1024。存储器120包括电路设计122。在一个或多个示例中,测试台116被存储在存储器120内。此外,存储器120通信地连接到测试台引擎110和客户端设备130。
客户端设备130包括客户端设备1300至客户端设备130N,其中N大于1。此外,客户端设备130中的每个客户端设备可以是被配置成类似于图10的计算机系统1000或图9的主机系统907的计算机系统。在一个示例中,客户端设备130中的每个客户端设备是多处理器计算机系统的相应处理器。在其他示例中,客户端设备130中的每个客户端设备是虚拟机。客户端设备130通信地连接到测试台引擎110和存储器120。客户端设备130执行与测试台116相关联的仿真。在一个示例中,每个测试台116由客户端设备130中的相应的客户端设备仿真。例如,每个客户端设备130执行与电路设计122的相应部分相关联的仿真。在电路设计122包括一个以上IC芯片的示例中,每个客户端设备130执行与不同的IC芯片相关联的仿真。
客户端设备130对电路设计122进行仿真,使得电路设计122的仿真被分布在多个不同的客户端设备130上。此外,客户端设备彼此并行地对电路设计122的不同部分(例如,不同的IC芯片)进行仿真。在一个示例中,客户端设备130中的一个客户端设备(例如,客户端设备1300)是主客户端设备,并且客户端设备130中的一个或多个客户端设备(例如,客户端设备1301、1302和/或130N)是次客户端设备。
主客户端设备控制由次客户端设备执行的仿真过程。例如,主客户端设备接收由次客户端设备生成的仿真数据,并且将仿真数据组合,使得仿真数据可以被验证引擎112和/或调试引擎114用于确定电路设计122的功能,如上所述。在一个或多个示例中,主客户端设备维持同步时钟信号,该同步时钟信号用于控制基于相应的本地时钟信号操作的次客户端设备中的每个次客户端设备之间的通信。在一个示例中,同步时钟信号的频率高于次客户端设备中的每个次客户端设备的本地时钟信号的频率。在其他示例中,次客户端设备的本地时钟信号中的一个或多个本地时钟信号具有比同步时钟信号高的频率。
在一个示例中,电路设计122包括彼此互连的多个IC芯片。在这种示例中,每个IC芯片可以由相应的次客户端设备(例如,客户端设备1301-130N)彼此单独地仿真。主客户端设备(例如,客户端设备1300)通过对由每个次客户端设备提供的、要由验证引擎112和/或调试引擎114用来确定电路设计的功能122的仿真数据进行组合和/或处理,来控制由次客户端设备执行的仿真。
电路设计的分布式仿真允许电路设计的不同部分利用不同的客户端设备彼此并行地进行仿真。例如,电路设计122可以被划分成多个分区,这些分区利用不同的客户端设备在至少部分重叠的时段期间进行仿真。在分布式仿真过程中,不同的仿真可以在不同的时间开始和/或结束。在一些示例中,电路设计可以包括彼此耦合的多个不同的分区(例如,部分)。在这种电路设计中,分布式仿真彼此同步,以允许数据在仿真之间传送。例如,主客户端设备可以基于主客户端设备的主时钟信号(例如,同步时钟信号),来将由客户端设备执行的仿真进行同步。在各种示例中,主客户端设备将次客户端设备的同步点与主时钟信号的上升沿和/或下降沿对齐。在一个或多个示例中,主客户端设备和次客户端设备使用单独的写入阶段和读取阶段,使得由主客户端设备执行的读取命令与由次客户端设备执行的写入命令异步地发生。
此外,在分布式仿真过程中,每个次客户端设备130执行与电路设计122的不同测试台116相关联的仿真。此外,如下面更详细描述的,由不同测试台116的仿真生成的事件彼此异步地发生。由不同测试台116的仿真生成的事件也与同步时钟信号异步。在这种示例中,主客户端设备使用与主时钟信号对齐的读取命令,来同步地接收与完成的测试台事件相关联的仿真数据,以同步地从次客户端设备接收仿真数据。
图2图示了根据一个或多个示例的用于电路设计122的分布式仿真的方法200的流程图。方法200由图1的电路仿真系统100执行。例如,电路仿真系统100的一个或多个处理器执行存储在存储器中的指令以执行方法200。方法200作为图8的过程逻辑设计和功能验证816的一部分被执行。在一个或多个示例中,方法200允许由相应的客户端设备130执行的分布式仿真使用相应的本地时钟信号和主时钟信号,来在客户端设备之间和/或在客户端设备与主客户端设备之间传送来自不同仿真的仿真数据。因此,当基于本地时钟信号或主时钟信号发出读取命令和写入命令时,读取阶段和写入阶段可能彼此不相交(例如,未对齐)。在一个或多个示例中,执行方法200通过等待直到每个仿真完成相似阶段,来将不同的仿真的阶段进行同步。在一个示例中,执行方法200允许次客户端设备的写入命令和读取命令异步。写入命令与本地时钟信号被同步地发出,并且读取命令与主时钟信号被同步地发出。
在方法200的210处,电路仿真系统100接收电路设计122。在一个或多个示例中,测试台引擎110从存储器120、从电路仿真系统100的另一引擎,或从电路仿真系统100外部的系统接收电路设计122。电路设计122可以被称为被测设计(DUT)。
电路设计122包括配置文件124,配置文件124包括定义分布式仿真过程的不同仿真的配置数据(信息)。例如,配置文件124的配置数据标识每个仿真的本地时钟信号。配置文件124的配置数据还标识主时钟信号和/或同步时间间隔,主时钟信号和/或同步时间间隔用于将主客户端设备(例如,客户端设备1300)与从客户端设备(例如,客户端设备1301和客户端设备1302)之间以及次客户端设备(例如,客户端设备1301和客户端设备1302)之间的仿真数据的传送同步。
配置文件124的配置数据还标识电路设计122内的仿真之间的连接。例如,图3图示了电路设计(例如,图1的电路设计122)的连接300。连接300包括采样过程310与驱动过程320之间的连接。在采样过程310期间,仿真的一个或多个负载(例如,电路元件)被采样以生成采样值。在驱动过程320期间,驱动信号基于在采样过程310期间获得的采样值来被驱动。
如图3中所示,采样过程310中的仿真0(SIMV0)的信号路径1(sig_path1)(例如,SIMV0<sig_path1>),与驱动过程320中的仿真1(SIMV1)的信号路径2(sig_path2)(例如,SIMV1<sig_path2>)连接。因此,与信号路径1相关联的采样数据被提供给仿真1的信号路径2,以在对应的驱动阶段期间被使用。此外,配置文件标识出,采样过程310中的仿真0的信号路径1(例如,SIMV0<sign_path1>)也与驱动过程320中的仿真2(SIMV2)的信号路径2(例如,SIMV2<sig_path2>)连接。连接300还标识出,仿真1的信号路径3(sig_path3)(例如,SIMV1<sign_path3>)与仿真0的信号路径4(sig_path4)(例如,SIMV0<sig_path4>)连接。在其他示例中,第一仿真的信号路径可以连接到两个或两个以上其他仿真的信号路径。
参考图2,在方法200的220处,在第一仿真环境中仿真电路设计122以生成第一仿真数据。参考图1,第一仿真环境与客户端设备1301相关联,并且对应于第一测试台116和电路设计122的第一部分。客户端设备1301是次客户端设备。电路设计122的第一部分对应于第一IC芯片或电路设计122的另一部分。在一个示例中,使用第一仿真环境生成第一数据包括执行与对应的测试台相关联的多个阶段。测试阶段对应于用于创建测试台116的方法学库。例如,测试阶段可以是UVM阶段、OVM阶段、AVM阶段或VMM阶段等。在一个示例中,阶段由电路设计122的管理者或设计者定义。阶段定义要被执行的测试(例如,仿真)。在一个示例中,阶段是测试台组件的同步机制。阶段由回调(callback)方法表示。测试台组件中提供了预定义阶段和对应回调的集合。方法是由测试台执行的功能或任务。
此外,在第一仿真环境期间,次客户端设备1301在将值和信号驱动到电路设计122的第一部分上时生成采样,以完成如由第二测试台116定义的第一仿真的每个阶段。通过将一个或多个值和信号施加到电路设计122的第一部分的电路元件来生成采样。施加到电路设计122的第一部分的电路元件的值和信号由测试台116中的第一测试台定义。
在方法200的230处,在第二仿真环境中仿真电路设计122以生成第二仿真数据。参考图1,第二仿真环境与客户端设备1302相关联。客户端设备1302是次客户端设备。第二仿真环境与测试台116的第二测试台和电路设计122的第二部分相关联。电路设计122的第二部分对应于第二IC芯片或电路设计122的另一部分。在一个示例中,使用第二仿真环境生成第二数据包括执行与对应测试台116相关联的多个阶段。测试阶段对应于用于创建测试台116的方法学库。例如,测试阶段可以是UVM阶段、OVM阶段、AVM阶段或VMM阶段等。在一个示例中,与第二仿真环境相关联的方法学是与第一仿真环境相关联的方法学相同的方法学。这些阶段定义了要在第二仿真环境期间执行的测试(例如,仿真)。
此外,在第二仿真环境期间,次客户端设备1302在将值和信号驱动到电路设计122的第二部分上时生成采样,以完成如由第二测试台116定义的第二仿真的每个阶段。通过将一个或多个值和信号施加到电路设计122的第二部分的电路元件来生成采样。施加到电路设计122的第二部分的电路元件的值和信号由测试台116中的第二测试台定义。
在方法200的230处,客户端设备1300同步地接收来自客户端设备1301和1302的第一仿真数据和第二仿真数据。例如,客户端设备1300基于主时钟信号,在与不同仿真相关联的阶段完成时,同步地接收第一仿真数据和第二仿真数据,和/或基于主时钟信号来控制客户端设备1301与客户端设备1302之间的通信。
在一个示例中,同步地接收第一仿真数据和第二仿真数据包括方法200的242,基于主时钟信号(例如,同步时钟信号)来将采样的生成和传送进行同步。在一个示例中,客户端设备1301基于第一本地时钟信号生成第一仿真数据,并且客户端设备1302基于第二本地时钟信号生成第二仿真数据。第一客户端设备1301和第二客户端设备1302彼此异步地并且与客户端设备1300的主时钟信号(例如,同步时钟信号)异步地生成相应的仿真数据。客户端设备1300基于主时钟信号与客户端设备1301和1302通信。第一本地时钟信号独立于第二本地时钟信号,并且第一本地时钟信号和第二本地时钟信号独立于主时钟信号。
图4图示了波形400,包括以下信号的波形:主时钟信号410、第一本地时钟信号420和第二本地时钟信号430。如图4中所示,主时钟信号410、第一本地时钟信号420和第二本地时钟信号430彼此未对齐(例如,异步)。例如,主时钟信号410的频率大于第一本地时钟信号420和第二本地时钟信号430的频率。此外,第二本地时钟信号430的频率大于第一本地时钟信号420的频率。
客户端设备1300在主时钟信号410的上升沿接收来自客户端设备1301和客户端设备1302的采样值。此外,客户端设备1301和客户端设备1302分别在第一本地时钟信号420和第二本地时钟信号430的上升沿处生成采样值。在一个示例中,客户端设备1301在第一本地时钟信号420的上升沿421处生成与第一仿真环境相关联的采样。此外,客户端设备1302在第二本地时钟信号430的上升沿431处生成与第二仿真环境相关联的采样。客户端设备1300在主时钟信号410的上升沿411处接收(例如,获得)在上升沿421和431期间生成的采样。因此,在边沿421和431期间生成的采样彼此异步地并且与主时钟信号410异步地被生成。
第一本地时钟信号420的上升沿421与第二本地时钟信号430的上升沿431未对齐,并且第一本地时钟信号420的上升沿421与主时钟信号410的上升沿411未对齐。
客户端设备1302进一步在第二本地时钟信号430的上升沿432处生成与第二仿真环境相关联的采样。客户端设备1300在主时钟信号410的上升沿412处接收(例如,获得)在上升沿432处生成的采样。第二本地时钟信号430的上升沿433与主时钟信号410的上升沿412未对齐。
客户端设备1301在第一本地时钟信号420的上升沿422处进一步生成与第一仿真环境相关联的采样。客户端设备1302在第二本地时钟信号430的上升沿433处生成与第二仿真环境相关联的采样。客户端设备1300在主时钟信号410的上升沿413处接收(例如,获得)在上升沿422和433处生成的采样。第一本地时钟信号420的上升沿422和第二本地时钟信号430的上升沿433与主时钟信号410的上升沿413未对齐。
客户端设备1301在第一本地时钟信号420的上升沿423处进一步生成与第一仿真环境相关联的采样。客户端设备1302在第二本地时钟信号430的上升沿434处生成与第二仿真环境相关联的采样。客户端设备1300在主时钟信号410的上升沿414处接收(例如,获得)在上升沿423和434处生成的采样。第一本地时钟信号420的上升沿423和第二本地时钟信号430的上升沿434与主时钟信号410的上升沿414未对齐。
客户端设备1302在第二本地时钟信号430的上升沿445处进一步生成与第二仿真环境相关联的采样。客户端设备1300在主时钟信号410的上升沿415处接收在上升沿435期间生成的采样。第二本地时钟信号430的上升沿435与主时钟信号410的上升沿415未对齐。
客户端设备1301在第一本地时钟信号420的上升沿424处进一步生成与第一仿真环境相关联的样本。客户端设备1300在主时钟信号410的上升沿416处接收在上升沿424期间生成的采样。第一本地时钟信号420的上升沿424与主时钟信号410的上升沿416未对齐。
图4图示了在不同的仿真环境期间生成的采样值彼此异步并且与主客户端设备的主时钟信号异步的示例。在其他示例中,可以使用时间延迟代替主时钟信号来接收采样值。例如,在第一本地时钟信号的上升沿413期间获得的采样值和在第二本地时钟信号的上升沿415期间获得的采样值,在该采样值被获得“X”ms之后,被传送到主客户端设备,其中X是大于0的值。因此,在一个或多个示例中,客户端设备1300同步地接收来自客户端设备1301和1302的采样数据。
参考图2,在各种示例中,附加地或备选地,在方法200的240处同步地接收第一仿真数据和第二仿真数据包括方法200的244,将由客户端设备130执行的、与不同测试台116相关联的阶段的完成进行同步。在一个示例中,客户端设备1301和客户端设备1302执行阶段UVM_P1、UVM_P2、UVM_P3、UVM_P4、USR_P1和USR_P2等。测试台的阶段是对应于复位阶段和数据传输阶段等的功能阶段。
图5A和图5B分别图示了与客户端设备1301和1302相关联的阶段图520和530。阶段图520和530图示了阶段图520和530的相应多个阶段,以及多个阶段中的每个阶段的阶段完成。此外,图5A和图5B图示了同步点502-514。阶段图520和530的阶段彼此异步。同步点502-514对应于每个阶段图520和530的阶段在其期间被客户端设备1300彼此同步的点。
与客户端设备1301和1302相关联的测试台116包括与一个或多个阶段(例如,UVM_P1和/或UVM_P2)相关联的等待命令,该等待命令指示客户端设备1301和1302在所有客户端设备都已经完成阶段的执行之前,不传送与该阶段相关联的生成仿真数据。测试台116标识哪些阶段与等待命令相关联,并且标识哪些阶段不与等待命令相关联。在一个或多个示例中,等待命令减轻了各种仿真中的竞争条件和同时写入。
在一个或多个示例中,通过流式传输(streaming)来跨仿真传送类对象,以分发一个或多个测试台116。在一个或多个示例中,在硬件描述语言(HDL)流式传输方法中,类对象的内容被存储到矢量中。矢量被发送到测试台116和从测试台116发送。矢量被接收并且被翻译成类对象。
在一个或多个示例中,为了维持进出测试台116的数据传输的确定性,测试台116包括如上所述的“等待”命令。
客户端设备1301完成阶段UVM_P1,之后是阶段USR_P1,并且在客户端设备1301完成阶段UVM_P1之后,客户端设备1302完成阶段UVM_P1。客户端设备1302完成与阶段USR_P1同步的阶段UVM_P1。由于在客户端设备1302完成阶段UVM_P1之前,阶段UVM_P1由客户端设备1301完成,因此客户端设备1301在客户端设备1302完成阶段UVM_P1之前,等待传送对应于阶段UVM_P1的仿真数据。因此,在同步点502处,客户端设备1301和1302将与阶段UVM_P1相关联的仿真数据传送到客户端设备1300
在一个示例中,客户端设备1300确定,在同步点502处,客户端设备1301和1302都已经完成阶段UVM_P1。因此,在同步点502处并且基于确定客户端设备1301和1302已经完成阶段UVM_P1,客户端设备1300从客户端设备1301和1302中的每个客户端设备获得对应的仿真数据。在一个示例中,测试台116中的与客户端设备1301和1302相关联的每个测试台包括与阶段UVM_P1相关联的等待命令,该等待命令指示客户端设备1301和1302在所有客户端设备已经完成阶段UVM_P1的执行之前,不传送对应的仿真数据。
在同步点504处,客户端设备1301和1302两者都已经完成阶段Release UVM_P1,并且相关联的仿真数据在同步点504处从客户端设备1301和1302被传送到客户端设备1300
当客户端设备1301和1302中的每个客户端设备同时完成阶段Release UVM_P1时,对应的仿真数据就被释放,而无需等待时段的完成。
在同步点506处,客户端设备1301和1302两者都已经完成阶段UVM_P2,并且相关联的仿真数据在同步点506处从客户端设备1301和1302被传送到客户端设备1300
在同步点508处,客户端设备1301和1302两者都已经完成阶段Release UVM_P2、USR_P1和UVM_P3。由于客户端设备1301在完成Release UVM_P2之前并且在客户端设备1302完成阶段Release UVM_P2和UVM_P3之前完成阶段USR_P1,因此在同步点508处,与阶段USR_P1相关联的仿真数据从客户端设备1301和1302被传送到客户端设备1300。如图5A和图5B中所示,客户端设备1301和1302彼此异步地完成阶段USR_P1。
在同步点510处,客户端设备1301和1302两者都已经完成阶段Release UVM_P2、UVM_P3、Release USR_P1和Release UVM_P3。因此,由于客户端设备1301和1302在两个客户端设备完成其他阶段之前完成阶段Release UVM_P2,因此,在同步点510处,与ReleaseUVM_P2相关联的仿真数据从客户端设备1301和1302被传送到客户端设备1300
在同步点512处,与阶段UVM_P3相关联的仿真数据从客户端设备1301和1302被传送到客户端设备1300。在客户端设备1301和1302完成阶段Release USR_P1和Release UVM_P3之前,客户端设备1301和1302完成阶段UVM_P3,在同步点512处,与阶段UVM_P3相关联的仿真数据从客户端设备1301和1302被传送到客户端设备1300
在同步点514处,与阶段Release USR_P1相关联的仿真数据从客户端设备1301和1302被传送到客户端设备1300。在客户端设备1301和1302完成阶段Release UVM_P3之前,客户端设备1301和1302完成阶段Release USR_P1,在同步点512处,与阶段Release USR_P1相关联的仿真数据从客户端设备1301和1302被传送到客户端设备1300
在一个示例中,在每个同步点处,与单个阶段相关联的仿真数据从客户端设备1301和1302被传送到客户端设备1300,如上所述。在其他示例中,在一个或多个同步点处,与一个以上阶段相关联的仿真数据可以从客户端设备1301和1302被传送到客户端设备1300。例如,在同步点510处,由于两个阶段Release USR_P1和Release UVM_P3都已经完成,因此,与阶段Release USR_P1和Release UVM_P3两者相关联的仿真数据从客户端设备1301和1302被传送到客户端设备1300
进一步参考图2的方法200,附加地或备选地,在方法200的240处同步地接收第一仿真数据和第二仿真数据包括方法200的246,将仿真环境(例如,客户端设备)之间的读取请求和写入请求进行同步。
图6图示了参考主时钟信号的、客户端设备1301和1302的读取请求和写入请求。读取请求和写入请求用于在客户端设备130之间读取和写入仿真数据。例如,读取请求和写入请求在运行第一仿真环境的客户端设备1301与运行第二仿真环境的客户端设备1302与客户端设备1300之间传送仿真数据。在一个示例中,客户端设备1300从客户端设备1301和1302读取数据。此外,客户端设备1301和1302向客户端设备1300写入数据。主时钟信号包括来自客户端设备1301的读取请求610、618和620,并且包括来自客户端设备1302的写入请求612、614和616。在一个示例中,客户端设备1301发出读取请求610。客户端设备1300保持(例如,延迟)读取命令,直到客户端设备1302发出写入请求612。读取请求610和写入请求612对应于与电路设计122的相应部分相关联的第一通信通道。在主时钟信号的上升沿602处,基于读取请求610和写入请求612,将数据从客户端设备1301发送到客户端设备1302。在主时钟信号的下一个出现的上升沿处服务读取请求610和写入请求612,使得对读取请求610和写入请求612的服务与主时钟信号同步。此外,客户端设备1302发出写入请求614和616,并且客户端设备1301发出读取请求618和620。写入请求614和616以及读取请求618和620与第二通信通道相关联,第二通信通道与电路设计122的相应部分相关联。在主时钟信号的上升沿604处服务写入请求614和读取请求618。此外,在主时钟信号的上升沿606处服务写入请求616和读取请求620。
进一步参考图2的方法200,在方法200的250处,确定电路设计122的功能。在一个示例中,客户端设备1300将从客户端设备1301和1302接收的仿真数据组合。组合的仿真数据被存储在存储器120中和/或被传送到验证引擎112。验证引擎112将仿真数据与预期值进行比较,以确定电路设计122的功能。例如,验证引擎112将仿真数据与预期值进行比较,以确定电路设计122内是否存在功能缺陷。缺陷可以被存储在存储器120中和/或被传达给管理员和/或设计者,以进行更正或其他动作。
图7图示了与三个测试台116(例如,测试台1161、测试台1162和测试台1163)相关联的阶段700。测试台1161包括阶段P1、P3、CP2、CP3和CP4。测试台1162包括阶段P1、P2、P3、CP1、CP2和CP4。测试台1163包括阶段P2、P3、CP1、CP2、CP3和CP4。在一个或多个示例中,测试台引擎110确定测试台1161、1162和1163的哪些阶段被包括在测试台1161、1162和1163中的两个或两个以上测试台中。在一个示例中,测试台引擎110确定测试台1161、1162和1163的哪些阶段被包括在测试台1161、1162和1163中的每个测试台中。被确定为不被包括在测试台1161、1162和1163中的两个或两个以上测试台中的阶段可以被排除具有等待命令,如上面关于图5A和图5B描述的。例如,如果等待命令被应用于测试台1161、1162和1163中的仅一个测试台中的阶段,则该阶段可能引起一个或多个测试台1161、1162和1163的仿真内的意外暂停。例如,如果阶段P1存在于测试台1161中,并且不存在于测试台1162和1163中,并且在阶段P1内插入等待命令,则在阶段P1完成时,测试台1161等待,直到测试台1162和1163中的一个或多个测试台已完成阶段P1。然而,在该示例中,由于测试台1162和1163不包括阶段P1,因此测试台1161没有接收到测试台1162和1163中的一个或多个测试台已经完成阶段P1的指示,并且测试台1161内发生意外暂停。因此,在这种示例中,与阶段P1相关联的仿真数据不被传送。阶段的暂停对应于意外的延迟。在一个或多个示例中,为了避免任何阶段暂停,测试台引擎110确定阶段700中的哪些阶段未被包括在测试台1161、1162和1163中的两个或两个以上测试台中。对于被确定为不在测试台1161、1162和1163中的两个以上测试台中的任何阶段,等待命令不被应用于这些阶段。在一个示例中,配置文件124指定仿真(例如,测试台116)中的每个仿真的适用阶段。
在一个或多个示例中,测试台引擎110将等待命令插入到被包括在测试台1161、1162和1163中的每个测试台中的阶段中。例如,测试台引擎110在阶段P3、CP2和CP4中插入等待命令。
图8图示了在诸如集成电路的制品的设计、验证和制造期间使用的、用于变换和验证表示集成电路的设计数据和指令的过程800的示例集合。这些过程中的每个过程可以被构造和使能为多个模块或操作。术语“EDA”表示术语“电子设计自动化”。这些过程从创建具有由设计者提供的信息的产品构思810开始,该信息被转换以创建使用EDA过程集合812的制品。当设计完成时,设计被流片834,这是当集成电路的原图(例如,几何图案)被发送到制造工厂以制造掩模集时发生的,然后掩模集被用于制造集成电路。在流片之后,制造半导体裸片836,并且执行封装和组装过程838以产生完成的集成电路840。
电路或电子结构的规范的范围可以从低级晶体管材料布局到高级描述语言。高级表示可以用于使用硬件描述语言(“HDL”)(诸如VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera)来设计电路和系统。HDL描述可以被变换为逻辑级寄存器传输级(“RTL”)描述、门级描述、布局级描述或掩模级描述。作为更具体的描述的每个较低表示级别将更有用的细节添加到设计描述中,例如,针对包括描述的模块的更多细节。作为更具体描述的较低级别的表示可以由计算机生成、从设计库导出,或者由另一设计自动化过程创建。用于指定更详细描述的表示语言的较低级别的规范语言的一个示例是SPICE,SPICE用于具有许多模拟组件的电路的详细描述。每个表示级别处的描述被使得能够由该层的对应系统(例如,正式验证系统)使用。设计过程可以使用图9中描绘的序列。通过EDA产品(或EDA系统)实现所描述的过程。
在系统设计814期间,要被制造的集成电路的功能被指定。可以针对期望的特性(诸如功耗、性能、面积(物理的和/或代码行数)以及成本的降低等)来优化设计。将设计划分成不同类型的模块或组件可以在该阶段发生。
在逻辑设计和功能验证816期间,以一种或多种描述语言指定电路中的模块或组件,并且检查规范的功能准确性。例如,可以验证电路的组件,以生成与所设计的电路或系统的规范的要求相匹配的输出。功能验证可以使用仿真器和其他程序,诸如测试台生成器、静态HDL检验器和形式检验器。在一些实施例中,被称为“模拟器(emulator)”或“原型系统”的特殊系统的组件用于加速功能验证。
在测试818的综合和设计期间,HDL代码被转换为网表。在一些实施例中,网表可以是图形结构,其中图形结构的边表示电路的组件,并且其中图形结构的节点表示组件如何互连。HDL代码和网表都是可以由EDA产品使用以验证集成电路在制造时根据指定设计执行的分层制品。可以针对目标半导体制造技术优化网表。另外,可以测试完成的集成电路以验证集成电路满足规范的要求。
在网表验证820期间,检查网表是否符合时序约束并符合HDL代码。在设计规划822期间,针对时序和顶层路由构建和分析集成电路的整体平面图。
在布局或物理实现824期间,发生物理放置(诸如晶体管或电容器的电路组件的定位)和布线(通过多个导体连接电路组件),并且可以执行从库中选择单元以实现特定逻辑功能。如本文中所使用,术语“单元”可以指定提供布尔逻辑功能(例如,与(AND)、或(OR)、非(NOT)、异或(XOR))或存储功能(诸如,触发器或锁存器)的一组晶体管、其它组件和互连件。如本文中所使用,电路“块”可以指两个或两个以上单元。单元和电路块两者都可以被称为模块或组件,并且被实现为物理结构和仿真两者。针对所选择的单元(基于“标准单元”)指定参数(诸如大小),并且使其在数据库中可访问以供EDA产品使用。
在分析和提取826期间,在布局层级处验证电路功能,这允许布局设计的改进。在物理验证828期间,检查布局设计以确保制造约束是正确的,诸如DRC约束、电约束、光刻约束,并且确保电路装置的功能匹配HDL设计规范。在分辨率增强830期间,转换布局的几何形状以改进如何制造电路设计。
在流片期间,创建要用于(如果适当的话,在应用光刻增强之后)光刻掩模的生产的数据。在掩模数据准备832期间,“流片”数据用于产生光刻掩模,这些光刻掩模用于产生完成的集成电路。
计算机系统(诸如,图10的计算机系统1000,或图9的主机系统907)的存储子系统可以用于存储由本文描述的EDA产品中的一些或全部EDA产品使用的程序和数据结构,以及用于库的单元的开发以及用于使用库的物理和逻辑设计的产品。
图9描绘了示例模拟(emulation)环境900的图。模拟环境900可以被配置成验证电路设计的功能。模拟环境900可以包括主机系统907(例如,作为EDA系统的一部分的计算机)和模拟系统902(例如,诸如现场可编程门阵列(FPGA)或处理器的可编程设备集合)。主机系统通过使用编译器910来构造模拟系统以模拟电路设计来生成数据和信息。要被模拟的电路设计也被称为被测设计(DUT),其中来自模拟的数据和信息被用于验证DUT的功能。
主机系统907可以包括一个或多个处理器。在主机系统包括多个处理器的实施例中,本文描述的由主机系统执行的功能可以分布在多个处理器之间。主机系统907可以包括编译器910,以转换以表示DUT的描述语言编写的规范,并且产生用于构造模拟系统902以模拟DUT的数据(例如,二进制数据)和信息。编译器910可以变换、改变、重建、向DUT添加新函数和/或控制DUT的时序。
主机系统907和模拟系统902使用由模拟连接承载的信号来交换数据和信息。该连接可以是但不限于一个或多个电缆,诸如具有与推荐标准232(RS232)或通用串行总线(USB)协议兼容的管脚结构的电缆。该连接可以是有线通信介质或网络,诸如局域网或广域网(诸如因特网)。该连接可以是无线通信介质或具有使用诸如蓝牙或IEEE902.11的无线协议的一个或多个接入点的网络。主机系统907和模拟系统902可以通过诸如网络服务器的第三设备交换数据和信息。
模拟系统902包括多个FPGA(或其他模块),诸如FPGA 9041和9042以及附加的FPGA至904N。每个FPGA可以包括一个或多个FPGA接口,通过这些接口,FPGA与其他FPGA(以及潜在的其他模拟组件)相连,以便FPGA交换信号。FPGA接口可以被称为输入/输出管脚或FPGA焊盘。虽然模拟器可以包括FPGA,但是模拟器的实施例可以包括替代用于模拟DUT的FPGA的其他类型的逻辑块或与用于模拟DUT的FPGA一起使用的其他类型的逻辑块。例如,模拟系统902可以包括定制的FPGA、用于模拟或原型的专用ASIC、存储器和输入/输出设备。
可编程设备可以包括可编程逻辑块阵列和可以使可编程逻辑块能够根据采用HDL码的描述进行互连的互连层次。可编程逻辑块中的每个可编程逻辑块可以启用复杂的组合功能或启用逻辑门,诸如AND逻辑块以及XOR逻辑块。在一些实施例中,逻辑块还可以包括存储器元件/器件,其可以是简单的锁存器、触发器或其他存储器块。取决于不同逻辑块之间的互连的长度,信号可以在不同的时间到达逻辑块的输入端,从而可以被临时存储在存储器元件/器件中。
可以将FPGA 9041-904N放置在一个或多个板9121和9122以及附加板912M上。可以将多个板放置到模拟单元9141中。可以使用模拟单元的背板或任何其他类型的连接来连接模拟单元内的板。此外,多个模拟单元(例如,9141和9142至914K)可以通过电缆或任何其他方式彼此连接,以形成多模拟单元系统。
对于要被模拟的DUT,主机系统907向模拟系统902发送一个或多个位文件。位文件可以指定DUT的描述,并且可以进一步指定由主机系统907利用跟踪和注入逻辑创建的DUT的分区、分区到模拟器的FPGA的映射以及设计约束。模拟器使用位文件构造FPGA以执行DUT的功能。在一些实施例中,模拟器的一个或多个FPGA可以将跟踪和注入逻辑内置于FPGA的硅中。在这种实施例中,主机系统可以不将FPGA构建为对跟踪和注入逻辑进行模拟。
主机系统907接收要被模拟的DUT的描述。在一些实施例中,DUT描述采用描述语言(例如,寄存器传输语言(RTL))。在一些实施例中,DUT描述在网表级别文件中或是网表级别文件和HDL文件的混合。如果部分DUT描述或整个DUT描述采用HDL语言,则主机系统可以综合DUT描述以使用DUT描述创建门级网表。主机系统可以使用DUT的网表,以将DUT划分成多个分区,其中分区中的一个或多个分区包括跟踪和注入逻辑。跟踪和注入逻辑跟踪通过FPGA的接口交换的接口信号。此外,跟踪和注入逻辑可以将跟踪的接口信号注入到FPGA的逻辑中。主机系统将每个分区映射到模拟器的FPGA。在一些实施例中,跟踪和注入逻辑被包括在用于一组FPGA的选择分区中。跟踪和注入逻辑可以内置于模拟器的FPGA中的一个或多个FPGA中。主机系统可以综合多路复用器以被映射到FPGA中。跟踪和注入逻辑可以使用多路复用器来将接口信号注入DUT逻辑。
主机系统创建描述DUT的每个分区以及分区到FPGA的映射的位文件。对于包括跟踪和注入逻辑的分区,位文件还描述了所包括的逻辑。位文件可以包括布置和布线信息以及设计约束。主机系统存储位文件和描述哪些FPGA要模拟DUT的每个组件的信息(例如,每个组件映射到哪个FPGA)。
一经请求,主机系统就将位文件发送到模拟器。主机系统向模拟器发信号以开始模拟DUT。在DUT的模拟期间或在模拟结束时,主机系统通过模拟连接从模拟器接收模拟结果。模拟结果是由模拟器在DUT的模拟期间生成的数据和信息,其包括接口信号和已经被每个FPGA的跟踪和注入逻辑跟踪的接口信号的状态。主机系统可以存储模拟结果和/或将模拟结果发送到另一处理系统。
在对DUT进行模拟之后,电路设计者可以请求调试DUT的组件。如果提出这种请求,则电路设计者可以指定要调试的模拟的时间段。主机系统使用存储的信息标识哪些FPGA正在模拟该组件。主机系统取回存储的接口信号,该接口信号与该时间段相关联,并且由每个标识的FPGA的跟踪和注入逻辑跟踪。主机系统向模拟器发信号以重新模拟标识的FPGA。主机系统将取回的接口信号发送到模拟器以针对指定的时间段重新模拟组件。每个标识的FPGA的跟踪和注入逻辑将从主机系统接收的其各自的接口信号注入到映射到该FPGA的DUT的逻辑中。在多次重新模拟FPGA的情况下,合并结果会产生完全调试视图。
主机系统在部件的重新模拟期间从模拟系统接收由所标识的FPGA的逻辑跟踪的信号。主机系统存储从模拟器接收的信号。在重新模拟期间跟踪的信号可以具有比初始模拟期间的采样率更高的采样率。例如,在初始模拟中,跟踪信号可以包括每X毫秒保存的组件状态。然而,在重新模拟中,跟踪的信号可以包括每Y毫秒保存的状态,其中Y小于X。如果电路设计者请求查看在重新模拟期间跟踪的信号的波形,则主机系统可以取回存储的信号并显示该信号的绘图。例如,主机系统可以生成信号的波形。之后,电路设计者可以请求针对不同的时间段重新模拟相同的组件或重新模拟另一组件。
主机系统907和/或编译器910可以包括子系统,诸如但不限于设计综合器子系统、映射子系统、运行时子系统、结果子系统、调试子系统、波形子系统和存储子系统。可以将子系统构建并启用为单个或多个模块,或者可以将两个或多个模块构建为模块。这些子系统一起构成模拟器并监控模拟结果。
设计综合器子系统将表示DUT 905的硬件描述语言转换成门级逻辑。对于要被模拟的DUT,设计综合器子系统接收该DUT的描述。如果DUT的描述完全地或部分地采用HDL语言(例如,RTL或其他表示级别),则设计综合器子系统综合DUT的HDL语言以创建门级网表,该门级网表具有根据门级逻辑对DUT的描述。
映射子系统对DUT进行分区,并将分区映射到模拟器FPGA中。映射子系统使用DUT的网表将门级的DUT划分为多个分区。对于每个分区,映射子系统取回跟踪和注入逻辑的门级描述,并将该逻辑添加到该分区。如上所述,包括在分区中的跟踪和注入逻辑用于跟踪经由该分区映射到的FPGA的接口交换的信号(跟踪接口信号)。跟踪和注入逻辑可以在分区之前被添加到DUT。例如,可以由设计综合器子系统在综合DUT的HDL语言之前或之后添加跟踪和注入逻辑。
除了包括跟踪和注入逻辑之外,映射子系统还可以在分区中包括附加的跟踪逻辑,以跟踪未被跟踪和注入跟踪的某些DUT组件的状态。映射子系统可以在分区之前的DUT中或在分区之后的分区中包括附加的跟踪逻辑。设计综合器子系统可以在综合HDL描述之前将附加的跟踪逻辑包括在DUT的HDL描述中。
映射子系统将DUT的每个分区映射到模拟器的FPGA。对于分区和映射,映射子系统使用设计规则、设计约束(例如,时序或逻辑约束)以及关于模拟器的信息。对于DUT的组件,映射子系统在存储子系统中存储描述哪些FPGA要模拟每个组件的信息。
使用分区和映射,映射子系统生成一个或多个位文件,该一个或多个位文件描述所创建的分区以及逻辑到模拟器的每个FPGA的映射。位文件可以包括附加信息,诸如DUT的约束和在FPGA之间的连接的布线信息和每个FPGA内的连接。映射子系统可以为DUT的每个分区生成位文件,并且可以将该位文件存储在存储子系统中。根据电路设计者的请求,映射子系统将位文件发送到模拟器,并且模拟器可以使用位文件来构造FPGA以模拟DUT。
如果模拟器包括专用ASIC,该专用ASIC包括跟踪和注入逻辑,则映射子系统可以生成将专用ASIC连接到DUT的特定结构。在一些实施例中,映射子系统可以保存跟踪/注入信号的信息以及该信息被存储在专用ASIC上的位置。
运行时子系统控制由模拟器执行的模拟。运行时子系统可以使模拟器开始执行模拟或停止执行模拟。此外,运行时子系统可以向模拟器提供输入信号和数据。可以通过连接直接地将输入信号提供给模拟器,或者通过其他输入信号设备间接地将输入信号提供给模拟器。例如,主机系统可以控制输入信号设备向模拟器提供输入信号。输入信号设备可以是例如测试板(直接地或通过电缆)、信号生成器、另一模拟器或另一主机系统。
结果子系统处理由模拟器生成的模拟结果。在模拟期间和/或在完成模拟之后,结果子系统从模拟器接收在模拟期间生成的模拟结果。模拟结果包括在模拟期间跟踪的信号。具体地,模拟结果包括由每个FPGA模拟的跟踪和注入逻辑所跟踪的接口信号,并且可以包括由包括在DUT中的附加逻辑所跟踪的信号。每个跟踪信号可以跨越多个模拟周期。跟踪信号包括多个状态,并且每个状态与模拟的时间相关联。结果子系统将跟踪信号存储在存储子系统中。对于每个存储的信号,结果子系统可以存储指示哪个FPGA生成跟踪信号的信息。
调试子系统允许电路设计者调试DUT组件。在模拟器已经模拟了DUT并且结果子系统已经在模拟期间接收到由跟踪和注入逻辑跟踪的接口信号之后,电路设计者可以通过针对特定时间段重新模拟组件来请求调试DUT的组件。在调试组件的请求中,电路设计者标识组件并指示要调试的模拟的时间段。电路设计者的请求可以包括采样率,该采样率指示跟踪信号的逻辑应当以多频繁的频率保存被调试组件的状态。
调试子系统使用由映射子系统存储在存储子系统中的信息来标识正在模拟组件的模拟器的一个或多个FPGA。对于每个所标识的FPGA,调试子系统从存储子系统取回在由电路设计者指示的时间段期间由FPGA的跟踪和注入逻辑跟踪的接口信号。例如,调试子系统取回由与时间段相关联的跟踪和注入逻辑跟踪的状态。
调试子系统将取回的接口信号发送到模拟器。调试子系统指示调试子系统使用所标识的FPGA,并且指示每个所标识的FPGA的跟踪和注入逻辑将其各自的跟踪信号注入到FPGA的逻辑中,以针对所请求的时间段重新模拟组件。调试子系统还可以将电路设计者提供的采样率发送到模拟器,从而跟踪逻辑以适当的间隔跟踪状态。
为了调试组件,模拟器可以使用组件已映射到的FPGA。此外,组件的重新模拟可以在电路设计者指定的任何点处执行。
对于所标识的FPGA,调试子系统可以向模拟器发送指令以加载具有所标识的FPGA的相同配置的多个模拟器FPGA。调试子系统还向模拟器发信号以并行使用多个FPGA。多个FPGA中的每个FPGA与接口信号的不同时间窗一起使用,以在较短的时间量内生成较大的时间窗。例如,所标识的FPGA可能需要一个小时或更长时间才能使用一定数目的周期。然而,如果多个FPGA具有相同的数据和所标识的FPGA的结构,并且这些FPGA中的每一个FPGA运行周期的子集,则模拟器可能需要几分钟时间才能使FPGA共同使用所有周期。
电路设计者可以标识要重新模拟的DUT信号的层级或列表。为了实现这一点,调试子系统确定模拟信号层次或列表所需的FPGA,取回必要的接口信号,并且将取回到的接口信号发送到模拟器以用于重新模拟。因此,电路设计者可以标识要调试/重新模拟的DUT的任何元件(例如,组件、设备或信号)。
波形子系统使用跟踪信号生成波形。如果电路设计者请求查看在模拟运行期间跟踪的信号的波形,则主机系统从存储子系统取回该信号。波形子系统显示信号的绘图。对于一个或多个信号,当从模拟器接收到信号时,波形子系统可以自动生成信号的绘图。
图10图示了计算机系统1000的示例机器,在该示例机器中可以执行用于使机器执行本文所讨论的方法中的任何一个或多个方法的指令集。在备选实施方式中,机器可以连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其他机器。机器可以以客户端-服务器网络环境中的服务器或客户端机器的容量操作,作为对等(或分布式)网络环境中的对等机器,或者作为云计算基础设施或环境中的服务器或客户端机器操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或网桥、或者能够执行指定要由该机器采取的动作的一组指令(顺序地或以其他方式)的任何机器。此外,虽然示出了单个机器,但是术语“机器”还应当被认为包括单独地或联合地执行指令的集合(或多个集合)以执行本文所讨论的任何一个或多个方法的机器的任何集合。
示例计算机系统1000包括处理设备1002、主存储器1004(例如,只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)的动态随机存取存储器(DRAM)、静态存储器1006(例如,闪存、静态随机存取存储器(SRAM)等))和数据存储设备1018,它们经由总线1030彼此通信。
处理设备1002表示一个或多个处理器,诸如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1002还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备1002可以被配置成执行用于执行本文描述的操作和步骤的指令1026。
计算机系统1000还可以包括网络接口设备1008以通过网络1020进行通信。计算机系统1000还可以包括视频显示单元1010(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1012(例如,键盘)、光标控制设备1014(例如,鼠标)、图形处理单元1022、信号生成设备1016(例如,扬声器)、图形处理单元1022、视频处理单元1028以及音频处理单元1032。
数据存储设备1018可以包括机器可读存储介质1024(也被称为非暂态计算机可读介质),其上存储有体现本文所描述的方法或功能中的任何一个或多个的一个或多个指令集1026或软件。指令1026还可以在其由计算机系统1000执行期间完全或至少部分地驻留在主存储器1004内和/或处理设备1002内,主存储器1004和处理设备1002也构成机器可读存储介质。
在一些实施方式中,指令1026包括用于实现与本公开相对应的功能的指令。虽然机器可读存储介质1024在示例实现中被示为单个介质,但是术语“机器可读存储介质”应当被认为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“机器可读存储介质”还应当被认为包括能够存储或编码指令集的任何介质,所述指令集用于由机器执行并且使得机器和处理设备1002执行本公开的任何一个或多个方法。因此,术语“机器可读存储介质”应当被认为包括但不限于固态存储器、光学介质和磁性介质。
已经根据对计算机存储器内的数据位的操作的算法和符号表示呈现了前述详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地将他们工作的实质传达给本领域的其他技术人员的方式。算法可以是导致期望结果的操作的序列。操作是需要对物理量进行物理操纵的操作。这种量可以采取能够被存储、组合、比较和以其他方式操纵的电信号或磁信号的形式。这种信号可以被称为位、值、元素、符号、字符、项、数字等。
然而,应当记住,所有这些和类似的术语将与适当的物理量相关联,并且仅仅是应用于这些量的方便标记。除非特别声明,否则如从本公开明显的,应当理解,在整个说明书中,某些术语指的是计算机系统或类似电子计算设备的动作和过程,其将计算机系统的寄存器和存储器内表示为物理(电子)量的数据操纵和变换成计算机系统存储器或寄存器或其他这种信息存储设备内类似地表示为物理量的其他数据。
本公开还涉及用于执行本文中的操作的装置。该装置可以被专门构造用于预期目的,或者其可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的计算机。这种计算机程序可以存储在计算机可读存储介质中,诸如但不限于任何类型的磁盘,包括软盘、光盘、CD-ROM和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或适于存储电子指令的任何类型的介质,每个都耦合到计算机系统总线。
本文呈现的算法和显示并不固有地与任何特定计算机或其他装置相关。各种其他系统可以与根据本文的教导的程序一起使用,或者可以证明对于构造更专用的装置来执行该方法是方便的。此外,不参考任何特定编程语言来描述本公开。应当理解,可以使用各种编程语言来实现如本文所述的本公开的教导。
本公开可以被提供为计算机程序产品或软件,其可以包括其上存储有指令的机器可读介质,所述指令可以用于对计算机系统(或其他电子设备)进行编程以执行根据本公开的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备等。
在前述公开内容中,已经参考本公开内容的特定示例实现方式描述了本公开内容的实现方式。将明显的是,在不脱离所附权利要求中阐述的本公开的实施方式的更广泛的精神和范围的情况下,可以对其进行各种修改。在本公开涉及单数形式的一些元件的情况下,在附图中可以描绘多于一个的元件,并且相同的元件用相同的附图标记被标记。因此,本公开和附图应被视为说明性意义而非限制性意义。

Claims (15)

1.一种方法,包括:
接收电路设计;
由第一客户端设备在第一仿真环境内仿真所述电路设计的第一部分,以生成第一仿真数据;
由第二客户端设备在第二仿真环境内仿真所述电路设计的第二部分,以生成第二仿真数据,其中所述第一仿真数据和所述第二仿真数据彼此异步地生成;以及
在主客户端设备处彼此同步地接收所述第一仿真数据和所述第二仿真数据,其中所述电路设计的功能基于所述第一仿真数据和所述第二仿真数据被确定。
2.根据权利要求1所述的方法,其中所述电路设计包括配置数据,所述配置数据包括所述第一仿真环境的第一本地时钟信号以及所述第二仿真环境的第二本地时钟信号。
3.根据权利要求2所述的方法,还包括:
由所述第一客户端设备基于所述第一本地时钟信号来生成所述第一仿真数据的第一采样值;以及
由所述第二客户端设备基于所述第二本地时钟信号来生成所述第二仿真数据的第二采样值,其中所述第一采样值和所述第二采样值彼此异步地生成。
4.根据权利要求3所述的方法,其中所述配置数据还包括主时钟信号,并且其中所述主客户端设备基于所述主时钟信号来发出读取命令,以接收所述第一采样值和所述第二采样值。
5.根据权利要求1所述的方法,还包括:
由所述第一客户端设备在所述第一仿真环境内完成第一多个阶段;以及
由所述第二客户端设备在所述第二仿真环境内完成第二多个阶段,其中所述第一多个阶段和所述第二多个阶段各自包括第一阶段,并且其中所述第一阶段在所述第一多个阶段和所述第二多个阶段内被异步地完成。
6.根据权利要求5所述的方法,还包括:基于所述第一客户端设备和所述第二客户端设备两者均完成所述第一阶段,由所述主客户端设备获得来自所述第一客户端设备的所述第一仿真数据和来自所述第二客户端设备的所述第二仿真数据。
7.根据权利要求1所述的方法,其中所述主客户端设备包括主时钟信号,并且所述主客户端设备还被配置成:与所述主时钟信号异步地接收来自所述第一客户端设备的接收请求,并且与所述主时钟信号异步地接收来自所述第二客户端设备的发送请求,并且其中与所述接收请求和所述发送请求相关联的数据传输在所述主时钟信号的上升沿处被执行。
8.一种系统,包括:
第一客户端设备,被配置成在第一仿真环境内仿真电路设计的第一部分,以生成第一仿真数据;
第二客户端设备,被配置成在第二仿真环境内仿真所述电路设计的第二部分,以生成第二仿真数据,其中所述第一仿真数据和所述第二仿真数据彼此异步地生成;以及
第三客户端设备,被配置成从所述第一客户端设备和所述第二客户端设备彼此同步地接收所述第一仿真数据和所述第二仿真数据,并且其中所述电路设计的功能基于所述第一仿真数据和所述第二仿真数据被确定。
9.根据权利要求8所述的系统,其中所述电路设计包括配置数据,所述配置数据包括所述第一仿真环境的第一本地时钟信号以及所述第二仿真环境的第二本地时钟信号。
10.根据权利要求9所述的系统,其中所述第一客户端设备还被配置成基于所述第一本地时钟信号来生成所述第一仿真数据的第一采样值,并且所述第二客户端设备还被配置成基于所述第二本地时钟信号来生成所述第二仿真数据的第二采样值,其中所述第一采样值和所述第二采样值彼此异步地生成。
11.根据权利要求10所述的系统,其中所述配置数据还包括主时钟信号,并且其中所述第三客户端设备基于所述主时钟信号来发出读取命令,以接收所述第一采样值和所述第二采样值。
12.根据权利要求8所述的系统,其中所述第一客户端设备被配置成在所述第一仿真环境内完成第一多个阶段,并且所述第二客户端设备被配置成在所述第二仿真环境内完成第二多个阶段,其中所述第一多个阶段和所述第二多个阶段各自包括第一阶段,并且其中所述第一阶段在所述第一多个阶段和所述第二多个阶段内被异步地完成。
13.根据权利要求12所述的系统,其中所述第三客户端设备被配置成:基于所述第一客户端设备和所述第二客户端设备两者均完成所述第一阶段,获得来自所述第一客户端设备的所述第一仿真数据和来自所述第二客户端设备的所述第二仿真数据。
14.根据权利要求8所述的系统,其中所述第三客户端设备包括主时钟信号,并且所述第三客户端设备还被配置成:与所述主时钟信号异步地接收来自所述第一客户端设备的接收请求,并且与所述主时钟信号异步地接收来自所述第二客户端设备的发送请求,并且其中与所述接收请求和所述发送请求相关联的数据传输在所述主时钟信号的上升沿处被执行。
15.一种非暂态计算机可读介质,包括所存储的指令,所述指令在被一个或多个处理器执行时,使所述一个或多个处理器:
接收电路设计,所述电路设计包括第一本地时钟信号、第二本地时钟信号和主时钟信号;
在第一仿真环境内仿真所述电路设计的第一部分,以基于所述第一本地时钟信号生成第一仿真数据;
在第二仿真环境内仿真所述电路设计的第二部分,以基于所述第二本地时钟信号生成第二仿真数据;以及
基于所述主时钟信号并且彼此同步地接收所述第一仿真数据和所述第二仿真数据,其中所述第一仿真数据和所述第二仿真数据彼此异步地并且与所述主时钟信号异步地被生成,并且其中所述电路设计的功能基于所述第一仿真数据和所述第二仿真数据被确定。
CN202310735176.0A 2022-06-21 2023-06-20 电路设计的分布式仿真同步 Pending CN117272883A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/845,403 US20230409788A1 (en) 2022-06-21 2022-06-21 Synchronizing distributed simulations of a circuit design
US17/845,403 2022-06-21

Publications (1)

Publication Number Publication Date
CN117272883A true CN117272883A (zh) 2023-12-22

Family

ID=89168957

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310735176.0A Pending CN117272883A (zh) 2022-06-21 2023-06-20 电路设计的分布式仿真同步

Country Status (2)

Country Link
US (1) US20230409788A1 (zh)
CN (1) CN117272883A (zh)

Also Published As

Publication number Publication date
US20230409788A1 (en) 2023-12-21

Similar Documents

Publication Publication Date Title
CN113255267B (zh) 使用现场可编程门阵列fpga重新编程检测仿真中的时序违规
KR20130081354A (ko) 분산 병렬 시뮬레이션에서의 통신 방법
US11853662B2 (en) Machine-learning enhanced compiler
CN115315702A (zh) 早期阶段电路设计中基于机器学习的度量的预测
US20220385280A1 (en) Testable time-to-digital converter
US20210374314A1 (en) Engineering Change Order Scenario Compression by Applying Hybrid of Live and Static Timing Views
US11023635B1 (en) Sequence of frames generated by emulation and waveform reconstruction using the sequence of frames
CN114756085A (zh) 用于现场可编程门阵列(fpga)综合的形式化门控时钟转换
US11080446B2 (en) Method to regulate clock frequencies of hybrid electronic systems
US11022634B1 (en) Rail block context generation for block-level rail voltage drop analysis
US20230409788A1 (en) Synchronizing distributed simulations of a circuit design
US20240028812A1 (en) Waveform capture using multicycle path properties
US20230244512A1 (en) Fast waveform capture with low hardware footprint enabling full visibility
US20230071521A1 (en) Detecting simulation, emulation and prototyping issues using static analysis tools
US11403450B2 (en) Convergence centric coverage for clock domain crossing (CDC) jitter in simulation
US20240111660A1 (en) Managing high performance simulation representation of an emulation system
US11797742B1 (en) Power aware real number modeling in dynamic verification of mixed-signal integrated circuit design
US11941339B1 (en) Automated equal-resistance routing in compact pattern
US11361135B2 (en) Guiding sample size choice in analog defect or fault simulation
US20230177244A1 (en) Creation of reduced formal model for scalable system-on-chip (soc) level connectivity verification
US11853668B1 (en) FPGA implementation interleaved with FPGA overlay architectures for emulation
US20220391568A1 (en) Deterministic netlist transformations in a multi-processor parallel computing system
US20230195982A1 (en) Transformations for multicycle path prediction of clock signals
US20220300690A1 (en) Incremental compilation for fpga-based systems
US20210303336A1 (en) Advanced Register Merging

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication