CN106802972A - 时钟抖动仿真 - Google Patents
时钟抖动仿真 Download PDFInfo
- Publication number
- CN106802972A CN106802972A CN201611037596.8A CN201611037596A CN106802972A CN 106802972 A CN106802972 A CN 106802972A CN 201611037596 A CN201611037596 A CN 201611037596A CN 106802972 A CN106802972 A CN 106802972A
- Authority
- CN
- China
- Prior art keywords
- jitter
- clock
- value
- clock signal
- clock value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 29
- 230000015654 memory Effects 0.000 claims description 50
- 238000003860 storage Methods 0.000 claims description 49
- 238000013461 design Methods 0.000 claims description 22
- 230000001052 transient effect Effects 0.000 claims description 15
- 206010044565 Tremor Diseases 0.000 claims description 6
- 230000004044 response Effects 0.000 claims 2
- 230000008569 process Effects 0.000 abstract description 10
- 238000013507 mapping Methods 0.000 description 17
- 230000000630 rising effect Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 230000004087 circulation Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 108010022579 ATP dependent 26S protease Proteins 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000032696 parturition Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- 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
- 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
-
- 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
- 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/3312—Timing analysis
-
- 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/347—Physical level, e.g. placement or routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/396—Clock trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1604—Error detection or correction of the data by redundancy in hardware where the fault affects the clock signals of a processing unit and the redundancy is at or within the level of clock signal generation hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/02—System on chip [SoC] design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/12—Timing analysis or timing optimisation
-
- 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/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Tests Of Electronic Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本申请涉及时钟抖动仿真。仿真DUT的仿真器仿真用于生成具有抖动的DUT的时钟信号的时钟发生器。作为生成时钟信号的部分,仿真器针对每个时钟信号生成抖动时钟值。为了生成时钟信号的抖动时钟值,仿真器识别针对时钟信号存储的时钟参数,并对时钟参数和从时钟信号的抖动范围随机选择的抖动值求和。当系统快速时钟循环开始时,仿真器从生成的抖动时钟值确定最低值。仿真器输出具有最低抖动时钟值的时钟信号上的边沿。仿真器针对每个时钟信号生成新的抖动时钟值,并且该过程在下一系统快速时钟循环期间重复。
Description
技术领域
本公开通常涉及设计仿真,尤其涉及仿真具有抖动的时钟。
背景技术
仿真器已经被开发用于帮助电路设计者设计和调试高度复杂的集成电路设计(例如,片上系统(SOC))。仿真器包括多个现场可编程门阵列(FPGA)或特定的可编程仿真组件,它们一起可以模拟集成电路的操作。通过使用仿真器来模拟集成电路的操作,设计者可以在制造之前验证集成电路符合各种设计要求。
集成电路通常包括在不同时钟上操作的多个组件。因此,集成电路包括多个时钟域。信号常规性地在不同的时钟域之间传递。在时钟域交叉期间,误差/异常可以被引入到集成电路中。误差的一个来源可能是时钟信号中存在的抖动。例如,两个时钟可以被设计为在1GHz下操作。然而,由于抖动,两个时钟将被对准(均在1GHz操作)的可能性非常小。因此,当信号跨越时钟域时,可能会出现误差,因为时钟没有完全按预期工作。
当仿真器模拟集成电路时,仿真环境中的时钟是完美的时钟,其中,它们按照设计开始和结束(不包括抖动)。由于仿真时钟没有考虑抖动,因此在仿真集成电路时可能无法检测到由抖动引起的某些误差。
发明内容
本公开实施例的目的就在于提供一种方案用于仿真具有抖动的被测设计(DUT)的时钟。
在本公开实施例的一个方面,提供一种非瞬态计算机可读存储介质,存储用于生成DUT的多个时钟信号的可执行指令,所述指令用于将仿真器配置用于:识别多个抖动时钟值,每个抖动时钟值与来自被所述仿真器仿真的所述DUT的所述多个时钟信号的时钟信号相关联,并且每个抖动时钟值基于与所述时钟信号相关联的抖动值和时钟参数被确定;从所述多个抖动时钟值中识别最低抖动时钟值;和输出来自所述多个时钟信号的与所述最低抖动时钟值相关联的时钟信号上的边沿。
在本公开实施例的另一个方面,提供一种非瞬态计算机可读存储介质,存储用于生成DUT的时钟信号的可执行指令,所述指令用于将仿真器配置用于:获得与由所述仿真器仿真的所述DUT的所述时钟信号相关联的时钟参数;随机生成抖动值;和基于所述时钟参数和所述抖动值,生成针对所述时钟信号的抖动时钟值。
在本公开实施例的另一个方面,提供一种由仿真器仿真的时钟发生器,所述时钟发生器包括:第一存储器,所述第一存储器被配置用于存储与由所述仿真器仿真的DUT的第一时钟信号相关联的第一抖动时钟值,所述第一抖动时钟值基于与所述第一时钟信号相关联的第一时钟参数和第一抖动值被确定;第二存储器,所述第二存储器被配置用于存储与所述DUT的第二时钟信号相关联的第二抖动时钟值,所述第二抖动时钟值基于与所述第二时钟信号相关联的第二时钟参数和第二抖动值被确定;最小运算器,所述最小运算器被配置用于确定所述第一抖动时钟值小于所述第二抖动时钟值;和比较器,所述比较器被配置用于基于第一抖动时钟值小于所述第二抖动时钟值而输出所述第一时钟信号上的边沿。
在本公开实施例的另一个方面,提供一种用于生成DUT的多个时钟信号的方法,所述方法包括:由仿真器识别多个抖动时钟值,每个抖动时钟值与来自被所述仿真器仿真的DUT的所述多个时钟信号中的时钟信号相关联,并且每个抖动时钟值基于与所述时钟信号相关联的时钟参数和抖动值被确定;由所述仿真器从所述多个抖动时钟值中识别最低抖动时钟值;和由所述仿真器输出来自所述多个时钟信号的与所述最低抖动时钟值相关联的时钟信号上的边沿。
附图说明
所公开的实施例具有从详细描述、所附权利要求和附图中将更容易显而易见的其它优点和特征。附图的简要介绍如下。
图1是根据一个实施例的仿真环境的框图。
图2是示出根据一个实施例的主机系统的框图。
图3是示出根据一个实施例的由仿真器仿真以生成时钟信号的时钟发生器的框图。
图4是示出根据一个实施例的时钟信号和系统快速时钟的时序图。
图5是示出根据一个实施例的仿真多个时钟信号的过程的流程图。
图6是示出根据一个实施例的能够从机器可读介质读取指令并在处理器中执行它们的示例机器的组件的框图。
详细说明
附图和以下描述仅以说明的方式描述了某些实施例。本领域技术人员将从以下描述容易地认识到,可以采用本文所示的结构和方法的替代实施例而不脱离本文所描述的原理。
现在将参考若干实施例,其示例在附图中示出。附图使用相同的附图标记来标识相同的元件。在诸如“302A”之类的附图标记之后的字母表示该文本具体指的是具有该特定附图标记的元件。在文本中没有后接字母的附图标记,例如“302”,是指附图中具有该附图标记的任何或所有元件。
概述
描述了一种公开的系统(方法和计算机程序产品),其用于仿真具有抖动的被测设计(DUT)的时钟。仿真器模拟时钟发生器以针对待仿真的DUT生成具有抖动的时钟信号。时钟发生器包括针对每个时钟信号的随机抖动发生器、累加器和比较器。时钟发生器还包括最小运算器(operator)。
每个随机抖动发生器从存储器读取与对应时钟信号相关联的时钟参数。时钟参数可以是例如时钟周期的正部分(在上升沿和下降沿之间)或负部分(在下降沿和下一个上升沿之间)的宽度。参数化的随机抖动发生器基于所读取的时钟参数和从抖动范围中随机选择的抖动值来生成针对该时钟信号的抖动时钟值(例如,对时钟参数和随机选择的抖动值求和)。随机抖动发生器将抖动时钟值存储在对应的累加器中。
在系统快速时钟的时钟周期期间,最小运算器获得由累加器存储的抖动时钟值。系统快速时钟以比由时钟发生器生成的时钟信号更高的频率操作。最小运算器从抖动时钟值中识别最低的抖动时钟值。最小运算器向每个比较器输出最低抖动时钟值。每个比较器将最低抖动时钟值与由相应累加器存储的抖动时钟值进行比较。如果值不相同,则比较器不改变相应时钟信号。例如,如果时钟信号处于高状态,则时钟信号被保持在高状态。此外,比较器确定由累加器存储的抖动时钟值与最低抖动时钟值之差。比较器将所确定的差存储在累加器中作为替代先前由累加器存储的值的新的抖动时钟值。
另一方面,如果值相同,则比较器使得在相应时钟信号上输出边沿(比较器使时钟信号改变状态)。在一个实施例中,如果时钟信号处于低状态,则比较器输出上升沿。然而,如果时钟信号处于高状态,则比较器输出下降沿。相应随机抖动发生器基于从存储器读取的时钟参数和新的随机选择的抖动值来生成针对时钟信号的新的抖动时钟值。随机抖动发生器将生成的抖动时钟值存储在对应的累加器中,代替先前由累加器存储的值。
在每个后续的系统快速时钟周期期间重复以下过程,即最小运算器从由累加器存储的值中选择最低抖动时钟值,比较器确定是否针对它们各自的时钟信号输出边沿,以及新的值被存储在累加器中。通过将抖动值并入用于生成时钟信号的时钟参数中,时钟信号的周期将变化(不是全部相同),这是时钟如何在真实世界环境中操作的。此外,通过并入抖动并且使时钟信号变化,检测例如在DUT中的时钟域交叉期间发生的误差是可能的。
概述模拟环境
图1是示出根据一个实施例的仿真环境100的框图。仿真环境100包括仿真器110和主机系统120。仿真器110和主机系统120通过接口115进行通信。
接口115是允许在主机系统120和仿真器110之间通信的通信介质。在一个实施例中,接口115是具有电连接的电缆。例如,接口115可以是USB、以太网、光学或定制缆线。在其他实施例中,接口115是无线通信介质或网络。对于另一示例,接口115可以是采用(蓝牙)或IEEE 802.11协议的无线通信介质。
仿真器110是仿真被测设计(DUT)的硬件系统。DUT是由仿真器110仿真的一个或多个电路设计。仿真器110包括可以被配置为共同仿真DUT的FPGA。在其他实施例中,仿真器110包括其他类型的可重配置硬件组件,而不是FPGA。对于要被仿真的DUT,仿真器110从主机系统120接收包括具有一个或多个时钟发生器的DUT的描述的比特流(例如,一个或多个二进制文件),所述时钟发生器在仿真期间生成针对DUT的具有抖动的时钟信号。另外,比特流描述由主机系统120创建的DUT的分区、分区到仿真器FPGA的映射、在FPGA上的逻辑(DUT逻辑和时钟发生器逻辑)的布置以及在所布置的逻辑之间的路由。基于比特流,仿真器110配置适当的FPGA并仿真DUT。
主机系统120配置仿真器110以用于仿真DUT。主机系统120可以是单个计算机或多个计算机的集合。在主机系统120由多个计算机组成的实施例中,本文描述为由主机系统120执行的功能可以分布在多个计算机之中。
主机系统120从用户接收要在仿真器110上实现的DUT的描述。在一个实施例中,DUT的描述是一种硬件描述语言(HDL),比如寄存器传输语言(RTL)。主机系统120基于DUT的HDL描述创建门级网表。在另一个实施例中,从用户接收的DUT的描述在门级网表中。主机系统120在DUT中并入一个或多个时钟发生器。每个时钟发生器生成具有抖动的DUT的时钟信号。
主机系统120产生一个或多个比特流,其包括用于配置仿真器FPGA以仿真具有时钟发生器的DUT的信息。比特流可以包括例如DUT的一个或多个分区的设计描述、映射信息(例如,分区到FPGA的映射)、布置与路由信息以及DUT的设计约束。
通过接口115,主机系统120向仿真器110发送所创建的比特流,以配置FPGA来仿真DUT。在仿真器110仿真DUT期间和/或之后,主机系统120从仿真器110接收仿真结果。仿真结果是由仿真器110基于DUT的仿真而生成的信息。
图2是根据一个实施例更详细地示出主机系统120的框图。主机系统120包括输入接收器200、合成器210、逻辑映射模块220、分区模块230、技术映射模块240、布置与路由模块250以及比特流生成模块260。这些组件中的每一个可以被具体化为硬件、软件、固件或其组合。这些组件一起生成信息以配置仿真器110来仿真DUT。
输入接收器200接收将由仿真器110实施的DUT的描述。在一个实施例中,输入接收器200接收HDL或门级网表中的DUT的描述。
合成器210将HDL描述转换为门级逻辑。如果在HDL中接收到DUT的描述,则合成器210合成HDL描述以创建具有依据门级逻辑的DUT的描述的门级网表。在一个实施例中,合成器210还将针对DUT的接收到的门级网表转换成另一门级网表。
逻辑映射模块220将DUT的逻辑映射到仿真器110的FPGA中的可用组件。逻辑映射模块220识别包括在DUT的门级网表中的逻辑,该逻辑在仿真器FPGA中不可用并且关联(分配)在仿真器FPGA中可用的对应硬件组件。例如,逻辑映射模块220识别门级网表中的布尔逻辑门,并将布尔逻辑门与FPGA中可用的对应逻辑门或查找表(LUT)单元相关联。在一个实施例中,逻辑映射模块220基于该映射修改门级网表。
在一个实施例中,逻辑映射模块220还将生成DUT的时钟信号的一个或多个时钟发生器并入DUT中。由时钟发生器产生的时钟信号包括抖动。下面参照图3描述时钟发生器的组件和设计的细节。
在一个实施例中,逻辑映射模块220分析DUT并识别DUT的时钟信号。对于每组时钟信号,逻辑映射模块220包括时钟发生器。在另一实施例中,逻辑映射模块220包括用于生成所有DUT的时钟信号的单个时钟发生器。逻辑映射模块220通过修改DUT的门级网表来合并一个或多个时钟发生器。在另一实施例中,在合成DUT的HDL描述之前,将一个或多个时钟发生器并入DUT中。
分区模块230对DUT进行分区并将分区映射到仿真器FPGA。分区模块230使用DUT的网表将门级的DUT划分成多个分区。分区模块230将每个分区映射到仿真器110的一个或多个FPGA。分区模块230使用设计规则、设计约束(例如,定时或逻辑约束)和关于仿真器110的信息来执行分区和映射。
技术映射模块240基于逻辑映射和分区来映射DUT的物理组件。具体地,如果需要,技术映射模块240基于创建的分区和分区到FPGA的映射来修改一个或多个分区。例如,假设DUT包括三个逻辑门,其中第一逻辑门的输出被连接到第二逻辑门的输入和第三逻辑门的输入。可以对DUT进行分区,使得第一逻辑门和第二逻辑门在同一FPGA上实施,而第三逻辑门在不同的FPGA上实现。不同FPGA中的第一逻辑门和第三逻辑门之间的连接与同一FPGA中的两个逻辑门之间的连接相比可能具有额外的延迟,从而导致不正确的操作。技术映射模块240可以在同一FPGA上的两个逻辑门之间添加延迟元件(或缓冲器)以匹配不同FPGA上的逻辑门之间的延迟。
布置与路由模块250接收门级网表以及关于分区和映射的信息,并且确定每个DUT逻辑组件(包括时钟发生器组件)的布置和连接。布置与路由模块250以优化逻辑组件和调试逻辑之间的路由的方式对逻辑组件和调试逻辑进行布置。
比特流生成模块260生成描述关于仿真器110的FPGA的配置的信息的一个或多个比特流。FPGA的配置包括将被实施的硬件组件的布置、组件之间的连接(即,路由)以及其他设计信息。比特流生成模块260将比特流发送到仿真器110,使得仿真器110的FPGA可以被配置用于仿真具有一个或多个时钟发生器的DUT。在接收到传送比特流的指令时,可以存储比特流并将其提供给仿真器110。
图3是示出由仿真器110仿真以生成用于被仿真DUT的时钟信号的时钟发生器300的框图。在该示例中,所示的时钟发生器300产生DUT的两个时钟信号312A和312B。在该实施例中,为了简单起见仅示出了两个时钟信号312。然而,在其它实施例中,时钟发生器300将产生多于两个的时钟信号312。时钟发生器300根据以比时钟信号312更高的频率操作的系统快速时钟311操作。在一个实施例中,在系统快速时钟311的每个周期期间,至少一个时钟信号312输出边沿(例如,上升沿或下降沿)。
时钟发生器300包括随机抖动发生器302A和302B、累加器304A和304B、最小运算器306以及比较器308A和308B。随机抖动发生器302A、累加器304A和比较器308A用于生成时钟信号312A。随机抖动发生器302B、累加器304B和比较器308B用于生成时钟信号312B。在时钟发生器300生成附加时钟信号312(除了信号312A和312B之外)的其它实施例中,时钟发生器300将包括针对每个附加时钟信号的附加的随机抖动发生器302、累加器304和比较器308。
随机抖动发生器302将抖动合并到它们各自的时钟信号312中。在一个实施例中,每个随机抖动发生器302存储表示对应的时钟信号312可能具有的抖动值的抖动范围(例如,-N到+M)。抖动范围基于对应的时钟信号的设计规范来设置。例如,时钟信号312的设计规范可以指示时钟信号312在1GHz±10%抖动下操作。基于±10%,设置抖动范围。在另一实施例中,随机抖动发生器302存储更复杂的抖动值,其允许基于使用那些参数的公式来确定抖动值。
通过输入314,每个随机抖动发生器302从存储器310读取对应的时钟信号312的时钟参数。在一个实施例中,存储器310与时钟发生器300分离,如图3所示。在其它实施例中,存储器310是时钟发生器300的一部分。在另一实施例中,多个存储器用于存储时钟参数。在另一个实施例中,不存在存储器,而是通过其他手段(例如通信信道)获得时钟参数。
在一个实施例中,存储器310存储的每个时钟参数与时钟循环的周期相关联。在一个实施例中,对于每个时钟信号312,存储器310存储至少两个时钟参数。一个时钟参数是时钟周期的正部分的宽度,其在上升沿和下降沿之间。另一个时钟参数是时钟周期的负部分的宽度,其在下降沿和下一个上升沿之间。随机抖动发生器302读取其相应时钟信号312的时钟参数中的至少一个。在另一实施例中,对于每个时钟信号312,存储器310存储作为时钟循环的周期的一半的单个时钟参数。在另一个实施例中,存储的单个时钟参数是时钟循环的周期。在另一个实施例中,存储的参数是时钟的周期和占空比。
随机抖动发生器302随机选择在所存储的抖动范围内的抖动值(例如,选择-N和+M之间的值)。随机抖动发生器302基于读取的时钟参数和随机选择的抖动值产生抖动时钟值。在一个实施例中,随机抖动发生器302通过对读取的时钟参数和随机选择的抖动值求和来产生抖动时钟值。在其他实施例中,可以通过以不同的方式(例如,乘法、除法或计算时钟参数和抖动值之差)组合时钟参数和随机选择的抖动值来生成抖动时钟值。随机抖动发生器302经由输出316输出抖动时钟值,以用于将抖动时钟值存储在累加器304中。
每个累加器304是存储抖动时钟值的存储组件。累加器304通过输入318A从对应的随机抖动发生器302接收抖动时钟值,并存储该值。累加器304经由输出320将抖动时钟值输出到其相应比较器308,并且还经由输出322将抖动时钟值输出到最小运算器306。
最小运算器306接收系统快速时钟311,并且在系统快速时钟的循环期间,最小运算器306从累加器304存储的值中选择最低抖动时钟值。最小运算器306经由输入324接收由累加器304存储的抖动时钟值。从接收到的抖动时钟值,最小值运算器306选择具有最低值的抖动时钟值。最小运算器306经由输出326将最低抖动时钟值输出到比较器308。
比较器308确定是否在其相应时钟信号312上输出边沿。每个比较器308经由输入328接收由最小运算器306输出的最低抖动时钟值。每个比较器308还经由输入330接收由其相应累加器304存储的抖动时钟值。比较器308将累加器304存储的抖动时钟值与最低抖动时钟值进行比较。如果值不相同,则比较器308不改变其相应时钟信号312的状态(不输出边沿)。另一方面,如果值相同,则比较器308改变时钟信号312的状态。如果时钟信号312处于低状态,则比较器308输出时钟信号312的高状态(上升沿)。然而,如果时钟信号处于高状态,则比较器输出低状态(下降沿)。
在一个实施例中,当值相同时,代替在当前系统快速时钟循环期间改变时钟信号312的状态,比较器308可以在改变时钟信号312的状态之前等待一个或多个附加系统快速时钟循环过去。比较器308可以等待改变状态,因为不是正确的时间或者因为没有满足某些条件。例如,如果运行仿真器110的测试台没有准备好输出状态变化,则比较器308将等待到测试台准备就绪为止。
此外,每个比较器308计算由相应累加器304存储的值与最低抖动时钟值之差。比较器308经由输出332输出所计算的差并将相应累加器304中的差存储为新的抖动时钟值。新的抖动时钟值替换由累加器304先前存储的值。在另一个实施例中,代替将累加器304存储的抖动时钟值与最低抖动时钟值进行比较以确定是否生成边沿,比较器308计算累加器值和最低抖动时钟值之差,并且如果所计算的差等于零,则确定生成边沿。
如果比较器308在累加器304中存储的值为零,则相应的随机抖动发生器302为累加器304生成新的抖动时钟值。随机抖动发生器302从存储器310读取相应时钟信号312的时钟参数。在存储器310存储针对每个时钟信号312的至少两个时钟参数的实施例中,随机抖动发生器302读取与先前读取的时钟参数不同的时钟参数。例如,如果随机抖动发生器302先前读取了时钟周期的正部分的宽度,则随机抖动发生器302读取负部分的宽度。随机抖动发生器302通过对读取的时钟参数和从抖动范围随机选择的抖动值求和来生成新的抖动时钟值。随机抖动发生器302将新的抖动时钟值存储在累加器304中,以替换先前存储的值。
在系统快速时钟的下一个循环期间,累加器304输出它们存储的抖动时钟值,最小运算器306选择最低抖动时钟值,比较器308确定是否输出边沿,并且新的抖动时钟值被存储在累加器304中。因此,该过程在系统快速时钟的每个循环期间重复。此外,每次从存储器310读取时钟参数时,抖动由随机抖动生成器302并入参数中。在一个实施例中,仅当在任何时钟上需要新边沿时才重复该过程。
在一个实施例中,一个或多个存储器被用于存储累加器304。存储累加器304的存储器可以是存储器310。
在一个实施例中,图3中描述的操作由处理器或微控制器执行。在该实施例中,组件302、304、306和308是使处理器从存储器310读取时钟参数、选择时钟抖动值、存储累加、计算最小值、执行比较、发布时钟边沿并更新累加器的指令。指令的顺序可以不同。
图4是示出根据一个实施例的时钟发生器300的操作期间的时钟信号312A、时钟信号312B和系统快速时钟311的时序图400。时序图400示出了系统快速时钟404A、404B、404C、404D、404E、404F、404G的七个循环。对于该示例,假设时钟信号312在低状态开始,并且存储器310存储针对每个时钟信号312的单个时钟参数。对于信号312A,存储器310存储时钟参数‘55’,而对于信号312B,存储器310存储时钟参数‘60’。此外,假定针对信号312A的抖动范围是‘±5’,并且针对信号312B的抖动范围是‘±3’。
当时钟发生器300被初始化时,时钟发生器300从存储器310读取时钟信号312A的时钟参数‘55’,并从抖动范围‘±5’随机选择抖动值‘+4’。时钟发生器300对时钟参数和抖动值求和,并将结果‘59’存储在累加器304A中。另外,时钟发生器300从存储器310读取时钟信号312B的时钟参数‘60’,并从抖动范围‘±3’中选择抖动值‘-3’。时钟发生器300对它们求和并将结果‘57’存储在累加器304B中。
在时钟循环404A期间,时钟发生器300确定累加器304B包括最低值‘57’,并且因此输出时钟信号312B的上升沿406。时钟发生器300从存储器310读取时钟信号312B的时钟参数‘60’,并从对应的抖动范围随机选择抖动值‘-2’。时钟发生器300对时钟参数和抖动值求和,并将结果‘58’存储在累加器304B中,以代替先前存储的值。另外,时钟发生器300确定由累加器304A存储的值‘59’与最低值‘57’之差。时钟发生器300将结果‘2’存储在累加器304A中。
在循环404B期间,时钟发生器300确定累加器304A包括最低值‘2’,并且因此输出时钟信号312A的上升沿408。时钟发生器300从存储器310读取时钟信号312A的时钟参数‘55’,并随机选择抖动值‘+1’。时钟发生器300对时钟参数和抖动值求和并将结果‘56’存储在累加器304A中。另外,时钟发生器300确定由累加器304B存储的值‘58’与最低值“2”之差。时钟发生器300将结果‘56’存储在累加器304B中。
在循环404C期间,时钟发生器300确定累加器304A和304B都包括最低/相同的值‘56’。结果,时钟发生器300输出针对时钟信号312A的下降沿410和针对时钟信号312B的下降沿412。时钟发生器300从存储器310读取时钟信号312A的时钟参数‘55’,并从对应的抖动范围中随机选择抖动值‘+2’。时钟发生器300对时钟参数和抖动值求和,并将结果‘57’存储在累加器304A中。另外,时钟发生器300从存储器310读取时钟信号312B的时钟参数“60”,并从对应的抖动范围随机选择抖动值‘-2’。时钟发生器300对时钟参数和抖动值求和,并将结果‘58’存储在累加器304A中。
在时钟循环404D期间,时钟发生器300输出针对时钟信号312A的上升沿414,因为累加器304A包括最低值‘57’。基于从存储器310读取的时钟参数‘55’和随机选择的抖动值‘+5’之和,时钟发生器300在累加器304A中存储抖动时钟值‘60’。此外,时钟发生器300在累加器304B中存储抖动时钟值‘1’,因为它是由累加器304B先前存储的值‘58’和最低值‘57’之差。
在时钟循环404E期间,时钟发生器300输出针对时钟信号312B的上升沿416,因为累加器304B包括最低值‘1’。基于时钟参数‘60’和随机选择的抖动值‘-1’之和,时钟发生器300在累加器304B中存储值‘59’。另外,时钟发生器300在累加器304A中存储抖动时钟值‘59’,因为它是由累加器304A先前存储的值‘60’和最低值‘1’之差。
在时钟循环404F期间,时钟发生器300输出针对时钟信号312A的下降沿418和针对时钟信号312B的下降沿420,因为累加器304A和304B都包括最低值‘59’。时钟发生器300在累加器304A中存储抖动时钟值‘50’(时钟参数‘55’和随机选择的抖动值‘-5’之和)。时钟发生器300还在累加器304B中存储抖动时钟值‘63’(时钟参数‘60’和随机选择的抖动值‘+3’之和)。在时钟循环404G期间,时钟发生器300输出时钟信号312A的上升沿422,因为累加器304A包括最小值‘50’。
下表示出了根据图4示例的在每个系统快速时钟循环404开始时由每个累加器304存储的值。*表示从随机抖动发生器302获得了新的值。
从时序图400中可以看出,通过包括抖动,时钟信号312的循环将变化。例如,对于时钟信号312A,在上升沿408和414之间存在两个系统快速时钟循环(循环404B和404C)。然而,在上升沿414和422之间,存在三个系统快速时钟循环(循环404D-404F)。如果不包括抖动,则每个时钟信号312的所有循环将是相同的。时钟信号312中的抖动和变化允许仿真器110正确地仿真例如DUT中的时钟域交叉。还可以注意到,如果没有抖动,则第一时钟边沿将在时钟信号312A上,因为它比具有值‘60’的时钟信号312B具有更低的值‘55’。由于时钟信号312B上的边沿先到,它可以暴露在没有本发明的情况下不会被暴露的设计错误。
图5是示出根据一个实施例的仿真DUT的多个时钟信号的过程的流程图。其他实施例可以以不同的顺序执行图5的步骤。此外,其他实施例可以包括与这里描述的步骤不同的和/或附加的步骤。
为了该示例的目的,假设仿真器110存储针对DUT的时钟信号的时钟参数。另外,假设仿真器110存储针对每个时钟信号的抖动范围,该抖动范围表示时钟信号可能具有的抖动值。
仿真器110生成502针对每个时钟信号的抖动时钟值。为了生成针对时钟信号的抖动时钟值,仿真器110识别被存储为时钟信号的时钟参数,并对该时钟参数与从时钟信号的抖动范围中随机选择的抖动值求和。仿真器110确定504系统快速时钟的循环是否已经开始。如果系统快速时钟循环尚未开始,则仿真器110等待506下一系统快速时钟循环的开始。
当系统快速时钟循环开始时,仿真器110从所生成的抖动时钟值确定508最低值。仿真器110在具有最低抖动时钟值的时钟信号上输出510边沿。
仿真器110生成512针对每个时钟信号的新的抖动时钟值。如果时钟信号不具有最低的抖动时钟值,则仿真器110针对该时钟信号将新的抖动时钟值确定为先前针对该时钟信号生成的抖动时钟值与最低值之差。如果时钟信号具有最低的抖动时钟值,则仿真器110针对该时钟信号将新的抖动时钟值确定为针对时钟存储的时钟参数和从时钟信号的抖动范围随机选择的抖动值之和。然后对于新生成的抖动时钟值重复步骤504-512。
计算机器架构
现在转到图6,它是示出能够从机器可读介质读取指令并在处理器(或控制器)中执行它们的示例机器的组件的框图。具体地,图6示出了以计算机系统600的示例形式的机器的示意图,其中指令624(例如,软件或程序代码)用于使机器执行(运行)用图1-图5描述的方法中的任何一个或多个方法。计算机系统600可以用于在图1的仿真环境100中示出的一个或多个实体(例如,主机系统110、仿真器120)。
示例计算机系统600包括硬件处理器602(例如,中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、一个或多个专用集成电路(ASIC)、一个或多个射频集成电路(RFIC)或这些的任何组合)、主存储器604和静态存储器606,它们被配置为经由总线608彼此通信。计算机系统600还可以包括图形显示单元610(例如,等离子体显示面板(PDP)、液晶显示器(LCD)、投影仪或阴极射线管(CRT))。计算机系统600还可以包括字母数字输入设备612(例如,键盘)、光标控制设备614(例如,鼠标、轨迹球、操纵杆、运动传感器或其他指示仪)、存储单元616、信号生成设备618(例如,扬声器)和网络接口设备620,它们也被配置为经由总线608通信。
存储单元616包括存储具体化本文所述的方法或功能中的任何一个或多个的指令624(例如,软件)的机器可读介质622。在由计算机系统600执行期间,指令624(例如软件)还可以完全或至少部分地驻留在主存储器604内或处理器602内(例如,处理器的高速缓冲存储器内),主存储器604和处理器602还构成机器可读介质。指令624(例如,软件)可以经由网络接口设备620在网络626上被发送或接收。
虽然机器可读介质622在示例实施例中被示为是单个介质,但是术语“机器可读介质”应该被认为包括能够存储指令(例如,指令624)的单个介质或多个介质(例如,集中式或分布式数据库,或者相关联的高速缓存和服务器)。术语“机器可读介质”还将被认为包括能够存储由机器执行并且使得机器执行本文公开的方法中的任何一个或多个方法的指令(例如,指令624)的任何介质。术语“机器可读介质”包括但不限于以固态存储器、光学介质和磁性介质的形式的数据储存库。
如本领域中已知的,计算机系统600可以具有与图6所示的那些不同和/或其他的组件。此外,计算机系统600可以缺少某些已示出的组件。例如,除了其他组件外,充当仿真器120的计算机系统600可以包括一个或多个硬件处理器602、多个存储单元616、网络接口设备620和多个可配置逻辑电路(如上面参考图1所述),但是可以缺少字母数字输入设备612和光标控制设备614。
其他配置考虑
在本说明书中,多个实例可以实现被描述为单个实例的组件、操作或结构。虽然一个或多个方法的相应操作被示出和描述为单独的操作,但是一个或多个单独的操作可以同时执行,并且不要求以所示的顺序执行操作。在示例配置中呈现为单独组件的结构和功能可以实现为组合的结构或组件。类似地,作为单个组件呈现的结构和功能可以被实现为分离的组件。这些和其他变型、修改、添加和改进落入本文的主题范围内。
某些实施例在本文中被描述为包括逻辑或多个组件、模块或机制,例如,如在图1-图6中所示。模块可以构成软件模块(例如,具体化在机器可读介质上或传输信号中的代码)或硬件模块。硬件模块是能够执行某些操作的有形单元,并且可以以某种方式配置或布置。在示例实施例中,一个或多个计算机系统(例如,独立的、客户端或服务器计算机系统)或计算机系统的一个或多个硬件模块(例如,处理器或处理器组)可以由软件(例如,应用或应用部分)配置为操作用于执行如本文所述的某些操作的硬件模块。
在各种实施例中,硬件模块可以被机械地或电子地实施。例如,硬件模块可以包括被永久配置为执行某些操作(例如,被配置为专用处理器,诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC))的专用电路或逻辑。硬件模块还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路(例如,被包含在通用处理器或其他可编程处理器内)。应当理解,机械地在专用和被永久配置的电路中还是在被临时配置的电路(例如,由软件(或计算机程序代码)配置)中实施硬件模块的决定可以通过成本和时间考虑来驱动。
本文所描述的示例方法的各种操作可以由被临时配置(例如,通过软件)或被永久配置为执行相关操作的一个或多个处理器(例如处理器602)至少部分地执行。无论是被临时还是永久配置,这样的处理器可以构成操作用于执行一个或多个操作或功能的处理器实施的模块。在一些示例实施例中,本文中所涉及的模块可以包括处理器实施的模块。
一个或多个处理器还可以操作用于支持在“云计算”环境中的相关操作的执行,或被操作为“软件即服务”(SaaS)。例如,至少一些操作可以由计算机组(如包括处理器的机器的示例)执行,这些操作可经由网络(例如,互联网)并且经由一个或多个适当的接口(例如,应用程序接口(API))访问。
某些操作的执行可以被分布在一个或多个处理器之中——不仅被驻留在单个机器内,而且被部署在多个机器上。在一些示例实施例中,一个或多个处理器或处理器实施的模块可以位于单个地理位置(例如,在家庭环境、办公环境或服务器场中)。在其他示例实施例中,一个或多个处理器或处理器实施的模块可以被分布在多个地理位置。
本说明书的一些部分根据对存储为机器存储器(例如,计算机存储器)内的比特或二进制数字信号的数据的操作的算法或符号表示来呈现。这些算法或符号表示是数据处理领域的普通技术人员用于将他们的工作的实质传达给本领域其他技术人员的技术的示例。如本文所使用的,“算法”是导致期望结果的操作或类似处理的自相一致序列。在这种情况下,算法和操作涉及物理量的物理操纵。通常但不一定,这样的量可以采取能够被机器存储、访问、传送、组合、比较或以其它方式操纵的电、磁或光信号的形式。有时,主要出于公共使用的原因,使用诸如“数据”、“内容”、“比特”、“值”、“元件”、“符号”、“字符”、“术语”、“数字”、“数值”等词语来指代这样的信号是方便的。然而,这些词语仅仅是方便的标签,并且与适当的物理量相关联。
除非另有特别说明,否则本文使用诸如“处理”、“计算”、“运算”、“确定”、“呈现”、“显示”等词语的讨论可以指机器(例如,计算机)的动作或过程,该机器操纵或变换在一个或多个存储器(例如,易失性存储器、非易失性存储器或其组合)、寄存器或接收、存储、传输或显示信息的其他机器组件内表示为物理(例如,电子、磁性或光学)量的数据。
如本文所使用的,对“一个实施例”或“实施例”的任何引用意味着结合该实施例描述的特定元件、特征、结构或特性被包括在至少一个实施例中。在说明书中各处出现的短语“在一个实施例中”不一定都指代相同的实施例。
可以使用表达“耦合”和“连接”及其派生词来描述一些实施例。例如,一些实施例可以使用术语“耦合”来描述以指示两个或更多个元件处于直接物理或电接触。然而,术语“耦合”还可以表示两个或更多个元件彼此不直接接触,但是仍然彼此协作或交互。实施例不限于此环境。
如本文所使用的,术语“包括”、“包含”、“具有”或其任何其它变体旨在涵盖非排他性的包括。例如,包括元件列表的过程、方法、物品或装置不一定仅限于那些元件,而是可以包括未明确列出或固有于这些过程、方法、物品或装置的其他元素。此外,除非明确地相反指出,否则“或”是指包括性的或而不是排他性的或。例如,条件A或B由以下任何一个满足:A是真(或存在)且B是假(或不存在),A是假(或不存在)且B是真(或存在),并且A和B都是真(或存在)。
此外,使用“一”或“一个”来描述本文中的实施例的元件和组件。这仅仅是为了方便和给出本发明的一般意义。该描述应该被理解为包括一个或至少一个,并且单数也包括复数,除非明显有其它含义。
在阅读本公开内容时,本领域技术人员将理解本文所述实施例的另外的替代结构和功能设计。因此,尽管已经示出和描述了特定实施例和应用,但是应当理解,所公开的实施例不限于本文公开的精确结构和组件。在不脱离所附权利要求中限定的精神和范围的情况下,可以对本文公开的方法和装置的布置、操作和细节进行对于本领域技术人员显而易见的各种修改、改变和变化。
Claims (20)
1.一种非瞬态计算机可读存储介质,存储用于生成被测设计(DUT)的多个时钟信号的可执行指令,所述指令用于将仿真器配置用于:
识别多个抖动时钟值,每个抖动时钟值与来自被所述仿真器仿真的所述DUT的所述多个时钟信号的时钟信号相关联,并且每个抖动时钟值基于与所述时钟信号相关联的抖动值和时钟参数被确定;
从所述多个抖动时钟值中识别最低抖动时钟值;和
输出来自所述多个时钟信号的与所述最低抖动时钟值相关联的时钟信号上的边沿。
2.根据权利要求1所述的非瞬态计算机可读存储介质,其中,所述指令还将所述仿真器配置用于:
从与所述时钟信号相关联的抖动范围中随机选择所述抖动值。
3.根据权利要求1所述的非瞬态计算机可读存储介质,其中,与所述时钟信号相关联的所述时钟参数与所述时钟信号的周期相关联。
4.根据权利要求1所述的非瞬态计算机可读存储介质,其中,所述指令还将所述仿真器配置用于:
通过组合所述抖动值和所述时钟参数,从所述多个抖动时钟值中确定抖动时钟值。
5.根据权利要求1所述的非瞬态计算机可读存储介质,其中,所述指令还将所述仿真器配置用于:
对于与不是所述最低抖动时钟值的抖动时钟值相关联的所述多个时钟信号中的每一个时钟信号,保持所述时钟信号的状态。
6.根据权利要求1所述的非瞬态计算机可读存储介质,其中,所述指令还将所述仿真器配置用于:
对于与抖动时钟值相关联的所述多个时钟信号中的每一个时钟信号:
基于所述抖动时钟值是否是所述最低抖动时钟值,生成针对所述时钟信号的附加抖动时钟值。
7.根据权利要求6所述的非瞬态计算机可读存储介质,其中,所述指令还将所述仿真器配置用于:
响应于所述抖动时钟值不是所述最低抖动时钟值,将所述附加抖动时钟值生成为所述抖动时钟值与所述最低抖动时钟值之差。
8.根据权利要求6所述的非瞬态计算机可读存储介质,其中,所述指令还将所述仿真器配置用于:
响应于与所述时钟信号相关联的所述抖动时钟值是所述最低抖动时钟值,通过对与所述时钟信号相关联的附加时钟参数和从抖动范围随机选择的附加抖动值求和来生成所述附加抖动时钟值。
9.一种非瞬态计算机可读存储介质,存储用于生成被测设计(DUT)的时钟信号的可执行指令,所述指令用于将仿真器配置用于:
获得与由所述仿真器仿真的所述DUT的所述时钟信号相关联的时钟参数;
随机生成抖动值;和
基于所述时钟参数和所述抖动值,生成针对所述时钟信号的抖动时钟值。
10.根据权利要求9所述的非瞬态计算机可读存储介质,其中,所述指令还将所述仿真器配置用于:
识别包括生成的所述抖动时钟值的多个抖动时钟值,所述多个抖动时钟值中的每一个抖动时钟值与所述DUT的不同时钟信号相关联;
从所述多个抖动时钟值中识别最低抖动时钟值;和
输出与所述最低抖动时钟值相关联的时钟信号上的边沿。
11.根据权利要求9所述的非瞬态计算机可读存储介质,其中,所述时钟参数和所述抖动值被组合以生成所述时钟抖动参数。
12.根据权利要求9所述的非瞬态计算机可读存储介质,其中,通过从与所述时钟信号相关联的抖动范围中随机地选择所述抖动值来生成所述抖动值。
13.根据权利要求9所述的非瞬态计算机可读存储介质,其中,与所述时钟信号相关联的所述时钟参数与所述时钟信号的周期相关联。
14.一种由仿真器仿真的时钟发生器,所述时钟发生器包括:
第一存储器,所述第一存储器被配置用于存储与由所述仿真器仿真的被测设计(DUT)的第一时钟信号相关联的第一抖动时钟值,所述第一抖动时钟值基于与所述第一时钟信号相关联的第一时钟参数和第一抖动值被确定;
第二存储器,所述第二存储器被配置用于存储与所述DUT的第二时钟信号相关联的第二抖动时钟值,所述第二抖动时钟值基于与所述第二时钟信号相关联的第二时钟参数和第二抖动值被确定;
最小运算器,所述最小运算器被配置用于确定所述第一抖动时钟值小于所述第二抖动时钟值;和
比较器,所述比较器被配置用于基于第一抖动时钟值小于所述第二抖动时钟值而输出所述第一时钟信号上的边沿。
15.根据权利要求14所述的时钟发生器,还包括附加比较器,其中:
所述最小运算器还被配置用于基于所述第一抖动时钟值小于所述第二抖动时钟值而向所述比较器和所述附加比较器输出所述第一抖动时钟值;
所述比较器还被配置用于:
接收由所述最小运算器输出的所述第一抖动时钟值;
从所述第一存储器读取存储的所述第一抖动时钟值;和
基于由所述最小运算器输出的所述第一抖动时钟值与从所述第一存储器读取的所述第一抖动时钟值相同,输出所述第一时钟信号的所述边沿;以及
所述附加比较器被配置用于:
接收由所述最小运算器输出的所述第一抖动时钟值;
从所述第二存储器读取存储的所述第二抖动时钟值;和
基于由所述最小运算器输出的所述第一抖动时钟值不同于从所述第二存储器读取的所述第二抖动时钟值,维持所述第二时钟信号的状态。
16.根据权利要求14所述的时钟发生器,还包括:
第一随机抖动发生器,所述第一随机抖动发生器被配置用于从与所述第一时钟信号相关联的第一抖动范围中随机地选择所述第一抖动值;和
第二随机抖动发生器,所述第二随机抖动发生器被配置用于从与所述第二时钟信号相关联的第二抖动范围中随机地选择所述第二抖动值。
17.根据权利要求14所述的时钟发生器,还包括:
第一随机抖动发生器,所述第一随机抖动发生器被配置用于:
基于与所述第一时钟信号相关联的第三时钟参数和第三抖动值,生成针对所述第一时钟信号的第三抖动时钟值;和
将所述第三抖动时钟值存储在所述第一存储器中以替换所述第一抖动时钟值,以及
附加比较器,所述附加比较器被配置用于:
基于所述第二抖动时钟值和所述第一抖动时钟值之差,生成针对所述第二时钟信号的第四抖动时钟值;和
将所述第四抖动时钟值存储在所述存储器组件中以替换所述第二抖动时钟值。
18.一种用于生成被测设计(DUT)的多个时钟信号的方法,所述方法包括:
由仿真器识别多个抖动时钟值,每个抖动时钟值与来自被所述仿真器仿真的所述被测设计(DUT)的所述多个时钟信号中的时钟信号相关联,并且每个抖动时钟值基于与所述时钟信号相关联的时钟参数和抖动值被确定;
由所述仿真器从所述多个抖动时钟值中识别最低抖动时钟值;和由所述仿真器输出来自所述多个时钟信号的与所述最低抖动时钟值相关联的时钟信号上的边沿。
19.根据权利要求18所述的方法,还包括:
对于与不是所述最低抖动时钟值的抖动时钟值相关联的所述多个时钟信号中的每一个时钟信号,保持所述时钟信号的状态。
20.根据权利要求18所述的方法,还包括
对于与抖动时钟值相关联的所述多个时钟信号中的每一个时钟信号:
基于所述抖动时钟值是否是所述最低抖动时钟值,生成针对所述时钟信号的附加抖动时钟值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/952,656 US9898565B2 (en) | 2015-11-25 | 2015-11-25 | Clock jitter emulation |
US14/952,656 | 2015-11-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106802972A true CN106802972A (zh) | 2017-06-06 |
CN106802972B CN106802972B (zh) | 2020-04-10 |
Family
ID=58693196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611037596.8A Active CN106802972B (zh) | 2015-11-25 | 2016-11-23 | 时钟抖动仿真 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9898565B2 (zh) |
JP (1) | JP6353013B2 (zh) |
CN (1) | CN106802972B (zh) |
DE (1) | DE102016119991B4 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107491581A (zh) * | 2017-07-03 | 2017-12-19 | 北京东土军悦科技有限公司 | 一种对数字电路进行仿真验证的方法及时钟发生器 |
CN111310393A (zh) * | 2020-02-28 | 2020-06-19 | Oppo广东移动通信有限公司 | 仿真时钟产生方法及相关产品 |
CN115204083A (zh) * | 2022-09-13 | 2022-10-18 | 摩尔线程智能科技(北京)有限责任公司 | 芯片静态时序分析方法、装置、电子设备及存储介质 |
CN116108803A (zh) * | 2023-04-12 | 2023-05-12 | 北京紫光青藤微系统有限公司 | 用于生成非常规时钟信号的方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11194942B1 (en) * | 2018-12-06 | 2021-12-07 | Cadence Design Systems, Inc. | Emulation system supporting four-state for sequential logic circuits |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4975634A (en) * | 1989-04-07 | 1990-12-04 | General Signal Corporation | Jitter measurement device |
CN1192836A (zh) * | 1995-06-13 | 1998-09-09 | 艾利森电话股份有限公司 | 通过一条双向链路对数据传送进行同步 |
US7512858B2 (en) * | 2004-06-24 | 2009-03-31 | Verigy (Singapore) Pte. Ltd. | Method and system for per-pin clock synthesis of an electronic device under test |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6288589B1 (en) * | 1997-11-20 | 2001-09-11 | Intrinsity, Inc. | Method and apparatus for generating clock signals |
US6629256B1 (en) * | 2000-04-04 | 2003-09-30 | Texas Instruments Incorporated | Apparatus for and method of generating a clock from an available clock of arbitrary frequency |
US20030156545A1 (en) | 2002-02-15 | 2003-08-21 | Masashi Shimanouchi | Signal paths providing multiple test configurations |
US7171601B2 (en) | 2003-08-21 | 2007-01-30 | Credence Systems Corporation | Programmable jitter generator |
US6937077B2 (en) * | 2003-09-23 | 2005-08-30 | Micron Technology, Inc. | Apparatus and method for suppressing jitter within a clock signal generator |
US7061286B2 (en) * | 2004-06-24 | 2006-06-13 | Teradyne, Inc. | Synchronization between low frequency and high frequency digital signals |
US8169225B2 (en) | 2004-11-15 | 2012-05-01 | Nxp B.V. | System and method for on-chip jitter injection |
US7890904B2 (en) * | 2005-06-06 | 2011-02-15 | Fujitsu Limited | Estimating jitter in a clock tree of a circuit and synthesizing a jitter-aware and skew-aware clock tree |
US7573957B2 (en) * | 2005-09-23 | 2009-08-11 | Teradyne, Inc. | Strobe technique for recovering a clock in a digital signal |
JP4761906B2 (ja) * | 2005-09-27 | 2011-08-31 | ルネサスエレクトロニクス株式会社 | 半導体集積回路の設計方法 |
JP2007179296A (ja) * | 2005-12-28 | 2007-07-12 | Fujitsu Ltd | タイミング解析方法 |
EP2360488B1 (en) * | 2007-03-20 | 2013-01-23 | Rambus Inc. | Integrated circuit having receiver jitter tolerance ("JTOL") measurement |
US10019333B2 (en) * | 2015-04-16 | 2018-07-10 | Keysight Technologies Singapore (Holdings) Pte. Ltd. | Methods, systems, and computer readable media for emulating network devices with different clocks |
-
2015
- 2015-11-25 US US14/952,656 patent/US9898565B2/en active Active
-
2016
- 2016-10-20 DE DE102016119991.5A patent/DE102016119991B4/de active Active
- 2016-11-23 CN CN201611037596.8A patent/CN106802972B/zh active Active
- 2016-11-24 JP JP2016227609A patent/JP6353013B2/ja active Active
-
2018
- 2018-01-05 US US15/863,566 patent/US10528686B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4975634A (en) * | 1989-04-07 | 1990-12-04 | General Signal Corporation | Jitter measurement device |
CN1192836A (zh) * | 1995-06-13 | 1998-09-09 | 艾利森电话股份有限公司 | 通过一条双向链路对数据传送进行同步 |
US7512858B2 (en) * | 2004-06-24 | 2009-03-31 | Verigy (Singapore) Pte. Ltd. | Method and system for per-pin clock synthesis of an electronic device under test |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107491581A (zh) * | 2017-07-03 | 2017-12-19 | 北京东土军悦科技有限公司 | 一种对数字电路进行仿真验证的方法及时钟发生器 |
CN107491581B (zh) * | 2017-07-03 | 2020-11-13 | 北京东土军悦科技有限公司 | 一种对数字电路进行仿真验证的方法及时钟发生器 |
CN111310393A (zh) * | 2020-02-28 | 2020-06-19 | Oppo广东移动通信有限公司 | 仿真时钟产生方法及相关产品 |
CN111310393B (zh) * | 2020-02-28 | 2023-08-04 | Oppo广东移动通信有限公司 | 仿真时钟产生方法及相关产品 |
CN115204083A (zh) * | 2022-09-13 | 2022-10-18 | 摩尔线程智能科技(北京)有限责任公司 | 芯片静态时序分析方法、装置、电子设备及存储介质 |
CN115204083B (zh) * | 2022-09-13 | 2023-02-28 | 摩尔线程智能科技(北京)有限责任公司 | 芯片静态时序分析方法、装置、电子设备及存储介质 |
CN116108803A (zh) * | 2023-04-12 | 2023-05-12 | 北京紫光青藤微系统有限公司 | 用于生成非常规时钟信号的方法及装置 |
CN116108803B (zh) * | 2023-04-12 | 2024-03-22 | 北京紫光青藤微系统有限公司 | 用于生成非常规时钟信号的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US10528686B2 (en) | 2020-01-07 |
DE102016119991B4 (de) | 2023-12-28 |
CN106802972B (zh) | 2020-04-10 |
US20170147725A1 (en) | 2017-05-25 |
JP2017182773A (ja) | 2017-10-05 |
US9898565B2 (en) | 2018-02-20 |
DE102016119991A1 (de) | 2017-06-01 |
US20180129766A1 (en) | 2018-05-10 |
JP6353013B2 (ja) | 2018-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106802972A (zh) | 时钟抖动仿真 | |
US20160062951A1 (en) | Semiconductor device | |
US9547040B2 (en) | Efficient event detection | |
US9910944B2 (en) | X-propagation in emulation using efficient memory | |
Davis et al. | A practical reconfigurable hardware accelerator for Boolean satisfiability solvers | |
US20090296923A1 (en) | Signature generation apparatus and signature verification apparatus | |
CN110383272A (zh) | 时钟树分析和优化的形式化方法 | |
CN110785761B (zh) | 存在时钟动态重编程时仿真时间线的压缩方法 | |
EP3292467A2 (en) | Efficient waveform generation for emulation | |
US9959381B2 (en) | Placing and routing debugging logic | |
EP1859372B1 (en) | Cross-bar switching in an emulation environment | |
US20070129923A1 (en) | Dynamic synchronizer simulation | |
US9659118B2 (en) | X-propagation in emulation | |
US20120265515A1 (en) | Method and system and computer program product for accelerating simulations | |
Glette et al. | Lookup table partial reconfiguration for an evolvable hardware classifier system | |
US20180373673A1 (en) | Hardware accelerated linear system solver | |
KR102651866B1 (ko) | 전력 소비를 줄이는 장치 및 그것의 방법 | |
US11194942B1 (en) | Emulation system supporting four-state for sequential logic circuits | |
US20150365092A1 (en) | Solving constraint satisfaction problems using a field programmable gate array | |
Preußer et al. | The portable open-source ip core and utility library poc | |
US20030125916A1 (en) | Simulation and synthesis of metastable flip flops | |
US11727178B2 (en) | Under test pin location driven simultaneous signal grouping and pin assignment | |
EP3248103B1 (en) | X-propagation in emulation | |
Kourfali et al. | Test set generation almost for free using a run-time FPGA reconfiguration technique | |
Nagy et al. | Design of a globally asynchronous locally synchronous digital system |
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 |