CN110785761A - 存在时钟动态重编程时仿真时间线的压缩方法 - Google Patents

存在时钟动态重编程时仿真时间线的压缩方法 Download PDF

Info

Publication number
CN110785761A
CN110785761A CN201880041119.XA CN201880041119A CN110785761A CN 110785761 A CN110785761 A CN 110785761A CN 201880041119 A CN201880041119 A CN 201880041119A CN 110785761 A CN110785761 A CN 110785761A
Authority
CN
China
Prior art keywords
simulation
hardware
design
hardware simulation
simulation system
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
Application number
CN201880041119.XA
Other languages
English (en)
Other versions
CN110785761B (zh
Inventor
亚历山大·拉比诺维奇
塞德里克·杰·阿尔基耶
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.)
American Merchant Xinsi Technology Co Ltd
Original Assignee
American Merchant Xinsi Technology Co Ltd
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 American Merchant Xinsi Technology Co Ltd filed Critical American Merchant Xinsi Technology Co Ltd
Publication of CN110785761A publication Critical patent/CN110785761A/zh
Application granted granted Critical
Publication of CN110785761B publication Critical patent/CN110785761B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3652Software debugging using additional hardware in-circuit-emulation [ICE] arrangements
    • 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
    • G06F30/3312Timing analysis
    • 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/3323Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/04Constraint-based CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/20Configuration CAD, e.g. designing by assembling or positioning modules selected from libraries of predesigned modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/396Clock trees

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)
  • Quality & Reliability (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

该专利的独立权利要求表示实施例的简要描述。硬件仿真系统被配置为:定义与电路设计中使用的多个设计时钟中的每一个相关联的可变延迟,根据多个可变延迟来计算压缩值,检测一个或多个可变延迟中的变化,和,响应于检测到的变化而重新计算时间压缩值。硬件仿真系统还被配置为使用设置在硬件仿真系统中的可编程电路来重新计算时间压缩,而无需停止硬件仿真系统。这样的电路可以设置在硬件仿真系统中布置的单个可编程设备中或在硬件仿真系统中布置的多个可编程设备中。本摘要无意限制权利要求的范围。

Description

存在时钟动态重编程时仿真时间线的压缩方法
相关申请的交叉引用
本申请根据35 USC 119(e)要求于2017年5月17日提交的申请序列号62/507,667的权益,该专利的内容通过引用整体并入本文。
版权声明
本专利文件的受让人对任何人传真复制本专利文件本身或本专利申请均无异议,因为本专利文件出现在美国专利和商标局档案中,但在其他方面保留受版权保护的作者的任何作品中的所有权利。
说明书-免责声明
在以下背景技术、发明内容和详细描述中,标题不应被解释为必要的限制。在以下背景技术、发明内容和详细描述中,任何公布的引用或识别并不表示与任何要求保护或描述的实施例的现有技术的相关性或状态。文本全部用斜体表示的段落表示多个Synopsys专利说明书所共有的文本。
背景技术
集成电路(IC)设计者通常以硬件描述语言(HDL)(诸如Verilog、VHDL、SystemC等)描述其设计。硬件仿真是指利用另一件硬件(诸如专用仿真系统)复制一件或多件硬件(以下也称为被测设计(DUT))的行为的过程。通常根据表示被测设计的硬件描述语言源代码来生成仿真模型。仿真模型被编译为用于对仿真系统进行编程的格式。运行已被编程的仿真系统能够对被测设计进行调试和功能验证。仿真的总体进度通常由仿真器硬件生成的主时钟信号来控制。
IC设计者可以在设计过程的各个阶段使用仿真系统,以验证IC的功能和行为符合预期。例如,设计者可以通过将其进行编程以仿真DUT从而来开发用于仿真系统的测试平台。该系统可以指示DUT的各种内部或外部信号如何随时间改变状态,从而允许在仿真期间监视DUT的这种信号和行为。
该系统可以生成转储文件,该转储文件含有表示被监视信号的时变特性的波形数据。然后,设计者可以使用任何数量的调试工具来分析转储文件,并确定DUT是否按预期运行。仍然存在对改进的硬件仿真系统的需求。
发明内容
权利要求表示对在本公开内容中发现的创新、实施例和/或示例中的一个或多个的简要描述。
根据本发明的一个实施例,一种执行电路设计的硬件仿真的方法包括:定义与电路设计中使用的一个或多个设计时钟相关联的可变延迟,根据每个时钟的可变延迟计算压缩值,检测至少一个可变延迟的变化,并响应于检测到的变化而重新计算压缩值。
在一个实施例中,该方法还包括使用在硬件仿真系统中操作的电路来重新计算压缩值。在一个实施例中,在不停止硬件仿真的情况下执行压缩值。在一个实施例中,电路在硬件仿真系统中的可编程设备中。在一个实施例中,电路在硬件仿真系统中的多个可编程设备中。
硬件仿真系统被配置为定义与正在被仿真的电路设计中使用的一个或多个设计时钟相关联的可变延迟,根据每个时钟的可变延迟计算压缩值,检测至少一个可变延迟的变化,并响应于检测到的变化重新而计算时间压缩值。
根据本发明的一个实施例,该硬件仿真系统还被配置为使用硬件仿真系统中的电路来重新计算时间压缩值。根据本发明的一个实施例,该硬件仿真系统在不停止硬件仿真系统的情况下重新计算压缩值。在一个实施例中,该电路在硬件仿真系统中的可编程设备中。在另一实施例中,该电路在硬件仿真系统中的多个可编程设备中。
本发明内容并不试图完全表示任何特定创新、实施例或示例,因为其可以在商业中使用。另外,本发明内容不旨在表示创新、实施例或示例的必要因素,也不旨在限制本公开的主题的范围。
在本公开内容中发现的创新、实施例和/或示例不是全部的,而是描述本主题的基本意义。因此,本发明内容的一种用途是作为稍后提供的详细描述的序言。
附图说明
以下的详细描述、附图、所附的额外附图和所附的权利要求表示所要求保护的发明的创新、实施例和/或示例的性质和优点。所有附图仅出于说明的目的表示所要求保护的发明的创新、实施例和/或示例,并且不限制所要求保护的发明的范围。这样的附图不一定按比例绘制,并且是本公开的一部分。
在附图中,相似的部件或特征可以以标签形式具有相同或相似的附图标记(诸如字母数字符号,例如,数字附图标记),并且可以表示相似或等同的功能。此外,可以通过在参考附图标记之后加上破折号和第二标签(在相似部件之间进行区分)来区分相同类型的各种部件。如果在说明书中仅使用第一参考标签,则该描述适用于具有相同第一参考标签的任一类似部件,而与第二参考标签无关。附图的简要描述如下。
图1示出了在集成电路的设计和制造中执行的多个过程。
图2是根据本发明的一个实施例的硬件验证系统的示例性高级框图。
图3A示出了在多个仿真周期期间的多个设计时钟信号。
图3B示出了在施加压缩值以减少仿真时间之后的图3A的时钟设计信号。
图4A示出了根据本发明的一些实施例使用的计算机系统的各种部件。
图4B是根据本发明一些实施例使用的存储器的简化高级框图。
图4C是根据本发明的一个实施例的使用硬件仿真系统仿真的电路的简化高级框图。
具体实施方式
详细描述
附图和以下详细描述仅通过说明表示创新、实施例和/或示例,在单个实施例中一起描述了各种特征、结构或特性以简化本公开。由这样的示例性创新、实施例和/或示例公开的任何元件、过程、机器、系统、制成品或组合物的变型都将轻易被识别并且可以用于商业中而不背离所要求保护的原理。附图和详细描述还可以隐含地或明确地表示本文描述的示例性实施例的子集的优点和改进。
在附图和详细描述中,可以描述许多具体细节以实现一种或多种示例性创新、实施例和/或示例。为了不使下面的详细描述中的示例性创新、实施例和/或示例的呈现不清楚,本领域中已知的一些处理步骤或操作可以组合在一起以呈现和用于说明目的,并且可以不进行详细描述。然而,本领域技术人员将认识到,这些示例性创新、实施例和/或示例可以在没有这些具体细节或其等同形式的情况下用于商业中。在其他情况下,未详细描述公知的过程和设备,以免不必要地使这些示例性创新、实施例和/或示例的各方面晦涩难懂。在其他情况下,可能根本不描述本领域中已知的一些处理步骤或操作。相反,以下描述集中于各种示例性创新、实施例和/或示例的独特特征或元素。此外,尽管本描述可以以单数形式指代结构的一些部件,但是在整个附图中可以描绘多于一个的部件,并且相似的部件用相似的数字标记。
被仿真的电路设计通常包括多个设计时钟信号,这些设计时钟信号的周期性行为可以随时间变化。这样的设计时钟可以是异步的,在这种情况下,电路部件(诸如先进先出(FIFO))可以用于处理异步时钟域之间的数据传送。
在硬件仿真中,称为时间轴压缩的优化技术可以用于使得在通常称为压缩窗口的较小时间窗口内出现的多个异步设计时钟沿对齐。仿真延迟调度程序使用时间压缩窗口来使得多个设计时钟沿对齐。优化技术减少了仿真事件的总数,从而减少了仿真时间和成本。
图3A示出了在仿真周期10和60之间定义的时间段期间振荡的设计时钟信号Clk1、Clk2和Clk3。假定设计时钟信号Clk1、Clk2和Clk3的周期为20、22和54个时间单位,占空比为50%。图3B示出了当应用压缩值9以减少仿真时间时的相同的设计时钟信号。压缩将仿真周期的数量从图3A中所示的12减少到图3B中所示的5。
根据本发明的一个方面,每当在仿真中使用的一个或多个设计时钟的频率改变时,使用仿真硬件本身并在仿真运行期间来动态地重新计算与时间轴压缩相关联的优化参数。此外,因为时间轴压缩参数在仿真期间并且响应于设计时钟频率的变化而被动态地重新计算,所以硬件仿真可以从头到尾不间断地继续进行,而时间轴压缩参数在整个仿真过程中始终保持最佳。时间压缩参数优化完全在仿真硬件本身内执行,以避免当一个或多个设计时钟的频率或周期改变时停止仿真过程。因此,本发明的实施例在不停止计算机和/或仿真硬件的情况下显著减少了计算机和/或仿真硬件的使用时间。
为此,仿真编译器识别每个设计时钟及其模式,以提取用于重新配置每个设计时钟的高占空比和低占空比的设计寄存器。每个这样的设计时钟的每个高占空比寄存器和低占空比寄存器被耦合到中央模块,该中央模块被配置为基于设计时钟占空比高低值来组合地计算压缩窗口,如下文详细描述。计算出的值应用于仿真延迟调度程序。
因为压缩窗口的重新计算被组合执行,所以不消耗任何额外的仿真周期。此外,设计时钟的占空比高低值可以在仿真期间频繁改变。此外,应用于仿真延迟调度程序的压缩窗口值在整个仿真时间内保持最佳。
根据本发明的实施例,硬件仿真系统监视表示延迟的变量的值,其影响在正被仿真的设计中使用的设计时钟的特性。如果延迟变量在给定的仿真周期中改变,则在评估下一个仿真周期之前,重新计算时间轴压缩参数。计算受延迟变量变化影响的设计时钟的周期。
关于是否将一定数量的参考设计时钟事件组合到相同的仿真周期中的决定基于设计时钟的时段(period)的更新值。一种典型的解决方案是在最快的设计时钟的时段(或半时段)内组合所有事件,然后开始新的仿真周期。
当设计时钟的时段改变从而导致新的压缩值时,可以采用几种不同的选择之一。在一个实施例中,所有未决事件能够在没有时间压缩的情况下发生,然后使用新的压缩值进行优化。在又一实施例中,未决事件以新计算的压缩值执行。在又一实施例中,所有未决事件都未计划/清除,并且重新启动模型设计时钟的所有过程,且剩余的仿真能够以新的压缩值继续。
如上所述,在一个实施例中,压缩参数由仿真器中存在的电路计算,而不需要仿真硬件和计算机软件之间的同步。因此,与常规系统相反,本发明的实施例避免了否则会由于频繁的重新配置和/或仿真过程的停止导致的任何性能上的损失。
可以描述每个设计时钟的时段以及占空比,以使用例如Verilog行为语言进行仿真。延迟可以是固定的或可变的。以下是描述具有5个时间单位的低时段和7个时间单位的高时段的设计时钟波形的伪代码。
Figure BDA0002326173810000061
以下是描述设计时钟的伪代码,该设计时钟的低占空比和高占空比由变量“值”定义,因此可以随时间改变。变量“值”的数值可以由软件或硬件进行设置。
Figure BDA0002326173810000062
以下是在电路设计的硬件仿真中使用的时间压缩的示例。假定该设计包括6个设计时钟信号,即设计时钟A0、A1、A2、A3、A4和A5,每个都有50%的占空比。假定设计时钟A0、A1、A2、A3、A4、A5的半时段分别为13、15、17、10、23和28个时间单位。
参考下表I,因为在仿真周期#1期间,设计时钟A3与所有其他设计时钟相比具有最小的半时段(即,10个时间单位),所以设计时钟A3被选为周期#1的获胜者。相应地,将所有其他设计时钟的半时段减少设计时钟A3的半时段,以达到仿真周期#2中所示的值。每个周期的获胜的设计时钟在紧随其后的仿真周期中翻转(即,切换)。相应地,设计时钟A3在仿真周期#2中被分配10个时间单位的值。如上所述,通过从周期#1的获胜值中减去在仿真周期#1中的值来确定在仿真周期2中分配至每个其他设计时钟的值。因此,设计时钟A0、A1、A2、A4和A5在周期#2中分别具有3、5、7、13和18的值。
设计时钟A0在仿真周期#2中具有所有值中最小的值(即,3个时间单位),因此是仿真周期#2中获胜的设计时钟。相应地,在仿真周期3期间分配至设计时钟A1、A2、A3、A4和A5的值通过将它们的周期#2的值减3个时间单位来计算。因为设计时钟A0是周期#2中的获胜时钟,所以设计时钟A0在紧随其后的仿真周期#3中翻转。相应地,设计时钟A0在仿真周期#3中被分配13个时间单位的值。类似地计算在周期4至8期间分配至设计时钟的值,下面不再描述。
表I
#1 #2 #3 #4 #5 #6 #7 #8
A0 13 3 13 11 9 6 3 13
A1 15 5 2 15 13 10 7 4
A2 17 7 4 2 17 14 11 8
A3 10 10 7 5 3 10 7 4
A4 23 13 10 8 6 3 23 19
A5 28 18 15 13 11 8 5 2
减量 10 3 2 2 3 3 3 2
下表II示出了在应用压缩窗口5时描述的相同设计时钟信号A0、A1、A2、A4和A5的仿真周期。相应地,仿真周期的数量从8减少到3。
表II
Figure BDA0002326173810000071
Figure BDA0002326173810000081
参考表II,因为设计时钟A3在周期#1中具有所有半时段的最小半时段,所以设计时钟A3被选为周期#1的获胜者。相应地,用于减少其他设计时钟的时间的量是设计时钟A3的半时段(即,10)和5的总和,即15。因为时钟A0和A1的半时段小于15个时间单位,所以设计时钟A0、A1和A3被安排在仿真周期#2期间翻转。
设计时钟A0最初被安排为在仿真周期#2期间的时间26翻转。然而,因为此时已经经过了15个时间单位,所以在周期#2中设计时钟A0被分配值26-15=11。以类似的方式,在仿真周期#2期间,设计时钟A1被分配值30-15=15,并且设计时钟A3被分配值20-15=5。在周期#2中分配至设计时钟A2、A4和A5的值通过从15中减去它们的周期#1的值来确定。
从表II中可以看出,设计时钟A2是周期#2中的获胜的设计时钟。因此,在周期2中值减少的量为2+5=7。因为在#2周期期间,分配至设计时钟A2和A3的值小于减量值7,所以设计时钟A2和A3都被安排在仿真周期#2期间翻转。
如表II所示,在仿真周期3期间分配至设计时钟A0和A1的值分别为(11-7=4)和(15-7=8)。设计时钟A2最初被安排以时间单位(2*17=34)在仿真周期3中切换。然而,此时,全局仿真单元在仿真周期#1中已经经过了15个单位,在仿真周期#2中已经经过了7个单位。相应地,在仿真周期#3期间,设计时钟A2被分配值(34-15-7=12)。如上所述,设计时钟A3被安排在周期2中切换,并且又被安排在仿真周期3中切换。因此,它在仿真周期3中的切换时间是30个时间单位。然而,此时,全局仿真单元在组合的仿真周期1和2中已经经过22个单位。相应地,在仿真周期3中设计时钟A3被分配(30-22=8)时间的值。通过从它们各自的周期2的值8和13减去减量值7,获得分配至设计时钟A4和A5的时间单位1和6。
根据本发明的一个示例性实施例,如下所述确定用于多个时钟的压缩值。假设有K个时钟,每个时钟定义为具有占空比高值和占空比低值,分别指定时钟处于逻辑高电平“1”状态的持续时间和时钟处于逻辑低电平“0”状态的持续时间。因为有K个时钟,且每个时钟都有高占空比值和低占空比值,所以有2K个值。在一个实施例中,所有2K个高占空比和低占空比的最小值被选为压缩值。如此确定的压缩值确保相同的时钟的低到高过渡(正沿或上升沿)和/或高到低过渡(负沿或下降沿)不合并到相同的仿真周期中。
根据本发明的另一示例性实施例,压缩值可以被选择作为代表K个时钟的K个数字中的最小值。每个这样的数字由时钟之一的高占空比值和低占空比值之和表示。在这样的实施例中,相同的时钟的上升沿或下降沿可以被映射到相同的周期,然而,没有形同的时钟的两个连续的上升沿或下降沿被映射到形同的周期。可以使用用于计算压缩值的其他技术。因此,应当理解,本发明的实施例不限于计算压缩值的任何特定方法。
详细描述-技术支持通用计算机说明
图4A、图4B和图4C是适用于该技术的实施例以及该技术的电路设计和电路实施例的计算机系统的简化框图。
在图4A中,计算机系统3110通常包括至少一个计算机或处理器3114,其经由总线子系统3112与许多外围设备通信。通常,计算机可以包括,或者处理器可以是,微处理器、图形处理单元或数字信号处理器,以及它们的电子处理等同设备中的任一个,该等同设备诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA)。术语“处理器”和“计算机”在下面进一步定义。这些外围设备可以包括存储子系统3124、用户界面输入设备3122、用户界面输出设备3120和网络接口子系统3116,存储子系统3124包括存储器子系统3126和文件存储子系统3128。输入和输出设备允许用户与计算机系统3110交互。
计算机系统可以是服务器计算机、客户端计算机、工作站、大型机、个人计算机(PC)、平板电脑、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、智能手机、Web设备、机架式“刀片”、信息亭、电视、游戏机、网络路由器、交换机或网桥,或任何能够执行指令124(顺序或其他方式)的数据处理机器,其中,指令124指定该机器要采取的操作。
计算机系统通常包括操作系统,诸如Microsoft的Windows,Sun Microsystems的Solaris,Apple Computer的MacO,Linux或Unix。计算机系统通常还可以包括基本输入/输出系统(BIOS)和处理器固件。处理器使用操作系统、BIOS和固件以控制连接到处理器的界面和子系统。与这些操作系统兼容的典型处理器包括Intel的Pentium和Itanium,AdvancedMicro Devices的Opteron和Athlon,以及ARM Holdings的ARM处理器。
所要求保护的发明的创新、实施例和/或示例既不限于常规计算机应用,也不限于运行它们的可编程设备。例如,所要求保护的创新、实施例和/或示例可以包括光学计算机、量子计算机、模拟计算机等。计算机系统可以是多处理器或多核系统,并且可以使用分布式或远程系统或者在分布式或远程系统中实现。这里的术语“处理器”以最广义使用,包括单个处理器和多核或多处理器阵列,其包括图形处理单元、数字信号处理器、数字处理器以及这些设备的组合。此外,虽然仅示出了单个计算机系统或单个机器,但是使用此类术语的单数形式还应表示计算机系统或机器的任何集合,其单独地或共同地执行指令124以执行这里所讨论的指令集中的任何一个或多个指令。由于计算机和网络的不断变化的性质,因此对图31A中描绘的计算机系统3110进行的描述仅旨在作为说明优选实施例目的的一个示例。计算机系统3110的许多其他配置可能比图31A所示的计算机系统具有更多或更少的部件。
网络接口子系统3116提供到外部网络的接口,包括到通信网络3118的接口,并且网络接口子系统3116经由通信网络3118耦合到其他计算机系统或机器中的相应的接口设备。通信网络3118可以包括许多互连的计算机系统、机器和通信链路。这些通信链路可以是有线链路、光链路、无线链路或任何其他用于信息通信的设备。通信网络3118可以是任何合适的计算机网络,例如诸如Internet(因特网)的广域网和/或诸如Ethernet(以太网)的局域网。通信网络可以是有线的和/或无线的,并且通信网络可以使用诸如虚拟专用网络可用的加密和解密方法。通信网络使用一个或多个通信接口,该接口可以从其他系统接收数据或向其他系统传输数据。通信接口的实施例通常包括Ethernet卡、调制解调器(例如,电话、卫星、电缆或ISDN)、(异步)数字用户线(DSL)单元、火线接口、USB接口等。可以使用一种或多种通信协议,例如HTTP、TCP/IP、RTP/RTSP、IPX和/或UDP。
用户界面输入设备3122可以包括字母数字键盘,小键盘,诸如鼠标、轨迹球、触摸板、手写笔或图形输入板的指向设备,扫描仪,合并到显示器中的触摸屏,诸如声音识别系统或麦克风的音频输入设备,视线识别,脑电波模式识别以及其他类型的输入设备。这些设备可以通过有线或无线方式连接到计算机系统。通常,术语“输入设备”的使用旨在包括将信息输入到计算机系统3110内或通信网络3118上的所有可能类型的设备和方式。用户界面输入设备通常允许用户选择出现在某些类型的用户界面输出设备(例如显示子系统)上的对象、图标、文本等。
用户界面输出设备3120可以包括显示子系统、打印机、传真机或诸如音频输出设备的非可视显示器。显示子系统可以包括阴极射线管(CRT),诸如液晶显示器(LCD)的平板设备,投影设备或其他用于创建可见图像的设备,诸如虚拟现实系统。显示子系统还可以诸如经由音频输出或触觉输出(例如,振动)设备来提供非可视显示。通常,术语“输出设备”的使用旨在包括将信息从计算机系统3110输出到用户或另一机器或计算机系统的所有可能类型的设备和方式。
存储器子系统3126通常包括多个存储器,所述多个存储器包括用于在程序执行期间存储指令和数据的主随机存取存储器(RAM)3130(或其他易失性存储设备)以及只读存储器(ROM)3132,固定指令存储在ROM 3132中。文件存储子系统3128为程序和数据文件提供持久存储,并且可以包括硬盘驱动器、软盘驱动器以及相关联的可移动介质、CD-ROM驱动器、光盘驱动器、快闪存储器或可移动介质盒。实现某些实施例的功能的数据库和模块可以由文件存储子系统3128存储。
总线子系统3112提供了一种用于使计算机系统3110的各个部件和子系统按预期彼此通信的设备。尽管总线子系统3112被示意性地示出为单个总线,但是总线子系统的替代实施例可以使用多个总线。例如,基于RAM的主存储器可以使用直接存储器存取(DMA)系统直接与文件存储系统通信。
图4B描绘了存储器3140,诸如与文件存储子系统3128和/或与网络接口子系统3116相关联的非暂时性计算机可读数据和信息存储介质,并且可以包括指定电路设计的数据结构。存储器3140可以是硬盘、软盘、CD-ROM、光学介质、可移动介质盒或以易失性或非易失性形式存储计算机可读数据的其他介质。从此类存储器读取到计算机中的软件可以在选定的时间从有形形式转换为通过介质(例如网络、连接器、电线或走线(电脉冲),或者诸如空间或大气的介质(电磁光谱中的波长比红外光长的电磁辐射)传播的传输信号。
图4C表示利用所描述的技术创建的集成电路3190,该集成电路3190包括例如从单元库中选择的一个或多个单元。
详细描述-技术支持硬件/软件等效
本文描述的一些创新、实施例和/或示例包括和/或使用处理器。如本文所用,术语“处理器”表示有形的数据和信息处理设备,其通常使用序列转换(也称为“操作”)来物理地转换数据和信息。数据和信息可以由电、磁、光或声音信号来物理地表示,其中,该信号能够被处理器存储、存取、传输、组合、比较或以其他方式操纵。术语“处理器”可以表示单个处理器和多核系统或多处理器阵列,包括图形处理单元、数字信号处理器、数字处理器或这些元件的组合。
处理器可以是电子的,例如包括数字逻辑电路(例如,二进制逻辑)或是模拟的(例如,运算放大器)。处理器也可以是非电子的,例如,基于光信号处理、DNA转换或量子力学或技术组合的处理器,诸如光电处理器。对于以二进制形式构造的数据和信息,能够通过使用AND、OR和NOT逻辑运算(及其派生,诸如NAND、NOR和XOR运算)来转换数据和信息的任何处理器都可以使用布尔逻辑的任何功能来转换数据和信息。诸如模拟神经网络处理器的处理器也可以非数字地转换数据和信息。没有科学证据表明这些处理器中的任何一个正在以与人脑的生物电结构等效的任何方式或形式来处理、存储和检索数据和信息。
一个或多个处理器还可以在“云计算”环境中或作为“软件即服务(SaaS)”运行以支持相关操作的性能。例如,至少一些操作可以由分布式或远程系统可用的一组处理器来执行,这些处理器可以经由通信网络(例如,Internet)和经由一个或多个软件接口(例如,应用程序接口(API))访问。
如本文所用,术语“模块”表示有形的数据和信息处理设备,该有形的数据和信息处理设备通常在尺寸和/或复杂性上受到限制。例如,术语“模块”可表示可以转换数据和信息的一种或多种方法或过程。术语“模块”还可以表示计算机程序中的一种或多种方法和过程的组合。术语“模块”还可以表示数字逻辑设备的小型网络,其中逻辑设备的互连提供了网络的结构。包括以专用语言(诸如,System C)指定的模块的方法和过程可用于生成用于数字逻辑设备的网络的规范,该数字逻辑设备处理数据和信息的结果与从方法和过程获得的结果完全相同。
模块可以被永久地配置(例如,被硬连线以形成硬件),临时地配置(例如,用软件编程),或者两种配置的组合(例如,结构化ASIC)。例如可以使用专用集成电路(ASIC)(诸如算术逻辑单元(ALU)、可编程逻辑阵列(PLA)或只读存储器(ROM))来制造永久配置的模块,其所有通常在制造期间配置。例如可以使用现场可编程门阵列(例如Xilink或Intel的Altera出售的FPGA)、随机存取存储器(RAM)或微处理器来制造临时配置的模块。模块被配置为处理数据和信息,通常使用应用于数据和信息的序列转换(也称为“操作”)(或者在ROM和RAMS的情况下,通过使用输入信息作为用于存储输出数据和信息的存储器的地址来转换数据和信息),以执行本发明的本创新、实施例和/或示例的各个方面。
临时配置的模块不需要在任何一个时刻配置。例如,包括一个或多个模块的处理器可具有在不同时间配置的模块。处理器可以在一个时刻包括一个或多个模块的集合,并且在不同的时刻包括一个或多个模块的不同的集合。以永久配置形式、临时配置形式或这两种形式的组合来制造或实施模块的决定可能取决于成本、时间考虑、工程约束和/或特定的设计目标。模块处理的“物质”与制造或实施模块的形式无关。
如本文所用,术语“算法”表示包括模块可以使用以转换数据和信息从而获得结果的一系列或一组操作或指令的过程。模块可以包括一个或多个算法。如本文所用,术语“线程”是指可以包括整个过程或算法的指令的子集的指令的序列。进程或算法可以划分为多个线程,这些线程可以并行执行。
如本文所用,术语“计算机”包括至少一个信息处理器,该信息处理器例如可以使用可以包括晶体管的电子门来执行某些运算,例如(但不限于)AND、OR和NOT逻辑运算,并增加了存储器(例如,基于使用NOT-AND或NOT-OR运算的切换器的存储器)。据说这种处理器是图灵完备的(Turing-complete)或计算通用的。计算机,无论是否是数字计算机,通常包含许多模块。
如本文所用,术语“软件”或“程序”表示配置用于本说明书中描述的创新、实施例和示例中的处理器的一个或多个算法和数据结构。可通过软件配置的此类设备包括一个或多个计算机(例如独立计算机、客户端或服务器计算机),或一个或多个硬件模块,或一个或多个这样的计算机或模块的系统。如本文所用,术语“软件应用程序”表示一组数据和指令,这些数据和指令配置处理器以实现特定结果,例如,以执行文字处理操作或加密一组数据。
如本文所用,术语“编程语言”表示用于指定包括软件的指令和数据集的语法和句法(syntax)。编程语言包括汇编程序指令,指令集架构(ISA)指令,机器指令,机器相关指令,微码,固件指令,状态设置数据,或以一种或多种更高级别语言的任意组合编写的源代码或目标代码,诸如常规的过程编程语言,例如“C”编程语言或类似的编程语言(例如SystemC),或面向对象的编程语言诸如Smalltalk、C++等,以及任何将来的等效编程语言。
软件从数据和信息存储设备进入到,等效地读取到,计算机或计算机系统的一个或多个存储器中。计算机通常具有用于读取用于传输软件的存储介质的设备,或者具有通过网络接收软件的接口设备。在“通用计算机说明”部分中讨论了此过程。
详细描述-技术支持EDA系统/工作流程说明
图1示出了在使用带有计算机的软件工具以及可能的特殊硬件辅助工具以转换和验证代表集成电路的设计数据和指令的设计、验证和制做制造品的项目(诸如集成电路)中执行的各种过程。这些过程始于产生具有由设计者提供的信息的产品构思110,该信息在使用EDA软件工具112(本文也可以表示为EDA软件)作为设计工具或使用验证工具的创建制造品的项目(在本文中称为设计或设备)期间被转换。当设计完成时,可以将其下线(taped-out)134,通常是将用于集成电路的艺术品(例如,几何图案)发送到制做设施以制做掩模组,然后该掩模组用于制做集成电路。在下线之后,制做136半导体晶片并且执行封装和组装过程138,这样形成成品集成电路140,其在本文中也可以被表示为电路、设备、部件、芯片或SoC(片上系统)。
制造品的项目,例如电路或系统,在商业中以从低级晶体管布局到高级描述语言的各种级别的抽象使用。大多数设计者使用硬件描述语言(HDL)(诸如VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera)以高级抽象开始从来设计其电路和系统。高级HDL对于开发人员而言更容易理解,特别是对于大型系统,并且高级HDL可以描述使用较低级抽象很难理解的高度复杂的概念。HDL描述可以转变为其他级别抽象,这对开发人员很有帮助。例如,高级描述可以被转变为逻辑级寄存器传输级(RTL)描述、门级(GL)描述、布局级描述或掩模级描述。每个较低的抽象级别都会在设计说明中引入更多细节。较低级别的抽象可以由计算机自动生成、来源于设计库、或由另一种设计自动化技术来创建。处于较低级别的抽象的规范语言的一个示例是SPICE,它是基于模拟电路的常用详细描述。
使用EDA软件工具112的设计过程包括以下描述的工具114-132。此设计流程描述仅用于说明目的,并不意味着限制本公开。例如,实际的集成电路设计可能需要设计者以与本文描述的顺序不同的顺序执行设计操作。
在系统设计114期间,设计者描述了待制造的功能。设计者还可以执行假设计划以完善功能并检查成本等。在此阶段可能会发生硬件-软件体系结构分区。在此阶段可以使用的来自加利福尼亚州山景城Synopsys,Inc.的示例性EDA软件产品包括:Model Architect、Sabre、System Studio和Designware产品。
在逻辑设计和功能验证116期间,以一种或多种硬件描述语言或HDL来指定电路中的模块,并检查HDL中的设计的功能准确性,即,以匹配正在被设计的电路或系统的规范的要求。更具体地,对设计进行检查以确保其产生正确的输出。示例性的HDL语言是Verilog、VHDL和SystemC。通常,通过使用基于软件的仿真器和其他工具(诸如测试台生成器、静态HDL检查工具和形式验证工具)来完成功能验证。在一些情况下,使用称为“仿真器”或“原型系统”的特殊硬件来加速功能验证。可在此阶段使用的来自加利福尼亚州山景城Synopsys,Inc.的示例性EDA软件产品包括:VCS、Vera、Designware、Magellan、Formality、ESP和Leda产品。可在此状态下使用的、也是从Synopsys获得的示例性仿真器和原型产品包括:Zebu.RTM.和Protolink.RTM.(RTM=“注册商标”)。
在用于测试的逻辑合成和设计118期间,HDL代码被转换为网表。该网表可以针对目标技术进行优化。另外,可以设计和实施测试以检查成品集成电路。可在此阶段使用的来自加利福尼亚州山景城的Synopsys,Inc.的示例性EDA软件产品包括:设计编译器、物理编译器、测试编译器、功率编译器、FPGA编译器、Tetramax和Designware产品。
在网表验证120期间,检查网表是否符合时序约束以及是否与HDL代码相对应。可在此阶段使用的来自加利福尼亚州山景城Synopsys,Inc.的示例性EDA软件产品包括:Formality、Primetime和VCS产品。
在设计计划122期间,构建并分析集成电路的总体平面图的时序和顶级路由。可在此阶段使用的来自加利福尼亚州山景城Synopsys,Inc.的示例性EDA软件产品包括:Astro和IC编译器产品。
在布局实施124期间,物理布局(诸如晶体管或电容器的电路元件的定位)和路由(通过多个导体对相同的连接)发生,并且选择库单元以执行特定的逻辑功能也可发生。可在此阶段使用的来自加利福尼亚州山景城Synopsys,Inc.的示例性EDA软件产品包括:Astro和IC编译器产品。
在分析和提取126期间,以布局级别验证电路功能,这允许对布局设计进行改进。可在此阶段使用的来自加利福尼亚州山景城Synopsys,Inc.的示例性EDA软件产品包括:Astrorail、Primerail、Primetime和Star RC/XT产品。
在物理验证128期间,检查布局设计以确保制造约束(诸如DRC约束、电约束、光刻约束以及与HDL设计规范匹配的电路功能)的正确性。可在此阶段使用的来自加利福尼亚州山景城Synopsys,Inc.的示例性EDA软件产品包括Hercules产品。
在分辨率增强130期间,执行布局的几何操作以提高设计的可制造性。可在此阶段使用的来自加利福尼亚州山景城Synopsys,Inc.的示例性EDA软件产品包括:Proteus产品。
在下线期间,创建数据以用于(如果适当,在应用光刻增强之后)光刻掩模的生产。可在下线期间使用的来自Synopsys,Inc.的示例EDA软件产品包括IC编译器和自定义设计器(Custom Designer)产品系列。
在掩模数据准备132期间,“下线”数据用于产生光刻掩模,该光刻掩模用于产生成品集成电路。可在此阶段使用的来自加利福尼亚州山景城Synopsys,Inc.的示例性EDA软件产品包括CATS系列产品。
对于所有上述集成电路设计工具,可以使用来自其他EDA供应商(诸如Cadence、Siemens、其他公司实体或来自大学的各种非商业性工具、或开源存储库)的类似工具作为替代方案。
本公开的实施例可以在一个或多个上述阶段中使用。具体地,本公开的一些实施例可以在EDA软件112中使用。
存储子系统优选地用于存储程序和数据结构,该程序和数据结构提供本文所述的EDA工具以及用于为库开发单元和使用该库进行物理和逻辑设计的工具中的一些或全部的功能。这些程序和数据结构通常以本领域普通技术人员已知的方式由一个或多个处理器执行。
详细描述-技术支持仿真环境说明
EDA软件系统,诸如图1中描绘的元件112,通常包括用于验证电路设计的功能的仿真系统116。图2描绘了典型的仿真系统,其包括主机系统300(通常是EDA系统的一部分)和仿真器系统202(通常是一组可编程设备,诸如现场可编程门阵列(FPGA))。主机系统通常使用编译器210来生成数据和信息,以将仿真器配置为仿真电路设计。待被仿真的更多电路设计的其中之一称为DUT(被测设计)。仿真器是硬件系统,其可以仿真DUT,例如,以使用仿真结果来验证DUT的功能。可以用于本文公开的实施例的仿真系统的一个示例是可从Synopsys,Inc.获得的ZeBus服务器。
主机系统300可以包括一个或多个处理器。在主机系统由多个处理器组成的实施例中,本文描述的由主机系统执行的功能可以分布在多个处理器之间。
主机系统300通常包括编译器210,编译器210处理代表DUT的硬件描述语言编写的代码,产生数据(通常是二进制的)和用于配置仿真系统202以仿真DUT的信息。编译器210可以转换、改变、重新配置DUT,向DUT添加新功能和/或控制DUT的时序。
主机系统和仿真器使用由仿真连接所携带的信号来交换数据和信息。连接可以是一根或多根电缆,例如,引脚配置与RS232或USB协议兼容的缆线。连接可以是有线通信介质或网络,诸如局域网或广域网(诸如Internet)。连接可以是使用无线协议(诸如Bluetooth.RTM或IEEE802.11)的无线通信介质或具有一个或多个访问点的网络。主机系统和仿真器可以通过第三设备(诸如网络服务器)交换数据和信息。
仿真器包括多个FPGA(或其他可编程设备),例如,图2中的元件2041至204N。每个FPGA可以包括一个或多个FPGA接口,通过该接口,FPGA连接到仿真器的其他FPGA(和可能的其他仿真器硬件部件),以便FPGA交换信号。FPGA接口也可以称为输入/输出引脚或FPGA焊盘。虽然本文公开的一些实施例利用包括FPGA的仿真器,但是其他实施例可以包括其他类型的逻辑块来代替或与用于仿真DUT的FPGA一起使用,例如,定制FPGA、用于仿真或原型设计的专用ASIC、存储器以及输入/输出设备。
可编程设备可以包括允许可编程块根据HDL代码中的描述彼此连接的可编程块阵列和可重配置互连的层次结构。每个可编程块都可以被配置为执行复杂的组合功能,或者仅执行简单的逻辑功能,诸如AND和XOR。
在许多FPGA中,这些块还包括存储元件,其可以是简单的锁存器、切换器或更复杂的存储块。取决于不同逻辑块之间互连的长度,信号可能会在不同时间到达这些块的输入端。
可编程处理器2041-204N可以放置在一个或多个硬件板2121至212M中。许多这样的板可以放置在硬件单元例如2141中。可以使用单元的背板或任何其他类型的连接来连接单元内的板。另外,多个硬件单元(例如2141至214K)可以通过缆线或任何其他方式彼此连接以形成多单元系统。通常,在不脱离本公开的教导的情况下,可以使用单个板、具有多个板的单个单元或使用多个单元来形成硬件仿真或原型系统202。
对于待被仿真的DUT,仿真器从主机系统接收一个或多个包括DUT的描述的位文件。这些位文件进一步指定由主机系统使用跟踪和注入逻辑创建的DUT的分区、分区到仿真器的FPGA的映射以及设计约束。基于这些位文件,仿真器配置FPGA以执行DUT的功能。对于一些仿真器,仿真器的一个或多个FPGA已经使跟踪和注入逻辑内置在FPGA的硅中。对于这种类型的仿真器,FPGA不必由主机系统配置以仿真跟踪和注入逻辑。
主机系统110(例如,从用户)接收待被仿真的DUT的描述。在一个实施例中,DUT描述采用硬件描述语言(HDL),诸如寄存器传输语言(RTL)。在另一实施例中,DUT描述采用网表级文件,或网表级文件和HDL文件的混合。如果DUT描述的一部分或整个DUT描述采用HDL,则主机系统合成DUT描述以基于DUT描述创建门级网表。主机系统可以使用DUT的网表将DUT分区为多个分区,其中一些分区包括跟踪和注入逻辑。跟踪和注入逻辑跟踪经由FPGA的接口交换的接口信号。此外,跟踪和注入逻辑可用于将跟踪的接口信号注入到FPGA的逻辑。主机系统将每个分区映射到仿真器的FPGA。对于一些仿真器,跟踪和注入逻辑仅包含在一组FPGA的选择分区中。跟踪和注入逻辑可以内置在仿真器的一个或多个FPGA中。主机系统可以合成待映射到FPGA中的多路复用器。跟踪和注入逻辑可使用多路复用器以将接口信号注入DUT逻辑。
主机系统创建描述DUT的每个分区以及分区到FPGA的映射的位文件。对于其中合并了跟踪和注入逻辑的分区,位文件还描述该逻辑的合并。位文件还可以包括布局和路线信息以及设计约束。主机系统存储位文件,还为DUT的部件存储信息,这些信息描述哪些FPGA将仿真DUT的每个部件(每个部件被映射到这些FPGA)。
根据请求,主机系统将位文件传输到仿真器。主机系统指示仿真器来仿真DUT。在DUT的仿真期间或仿真结束时,主机系统通过仿真连接从仿真器接收仿真结果。仿真结果是仿真器基于DUT的仿真生成的数据和信息。仿真结果包括由每个FPGA的跟踪和注入逻辑跟踪的接口信号(接口信号的状态)。主机系统可以存储仿真结果,或将其传输到另一处理系统。
在DUT的仿真之后,用户可以请求调试DUT的部件。如果发出了这样的请求,则用户可以提供仿真的时间段以调试。主机系统根据存储的信息识别哪些FPGA被配置以仿真部件。主机系统检索与该时间段相关联的并由每个所识别的FPGA的跟踪和注入逻辑跟踪的存储的接口信号。主机系统指示仿真器一次一个、一次多个或所有一起重新仿真所识别的FPGA。主机系统将检索到的接口信号传输到仿真器,以便在该时间段内重新仿真部件。每个识别出的FPGA的跟踪和注入逻辑将从主机系统接收到的相应接口信号注入映射到FPGA的DUT的逻辑。在FPGA的多次重新仿真的情况下,结果可以全部合并在一起以具有完整的调试视图。
主机系统在部件的重新仿真期间从仿真器接收由所识别的FPGA的逻辑跟踪的信号。主机系统存储从仿真器接收的信号。在重新仿真期间跟踪的信号可能比在初始仿真期间具有更高的采样率。例如,在初始运行中,跟踪的信号可能包含每X毫秒保存的硬件状态。然而,在重新仿真中,跟踪的信号可能包含每Y毫秒保存的硬件状态,其中Y小于X。如果用户请求查看在重新仿真期间跟踪的信号的波形,则主机系统可以检索存储的信号并显示信号图(生成信号的波形)。之后,用户可以例如请求重新仿真不同的时间段的同一部件,或者重新仿真另一部件。
主机系统通常包括至少七个子系统:设计合成器、映射模块、运行时模块、结果模块、调试模块、波形模块和存储模块。这些子系统中的每个子系统都可以体现为硬件、软件、固件或其组合。这些部件一起配置仿真器,并监视仿真结果。
设计合成器将DUT的HDL转换为门级逻辑。对于待被仿真的DUT,设计合成器接收DUT的描述。如果以HDL(例如,RTL或其他级别的抽象)全部或部分描述DUT,则设计合成器210合成DUT的HDL,以便创建具有关于门级逻辑的DUT描述的门级网表。
映射模块对DUT进行分区,并将分区映射到仿真器FPGA。映射模块使用DUT的网表将门级的DUT划分为多个分区。对于每个分区,映射模块都会检索跟踪和注入逻辑的门级描述,并将该逻辑合并到该分区中。如上所述,包括在该分区中的跟踪和注入逻辑被配置为跟踪经由分区所映射到的FPGA的接口交换的信号(跟踪接口信号)。跟踪和注入逻辑可以在分区之前被合并到DUT中。例如,跟踪和注入逻辑可以在合成DUT的HDL之前或之后由设计合成器合并。因此,跟踪和注入逻辑可能与分区不匹配,它可能是子集、超集或者甚至与分区不同。
除了包括跟踪和注入逻辑之外,映射模块可以包括在分区中的附加的跟踪逻辑,以便跟踪未被跟踪和注入逻辑跟踪的某些DUT部件的状态(以跟踪除由跟踪和注入逻辑跟踪的接口信号之外的信号)。映射模块可以包括在分区之前的DUT中的、或分区之后的分区中的附加的跟踪逻辑。设计合成器可以在合成描述之前在DUT的HDL描述中包括附加的跟踪逻辑。
映射模块将DUT的每个分区映射到仿真器的FPGA。映射模块使用设计规则、设计约束(例如,时序或逻辑约束)以及关于仿真器的信息来执行分区和映射。对于DUT的部件,映射模块将描述哪些FPGA将仿真各个部件的信息存储在存储模块中。
基于分区和映射,映射模块生成一个或多个位文件,这些位文件描述所创建的分区以及逻辑到仿真器的每个FPGA的映射。位文件可以包括附加信息,诸如DUT的约束,和FPGA与每个FPGA内的连接之间的连接的路由信息。映射模块可以生成对于DUT的每个分区的位文件,其可以存储在存储模块中。根据用户的请求,映射模块将位文件传输到仿真器,仿真器使用该位文件来配置FPGA以仿真DUT。
如果仿真器包括含有跟踪和注入逻辑的专用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共同运行所有周期其可能仅花费几分钟。
用户可以识别待重新仿真的DUT信号的层次结构或列表。为了实现这一点,调试模块确定用于仿真信号的层次结构或列表所需的FPGA,检索必要的接口信号,并将检索到的接口信号传输到仿真器以重新仿真。因此,用户可以识别DUT的调试/重新仿真的任何元素(例如,部件或信号)。
波形模块基于跟踪的信号生成波形。如果用户请求查看在仿真运行期间跟踪的信号的波形,则主机系统会从存储模块中检索信号。波形模块向用户显示信号的图。对于一个或多个信号,当从仿真器接收到这些信号时,波形模块可以自动生成这些信号的图。
详细描述-总结
前述详细描述单独地表示了本文所述的单个特征、结构、功能或特性以及两个或更多个这样的特征、结构、功能或特性的任意组合,直至这种特征、结构、功能或特性或者其组合根据本领域技术人员的知识是基于本说明书整体的程度,而不论这些特征、结构、功能或特性或者其组合是否解决本文中公开的任何问题,并且不限于权利要求的范围。当所要求保护的发明的实施例包括特定的特征、结构、功能或特性时,本领域技术人员所知的是,无论是否明确描述,这种特征、结构、功能或特性都可以与其他实施例结合使用,例如,作为另一特征、结构、功能或特性的替代。
鉴于前面的详细描述,对于本领域技术人员而言显而易见的是,不背离本文描述的原理的情况下,可以在本文所述的创新、实施例和/或示例的范围内(诸如元件的功能和布置)进行许多变型。如对本领域技术人员显而易见的,实施例的一个或多个元件可以替代另一实施例中的一个或多个元件。选择和描述本文描述的实施例以表示本发明的原理及其有用的应用程序,从而使本领域的其他技术人员能够理解各种实施例和变型如何适合于所表示的特定用途。
为了说明和描述的目的,已经提供了所要求保护的发明的前述创新、实施例和/或示例的详细描述。其并不旨在穷举或将所要求保护的发明限于所描述的精确形式,而是给予与本文所公开的原理和特征相一致的最宽范围。显然,本领域技术人员将想到很多变型。在没有限制的情况下,在本专利申请中通过引用描述、表示或合并的任何和所有等同方式通过引用特别地合并到创新、实施例和/或示例的本文描述中。另外,本文通过引用描述、表示或合并的关于任何一个实施例的任何和所有变型也应被认为是关于所有其他实施例的教导。任何这种变型都包括当前已知的变型以及将来的变型,例如,本文中使用的任何元件包括提供相同功能的未来的等效元件,而不管未来的等效元件的结构如何。
旨在由所附权利要求书和等效物定义和判断所要求保护的发明的范围。所附权利要求据此被合并到详细描述中,其中每个权利要求独立地作为单独的实施例。所公开的实施例可以描述有比权利要求中明确叙述的特征更多的特征。

Claims (14)

1.一种执行电路设计的硬件仿真的方法,所述方法包括:
定义与所述电路设计中使用的多个时钟中的每个时钟相关联的可变延迟;
根据多个可变延迟来计算压缩值;
检测所述可变延迟中的至少一个可变延迟中的变化;和
响应于检测到的变化而重新计算所述压缩值。
2.根据权利要求1所述的方法,还包括:
使用设置在执行所述硬件仿真的硬件仿真系统中的电路来重新计算所述压缩值。
3.根据权利要求2所述的方法,其中,在不停止所述硬件仿真的情况下执行所述压缩值的重新计算。
4.根据权利要求2所述的方法,其中,所述电路设置在可编程设备中,所述可编程设备设置在所述硬件仿真系统中。
5.根据权利要求2所述的方法,其中,所述电路设置在多个可编程设备中,所述多个可编程设备设置在所述硬件仿真系统中。
6.根据权利要求1所述的方法,还包括:
响应于检测到的变化而停止所述仿真;
重新计算软件中的所述压缩值;和
使用重新计算的压缩值来恢复所述仿真。
7.一种硬件仿真系统,所述硬件仿真系统被配置为:
定义与正在被仿真的电路设计中使用的多个时钟中的每个时钟相关联的可变延迟;
根据多个可变延迟来计算压缩值;
检测所述可变延迟中的至少一个可变延迟中的变化;和
响应于检测到的变化而重新计算时间压缩值。
8.根据权利要求6所述的硬件仿真系统,其中,所述硬件仿真系统还被配置为使用设置在所述硬件仿真系统中的电路来重新计算所述时间压缩值。
9.根据权利要求7所述的硬件仿真系统,其中,在不停止所述硬件仿真系统的情况下执行所述压缩值的重新计算。
10.根据权利要求7所述的硬件仿真系统,其中,所述电路设置在可编程设备中,所述可编程设备设置在所述硬件仿真系统中。
11.根据权利要求7所述的硬件仿真系统,其中,所述电路设置在多个可编程设备中,所述多个可编程设备设置在所述硬件仿真系统中。
12.根据权利要求7所述的硬件仿真系统,其中,所述硬件仿真系统还被配置为:
响应于检测到的变化而停止所述仿真;
重新计算软件中的所述压缩值;和
使用重新计算的压缩值来恢复所述仿真。
13.一种用于执行电路设计的硬件仿真的更有效/有用的方法,所述方法包括:
定义与所述电路设计中使用的多个时钟中的每个时钟相关联的可变延迟;
根据多个可变延迟来计算压缩值;
检测所述可变延迟中的至少一个可变延迟中的变化;和
响应于检测到的变化而重新计算所述压缩值。
14.根据权利要求11所述的方法,通过使所述方法在包括一个或多个处理器的制造品中而有效地应用于商业中,所述一个或多个处理器中的每个处理器包括一个或多个用于转换信息的模块或计算机,其中,所述模块主要由制造商配置;至少部分地由用户配置;或由所述制造商和所述用户两者配置。
CN201880041119.XA 2017-05-17 2018-05-17 存在时钟动态重编程时仿真时间线的压缩方法 Active CN110785761B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762507667P 2017-05-17 2017-05-17
US62/507,667 2017-05-17
PCT/US2018/033273 WO2018213637A1 (en) 2017-05-17 2018-05-17 Method for compression of emulation time line in presence of dynamic re-programming of clocks

Publications (2)

Publication Number Publication Date
CN110785761A true CN110785761A (zh) 2020-02-11
CN110785761B CN110785761B (zh) 2024-03-15

Family

ID=64271884

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880041119.XA Active CN110785761B (zh) 2017-05-17 2018-05-17 存在时钟动态重编程时仿真时间线的压缩方法

Country Status (4)

Country Link
US (1) US10949589B2 (zh)
EP (1) EP3625710A4 (zh)
CN (1) CN110785761B (zh)
WO (1) WO2018213637A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860226A (zh) * 2021-01-28 2021-05-28 芯华章科技股份有限公司 获取逻辑系统设计的初始状态的方法、电子设备及介质
CN114764538A (zh) * 2020-12-30 2022-07-19 河北云酷科技有限公司 一种设备声音信号模式识别模型

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210065964A (ko) 2018-09-25 2021-06-04 시놉시스, 인크. 에뮬레이션 및 프로토타이핑에서 오버레이된 클록 및 데이터 전파의 코히어런트 관찰가능성 및 제어가능성
CN111310409B (zh) * 2020-02-28 2022-04-08 福州大学 一种优化时分复用技术的多阶段fpga布线方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6698006B1 (en) * 2001-12-14 2004-02-24 Sequence Design, Inc. Method for balanced-delay clock tree insertion
CN1741384A (zh) * 2004-08-26 2006-03-01 恩益禧电子股份有限公司 时钟生成电路
US20080276210A1 (en) * 2007-05-02 2008-11-06 Christoph Albrecht Optimizing integrated circuit design through use of sequential timing information
US20140100841A1 (en) * 2012-10-09 2014-04-10 Apple Inc. Testing a Hardware Emulation Model of a Circuit with Software Checker Routines Designed for an RTL Model of the Circuit
US20140210510A1 (en) * 2013-01-30 2014-07-31 Altera Corporation Bypassable clocked storage circuitry for dynamic voltage-frequency scaling
US20140365839A1 (en) * 2013-06-10 2014-12-11 Mitsubishi Electric Corporation Electronic control unit having integrated circuit element and standalone test unit for integrated circuit element
US20150046144A1 (en) * 2013-08-12 2015-02-12 Mentor Graphics Corporation Dynamic Control Of Design Clock Generation In Emulation
CN106656109A (zh) * 2015-10-30 2017-05-10 德克萨斯仪器股份有限公司 数字时钟占空比校正

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5696772A (en) * 1994-05-06 1997-12-09 Credence Systems Corporation Test vector compression/decompression system for parallel processing integrated circuit tester
US7366652B2 (en) * 2003-06-16 2008-04-29 Springsoft, Inc. Method of programming a co-verification system
US8577666B2 (en) * 2010-04-21 2013-11-05 Vixs Systems, Inc. Clock synchronization in a modular circuit emulation system
US8516213B2 (en) * 2010-11-24 2013-08-20 Freescale Semiconductor, Inc. Method and apparatus for EEPROM emulation for preventing data loss in the event of a flash block failure
US8356272B2 (en) * 2011-05-12 2013-01-15 S2C Inc. Logic verification module apparatus to serve as a hyper prototype for debugging an electronic design that exceeds the capacity of a single FPGA
US9613679B2 (en) * 2014-11-14 2017-04-04 Cavium, Inc. Controlled dynamic de-alignment of clocks
US9601181B2 (en) * 2014-11-14 2017-03-21 Cavium, Inc. Controlled multi-step de-alignment of clocks
TWI608347B (zh) * 2015-10-27 2017-12-11 輝達公司 粒狀動態測試系統和方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6698006B1 (en) * 2001-12-14 2004-02-24 Sequence Design, Inc. Method for balanced-delay clock tree insertion
CN1741384A (zh) * 2004-08-26 2006-03-01 恩益禧电子股份有限公司 时钟生成电路
US20080276210A1 (en) * 2007-05-02 2008-11-06 Christoph Albrecht Optimizing integrated circuit design through use of sequential timing information
US20140100841A1 (en) * 2012-10-09 2014-04-10 Apple Inc. Testing a Hardware Emulation Model of a Circuit with Software Checker Routines Designed for an RTL Model of the Circuit
US20140210510A1 (en) * 2013-01-30 2014-07-31 Altera Corporation Bypassable clocked storage circuitry for dynamic voltage-frequency scaling
US20140365839A1 (en) * 2013-06-10 2014-12-11 Mitsubishi Electric Corporation Electronic control unit having integrated circuit element and standalone test unit for integrated circuit element
US20150046144A1 (en) * 2013-08-12 2015-02-12 Mentor Graphics Corporation Dynamic Control Of Design Clock Generation In Emulation
CN106656109A (zh) * 2015-10-30 2017-05-10 德克萨斯仪器股份有限公司 数字时钟占空比校正

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张奇,曹阳,李栋娜,马秦生: "基于SystemC的SoC行为级软硬件协同设计" *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114764538A (zh) * 2020-12-30 2022-07-19 河北云酷科技有限公司 一种设备声音信号模式识别模型
CN114764538B (zh) * 2020-12-30 2024-04-26 河北云酷科技有限公司 一种设备声音信号模式识别方法
CN112860226A (zh) * 2021-01-28 2021-05-28 芯华章科技股份有限公司 获取逻辑系统设计的初始状态的方法、电子设备及介质

Also Published As

Publication number Publication date
EP3625710A1 (en) 2020-03-25
EP3625710A4 (en) 2021-06-02
CN110785761B (zh) 2024-03-15
WO2018213637A1 (en) 2018-11-22
US20180336304A1 (en) 2018-11-22
US10949589B2 (en) 2021-03-16

Similar Documents

Publication Publication Date Title
Mehta ASIC/SoC functional design verification
Rashinkar et al. System-on-a-chip Verification: Methodology and Techniques
US10949591B1 (en) Hardware based state signature generation and check for test and debug of semiconductor circuit functionality
US10867091B1 (en) Machine learning based power optimization using parallel training and localized data generation
CN110785761B (zh) 存在时钟动态重编程时仿真时间线的压缩方法
CN112753034B (zh) 硬件仿真系统控制块和控制电路设计的硬件仿真的方法
US10846455B2 (en) Automatic definition and extraction of functional coverage metric for emulation-based verification
US10796048B1 (en) Adding delay elements to enable mapping a time division multiplexing circuit on an FPGA of a hardware emulator
US11327790B1 (en) Event-level parallel simulation using dynamic synchronization
CN113474780A (zh) 用于使用相关样本生成及高效统计模拟来计算时序良率及良率瓶颈的新颖方法
US10599800B2 (en) Formal clock network analysis, visualization, verification and generation
US10878153B1 (en) Apparatuses and methods for accurate and efficient clock domain and reset domain verification with register transfer level memory inference
US9996645B2 (en) Method and apparatus for modeling delays in emulation
US11003819B1 (en) Method to enable multiple users of embedded-software debug to share a single hardware resource
US11275877B2 (en) Hardware simulation systems and methods for reducing signal dumping time and size by fast dynamical partial aliasing of signals having similar waveform
KR102545621B1 (ko) 상태-유지 루프들 및 발진 루프들을 식별하기 위한 하드웨어 시뮬레이션 시스템들 및 방법들
US11475293B1 (en) Learning-based toggle estimation
US10579760B2 (en) Force/release support in emulation and formal verification
CN112818627A (zh) 电路设计、测试和/或制造的更有效/有用的电子结构
Siddiqui System-on-Chip (SoC) emulation
CN112883679A (zh) 在多电压设计中加油站的自动生成

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
GR01 Patent grant
GR01 Patent grant