CN110383272A - 时钟树分析和优化的形式化方法 - Google Patents
时钟树分析和优化的形式化方法 Download PDFInfo
- Publication number
- CN110383272A CN110383272A CN201780071628.2A CN201780071628A CN110383272A CN 110383272 A CN110383272 A CN 110383272A CN 201780071628 A CN201780071628 A CN 201780071628A CN 110383272 A CN110383272 A CN 110383272A
- Authority
- CN
- China
- Prior art keywords
- signal
- clock
- clock signal
- transformation
- boolean function
- 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 title claims description 37
- 238000004458 analytical method Methods 0.000 title description 9
- 238000005457 optimization Methods 0.000 title description 8
- 238000013461 design Methods 0.000 claims abstract description 113
- 230000009466 transformation Effects 0.000 claims abstract description 111
- 238000006243 chemical reaction Methods 0.000 claims abstract description 82
- 238000012795 verification Methods 0.000 claims abstract description 13
- 230000007704 transition Effects 0.000 claims description 46
- 230000000630 rising effect Effects 0.000 claims description 34
- 230000008878 coupling Effects 0.000 claims description 5
- 238000010168 coupling process Methods 0.000 claims description 5
- 238000005859 coupling reaction Methods 0.000 claims description 5
- 239000004744 fabric Substances 0.000 claims description 3
- 230000006870 function Effects 0.000 description 83
- 101100113692 Caenorhabditis elegans clk-2 gene Proteins 0.000 description 24
- 230000007423 decrease Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 23
- 101100021997 Arabidopsis thaliana CYP97A3 gene Proteins 0.000 description 19
- 230000008859 change Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 12
- 238000003860 storage Methods 0.000 description 12
- 230000015654 memory Effects 0.000 description 11
- 238000012360 testing method Methods 0.000 description 11
- 101100003180 Colletotrichum lindemuthianum ATG1 gene Proteins 0.000 description 10
- 238000004891 communication Methods 0.000 description 10
- 238000004088 simulation Methods 0.000 description 10
- 238000009472 formulation Methods 0.000 description 9
- 239000000203 mixture Substances 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 230000005611 electricity Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000007480 spreading Effects 0.000 description 3
- 238000003892 spreading Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- -1 clk5>in Proteins 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012797 qualification Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 101100328957 Caenorhabditis elegans clk-1 gene Proteins 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- KRTSDMXIXPKRQR-AATRIKPKSA-N monocrotophos Chemical compound CNC(=O)\C=C(/C)OP(=O)(OC)OC KRTSDMXIXPKRQR-AATRIKPKSA-N 0.000 description 1
- 238000003012 network analysis Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 230000000007 visual effect Effects 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/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/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3323—Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
-
- 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
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)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
配置硬件验证系统包括接收表示第一集成电路设计的第一数据,其中所述第一集成电路设计配置为经由从第二时钟信号衍生的第一时钟信号和由第二时钟信号生成的第三信号来进行操作。计算机将第一数据转换为表示包括第一设计的功能的第二设计的第二数据。所述转换用第二时钟信号替换第一时钟信号。第一布尔函数由对应于处于与第一时钟信号的转变相同方向的第二时钟信号的第一转变的第三信号的第一和第二值限定。第二布尔函数由对应于处于与第一时钟信号的关联转变相反方向的第二时钟信号的第二转变的第三信号的第一和第二值限定。
Description
相关申请的交叉引用
本申请根据35U.S.C.§119(e)要求2016年9月20日递交的、发明名称为“时钟树分析和优化的形式化方法”的美国临时申请No.62/397,324的优先权,上述申请的全部内容通过引用整体并入本文。
技术领域
本公开总体涉及测试电路设计,并且更具体地涉及使用具有改进性能的可编程仿真工具来测试这种电路。
背景技术
集成电路(IC)设计者通常用硬件描述语言(HDL)(例如Verilog、超高速集成电路硬件描述语言(VHDL)、SystemC等)描述它们的设计。在IC设计中,硬件仿真可以指用另一硬件(例如专用仿真系统来)复制一个或多个硬件(例如电路设计,在下文中也指测试设计(DUT))的行为的过程。通常根据表示测试设计的HDL源代码生成仿真模型。仿真模型被编译成用于对可以包括一个或多个现场可编程门阵列(FPGA)的仿真系统进行编程的格式。因此,DUT由编译器映射到仿真器系统的FPGA中。运行已使用仿真模型编程的仿真系统可以对DUT进行调试和功能验证。仿真的总体过程通常由在仿真器硬件上生成的主时钟信号控制。
DUT,例如专门应用IC(ASIC),可以包括称为时钟树的复杂时钟结构,时钟树在下文中也称为“时钟锥”,其可以使用ASIC芯片中专用的低漂移(low-skew)信号路由资源,以防止ASIC的物理实现中的时钟漂移问题。相比之下,FPGA可以包括可用于将时钟树的部分映射到FPGA中的有限数量的低漂移信号路径。当映射过程期间FPGA中低漂移信号路径用完,仿真编译器已经在原始DUT中引入额外的锁存器以提供延迟,以避免FPGA中过多的时钟漂移引起的时序违规。然而,这样的额外的锁存器消耗更多的FPGA资源,这增加了实现DUT的仿真所需的FPGA的面积,这进而可能增加仿真器复杂性和/或降低仿真器系统的速度性能。
随着最近的技术进步,电路设计已经使用越来越复杂的时钟树。因此,当将DUT的复数时钟树有效地映射到硬件仿真系统时,需要减少FPGA中低漂移信号资源的使用,而不必引入额外的延迟电路。
发明内容
根据本发明的一个实施例,提出了一种用于配置硬件验证系统的计算机实现的方法。所述方法包括:当调用计算机来配置验证系统时,由计算机接收表示集成电路的第一设计的第一数据,所述集成电路配置为由从第二时钟信号衍生的第一时钟信号和依照第二时钟信号生成的第三信号操作。所述方法进一步包括:使用所述计算机将所述第一数据转换为表示包括所述第一设计的功能的第二设计的第二数据。所述转换依照以下特征将第一时钟信号替换为第二时钟信号。第一布尔函数由对应于处于与第一时钟信号的关联转变相同方向的第二时钟信号的第一转变的第三信号的第一和第二值限定。第二布尔函数由对应于处于与第一时钟信号的关联转变的方向相反的方向的第二时钟信号的第二转变的第三信号的第一和第二值限定。约束限定第三信号的第一和第二值。存在第一和第二布尔函数的布尔可满足性。
根据一个实施例,通过以下特征在第一设计中进一步限定第一布尔函数。第二时钟信号的第一转变由第一方向表征。第一时钟信号的关联转变由所述第一方向表征。第三信号的第一值在第二时钟信号的第一转变之前限定。第三信号的第二值在第二时钟信号的第一转变之后限定。
根据一个实施例,通过以下特征在第一设计中进一步限定第二布尔函数。第二时钟信号的第二转变由第一方向表征。第一时钟信号的关联转变由与所述第一方向不同的第二方向表征。第三信号的第一值在第二时钟信号的第一转变之前限定。第三信号的第二值在第二时钟信号的第一转变之后限定。
根据一个实施例,所述布尔可满足性还包括确定所述第一布尔函数是可满足的并且所述第二布尔函数是不可满足的。根据一个实施例,所述布尔可满足性还包括确定所述第一布尔函数是不可满足的并且所述第二布尔函数是可满足的。
根据一个实施例,所述第一设计进一步包括配置为依照第一信号进行时钟控制的第一时序元件。所述第一信号是从第二信号和第三信号衍生的。所述第三信号由配置为依照所述第二信号进行时钟控制的第二时序元件生成。
根据一个实施例,所述转换还包括将在第一设计中配置为依照第一信号进行时钟控制的第一时序元件替换为第二时序元件,在第二设计中所述第二时序元件配置为:依照第二时钟信号的上升转变进行时钟控制,和在确定第一布尔函数是可满足的并且第二布尔函数是不可满足的之后,依照实现第一布尔函数的组合电路而启用。根据一个实施例,在所述第二设计中所述第二时序元件进一步配置为在确定第一布尔函数是不可满足的并且第二布尔函数是可满足的之后,依照实现第一布尔函数的组合电路而启用。根据一个实施例,所述第二时序元件是触发器。所述转换进一步包括:将第二信号耦合到所述触发器的时钟输入端子;和将组合电路的输出耦合到触发器的使能输入端子。
根据一个实施例,所述转换进一步包括将在第一设计中配置为依照第一信号进行时钟控制的第一时序元件替换为第二时序元件,在第二设计中所述第二时序元件配置为:依照第二时钟信号的上升转变进行时钟控制。在第二设计中所述第二时序元件进一步配置为:在确定第一布尔函数是不可满足的并且第二布尔函数是可满足的之后,依照实现第二布尔函数的组合电路而启用。
根据本发明的一个实施例,提出了一种用于配置硬件验证系统的系统。所述系统配置为:当调用计算机来配置验证系统时,接收表示集成电路的第一设计的第一数据,所述集成电路配置为由从第二时钟信号衍生的第一时钟信号和依照第二时钟信号生成的第三信号操作。所述系统还配置为:将所述第一数据转换为表示包括所述第一设计的功能的第二设计的第二数据。所述转换依照以下特征将第一信号替换为第二信号。第一布尔函数由对应于处于与第一时钟信号的关联转变相同方向的第二时钟信号的第一转变的第三信号的第一和第二值限定。第二布尔函数由对应于处于与第一时钟信号的关联转变的方向相反的方向的第二时钟信号的转变的第三信号的第一和第二值限定。约束限定第三信号的第一和第二值。存在第一和第二布尔函数的布尔可满足性。
根据一个实施例,所述转换还包括将在第一设计中配置为依照第一信号进行时钟控制的第一时序元件替换为第二时序元件,在第二设计中所述第二时序元件配置为:依照第二时钟信号的上升转变进行时钟控制;和在确定第一布尔函数是可满足的并且第二布尔函数是不可满足的之后,依照实现第一布尔函数的组合电路而启用。
根据一个实施例,所述第二时序元件是触发器。所述转换进一步配置为:将第二信号耦合到所述触发器的时钟输入端子;和将组合电路的输出耦合到触发器的使能输入端子。
根据一个实施例,所述转换进一步包括将在第一设计中配置为依照第一信号进行时钟控制的第一时序元件替换为第二时序元件,在第二设计中所述第二时序元件配置为依照第二时钟信号的上升转变进行时钟控制。所述第二时序元件进一步配置为在确定第一布尔函数是不可满足的并且第二布尔函数是可满足的之后,依照实现第二布尔函数的组合电路而启用。
参考以下详细描述和附图,可以更好地理解本发明实施例的本质和优点。
附图说明
图1描绘了根据本发明一个实施例的硬件仿真或原型系统的示例性高级框图。
图2A描绘了表示可以由本发明的实施例使用的转换前的图1中描绘的初始设计的电路部分的示例性示意图的数据。
图2B描绘了根据本发明的一个实施例的表示包括图2A中描绘的电路部分的功能的转换设计的电路部分的示例性示意图的数据。
图3描绘了根据本发明的一个实施例的用于转换图2A中描绘的初始设计的电路部分和用于配置图1中描绘的硬件仿真或原型系统的简单示例性流程图。
图4描绘了根据本发明的一个实施例的用于转换图3中描绘的初始数据的步骤的简单示例性流程图。
图5描绘了根据本发明的一个实施例的表示第一示例性时钟衍生图(CDG)的数据。
图6描绘了根据本发明的一个实施例的表示与图2A中描绘的初始设计的电路部分200A相关联的第二示例性CDG的数据。
图7描绘了根据本发明的一个实施例的表示可以在构建图4中描绘的约束公式的步骤中使用的广义衍生时钟例程的示例性示意图的数据。
图8A描绘了根据本发明的一个实施例的与图7中描绘的广义衍生时钟例程的示意图相关联的第一转变情况。
图8B描绘了根据本发明的一个实施例的与图7中描绘的广义衍生时钟例程的示意图相关联的第二转变情况。
图8C描绘了根据本发明的一个实施例的与图7中描绘的广义衍生时钟例程的示意图相关联的第三转变情况。
图8D描绘了根据本发明的一个实施例的与图7中描绘的广义衍生时钟例程的示意图相关联的第四转变情况。
图9描绘了根据本发明的一个实施例的用于构建图4中描绘的约束公式的步骤的简单示例性流程图。
图10描绘了根据本发明的一个实施例的表示在图4中描绘的CDG合并步骤之后,与图2B中描绘的电路部分200B相关联的示例性合并CDG的数据。
图11描绘了根据本发明的一个实施例的表示广义电路转换的示例性示意图的数据,其中,当驱动图7中所描绘的信号e的时序电路由上升时钟转变进行时钟控制时,所述广义电路转换可以用在图4中所描绘的转换连接和网络的步骤中。
图12描绘了根据本发明的一个实施例的表示广义电路转换的示例性示意图的数据,其中,当驱动图7中所描绘的信号e的时序电路由下降时钟转变进行时钟控制时,所述广义电路转换可以用在图4中所描绘的转换连接和网络的步骤中。
图13描绘了根据本发明的一个实施例的表示在图4中描绘的并与图2A中所描绘的电路部分200A相关联的转换445连接和网络的步骤之后,转换电路部分1300的示例性示意图的数据。
图14示出了可以结合本发明的实施例的计算机系统的示例框图。
具体实施方式
术语“可编程设备”在本文中用于指代被设计为在制造之后配置和/或重新配置的集成电路。可编程设备可以包括可编程处理器,例如现场可编程门阵列(FPGA)、可配置硬件逻辑(CHL)和/或任何其它类型的可编程设备。通常使用计算机代码或数据来指定可编程设备的配置,其中,所述计算机代码或数据为诸如硬件描述语言(HDL),例如Verilog,VHDL等。可编程设备可以包括可编程逻辑块阵列和允许可编程逻辑块根据HDL代码中的描述彼此耦合的可重新配置互连的层次结构。可编程逻辑块中的每一个均可以配置为执行复杂的组合功能,或者仅仅是简单的逻辑门,例如AND和XOR逻辑块。在大多数FPGA中,逻辑块还包括存储器元件,其可以是简单的锁存器、触发器(flip-flop),下文中也称为“触发器(flop)”,或更复杂的存储器块。根据不同逻辑块之间互连的长度,信号可以在不同时间到达逻辑块的输入端子。
硬件仿真和/或原型系统可以使用一个或多个可编程设备。图1是根据本发明的一个实施例的硬件验证系统100的示例性高级框图。硬件验证系统100可用于验证、测试或调试电路设计。硬件验证系统100可以包括:硬件仿真器和/或原型系统102,在下文中也称为硬件验证系统;以及参考图8描述的计算机系统800。如图1中所示,硬件仿真器和/或原型系统102可以耦合到可以包括编译器103模块的计算机系统800,编译器103模块可以接收表示测试初始电路设计101的硬件描述语言代码,其中测试初始电路设计101在下文中也称为“测试设计”、“电路设计”或“初始设计”。
编译器103可以包括多个可以包括或可以不包括专用编译器模块的各种软件模块,然而出于本说明的目的,可以简称为“编译器”。编译器103可以转换、改变、重新配置测试设计101、添加新功能至测试设计101和/或控制其定时,这有助于测试设计101的验证、仿真或原型设计。此外,编译器103可以将表示测试设计101的代码或数据以及任何相关联的变化编译成用于对设置在硬件仿真器和/或原型系统102中的硬件基元进行编程的二进制图像。因此,可以最终由集成电路芯片中的硬件实现的测试设计101(下文中也称为“电路设计”)的逻辑功能和定时可以反而首先在硬件仿真器和/或原型系统102中实现。除了别的优点之外,可以以比仅通过软件验证高得多的速度来完成硬件中设计的验证。
硬件仿真器和/或原型系统102可以包括:多个可编程处理器,例如FPGA 1041至104N;以及其它块(未示出),例如存储器、输入/输出设备、其它处理器等。硬件仿真和/或原型系统接收电路设计,并对可编程处理器进行编程以验证电路设计的行为。硬件仿真器和/或原型系统102可以包括主要或主控系统时钟,从该主要或主控系统时钟可以生成许多其它时钟信号。
可编程处理器FPGA 1041至104N可以放入一个或多个硬件板1121至112M。可以将多个这样的板放入硬件单元,例如1141中。可以使用单元的背板或任何其它类型的连接来连接单元内的板。另外,多个硬件单元(例如,1141到114K)可以通过线缆或任何其它装置彼此连接以形成多单元系统。通常,硬件仿真器或原型系统102可以在不脱离本公开的教导的情况下由单个板、具有多个板的单个单元、或多个单元制成。
当初始设计101表示ASIC或其它复杂IC时,时钟漂移可能是个问题,因为在初始设计101中找到比硬件仿真器或原型系统102中可用的低漂移互连路径的数量大的数量的衍生时钟是常见的。根据本发明的实施例,提出了一种形式化技术用于初始设计101的时钟分析和优化,在下文中也称为“转换”,所述“转换”利用电路约束,其固有地存在于电路中或者由用户明确指定。初始设计101可以包括隐藏的约束,使得某些逻辑值永远不会出现在某些信号上。
此外,转换在转换设计中保留未转换的初始设计101的功能,同时根据约束减少转换设计中的衍生时钟的数量。在将转换的电路设计映射或编程到硬件仿真器或原型系统102之前,使用编译器103完成转换。因此,该转换可以减少将初始设计101映射到硬件仿真器或原型系统102所需的低漂移高速互连资源的数量。
减少硬件仿真器或原型系统102中的衍生时钟的数量使得编译器103能够将FPGA104上的低漂移高速路由资源分配给转换设计中的剩余主时钟信号,而不是增加消耗额外的FPGA资源并且可减慢硬件仿真器或原型系统102的运行的延迟电路。因此,用于ASIC或其它复杂IC设计的基于FPGA的仿真可以更快地运行,同时更有效地利用FPGA资源。
转换可以通过将衍生时钟逻辑从时序元件(诸如触发器(FD)、锁存器(LD)和/或块随机存取存储器(BRAM))的时钟(CK)引脚移动到时序元件的芯片使能(CE)和/或门使能(GE)引脚来减少时钟信号的数量并使用主时钟而不是使用在转换设计中被去掉的衍生时钟来驱动时序元件。衍生时钟可以包括特征为从主时钟衍生的门控时钟、生成时钟等。在这种情况下,门控时钟可以指代由主时钟驱动的组合电路产生的衍生时钟,并且生成时钟可以指代由主时钟驱动的时序电路产生的衍生时钟。
图2A描绘了表示可以由本发明的实施例使用的转换前的图1中描绘的初始设计101的电路部分200A的示例性示意图的数据。初始设计101的电路部分200A包括触发器FDE205、触发器FD_1 210、逻辑“与”门220和触发器FD 245。触发器FDE 205由时钟信号clk 240的正向转变进行时钟控制。当触发器FDE 205的CE信号输入的值为逻辑高或“1”,在时钟信号clk240的正向转变时,触发器FDE 205的Q输出依照存在于触发器FDE 205的D输入信号上的逻辑值驱动信号e1 225。在时钟信号clk 240的负向转变时,触发器FD_1 210的Q输出依照存在于触发器FD_1 210的D输入信号上的逻辑值驱动信号e2 230。
“与”门220接收三个输入,即时钟信号clk 240、信号e1 225和信号e2 230。“与”门220依照代表存在于时钟信号clk 240、信号e1 225和信号e2 230上的逻辑值的逻辑“与”功能的逻辑值来驱动衍生时钟信号gclk 250。在衍生时钟信号gclk 250的正向转变时,触发器FD 245的Q输出依照存在于触发器FD 245的D输入信号上的逻辑值驱动信号Q 252。
触发器FDE 205、触发器FD_1 210、逻辑“与”门220、时钟信号clk240、信号e1 225、信号e2 230和衍生时钟信号gclk 250可以形成初始设计101的时钟树的一部分,时钟树在下文中也是被称为“时钟锥”。时钟信号通常可以表征为主时钟和从主时钟衍生的衍生时钟。衍生时钟信号gclk 250可以被表征为衍生时钟信号,其部分地从可以被表征为主时钟信号的时钟信号clk240衍生。
图2B描绘了根据本发明的一个实施例的表示包括图2A中描绘的电路部分的功能的转换设计的电路部分200B的示例性示意图的数据。同时参考图2A和2B,除以下内容之外,电路部分200B包括与初始设计101的电路部分200A相同的元件和功能。期望在将表示初始设计101的数据编程到硬件仿真器和/或原型系统102中之前转换初始设计101的电路部分200A,以便消除衍生时钟信号,即衍生时钟信号gclk 250,从而减少初始设计101中衍生时钟信号的数量。
转换设计的电路部分200B包括查找表(LUT)LUT3 260和触发器FDE 270。转换包括用在转换设计中包括CE信号输入280的触发器FDE 270替换在未转换初始设计101中不包括CE信号输入的触发器FD 245。在另一个实施例中,如果在初始设计101中接收衍生时钟的触发器已经包括CE信号输入,则转换可以不需要在转换期间替换该触发器。
转换进一步包括在初始设计101中将信号e1 225与逻辑“与”门220的输入断开,而将信号e1 225从触发器FDE 205的Q输出连接到查找表LUT3260的I2输入。转换进一步包括将触发器FDE 205的D和CE信号输入连接到查找表LUT3 260的相应的I1和I0输入。在转换电路中,查找表LUT3 260的输出O驱动信号227,这继而驱动逻辑“与”门220的一个输入,并且时钟信号clk 240已与逻辑“与”门220的输入断开。下面将更详细地描述查找表LUT3 260的功能和保留了电路部分200A的逻辑功能的电路部分200B的功能。
因此,生成例如衍生时钟信号gclk 250的衍生时钟信号的电路部分200A的衍生时钟逻辑电路从例如触发器FD 245的时序电路的时钟引脚移动到使能引脚,例如,触发器FDE270的CE信号输入。在主时钟的正向转变时,触发器FDE 270的Q输出依照触发器FDE 270的D输入信号上存在的逻辑值来驱动信号Q 253。因此,电路部分200A中信号Q 252的功能保留于电路部分200B中的信号Q 253。因此,转换设计的电路部分200B减少了硬件仿真器和/或原型系统102的FPGA 104中所需的低漂移型互连资源的数量。
图3描绘了根据本发明的一个实施例的用于转换图2A中描绘的初始设计101的电路部分200A和用于配置图1中描绘的硬件仿真器或原型系统102的简单示例性流程图300。同时参考图1、2A-2B和3,转换将衍生时钟信号,例如衍生时钟信号gclk 250替换为主时钟信号,例如时钟信号clk240。流程图300包括:当调用计算机来配置验证系统(例如,硬件仿真器和/或原型系统102)时,由计算机1400来接收305初始数据(例如电路部分200A),其中所述初始数据表示配置为由从直接支配类型的主时钟信号(例如,时钟信号clk 240)衍生的衍生时钟信号(例如,衍生时钟信号gclk 250)和依照直接支配时钟信号(例如,时钟信号clk 240)生成的至少一个组合电路输入信号(例如,信号e1 225,信号e2 230)操作的初始设计101。直接支配时钟信号是一种主时钟信号,下面将更详细地描述。
然后,编译器103合成310EDIF(电子设计交换格式(Electronic DesignInterchange Format))网表以准备根据硬件仿真器或原型系统102的FPGA 104硬件约束对初始设计101进行分区。通常情况下,如果表示初始设计101的数据太多而无法映射到单个FPGA 104的硬件中,则可能需要分区。
然后,编译器103将表示初始设计101的初始数据(例如,电路部分200A)转换315为表示包括初始设计101的功能的转换设计的转换数据(例如电路部分200B),使得转换将例如衍生时钟信号gclk 250的衍生时钟信号替换为例如时钟信号clk 240的直接支配时钟信号。
图4描绘了根据本发明的一个实施例的用于转换图3中描绘的初始数据的步骤的简单示例性流程图315。编译器103从初始设计101的时钟锥构建405或构造时钟衍生图(CDG)。检测并中断CDG中的潜在环路,使得构建的CDG无环路。
图5描绘了根据本发明的一个实施例的表示第一示例性时钟衍生图(CDG)500的数据。CDG与复杂的时钟锥一起用于识别作为直接支配时钟信号的主时钟。对于假设的时钟锥,CDG 500包括分别与多个时钟clk1,clk2,clk3,clk4,clk5相关联的多个顶点510,520,530,540,550。CDG 500还包括分别表示多个相关时钟对<clk1,clk2>,<clk2,clk3>,<clk2,clk4>,<clk3,clk5>,<clk4,clk5>之间的关系的多个边515,523,527,535,545。多个边515,523,527,535,545中的每一个边上的箭头从与第一时钟相关联的顶点指向与根据每个时钟对的第一时钟驱动的第二时钟相关联的顶点。例如,边523与顶点(520,530)相关联,顶点(520,530)分别与时钟对<clk2,clk3>相关联,其中clk3是从clk2衍生的。
Clk1可以被表征为时钟树的根时钟,并且还被表征为主时钟。Clk2可以表征为支配时钟信号类型的主时钟信号,因为从与根时钟clk1相关联的顶点510沿着多个边的每个路径必须通过与Clk2相关联的顶点520。例如,CDG 500指示:clk3和clk4不是clk5的支配时钟信号,因为与clk3相关联的顶点530具有从顶点510到顶点550的一条路径,而与clk4相关联的顶点540具有从顶点510到顶点550的另一条路径。但是,clk1和clk2都是clk5的支配时钟信号。可以选择除根时钟clk1之外的任何时钟信号作为具有相关联的支配时钟信号的衍生时钟。
对于任何时钟对<直接支配时钟,衍生时钟>,当CDG中与该支配时钟信号相关联的顶点最接近于与所选衍生时钟信号相关联的顶点时,支配时钟信号可被表征为直接支配时钟信号。例如,如果选择clk5作为衍生时钟,则与clk2相关联的顶点520比与clk1相关联的顶点510更接近与clk5相关联的顶点550。因此,在时钟对<clk2,clk5>中,clk2被表征为所选衍生clk5的直接支配时钟信号。类似地,在时钟对<clk2,clk3>中,如果选择衍生clk3,则clk2被表征为所选衍生clk3的直接支配时钟信号。
注意,任何时钟对<直接支配时钟,衍生时钟>的直接支配时钟也可以是不同时钟对的衍生时钟。例如,时钟对<clk2,clk5>的直接支配时钟是clk2,clk2也可以是不同时钟对<clk1,clk2>的衍生时钟,因为clk2是从clk1衍生的。换句话说,当在时钟对<clk1,clk2>中选择clk2作为衍生时钟时,clk1可以被表征为所选衍生clk2的直接支配时钟信号,然而,对于不同时钟对<clk2,clk5>,clk2也可以被表征为直接支配时钟信号。
图6描绘了根据本发明的一个实施例的表示与图2A中描绘的初始设计的电路部分200A相关联的第二示例性CDG 600的数据。同时参考图2A和6,CDG 600包括分别与电路部分200A的多个时钟clk,e1,e2,gclk相关联的多个顶点605,610,620,630。CDG 600还包括分别表示多个相关联的时钟对<clk,e1>,<clk,e2>,<clk,gclk>,<e1,gclk>,<e2,gclk>之间的关系的多个边607,613,617,623,627。多个边607,613,617,623,627中的每一个边上的箭头从与每个时钟对的第一时钟相关联的顶点指向与根据第一时钟驱动的第二时钟相关联的顶点。当衍生时钟信号gclk 250被选择作为衍生时钟时,时钟信号clk 240是衍生时钟信号gclk 250的直接支配时钟信号。
同时参考图4、5和6,可以理解,CDG 600可以仅与可比CDG 600复杂得多并且可能包括比CDG 600多得多的顶点和边的初始设计101的整个时钟锥的一小部分相关联。当编译器103从初始设计101的时钟锥构建405时钟衍生图(CDG)时,构建了初始设计101的整个时钟锥,其可包括与电路部分200A相关联的CDG 600。
然后,编译器103使用上述关于初始设计101的整个CDG的直接支配定义和分析来确定410多个时钟对,以找到每个时钟对都包括<直接支配时钟,衍生时钟>的多个时钟对。用于转换初始数据的步骤的示例性流程图315的以下步骤作为多个并行处理步骤412A、412B至412i完成,其中i表示多个时钟对<直接支配时钟,衍生时钟>的时钟对的总数。换句话说,对于多个时钟对<直接支配时钟,衍生时钟>中的每一个,完成并行处理步骤412A、412B至412i。并行处理步骤412A可以包括构建415多个时钟对中所选的一个时钟对的约束公式,其中,多个时钟对中所选的一个时钟对为例如对于相应的时钟对<时钟信号clk 240,衍生时钟信号gclk 250>或<直接支配时钟信号clk 740,衍生时钟信号gclk 750>所选择的<直接支配时钟,衍生时钟>,其可以选择为用于下面将描述的并行处理步骤412A相关联的实施例。
图7描绘了根据本发明的一个实施例的表示可以在构建415图4中描绘的约束公式的步骤中使用的广义衍生时钟例程700的示例性示意图的数据。广义衍生时钟例程700可以包括多个时序电路705,710至715,以及其生成对时序电路745进行时钟控制的衍生时钟信号gclk 750的组合电路函数F 720。多个时序电路705,710至715可以由直接支配时钟信号clk 740进行时钟控制,并且可以生成相应的输出信号e1 725,e2 730至en 735,其中n表示与所选时钟对相关联的时钟树的所选部分中的多个时序电路705,710至715的数量。
输出信号e1 725,e2 730至en 735和直接支配时钟信号clk 740是组合电路函数F720的输入。设F为由组合电路函数F 720表示的组合布尔函数,并且给定所选时钟对<直接支配时钟,衍生时钟>由<clk,gclk>表示;则
方程1)F(clk,e1,e2,…,en)=gclk。
在一个实施例中,多个时序电路705,710至715可以均是触发器。在一个实施例中,时序电路745可以是触发器。在一个实施例中,时序电路745可以由衍生时钟信号gclk 750的上升或正转变来进行时钟控制。在一个实施例中,至少一个时序电路705可以由直接支配时钟信号clk 740的下降或负转变来进行时钟控制。在一个实施例中,至少一个时序电路710,715可以是由直接支配时钟信号clk 740的上升或正转变进行时钟控制的触发器。
尽管已经通过示例的方式参考为多个时序电路705,710至715和时序电路745中的每一个进行时钟控制的时钟转变的示例性极性描述了本发明,但是应该理解,本发明不受时钟转变极性的限制。在这种情况下,“时钟控制”时序电路意思是:当到时序电路的所有使能信号允许评估时,时钟信号的值从逻辑“1”=“高”到逻辑“0”=“低”的负或下降转变或从逻辑“0”到逻辑“1”的正或上升转变导致时序电路被评估或切换。下面将更详细地分析和描述时钟转变的极性的影响。
在一个实施例中,多个时序电路705,710至715可以不是每个都由相同的直接支配时钟信号clk 740进行时钟控制。在一个实施例中,多个时序电路705,710至715中的一个可以由例如使用时钟分频电路而从直接支配时钟信号clk 740分频的时钟信号驱动。在一个实施例中,多个时序电路705,710至715中的一个可以从相同的直接支配时钟信号clk 740衍生。然而,多个时序电路705,710至715中的每一个可以不从另一个独立时钟信号驱动。换句话说,在F中应该只有一个最快的直接支配者时钟信号clk。此外,如果在函数F中没有使用clk,则gclk可以是生成时钟。
在时序电路745将输入驱动到函数F从而在CDG中创建反馈回路的一个实施例中,可以在CDG转换初始设计101中使用回路中断以便去除回路。在一个实施例中,CDG中的反馈回路内的时钟信号可以不被转换。
直接支配时钟信号clk 740可以是与所选时钟对<clk,gclk>相关联的时钟锥的部分中的最快时钟。时钟锥的该部分中的任何活动可由直接支配时钟信号clk 740的上升转变或下降转变触发。存在到所有输出信号e1,e2,e3,…,en的分配,在此情况下,直接支配时钟信号clk 740的转变方向,例如上升转变和下降转变可导致衍生时钟信号gclk 750的上升转变或下降转变。注意,输出信号e1,e2,e3,…,en也可会由于直接支配时钟信号clk 740的转变方向而改变。在一个实施例中,输出信号e1,e2,e3,…,en也可以由不是直接支配时钟信号clk 740的时钟信号驱动,例如,由从直接支配时钟信号clk740分频的时钟信号驱动。然后,可以递归地包括驱动输出信号e1,e2,e3,…,en的时钟信号和直接支配时钟信号之间的关系。
为了表征分配,让输出信号e1 -,e2 -,e3 -,…,en -指代在直接支配时钟信号clk 740的转变或增减之前,输出信号e1,e2,e3,…,en的关联值。为了进一步表征分配,让输出信号e1 +,e2 +,e3 +,…,en +指代在直接支配时钟信号clk 740的转变或增减之后,输出信号e1,e2,e3,…,en的关联值。输出信号e1 -,e2 -,e3 -,…,en -,e1 +,e2 +,e3 +,…,en +的值之间的约束可以表征为转变关系TR。
转变关系TR主要约束e-,e+和直接支配时钟信号clk 740的关系。此外,设直接支配时钟信号clk 740的转变或增减之前的直接支配时钟信号clk 740的值为clk-,并且直接支配时钟信号clk 740的转变或增减之后的直接支配时钟信号clk 740的值为clk+。例如,当使用直接支配时钟信号clk 740的正或上升转变对诸如触发器FD的时序电路710进行时钟控制时,存在直接支配时钟信号clk 740的例如负或下降转变的非活动转变时的约束的描述可以形式化地写为;
方程2)(clk-=1)∧(clk+=0)→(e-=e+)。
对于另一个约束示例,没有直接支配时钟信号clk 740的转变时的约束的描述可以被形式化地写为;
方程3)(clk-=clk+)→(e-=e+)。
注意,如果多个时序电路705,710至715中的一个不是由直接支配时钟信号clk740直接驱动,则相应的“e”变量可用于替换“clk”变量。由于直接支配时钟信号clk 740可具有上升转变或下降转变,因此存在两个相应的转变关系TR↑和TR↓。
图8A描绘了根据本发明的一个实施例的与图7中描绘的广义衍生时钟例程700的示意图相关联的第一转变情况801。同时参考图8A和7,第一转变情况801由衍生807衍生时钟信号gclk 750的上升或正转变810的直接支配时钟信号clk 740的上升或正转变805来表征。对于第一转变情况801,可以通过将转变之前和之后与clk和gclk相关联的值代入方程1中来形式化地写约束关系得到布尔函数;
方程4)(F(0,e1 -,e2 -,e3 -,…,en -)=0)∧
(F(1,e1 +,e2 +,e3 +,…,en +)=1)∧
TR↑(e1 -,e2 -,e3 -,…,en -,e1 +,e2 +,e3 +,…,en +)。
图8B描绘了根据本发明的一个实施例的与图7中描绘的广义衍生时钟例程700的示意图相关联的第二转变情况802。同时参考图8B和7,第二转变情况802由衍生817衍生时钟信号gclk 750的上升或正转变820的直接支配时钟信号clk 740的下降或负转变815来表征。对于第二转变情况802,可以通过将转变之前和之后与clk和gclk相关联的值代入方程1中来形式化地写约束关系得到布尔函数;
方程5)(F(1,e1 -,e2 -,e3 -,…,en -)=0)∧
F(0,e1 +,e2 +,e3 +,…,en +)=1)∧
TR↓(e1 -,e2 -,e3 -,…,en -,e1 +,e2 +,e3 +,…,en +)。
图8C描绘了根据本发明的一个实施例的与图7中描绘的广义衍生时钟例程的示意图相关联的第三转变情况803。同时参考图8C和7,第三转变情况803由衍生827衍生时钟信号gclk 750的下降或负转变830的直接支配时钟信号clk 740的上升或正转变825来表征。对于第三转变情况803,可以通过将转变之前和之后与clk和gclk相关联的值代入方程1中来形式化地写约束关系得到布尔函数;
方程6)(F(0,e1 -,e2 -,e3 -,…,en -)=1)∧
(F(1,e1 +,e2 +,e3 +,…,en +)=0)∧
TR↑(e1 -,e2 -,e3 -,…,en -,e1 +,e2 +,e3 +,…,en +)。
图8D描绘了根据本发明的一个实施例的与图7中描绘的广义衍生时钟例程的示意图相关联的第四转变情况804。同时参考图8D和7所示,第四转变情况804由衍生837衍生时钟信号gclk 750的下降或负转变840的直接支配时钟信号clk 740的下降或负转变835来表征。对于第四转变情况804,可以通过将转变之前和之后与clk和gclk相关联的值代入方程1中来形式化地写约束关系得到布尔函数;
方程7)(F(1,e1 -,e2 -,e3 -,…,en -)=1)∧
(F(0,e1 +,e2 +,e3 +,…,en +)=0)∧
TR↓(e1 -,e2 -,e3 -,…,en -,e1 +,e2 +,e3 +,…,en +)。
同时参考图2A,图7和图8A-8B,可以理解,电路部分200A的触发器FDE 205,触发器FD_1 210,逻辑“与”门220和触发器FD 245可以分别与广义衍生时钟例程700的时序电路705,时序电路710,组合电路函数F720以及时序电路745相关联。此外,应当理解,电路部分200A的信号e1225,信号e2 230,时钟信号clk 240和衍生时钟信号gclk 250可以分别与信号e2 730,信号e1 725,直接支配时钟信号clk 740和衍生时钟信号gclk 750相关联。因此,对于电路部分200A,信号e1 225,信号e2 230,时钟信号clk240和衍生时钟信号gclk 250可以代入方程1,以生成由以下方程表示的组合布尔函数;
方程8)clk&e1&e2=gclk
图9描绘了根据本发明的一个实施例的用于构建图4中描绘的约束公式的步骤的简单示例性流程图415。同时参考图7,8A-8D和9,用于构建约束公式的步骤的流程图415包括构建905部分地由对应于与衍生时钟信号gclk 750的关联转变处于相同方向的直接支配时钟信号clk 740的转变的组合电路函数F 720输入信号的e-和e+值限定的布尔函数。在一个实施例中,取决于时序电路745是使用衍生时钟信号gclk 750的上升转变还是下降转变而被相应地进行时钟控制,该布尔函数可以包括上面描述的针对转变情况801或转变情况804的布尔函数。
同时参考图2A、7、8A-8B和9,可以理解,由于触发器FD 245由衍生时钟信号gclk250的正或上升转变进行时钟控制,然后构建905与转变情况801相关联的布尔函数,和布尔方程4应用于电路部分200A以提供;
方程9)(F(0,e1 -,e2 -)=0)∧
(F(1,e1 +,e2 +)=1)∧
TR↑(e1 -,e2 -,e1 +,e2 +)。
此外,可以理解,由于在时钟信号clk 240的负向转变时触发器FD_1210被时钟控制,然后,在时钟信号clk 240的正向转变时,触发器FD_1 210未被时钟控制,使得在转变情况801期间e2不改变值。因此对e2的约束存在并且可以写为(e2 -=e2 +)。因此,将方程8代入方程9得到;
方程10)((0&e1 -&e2 -)=0)∧
((1&e1 +&e2 +)=1)∧
(e2 -=e2 +)
用于构建约束公式的步骤的流程图415还包括构建910部分地由对应于处于与衍生时钟信号gclk 750的关联转变的方向不同的方向的直接支配时钟信号clk 740的转变的组合电路函数F 720输入信号的e-和e+值而限定的布尔函数。在一个实施例中,取决于时序电路745是使用衍生时钟信号gclk750的上升转变还是下降转变而被相应地进行时钟控制,该布尔函数可以包括上面描述的针对转变情况802或转变情况803的布尔函数。
由于触发器FD 245由衍生时钟信号gclk 250的正或上升转变进行时钟控制,然后建立910布尔函数与转变情况802相关联,并且还需要考虑相关联的相应的约束方程5。对电路部分200A应用布尔方程5提供了;
方程11)(F(1,e1 -,e2 -)=0)∧
(F(0,e1 +,e2 +)=1)∧
TR↓(e1 -,e2 -,e1 +,e2 +)。
此外,应理解,由于在时钟信号clk 240的正向转变时触发器FDE205被时钟控制,然后,在转变情况802下,在时钟信号clk 240的负向转变时,触发器FDE 205不被时钟控制,使得e1不改变值。因此对e1的约束存在并且可以写为(e1 -=e1 +)。因此,将方程8代入方程11得到;
方程12)((1&e1 -&e2 -)=0)∧
((0&e1 +&e2 +)=1)∧
(e1 -=e1 +)
用于构建约束公式的步骤的流程图415还包括构建915限定组合电路函数F 720输入信号的e-和e+值的约束公式。上面已经描述了包括对于电路部分200A分别与(e2 -=e2 +)和(e1 -=e1 +)相关联的TR↑和TR↓的函数的这种约束。
参考图2A、图4、图7和图8A-8D,并行处理步骤412A还可以包括使用求解器来确定420上述约束公式的布尔可满足性。回想一下,可以考虑四种转变情况801,802,803,804。在一个实施例中,可以分别考虑四个转变情况801,802,803,804中的每一个来确定420布尔可满足性。下面的表1描述了确定420电路部分200A中衍生时钟信号gclk 250的布尔可满足性的结果。
表1
编译器103或链接到编译器103的其它布尔求解器程序分别确定每个转变情况801,802,803,804是可满足的(SAT)还是不可满足的(UNSAT)。不考虑约束的可满足的值分配,因为可以复制“F”的逻辑以创建时钟树转换结果,下面将更详细描述。从理论上讲,更多约束,例如更UNSAT,生成更好的衍生时钟转换,例如,转换设计中更少剩余衍生时钟。
在一个实施例中,衍生时钟信号gclk 750可以驱动可以包括时序电路745的多个时序电路,其中一些时序电路由衍生时钟信号gclk 750的上升转变进行时钟控制,而其它时序电路由衍生时钟信号gclk 750的下降转变进行时钟控制。对于由衍生时钟信号gclk750驱动的每个时序电路,取决于时序电路是使用衍生时钟信号gclk 750的上升转变还是下降转变来进行时钟控制,在下面更详细描述的转换期间,仅需要考虑四个转变情况801,802,803,804中的两个及其相关联的来自表1的SAT/UNSAT结果。对于图2A和图7中描绘的示例,衍生时钟信号gclk 250或衍生时钟信号gclk 750使用上升转变分别对触发器FD 245或时序电路745进行时钟控制-然后对于转换仅需要考虑具有相关联的相应的约束方程4和5的转变情况801和转变情况802,如下表2所示。
表2
转变情况801 | 转变情况802 | 结果 |
SAT | UNSAT | 正极性 |
UNSAT | SAT | 负极性 |
SAT | SAT | 无法优化 |
UNSAT | UNSAT | 卡住时钟 |
如果两个转变情况801,802都是SAT,则衍生时钟信号将不能被转换。如果两个转变情况801,802都是UNSAT,初始设计101可能存在问题,所述问题应考虑通过其它标准方法进行校正以修复可能的卡住时钟,并且衍生时钟信号可以被转换,也可以不被转换,直到卡住时钟问题得到修复。如果两个转变情况801,802中的一个是SAT而另一个是UNSAT,则衍生时钟信号是可转换的,例如表2的前两行中正和负极性结果指示的,如在本实施例中对于衍生时钟信号gclk 250或衍生时钟信号gclk 750那样。
接下来,如果425所选衍生时钟信号是可转换的,则编译器103推导出所选时钟对<直接支配时钟,衍生时钟>,例如<时钟信号clk 240,衍生时钟信号gclk 250>或<直接支配时钟信号clk 740,衍生时钟信号gclk 750>之间的极性关系结果。换句话说,当在多个并行处理步骤412B到412i期间分析其它所选时钟对<直接支配时钟,衍生时钟>时,则编译器103还根据对驱动所选信号e的时序电路进行时钟控制的时钟信号clk 240或直接支配时钟信号clk 740的转变方向,为每个不同的所选时钟对<直接支配时钟信号clk 740,信号e>确定关联表2的结果,所述时序电路例如相应地是时序电路705,710至715中的一个,或类似地,触发器FDE 205,触发器FD_1 210中的一个。随后结果将用于根据每个不同的所选信号e的结果是正极性还是负极性来确定执行两种类型的电路转换中的哪一种。
如果425所选衍生时钟信号不可转换,则编译器103选择430新的主时钟信号来分析,这可能不适用于上面参考图2A和7描述的示例。然而,在一个示例中,如果与所选<直接支配时钟,衍生时钟>相关联的时钟树的所选部分产生类似于图5中描绘的第一示例性CDG500的CDG,并且使得对于所选衍生时钟clk 5满足转变情况801,802,则所选衍生时钟clk 5是不可转换的。在该示例中,可以选择衍生时钟clk 5作为新的主时钟,并且不将其转换为衍生时钟。然后,将修改第一示例性CDG 500以断开分别在时钟clk 5和时钟clk 3,clk 4之间连接的边535,545。
应当理解,针对对于复杂IC而言时钟对的数量可能非常大的多个时钟对<直接支配时钟,衍生时钟>,上述步骤415至435是并行完成的,这可能导致编译器103大大节省运算时间的优点。如下所述,在向转换设计的转变中,可以在整个未转换初始设计101上完成以下步骤。接下来,编译器103合并(consolidate)440来自在并行处理步骤412A,412B到412i中分析的所有时钟对<直接支配时钟,衍生时钟>的CDG。在一个实施例中,可以考虑四个转变情况801,802,803,804中的每一个转变情况以用于CDG的合并440。
图10描绘了根据本发明的一个实施例的表示在图4中描绘的CDG合并步骤440之后,与图2B中描绘的电路部分200B相关联的示例性合并CDG 1000的数据。除了以下内容之外,合并的CDG 1000包括与图6中描绘的第二示例性CDG 600相同的元件和功能。合并的CDG1000不包括在合并的CDG 1000中被消除的边623和边627。合并的CDG 1000可以由下表3表征。
表3
<直接支配时钟,衍生时钟> | 可满足的转变情况 |
<clk,e<sub>1</sub>> | 情况801,情况803 |
<clk,e<sub>2</sub>> | 情况802,情况804 |
<clk,gclk> | 情况801,情况804 |
同时参考图2A,2B,4和8,进一步地在步骤440中,编译器103注解时钟并启用与电路部分200A到电路部分200B的转换相关联的如下表4中所述的极性。在表4中,Pos_FD指的是如下的触发器类型FD:当在其CK输入引脚处接收正或上升转变时,所述触发器类型FD切换。Neg_FD指的是如下的触发器类型FD_1:当在其CK输入引脚处接收负或下降转变时,所述触发器类型FD_1切换。Clk指的是使用非反相clk信号对触发器进行时钟控制,而~clk指的是使用反相clk信号对触发器进行时钟控制。接下来,编译器103转换445连接并对使能和时钟网络进行更新,如表4所示。
表4
e<sub>1</sub> | e<sub>2</sub> | gclk | |
Pos_FD | clk | ~clk | clk |
Neg_FD | ~clk | clk | clk |
图11描绘了根据本发明的一个实施例的表示广义电路转换1100的示例性示意图的数据,其中,当驱动图7中所描绘的信号e2的时序电路710由上升或正时钟转变进行时钟控制时,如表2中所述的正极性结果所描述的,广义电路转换1100可以用在图4中所描绘的转换445连接和网络的步骤中。同时参考图4、7和11,广义电路转换1100可以包括触发器FDE1105,查找表LUT5 1110,一对组合电路函数F 720A,720B,包括一个反相输入和另一个非反相输入的逻辑“与”门1115,以及触发器FDE 1120。
可以如下转换广义衍生时钟例程700。回想一下,所选衍生时钟信号gclk 750是可转换的。由于第一转变情况801是正极性,因此编译器103在网络分析中假定直接支配时钟信号clk 740为正或上升转变。触发器FDE 1105替换时序电路710。当驱动时序电路710的直接支配时钟信号clk 740被认为是另一个衍生时钟信号时,触发器FDE 1105包括在分析另一个时钟对<直接支配时钟X,“衍生”时钟信号clk 740>期间输入的新CE信号的功能,使得在转换之后,直接支配时钟X可以连接到触发器FDE 1105的新CE信号输入。
触发器FDE 1105的Q输出驱动信号e2 -1130和查找表LUT5 1110的I4输入。组合电路函数F 720被复制(duplicated),使得一个组合电路函数F 720A接收信号e-1125-1135和接地gnd信号1140作为与方程4中的项F(0,e1 -,e2 -,e3 -,…,en -)相关联的输入。另一个组合电路函数F 720B接收信号e+1145-1155和逻辑“1”vcc信号1160作为与方程4中的项F(1,e1 +,e2 +,e3 +,…,en +)相关联的输入。
编译器103已并行地确定:对于时钟对<直接支配时钟信号clk 740,信号e2>,关联表2指示第一转变情况801和第三转变情况803都是SAT。回想(recall)编译器103已经假定用于转换的直接支配时钟信号clk 740正或上升转变,并且由于第一转变情况801是SAT,则e2 -和e2 +不相等,所以在查找表中实现的组合电路可以在转换中使用。
触发器FDE 1105的D和CE输入分别驱动查找表LUT5 1110的I3和I2输入。S和R端口分别分配给查找表LUT5 1110的都连接到接地gnd1140的I1和I0输入。在一个实施例中,如果在考虑<直接支配时钟X,衍生时钟信号clk 740>(未示出)时直接支配时钟信号clk 740可以是不转换的,则时序电路710可以不从触发器类型FD转换为触发器类型FDE,并且查找表LUT5的CE输入引脚反而可以连接到逻辑“1”vcc信号1160。在另一个实施例中,如果时序电路710包括由关联信号(未示出)驱动的R端口和S端口,则查找表LUT5 1110的R和S端口分别连接到查找表LUT5 1110的R和S端口,而不是将查找表LUT5 1110的R和S端口连接到接地gnd 1140。
查找表LUT5 1110由也在表4中描述以下功能表征;
方程13)O=CE?(R?0:(S?1:D)):Q。
表4
查找表LUT5 1110的输出驱动信号e2 +1150。组合电路函数F 720A的输出驱动逻辑“与”门1115的反相输入。组合电路函数F 720B的输出驱动逻辑“与”门1115的非反相输入。时序电路745由触发器FDE 1120代替。逻辑“与”门1115的输出驱动由直接支配时钟信号clk740的上升转变进行时钟控制的触发器FDE 1120的CE输入,这至少对于与信号e2相关联的逻辑来说按照期望成功地消除了衍生时钟信号gclk 750。对于由使用直接支配时钟信号clk 740的正或上升转变进行时钟控制的时序电路驱动的任何其它信号e,转换考虑重复广义电路转换1100的多个信号e的其余的信号。
图12描绘了根据本发明的一个实施例的表示广义电路转换1200的示例性示意图的数据,其中,当驱动图7中所描绘的信号e1的时序电路705由下降或负时钟转变进行时钟控制时,如表2中所述的负极性结果所描述的,广义电路转换1200可以用在图4中所描绘的转换445连接和网络的步骤中。同时参考图4、7、11和12,除以下内容之外,广义电路转换1200可以包括与图11中所示的广义电路转换1200相同的元件和功能。时序电路705由触发器FDE_1 1205代替,其也由下降或负时钟转换进行时钟控制并且其Q输出驱动信号e1 -1125和信号e1 +1145。
编译器103已并行地确定:对于时钟对<直接支配时钟信号clk 740,信号e1>,关联表2指示第二转变情况802和第四转变情况804都是UNSAT。关联表2还指示第一转变情况801和第三转变情况803都是SAT。回想编译器103已经假定用于转换的直接支配时钟信号clk740正或上升转变。由于直接支配时钟信号clk 740的正或上升转变不会导致e1发生变化,则e1 -和e1 +是相等的,因此在转换中不需要在查找表中实现组合电路。同样,当信号e由使用直接支配时钟信号clk 740的负或下降转变进行时钟控制的时序电路驱动时,当针对任何其它所选时钟对<直接支配时钟信号clk 740,信号e>重复广义电路转换1200时,没有使用LUT5 1110的查找表,因为在这些例子中,e-=e+。
对于时钟锥外的约束,注意的是,添加更多约束将使可满足的问题变为不可满足的,但反之则不行。因此,上述实施例是保守的,因为可满足的结果倾向于阻挡优化。因此,使得可满足的问题变得更难的更多约束可带来更多优化。
回想,对于初始设计,例如,电路部分200A或广义衍生时钟例程700中的每个不同的时钟对<直接支配时钟,衍生时钟>,可以并行地执行图4中的多个并行处理步骤412A,412B到412i。因此,对于电路部分200A,除了时钟对<时钟信号clk 240,衍生时钟信号gclk250>,时钟对<时钟信号clk 240,信号e1 225>和<时钟信号clk 240,信号e2 230>也可以并行地分析-每个时钟对具有以如上所述的类似方式生成的不同相关联的多个表1-4。
类似地,对于广义衍生时钟例程700,除了时钟对<直接支配时钟信号clk 740,衍生时钟信号gclk 750>,时钟对<直接支配时钟信号clk 740,输出信号e1 725>,<直接支配时钟信号clk 740,输出信号e2 730>和<直接支配时钟信号clk 740,输出信号en 735>也可以并行地分析-每个时钟对具有以如上所述的类似方式生成不同的相关联的多个表1-4。
此外,根据为每个不同的相关联的时钟对<直接支配时钟,衍生时钟>生成的多个表2的结果,编译器103确定可以利用参考图11,即使用用于正极性的LUT,或参考图12,即不使用用于负极性的LUT描述的转换中的哪一个转换。因此,在转换之前,编译器103适当地分析所有时序电路时钟输入和时钟转变的极性。
图13描绘了根据本发明的一个实施例的表示在图4中描绘的并与图2A中所描绘的电路部分200A相关联的转换445连接和网络的步骤之后,转换电路部分1300的示例性示意图的数据。同时参考图2A-2B、11、12和13,除了以下内容之外,电路部分1300包括与初始设计101的电路部分200A相同的元件和功能。回想,期望消除现在与触发器FD 245的时钟输入断开并且暂时浮动直到下面描述的后续步骤的衍生时钟信号,即衍生时钟信号gclk 250。
转换电路部分1300包括查找表LUT5 1110,触发器FDE 270和成对逻辑“与”门220A,220B。转换包括用如上所述的与触发器FDE 1120类似的触发器FDE 270替换触发器FD245。由于前面描述的原因,转换将在该示例中由逻辑“与”门220表示的组合电路函数F复制到类似于上述成对组合电路函数F 720A,720B的额外的成对逻辑“与”门220A,220B中。转换电路部分1300还包括逻辑“与”门1115。
在上述针对表2的正极性结果的转换过程之后,转换还包括将来自触发器FDE 205的Q输出的信号e1 225连接到查找表LUT5 1110的I4输入并连接到作为逻辑“与”门220A的一个输入的信号e1 -。逻辑“与”门220A的另一输入连接到接地gnd 1340。转换还包括将触发器FDE 205的D和CE信号输入连接到查找表LUT5 1110的相应的I3和I2输入。S和R端口分别分配给查找表LUT5 1110的都连接到接地gnd 1340的I1和I0输入。查找表LUT5 1110的输出O驱动信号e1 +1327,这进而驱动逻辑“与”门220B的一个输入。上面描述了查找表LUT5 1110的功能。逻辑“与”门220B的另一输入连接到逻辑“1”vcc 1360。
在上述针对表2的负极性结果的转换过程之后,转换还包括将来自触发器FD_1210的Q输出的信号e2 230连接到逻辑“与”门220A的一个输入作为信号e2 -,并连接到逻辑“与”门220B的一个输入作为信号e2 +。逻辑“与”门220A的输出驱动逻辑“与”门1115的反相输入,而逻辑“与”门220B的输出驱动逻辑“与”门1115的非反相输入。逻辑“与”门1115的输出驱动触发器FDE 270的CE输入,触发器FDE 270的其它连接和功能在上面已经描述了。
再次参考图2B、4和13,接下来编译器103执行逻辑优化450和技术映射以简化先前生成的逻辑电路。例如,查找表LUT5 1110可以简化为查找表LUT3 260,因为查找表LUT51110的R和S输入连接到逻辑“0”或接地gnd 1340。进行进一步的逻辑优化以简化逻辑“与”门220,220A,220B和1115,得到图2B中所描绘的仅有的一个逻辑“与”门220,这完成了参考图3和4描述的转换315步骤。
再次参考图1、图2B和图3,编译320部分地由示意部分200B表示的映射数据的网表,以生成与仿真器或原型系统102的硬件兼容的二进制图像。然后,可以通过对应于部分地由示意部200B表示并且包括初始设计101的功能的映射数据的二进制图像来编程或配置325FPGA 104单元。然后可以运行330硬件仿真器或原型系统102,从而以比使用先前的仿真器或原型系统方法可能的速度更高的速度验证初始设计101,其中,先前的仿真器或原型系统方法不能像在使用这里描述的实施例时那样有效地使用仿真器或原型系统102中的低漂移互连资源。
图14是可以结合本发明的实施例的计算机系统1400的示例框图。图14仅仅是说明结合本发明的实施例,并不限制权利要求中所述的本发明的范围。本领域普通技术人员将认识到其它变型、修改和替代方案。在一个实施例中,计算机系统1400通常包括监视器1410、计算机1420、用户输出设备1430、用户输入设备1440、通信接口1450等。
如图14所示,计算机1420可以包括经由总线子系统1490与多个外围设备通信的处理器1460。这些外围设备可以包括用户输出设备1430、用户输入设备1440、通信接口1450和存储子系统,诸如随机存取存储器(RAM)1470和磁盘驱动器1480。
用户输入设备1440包括用于向计算机1420输入信息的所有可能类型的设备和机构。这些可以包括键盘、小键盘、结合到显示器中的触摸屏,诸如语音识别系统的音频输入设备、麦克风和其它类型的输入设备。在各种实施例中,用户输入设备1430通常体现为计算机鼠标、轨迹球、跟踪板、操纵杆、无线遥控器、绘图板、语音命令系统、眼睛跟踪系统等。用户输入设备1440通常允许用户通过诸如点击按钮等的命令来选择出现在监视器1410上的对象、图标、文本等。
用户输出设备1440包括用于从计算机1420输出信息的所有可能类型的设备和机构。这些可以包括显示器(例如,监视器1410),诸如音频输出设备的非可视显示器等。
通信接口1450提供到其它通信网络和设备的接口。通信接口1450可以用作用于从其它系统接收数据和向其它系统发送数据的接口。通信接口1450的实施例通常包括以太网卡,调制解调器(电话、卫星、线缆、ISDN(Integrated Service Digital NetWork,综合业务数字网)、(异步)数字用户线(DSL)单元、FireWire接口、USB接口等。例如,通信接口1450可以耦合到计算机网络、FireWire总线等。在其它实施例中,通信接口1450可以物理地集成在计算机1420的主板上,并且可以是软件程序,例如软DSL等。
在各种实施例中,计算机系统1400还可以包括能够通过网络进行通信的软件,例如为HTTP、TCP/IP、RTP/RTSP协议等。在本发明的备选实施例中,还可以使用其它通信软件和传输协议,例如IPX、UDP等。在一些实施例中,计算机1420包括来自Intel的一个或多个Xeon微处理器作为处理器1460。此外,在一个实施例中,计算机1420包括基于UNIX的操作系统。
RAM 1470和磁盘驱动器1480是配置为存储诸如本发明的实施例的数据的有形媒体的示例,包括可执行计算机代码,人类可读代码等。其它类型的有形媒体包括软盘、可移动硬盘、光盘存储媒体(例如CD-ROM、DVD和条形码)、半导体存储器(例如闪存)、非暂时性只读存储器(ROMS)、电池支持的易失性存储器、网络存储设备等。RAM 1470和磁盘驱动器1480可以配置为存储提供本发明的功能的基本编程和数据结构。
提供本发明的功能的软件代码模块和指令可以存储在RAM 1470和磁盘驱动器1480中。这些软件模块可以由处理器1460执行。RAM 1470和磁盘驱动器1480还可以提供用于存储根据本发明使用的数据的存储库。
RAM 1470和磁盘驱动器1480可以包括多个存储器,包括用于在程序执行期间存储指令和数据的主随机存取存储器(RAM)和存储固定的非暂时指令的只读存储器(ROM)。RAM1470和磁盘驱动器1480可以包括为程序和数据文件提供持久(非易失性)存储的文件存储子系统。RAM 1470和磁盘驱动器1480还可以包括可移动存储系统,例如可移动闪存。
总线子系统1490提供用于使计算机1420的各种部件和子系统按预期彼此通信的机制。尽管总线子系统1490被示意性地描绘为单个总线,但总线子系统的替代实施例可以使用多个总线。
图14是能够体现本发明的计算机系统的代表。对于本领域普通技术人员来说显而易见的是,许多其它硬件和软件配置适用于本发明。例如,计算机可以是台式,便携式,机架式或平板式配置。另外,计算机可以是一系列联网计算机。此外,可以设想使用其它微处理器,例如PentiumTM或ItaniumTM微处理器;超微半导体公司(Advanced Micro Devices,Inc)的OpteronTM或AthlonXPTM微处理器;等等。此外,可以设想其它类型的操作系统,例如来自微软公司(Microsoft Corporation)的等,来自Sun Microsystems的Solaris,LINUX,UNIX等。在其它实施例中,上述技术可以在芯片或辅助处理板上实现。
本发明的各种实施例可以以软件或硬件或两者的组合中的逻辑形式来实现。逻辑可以存储在计算机可读或机器可读的非暂时性存储媒体中,作为适于指示计算机系统的处理器执行本发明的实施例中公开的一组步骤的一组指令。逻辑可以形成适于指至信息处理设备执行本发明的实施例中公开的一组步骤的计算机程序产品的一部分。基于本文提供的公开和教导,本领域普通技术人员将理解实现本发明的其它方式和/或方法。
这里描述的数据结构和代码可以部分或完全存储在计算机可读存储媒体和/或硬件模块和/或硬件设备上。计算机可读存储媒体包括但不限于易失性存储器,非易失性存储器,磁和光存储设备,例如磁盘驱动器、磁带、CD(光盘)、DVD(数字多功能盘或数字视频盘),或现在已知或以后开发的能够存储代码和/或数据的其它媒体。本文描述的硬件模块或设备包括但不限于专用集成电路(ASIC)、现场可编程门阵列(FPGA)、专用或共享处理器、和/或现在已知或以后开发的其它硬件模块或设备。
这里描述的方法和过程可以部分或完全体现为存储在计算机可读存储媒体或设备中的代码和/或数据,因此,当计算机系统读取并执行代码和/或数据时,计算机系统执行相关的方法和过程。方法和过程也可以部分或完全体现在硬件模块或设备中,因此,当激活硬件模块或设备时,它们执行相关的方法和过程。可以使用代码、数据和硬件模块或设备的组合来体现本文公开的方法和过程。
本发明的实施例的以上描述是说明性的而非限制性的。另外,对应于锁存器和/或触发器所描述的类似原理可以应用于其它顺序逻辑电路元件。其它修改和变化对于本领域技术人员来说是显而易见的,并且旨在落入所附权利要求的范围内。
Claims (20)
1.一种用于配置硬件验证系统的计算机实现方法,所述方法包括:
当调用计算机来配置所述验证系统时,由计算机接收表示集成电路的第一设计的第一数据,所述集成电路配置为由从第二时钟信号衍生的第一时钟信号和根据所述第二时钟信号生成的第三信号操作;和
使用所述计算机将所述第一数据转换为表示包括所述第一设计的功能的第二设计的第二数据,其中,所述转换根据以下特征将所述第一时钟信号替换为所述第二时钟信号:
第一布尔函数,其由对应于处于与所述第一时钟信号的关联转变相同方向的所述第二时钟信号的第一转变的所述第三信号的第一值和第二值限定;
第二布尔函数,其由对应于处于与所述第一时钟信号的所述关联转变相反方向的所述第二时钟信号的第二转变的所述第三信号的第一值和第二值限定;
约束,其限定所述第三信号的所述第一值和所述第二值;和
所述第一布尔函数和所述第二布尔函数的布尔可满足性。
2.根据权利要求1所述的计算机实现方法,其中,通过以下特征在所述第一设计中进一步限定所述第一布尔函数:
所述第二时钟信号的所述第一转变,其由第一方向表征;
所述第一时钟信号的所述关联转变,其由所述第一方向表征;
所述第三信号的所述第一值,其在所述第二时钟信号的所述第一转变之前限定;以及
所述第三信号的所述第二值,其在所述第二时钟信号的所述第一转变之后限定。
3.根据权利要求1所述的计算机实现方法,其中,通过以下特征在所述第一设计中进一步限定所述第二布尔函数:
所述第二时钟信号的所述第二转变,其由第一方向表征;
所述第一时钟信号的所述关联转变,其由与所述第一方向不同的第二方向表征;
所述第三信号的所述第一值,其在所述第二时钟信号的所述第一转变之前限定;以及
所述第三信号的所述第二值,其在所述第二时钟信号的所述第一转变之后限定。
4.根据权利要求1所述的计算机实现方法,其中,所述布尔可满足性还包括确定所述第一布尔函数是可满足的并且所述第二布尔函数是不可满足的。
5.根据权利要求1所述的计算机实现方法,其中,所述布尔可满足性还包括确定所述第一布尔函数是不可满足的并且所述第二布尔函数是可满足的。
6.根据权利要求1所述的计算机实现方法,其中,所述第一设计进一步包括配置为根据第一信号进行时钟控制的第一时序元件,所述第一信号是从第二信号和所述第三信号衍生的,所述第三信号由配置为根据所述第二信号进行时钟控制的第二时序元件生成。
7.根据权利要求1所述的计算机实现方法,其中,所述转换还包括将在所述第一设计中配置为根据第一信号进行时钟控制的第一时序元件替换为第二时序元件,在所述第二设计中所述第二时序元件配置为:
根据所述第二时钟信号的上升转变进行时钟控制;和
在确定所述第一布尔函数是可满足的并且所述第二布尔函数是不可满足的之后,根据实现所述第一布尔函数的组合电路而启用。
8.根据权利要求7所述的计算机实现方法,其中,在所述第二设计中所述第二时序元件进一步配置为在确定所述第一布尔函数是不可满足的并且所述第二布尔函数是可满足的之后,根据实现所述第一布尔函数的组合电路而启用。
9.根据权利要求7所述的计算机实现方法,其中,所述第二时序元件是触发器,其中,所述转换进一步包括:
将第二信号耦合到所述触发器的时钟输入端子;和
将所述组合电路的输出耦合到所述触发器的使能输入端子。
10.根据权利要求1所述的计算机实现方法,其中,所述转换进一步包括将在所述第一设计中配置为根据第一信号进行时钟控制的第一时序元件替换为第二时序元件,在所述第二设计中所述第二时序元件配置为:
根据所述第二时钟信号的上升转变进行时钟控制;和
在确定所述第一布尔函数是不可满足的并且所述第二布尔函数是可满足的之后,根据实现所述第二布尔函数的组合电路而启用。
11.一种用于配置硬件验证系统的系统,所述系统配置为:
当调用计算机来配置所述验证系统时,接收表示集成电路的第一设计的第一数据,所述集成电路配置为由从第二时钟信号衍生的第一时钟信号和根据所述第二时钟信号生成的第三信号操作;和
将所述第一数据转换为表示包括所述第一设计的功能的第二设计的第二数据,其中,所述转换根据以下特征将第一信号替换为第二信号:
第一布尔函数,其由对应于处于与所述第一时钟信号的关联转变相同方向的所述第二时钟信号的第一转变的所述第三信号的第一值和第二值限定;
第二布尔函数,其由对应于处于与所述第一时钟信号的所述关联转变相反方向的所述第二时钟信号的转变的所述第三信号的第一值和第二值限定;
约束,其限定所述第三信号的所述第一值和所述第二值;和
所述第一布尔函数和所述第二布尔函数的布尔可满足性。
12.根据权利要求11所述的系统,其中,通过以下特征在所述第一设计中进一步限定所述第一布尔函数:
所述第二时钟信号的所述第一转变,其由第一方向表征;
所述第一时钟信号的所述关联转变,其由所述第一方向表征;
所述第三信号的所述第一值,其在所述第二时钟信号的所述第一转变之前限定;以及
所述第三信号的所述第二值,其在所述第二时钟信号的所述第一转变之后限定。
13.根据权利要求11所述的系统,其中,通过以下特征在所述第一设计中进一步限定所述第二布尔函数:
所述第二时钟信号的所述第二转变,其由第一方向表征;
所述第一时钟信号的所述关联转变,其由与所述第一方向不同的第二方向表征;
所述第三信号的所述第一值,其在所述第二时钟信号的所述第一转变之前限定;以及
所述第三信号的所述第二值,其在所述第二时钟信号的所述第一转变之后限定。
14.根据权利要求11所述的系统,其中,所述布尔可满足性进一步包括确定所述第一布尔函数是可满足的并且所述第二布尔函数是不可满足的。
15.根据权利要求11所述的系统,其中,所述布尔可满足性进一步包括确定所述第一布尔函数是不可满足的并且所述第二布尔函数是可满足的。
16.根据权利要求11所述的系统,其中,所述第一设计进一步包括配置为根据第一信号进行时钟控制的第一时序元件,所述第一信号是从第二信号和所述第三信号衍生的,所述第三信号由配置为根据所述第二信号进行时钟控制的第二时序元件生成。
17.根据权利要求11所述的系统,其中,所述转换进一步配置为将在所述第一设计中配置为根据第一信号进行时钟控制的第一时序元件替换为第二时序元件,在所述第二设计中所述第二时序元件配置为:
根据所述第二时钟信号的上升转变进行时钟控制;和
在确定所述第一布尔函数是可满足的并且所述第二布尔函数是不可满足的之后,根据实现所述第一布尔函数的组合电路而启用。
18.根据权利要求17所述的系统,其中,在所述第二设计中所述第二时序元件进一步配置为在确定所述第一布尔函数是不可满足的并且所述第二布尔函数是可满足的之后,根据实现所述第一布尔函数的组合电路而启用。
19.根据权利要求17所述的系统,其中,所述第二时序元件是触发器,其中,所述转换进一步配置为:
将第二信号耦合到所述触发器的时钟输入端子;和
将所述组合电路的输出耦合到所述触发器的使能输入端子。
20.根据权利要求11所述的系统,其中,所述转换进一步配置为将在所述第一设计中配置为根据第一信号进行时钟控制的第一时序元件替换为第二时序元件,在所述第二设计中所述第二时序元件配置为:
根据所述第二时钟信号的上升转变进行时钟控制;和
在确定所述第一布尔函数是不可满足的并且所述第二布尔函数是可满足的之后,根据实现所述第二布尔函数的组合电路而启用。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662397324P | 2016-09-20 | 2016-09-20 | |
US62/397,324 | 2016-09-20 | ||
US15/705,784 | 2017-09-15 | ||
US15/705,784 US10325046B2 (en) | 2016-09-20 | 2017-09-15 | Formal method for clock tree analysis and optimization |
PCT/US2017/052150 WO2018057481A1 (en) | 2016-09-20 | 2017-09-19 | Formal method for clock tree analysis and optimization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110383272A true CN110383272A (zh) | 2019-10-25 |
CN110383272B CN110383272B (zh) | 2023-09-15 |
Family
ID=61621144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780071628.2A Active CN110383272B (zh) | 2016-09-20 | 2017-09-19 | 时钟树分析和优化的形式化方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10325046B2 (zh) |
EP (1) | EP3516554A4 (zh) |
CN (1) | CN110383272B (zh) |
WO (1) | WO2018057481A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111553122A (zh) * | 2020-05-15 | 2020-08-18 | 深圳探科技术有限公司 | 集成电路仿真同步处理的方法、模块、存储介质及系统 |
CN113569524A (zh) * | 2021-07-29 | 2021-10-29 | 眸芯科技(上海)有限公司 | 芯片设计中基于综合网表提取时钟树的方法及应用 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10599800B2 (en) * | 2017-07-27 | 2020-03-24 | Synopsys, Inc. | Formal clock network analysis, visualization, verification and generation |
US10606971B2 (en) | 2017-11-29 | 2020-03-31 | International Business Machines Corporation | Testing netlists based on singular independent signals |
US11194943B2 (en) * | 2017-12-12 | 2021-12-07 | Synopsys, Inc. | FPGA-based hardware emulator system with an inter-FPGA connection switch |
US11176293B1 (en) * | 2018-03-07 | 2021-11-16 | Synopsys, Inc. | Method and system for emulation clock tree reduction |
TWI714039B (zh) * | 2019-03-27 | 2020-12-21 | 創意電子股份有限公司 | 時序模型、時序模型建立方法、與相關的頂層分析方法 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6301553B1 (en) * | 1996-05-31 | 2001-10-09 | Luc M. Burgun | Method and apparatus for removing timing hazards in a circuit design |
US20030212977A1 (en) * | 2002-05-13 | 2003-11-13 | Nec Electronics Corporation | Design method for gate array integrated circuit |
US7082582B1 (en) * | 2001-12-06 | 2006-07-25 | Synplicity, Inc. | Reducing clock skew in clock gating circuits |
CN1898626A (zh) * | 2003-12-19 | 2007-01-17 | 皇家飞利浦电子股份有限公司 | 集成电路的时钟分配 |
US7287105B1 (en) * | 2005-01-12 | 2007-10-23 | Advanced Micro Devices, Inc. | Asynchronous-mode sync FIFO having automatic lookahead and deterministic tester operation |
US7424689B1 (en) * | 2006-02-21 | 2008-09-09 | Altera Corporation | Gated clock conversion |
CN101720465A (zh) * | 2007-05-09 | 2010-06-02 | 新思公司 | 通过时钟采样进行相位关系计算 |
CN103049599A (zh) * | 2011-10-14 | 2013-04-17 | 苹果公司 | 用于hdl环境的全局时钟处理程序对象 |
US20150161313A1 (en) * | 2013-12-05 | 2015-06-11 | International Business Machines Corporation | Circuit design evaluation with compact multi-waveform representations |
CN105359149A (zh) * | 2013-03-21 | 2016-02-24 | 美商新思科技有限公司 | 双重结构的时钟树综合(cts) |
CN106326510A (zh) * | 2015-06-30 | 2017-01-11 | 新思科技(上海)有限公司 | 验证时钟树延迟 |
CN114756085A (zh) * | 2020-08-25 | 2022-07-15 | 美商新思科技有限公司 | 用于现场可编程门阵列(fpga)综合的形式化门控时钟转换 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452239A (en) * | 1993-01-29 | 1995-09-19 | Quickturn Design Systems, Inc. | Method of removing gated clocks from the clock nets of a netlist for timing sensitive implementation of the netlist in a hardware emulation system |
US5517506A (en) | 1994-03-28 | 1996-05-14 | Motorola, Inc. | Method and data processing system for testing circuits using boolean differences |
US5649176A (en) | 1995-08-10 | 1997-07-15 | Virtual Machine Works, Inc. | Transition analysis and circuit resynthesis method and device for digital circuit modeling |
US5801955A (en) | 1996-05-31 | 1998-09-01 | Mentor Graphics Corporation | Method and apparatus for removing timing hazards in a circuit design |
US6618839B1 (en) | 1999-11-30 | 2003-09-09 | Synplicity, Inc. | Method and system for providing an electronic system design with enhanced debugging capabilities |
US7500205B2 (en) | 2001-12-06 | 2009-03-03 | Synopsys, Inc. | Skew reduction for generated clocks |
US7116740B1 (en) | 2003-01-29 | 2006-10-03 | Cisco Technology, Inc. | Method and system for providing clock signals |
US8244515B2 (en) * | 2007-08-21 | 2012-08-14 | International Business Machines Corporation | Structure for detecting clock gating opportunities in a pipelined electronic circuit design |
US8015516B2 (en) | 2008-01-18 | 2011-09-06 | International Business Machines Corporation | System and method for creating a logical representation of a functional logic system from a physical representation |
US9195789B2 (en) | 2014-04-11 | 2015-11-24 | Synopsys, Inc. | Incremental functional verification of a circuit design |
FR3023038B1 (fr) * | 2014-06-27 | 2016-07-22 | Inria Inst Nat De Rech En Informatique Et En Automatique | Procede de fabrication automatisee d'un circuit electronique adapte pour detecter ou masquer des fautes par redondance temporelle, programme d'ordinateur et circuit electronique associes |
US10140413B2 (en) | 2015-04-21 | 2018-11-27 | Synopsys, Inc. | Efficient resolution of latch race conditions in emulation |
US10185794B2 (en) | 2015-10-20 | 2019-01-22 | Synopsys, Inc. | Overlaying of clock and data propagation in emulation |
US9543959B1 (en) * | 2015-10-21 | 2017-01-10 | Microsoft Technology Licensing, Llc | Phase-mode based superconducting logic |
-
2017
- 2017-09-15 US US15/705,784 patent/US10325046B2/en active Active
- 2017-09-19 EP EP17853728.8A patent/EP3516554A4/en active Pending
- 2017-09-19 CN CN201780071628.2A patent/CN110383272B/zh active Active
- 2017-09-19 WO PCT/US2017/052150 patent/WO2018057481A1/en unknown
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6301553B1 (en) * | 1996-05-31 | 2001-10-09 | Luc M. Burgun | Method and apparatus for removing timing hazards in a circuit design |
US7082582B1 (en) * | 2001-12-06 | 2006-07-25 | Synplicity, Inc. | Reducing clock skew in clock gating circuits |
US20030212977A1 (en) * | 2002-05-13 | 2003-11-13 | Nec Electronics Corporation | Design method for gate array integrated circuit |
CN1898626A (zh) * | 2003-12-19 | 2007-01-17 | 皇家飞利浦电子股份有限公司 | 集成电路的时钟分配 |
US7287105B1 (en) * | 2005-01-12 | 2007-10-23 | Advanced Micro Devices, Inc. | Asynchronous-mode sync FIFO having automatic lookahead and deterministic tester operation |
US7424689B1 (en) * | 2006-02-21 | 2008-09-09 | Altera Corporation | Gated clock conversion |
CN101720465A (zh) * | 2007-05-09 | 2010-06-02 | 新思公司 | 通过时钟采样进行相位关系计算 |
CN103049599A (zh) * | 2011-10-14 | 2013-04-17 | 苹果公司 | 用于hdl环境的全局时钟处理程序对象 |
CN105359149A (zh) * | 2013-03-21 | 2016-02-24 | 美商新思科技有限公司 | 双重结构的时钟树综合(cts) |
US20150161313A1 (en) * | 2013-12-05 | 2015-06-11 | International Business Machines Corporation | Circuit design evaluation with compact multi-waveform representations |
CN106326510A (zh) * | 2015-06-30 | 2017-01-11 | 新思科技(上海)有限公司 | 验证时钟树延迟 |
CN114756085A (zh) * | 2020-08-25 | 2022-07-15 | 美商新思科技有限公司 | 用于现场可编程门阵列(fpga)综合的形式化门控时钟转换 |
Non-Patent Citations (3)
Title |
---|
GUIRONG WU 等: "An efficient clock tree synthesis method in physical design", 《2009 IEEE INTERNATIONAL CONFERENCE OF ELECTRON DEVICES AND SOLID-STATE CIRCUITES》, pages 1 - 15 * |
章凌宇: ""PowerPC处理器IP核的物理设计与验证"", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
章凌宇: ""PowerPC处理器IP核的物理设计与验证"", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 12, 15 December 2011 (2011-12-15), pages 1 - 80 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111553122A (zh) * | 2020-05-15 | 2020-08-18 | 深圳探科技术有限公司 | 集成电路仿真同步处理的方法、模块、存储介质及系统 |
CN113569524A (zh) * | 2021-07-29 | 2021-10-29 | 眸芯科技(上海)有限公司 | 芯片设计中基于综合网表提取时钟树的方法及应用 |
CN113569524B (zh) * | 2021-07-29 | 2023-12-29 | 眸芯科技(上海)有限公司 | 芯片设计中基于综合网表提取时钟树的方法及应用 |
Also Published As
Publication number | Publication date |
---|---|
EP3516554A4 (en) | 2020-05-06 |
CN110383272B (zh) | 2023-09-15 |
US10325046B2 (en) | 2019-06-18 |
US20180082004A1 (en) | 2018-03-22 |
EP3516554A1 (en) | 2019-07-31 |
WO2018057481A1 (en) | 2018-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110383272A (zh) | 时钟树分析和优化的形式化方法 | |
MacMillen et al. | An industrial view of electronic design automation | |
US5933356A (en) | Method and system for creating and verifying structural logic model of electronic design from behavioral description, including generation of logic and timing models | |
JP2004531056A (ja) | プログラム可能なコンポーネントを用いるブロックベースの設計方法論 | |
CN109937418B (zh) | 用于仿真的基于波形的重构 | |
EP2227764A1 (en) | Integrated prototyping system for validating an electronic system design | |
Ramesh et al. | Turning coders into makers: The promise of embedded design generation | |
CN112753034B (zh) | 硬件仿真系统控制块和控制电路设计的硬件仿真的方法 | |
CN112818621B (zh) | 用于预测软ip部件的性能、功率和面积表现的系统和方法 | |
CN110785761B (zh) | 存在时钟动态重编程时仿真时间线的压缩方法 | |
US10489536B2 (en) | Method and apparatus for modeling delays in emulation | |
CN113474780A (zh) | 用于使用相关样本生成及高效统计模拟来计算时序良率及良率瓶颈的新颖方法 | |
CN110114768B (zh) | 功率计算逻辑 | |
US10162915B2 (en) | Method and system for emulation of multiple electronic designs in a single testbench environment | |
Gupta | Hardware-software codesign | |
Hemani | Charting the EDA roadmap | |
Liu et al. | Knowledge-based neural network model for FPGA logical architecture development | |
Turki et al. | Towards synthetic benchmarks generator for CAD tool evaluation | |
WO2012007955A1 (en) | Method of implementing iec 61131-3 control specification through verilog hdl description for modeling, simulation and synthesis of control logic configuration for integrated circuit implementation | |
Khalil-Hani et al. | Co-simulation methodology for improved design and verification of hardware neural networks | |
CN116451625B (zh) | 用于rtl和带sdf网表的联合仿真的装置和方法 | |
Comerro | Optimizing FPGA Performance: Leveraging the Razor Technique in Digital Design | |
Ballagh et al. | Java debug hardware models using jbits | |
Ubar et al. | Structurally synthesized multiple input BDDs for simulation of digital circuits | |
Craven | Structured approach to dynamic computing application development |
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 |