CN108073762A - 用于利用经延迟的初始化来验证经重定时的电路的方法 - Google Patents

用于利用经延迟的初始化来验证经重定时的电路的方法 Download PDF

Info

Publication number
CN108073762A
CN108073762A CN201711147190.XA CN201711147190A CN108073762A CN 108073762 A CN108073762 A CN 108073762A CN 201711147190 A CN201711147190 A CN 201711147190A CN 108073762 A CN108073762 A CN 108073762A
Authority
CN
China
Prior art keywords
resetting
register
circuit
circuit design
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
Application number
CN201711147190.XA
Other languages
English (en)
Other versions
CN108073762B (zh
Inventor
M.A.伊耶尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN108073762A publication Critical patent/CN108073762A/zh
Application granted granted Critical
Publication of CN108073762B publication Critical patent/CN108073762B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3323Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing
    • G06F30/3947Routing global
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/04Constraint-based CAD

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

电路设计计算装备可以执行电路设计内的寄存器移动。当移动寄存器时,可以针对非合理元件而维持计数器值。计数器值可以在每一元件、每一时钟域的基础上维持和更新以计及跨过对应的非合理元件的寄存器移动。针对每一个时钟域的最大计数器值可以被选取作为调整值,所述调整值用来生成用于在寄存器移动之后使经修改的电路设计复位的序列。调整值可以受用户指定的最大值所束缚。该重定时操作还可以通过执行反绕验证进行验证。反绕验证牵涉到将经重定时的电路重定时回到原始电路,而同时重视计数器值。如果验证成功,则电路设计可以使用较小的调整值进行复位。如果验证失败,则可以针对每一个时钟域建议正确的计数器值。

Description

用于利用经延迟的初始化来验证经重定时的电路的方法
背景技术
这涉及集成电路,并且更特别地涉及生成用于集成电路设计内的寄存器的复位序列。
从一个技术节点向下一个的每一个转变已经导致更小的晶体管几何形状并且因而潜在地导致每集成电路管芯上的单位面积实现更多功能性。同步集成电路已经进一步获益于如通过减少的互连和单元延迟所证实的该发展,其已经引起性能增加。
为了进一步增加性能,已经提出诸如寄存器重定时之类的解决方案,其中在组合逻辑的各部分之间移动寄存器,从而实现寄存器之间的延迟的更均衡分布,并且因而集成电路可以在潜在地更高的时钟频率下操作。
通常使用时钟边沿触发的触发器来实现寄存器。在重定时之前,当集成电路被上电时,这些数字触发器也被供电至初始状态,但是该初始状态可以是未知的。因此,通常向触发器提供复位序列以便使触发器复位并且将它们带到已知的复位状态。
然而,在重定时之后,经重定时的集成电路可能与重定时之前的集成电路表现得不同。在一些情况下,在重定时之前提供给触发器的相同复位序列将不对经重定时的触发器起作用。因此,将合期望的是,计及在重定时期间移动的触发器,并且为经重定时的触发器提供经更新的复位序列。
本文中的实施例出现在该上下文内。
发明内容
这一般地涉及集成电路,并且更特别地涉及用于使用集成电路设计计算装备来生成用于电路设计内的寄存器的复位序列的方法。在集成电路设计计算装备上实现的计算机辅助设计(CAD)工具常常用于执行寄存器移动操作(例如,寄存器重定时、寄存器复制、寄存器合并)以改进电路设计的总体电路性能。
电路设计可以包括可使用第一复位序列复位的多个寄存器,所述第一复位序列有时候被称为“原始序列”。由CAD工具执行的给定寄存器移动操作(例如,与寄存器重定时、寄存器复制或者寄存器合并相关联的移动操作)可以使所述多个寄存器中的第一寄存器移动跨过第一电路元件。由CAD工具执行的第二寄存器移动操作可以使所述多个寄存器中的第二寄存器移动跨过第二电路元件。可以维持和更新与第一元件相关联的第一计数器值。可以维持和更新与第二元件相关联的第二计数器值。
依照实施例,第一电路元件可以是具有输入和输出的非合理元件。在合理(justifiable)元件的输出处的所有可能输出值可以使用来自输入的输入值的某组合而可获得。非合理元件是不合理的元件。非合理元件可以是扇出节点(例如,将单个节点同时连接到多个目的地电路的扇出电路)。第一寄存器移动操作可以是将第一寄存器从第一电路元件的输入移动到第一电路元件的输出的向前移动。作为第一寄存器移动操作的结果,第一计数器值可能增加。
第二电路元件可能具有输入和输出。第二移动操作可以是将第二寄存器从第二电路元件的输入移动到第二电路元件的输出的向前移动。作为第二移动操作的结果,第二计数器值可能被维持(例如,第二计数器值可能保持不变),如果第二电路元件是合理元件的话。
依照实施例,CAD工具还可以执行电路设计上的全局重定时操作。在全局重定时期间,CAD工具可以计算用于第一元件的重定时变量(例如,用于第i个元件的重定时值ri)。用于元件的重定时变量的正值指示则多触发器跨过该元件的向后运动。类似地,用于元件的重定时变量的负值指示则多触发器跨过该元件的向前运动。可以将针对第一非合理元件的重定时变量从通过第一寄存器移动操作而增加的第一计数器值减去以生成经更新的计数器值。
第一复位序列可以通过具有数个时钟周期(c)的调整序列来预置(prepend),所述数个时钟周期(c)具有任意初级(primary)输入值,以生成经调整的复位序列。可以基于第一和第二计数器值的最新版本的最大值来计算时钟周期的数目。可选地,如果已经用固定数目的空时钟周期预先填充原始复位序列,则这些预先填充的数目的时钟周期可以减少而不会阻止电路内的所述多个寄存器使用经调整的复位序列达到复位状态。换言之,继在集成电路上实现电路设计之后,集成电路可以在未知状态下利用集成电路内的所述多个寄存器来通电。通过使用经调整的复位序列,所述多个寄存器可以被复位到已知状态。以该方式操作,提供了对集成电路的实际改进,因为可以通过简单地使原始复位序列延迟某一数量的时钟周期来将经重定时的电路恰当地复位到期望的状态。
依照另一个适合的实施例,寄存器移动操作可以由最大预定计数值(例如,用户指定的最大计数限制)所约束。通过防止在每当寄存器移动计数值等于最大预定计数值时非合理电路元件处的进一步寄存器复制,最大预定计数值可以约束逻辑综合或物理综合变换。通过防止在每当寄存器移动计数值等于最大预定计数值时非合理电路元件处的进一步向前重定时移动,最大预定计数值可以约束局部重定时移动。通过向全局重定时方程求解器引入附加约束,最大预定计数值还可以约束全局重定时操作。附加约束可以指定,使用方程求解器求解的用于电路元件的重定时变量必须至少等于或者大于寄存器移动计数器值和最大预定计数值之间的差异。
依照又一个适合的实施例,通过执行反绕(rewind)结构验证(例如,以确保经重定时的电路实际上c周期顺序地等效于原始电路),电路设计验证工具可以用于验证使用原始复位序列的原始电路设计顺序地等效于使用经调整的c循环延迟的复位序列的经重定时的电路设计。反绕结构验证牵涉到在将经重定时的电路设计重定时回到原始电路设计时和在通过附加约束来约束方程求解器时计算重定时变量。附加约束可以包括确保用于非合理电路元件的所有每个时钟域的重定时变量都小于或等于用于该时钟域的计数值c。
根据随附各图以及以下详细描述,本发明的其它特征、其性质以及各种优点将更显而易见。
附图说明
图1是依照实施例的说明性可编程集成电路的示意图。
图2是依照实施例的说明性重定时操作的示意图。
图3是依照实施例的使用寄存器来流水线式输送定线(routing)信号的说明性流水线式(pipelined)定线资源的示意图。
图4是依照实施例的可以用于设计集成电路的电路设计系统的示意图。
图5是依照实施例的可以用在电路设计系统中的说明性计算机辅助设计(CAD)工具的示意图。
图6是依照实施例的用于设计集成电路的说明性步骤的流程图。
图7是依照实施例的流水线寄存器可以在其之间转变的可能状态的说明性曲线图的示意图。
图8A是依照实施例的重定时之前的说明性电路的示意图。
图8B是依照实施例的图8A的电路的经重定时的版本的示意图。
图9是示出了依照实施例可以如何通过预置的调整序列使原始复位序列延迟的说明性时序图。
图10A是依照实施例的说明性合理的电路元件的示意图。
图10B是依照实施例的说明性非合理电路元件的示意图。
图10C是依照实施例的说明性扇出电路的示意图,所述说明性扇出电路是非合理元件。
图11A-11C是依照实施例的寄存器复制和寄存器合并操作之后的可能配置的说明性电路的示意图。
图12是依照实施例的具有节点和边沿的说明性重定时曲线图的示意图,其用于表示链接两个电路元件的数个寄存器。
图13是示出了依照实施例可以如何将扇出节点建模为重定时曲线图中的非合理电路元件的示意图。
图14是依照实施例的用于计算调整值并且为对应经调整的复位序列提供预置的时钟周期以用于使经重定时的电路设计中的寄存器复位的说明性步骤的流程图。
图15是依照实施例的用于束缚预置的调整序列中的所述数个时钟周期的说明性步骤的流程图。
图16A-C是图示了依照实施例可以如何将经重定时的电路重定时回到原始电路的示意图。
图17是依照实施例的用于执行反绕结构验证的说明性步骤的示意图。
具体实施方式
所呈现的实施例涉及集成电路,并且更特别地涉及在寄存器重定时操作期间对寄存器进行建模。
对集成电路执行重定时操作可以改变集成电路内的寄存器的配置。在一些情况下,经重定时的寄存器将不使用用于重定时之前的寄存器的复位序列(例如,由设计者针对对应的电路设计所提供的复位序列)准确地复位。
因此将合期望的是,提供一种对在重定时期间移动的寄存器进行建模的改进方式以计算调整值并且使用所计算出的调整值和在重定时之前所使用的复位序列来生成经重定时的复位序列。依照实施例,这可以通过追踪经重定时的寄存器跨过不同类型的电路元件的运动来实现。以该方式操作,可以计算在经重定时的复位序列中使用的预置调整序列的最小长度。
本领域技术人员将认识到,本发明的示例性实施例可以在没有这些具体细节中的一些或全部的情况下实践。在其它实例中,没有详细地描述公知的操作以便没有不必要地使本发明的实施例模糊。
在图1中示出了可以被配置成实现电路设计的可编程集成电路(诸如可编程逻辑器件(PLD)100)的说明性实施例。如图1中所示,可编程逻辑器件(PLD)可以包括功能块的二维阵列,其包括逻辑阵列块(LAB)110以及诸如例如随机存取存储器(RAM)块130和数字信号处理(DSP)块120之类的其它功能块。诸如LAB 110之类的功能块可以包括更小的可编程区(例如,逻辑元件、可配置逻辑块或者自适应逻辑模块),其接收输入信号并且对输入信号执行定制的功能以产生输出信号。
可编程逻辑器件100可以包含可编程存储器元件。可以使用输入-输出元件(IOE)102使存储器元件加载配置数据(也称作编程数据)。一旦加载,存储器元件每个提供控制相关联的功能块(例如,LAB 110、DSP 120、RAM 130或者输入-输出元件102)的操作的对应静态控制信号。
在典型场景中,将经加载的存储器元件的输出应用于功能块中的金属氧化物半导体晶体管的栅极,以打开或关闭某些晶体管并且从而配置包括定线路径的功能块中的逻辑。可以以该方式控制的可编程逻辑电路元件包括多路复用器(例如,用于形成互连电路中的定线路径的多路复用器)的部分,查找表,逻辑阵列,与(与)、或(OR)、与非(N与)和或非(NOR)逻辑门,通行门等。
存储器元件可以使用任何适合的易失性和/或非易失性存储器结构,诸如随机存取存储器(RAM)单元、保险丝、反熔丝、可编程只读存储器的存储器单元、掩模编程和激光编程的结构、这些结构的组合等。因为存储器元件在编程期间加载有配置数据,所以存储器元件有时候被称为配置存储器、配置RAM(CRAM)或者可编程存储器元件。
此外,可编程逻辑器件可以具有输入-输出元件(IOE)102,用于驱动PLD 100的信号关闭和用于从其它设备接收信号。输入-输出元件102可以包括并行输入-输出电路、串行数据收发器电路、差分接收器和发送器电路、或者用于将一个集成电路连接到另一个集成电路的其它电路。
PLD还可以包括以垂直定线通道140(即,沿PLD 100的垂直轴形成的互连)和水平定线通道150(即,沿PLD 100的水平轴形成的互连)的形式的可编程互连电路,每一个定线通道包括至少一个轨道以将至少一个导线定线。如果期望,则互连电路可以包括流水线元件,并且可以在操作期间访问存储在这些流水线元件中的内容。例如,编程电路可以提供对流水线元件的读取和写入访问。
要注意,除在图1中描绘的互连电路的拓扑结构之外,意图其它定线拓扑结构也被包括在本发明的范围内。例如,定线拓扑结构可以包括对角线地行进的导线或者沿其范围的不同部分水平和垂直地行进的导线,以及在三维集成电路的情况下垂直于设备平面的导线,并且导线的驱动器可以位于与导线的一端不同的点处。定线拓扑结构可以包括基本上跨越PLD 100的全部的全局导线、诸如跨越PLD 100的部分的导线之类的部分全局导线、特定长度的交错式导线、较小的局部导线、或者任何其它适合的互连资源布置。
如果期望,则可以将可编程逻辑器件(PLD)100配置成实现定制的电路设计。例如,配置RAM可以被编程成使得LAB 100、DSP 120和RAM 130、可编程互连电路(即,垂直通道140和水平通道150)、以及输入-输出元件102形成电路设计实现。
图2示出了PLD 100可以实现的电路设计的不同版本的示例。电路设计的第一版本可以包括寄存器210、220、230、240和组合逻辑245。寄存器210可以向寄存器220发送信号;寄存器220可以通过组合逻辑245向寄存器230发送该信号;并且寄存器230可以向寄存器240发送该信号。作为示例,从寄存器220通过组合逻辑245到寄存器230的路径上的延迟可能具有6纳秒(ns)的延迟,而在寄存器210和220之间以及在寄存器230和240之间的延迟可能具有0 ns的延迟。因而,电路设计的第一版本可以在166 MHz的频率下操作。
对电路设计的第一版本执行寄存器重定时可以创建电路设计的第二版本。例如,可以向后将寄存器230推动通过组合逻辑245的部分(有时候称为“向后”重定时),从而将电路设计的第一版本的组合逻辑245分为电路设计的第二版本的组合逻辑242和244。在电路设计的第二版本中,寄存器210可以向寄存器220发送信号;寄存器220可以通过组合逻辑242向寄存器230发送该信号;并且寄存器230可以通过组合逻辑244向寄存器240发送该信号。
作为示例,从寄存器220通过组合逻辑242到寄存器230的路径上的延迟可能具有4ns的延迟,并且从寄存器230通过组合逻辑244到寄存器240的延迟可能具有2 ns的延迟。因而,电路设计的第二版本可以在250 MHz的频率下操作,其由具有最长延迟的路径(有时候称为关键路径)限制。
对电路设计的第二版本执行寄存器重定时可以创建电路设计的第三版本。例如,可以向前将寄存器220推动通过组合逻辑242的部分(有时候称为“向前”重定时),从而将电路设计的第二版本的组合逻辑242分成电路设计的第三版本的组合逻辑241和243。在电路设计的第三版本中,寄存器210可以通过组合逻辑241向寄存器220发送信号;寄存器220可以通过组合逻辑243向寄存器230发送该信号;并且寄存器230可以通过组合逻辑244向寄存器240发送该信号。
作为示例,从寄存器210通过组合逻辑241到寄存器220、从寄存器220通过组合逻辑243到寄存器230、以及从寄存器230通过组合逻辑244到寄存器240的路径上的延迟可能都具有2 ns的延迟。因而,电路设计的第三版本可以在500 MHz的频率下操作,其是电路设计的第一版本可以在其处操作的频率的三倍。
如果期望,则诸如图1的垂直定线通道140或者水平定线通道150之类的定线资源可以包括流水线元件,其可以促进寄存器重定时。图3描绘了依照实施例的使用寄存器的流水线式定线资源300。如所示,流水线式定线资源300包括第一多路复用器302、驱动器304、寄存器306和第二多路复用器308。
多路复用器302可以是驱动器输入多路复用器(DIM)或者功能块输入多路复用器(FBIM)。DIM可以从多个源选择信号并且将所选择的信号发送到驱动器304,所述驱动器304驱动对应导线。所述多个源可以包括来自功能块和其它定线导线的输出的信号,所述其它定线导线在与所述导线相同或者正交的方向上行进。FBIM向功能块输出信号并且可以从多个定线导线选择信号。
如在图3中所示,多路复用器302可以通过将其输出提供给寄存器306的数据输入而成流水线。流水线式定线资源300中的多路复用器308可以直接接收多路复用器302的输出并且还可以接收来自寄存器306的数据输出。
虽然流水线式定线资源300包括寄存器306,但是本领域技术人员将认识到,不同的寄存器实现可以用于存储定线信号,仅举几例,诸如边沿触发的触发器、脉冲锁存器、透明-低锁存器、透明-高锁存器。因而,为了没有不必要地使本发明的实施例模糊,我们将流水线式定线资源中的存储电路称为流水线存储元件。
多路复用器308可以使得流水线式定线资源300能够被用在非流水线模式中或者流水线寄存器模式中。在非流水线模式中,多路复用器308的输出选择多路复用器302的直接输出。在流水线模式中,多路复用器308可以选择寄存器306的输出。多路复用器308可以将其输出提供给驱动器电路304,并且驱动器电路304的输出可以用于驱动定线导线。定线导线可以跨越多个功能块(例如,针对具有DIM的流水线式定线资源)。替代地,定线导线可以在功能块内部(例如,针对具有FBIM的流水线式定线资源)。
每一个DIM/FBIM可以包括寄存器,诸如寄存器306,使得所有定线多路复用器都是流水线式的。然而,在一些实施例中,这可能是不必要的,因为所提供的能力可能超出设计要求。因而,在某些实施例中,定线多路复用器的仅一部分(诸如,一半或者四分之一)可能是流水线式的。例如,信号可能花费150皮秒(ps)横贯给定长度的导线,但是时钟信号可能被约束成以650 ps时钟周期进行操作。因而,每四个导线提供流水线寄存器(诸如,寄存器306)在该示例中可以是足够的。替代地,寄存器可以放置得比每四个导线更频繁(例如,每两个导线),以在使用哪些寄存器的选择方面提供更高自由度。
流水线式定线资源,诸如流水线式定线资源300,可以促进寄存器重定时操作,诸如在图2中图示的寄存器重定时。例如,考虑寄存器230由在流水线寄存器模式中操作的流水线式定线元件的第一实例实现(即,寄存器230由流水线式定线资源300的第一实例的寄存器306实现)的场景。进一步考虑,从寄存器220通过组合逻辑245到寄存器230的路径包括在非流水线模式中操作的流水线式定线元件的第二实例。因而,将流水线式定线元件的第一实例从操作于流水线寄存器模式中切换到操作于非流水线模式中和将流水线式定线元件的第二实例从操作于非流水线模式中切换到操作于流水线寄存器模式中可以将第一版本变换成在图2中呈现的电路设计的第二版本。
电路设计系统中的计算机辅助设计(CAD)工具可以评估寄存器重定时是否可以改进电路设计的当前版本的性能,或者电路设计的当前版本是否满足给定性能标准。如果期望,并且在CAD工具确定寄存器重定时将改进电路设计的当前版本的性能或者电路设计的当前版本错过给定性能标准的情况下,CAD工具可以执行寄存器重定时操作,所述寄存器重定时操作将电路设计的当前版本变换成电路设计的另一个版本(例如,如在图2中图示的那样)。
在图4中示出依照实施例的说明性电路设计系统400。电路设计系统400可以实现在集成电路设计计算装备上。例如,系统400可以基于一个或多个处理器,诸如个人计算机、工作站等。(多个)处理器可以使用网络(例如,局域网或广域网)链接。这些计算机中的存储器或者外部存储器和存储设备,诸如内部和/或外部硬盘,可以用于存储指令和数据。
基于软件的组件,诸如计算机辅助设计工具240和数据库430,驻留在系统400上。在操作期间,可执行软件,诸如计算机辅助设计工具420的软件,在系统400的(多个)处理器上运行。数据库430用于存储用于系统400的操作的数据。一般地,软件和数据可以存储在系统400中的任何计算机可读介质(存储装置)上。这样的存储装置可以包括计算机存储器芯片、可移动的和固定的介质,诸如硬盘驱动、闪速存储器、压缩盘(CD)、数字多功能盘(DVD)、蓝光盘(BD)、其它光学介质、以及软盘、磁带、或者(多个)任何其它适合的存储器或存储设备。当系统400的软件被安装时,系统400的存储装置具有指令和数据,所述指令和数据使系统400中的计算装备执行各种方法(过程)。当执行这些过程时,计算装备被配置成实现电路设计系统的功能。
计算机辅助设计(CAD)工具420可以由单个供应商或者由多个供应商提供,计算机辅助设计(CAD)工具420中的一些或全部有时候被共同地称为CAD工具、电路设计工具或者电子设计自动化(EDA)工具。工具420可以被提供作为工具的一个或多个套件(例如,用于执行与实现可编程逻辑器件中的电路设计相关联的任务的编译器套件)和/或作为一个或多个分离的软件组件(工具)。(多个)数据库430可以包括仅由一个或多个特定工具访问的一个或多个数据库,并且可以包括一个或多个共享的数据库。共享的数据库可以由多个工具访问。例如,第一工具可以将用于第二工具的数据存储在共享的数据库中。第二工具可以访问共享的数据库以检索由第一工具存储的数据。这允许一个工具向另一个工具传递信息。工具还可以在不将信息存储在共享的数据库中的情况下在彼此之间传递信息,如果期望的话。
在图5中示出可以在电路设计系统(诸如图4的电路设计系统400)中使用的说明性计算机辅助设计工具520。
设计过程可以以集成电路设计的功能规范(例如,集成电路设计的功能或行为描述)的制定而开始。电路设计者可以使用设计与约束录入(entry)工具564来指定期望的电路设计的功能操作。设计与约束录入工具564可以包括工具,诸如设计与约束录入辅助设备566和设计编辑器568。设计与约束录入辅助设备,诸如辅助设备566,可以用于帮助电路设计者从现有电路设计的库定位期望的设计,并且可以向电路设计者提供计算机辅助的帮助以用于录入(指定)期望的电路设计。
作为示例,设计与约束录入辅助设备566可以用于为用户呈现选项屏幕。用户可以点击屏幕上的选项以选择正被设计的电路是否应当具有某些特征。设计编辑器568可以用于(例如,通过录入硬件描述语言代码行)录入设计,可以用于(例如,使用设计与约束录入辅助设备)编辑从库获得的设计,或者可以帮助用户选择和编辑适当的预先封装的代码/设计。
设计与约束录入工具564可以用于允许电路设计者使用任何适合的格式来提供期望的电路设计。例如,设计与约束录入工具564可以包括允许电路设计者使用真值表录入电路设计的工具。真值表可以使用文本文件或者时序图来指定,并且可以从库导入。真值表电路设计与约束录入可以用于大电路的部分或者用于整个电路。
作为另一个示例,设计与约束录入工具564可以包括示意性捕获工具。示意性捕获工具可以允许电路设计者在视觉上从组成部分(诸如逻辑门以及逻辑门的组)构造集成电路设计。先前存在的集成电路设计的库可以用于允许设计的期望部分利用示意性捕获工具导入。
如果期望,则设计与约束录入工具564可以允许电路设计者使用硬件描述语言将电路设计提供给电路设计系统400,所述硬件描述语言诸如Verilog硬件描述语言(VerilogHDL)、超高速集成电路硬件描述语言(VHDL)、SystemVerilog或者更高级的电路描述语言,仅举几例,诸如OpenCL或者SystemC。集成电路设计的设计者可以通过利用编辑器568写入硬件描述语言代码而录入电路设计。代码块可以从用户维护的或者商业的库导入,如果期望的话。
在已经使用设计与约束录入工具564录入设计之后,可以使用行为模拟工具572模拟电路设计的功能性能。如果设计的功能性能不完整或者不正确,则电路设计者可以使用设计与约束录入工具564对电路设计做出改变。在已经使用工具574执行综合操作之前,可以使用行为模拟工具572来验证新的电路设计的功能操作。(例如,在逻辑综合之后)如果期望,则还可以将诸如行为模拟工具572之类的模拟工具用在设计流程中的其它阶段处。可以将行为模拟工具572的输出以任何适合的格式(例如,真值表、时序图等)提供给电路设计者。
一旦已经确定电路设计的功能操作令人满意,逻辑综合与优化工具574就可以例如使用来自关于由已经被选择用以产生集成电路的铸造厂所支持的有针对性的过程的特定库的门来生成电路设计的门级网表。替代地,逻辑综合与优化工具574可以使用有针对性的可编程逻辑器件(即,在特定可编程逻辑器件产品或产品家族的逻辑与互连资源中)的门来生成电路设计的门级网表。
逻辑综合与优化工具574可以通过做出硬件的适当选择来优化设计以基于由逻辑设计者使用工具564录入的电路设计数据和约束数据而实现电路设计中的不同逻辑功能。作为示例,逻辑综合与优化工具574可以基于电路设计中的寄存器之间的组合路径的长度以及由逻辑设计者使用工具564录入的对应时序约束来执行多级逻辑优化和技术映射。
在逻辑综合与优化使用工具574之后,电路设计系统可以使用诸如放置、定线与物理综合工具576之类的工具来执行物理设计步骤(布局综合操作)。工具576可以用于确定将由工具574产生的门级网表的每一个门放置在哪里。例如,如果两个计数器彼此交互,则工具576可以将这些计数器定位在相邻区中以减少互连延迟或者以满足指定最大准许互连延迟的时序要求。工具576创建用于任何有针对性的集成电路(例如,用于给定的可编程集成电路,诸如现场可编程门阵列(FPGA))的电路设计的有序且高效的实现。
诸如工具574和576之类的工具可以是编译器套件的部分(例如,由可编程逻辑器件供应商提供的编译器工具的套件的部分)。在某些实施例中,诸如工具574、576和578之类的工具还可以包括时序分析工具,诸如时序估计器。这允许工具574和576在实际产生集成电路之前满足性能要求(例如,时序要求)。
作为示例,工具574和576可以通过使寄存器移动通过组合逻辑(例如,通过逻辑与、或、异或(XOR)、以及其它适合的门、查找表(LUT)、多路复用器、算术运算符等)而执行寄存器重定时。工具574和576可以推动寄存器向前或向后跨过组合逻辑,如在图2中所图示。如果期望,则工具574和576可以通过配置流水线式定线资源(诸如图3的流水线式定线资源300)来执行寄存器的向前和向后推动以在非流水线模式中操作或者作为流水线式定线元件操作。以该方式使用的物理综合工具576因此还可以用于执行寄存器重定时。
在已经使用工具576生成期望的电路设计的实现之后,可以使用分析工具578来分析和测试该设计的实现。例如,分析工具578可以包括时序分析工具、功率分析工具或者形式验证工具,仅举几例。
在已经使用工具520并且依靠有针对性的集成电路技术完成令人满意的优化操作之后,工具520可能产生集成电路的掩模级布局描述或者用于对可编程逻辑器件编程的配置数据。
在图6中示出在使用图5的工具520产生集成电路的掩模级布局描述中所牵涉的说明性操作。如在图6中所示,电路设计者可以首先提供设计规范602。设计规范602一般地可以是以应用代码(例如,C代码、C++代码、SystemC代码、OpenCL代码等)的形式提供的行为描述。在一些场景中,设计规范可以以寄存器传输级(RTL)描述606的形式来提供。
RTL描述可以具有以寄存器传输级描述电路功能的任何形式。例如,可以使用硬件描述语言来提供RTL描述,所述硬件描述语言诸如Verilog硬件描述语言(Verilog HDL或者Verilog)、SystemVerilog硬件描述语言(SystemVerilog HDL或者SystemVerilog)或者超高速集成电路硬件描述语言(VHDL)。如果期望,则可以将RTL描述的部分或者全部提供为示意性表示。
一般地,行为设计规范602可以包括未定时或者部分定时的功能代码(即,应用代码没有描述逐周期的硬件行为),而RTL描述606可以包括完全定时的设计描述,其以寄存器传输级详述了电路的逐周期的行为。
设计规范602或者RTL描述606还可以包括目标标准,诸如区域使用、功率消耗、延迟最小化、时钟频率优化或其任何组合。优化约束和目标标准可以共同地称为约束。
那些约束可以被提供用于单独的数据路径、单独的数据路径的部分、设计的部分或者用于整个设计。例如,举几个例子,约束可以利用设计规范602、RTL描述606(例如,作为杂注或者作为断言)、在约束文件中或者通过用户输入(例如,使用图5的设计与约束录入工具564)来提供。
在步骤604处,可以执行行为综合(有时候还称为算术综合)以将行为描述转换为RTL描述606。如果已经以RTL描述的形式提供设计规范,则可以跳过步骤604。
在步骤618处,行为模拟工具572可以执行RTL描述的RLT模拟,其可以验证RTL描述的功能性。如果RTL描述的功能性不完全或者不正确,则电路设计者可以对HDL代码做出改变(作为示例)。在RTL模拟618期间,可以将从模拟RTL描述的行为获得的实际结果与预期的结果进行比较。
在步骤608期间,逻辑综合操作可以使用来自图5的逻辑综合与优化工具574生成门级描述610。如果期望,则逻辑综合操作可以根据包括在设计规范602或RTL描述606中的约束来执行如图2中图示的寄存器重定时。逻辑综合608的输出是门级描述610。
在步骤612期间,使用例如图5的放置工具576的放置操作可以将门级描述610中的不同门放置在有针对性的集成电路上的优选位置中以满足给定目标标准(例如,使区域最小化并且使定线效率最大化,或者使路径延迟最小化并且使时钟频率最大化,或者其任何组合)。放置612的输出是所放置的门级描述613,其满足底层目标设备的合法放置约束。
在步骤615期间,使用例如图5的定线工具576的定线操作可以连接来自所放置的门级描述613的门。定线操作可以尝试满足给定的目标标准(例如,使拥堵减到最少,使路径延迟最小化并且使时钟频率最大化,或者其任何组合)。定线615的输出是掩模级布局描述616(有时候称为经定线的门级描述616)。
虽然放置与定线在步骤612和615处执行,但是可以同时执行物理综合操作617以(例如,使用图5的物理综合工具576)进一步修改和优化电路设计。如果期望,则寄存器重定时操作可以在物理综合步骤617期间执行。例如,所放置的门级描述613或者经定线的门级描述616中的寄存器可以根据包括在设计规范602或RTL描述606中的约束而四处移动。
作为示例,寄存器重定时操作可以将一些流水线式定线资源(例如,图3的流水线式定线资源300的一些实例)的配置从操作于流水线寄存器模式中改变成操作于非流水线式模式中,并且将其它流水线式定线资源(例如,图3的流水线式定线资源300的其它实例)的配置从操作于非流水线式模式中改变成操作于流水线寄存器模式中。为了避免使实施例模糊,流水线定线资源的状态的改变可以简单地称为流水线寄存器(例如,操作于流水线寄存器模式中的流水线式定线资源)的移动(例如,运动)。
例如,在第一场景中,将给定流水线式定线资源的配置从操作于流水线寄存器模式中改变成操作于非流水线式模式中可以被称为移除流水线寄存器。例如,在第二场景中,将另一个给定流水线式定线资源的配置从操作于非流水线式模式中改变成操作于流水线寄存器模式中可以被称为添加流水线寄存器。当第一和第二场景彼此对应时(例如,同时发生),则流水线寄存器可以被称为从所移除的流水线寄存器的位置移动到所添加的流水线寄存器的位置。
依照本发明的实施例,集成电路(例如,PLD 100)内的流水线寄存器(例如,图3中的寄存器306)可以共同地具有数个可能的状态(例如,在上电期间、在复位期间、在正常操作期间等)。例如,可能的状态可以是其中集成电路内的所有流水线寄存器全部具有值“0”(例如,存储值“0”)的状态。另一个可能的状态可以是其中集成电路内的所有流水线寄存器全部具有值“1”(例如,存储值“1”)的状态。在又一个示例中,流水线寄存器的第一组可以存储值“0”,并且流水线寄存器的第二组可以存储值“1”。这仅仅是说明性的。如果期望,则状态的任何集合可以在任何给定时间存储在集成电路内的流水线寄存器处。
图7示出了与集成电路(例如,PLD 100)内的示例性数据锁存寄存器相关联的数个可能状态的示意图。图7的寄存器可以是用于帮助改进设备100的性能的正常用户寄存器或流水线寄存器。特别地,与寄存器(例如,PLD 100内的流水线寄存器306的集合、PLD 100内的任何寄存器的集合、逻辑电路内的任何寄存器的集合等)相关联的可能状态可以包括状态S1、S2、S3、S4、S10、S11、S12以及复位。
从第一给定状态指向第二给定状态的箭头可以指示从第一给定状态到第二给定状态的可能转变。所述可能转变可以发生在使用一个或多个时钟信号对寄存器进行钟控时(例如,在时钟信号的时钟周期之后,在时钟信号的上升边沿处,在时钟信号的下降边沿处,在时钟信号的上升和下降边沿二者处等)以帮助寄存器锁存传入状态值。换言之,在单个状态转变期间,初级输入可能具有新的值集合,并且可以针对单个时钟周期对寄存器进行钟控以向寄存器提供新的值集合以保持。作为示例,第一上升时钟边沿可以使寄存器从状态S12转变到状态S1。作为另一个示例,诸如在状态S11没有做出转变(例如,维持状态S11)时,第二上升时钟边沿可以是半循环转变。
箭头可以具有方向性。例如,从状态S12到状态S1的转变可以如通过链接这两个状态的箭头的方向所指示的那样而发生。相比之下,状态S1到状态S12可能是不可能的转变,因为箭头没有指向该方向上。此外,状态S12到状态S11也可能是不可能的转变,因为不存在链接这两个的直接路径。然而,这仅仅是说明性的。如果期望,则状态以及状态之间的转变可以依照可以具有任何适合行为的寄存器的给定集合。例如,状态S3和S3可以在相互之间转变。
集成电路100内的上电电路或者启动电路(例如,初始化电路)可以对寄存器上电,并且因而为寄存器提供未知状态。为了操作集成电路,可能合期望的是在设备启动时将寄存器复位到已知状态。已知的初始化状态可以被称为复位状态(例如,复位状态700)。为了达到复位状态700,可以对一个或多个时钟信号进行钟控以向寄存器提供复位序列(例如,在可能状态之间的转变的特定集合)。如果期望,则可以将初始化电路用于向寄存器提供复位序列。复位序列可以是保证不管寄存器被上电至哪个状态都可以使用复位序列达到复位状态700的转变的集合。例如,在做出到复位状态700的最后转变之前,对于一些初始状态而言,复位序列可以转变到状态S3。作为另一个示例,复位序列可以使寄存器从状态S11转变到复位状态700。这仅仅是说明性的。如果期望,则任何复位序列可以用于将流水线寄存器带至复位状态700。
在达到复位状态700之后,流水线寄存器可以在被称为合法状态(诸如合法状态702)的状态的第一集合中操作。换言之,在使流水线寄存器复位之后,仅合法状态可以由流水线寄存器可访问。在复位操作之后可能没有被访问的状态称为非法状态,诸如非法状态704。例如,在达到复位状态700之后,从复位状态700的所有其它转变可以在状态S1、S2、S3、S4和复位(共同地,合法状态702)之间循环。换言之,可能不存在从合法状态702到非法状态704中的任何状态(例如,状态S10、S11和S12)的转变。
图7的示意图可以应用于给定配置中的寄存器。当给定配置改变时,图7的示意图可以相应地改变。例如,图5的工具576可以执行重定时操作,所述重定时操作改变寄存器的配置(例如,使寄存器移动跨过组合逻辑的部分)。寄存器本身的数目可以在经重定时的电路中不同,这暗示状态的数目也可以在经重定时的电路中不同。因而,原始复位序列可能不能够计及配置改变并且将经改变的配置中的寄存器恰当地复位到复位状态。
特别地,图8A示出了可以被重定时以如图2中所描述的那样更高效地操作的集成电路100内的说明性电路,诸如电路800。电路800可以包括逻辑与非门、逻辑与门804和806、以及寄存器810、812和814。寄存器810、812和814中的一个或多个可以是流水线寄存器。
逻辑与非门802可以具有耦合到输入b的第一输入。逻辑与非门802可以具有耦合到寄存器810的输出的第二输入。寄存器810的输入端子(例如,数据输入端子)可以耦合到输入a。与门804可以具有两个输入端子。与门804的第一输入端子可以耦合到寄存器810的输出端子。与门804的第二输入端子可以耦合到寄存器812的输出。寄存器812的输入端子(例如,数据输入端子)可以耦合到输入a。与门806可以具有两个输入端子。与门806的第一输入端子可以耦合到与非门802的输出端子。与门806的第二输入端子可以耦合到与门804的输出端子。寄存器814可以接收与门806的输出并且提供输出h。可以使用给定时钟信号对寄存器810、812和814进行钟控(例如,寄存器810、812和814可以是相同时钟域的部分)。这仅仅是说明性的。如果期望,则可以使用任何适合的钟控配置。
可以使用集成电路100内的初始化电路(未示出)来执行用于电路800的上电过程。初始化电路还可以使用复位序列执行复位操作。如结合图7所描述的,在上电之后,并且在复位之前,流水线寄存器可以保持未知状态。例如,寄存器810可以保持值“0”,寄存器812可以保持值“0”,并且寄存器814可以保持值“1”。替代地,寄存器810、812和814可以被上电至任何其它状态。寄存器810、812和814可以使用复位序列进行复位以向寄存器810、812和814提供已知的复位状态值。例如,电路800可能具有寄存器810保持值“0”、寄存器812保持值“0”并且寄存器814保持值“0”的复位状态。将电路800带至复位状态的相关联的复位序列包括使用时钟信号在单个时钟周期内钟控的单个转变。特别地,在所述单个时钟周期期间,与非门802可以从输入b接收值“1”,而寄存器810和812可以从输入a接收值“0”。
在所述单个时钟周期之后,寄存器810和812被提供已知值“0”。寄存器814也可以处在已知状态“0”处,因为不管存储在寄存器810和812中的之前值如何,寄存器814都将在所述单个时钟周期之后保持值“0”。例如,如之前所描述的,如果寄存器810和812二者在所述单个时钟周期之前保持值“0”,则与门806将在其第一输入端子处接收值“1”并且在其第二输入端子处接收值“0”,并且将在所述单个时钟周期期间向寄存器814提供值“0”。省略了其它场景以没有不必要地使本发明的实施例模糊。
在实施例中,工具576可以对图8A的电路800执行重定时以移动寄存器810跨过节点820(例如,扇出节点820),如由虚线箭头822指示的。继重定时操作之后,图8A的电路800可以变换成图8B的经重定时的电路800'。
作为重定时的结果,寄存器810可以从经重定时的电路800'移除并且被寄存器810-1和810-2替换。与非门802的第二输入端子可以耦合到寄存器810-1的输出端子。寄存器810-1的数据输入端子可以从输入a接收值。与门804的第一输入端子可以耦合到寄存器810-2的输出端子。寄存器810-2的数据输入端子可以从输入a接收值。
如之前结合复位寄存器814所描述的,寄存器814可以处在已知值“0”处,不管存储在寄存器810和812中的之前值在所述单个时钟周期之后如何。换言之,存储在寄存器814处的值在所述单个时钟周期之后可以是确定性的。然而,在经重定时的电路800'中,存储在寄存器814处的值在所述单个时钟周期之后可能不是确定性的。例如,在上电之后并且在复位操作之前,寄存器810-1、810-2和812可以分别具有逻辑值“0”、“1”和“1”。因此,在如图8A中所描述的那样复位的所述单个时钟周期之后,与门806可以在其第一输入处接收逻辑值“1”并且还在其第二输入处接收逻辑值“1”。因此,寄存器814可以在该单个周期之后保持逻辑值“1”,并且经重定时的电路800'可以不处于复位状态中。因为在经复位的电路800'的至少一个可能的上电状态的情况下,经复位的电路800'不能使用单个时钟周期复位序列达到复位状态,所以将合期望的是提供新的复位序列,所述新的复位序列可以恰当地帮助经重定时的电路800'达到预期的复位状态。
当寄存器810-1和810-2可以不保持/存储相同值时(例如,当一个保持逻辑“0”并且另一个保持逻辑“1”时),出现关于单个时钟周期复位序列的问题。如果寄存器810-1和810-2存储相同值,则存储在寄存器814处的值可以如在电路800中那样为确定性的。为了为寄存器810-1和810-2提供相同值,可以将调整序列添附(更具体地,预置)到单个时钟周期复位序列。换言之,单个时钟周期复位序列可能延迟调整序列的数个时钟周期。
调整序列可以具有指定状态之间的数个转变的给定长度(例如,调整长度或者基于调整值的长度)。换言之,所述给定长度可以确定数个时钟周期,所述数个时钟周期可以由经重定时的电路(例如,经重定时的电路800')进行钟控,以向寄存器提供逻辑值来帮助使寄存器复位。例如,所述给定长度可以基于集成电路100内的电路的类型来计算。可以通过经由其类型来表征集成电路100内的不同电路来确定计算过程,如在随后的实施例中详述的。
为了使经重定时的电路800'恰当地复位,可以将所述给定长度计算为等于1。在所述数个时钟周期期间(例如,在实现调整序列时),可以通过向初级输入应用随机值而将随机值(例如,逻辑值“0”和/或“1”)提供给寄存器(例如,寄存器810-1、810-2和812)。因为寄存器810-1和810-2的输入端子都耦合到扇出节点820(其耦合到输入a),所以在调整序列持续的一个时钟周期期间,当在输入a处提供随机逻辑值“1”或“0”时,寄存器810-1和810-2可以被提供相同的随机值。照此,在使用初始化电路实现调整序列之后,单个时钟周期复位序列可以用于使经重定时的电路800'恰当地复位。
调整序列可以基本上取决于时钟周期的数目并且不取决于初级数据输入(例如,提供给寄存器的数据)。换言之,允许寄存器在整个调整序列期间接收随机初级输入值。因而,调整序列可以被称为具有数个“空”时钟周期。
通过调整序列预置的复位序列可以被称为经调整的复位序列或者经重定时的复位序列。具有长度1的调整序列的示例仅仅是说明性的。如果期望,则调整序列可以具有任何适合的长度。调整序列还可以提供非随机的值,如果期望的话。
依照实施例,诸如在图8A中示出的电路800之类的电路在本文中可以被称为“原始”电路(例如,在重定时之前的电路,或者一般地,在用于优化的任何寄存器移动之前的电路,所述任何寄存器移动诸如寄存器合并、寄存器复制等)。与原始电路相关联的复位序列在本文中可以被称为“原始”复位序列。已经被修改的电路,诸如在图8B中示出的电路800',在本文中可以称为经重定时的电路(例如,重定时之后的电路)。与经重定时的电路相关联的复位序列在本文中可以称为“经重定时的”复位序列,一般地是指计及各种类型的寄存器移动,称为“经调整的”复位序列。
特别地,电路(例如,电路800')在本文中可以称为原始电路(例如,电路800)的经c周期延迟的版本,因为c个时钟周期的调整序列可以用于使原始复位序列延迟以生成经调整的复位序列。例如,电路800'可以是电路800的1周期延迟的版本,因为一个时钟周期的调整序列可以用于使原始复位序列延迟以生成经调整的复位序列。
图9示出了用于操作在重定时操作之后的集成电路(例如,集成电路100)内的初始化电路(例如,启动电路、上电电路等)以使集成电路恰当地准备用于正常操作的说明性时序图。在时间t0处,可以使集成电路100以及集成电路100内的流水线寄存器上电(例如,被提供一个或多个电源)。在上电之后,初始化电路可以向经重定时的电路提供c数目的“空”时钟周期。换言之,在上电之后,初始化电路可以向集成电路100提供调整序列。数目c(有时候在本文中称为调整值c)因此限定调整序列的长度。
在时间t1处,初始化电路可能已经完成实现长度c的调整序列。初始化电路然后可以将原始复位序列提供给集成电路100。设计者或者用户可以在设计工具520移动集成电路100内的寄存器以用于优化(例如,移动寄存器以用于重定时、合并等)之前提供原始复位序列。在时间t2处,集成电路100可能准备好开始正常操作。换言之,集成电路100内的寄存器可能已经进入复位状态。寄存器的随后操作可能发生在合法状态内。
调整序列的长度c(有时候简单地称为调整/延迟值c)可以通过第一表征类型的寄存器运动来计算。在实施例中,寄存器移动跨过的电路元件的类型可以影响电路元件的计数器值并且因此影响调整值c。特别地,图10A示出了逻辑与门1000。逻辑与门1000可以具有第一输入a、第二输入b和输出z。逻辑与门1000可以是合理元件。
将合理元件限定为使用它的输入值的某组合可获得它的所有输出值组合的电路元件。例如,逻辑与门1000可以具有仅一个输出(例如,输出z)。输出z的所有可能的输出值包括逻辑值“0”或者逻辑值“1”。当输入a具有逻辑值“0”并且输入b具有逻辑值“0”时,输出z可以具有逻辑值“0”。换言之,使用输入值的至少一个集合{0,0}可获得输出值“0”。当输入a具有逻辑值“1”并且输入b具有逻辑值“1”时,输出z可以具有逻辑值“1”。换言之,使用输入逻辑值的至少一个集合{1,1}可获得输出逻辑值“1”。因为两个输出逻辑值“0”和“1”是分别可获得的,所以逻辑与门1000是合理元件。
图10B示出了电路1010,其包括逻辑与门1012和反相器1014。与门1012的第一输入接收输入a,而与门1012的第二输入经由反相器1014接收经反相的输入a。与门1012可以在输出z处生成输出值。电路1010因此可以接收输入a并且生成输出z。电路1010可以被限定为非合理元件,如下文所描述的。
非合理元件可以是不满足如之前描述的合理元件的要求的电路元件。特别地,对于电路1010而言,利用其输入组合中的任一个都不可获得输出逻辑值“1”。
依照实施例,图10C示出了扇出电路1020(例如,横生枝节的扇出节点,诸如图8B的扇出节点820)。扇出电路可以具有输入x,以及输出y和z。扇出电路1020可以是非合理元件。特别地,不可获得(例如,不可能使用输入值生成)其中输出y处的值不同于输出z处的值的输出值组合,因为这两个输出节点被有效地缩短。换言之,扇出电路1020可能不能够生成其中输出y具有输出逻辑值“1”并且输出z具有输出逻辑值“0”或者反之的输出组合。
计数器值c(有时候在本文中称为寄存器移动计数器值c)可以通过寄存器移动跨过的每一个非合理电路元件来维持。替代地,在非合理电路元件外部的电路可以维持与每一个对应的非合理电路元件相关联的c计数器值。为了简化,当非合理元件被指示维持其c计数器值时,可能的是c计数器值存储在非合理元件内部或者外部的任何位置处。如果期望,则合理的电路元件可以(总是)具有为0的c计数器值。调整值c可以是所有c计数器值中的最大值(例如,在所有非合理电路元件之中的c计数器值中的最大值)。
图10A-10C仅仅是说明性的。如果期望,则可以将任何电路表征为合理或者非合理的。例如,可以将其它逻辑门、其它类型的扇出电路、LUT或者任何适合的电路分类为合理元件或者非合理元件。分类为非合理元件的电路然后可以维持寄存器移动计数器值c。
在重定时、寄存器合并、寄存器复制、或者可以使寄存器移动跨过电路元件的任何其它过程之前,所有电路元件(包括非合理电路元件)的c计数器值可能为0。随着重定时和其它寄存器运动过程的发生,在给定非合理电路元件处的c计数器值可能针对在向前的方向上(例如,在从给定非合理元件的输入侧到给定非合理元件的输出侧的方向上)移动跨过给定非合理电路元件的寄存器的每一个集合而增加1。
使寄存器的给定集合在向前的方向上移动跨过给定非合理元件可以包括从给定非合理元件的每一个输入移除寄存器并且向给定非合理元件的一个或多个输出添加寄存器。这样的运动可以将给定非合理元件处所维持的c计数器值增加1。使寄存器的两个给定集合在向前的方向上移动跨过给定非合理元件可以包括从给定非合理元件的每一个输入移除两个寄存器并且向给定非合理元件的一个或多个输出添加两个寄存器。这样的运动可以使给定非合理元件处所维持的c计数器值增加2。在给定非合理元件处的经更新的c计数器值可以被无限期地维持(例如,维持以计及任何将来的更新)。如果期望,则c计数器值可以被持久地维持直至调整值被计算以生成最终经重定时的电路的复位序列。
作为示例,图10A中的与门1000可以具有耦合到其输入a和b中的每一个的寄存器(未示出)。在该配置中,c计数器值可以为0。在向前的重定时期间,在其输入中的每一个处的寄存器可以被移除,并且可以在其输出z处添加新的寄存器。继重定时操作之后,c计数器值可以保持在0处,因为与门1000是合理元件。
作为另一个示例,图10B中的电路1010可以具有耦合到输出z的两个寄存器(未示出)。在该配置中,c计数器值可以是0。电路1010可以(由用户)利用这样的配置进行设计。在向后的重定时期间,来自输出z的单个寄存器可以被移除,并且可以将对应的寄存器添加到电路1010的输入a。继该重定时操作之后,c计数器值可以保持在0处,而同时电路1010是非合理元件。运动构成向后的运动(例如,寄存器从电路1010的输出侧到电路1010的输入侧的运动)。跨过非合理元件的向后运动可以使c计数器值减小(类似于使c计数器值增加的向前运动)。然而,c计数器值可以仅是非负整数(例如,完整数)。照此,c计数器值的最小值受限于底值0。
作为另一示例,图10C中的电路1020可以具有耦合到输入x的三个寄存器(未示出)。在该配置中,c计数器值可以为0。在向前的重定时期间,三个寄存器中的两个可以从输入x移除,并且可以将两个对应的寄存器添加到电路1020的每一个输出(例如,输出y和z)。继重定时操作之后,c计数器值可以增加2,因为两个寄存器被向前跨过非合理元件(例如,电路1020)移动了。
虽然结合图10A-10C描述了在重定时期间移动寄存器,但是这仅仅是说明性的。如果期望,则在重定时外部的寄存器运动可以促进调整对应的c计数器值。换言之,如之前所描述的,c计数器值(对于每一个非合理元件而言)可以在重定时期间维持和更新,如在图6的步骤617期间通过图5的工具576所执行的。
此外,c计数器值可以在重定时操作之前维持和更新。例如,图5的优化工具574可以在图6的步骤608或者617期间执行寄存器复制和寄存器合并。因而,c计数器值可以在优化操作期间维持和更新,如在步骤608或者617期间所执行的。在步骤608或617之后针对每一个非合理元件的最终经更新的c计数器值可以随后在重定时期间使用和更新。事实上,如果期望,则可以贯穿设计过程(例如,对于设计过程的任何或所有步骤)维持和更新c计数器值以计及寄存器跨过非合理元件的任何合格的向前运动。例如,在逻辑综合、物理综合、放置、定线等期间,c计数器值可以不断并且持久地维持和更新。
依照实施例,图11A-11C示出了与寄存器复制和合并相关联的说明性电路配置。特别地,图11A示出了元件A、B、C和D。例如,电路元件A-D可以是查找表(LUT)电路。元件A通过寄存器1102和扇出电路1104(例如,分成三个不同的分支的扇出节点)二者耦合到元件B、C和D中的每一个。在该配置中,寄存器1102可以由元件B、C和D共享。扇出节点1104在本文中可以称为与节点1104相关联的全局网。
寄存器复制可以发生在连接到单个寄存器的两个或更多元件可以相互远离时。因为这两个或更多元件相互远离,所以使用两个或更多分离的寄存器来同步这两个或更多元件的时序可能是更容易的。这仅仅是说明性的。如果期望,则寄存器复制可以作为任何操作的部分而发生以优化集成电路内的元件的时序。
作为示例,元件B和C可以(例如,在集成电路100的平面布置图上)相互远离地间隔开。在寄存器复制期间,寄存器1102可以被移除,并且在其地点处,寄存器1102-1和1102-2可以被添加到耦合于元件B和C的扇出电路1104的两个输出。换言之,与节点1104相关联的全局网可以分成两个。在配置方面,该向前的移动可以等效于跨过扇出电路1104的向前重定时移动。在该配置中,寄存器1102-1可以仅耦合到元件B(并且没有耦合到元件C和D),而寄存器1102-2可以耦合到元件B和C二者。
此外,可能合期望的是执行其它寄存器复制使得元件B、C和D中的每一个具有它自己专用的寄存器。如在图11C中所示,可以进一步添加寄存器1102-3。换言之,与节点1104相关联的全局网可以进一步分成三个。在该配置中,寄存器1102-1可以仅耦合到元件B,寄存器1102-2可以仅耦合到元件C,并且寄存器1102-3可以仅耦合到元件D。
如之前所论述的,每一个非合理元件可以维持和更新它自己分离的c计数器值。此外,当给定非合理元件包括多于两个输出时,d计数器值(有时候在本文中称为复制的计数器值d或者副本计数器值d)也可以在非合理元件处维持和更新。副本计数器值d可以指示已经出现的副本的数目,其一般可以等于比在输出侧上添加的寄存器的数目少的数目。
例如,在图11A-11C中,扇出电路1104可以是非合理元件。因而,当图11A中的寄存器1102被移除并且在图11B中添加寄存器1102-1和1102-2时,如之前所描述的,针对电路1104的c计数器值可以增加1。此外,因为电路1104包括多于两个输出(例如,到元件B的输出、到元件C的输出以及到元件D的输出),所以副本计数器值d可以维持和更新。在该场景中,仅出现了副本的一个实例。因此,副本计数器值d增加到值1。当进一步添加寄存器1102-3时,因为电路1104已经被访问并且对应的c计数器值已经被添加,所以针对电路1104的c计数器值可以保持不变。在该场景中,针对电路1104的副本计数器值d可以增加1,因为已经出现副本的另一个实例。
换言之,图11A中的电路1104可以具有为0的c计数器值(例如,为0的寄存器移动计数器值)和为0的d计数器值(例如,为0的副本计数器值)。图11B中的电路1104可以具有为1的c计数器值和为1的d计数器值。图11C中的电路1104可以具有为1的c计数器值和为2的d计数器值。
图11A-11C还可以示出用于寄存器合并的可能配置。寄存器合并可以被实现以节省寄存器资源或者出于任何其它合期望的原因。当寄存器合并针对非合理元件发生时,针对非合理元件的d计数器值可以首先减小直至d计数器值为0,在该时间处,针对非合理元件的c计数器值可以减小1。c计数器值可以不是负的并且可以具有底值0。
作为示例,寄存器合并可以以诸如图11C中所示的电路之类的电路而开始。在图11C中,元件C和D中的每个分别具有它自己专用的寄存器,寄存器1102-2和1102-3。寄存器合并可能发生以合并寄存器1102-2和1102-3使得元件C和D共享公共的寄存器(例如,图11B中的寄存器1102-3)。
如之前所论述的,针对图11C中的电路1104的c计数器值可以为1,并且针对图11C中的电路1104的d计数器值可以为2。因而,当寄存器1102-2和1102-3合并时,针对图11C中的电路1104的d计数器值可以减小1,从而生成图11B的配置和图11B中的电路1104的计数器值(例如,为1的c计数器值和为1的d计数器值)。值得注意的是,当该寄存器合并发生时,c计数器值没有减小,因为d计数器值尚未变为0。
此外,寄存器1102-1和1102-2可以在寄存器合并期间进一步合并。当寄存器1102-1和1102-2合并时,针对图11B中的电路1104的d计数器值可以减小1。照此,d计数器值可以达到0,并且因此,c计数器值也可以减小1,从而生成图11A的配置和图11A中的电路1104的计数器值(例如,为0的c计数器值和为1的d计数器值)。值得注意的是,c计数器值是非负的并且具有底值0。此外,c计数器值或者移动计数器值c以及d计数器值或者副本计数器值d可以在每一元件的基础上(例如,针对每一个元件的值的不同集合)以及每一时钟的基础上(例如,用于每一个时钟域的值的不同集合)维持。
之前结合图7-10描述的实施例可以在集成电路(例如,集成电路100)的设计内的局部重定时期间实现。可以在设计工具520标识要优化(例如,利用重定时、寄存器合并、寄存器复制等优化)的关键路径之后使用局部重定时。照此,关键路径可以包括非合理元件,针对所述非合理元件维持和提升相应的c(以及可选地,d)计数器值。
作为示例,在局部重定时期间,寄存器移动(例如,寄存器运动)的集合可以首先基于数个因素(例如,优化操作频率、等待时间等)进行评估。如果有的话,所述数个寄存器移动的子集被设计工具520接受。一旦被接受,寄存器移动(在逻辑设计内实现的寄存器移动)就可能影响c(以及可选地,d)计数器值。
依照实施例,图7-10的实施例还可以在全局重定时期间使用。例如,集成电路100内的每一个电路元件可以被分类为合理的/非合理的。集成电路100内的电路元件可以维持对应的寄存器移动计数器值。在执行全局重定时之后,可以追踪寄存器跨过电路元件的运动。针对集成电路100内的电路元件的对应的寄存器移动计数器值可以根据寄存器跨过电路元件的经追踪的运动而更新。
在复杂设计中,可以存在要计及的大量寄存器和元件,并且因此,可以使用被求解满足某些约束的方程组来执行全局重定时。因此,为了简化计算c计数器值的过程,可以通过曲线图中的节点和边沿来表示两个给定元件以及这两个给定元件之间的寄存器。这仅仅是说明性的。如果期望,则在局部重定时期间实现的实施例还可以使用曲线图来表示集成电路内的寄存器和元件。
依照实施例,设计工具520可以使用重定时曲线图对元件u和v以及元件u和v之间的寄存器120进行建模(表示),如图12中所示。曲线图可以包括表示元件u和v的节点u和v。曲线图还可以包括将节点u连接到节点v的边沿1202(例如,路径1202)。该边沿可以具有权重w0,所述权重w0反映元件u和v之间的寄存器1200的数目。节点u和v可以分别维持值ru和rv(有时候在本文中称为重定时变量ru和rv)。例如,节点u和v可以表示非合理元件。值ru和rv分别与寄存器跨过节点u和v的运动相关联。
按照惯例,如由箭头1204指示的寄存器跨过节点u的向前移动可以导致负整数值ru。如由箭头1206指示的寄存器跨过u的向后移动可以导致正整数值ru。类似地,如由箭头1208指示的寄存器跨过节点v的向前移动可以导致负整数值rv。如由箭头1210指示的寄存器跨过节点v的向后移动可以导致正整数值rv。使用该惯例,用于在移动寄存器之后利用边沿1202的新权重(例如,权重wnew)更新曲线图的示例性寄存器均衡方程可以被如下表示:
照此,可以将针对给定非合理元件的值r从针对给定非合理元件的c计数器值减去以生成针对给定非合理元件的经更新的c计数器值。如果期望,则可以从逻辑设计的之前步骤提供c计数器值。针对所有非合理元件的最大的经更新的c计数器值可以被选择为调整值,如之前所描述的。
该惯例的使用仅仅是说明性的。如果期望,则可以使用任何其它适合的惯例以准确地计及任何两个元件之间的数个寄存器。
使用如结合图12所描述的曲线图表示,扇出电路或者扇出节点可以由电路元件(例如,图12中的元件u或元件v)表示或者被建模为电路元件(例如,图12中的元件u或元件v)。图13示出了用于使用电路1300对扇出电路进行建模的详细曲线图表示,所述电路1300包括扇出节点。
如在图13中所示,电路1300可以包括元件(例如,逻辑元件)A、B、C和D,寄存器1302和1304的组,以及扇出电路1306。在电路1300的曲线图表示中,顶点/节点A、B、C和D可以分别表示元件A、B、C和D。另外,扇出电路1306可以由顶点F表示。因为顶点F表示非合理元件(例如,扇出电路),所以应当针对顶点F来维持和更新值rf、c和d。
如之前所描述的,因为两个寄存器将元件A耦合到元件C,所以边耦合顶点A和C可以具有权重2。类似地,因为一个寄存器将元件B耦合到扇出节点1306,所以边耦合顶点B和F可以具有权重1。因为没有寄存器将扇出节点1306耦合到元件C或D,所以对应的边具有权重0。
作为示例,虚线箭头1301可以指示寄存器1304的可能向前运动,其将使rf减小1。在求解了三个对应的寄存器均衡方程之后,将顶点B连接到顶点F的边、将顶点F连接到顶点C的边、以及将顶点F连接到顶点D的边的权重可以分别为0、1和1。
在全局重定时操作期间,可以使用该类型的图形表示对任何期望的元件进行建模。使用图13的图形表示,可以使用设计工具520生成大量寄存器均衡方程。可以将寄存器均衡方程提供给求解器(例如,约束求解器或者其它适合类型的求解器引擎)。求解器引擎还可以取得来自全局重定时操作的其它输入或者任何其它适合的输入。求解器然后可以输出与跨过每一个非合理元件的任何运动相关联的值(例如,针对i个非合理元件的ri)。
维持对应的ri值的每一个非合理元件还可以维持来自其它设计步骤的c计数器值(例如,在局部重定时、寄存器合并、寄存器复制等期间维持的c计数器值)。可以将每一个ri值从对应的c值减去以生成经更新的c计数器值,其中对于经更新的c计数器值而言最小值为0。在给定时钟域上的所有非合理元件的最大的经更新的c计数器值可以用作针对给定时钟域的调整值。如之前所描述的,调整值可以指示调整序列内的空时钟周期的数目。调整序列然后可以被预置到原始复位序列以生成经调整的复位序列。
图14示出了用于通过维持和更新计数器值以提供调整值而生成经调整的复位序列的流程图。
在步骤1400处,针对每一个时钟域和针对每一个元件(例如,针对每一个非合理元件),集成电路工具设计工具520可以保持对持续的c计数器值的追踪。
在步骤1402处,响应于(例如,在综合和优化期间)执行寄存器复制,当对应的全局网正被分割时(例如,在作为复制寄存器的结果的寄存器的向前移动期间),设计工具520可以相应地使任何c计数器值增加。此外,当对应的全局网之前被访问(例如,对应的c计数器值之前增加)时,设计工具可以将任何c计数器值维持在其给定值处。为了准确地计算给定全局网已经被再访问的次数,设计工具可以维持和更新d计数器值,其追踪在每一全局网基础、每一时钟域基础上创建了多少个寄存器副本。
在步骤1404处,响应于(例如,在综合和优化期间)执行寄存器合并,设计工具可以使表示寄存器副本的对应数目的减小的任何d计数器值减小。如果对于任何全局网而言(如由对应的d计数器值表示的)给定数目的副本等于0,则设计工具可以使对应的c计数器值减小1。
在步骤1406处,图5的工具576可以执行局部重定时。步骤1408和1410可以发生在执行对重定时进行定位的同时。在执行局部重定时的同时,如果跨过非合理元件的向前重定时移动被接受,则设计工具可以保留该元件并且在步骤1408处使针对该元件的对应c计数器值增加。在执行局部重定时的同时,如果跨过非合理元件的向后重定时移动被接受,则设计工具可以保留该元件并且在步骤1410处使针对该元件的对应c计数器值减小。任何c计数器值可以具有最小值0(例如,给定的c计数器值可能没有减小到低于0的数)。
在步骤1406处,图5的工具576可以执行全局重定时。步骤1414和1416可以发生在执行全局重定时的同时。可以在具有顶点和路径的曲线图中表示寄存器和元件(包括扇出电路)。设计工具可以基于顶点和路径而生成方程组。特别地,通过在步骤1414处将每一个扇出节点建模为非合理组合元件,设计工具可以使用约束求解器来计算所有重定时变量(例如,针对每一个非合理元件的值ri)。在步骤1416处,设计工具可以从针对正在被重定时的每一个元件(例如,针对寄存器已经移动跨过的每一个元件)的对应c计数器值减去值ri。类似地,任何c计数器值可以具有最小值0。
在步骤1418处,设计工具可以通过跨过所有非合理元件标识最大c值(例如,最大c计数器值)而生成实际调整值(例如,调整值c或者cactual)。
如之前所描述的,最大c值(例如,调整值c)可以表示调整序列内的(具有任意初级输入值的)空时钟周期的数目。调整序列可以预置(如之前所限定的)“原始”复位序列以生成经调整的复位序列。
在步骤1420处,设计工具可以验证,经重定时的电路是原始电路的c周期延迟的替换。通过提供经调整的复位序列,经重定时的电路(例如,经重定时的电路内的寄存器)可以被恰当地复位。换言之,经重定时的电路“c周期(顺序地)等效”于原始电路(即,如果经重定时的电路在上电之后被钟控c次,则它不能与在从上电起的所有可能的初始状态下开始的原始电路区分开)。
依照实施例,调整值c可以是守恒值。作为示例,小于c的替代值可以存在,并且可以用于表示调整序列内的空时钟周期的不同数目。替代值可以对应于要在原始复位序列之前预置的较短调整序列以生成较短的经调整的复位序列。如果期望,则调整值可以改变(例如,降低、减小)为替代值。较短的经调整的复位序列也可以使经重定时的电路内的寄存器恰当地复位。
依照另一个适合的实施例,设计工具可以有时候允许用户在初始化之前针对每一个时钟域指定时钟周期的最大可容忍值MAXc。换言之,预置的调整序列可以被设置成具有MAXc个时钟周期而不管cactual值如何。例如,可以基于具有预定数目的空时钟周期的预限定的复位序列以及针对电路初始化的等待时间要求来选择经延迟的初始化时钟周期的最大预定数目。对于未指定的时钟域,最大时钟周期MAXc可以被设置成无穷大。
通过确保MAXc在各种设计步骤中的每一个处满足c周期顺序等效性,该附加的约束可以全部无缝地集成到总体设计中。例如,最大值MAXc应当约束逻辑综合和/或物理综合变换(例如,MAXc应当限制寄存器副本的数量),约束局部重定时,并且约束全局重定时。如上文所描述的,可以针对每一个非合理电路元件c对计数器值进行计数,并且我们只是需要确保c决不超出MAXc。
图15是用于贯穿总体设计及流程履行MAXc的预定值的说明性步骤的流程图。在步骤1500处,可以针对每一个时钟域接收用户指定的最大可容忍值MAXc。值MAXc表示在时钟周期方面用户将在预置的调整序列中容忍的最大限制/上限。
在一个适合的布置中,通过在当前计数器值c已经达到上限MAXc时防止扇出节点上的所有其它复制,可以使用预定值MAXc来约束逻辑综合和/或物理综合变换,比如寄存器复制和合并(步骤1502)。步骤1502可以是图14中的步骤1402的子步骤。换言之,允许计数值c增加直至它达到MAXc。只要计数值c决不超出限制MAXc就允许复制。
在另一个适合的实施例中,通过在针对该非合理元件和时钟域的计数值c等于MAXc时防止跨过非合理元件的所有随后的向前重定时,值MAXc可以用于约束针对时钟域的局部重定时(步骤1504)。步骤1504可以是图14中的步骤1408的子步骤。换言之,只要计数值c决不超出最大阈值MAXc,就准许向前重定时跨过非合理元件。不存在关于向后重定时的限制,但是计数值c应当仍然具有最小值0。没有用户指定的限制的(多个)时钟域将具有无穷大的默认MAXc。
在又一个适合的实施例中,通过添加用于方程求解器的附加约束,值MAXc可以用于约束全局重定时:
其中ri是针对第i个非合理电路元件的重定时变量,并且其中ci是在全局重定时开始处针对该电路元件的持续的计数值(步骤1506)。步骤1506可以是图14中的步骤1412的子步骤。例如,考虑计数值c在全局重定时开始时等于3并且MAXc等于10的场景。在该示例中,(c-MAXc)等于-7,所以通过全局重定时器输出的为-8的ri 将违反方程2中的约束,因为重定时器正尝试执行跨过该电路元件的八个向前移动,这将把计数值c带至总计11,从而超出为10的MAXc 。在方程2中的约束适当的情况下,全局重定时器将在该特定场景中限于最小为-7的ri
在步骤1508处,设计工具可以确认,从图14的步骤1418所获得的cactual没有超出MAXc。如果cactual小于MAXc,这可能指示用户指定的MAXc过于保守,设计工具可以为用户呈现缩短原始复位序列之前的延迟的选项,因为预置的调整序列初始设置有MAXc个时钟周期(例如,步骤1510,可以为用户呈现缩短预置的调整序列的机会)。
图15的示例性步骤表示允许用户指定对于延迟的初始化而言可以容忍的每一时钟域的时钟周期的最大数目的解决方案。这是用户可见的特征,其可以不仅应用于可编程集成电路而且还应用于专用集成电路。
依照又一个适合的实施例,电路设计工具可以用于验证,经重定时的电路实际上是原始(未经重定时的)电路的c周期延迟的替换。该方法论可以在没有假定任何初始状态的情况下执行,并且将对通过设计工具计算的cactual值或者对用户指定的最大阈值MAXc二者起作用。
该验证方法可以依赖于以下关键洞悉:重定时操作是可逆的(即,经正确地重定时的电路总是可以被重定时回到其原始电路)而同时重视所指定的计数值c。例如,跨过逻辑门(例如,与门、或门、与非门、或非门、异或门等)的有效向前和向后重定时操作总是可逆的。作为另一个示例,跨过扇出节点的有效向前和向后重定时操作同样是可逆的。
图16A是图示了依照实施例可以如何将经重定时的电路重定时回到原始电路的示意图。如图16A中所示,原始电路1600可以使用重定时操作或者逻辑变换(例如,寄存器复制或者合并操作)进行修改以产生经重定时的电路1602。图16B示出了其中在门1650的输入处形成的寄存器F1和F2可以跨过逻辑与门1650向前重定时的示例。在重定时操作1651之后,这两个寄存器在门1650的输出处合并成一个寄存器F3。图16C示出了其中寄存器F1和F2可以跨过反相器1662和1664向后重定时的示例。在重定时操作1661之后,这两个寄存器在反相器1662和1664的输入处以及在门1660的输出处合并成一个寄存器F3。在两种场景中,重定时操作1651和1661是可逆的(例如,寄存器F3可以跨过图16B中的门1650向后重定时,并且寄存器F3可以跨过图16中的反相器1662/1664向后重定时)。
参照回到图16A,经重定时的电路1602可以使用c周期延迟的复位序列进行复位,所述c周期延迟的复位序列是使用结合至少图14和15所描述的步骤而获得的。c的该值由设计工具在每一时钟域的基础上计算,所述设计工具执行重定时、寄存器复制和寄存器合并。针对时钟域的c的值还可以受用户指定的最大计数值所束缚。为了验证与经重定时的电路1602相关联的计数值c的正确性,经重定时的电路1602可以重定时回到原始电路1600而同时考虑到c。其中经重定时的电路然后重定时回到原始电路以验证c周期顺序等效性的该过程有时候可以称为“反绕结构验证”。该问题可以被公式化为约束问题,其可以通过与全局重定时操作一起使用的事物类似的方程求解器进行求解。
如上文结合图2所描述的,可以将序列电路建模为有向曲线图,其具有表示组合元件的顶点和表示到其它组合元件的连接的边。每一个边具有对应的权重,其表示插入在该边/连接中的触发器的数目。每一个顶点i可以分配有重定时变量ri,其中正ri暗示向后的重定时并且其中负ri暗示向前的重定时。如上文所描述的,重定时操作可以使用方程1捕获。
为了执行验证,经重定时的电路必须被重定时回到原始电路(参见例如图16)。不能够如此做的失败指示电路没有被恰当地重定时,因为所有合法的重定时操作都是可逆的。因而,在反绕验证的上下文中的“原始”权重w0实际上表示经重定时的电路1602的边权重,而在该上下文中的“新”权重wnew实际上表示原始电路1600的边权重。假定重定时没有改变组合元件,则方程求解器可以用于针对所有i求解所有重定时变量ri
在反绕结构验证中,所有边的新权重和旧权重都已知(即,方程2中的新权重wnew仅是原始电路的边权重,而方程2中的旧权重wold仅是经重定时的电路的边权重)。知道这两个值基本上简化了重定时问题,并且不要求来自设计工具的暗示。从高水平来看,反绕验证将验证计数值c的正确性,使用对重定时曲线图的一些修改并且将新的约束添加到结构验证公式化。如果验证失败,则电路设计工具可以建议将使得验证能够成功的c的正确值。如果验证成功,则电路设计工具可以建议仍然满足顺序等效性的c的较小值。
图17是用于执行反绕结构验证的说明性步骤的示意图。在步骤1700处,集成电路设计工具可以用于(例如,使用结合图14所描述的步骤)生成经重定时的电路和对应的c值。计数值c可以等于(如在图14中的步骤1418处所确定的)cactual或者(如由用户在图15中的步骤1500处所确定的)MAXc。
在步骤1702处,电路设计验证工具可以用于对经重定时的电路执行反绕结构验证。和图14的步骤一样,诸如扇出点之类的所有非合理电路元件应当被建模为分离的节点(例如,具有m个扇出分支的扇出点可以被建模为具有一个输入和m个输出的非合理节点)。因而,重定时方程求解器还将计算针对每一个扇出点的重定时变量。
为了执行步骤1702,方程求解器可以被配置成针对有向曲线图中的每一个边来求解方程2,其中wnew现在被原始电路的worig替换,并且其中wo现在被经重定时的电路的wretimed替换(参见例如图17中的子步骤1704)。
特别地,有向曲线图中的所有非合理组合元件可以被计数值c如下约束:
方程3通过计数值c有效地限制寄存器跨过所有非合理节点的向后运动(参见子步骤1706)。通过可选地经由电路设计中的寄存器(例如,数字触发器)的总数目对重定时变量进行束缚,搜索空间可以进一步受约束。如在子步骤1708中所示,重定时变量ri可以受如下束缚:
其中MAXFF表示可用于电路设计中的重定时的触发器的总数目/最大数目。方程4有效地要求,所有重定时变量的绝对值小于或等于MAXFF。方程4中的附加约束可以帮助使反绕验证操作大幅加速。虽然要求方程3确保c周期验证的正确性,但是它还可以通过减小方程求解器的搜索空间而使反绕验证操作显著加速。在子步骤1710处,方程求解器可以用于求解所有重定时变量ri
如果验证成功,则经验证的计数值cverify可以被设置成等于跨过非合理组合元件的ri的最大值(步骤1712)。计数值cverify可以不同或者等于之前确定的计数值c。作为子步骤1714,如果经验证的计数值cverify小于计数值c,其是针对经延迟的初始化的时钟周期的所计算出的数目或者由用户指定的值,则验证工具可以向用户建议cverify(例如,如果验证成功,则验证器可以向用户建议c的较小值)。换言之,可以为用户呈现将用于延迟原始复位序列的时钟周期的数目减少到cverify并且仍然保持经重定时的电路c周期顺序地等效于原始未经重定时的电路的机会。这帮助提供一些反馈以改进设计工具的准确度,因为设计工具确定c的过度保守的值。
然而,如果验证失败,则验证工具可以尝试将经重定时的电路重定时回到原始电路,而不使用在方程3中指定的附加约束(步骤1716)。换言之,在方程3中列出的不管什么约束都可能是不正确的并且应当忽略。这指向设计工具中的潜在错误。在该情况下,验证器还可以利用c的原始值确定引起失败的约束的最小集合,所述c的原始值可以被馈送回到设计工具以用于进一步调试。
在子步骤1718处,如果针对该不受约束的问题的验证成功,则可以将cverify设置成跨过针对该时钟域的所有非合理组合元件新计算的ri的最大值。在子步骤1720处,验证工具可以可选地向用户建议将新确定的cverify作为c的可能值,其将保持经重定时的电路c周期顺序地等效于原始未经重定时的电路。如果尝试求解不受约束的问题也失败,则报告验证错误并且可以标识引起该失败的约束的最小集合(在子步骤1722处)。该反馈将帮助用户和设计工具标识重定时器和/或逻辑复制和合并中的缺陷的源(例如,有助于在验证期间调试错误的源)。
以该方式进行配置,改进的验证方法论使用受约束的随机模拟,而不尝试导出比如在常规形式验证方法中的状态等效性的形式证明。假定组合电路元件没有在重定时、逻辑复制和合并期间改变,则该验证方法将保证检测到顺序的形式验证可以找到的任何缺陷,但是在快得多的运行时间下并且不要求来自设计工具的任何重定时有关的暗示。仅要求的信息是输入和输出硬件设计描述以及如使用图14或图15的步骤所确定的每一时钟域的计数值c。
这些步骤仅仅是说明性的。现有步骤可以被修改或省略;步骤中的一些可以并行地执行;可以添加附加的步骤;并且某些步骤的次序可以颠倒或者更改。
迄今为止,已经关于集成电路描述了实施例。本文中描述的方法和装置可以被并入任何适合的电路中。例如,它们可以被并入众多类型的设备中,所述设备诸如可编程逻辑器件、专用标准产品(ASSP)和专用集成电路(ASIC)。仅举几例,可编程逻辑器件的示例包括可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电气可编程逻辑器件(EPLD)、电可擦除可编程逻辑器件(EEPLD)、逻辑单元阵列(LCA)、复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)。
在本文中的一个或多个实施例中描述的可编程逻辑器件可以是包括以下组件中的一个或多个的数据处理系统的部分:处理器;存储器;IO电路;以及外围设备。数据处理可以被用在各种各样的应用中,诸如计算机联网、数据联网、仪表化、视频处理、数字信号处理、或者其中使用可编程或者可重新编程逻辑的优点合期望的任何适合的其它应用。可编程逻辑器件可以用于执行多种不同的逻辑功能。例如,可编程逻辑器件可以被配置为与系统处理器合作地进行工作的处理器或控制器。可编程逻辑器件还可以用作仲裁器,以用于仲裁对数据处理系统中的共享资源的访问。在又一个示例中,可编程逻辑器件可以被配置为系统中的处理器与其它组件中的一个之间的接口。在一个实施例中,可编程逻辑器件可以是由ALTERA/INTEL公司拥有的设备家族中的一个。
前述仅仅说明了本发明的原理,并且本领域技术人员可以做出各种修改。前述实施例可以被单独地或者以任何组合来实现。

Claims (23)

1.一种用于使用在计算装备上运行的集成电路设计工具实现集成电路的方法,包括:
使集成电路的原始电路设计重定时以产生用于集成电路的经重定时的电路设计;
针对时钟域确定计数值c,其中使用初始化序列使原始电路设计恰当地复位,并且其中使用经延迟的初始化序列使经重定时的电路复位,针对时钟域而言所述经延迟的初始化序列相对于初始化序列延迟c个时钟周期;以及
验证使用初始化序列的原始电路设计与使用经c周期延迟的初始化序列的经重定时的电路是顺序地等效的。
2.权利要求1的方法,其中验证原始电路设计与经重定时的电路设计是c周期顺序地等效的包括执行反绕结构验证。
3.权利要求2的方法,其中执行反绕结构验证包括将经重定时的电路设计重定时回到原始电路设计,其中原始电路设计中的每一个定线路径被基于原始电路设计的所述定线路径中的寄存器的数目而分配原始加权因子,其中经重定时的电路设计中的每一个定线路径被基于经重定时的电路设计的所述定线路径中的寄存器的数目而分配经重定时的加权因子,并且其中原始加权因子和经重定时的加权因子在执行反绕结构验证之前是已知的。
4.权利要求2的方法,进一步包括:
在执行反绕结构验证的同时考虑到计数值c,其中执行反绕结构验证包括求解被约束到小于或者等于计数值c的重定时变量。
5.权利要求2的方法,进一步包括:
在执行反绕结构验证的同时考虑到集成电路上的寄存器的最大数目。
6.权利要求1-5中任一项权利要求的方法,进一步包括:
响应于确认原始电路设计与经重定时的电路设计是c周期顺序地等效的,标识与计数值c不同的新计数值cverify
7.权利要求6的方法,进一步包括:
更新经延迟的初始化序列使得使用经更新的延迟的初始化序列使经重定时的电路设计复位,所述经更新的延迟的初始化序列相对于初始化序列延迟cverify个时钟周期。
8.权利要求4的方法,进一步包括:
响应于确定原始电路设计与经重定时的电路设计不是c周期顺序地等效的,尝试在没有考虑计数值c的情况下执行反绕结构验证。
9.权利要求8的方法,进一步包括:
如果反绕结构验证在没有考虑计数值c的情况下成功,则标识与计数值c不同的新计数值cverify;以及
更新经延迟的初始化序列使得使用经更新的延迟的初始化序列使经重定时的电路设计复位,所述经更新的延迟的初始化序列相对于初始化序列延迟cverify个时钟周期。
10.权利要求8的方法,进一步包括:
如果反绕结构验证在没有考虑计数值c的情况下失败,则报告验证错误并且标识可能已经引起失败的约束的最小集合。
11.一种操作集成电路设计工具的方法,包括:
接收原始电路设计;
使原始电路设计重定时以产生经重定时的电路设计;
针对时钟域确定计数值c,其中使用初始化序列使原始电路设计恰当地复位,并且其中使用经延迟的初始化序列使经重定时的电路复位,针对时钟域而言所述经延迟的初始化序列相对于初始化序列延迟c个时钟周期;以及
通过执行反绕结构验证来确定经重定时的电路设计是否c周期顺序等效于原始电路设计。
12.权利要求11的方法,其中执行反绕结构验证包括将经重定时的电路设计重定时回到原始电路设计。
13.权利要求11-12中任一项权利要求的方法,其中执行反绕结构验证包括使用方程求解器来计算针对经重定时的电路设计中的每一个组合元件的重定时变量而同时考虑到计数值c。
14.权利要求13的方法,其中使用方程求解器求解的所计算出的重定时变量被约束到小于或等于计数值c。
15.权利要求13的方法,进一步包括:
响应于确定经重定时的电路设计不顺序等效于原始电路设计,在不使用计数值c作为约束的情况下使用方程求解器重新计算重定时变量。
16.一种非暂时性计算机可读存储介质,包括用于以下的指令:
使原始电路设计重定时以产生经重定时的电路设计;
确定计数值c以用于使用于经重定时的电路设计的复位序列延迟;以及
通过执行结构反绕验证来验证经重定时的电路设计c周期顺序等效于原始电路设计。
17.权利要求16的非暂时性计算机可读存储介质,其中用于执行结构反绕验证的指令包括用于将经重定时的电路设计重定时回到原始电路设计的指令,其中原始电路设计中的每一个定线路径被基于原始电路设计的所述定线路径中的寄存器的数目而分配原始加权因子,其中经重定时的电路设计中的每一个定线路径被基于经重定时的电路设计的所述定线路径中的寄存器的数目而分配经重定时的加权因子,并且其中原始加权因子和经重定时的加权因子在执行结构反绕验证之前是已知的。
18.权利要求16的非暂时性计算机可读存储介质,进一步包括用于以下的指令:
通过确保使用方程求解器获得的针对非合理电路元件的所有重定时变量小于或等于计数值c来约束结构反绕验证,其中非合理元件中的每个具有输入和输出,并且其中每一个非合理电路元件的输出处的所有可能输出值是使用在所述非合理元件的输入处接收的输入值的某组合不可获得的。
19.权利要求16的非暂时性计算机可读存储介质,进一步包括用于以下的指令:
将具有单个输入和多个输出的扇出节点建模为非合理电路元件。
20.权利要求16的非暂时性计算机可读存储介质,进一步包括用于以下的指令:
通过确保使用方程求解器获得的所有重定时变量的绝对值小于或等于经重定时的电路设计中的寄存器的总数目来约束结构反绕验证。
21.权利要求16-20中任一项权利要求的非暂时性计算机可读存储介质,进一步包括用于以下的指令:
响应于验证经重定时的电路设计c周期顺序等效于原始电路设计,建议小于计数值c的减小的计数值以用于使用于经重定时的电路设计的复位序列延迟。
22.权利要求16-20中任一项权利要求的非暂时性计算机可读存储介质,进一步包括用于以下的指令:
响应于验证经重定时的电路设计不c周期顺序等效于原始电路设计,建议大于计数值c的较大计数值。
23.权利要求16-20中任一项权利要求的非暂时性计算机可读存储介质,进一步包括用于以下的指令:
响应于验证经重定时的电路设计不c周期顺序等效于原始电路设计,尝试在没有考虑计数值c的情况下执行结构反绕验证;以及
如果在没有考虑计数值c的情况下结构反绕验证失败,则报告验证错误并且标识可能已经引起失败的约束的最小集合。
CN201711147190.XA 2016-11-17 2017-11-17 用于利用经延迟的初始化来验证经重定时的电路的方法 Active CN108073762B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/354,809 US10372850B2 (en) 2016-11-17 2016-11-17 Methods for verifying retimed circuits with delayed initialization
US15/354809 2016-11-17

Publications (2)

Publication Number Publication Date
CN108073762A true CN108073762A (zh) 2018-05-25
CN108073762B CN108073762B (zh) 2023-12-19

Family

ID=60190594

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711147190.XA Active CN108073762B (zh) 2016-11-17 2017-11-17 用于利用经延迟的初始化来验证经重定时的电路的方法

Country Status (3)

Country Link
US (1) US10372850B2 (zh)
EP (1) EP3324317B1 (zh)
CN (1) CN108073762B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110716823A (zh) * 2018-07-12 2020-01-21 马克西姆综合产品公司 用于连续验证器件状态完整性的系统和方法
CN111061582A (zh) * 2018-10-17 2020-04-24 豪威科技股份有限公司 检查模块和用以验证数据的方法
CN112860226A (zh) * 2021-01-28 2021-05-28 芯华章科技股份有限公司 获取逻辑系统设计的初始状态的方法、电子设备及介质

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10282508B1 (en) * 2016-07-18 2019-05-07 Altera Corporation Overcoming retiming limitations due to initial conditions conflicts
US11176293B1 (en) * 2018-03-07 2021-11-16 Synopsys, Inc. Method and system for emulation clock tree reduction
US10678983B1 (en) * 2018-05-23 2020-06-09 Xilinx, Inc. Local retiming optimization for circuit designs
US10628545B2 (en) * 2018-07-17 2020-04-21 Synopsys, Inc. Providing guidance to an equivalence checker when a design contains retimed registers

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7594211B1 (en) * 2006-11-17 2009-09-22 Synopsys, Inc. Methods and apparatuses for reset conditioning in integrated circuits
US8438511B1 (en) * 2009-12-30 2013-05-07 Cadence Design Systems, Inc. Minimal logic duplication for preserving reset behavior post-retiming
CN106096070A (zh) * 2015-05-01 2016-11-09 阿尔特拉公司 使用去填充和再填充操作来实现集成电路设计

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4837781A (en) * 1987-04-07 1989-06-06 Gigabit Logic, Inc. Phase locked loop clock synchronizer and signal detector
US6904561B1 (en) * 2001-07-19 2005-06-07 Microsoft Corp. Integrated timeline and logically-related list view
JP4082653B2 (ja) * 2001-11-15 2008-04-30 松下電器産業株式会社 高位合成方法および高位合成装置
US7120883B1 (en) 2003-05-27 2006-10-10 Altera Corporation Register retiming technique
US7003423B1 (en) * 2003-12-18 2006-02-21 Altera Corporation Programmable logic resource with data transfer synchronization
US7945880B1 (en) * 2007-05-30 2011-05-17 Cadence Design Systems, Inc. Constraint based retiming of synchronous circuits
US8863067B1 (en) 2008-02-06 2014-10-14 Tabula, Inc. Sequential delay analysis by placement engines
US9292638B1 (en) 2014-01-21 2016-03-22 Altera Corporation Method and apparatus for performing timing closure analysis when performing register retiming
US9356769B2 (en) 2014-09-24 2016-05-31 Qualcomm Incorporated Synchronous reset and phase detecting for interchain local oscillator (LO) divider phase alignment
US10169518B1 (en) * 2016-11-03 2019-01-01 Intel Corporation Methods for delaying register reset for retimed circuits

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7594211B1 (en) * 2006-11-17 2009-09-22 Synopsys, Inc. Methods and apparatuses for reset conditioning in integrated circuits
US8438511B1 (en) * 2009-12-30 2013-05-07 Cadence Design Systems, Inc. Minimal logic duplication for preserving reset behavior post-retiming
CN106096070A (zh) * 2015-05-01 2016-11-09 阿尔特拉公司 使用去填充和再填充操作来实现集成电路设计

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
郝亚男等: "改进的基于属性不变量生成和数学归纳法的时序逻辑优化算法", 《计算机辅助设计与图形学学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110716823A (zh) * 2018-07-12 2020-01-21 马克西姆综合产品公司 用于连续验证器件状态完整性的系统和方法
CN111061582A (zh) * 2018-10-17 2020-04-24 豪威科技股份有限公司 检查模块和用以验证数据的方法
CN111061582B (zh) * 2018-10-17 2023-11-17 豪威科技股份有限公司 检查模块和用以验证数据的方法
CN112860226A (zh) * 2021-01-28 2021-05-28 芯华章科技股份有限公司 获取逻辑系统设计的初始状态的方法、电子设备及介质

Also Published As

Publication number Publication date
US10372850B2 (en) 2019-08-06
CN108073762B (zh) 2023-12-19
EP3324317A1 (en) 2018-05-23
US20180137226A1 (en) 2018-05-17
EP3324317B1 (en) 2020-05-06

Similar Documents

Publication Publication Date Title
CN108073762A (zh) 用于利用经延迟的初始化来验证经重定时的电路的方法
CN107918694B (zh) 用于减少集成电路上的延迟的方法
CN104573169B (zh) 以自动流水线操作能力设计集成电路的方法和工具
US9852253B2 (en) Automated layout for integrated circuits with nonstandard cells
US8935642B1 (en) Methods for single pass parallel hierarchical timing closure of integrated circuit designs
TWI479349B (zh) 模擬積體電路以及電腦可讀取媒體之方法
US20050268258A1 (en) Rule-based design consultant and method for integrated circuit design
US20050268268A1 (en) Methods and systems for structured ASIC electronic design automation
US10936782B2 (en) Semiconductor process modeling to enable skip via in place and route flow
Sapatnekar et al. Analysis and optimization of power grids
WO2005119440A2 (en) Methods and systems for mixed-mode physical synthesis in electronic design automation
CN108446424B (zh) 用于为重定时的电路系统自动实现补偿重置的方法和装置
US10169518B1 (en) Methods for delaying register reset for retimed circuits
US10339241B1 (en) Methods for incremental circuit design legalization during physical synthesis
Friedrich et al. Design methodology for the IBM POWER7 microprocessor
US9177090B1 (en) In-hierarchy circuit analysis and modification for circuit instances
De Geus SPECS: SIMULATION PROGRAM FOR ELECTRONIC CIRCUITS AND SYSTEMS (CAD, SWITCH-LEVEL, TIMING, MOS)
Koehl et al. IBM's 50 million gate ASICs
US20220114321A1 (en) Systems And Methods For Generating Placements For Circuit Designs Using Pyramidal Flows
Tian A Complete ASIC Design Implementation of ASYNC-SDM Router from RTL to GDSII
Lee Introduction to physical integration and tapeout in VLSIs
Chen Design automation for microelectronics
Chen , Design Automation for Microelectronics, Springer Handbook of Automation
Said Low power ASIC design, a comparative study
Kurian An ASIC design and test methodology for an undergraduate design and fabrication project

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