CN113255267A - 使用现场可编程门阵列fpga重新编程检测仿真中的时序违规 - Google Patents
使用现场可编程门阵列fpga重新编程检测仿真中的时序违规 Download PDFInfo
- Publication number
- CN113255267A CN113255267A CN202110118247.3A CN202110118247A CN113255267A CN 113255267 A CN113255267 A CN 113255267A CN 202110118247 A CN202110118247 A CN 202110118247A CN 113255267 A CN113255267 A CN 113255267A
- Authority
- CN
- China
- Prior art keywords
- clock
- flip
- flop
- delay
- cycles
- 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
- 238000004088 simulation Methods 0.000 title claims abstract description 70
- 230000008672 reprogramming Effects 0.000 title claims abstract description 16
- 238000013461 design Methods 0.000 claims abstract description 45
- 238000000034 method Methods 0.000 claims abstract description 39
- 239000000872 buffer Substances 0.000 claims abstract description 32
- 230000008859 change Effects 0.000 claims abstract description 8
- 230000001360 synchronised effect Effects 0.000 claims description 11
- 238000003491 array Methods 0.000 claims description 2
- 238000012360 testing method Methods 0.000 description 33
- 238000005192 partition Methods 0.000 description 22
- 238000002347 injection Methods 0.000 description 21
- 239000007924 injection Substances 0.000 description 21
- 238000003860 storage Methods 0.000 description 21
- 238000013507 mapping Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 17
- 230000015654 memory Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 11
- 238000012795 verification Methods 0.000 description 10
- 101100003180 Colletotrichum lindemuthianum ATG1 gene Proteins 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 101100113692 Caenorhabditis elegans clk-2 gene Proteins 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 206010070834 Sensitisation Diseases 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 5
- 230000008313 sensitization Effects 0.000 description 5
- 238000000638 solvent extraction Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000009466 transformation Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000000638 stimulation Effects 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000013440 design planning Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 238000013101 initial test Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000009958 sewing Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/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/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/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
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/06—Power analysis or power optimisation
-
- 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
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
本公开的实施例涉及使用现场可编程门阵列FPGA重新编程检测仿真中的时序违规。一种检测在硬件仿真系统中被仿真的电路设计中的第一序列元件和第二序列元件之间的时序违规的方法,该方法部分地包括:确定分别应用于第一序列元件和第二序列元件的第一时钟与第二时钟之间的时序关系;将设置在第一序列元件与第二序列元件之间的组合逻辑重新配置为一个或多个缓冲器;基于时序关系,将跨一个或多个缓冲器的延迟设定为硬件仿真系统的一个或多个时钟周期;根据延迟对第一时钟和第二时钟重新编程;以及如果第一触发器的输出中的改变在延迟内未被存储在第二触发器中,则检测到时序违规。
Description
相关申请
本申请要求于2020年1月28日提交的提为“Detecting Timing Violations InEmulation Using FPGA Reprogramming”的美国申请序列号No.62/966,822的权益,其全部内容通过引用并入本文。
技术领域
本公开涉及一种硬件仿真系统,更具体地涉及一种使用现场可编程门阵列(FPGA)重新编程来检测在仿真中检测时序违规的系统和方法。
背景技术
已知集成电路(IC)的硬件仿真表现为非确定性。因此,在不同的时间运行相同的测试可能会产生不同的结果。通常,不确定性是由错误的测试行为或错误的时序规范(诸如,失误的错误时序路径)引起的。在其他情况下,这种行为是由在仿真器中的时序路径计算错误引起的。
为了检测时序违规,诸如错误的信号设置时间,正在进行仿真的设计可以通过使用附加硬件来检查在设置时间期间的信号稳定性。然而,这种方法具有许多缺点。附加硬件的插入可能会对仿真容量产生负面影响。此外,添加的硬件在运行时并且在特定测试平台上监测仿真正确性,因此不会彻底检查时序有效性。此外,添加的硬件只监测信号的稳定性。可以发生的是,在一个时间窗期间信号可以是稳定的,但是因为时间延迟太大,所以它的值是不正确的。尽管通过功能测试可以检测到这样的错误,但是它们可能保持不被注意或难以调试。
发明内容
根据本公开的一个实施例,一种检测在硬件仿真系统中被仿真的电路设计中的在第一序列元件与第二序列元件之间的时序违规的方法部分地包括:确定在分别应用于第一序列元件和第二序列元件的第一时钟与第二时钟之间的时序关系,将设置在第一序列元件与第二序列元件之间的组合逻辑重新配置为一个或多个缓冲器,基于时序关系将跨一个或多个缓冲器的延迟设置为硬件仿真系统的一个或多个时钟周期,根据延迟对所述第一时钟和第二时钟重新编程,以及如果在延迟内的在第一触发器的输出中的改变未被存储在第二触发器中,则检测到时序违规。
根据本公开的一个实施例,一种非暂时性计算机可读介质部分地包括:存储的指令,当由处理器执行时,使处理器确定分别应用于第一序列元件与第二序列元件的第一时钟与第二时钟之间的时序关系,将设置在第一序列元件与第二序列元件之间的组合逻辑重新配置为一个或多个缓冲器,基于时序关系将跨一个或多个缓冲器的延迟设置为硬件仿真系统的一个或多个时钟周期,根据该延迟对第一时钟和第二时钟重新编程,以及如果在该延迟内的在第一触发器的输出中的改变未被存储在第二触发器中,则检测到时序违规。
附图说明
通过下面给出的详细描述和本发明实施例的附图,可以更全面地理解本发明。附图用于提供对本发明实施例的知识和理解,并且不将本发明的范围限制到这些特定实施例。此外,这些附图不一定按比例绘制。
图1示出了由硬件仿真系统仿真的逻辑电路的示例。
图2示出了根据本公开的一个实施例的图1的电路的变换。
图3示出了由硬件仿真系统仿真的逻辑电路的示例。
图4示出了由硬件仿真系统仿真的逻辑电路的示例。
图5示出了根据本公开的一个实施例的逻辑电路的示例,该逻辑电路被配置为生成期望的时钟模式,以检测设置在电路中的触发器之间的可能的时序违规。
图6示出了提供到逻辑电路的输入的LUT。
图7示出了根据本公开的一个实施例的在被变换之后的图6的电路。
图8示出了提供到逻辑电路的输入的LUT。
图9示出了根据本公开的一个实施例的在被变换之后的图8的电路。
图10示出了提供到逻辑电路的输入的LUT。
图11示出了根据本公开的一个实施例的逻辑电路,该逻辑电路适于刺激和检查在一对触发器之间的数据路径时序。
图12是根据本公开的一个实施例的刺激生成器的框图。
图13示出了根据本公开的一个实施例的缝合在一起的多个信号路径。
图14示出了根据本公开的一个实施例的缝合在一起的多个信号路径。
图15示出了根据本公开的一些实施例的在集成电路的设计和制造期间使用的各种工艺的流程图。
图16示出了根据本公开的一些实施例的示例仿真系统的图。
图17示出了本公开的实施例可以在其中运行的示例计算机系统的图。
具体实施方式
根据本公开,在执行集成电路(IC)设计的硬件仿真之前,检查在信号路径中设置的序列逻辑元件(诸如触发器和锁存器)之间的延迟是否存在可能的时序违规。如下文进一步描述的,除了其他优点之外,本公开的实施例实现了用于时序路径敏化的查找表(LUT)的运行时重新编程、在运行时期间对可重新编程LUT采用自动测试模式生成(ATPG)、仿真时钟重新编程、测试压缩、最小检测能力和布线开销,以及独立于用户测试平台。
本公开的实施例适于用于实现具有可重新编程LUT的组合逻辑的仿真器,诸如基于FPGA的仿真器。模拟器通常包括仿真时钟,其周期定义了仿真时钟(EC)周期,并且仿真时钟被认为是最快的时钟。仿真时钟作为被测试的设备/设计(DUT)的系统时钟操作。在一个实施例中,所有信号改变(包括用户指定的时钟)被同步至EC。当仿真停止时,仿真器使用例如经由扫描输出的回读来促进寄存器值的读取,并且使用例如经由扫描输入的回写来促进期望值到寄存器的写入。在一个实施例中,仿真器是基于FPGA的仿真器,并且将仿真器块称为FPGA块或FPGA。然而,应当理解的是,本公开的实施例适用于任何仿真器器或具有参考时钟的任何FPGA系统。
根据本公开,具有应被验证的时序的信号路径被标识,并且被配置为验证此类路径的时序行为的测试被自动地开发。与如此标识的路径相关联的查找表(LUT)可以被重新编程。控制在路径边界上的寄存器的时钟也被重新编程以对应于路径的时序预算。为了减少测试数目,可以将多条路径缝合在一起。然后,被缝合的路径可以被组合成组,以便针对经缝合的路径生成测试。在组中的所有路径都是相互不相交的。
然后在仿真期间实现测试。在一个实施例中,与同一路径组相关联的所有测试可以同时被应用和运行。在实际结果与预期结果之间的差异指示缝合路径中的时序违规。然后,时序违规可以被自动细化,以精确定位违规路径。
时序路径选择
在IC设计中,组合路径的数目通常非常大。因此,检查所有路径中的时序违规通常是不切实际的。通常,检查跨越FPGA边界的路径(FPGA间路径)的时序违规就足够了。FPGA内部路径延迟通常由FPGA布局和布线工具准确地计算,因此相对于FPGA间的路径延迟可以忽略不计。为了进一步最小化路径的总数,例如,可以仅包括FPGA之间以及在其他单元或板之间具有多跳的路径。下面的描述是参照检测FPGA间的路径的时序违规而提供的。然而,应当理解的是,根据本公开的实施例,时序违规检测可以应用于任何路径。
时序路径敏化
当信号到达敏化路径的序列逻辑元件时,检测到时序违规:(i)到达太迟,导致设置时间违规;或(ii)到达太早,导致保持时间违规。临界路径敏化用于基于自动测试模式生成(ATPG)技术生成测试模式。路径敏化要求将设置在路径中的门的所有外部输入设置为允许在整个该路径中发生信号传播的值。
图1示出了由硬件仿真器(备选地在本文中称为仿真器)仿真的逻辑电路15的示例。为了检查沿触发器10与20之间的路径的可能的时序违规,触发器10的输出最初可以被设置为第一状态,例如,低逻辑电平(本文也称为“0”)。在下一时钟周期期间,触发器10的输出可以被改变为第二状态,例如,高逻辑电平(本文也称为“1”),以便确定在触发器10的输出中的改变如何传播到触发器20的输出。为了实现这一点,应将触发器12的输出设置为1,从而与门16仅对触发器10的输出的改变作出响应,并且将触发器14的输出设置为0,从而或门18仅对与门16的输出作出响应。如果触发器20的输出保持在0并且没有改变为1,则在触发器10与20之间的路径延迟大于通过时序分析预测的延迟。如上所述,触发器10、12、14的输出值的设置可以使用回写操作来实现,在回写操作期间,期望值经由扫描入口输入端子(未示出)写入触发器10,并且1和0的值分别经由其相应的扫描入口输入端子(未示出)写入触发器12和14。类似地,使用回读操作来实现对触发器20的输出值的读取,在回读操作期间,使用扫描出口输出端子(未示出)来读取触发器20的输出值。
根据本公开的一个方面,在经历时序违规检查的路径中布置的所有组合逻辑门和LUT被变换为缓冲器。然而,应当理解的是,也可以使用任何其他合适的变换。例如,在一个实施例中,逻辑门和LUT可以被变换成反相器链。由于LUT时序独立于其逻辑功能,因此这种变换不影响被检查的时序。
图2示出了在分别用缓冲器24和26替换门16和18之后,图1电路的变换。因为触发器12和14的输出值分别被设置为1和0,所以触发器12和14不影响在触发器10和20之间的时序路径,因此未示出。如图2所示,电路15到电路25的变换使触发器10和20之间的路径敏化,因此能够检测沿该路径的可能的时序违规。
时钟分析
为了检测在两个序列元件之间的路径中的时序违规,序列元件时钟必须与可用时间预算一致。图3示出了一对触发器30和35,以及设置在它们之间的组合逻辑32。例如,如果跨组合逻辑32的路径延迟是2.1EC周期,并且在时钟clk1的正边沿与时钟clk2的下一正边沿之间的最坏情况时序的可用时间预算是2EC周期,则在触发器30与32之间的路径中存在时序违规。然而,如果在测试执行期间在时钟clk1与clk1的边沿之间的延迟时间至少为4个EC周期,则不会检测到时序违规。因此,如果时钟clk1与clk2具有相同的模式和2个EC周期的周期,则检测到时序违规。每个时钟信号都具有由时钟的高电平持续时间和低电平持续时间定义的模式。高电平持续时间和低电平持续时间二者均被定义为EC周期的倍数。例如,由001定义的时钟模式指示时钟在两个EC周期内处于低电平,然后在一个EC周期内处于高电平。
根据本公开的一个方面,为了设置跨组合逻辑的时间预算,应用以下定义在时钟之间的时序关系的规则。如果应用于由组合逻辑分隔的触发器对的时钟(诸如图3中示出的时钟clk1与clk2)彼此不同步(即,它们不是同相时钟),跨组合逻辑(诸如图3的组合逻辑32)的时间预算(在本文中也称为路径时间预算)被设置为一个EC周期。如果应用于该对触发器的时钟彼此同步,则将分隔两个触发器的组合逻辑的路径时间预算设置为2EC周期。
如果应用于由组合逻辑分隔的触发器对的时钟是独立的时钟,则跨组合逻辑的路径时间预算被设置为一个EC周期。如果应用于由组合逻辑分隔的触发器对的时钟是相同的时钟,则跨组合逻辑的路径时间预算被设置为至少2EC周期。如果无法预先确定跨组合逻辑的路径是单EC周期路径还是多EC周期路径,则跨组合逻辑的路径时间预算被设置为n EC周期,其中n表示以EC周期表示的同相(synphase)时钟的周期。
根据本公开,如下文所述,在跨路径的组合逻辑设置路径时间预算之后,对设置在路径中的序列元件的时钟信号进行重新编程/修改,以便与分配的路径时间预算一致。参考图3,如果跨组合逻辑32的路径时间预算被设置为1EC周期,则边沿未对齐的时钟clk1和clk2二者都被重新编程为具有1EC周期的周期。如果跨组合逻辑的路径时间被设置为n>1EC周期,则时钟clk1和clk2都被重新编程以具有相同的模式,使得它们的低相位(时钟处于低电平的周期)是k EC周期,并且它们的高相位(时钟处于高电平的周期)是(n–k)EC周期,其中0<k<n是任意整数。
如果两个连续的序列元素是锁存器,则假定它们是反相(antipodal)的(即,当其中一个锁存器断开时,另一个锁存器闭合),否则,它们应被视为组合逻辑。图4示出了一对连续锁存器40和45,在它们之间设置有组合逻辑42。假设跨组合逻辑42的时间预算是k EC周期。根据本公开的一个方面,时钟clk1和clk2都可以被重新编程以具有相同的模式,使得它们的低相位是k EC周期。在一个实施例中,时钟周期n(n>k)使得n–k是分配给在锁存器45与下一个反相锁存器之间的路径的时间预算,下一个反相锁存器诸如是锁存器48,其被示为通过组合逻辑46与锁存器45分隔。因此,组合逻辑46具有(n–k)EC周期的分配路径时间预算。例如,如果在锁存器45与48之间的延迟为2EC周期,则时钟clk2和clk3被重新编程为具有1EC周期的低相位和2EC周期的高相位。
时钟复用
图5是电路55的框图的示例,电路55被配置为生成期望的时钟模式,以检测在电路中设置的触发器30与35之间可能的时序违规。复用器50被示出为在其第一输入端子S1处接收正常模式时钟图案,并且在其第二输入端子S2处接收测试模式时钟图案。根据本公开的实施例,正常模式时钟模式被理解为是指针对在仿真的正常模式下测试DUT而开发的时钟模式,并且测试模式被理解为是指适于检查时序违规的时钟模式。
如图所示,触发器52的输入和输出端子相互连接。因此,对于时钟信号CK的每次变换,向复用器50的选择端子Sel施加1或0。为了选择正常模式时钟模式,使用回写在触发器52的输出处写入0。为了选择测试模式时钟模式,使用回写在触发器52的输出处写入1。
时钟重新编程
为了节省与时钟复用相关的开销,当存在从主时钟(即,作为设计的主输入的时钟)到任何给定时钟的组合路径时,代替时钟复用,可以重新编程时钟逻辑以生成测试模式时钟模式。由于在硬件仿真中,在时钟生成中存在的所有序列元件通常被实现为多路复用器,取决于信号的电流和采样值,这种组合路径通常存在。
检查时序违规假设根据可用预算已经生成/重新编程了时钟,并且通过将LUT重新编程到缓冲器中实现了时序路径敏化,如上所述。如此生成的时钟clk的周期按照EC周期的持续时间在下面可以指定为#clk。根据一个实施例,执行回写和回读以检查路径时序。根据另一实施例,路径时序检查使用刺激生成来实现,这在下面进一步描述。
在两个连续触发器之间的数据路径时序
为了检查跨第一触发器与第二触发器设置的路径的时序违规,触发器的输出值被初始化,并且应用到第一触发器的输入数据被生成,从而导致在第二触发器的输出值的序列中的差异。图6示出了向第一触发器70提供输入的LUT 80,该第一触发器70通过组合逻辑75与第二触发器72分隔。图7示出了根据本发明的实施例的在变换后的图6的电路。如图6和图7所示,组合逻辑75被变换为缓冲器链85,并且LUT 80被变换成恒定逻辑1(即,电源电压Vcc)。
在触发器70和72之间的路径延迟可按以下方式检测:(i)使用回写将两个触发器的输出Q值设置为0;(ii)运行2个EC周期的仿真;以及(iii)使用回读检查触发器72的输出Q的值。如果触发器72的输出值为0,则报告时序错误。
如果图6的触发器70的数据输入端子D是主输入(即,它是被模拟的DUT的输入),那么触发器70的输入端子D可以直接通过回写设置为期望值,或者备选地,触发器70的输入端子D可以在编译阶段期间被连接到馈通LUT。如果触发器70的输入端子D直接连接到另一序列元件的输出端子,则触发器70的输入端子D可以在编译阶段期间连接到馈通LUT。
图8示出了逻辑电路100,其包括设置在第一触发器102与第二触发器104之间的第一组合逻辑块105和第二组合逻辑块110。LUT120被示为连接到(i)触发器102的数据输入端子和(ii)组合逻辑105的输出端子。因此,在没有进一步修改的情况下,不可以对LUT120重新编程以测试时序违规。为了纠正这个问题,在触发器102与LUT 120之间插入缓冲器125,如图9所示。缓冲器125随后可被重新编程为恒定信号生成器,诸如图7所示的VCC电源。
如果触发器具有置位/复位输入,则置位/复位输入被设置为去激活或未断言状态。然后,可以如下地检查与置位/复位/启用路径相关联的时序违规。如果置位/复位/启用输入是同步的,则以与数据相同的方式进行处理,然而,触发器的实际数据输入D被设置为激活/断言值(例如,设置为1,复位为0)。如果置位/复位输入是异步的,则将其以相同方式视为时钟信号,如上所述。
在两个反相锁存器之间的数据路径时序
如图10所示,检查在两个连续的反相锁存器之间的路径的时序与检查两个连续触发器之间的路径的时序类似。被设置在两个锁存器130和135之间的组合逻辑140被转换为缓冲器链(图10中未示出)。然后,可以如下地检查在锁存器130与135之间的路径延迟。针对确保锁存器130闭合所需的EC周期的数目运行仿真。然后,使用回写将锁存器130的输出Q设置为例如逻辑0。然后,使锁存器130的输出值能够传播到锁存器135的输出。接下来,如图7所示,例如,通过将锁存器130的数据输入连接到电源电压,锁存器130的数据输入被设置为1。然后针对与锁存器的时钟周期相对应的EC周期的数目运行仿真。接下来,锁存器135的输出Q的值被回读。如果锁存器135的输出值为0,则检测到时序错误。与触发器的情况一样,测试可以重复数次。检查包括锁存器与触发器的对的时序违规以类似的方式执行。回写/回读方法的优点包括:(i)在大多数情况下,它是非侵入性的;以及(ii)它提供了已经发生时序违规的组合路径的准确指示。
使用刺激生成来检查数据路径时序
检查数据路径时序违规的备选方法是包括生成刺激和分析结果的附加逻辑。在实际结果与预期结果之间的差异指示数据路径时序违规。图11示出了根据本公开的一个实施例的逻辑电路300,该逻辑电路300适于生成刺激并且检查在两个连续触发器160和170之间的数据路径时序。
从复用器162接收给触发器160的数据输入。连接到触发器160的数据输入端子D的逻辑元件(统称为扇入逻辑块164)在时序违规检查期间被重新布线到复用器的输入端子S1。MUX的输入S2连接到刺激序列生成器166。通过经由回写操作编程寄存器168来实现在正常操作模式(即,仿真DUT以验证其功能)与测试模式(即,根据本公开检测时序违规)之间的选择。当复用器162的选择端子被设置为例如低逻辑电平时,来自扇入逻辑164的输入数据被连接到触发器160以启用操作的正常模式。当复用器162的选择端子被设置为例如高逻辑电平时,来自刺激序列生成器166的输入数据被连接到触发器160以使得能够检测可能的时序违规。尽管未示出,布置在触发器160与170之间的组合逻辑165被转换为如上所述的缓冲器或反相器链。
应用于复用器162的选择端子的逻辑值由触发器168设置。因为触发器168的数据输入和输出端子彼此连接,所以触发器168在其时钟clk的每个转换期间提供相同的输出值。如上所述,使用回写操作改变触发器168的输出值。
为了检查在触发器160与170之间的路径时序,根据一个实施例,可以经由刺激序列生成器166应用1和0的交替序列。例如,刺激序列生成器166可以是使用回写或信号生成器以1和0的交替模式(0101…或1010…)初始化的移位寄存器。逻辑电路300还被示为包括验证电路200。如图11所示,相同的时钟信号clk被应用到序列生成器166、触发器160、170、168以及设置在验证逻辑200中的触发器204和208,下面将进一步描述。
图12是根据一个实施例的刺激序列生成器166的框图。使用回写将触发器210初始化为已知值(0或1)。触发器210(这里也称为寄存器)的输出经由反相器215连接到其输入。因此,随着时钟信号clk的每次转换,触发器210的输出值Q在1和0之间变化,从而生成1和0的交替序列。
适于记录时序误差的验证逻辑200被示为包括触发器204、208、反相器206和异或门(XOR)202。触发器204和反相器206形成如上参考图12所述的刺激生成器。在时钟clk的每个周期期间,传递到XOR 216的触发器204的输出是期望从触发器160传播到触发器170的数据。如果从触发器160传播到触发器170的数据与在触发器204的输出Q处提供的数据不同,则在触发器208的时钟端子处发生转换,因此使得触发器208具有表示时序违规和指示错误标志的锁定输出值1。
如上所述,时序违规测试包括初始化阶段、确定由应用于由组合逻辑分隔的触发器对的N个时钟周期定义的仿真周期数(EC)以及读取错误标志值,其中N是输入序列的长度。在初始化阶段期间,根据与输入序列相反的顺序来设置触发器160和170,使得如果输入序列例如为1010…,则将触发器160设置为0并且将触发器170设置为1。触发器204被初始化为与触发器170具有相同的值,并且触发器208被初始化为0(即,无错误)。在测试模式期间,在触发器208的输出处的0指示在触发器160与170之间的路径中不存在时序违规,而在触发器208的输出处的1指示在触发器160与170之间的路径中存在时序违规。刺激生成器可以在多个链之间共享。触发器168还可以在同时被检查的所有路径之间共享。
为了最小化由仪器逻辑引入的开销,多个链可以被缝合在一起以形成如在图13中示出的并且在下文所述的较大链。生成刺激的一个优势是其准确性。当输入序列相对较长时,则错过较小时序违规的几率较小。另外,一定程度上刺激生成需要仅在初始测试周期中执行回写,其提供了增强的性能。如果时序违规在触发器的较长的链中被检测到,则如本文所述的回写/回读技术可以被应用以缩小有问题的区段的范围。
缝合链
在一些实施例中,不同的时序路径可以被缝合在一起,以形成较大的路径/链。为了简化,本文仅描述了触发器链的缝合。然而应理解的是,使用相同的技术也可以实现锁存器的缝合。
如果触发器链的路径的时序预算基本相同,则可以将其缝合在一起。为了构建更长的链,还可以将对应于FPGA内的区段添加到链中。例如,参考图13,假设在触发器302与304之间的路径以及在触发器306与308之间的路径为FPGA间路径,然而假设在触发器304与306之间的路径为FPGA内路径。如所见,根据本公开的一方面,在触发器302、304、306、308之间的路径被缝合在一起以形成链300。
由于时序违规在FPGA内区段中不经常发生,因此即使一些FPGA内路径区段的时序预算小于链的FPGA间路径区段的时序预算,也可以执行路径缝合。如图13所示,当路径被缝合在一起时,针对链生成的时钟模式应该与FPGA间区段的时间预算相匹配。图14示出了与图13相同的触发器链的联结(缝合),其中假设组合逻辑305和315具有相同的2EC周期时间预算。在触发器302/304与306/308之间的路径经由FPGA内触发器304/306(假定其具有1或2EC周期的时间预算)被联结(缝合)。分别应用于触发器302、304、306、308的时钟信号clk1、clk2、clk3和clk4被分配与2EC周期的周期相对应的相同模式。
编译时间分析
编译时间分析包括时序路径枚举、时序路径划分、路径缝合以及刺激生成器插入。如上文所述,时序路径枚举涉及必须检查时序的所有数据路径的标识。在时序路径划分期间,所有选择的路径可以根据它们的时间预算进行分组。路径缝合涉及缝合具有相同时间预算的路径。如上所述,对于具有相同时间预算的每个缝合路径或缝合路径组,形成并且应用刺激生成器和验证逻辑。为了最小化运行时时序违规检查的数目,缝合的路径的数目可以被保持在相对较小的数目。路径的缝合可以在两个方向上延伸。
运行时流程
针对不同缝合路径的不同测试可以在编译时间被准备并且连续运行。为了压缩测试,在一个实施例中,成对不相交的缝合路径可以与相同的时钟模式捆绑在一起。对于每个测试,为路径中的所有序列元件生成给定时间预算的时钟。接下来,在路径中的组合逻辑块被重新编程为缓冲器链。用于仿真的EC时钟周期的数目被设置为至少是最长路径长度的两倍的值。随后,编程地模拟每个路径以生成预期结果。然后针对所选择的EC时钟周期数运行仿真。此后,使用回读检查错误指示符,以报告针对具有错误标志的每个路径的时序冲突。在一些实施例中,如上所述,可以通过将有问题的路径分割成独立的FPGA间区段并且应用回读/回写操作来修改上述步骤。
图15图示了在制品的设计、验证和制造期间被使用的一组示例过程700,制品诸如集成电路,该集成电路用以转换和验证表示该集成电路的设计数据和指令。这些过程中的每个过程可以作为多个模块或操作被构成并且被启用。术语“EDA”表示术语“电子设计自动化”。这些过程始于利用以下各项来创建产品创意710:由设计者提供的信息,被转换以创建使用一组EDA过程712的制品的信息。当设计完成时,设计被流片(taped-out)734,这时候用于集成电路的原图(artwork)(例如,几何图案)被发送到制造设施以制造掩模组,然后其被用于制造集成电路。在流片之后,半导体裸片被制造736,并且包装和组装过程738被执行以产生完成的集成电路740。
对于电路或电子结构的规范可以具有从低级晶体管材料布局到高级描述语言的范围。高级别的表示可以被用来设计电路和系统,使用诸如VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera的硬件描述语言(HDL)。HDL描述可以被转换为逻辑级寄存器传输级(RTL)描述、门级描述、布局级描述或掩模级描述。每个较低级的设计表示在设计描述中添加了更多有用的细节,例如,对于包括该描述的模块的更多细节。较低的抽象级是较不抽象的描述,该描述能够由计算机生成、从设计库得出、或由另一个设计自动化过程创建。表示较低级的设计描述的规范语言的一个示例是SPICE,它被用于对具有许多模拟组件的电路的详细描述。在每个表示级的描述能够由该层的对应工具(例如,形式验证工具)使用。设计过程可以使用在图15中所描绘的序列。所描述的过程由EDA产品(或工具)启用。
在系统设计714期间,要被制造的集成电路的功能性被指定。设计可以针对所期望的特性被优化,诸如功率消耗、性能、区域(物理的和/或代码行)和成本降低等。在此阶段,可能发生将设计划分为不同类型的模块或组件。
在逻辑设计和功能验证716期间,电路中的模块或组件以一种或多种描述语言被指定,并且规范针对功能准确性被检查。例如,电路的组件可以被验证以生成与正在被设计的电路或系统的规范的要求相匹配的输出。功能验证可以使用仿真器和其他程序,诸如测试平台发生器、静态HDL检查器和形式验证器。在一些实施例中,被称为“仿真器”或“原型系统”的组件的特殊系统被用来加速功能验证。
在对测试的合成和设计718期间,HDL代码被转换为网表(netlist)。在一些实施例中,网表可以是图形结构,其中图形结构的边表示电路的组件,并且其中图形结构的节点表示组件之间是如何互连的。HDL代码和网表两者都是分级的制品,这些制品可以由EDA产品使用以验证集成电路在被制造时按照指定的设计执行。网表可以针对目标半导体制造技术被优化。附加地,所完成的集成电路可以被测试,以验证该集成电路满足规范的要求。
在网表验证720期间,针对符合时序约束以及针对HDL代码的对应关系,网表被检查。在设计计划722期间,针对集成电路的总体布图规划针对时序和顶级布线被构造和分析。
在布局或物理实现724期间,发生物理放置(诸如晶体管或电容器的电路组件的放置)和布线(通过多个导体的电路组件的连接),并且可以执行从库中对单元(cell)的选择以启用特定的逻辑功能。如本文所使用的,术语“单元”可以指定提供布尔逻辑函数(例如,AND、OR、NOT、XOR)或者提供存储功能(例如,触发器或锁存器)的一组晶体管、其他组件和互连。如本文所使用的,电路“块(block)”可以指两个或更多个单元。单元和电路块两者可以称为模块或组件,并且能够用作物理结构和用在仿真中两者。对于所选择的单元(基于“标准单元”)指定了参数,诸如大小,并且使这些参数在数据库中可访问以供EDA产品使用。
在分析和提取726期间,电路功能在布局级上被验证,这允许布局设计的细化。在物理验证728期间,布局设计被检查以确保制造约束是正确的,诸如DRC约束、电约束、光刻约束,并且确保电路功能匹配HDL设计规范。在分辨率增强730期间,布局的几何结构被转换以改进电路设计的制造方式。
在流片期间,数据被创建以被用于光刻掩模的生产(如果合适,在光刻增强被应用之后)。在掩模数据准备732期间,“流片”数据被用于产生光刻掩模,该光刻掩模被用于产生完成的集成电路。
计算机系统(诸如图9的计算机系统900或图8的主机系统807)的存储子系统可以用于存储程序和数据结构以及产品,该程序和数据结构被由本文所描述的一些或全部EDA产品使用,并且该产品被用于对库的单元的开发以及被用于使用该库的物理和逻辑设计。
图16描绘了示例仿真环境800的示意图。仿真环境800可以被配置为验证电路设计的功能性。仿真环境800可以包括主机系统807(例如,作为部分的EDA系统的计算机)和仿真系统802(例如,诸如现场可编程门阵列(FPGA)或处理器的一组可编程设备)。主机系统通过使用编译器810生成数据和信息,来构造仿真系统以仿真电路设计。要被仿真的电路设计也称为被测试的设计(DUT),其中来自仿真的数据和信息被用于验证DUT的功能性。
主机系统807可以包括一个或多个处理器。在主机系统包括多个处理器的实施例中,本文所描述的由主机系统所执行的功能可以被分布在多个处理器之间。主机系统807可以包括编译器810,其用以转换以描述语言编写的、表示DUT的规范,并且用以产生用于构造仿真系统802以仿真DUT的数据(例如,二进制数据)和信息。编译器810可以转换、改变、重构DUT、向DUT添加新功能和/或控制DUT的时序。
主机系统807和仿真系统802使用由仿真连接所携带的信号来交换数据和信息。连接可以是但不限于一个或多个电缆,诸如具有与推荐标准232(RS232)或通用串行总线(USB)协议兼容的引脚结构的电缆。该连接可以是有线通信介质,或者诸如局域网或广域网(诸如因特网)的网络。该连接可以是无线通信介质或使用诸如BLUETOOTH或IEEE 802.11的无线协议的具有一个或多个接入点的网络。主机系统807和仿真系统802可以通过诸如网络服务器的第三设备交换数据和信息。
仿真系统802包括多个FPGA(或其他模块),诸如FPGA 8041和8042,以及直到804N的附加的FPGA。每个FPGA可以包括一个或多个FPGA接口,通过这些接口,FPGA被连接到其他FPGA(以及可能的其他仿真组件),以使这些FPGA交换信号。FPGA接口可以称为输入/输出引脚或FPGA焊盘。尽管仿真器可以包括FPGA,但是仿真器的实施例可以包括其他类型的逻辑块而不包括用于仿真DUT的FPGA,或者可以包括其他类型的逻辑块与用于仿真DUT的FPGA。例如,仿真系统802可以包括定制的FPGA、用于仿真或原型设计的专用ASIC、存储器以及输入/输出设备。
可编程设备可以包括可编程逻辑块的阵列和互连的层级结构,该层级结构可以使得可编程逻辑块能够根据在HDL代码中的描述被互连。可编程逻辑块中的每一个可以启用复杂的组合功能或启用诸如AND和XOR逻辑块的逻辑门。在一些实施例中,逻辑块还可以包括存储器元件/设备,其可以是简单的锁存器、触发器或其他存储器块。取决于不同逻辑块之间的互连的长度,信号可以在不同时间到达逻辑块的输入端子,并且因此可以被临时存储在存储元件/设备中。
FPGA 8041-804N可以被放置在一个或多个板8121和8122以及直到812M的附加的板上。多个板可以被放置在仿真单元8141中。仿真单元内的板可以使用仿真单元的背板或任何其他类型的连接来被连接。另外,多个仿真单元(例如,8141和8142直到814K)可以通过电缆或任何其他方式被彼此连接,以形成多仿真单元系统。
对于要被仿真的DUT,主机系统807将一个或多个位文件(bit file)传送到仿真系统802。位文件可以指定DUT的描述,并且可以进一步指定由具有跟踪和注入逻辑的主机系统807创建的DUT的分区,将分区映射到仿真器的FPGA,以及设计约束。使用位文件,仿真器构造FPGA以执行DUT的功能。在一些实施例中,仿真器的一个或多个FPGA可以具有内置在FPGA的硅中的跟踪和注入逻辑。在这样的实施例中,FPGA可以不被主机系统构造以仿真跟踪和注入逻辑。
主机系统807接收将被仿真的DUT的描述。在一些实施例中,DUT描述用描述语言(例如,寄存器传输语言(RTL))。在一些实施例中,DUT描述用网表级文件或用网表级文件和HDL文件的混合。如果部分的DUT描述或者整个的DUT描述是用HDL的,则主机系统可以合成DUT描述以使用DUT描述创建门级网表。主机系统可以使用DUT的网表将DUT划分为多个分区,其中一个或多个分区包括跟踪和注入逻辑。跟踪和注入逻辑跟踪经由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。如果电路设计者请求查看在重新仿真期间跟踪到的信号的波形,则主机系统可以取回所存储的信号并且显示该信号的曲线图。例如,主机系统可以生成信号的波形。此后,电路设计者可以请求在不同的时间段内重新仿真相同的组件,或者请求重新仿真另一组件。
主机系统807和/或编译器810可以包括子系统,诸如但不限于,设计合成器子系统、映射子系统、运行时子系统、结果子系统、调试子系统、波形子系统,和存储子系统。子系统可以作为单个模块或多个模块被构造和启用,或者两个或更多个子系统可以被构造为一个模块。这些子系统共同构造仿真器并且监测仿真结果。
设计合成器子系统将表示DUT的HDL 805转换为门级逻辑。对于将要被仿真的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连接到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运行周期的一个子集,则仿真器可能需要几分钟以使FPGA共同地使用所有周期。
电路设计者可以标识要重新仿真的DUT信号的层级结构或列表。为了实现这一点,调试子系统确定需要用来仿真信号的层级结构或列表、取回必要的接口信号、并将所取回的接口信号传送到仿真器以进行重新仿真的FPGA。因此,电路设计者可以标识DUT的任何元件(例如,组件、设备或信号)以进行调试/重新仿真。
波形子系统使用跟踪的信号生成波形。如果电路设计者请求查看仿真运行期间所跟踪的信号的波形,则主机系统从存储子系统中取回该信号。波形子系统显示信号的曲线图。对于一个或多个信号,当从仿真器接收到信号时,波形子系统可以自动地生成信号的曲线图。
图17图示了计算机系统900的示例机器,在其中可以执行用于使该机器执行本文所讨论的方法中的任何一个或多个的指令集。在备选实现中,机器可以被连接(例如,联网)到在LAN、内联网、外联网和/或因特网中的其他机器。该机器可以在客户端-服务器网络环境中以服务器或客户端机器的容量运行,作为在对等(或分布式)网络环境中的对等机器,或者作为在云计算基础设施或环境中的服务器或客户端机器。
机器可以是个人计算机(PC)、平板个人计算机、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web装置、服务器、网络路由器、交换机或桥接器、或者能够执行指定由该机器所要采取的动作的指令集(顺序的或其他方式)的任何机器。此外,虽然说明了单个机器,但是术语“机器”也应被理解为包括机器的任何集合,这些机器单独地或共同地执行一组(或多组)指令以执行本文所讨论的任何一个或多个方法。
示例计算机系统900包括经由总线930彼此通信的处理设备902、主存储器904(例如,只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)的动态随机存取存储器(DRAM)、静态存储器906(例如,闪存、静态随机存取存储器(SRAM)等)、以及数据存储设备918。
处理设备902表示一个或多个处理器,诸如微处理器、中央过程单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或者是实现其他指令集的处理器、或者是实现指令集的组合的处理器。处理设备902还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备902可以被配置为执行指令926以用于执行本文所描述的操作和步骤。
计算机系统900还可以包括网络接口设备908,用以通过网络920进行通信。计算机系统900还可以包括视频显示单元910(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备912(例如,键盘)、光标控制设备914(例如鼠标)、图形处理单元922、信号生成设备916(例如扬声器)、图形处理单元922、视频处理单元928和音频处理单元932。
数据存储设备918可以包括机器可读存储介质924(也被称为非瞬态计算机可读介质),其上存储有体现本文所描述的方法或功能中的任何一个或多个的一组或多组指令926或软件。在由计算机系统900、主存储器904和也构成机器可读存储介质的处理设备902对指令926的执行期间,指令926还可以全部地或至少部分地驻留在主存储器904内和/或处理设备902内。
在一些实现中,指令926包括用于实现与本公开相对应的功能性的指令。尽管在示例实现中机器可读存储介质924被示为单个介质,但是术语“机器可读存储介质”应被认为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或关联的高速缓存和服务器)。术语“机器可读存储介质”也应被认为包括能够存储或编码指令集以供机器执行、并且使机器和处理设备902执行本公开的任何一个或多个方法的任何介质。术语“机器可读存储介质”应当相应地被认为包括但不限于固态存储器、光学介质和磁性介质。
前述详细描述的一些部分已经在计算机存储器内的数据位(data bit)上的操作的算法和符号表示方面被呈现。这些算法描述和表示是由数据处理领域中的技术人员使用以最有效地将他们的工作的实质传达给本领域其他技术人员的方式。算法可以是通向期望结果的一系列操作。这些操作是那些需要对物理量进行物理操纵的操作。这样的量可以采取能够被存储、组合、比较以及以其他方式被操纵的电信号或磁信号的形式。这样的信号可以被称为位、值、元素、符号、字符、项、数字等。
然而,应该记住,所有这些术语和类似的术语均应与适当的物理量相关联,并且所有这些术语和类似的术语仅仅是应用于这些量的方便的标签。除非从本公开中另外明确陈述,否则应当理解,在整个描述中,某些术语指代计算机系统或类似电子计算设备的动作和过程,该动作和过程将计算机系统的寄存器和存储器内的、被表示为物理(电子)量的数据操纵和转换为:计算机系统存储器或寄存器或其他这样的信息存储设备内的、类似地被表示为物理量的其他数据。
本公开还涉及用于执行本文中的操作的装置。该装置可以出于预期的目的而被专门地构造,或者其可以包括由被存储在计算机中的计算机程序选择性地激活或重新配置的计算机。这样的计算机程序可以被存储在计算机可读存储介质中,诸如但不限于,任何类型的磁盘,包括软盘、光盘、CD-ROM和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或者适用于存储电子指令的任何类型的介质,每个计算机可读存储介质都被耦合到计算机系统总线。
本文所提出的算法和显示不与任何特定的计算机或其他装置固有地相关。各种其他系统可以与根据本文的教导的程序一起使用,或者可以证明构造更专用的装置来执行该方法是方便的。另外,本公开没有参考任何特定的编程语言被描述。应当理解,如本文所描述的,可以使用各种编程语言来实现本公开的教导。
本公开可以被提供作为计算机程序产品或软件,其可以包括具有存储于其上的指令的机器可读介质,该指令可以被用于对计算机系统(或其他电子设备)进行编程以执行根据本公开的过程。机器可读介质包括用于以由机器(例如,计算机)可读的形式存储信息的任何机构。例如,机器可读(诸如,计算机可读)介质包括机器(诸如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、闪存设备等。
在前述公开中,已经参考本公开的具体示例实现描述了本公开的实现。明显的是,在不脱离在所附权利要求中的如前所述的本公开的更广泛的精神和实现的范围的情况下,可以对其进行各种修改。虽然本公开中以单数形式指代一些元件,但是在附图中可以描绘多于一个的元件,并且相同的元件用相同的数字标记。因此,本公开和附图应被认为是说明性的而不是限制性的。
Claims (20)
1.一种检测在硬件仿真系统中被仿真的电路设计中的第一序列元件和第二序列元件之间的时序违规的方法,所述方法包括:
确定分别应用于所述第一序列元件和所述第二序列元件的第一时钟与第二时钟之间的时序关系;
将设置在所述第一序列元件与所述第二序列元件之间的组合逻辑重新配置为一个或多个缓冲器;
基于所述时序关系,将跨所述一个或多个缓冲器的延迟设定为所述硬件仿真系统的一个或多个时钟周期;
根据所述延迟对所述第一时钟和所述第二时钟重新编程;以及
如果第一触发器的输出中的改变在所述延迟内未被存储在第二触发器中,则检测到时序违规。
2.根据权利要求1所述的方法,还包括:
如果所述第一时钟和所述第二时钟彼此不同步,并且所述第一时钟和所述第二时钟中的每个时钟的周期是至少一个仿真时钟周期,则将跨所述一个或多个缓冲器的延迟设定为所述硬件仿真系统时钟的一个周期;以及
如果所述第一时钟和所述第二时钟彼此同步,则将跨所述一个或多个缓冲器的延迟设定为所述硬件仿真系统时钟的两个周期。
3.根据权利要求2所述的方法,还包括:
如果所述第一时钟和所述第二时钟是独立的时钟,则将跨所述一个或多个缓冲器的延迟设定为所述硬件仿真系统时钟的一个周期;以及
如果所述第一时钟和所述第二时钟是同一时钟,则将跨所述一个或多个缓冲器的延迟设定为所述硬件仿真系统时钟的两个周期。
4.根据权利要求3所述的方法,还包括:
将跨所述一个或多个缓冲器的延迟设定为所述硬件仿真系统时钟的N个周期,其中N是根据所述硬件仿真系统时钟的周期数目定义的、所述第一时钟和所述第二时钟的周期,其中N是大于1的整数,其中所述第一时钟和所述第二时钟彼此同步。
5.根据权利要求4所述的方法,还包括:
对所述第一时钟和所述第二时钟二者重新编程,以使所述第一时钟和所述第二时钟二者都具有由所述延迟定义的周期。
6.根据权利要求5所述的方法,还包括:
对所述第一时钟和所述第二时钟二者重新编程,以使所述第一时钟和所述第二时钟具有同一模式,如果所述延迟被设定为所述硬件仿真系统时钟的M个周期,则该模式具有由所述硬件仿真系统时钟的K个周期定义的低相位以及由所述硬件仿真系统时钟的(M-K)个周期定义的高相位,其中M是大于1的整数,并且K是小于M的正整数。
7.根据权利要求6所述的方法,还包括:
使用回写操作来设定所述第一触发器的输出值和所述第二触发器的输出值;以及
使用回读操作来读取所述第二触发器的输出值。
8.根据权利要求7所述的方法,还包括:
将设置在所述第一触发器与所述第二触发器之间的第一查找表重新配置为一个或多个缓冲器。
9.根据权利要求8所述的方法,还包括:
将连接到所述第一触发器的数据输入端子的第二查找表重新配置为逻辑1或逻辑0。
10.根据权利要求8所述的方法,还包括:
如果所述第二查找表被配置为将数据提供给所述第一触发器的数据输入端子并从所述组合逻辑接收数据,则在所述第二查找表与所述第一触发器之间插入缓冲器。
11.根据权利要求1所述的方法,其中所述硬件仿真系统包括多个现场可编程门阵列(FPGA)。
12.根据权利要求11所述的方法,其中所述第一序列元件被设置在所述多个FPGA中的第一FPGA中,并且其中所述第二序列元件被设置在所述多个FPGA中的第二FPGA中。
13.一种非暂态计算机可读介质,包括所存储的指令,所述指令在被处理器执行时使所述处理器:
确定分别应用于第一序列元件和第二序列元件的第一时钟与第二时钟之间的时序关系;
将设置在所述第一序列元件与所述第二序列元件之间的组合逻辑重新配置为一个或多个缓冲器;
基于所述时序关系,将跨所述一个或多个缓冲器的延迟设定为硬件仿真系统的一个或多个时钟周期;
根据所述延迟对所述第一时钟和所述第二时钟重新编程;以及
如果第一触发器的输出中的改变在所述延迟内未被存储在第二触发器中,则检测到时序违规。
14.根据权利要求13所述的非暂态计算机可读介质,其中所述指令还使所述处理器:
如果所述第一时钟和所述第二时钟彼此不同步,并且所述第一时钟和所述第二时钟中的每个时钟的周期是至少一个仿真时钟周期,则将跨所述一个或多个缓冲器的延迟设定为所述硬件仿真系统时钟的一个周期;以及
如果所述第一时钟和所述第二时钟彼此同步,则将跨所述一个或多个缓冲器的延迟设定为所述硬件仿真系统时钟的两个周期。
15.根据权利要求14所述的非暂态计算机可读介质,其中所述指令还使所述处理器:
如果所述第一时钟和所述第二时钟是独立的时钟,则将跨所述一个或多个缓冲器的延迟设定为所述硬件仿真系统时钟的一个周期;以及
如果所述第一时钟和所述第二时钟是同一时钟,则将跨所述一个或多个缓冲器的延迟设定为所述硬件仿真系统时钟的两个周期。
16.根据权利要求15所述的非暂态计算机可读介质,其中所述指令还使所述处理器:
将跨所述一个或多个缓冲器的延迟设定为所述硬件仿真系统时钟的N个周期,其中N是根据所述硬件仿真系统时钟的周期数目定义的、所述第一时钟和所述第二时钟的周期,其中N是大于1的整数,其中所述第一时钟和所述第二时钟彼此同步。
17.根据权利要求16所述的非暂态计算机可读介质,其中所述指令还使所述处理器:
对所述第一时钟和所述第二时钟二者重新编程,以使所述第一时钟和所述第二时钟二者都具有由所述延迟定义的周期。
18.根据权利要求17所述的非暂态计算机可读介质,其中所述指令还使所述处理器:
对所述第一时钟和所述第二时钟二者重新编程,以使所述第一时钟和所述第二时钟具有同一模式,如果所述延迟被设定为所述硬件仿真系统时钟的M个周期,则该模式具有由所述硬件仿真系统时钟的K个周期定义的低相位以及由所述硬件仿真系统时钟的(M-K)个周期定义的高相位,其中M是大于1的整数,并且K是小于M的正整数。
19.根据权利要求18所述的非暂态计算机可读介质,其中所述指令还使所述处理器:
将设置在所述第一触发器与所述第二触发器之间的第一查找表重新配置为一个或多个缓冲器。
20.根据权利要求19所述的非暂态计算机可读介质,其中所述指令还使所述处理器:
将连接到所述第一触发器的数据输入端子的第二查找表重新配置为逻辑1或逻辑0。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062966822P | 2020-01-28 | 2020-01-28 | |
US62/966,822 | 2020-01-28 | ||
US17/159,056 US11386250B2 (en) | 2020-01-28 | 2021-01-26 | Detecting timing violations in emulation using field programmable gate array (FPGA) reprogramming |
US17/159,056 | 2021-01-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113255267A true CN113255267A (zh) | 2021-08-13 |
CN113255267B CN113255267B (zh) | 2024-04-16 |
Family
ID=76971060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110118247.3A Active CN113255267B (zh) | 2020-01-28 | 2021-01-28 | 使用现场可编程门阵列fpga重新编程检测仿真中的时序违规 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11386250B2 (zh) |
CN (1) | CN113255267B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116860181A (zh) * | 2023-09-01 | 2023-10-10 | 深圳比特微电子科技有限公司 | Sram阵列的数据选择装置、存储系统和系统级芯片 |
CN117151015A (zh) * | 2023-09-15 | 2023-12-01 | 上海合芯数字科技有限公司 | 集成电路布局布线方法、装置、集成电路芯片 |
CN117634385A (zh) * | 2022-08-24 | 2024-03-01 | 上海合见工业软件集团有限公司 | 在fpga上仿真ic设计的方法、系统及存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11386250B2 (en) * | 2020-01-28 | 2022-07-12 | Synopsys, Inc. | Detecting timing violations in emulation using field programmable gate array (FPGA) reprogramming |
CN117350208A (zh) * | 2022-06-22 | 2024-01-05 | 长鑫存储技术有限公司 | 时序逻辑元件性能检查方法及设备 |
CN117371363A (zh) * | 2022-06-30 | 2024-01-09 | 长鑫存储技术有限公司 | 数据处理电路的检查方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130222006A1 (en) * | 2010-09-14 | 2013-08-29 | Phoenix Contact Gmbh & Co. Kg | Apparatus for monitoring operating parameters of integrated circuits and integrated circuit with operating parameter monitoring |
US20150370672A1 (en) * | 2014-06-24 | 2015-12-24 | Lattice Semiconductor Corporation | Trigger detection for post configuration testing of programmable logic devices |
CN106533401A (zh) * | 2016-11-08 | 2017-03-22 | 合肥工业大学 | 一种基于fpga的同步分段延时链的dpwm模块 |
CN108630258A (zh) * | 2017-03-24 | 2018-10-09 | 联发科技股份有限公司 | 嵌入式存储器及集成电路 |
CN110018853A (zh) * | 2017-12-29 | 2019-07-16 | 美国莱迪思半导体公司 | 用于可编程逻辑器件的快速启动系统和方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060117274A1 (en) * | 1998-08-31 | 2006-06-01 | Tseng Ping-Sheng | Behavior processor system and method |
US7480606B2 (en) * | 1998-08-31 | 2009-01-20 | Versity Design, Inc. | VCD-on-demand system and method |
US9195784B2 (en) * | 1998-08-31 | 2015-11-24 | Cadence Design Systems, Inc. | Common shared memory in a verification system |
US6754763B2 (en) * | 2001-07-30 | 2004-06-22 | Axis Systems, Inc. | Multi-board connection system for use in electronic design automation |
US11386250B2 (en) * | 2020-01-28 | 2022-07-12 | Synopsys, Inc. | Detecting timing violations in emulation using field programmable gate array (FPGA) reprogramming |
-
2021
- 2021-01-26 US US17/159,056 patent/US11386250B2/en active Active
- 2021-01-28 CN CN202110118247.3A patent/CN113255267B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130222006A1 (en) * | 2010-09-14 | 2013-08-29 | Phoenix Contact Gmbh & Co. Kg | Apparatus for monitoring operating parameters of integrated circuits and integrated circuit with operating parameter monitoring |
US20150370672A1 (en) * | 2014-06-24 | 2015-12-24 | Lattice Semiconductor Corporation | Trigger detection for post configuration testing of programmable logic devices |
CN106533401A (zh) * | 2016-11-08 | 2017-03-22 | 合肥工业大学 | 一种基于fpga的同步分段延时链的dpwm模块 |
CN108630258A (zh) * | 2017-03-24 | 2018-10-09 | 联发科技股份有限公司 | 嵌入式存储器及集成电路 |
CN110018853A (zh) * | 2017-12-29 | 2019-07-16 | 美国莱迪思半导体公司 | 用于可编程逻辑器件的快速启动系统和方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117634385A (zh) * | 2022-08-24 | 2024-03-01 | 上海合见工业软件集团有限公司 | 在fpga上仿真ic设计的方法、系统及存储介质 |
CN116860181A (zh) * | 2023-09-01 | 2023-10-10 | 深圳比特微电子科技有限公司 | Sram阵列的数据选择装置、存储系统和系统级芯片 |
CN116860181B (zh) * | 2023-09-01 | 2024-02-02 | 深圳比特微电子科技有限公司 | Sram阵列的数据选择装置、存储系统和系统级芯片 |
CN117151015A (zh) * | 2023-09-15 | 2023-12-01 | 上海合芯数字科技有限公司 | 集成电路布局布线方法、装置、集成电路芯片 |
CN117151015B (zh) * | 2023-09-15 | 2024-03-15 | 上海合芯数字科技有限公司 | 集成电路布局布线方法、装置、集成电路芯片 |
Also Published As
Publication number | Publication date |
---|---|
US11386250B2 (en) | 2022-07-12 |
US20210232742A1 (en) | 2021-07-29 |
CN113255267B (zh) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113255267B (zh) | 使用现场可编程门阵列fpga重新编程检测仿真中的时序违规 | |
Navabi | Digital system test and testable design | |
US12015411B2 (en) | Testable time-to-digital converter | |
US11526641B2 (en) | Formal gated clock conversion for field programmable gate array (FPGA) synthesis | |
KR20040007463A (ko) | 로직 시뮬레이션을 이용하지 않는 복잡한 ic의 설계검증을 위한 방법 및 장치 | |
US11789077B2 (en) | Single-pass diagnosis for multiple chain defects | |
US20210374314A1 (en) | Engineering Change Order Scenario Compression by Applying Hybrid of Live and Static Timing Views | |
US20210312113A1 (en) | Method for finding equivalent classes of hard defects in stacked mosfet arrays | |
KR20030023465A (ko) | 에뮬레이션과 시뮬레이션을 혼용한 점진적 설계 검증을위한 설계검증 장치 및 이를 이용한 설계 검증 방법 | |
US11200127B2 (en) | Automated self-check of a closed loop emulation replay | |
US11023635B1 (en) | Sequence of frames generated by emulation and waveform reconstruction using the sequence of frames | |
Napoles et al. | Radiation environment emulation for VLSI designs: A low cost platform based on Xilinx FPGA's | |
US20240232485A1 (en) | Test point insertion in analog circuit design testing | |
US11403450B2 (en) | Convergence centric coverage for clock domain crossing (CDC) jitter in simulation | |
US20240028812A1 (en) | Waveform capture using multicycle path properties | |
US20230409788A1 (en) | Synchronizing distributed simulations of a circuit design | |
US20230244512A1 (en) | Fast waveform capture with low hardware footprint enabling full visibility | |
US20240111660A1 (en) | Managing high performance simulation representation of an emulation system | |
US11361135B2 (en) | Guiding sample size choice in analog defect or fault simulation | |
US12014205B2 (en) | Advanced register merging | |
US20220300690A1 (en) | Incremental compilation for fpga-based systems | |
US20230177244A1 (en) | Creation of reduced formal model for scalable system-on-chip (soc) level connectivity verification | |
US20230071521A1 (en) | Detecting simulation, emulation and prototyping issues using static analysis tools | |
Ivannikov | Different Approaches to Digital System Debugging | |
KR20240135845A (ko) | 낮은 하드웨어 풋프린트를 갖는 고속 파형 캡처 |
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 |