用于为重定时的电路系统自动实现补偿重置的方法和装置与流程

文档序号:15237983发布日期:2018-08-24 07:50阅读:343来源:国知局

本发明涉及集成电路,并且更具体地说,涉及为集成电路设计内的寄存器实现延迟的重置。

从一个技术节点到下一技术节点的每一次转变已产生了更小的晶体管几何结构并且因此在集成电路管芯上每单位面积实现的潜在更多功能性。如由减少的互连和单元延迟证明的,同步集成电路已进一步受益于此发展,这已经促成了性能提高。

为进一步提高性能,已提议诸如寄存器重定时的解决方案,其中在组合逻辑的部分之中移动寄存器,由此实现在寄存器之间延迟的更平衡分布,并且因此可在潜在更高的时钟频率操作集成电路。

典型地,使用时钟边缘触发的触发器来实现寄存器。在重定时前,在集成电路上电时,这些数字触发器也被供电到初始状态,但此初始状态可是未知的。因此,重置序列典型地被提供到触发器以重置触发器并将它们带到已知重置状态。

然而,在重定时后,重定时的集成电路可与在重定时前的集成电路表现不同。在某些情况下,在重定时前提供到触发器的相同重置序列将不对重定时的触发器起作用。因此,将希望的是计及在重定时期间移动的触发器,来为重定时的触发器提供更新的重置序列并实现使用更新的重置序列来重置重定时的触发器的电路系统。

本文中的实施例正是出现在此上下文内。



技术实现要素:

本发明一般涉及集成电路,并且更具体地说,涉及用于使用由计算机辅助设计(cad)工具生成的延迟的重置序列,自动重置重定时的电路系统的方法和装置。在集成电路设计计算器件上实现的cad工具经常用于执行寄存器移动操作(例如,寄存器重定时、寄存器复制、寄存器合并)以改进电路设计的总体电路性能。

为使用延迟的重置序列来准确地重置重定时的电路系统,集成电路可包括逻辑电路系统、配置电路系统和初始化模块。可在每时钟域基础上使用原始重置序列来重置逻辑电路系统。逻辑电路系统可将用于给定时钟域的时钟信号提供到初始化模块。初始化模块可接收可使用初始化模块内的同步电路来同步到时钟信号的来自配置电路系统或逻辑电路系统的重置触发信号(例如,来自配置电路系统的开始信号或来自逻辑电路系统的重置请求信号)。同步电路可生成对应同步的重置触发信号。

初始化模块可包括接收同步的重置触发信号的计数器电路。编程逻辑电路系统以实现定制逻辑功能的配置电路系统也可提供对应于原始重置序列的计数值到计数器电路。初始化模块可被插进在逻辑电路系统与配置电路系统之间以将原始重置序列自动延迟计数值数量的时钟周期。因此,初始化模块中的计数器电路可提供计数信号到初始化模块中的重置控制电路。

计数器电路已计数c个时钟周期时,重置控制电路可断言输送到逻辑电路系统的输出信号(例如,重置控制信号)。响应于去断言的重置触发信号,重置控制电路可去断言输出信号。这构成在重置控制信号与重置触发信号之间的握手操作。

逻辑电路系统可包括重置状态机,其接收来自重置控制电路的重置控制信号(或简称为控制信号)。重置状态机可响应于指示在用户逻辑电路的操作期间的错误的接收的错误信号,输出请求信号。重置状态机也可将重置信号输出到用户逻辑电路,更具体地说,到用户逻辑电路内的寄存器,以实现重置序列(例如,调整序列、原始序列等)。

从附图和下面的详细描述中,本发明的另外的特征、它的性质和各种优势将更加显而易见。

本发明提供了如下的技术方案:

1.一种集成电路,包括:

使用重置序列被重置的逻辑电路系统;

配置电路系统,所述配置电路系统编程所述逻辑电路系统以实现定制逻辑功能,并且所述配置电路系统提供计数值c;以及

初始化模块,所述初始化模块被插进在所述逻辑电路系统与所述配置电路系统之间,并且所述初始化模块自动将所述重置序列延迟c个时钟周期。

2.根据技术方案1所述的集成电路,其中所述初始化模块接收来自所述逻辑电路系统的时钟信号。

3.根据技术方案2所述的集成电路,其中所述初始化模块接收来自所述配置电路系统和所述逻辑电路系统中的选择的一个的重置触发信号。

4.根据技术方案3所述的集成电路,其中所述重置触发信号包括从所述配置电路系统输送到所述初始化模块的开始信号。

5.根据技术方案3所述的集成电路,其中所述重置触发信号包括从所述逻辑电路系统输送到所述初始化模块的请求信号。

6.根据技术方案3所述的集成电路,其中所述初始化模块包括用于同步所述重置触发信号与所述时钟信号以产生同步的重置触发信号的同步电路。

7.根据技术方案3所述的集成电路,其中所述初始化模块进一步包括由所述同步的重置触发信号启用的计数器电路。

8.根据技术方案7所述的集成电路,其中所述初始化模块进一步包括监视所述计数器电路何时已计数c个时钟周期的重置控制电路。

9.根据技术方案8所述的集成电路,其中所述重置控制电路接收所述重置触发信号并执行与所述重置触发信号的握手协议。

10.根据技术方案9所述的集成电路,其中所述重置控制电路在所述计数器已计数c个时钟周期时断言输出信号,并且响应于所述重置触发信号的去断言,所述重置控制电路去断言所述输出信号,并且其中所述输出信号被输送到所述逻辑电路系统。

11.一种操作包括逻辑电路系统、配置电路系统和初始化模块的集成电路的方法,所述方法包括:

利用所述配置电路系统,编程所述逻辑电路系统以实现定制逻辑功能;

利用所述配置电路系统,提供计数值c;

利用所述初始化模块,如果所述计数值c大于零,则自动将重置序列延迟c个时钟周期,其中所述初始化模块耦合在所述逻辑电路系统与所述配置电路系统之间;以及

在所述c个时钟周期延迟后,使用所述重置序列,重置所述逻辑电路系统。

12.根据技术方案11所述的方法,进一步包括:

利用所述配置电路系统,断言指示所述逻辑电路系统的所述编程何时完成的配置完成信号;以及

利用所述配置电路系统,在紧跟在所述配置完成信号的所述断言后的解冻周期后,断言初始化完成信号。

13.根据技术方案11所述的方法,进一步包括:

利用所述初始化模块中的计数器电路,生成计数器输出;以及

利用所述初始化模块中的重置控制电路,接收来自所述计数器电路的所述计数器输出和来自所述逻辑电路系统的请求信号。

14.根据技术方案13所述的方法,进一步包括:

响应于确定所述计数器输出等于零,使用所述重置控制电路来断言重置控制信号;以及

响应于确定所述请求信号被去断言,去断言所述重置控制信号。

15.根据技术方案13所述的方法,进一步包括:

利用所述逻辑电路系统,断言所述请求信号;

响应于确定所述计数器输出等于零,在断言所述请求信号时,使用所述重置控制电路来断言重置控制信号;以及

只要所述请求信号被断言,便保持所述重置控制信号被断言。

16.一种集成电路,包括:

逻辑电路系统,其输出请求信号和时钟信号;

配置电路系统,其输出计数器值c和开始信号;以及

初始化模块,其接收来自所述逻辑电路系统的所述请求信号和所述时钟信号,并且其也接收来自所述配置电路系统的所述计数器值c和所述开始信号。

17.根据技术方案16所述的集成电路,其中所述初始化模块包括:

计数器电路,所述计数器电路被初始化到所述计数器值c,所述计数器电路由所述开始信号和所述请求信号中的选择的一个选择性地启用,并且所述计数器电路由所述时钟信号控制。

18.根据技术方案17所述的集成电路,其中所述初始化模块进一步包括:

重置控制电路,所述重置控制电路监视所述计数器电路何时展示零的计数值,所述重置控制电路接收所述请求信号,并且所述重置控制电路输出控制信号。

19.根据技术方案18所述的集成电路,其中所述逻辑电路系统包括:

重置状态机,所述重置状态机接收来自所述重置控制电路的所述控制信号,所述重置状态机输出所述请求信号,并且所述重置状态机输出重置信号。

20.根据技术方案19所述的集成电路,其中所述逻辑电路系统进一步包括:

寄存器,其由所述重置信号重置,其中所述重置状态机进一步接收触发所述请求信号的断言的错误信号。

附图说明

图1是根据实施例的说明性可编程集成电路的图示。

图2是根据实施例的说明性重定时操作的图示。

图3是根据实施例的使用寄存器来流水线化路由选择信号的说明性流水线路由选择资源的图示。

图4是根据实施例的可用于设计集成电路的电路设计系统的图示。

图5是根据实施例的可在电路设计系统中使用的说明性计算机辅助设计(cad)工具的图示。

图6是根据实施例的用于设计集成电路的说明性步骤的流程图。

图7是根据实施例的寄存器可在其之间转变的可能状态的说明性图解的图示。

图8a是根据实施例的在重定时前的说明性电路的图示。

图8b是根据实施例的图8a的电路的重定时的版本的图示。

图9是根据实施例的用于重置重定时的电路系统的说明性步骤的流程图。

图10是根据实施例的说明性重置初始化电路系统的图示。

图11是根据实施例的在图10的重置初始化电路系统内的说明性自动初始化模块的图示。

图12是根据实施例的在图10的重置初始化电路系统内的说明性用户逻辑电路系统的图示。

图13是根据实施例的在重定时的电路系统的初始配置后操作图10的重置初始化电路系统的说明性时序图。

图14是根据实施例的在用户重置请求后操作图10的重置初始化电路系统的说明性时序图。

具体实施方式

呈现的实施例涉及集成电路,并且更具体地说,在集成电路内的用于实现延迟的重置序列(例如延迟c个时钟周期的用户指定的重置序列)的电路系统。

在集成电路上执行重定时操作可更改集成电路内的寄存器的配置。在某些情况下,使用用于在重定时前的寄存器的重置序列(例如由设计者为对应电路设计提供的重置序列),重定时的寄存器将未准确地重置。

因此,将期望的是,提供为在重定时期间移动的寄存器建模以计算调整值,并且使用计算的调整值和在重定时前使用的重置序列,生成重定时的重置序列的改进方式。根据实施例,这能够通过跟踪重定时的寄存器跨不同类型的电路元件的移动来完成。以此方式操作,可计算在重定时的重置序列中使用的前置添加(prepend)的调整序列的最小长度。

集成电路内的重置初始化电路系统可提供前置添加的调整序列到重定时的寄存器。在提供前置添加的调整序列后,重定时的寄存器可接收设计者提供的重置序列。重置初始化电路系统可在集成电路的初始配置后和在集成电路的用户请求的重置期间适当地重置重定时的电路系统。

本领域技术人员将承认,本示范实施例可在没有这些特定细节中的某些或所有细节的情况下被实践。在其它实例中,熟知的操作尚未被详细描述以免不必要地模糊本实施例。

可配置成实现电路设计的可编程集成电路(诸如可编程逻辑设备(pld)100)的说明性实施例在图1中示出。如图1中所示,可编程逻辑设备(pld)可包括功能块的二维阵列,例如包括逻辑阵列块(lab)110和其它功能块,诸如随机存取存储器(ram)块130和数字信号处理(dsp)块120。诸如lab110的功能块可包括更小的可编程区域(例如,逻辑元件、可配置逻辑块或自适应逻辑模块),其接收输入信号并且在输入信号上执行定制功能以产生输出信号。

可编程逻辑设备100可含有可编程存储器元件。可使用输入输出元件(ioe)102为存储器元件加载配置数据(也称为编程数据)。一旦被加载,存储器元件各自提供对应静态控制信号,其控制关联功能块(例如,lab110、dsp120、ram130或输入输出元件102)的操作。

在典型的情形中,将加载的存储器元件的输出应用到功能块中的金属氧化物半导体晶体管的栅极,以开启或关闭某些晶体管,并且由此配置包括路由选择路径的功能块中的逻辑。可采用此方式控制的可编程逻辑电路元件包括复用器(例如,用于形成互连电路中的路由选择路径的复用器)、查找表、逻辑阵列、“与”、“或”、“与非”和“或非”逻辑门、通过门(passgate)等的部分。

存储器元件可使用任何适合的易失性和/或非易失性存储器结构,诸如随机存取存储器(ram)单元、熔丝、反熔丝、可编程只读存储器存储器单元、掩膜编程和激光编程的结构、这些结构的组合等。由于在编程期间为存储器元件加载配置数据,因此,存储器元件有时称为配置存储器、配置ram(cram)或可编程存储器元件。

另外,可编程逻辑设备可具有用于驱动pld100的信号离开和用于接收来自其它设备的信号的输入输出元件(ioe)102。输入输出元件102可包括并行输入输出电路系统、串行数据收发器电路系统、差分接收器和传送器电路系统或用于连接一个集成电路到另一集成电路的其它电路系统。

pld也可包括以垂直路由选择通道140(即,沿pld100的垂直轴形成的互连)和水平路由选择通道150(即,沿pld100的水平轴形成的互连)形式的可编程互连电路系统,每个路由选择通道包括至少一个轨道以路由选择至少一个导线。如果期望的话,互连电路系统可包括流水线元件,并且在这些流水线元件中存储的内容可在操作期间被访问。例如,编程电路可提供对流水线元件的读访问和写访问。

注意,除图1中描绘的互连电路系统的拓扑外,其它布线拓扑将打算被包括在本发明的范围内。例如,布线拓扑可包括对角传播或沿它们的范围的不同部分水平和垂直地传播的导线及在三维集成电路的情况下与设备平面垂直的导线,并且导线的驱动器可位于除导线的一端外的不同点处。布线拓扑可包括大体上跨越pld100的所有的全局导线、诸如跨越pld100的部分的导线的部分全局导线、特定长度的交错导线、更小的局部导线或任何其它适合的互连资源布置。

如果期望的话,可编程逻辑设备(pld)100可配置成实现定制电路设计。例如,配置ram可被编程,使得lab110、dsp120和ram130、可编程互连电路系统(即,垂直通道140和水平通道150)及输入输出元件102形成电路设计实现。

图2示出了pld100可实现的电路设计的不同版本的示例。电路设计的第一版本可包括寄存器210、220、230、240和组合逻辑245。寄存器210可将信号发送到寄存器220;寄存器220可通过组合逻辑245将信号发送到寄存器230;以及寄存器230可将信号发送到寄存器240。作为示例,在从寄存器220通过组合逻辑245到寄存器230的路径上的延迟可具有6纳秒(ns)的延迟,而在寄存器210与220之间和在寄存器230与240之间的延迟可具有最小延迟(例如,0.5ns的延迟,非常接近0ns的延迟等)。因此,电路设计的第一版本可在166mhz的频率操作。

在电路设计的第一版本上执行寄存器重定时可创建电路设计的第二版本。例如,可通过组合逻辑245的一部分将寄存器230推回(有时称为后向重定时),由此将电路设计的第一版本的组合逻辑245分开成电路设计的第二版本的组合逻辑242和244。在电路设计的第二版本中,寄存器210可将信号发送到寄存器220;寄存器220可通过组合逻辑242将信号发送到寄存器230;以及寄存器230可通过组合逻辑244将信号发送到寄存器240。

作为示例,在从寄存器220通过组合逻辑242到寄存器230的路径上的延迟可具有4ns的延迟,并且从寄存器230通过组合逻辑244到寄存器240的延迟可具有2ns的延迟。因此,电路设计的第二版本可在250mhz的频率操作,其受带有最长延迟的路径(有时称为关键路径)限制。

在电路设计的第二版本上执行寄存器重定时可创建电路设计的第三版本。例如,可通过组合逻辑242的一部分将寄存器220向前推(有时称为“前向”重定时),由此将电路设计的第二版本的组合逻辑242分开成电路设计的第三版本的组合逻辑241和243。在电路设计的第三版本中,寄存器210可通过组合逻辑241将信号发送到寄存器220;寄存器220可通过组合逻辑243将信号发送到寄存器230;以及寄存器230可通过组合逻辑244将信号发送到寄存器240。

作为示例,在从寄存器210通过组合逻辑241到寄存器220、从寄存器220通过组合逻辑243到寄存器230、以及从寄存器230通过组合逻辑244到寄存器240的路径上的延迟可全部具有2ns的延迟。因此,电路设计的第三版本可在500mhz的频率操作,这是电路设计的第一版本操作可处在的频率的三倍。

如果期望的话,诸如图1的垂直路由选择通道140或水平路由选择通道150的路由选择资源可包括流水线元件,其能够促进寄存器重定时。图3描绘了根据实施例的使用寄存器的流水线路由选择资源300。如所示的,流水线路由选择资源300包括第一复用器302、驱动器304、寄存器306和第二复用器308。

复用器302可以是驱动器输入复用器(dim)或功能块输入复用器(fbim)。dim可选择来自多个源的信号,并且将选择的信号发送到驱动对应导线的驱动器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)来穿过给定长度的导线,但时钟信号可被约束成以650ps时钟周期操作。因此,每第四个导线提供诸如寄存器306的流水线寄存器在此示例中可以是足够的。备选的是,可比每第四个导线更频繁地放置寄存器(例如每第二个导线),以在使用哪些寄存器的选择方面提供更高自由度。

诸如流水线路由选择资源300的流水线路由选择资源可促进寄存器重定时操作,诸如图2中说明的寄存器重定时。例如,考虑其中寄存器230通过在流水线寄存器模式中操作的流水线路由选择元件的第一实例来实现(即,寄存器230由流水线路由选择资源300的第一实例的寄存器306实现)的情形。进一步考虑从寄存器220通过组合逻辑245到寄存器230的路径包括在非流水线模式中操作的流水线路由选择元件的第二实例。因此,将流水线路由选择元件的第一实例从在流水线寄存器模式中操作切换到在非流水线模式中操作和将流水线路由选择元件的第二实例从在非流水线模式中操作切换到在流水线寄存器模式中操作可将第一版本变换成在图2中呈现的电路设计的第二版本。

电路设计系统中的计算机辅助设计(cad)工具可评估寄存器重定时是否可改进电路设计的当前版本的性能,或者电路设计的当前版本是否满足给定性能标准。如果期望的话,并且如果cad工具确定寄存器重定时将改进电路设计的当前版本的性能,或者电路设计的当前版本未达到给定性能标准,则cad工具可执行将电路设计的当前版本变换成电路设计的另一版本的寄存器重定时操作(例如,如图2中所说明的)。

图4中示出根据实施例的说明性电路设计系统400。电路设计系统400可在集成电路设计计算器件上实现。例如,系统400可基于一个或多个处理器,诸如个人计算机、工作站等。处理器可使用网络(例如,局域网或广域网)被链接。这些计算机中的存储器或外部存储器和存储设备(诸如内部和/或外部硬盘)可用于存储指令和数据。

诸如计算机辅助设计工具420和数据库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。

设计过程可以以制定集成电路设计的功能规范(例如,集成电路设计的功能或行为描述)开始。电路设计者可使用设计和约束录入工具564来指定期望的电路设计的功能操作。设计和约束录入工具564可包括诸如设计和约束录入辅助566和设计编辑器568的工具。诸如辅助566的设计和约束录入辅助可用于帮助电路设计者从现有电路设计的库中定位期望的设计,并且可向电路设计者提供计算机辅助协助以用于录入(指定)期望的电路设计。

作为示例,设计和约束录入辅助566可用于呈现用于用户的选项的屏幕。用户可点击屏上选项以选择正在被设计的电路是否应具有某些特征。设计编辑器568可用于录入设计(例如,通过录入几行硬件描述语言代码)、可用于编辑从库中获得的设计(例如,使用设计和约束录入辅助),或者可协助用户选择和编辑适当的预打包的代码/设计。

设计和约束录入工具564可用于允许电路设计者使用任何适合的格式来提供期望的电路设计。例如,设计和约束录入工具564可包括允许电路设计者使用真值表录入电路设计的工具。真值表可使用文本文件或时序图被指定,并且可从库中导入。真值表电路设计和约束录入可用于大电路的一部分,或者用于整个电路。

作为另一示例,设计和约束录入工具564可包括示意捕捉工具。示意捕捉工具可允许电路设计者从诸如逻辑门和逻辑门的群组的组成部分可视地构建集成电路设计。预存在的集成电路设计的库可用于允许利用示意捕捉工具来导入设计的期望的部分。

如果期望的话,设计和约束录入工具564可允许电路设计者使用硬件描述语言(诸如verilog硬件描述语言(veriloghdl)、超高速集成电路硬件描述语言(vhdl)、systemverilog或诸如opencl或systemc的高级电路描述语言,仅举几例)向电路设计系统400提供电路设计。集成电路设计的设计者能够通过利用编辑器568编写硬件描述语言代码来录入电路设计。如果期望的话,可从用户保持或商业库中导入代码的块。

在已使用设计和约束录入工具564录入设计后,行为模拟工具572可用于模拟电路设计的功能性能。如果设计的功能性能不完整或不正确,则电路设计者能够使用设计和约束录入工具564对电路设计进行更改。在已经使用工具574执行综合(synthesis)操作之前,可以使用行为模拟工具572来验证新电路设计的功能操作。如果期望的话,诸如行为模拟工具572的模拟工具也可在设计流程中的其它阶段(例如,在逻辑综合之后)使用。行为模拟工具572的输出可以采用任何适合格式(例如真值表、时序图等)提供给电路设计者。

一旦已确定电路设计的功能操作是令人满意的,逻辑综合和优化工具574可生成电路设计的门级网表,例如使用来自与由已被选择来生产集成电路的制造厂支持的目标过程有关的具体库的门。备选的是,逻辑综合和优化工具574可使用目标可编程逻辑设备的门(即,在具体可编程逻辑设备产品或产品家族的逻辑和互连资源中)来生成电路设计的门级网表。

逻辑综合和优化工具574可通过基于由逻辑设计者使用工具564录入的电路设计数据和约束数据,进行用来实现电路设计中的不同逻辑功能的硬件的适当选择而优化设计。作为示例,逻辑综合和优化工具574可基于在电路设计中寄存器之间的组合路径的长度和由逻辑设计者使用工具564录入的对应定时约束,执行多级逻辑优化和技术映射。

在使用工具574进行逻辑综合和优化后,电路设计系统可以使用诸如放置、路由选择和物理综合工具576的工具来执行物理设计步骤(布局综合操作)。工具576能够用于确定在何处放置由工具574产生的门级网表的每个门。例如,如果两个计数器互相交互,则工具576可在相邻区域中定位这些计数器,以降低互连延迟或者满足指定最大允许互连延迟的定时要求。工具576创建用于任何目标集成电路(例如,用于给定可编程集成电路,诸如现场可编程门阵列(fpga))的电路设计的有序和有效实现。

诸如工具574和576的工具可以是编译器套件的部分(例如,由可编程逻辑设备供应商提供的一套编译器工具的部分)。在某些实施例中,诸如工具574、576、和578的工具也可包括诸如定时评估器的定时分析工具。这允许工具574和576在实际产生集成电路前满足性能要求(例如,定时要求)。

作为示例,通过移动寄存器通过组合逻辑(例如,通过逻辑与、或、异或和其它适合的门、查找表(lut)、复用器、算子等),工具574和576可执行寄存器重定时。如图2中所说明的,工具574和576可跨组合逻辑向前或向后推动寄存器。如果期望的话,工具574和576可通过将诸如图3的流水线路由选择资源300的流水线路由选择资源配置成在非流水线模式中操作或者作为流水线路由选择元件操作,执行寄存器的向前和向后推动。以此方式使用的物理综合工具576因此也能够用于执行寄存器重定时。然而,在流水线路由选择元件(例如,流水线路由选择资源)上执行重定时操作只是说明性的。如果期望的话,物理综合工具576可在任何适合的寄存器上执行重定时操作。

在已使用工具576来生成期望的电路设计的实现后,可使用分析工具578来分析和测试设计的实现。例如,分析工具578可包括定时分析工具、功率分析工具或形式验证工具,仅举几例。

在已使用工具520完成令人满意的优化操作后,并且取决于目标集成电路技术,工具520可产生集成电路的掩模级布局描述或用于编程可编程逻辑设备的配置数据。

图6中示出使用图5的工具520来产生集成电路的掩膜级(mask-level)布局描述中涉及的说明性操作。如图6中所示,电路设计者可首先提供设计规范602。设计规范602通常可以是以应用程序代码(例如,c代码、c++代码、systemc代码、opencl代码等)形式提供的行为描述。在某些情形中,设计规范可以采用寄存器传送级(rtl)描述606的形式被提供。

rtl描述可具有在寄存器传送级的任何形式的描述电路功能。例如,可使用硬件描述语言(诸如verilog硬件描述语言(veriloghdl或verilog)、systemverilog硬件描述语言(systemveriloghdl或systemverilog)或超高速集成电路硬件描述语言(vhdl))来提供rtl描述。如果期望的话,rtl描述的一部分或所有可以作为示意性表示被提供。

通常,行为设计规范602可包括不定时或部分定时的功能代码(即,应用程序代码不描述逐周期的硬件行为),而rtl描述606可包括完全定时的设计描述,其详细描述在寄存器传送级的电路的逐周期行为。

设计规范602或rtl描述606也可包括目标标准,诸如面积使用、功耗、延迟最小化、时钟频率优化或其任何组合。优化约束和目标标准可以共同称为约束。

能够针对单独的数据路径、单独的数据路径的部分、设计的部分或针对整个设计提供那些约束。例如,约束可利用设计规范602、rtl描述606(例如,作为编译指示或作为断言)、在约束文件中或者通过用户输入(例如,使用图5的设计和约束录入工具564)被提供,仅举几例。

在步骤604,可执行行为综合(有时也称为算术综合)以将行为描述转换成rtl描述606。如果已经以rtl描述的形式提供设计规范,则可跳过步骤604。

在步骤618,行为模拟工具572可执行rtl描述的rtl模拟,其可以验证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期间执行寄存器重定时操作。例如,可根据在设计规范602或rtl描述606中包括的约束,到处移动在放置的门级描述613或路由选择的门级描述616中的寄存器。

作为示例,寄存器重定时操作可将某些流水线路由选择资源(例如,图3的流水线路由选择资源300的某些实例)的配置从在流水线寄存器模式中操作更改成在非流水线模式中操作并且将其它流水线路由选择资源(例如,图3的流水线路由选择资源300的其它实例)的配置从在非流水线模式中操作更改到在流水线寄存器模式中操作。为避免模糊实施例,用于流水线路由选择资源的状态的更改可简称为流水线寄存器(例如,在流水线寄存器模式中操作的流水线路由选择资源)的移动(例如,运动)。然而,在流水线路由选择资源上执行寄存器重定时操作只是说明性的。如先前所提及的,可在任何适合类型的路由选择资源(例如,任何适合类型的寄存器、lab或mlab中的寄存器等)上执行重定时操作。

例如,在第一情形中,将给定流水线路由选择资源的配置从在流水线寄存器模式中操作更改成在非流水线模式中操作可称为移除流水线寄存器。例如,在第二情形中,将另一给定流水线路由选择资源的配置从在非流水线模式中操作更改成在流水线寄存器模式中操作可称为添加流水线寄存器。在第一和第二情形相互对应(例如,同时发生)时,流水线寄存器可被称为从被移除的流水线寄存器的位置移动到被添加的流水线寄存器的位置。

根据本发明的实施例,集成电路(例如,pld100)内的流水线寄存器(例如,图3中的寄存器306)可共同具有多个可能状态(例如,在上电期间、在重置期间、在正常操作期间等)。例如,可能状态可以是其中集成电路内的所有流水线寄存器全部具有“0”的值(例如,存储“0”的值)的状态。另一可能状态可以是其中集成电路内的所有流水线寄存器全部具有“1”的值(例如,存储“1”的值)的状态。在又一示例中,流水线寄存器的第一群组可存储“0”的值,并且流水线寄存器的第二群组可存储“1”的值。这只是说明性的。如果期望的话,可在任何给定时间在集成电路内的流水线寄存器存储状态的任何集合。

此外,如在图6(和任何其它相关图)中所描述的流水线寄存器的使用和修改只是说明性的。如果期望的话,可使用和修改任何适合类型的寄存器(例如,在重定时操作期间)。

图7示出与在集成电路(例如,pld100)内示范数据锁存寄存器关联的多个可能状态的图示。图7的寄存器可以是用于帮助改进设备100的性能的普通用户寄存器或流水线寄存器。具体而言,与寄存器(pld100内的流水线寄存器306的集合、pld100内任何寄存器的集合、逻辑电路内任何寄存器的集合等)关联的可能状态可包括状态s1、s2、s3、s4、s10、s11、s12和重置。

从第一给定状态指向第二给定状态的箭头可指示从第一给定状态到第二给定状态的可能转变。可能转变可在使用一个或多个时钟信号为寄存器加时钟时发生(例如,在时钟信号的时钟周期后、在时钟信号的上升边缘、在时钟信号的下降边缘、在时钟信号的上升和下降边缘两者等),以帮助寄存器锁存进来的状态值。换而言之,在单个状态转变期间,主要输入可具有值的新集合,并且寄存器可对于单个时钟周期被加时钟以提供值的新集合到寄存器以便保持。作为示例,第一上升时钟边缘可促使寄存器从状态s12转变到状态s1。作为另一示例,第二上升时钟边缘可以是自循环转变,诸如在状态s11不进行转变(例如,维持状态s11)时。

箭头可具有方向性。例如,从状态s12到状态s1的转变可如由链接两个状态的箭头的方向所指示的发生。相比之下,状态s1到状态s12可以是不可能的转变,因为箭头未指向那个方向。此外,状态s12到状态s11也可以是不可能的转变,因为不存在链接这两者的直接路径。然而,这只是说明性的。如果期望的话,状态和在状态之间的转变可根据寄存器的给定集合,其可具有任何适合的行为。例如,状态s3和s4可在相互之间转变。

集成电路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示出集成电路100内的诸如电路800的可如图2中所描述被重定时以更有效地操作的说明性电路。电路800可包括逻辑“与非”门802、逻辑“与”门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”的值,并且将在单个时钟周期期间提供“0”的值到寄存器814。其它情形被忽略以免不必要地模糊本实施例。

在实施例中,工具576可在图8的电路800上执行重定时,以如虚线箭头822所指示的跨节点820(例如扇出节点820)移动寄存器810。在重定时操作后,图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',可将给定长度计算成等于一。在所述数量时钟周期期间(例如,在实现调整序列时),通过应用随机值到主要输入,可提供随机值(例如,“0”和/或“1”的逻辑值)到寄存器(例如,寄存器810-1、810-2和812)。因为寄存器810-1和810-2的输入端子两者均耦合到扇出节点820(所述扇出节点耦合到输入a)所以,在持续一个时钟周期的调整序列期间,当在输入a提供“1”或“0”的随机逻辑值时,可为寄存器810-1和810-2提供相同随机值。因此,在使用初始化电路系统实现调整序列后,单个时钟周期重置序列可用于适当地重置重定时的电路800'。

调整序列可基本上取决于时钟周期的数量而不是主要数据输入(例如,提供到寄存器的数据)。换而言之,寄存器被允许在整个调整序列的期间接收随机主要输入值。因此,调整序列可称为具有“空”时钟周期的数量。

由调整序列前置添加的重置序列可称为调整的重置序列或重定时的重置序列。具有一的长度的调整序列的示例只是说明性的。如果期望的话,调整序列可具有任何适合的长度。如果期望的话,调整序列也可提供非随机的值。

根据实施例,诸如图8a中所示的电路800的电路可在本文中称为“原始”电路(例如,在重定时前的电路或通常在任何寄存器移动以用于诸如寄存器合并、寄存器复制等的优化前的电路)。与原始电路关联的重置序列可在本文中称为“原始”重置序列。诸如图8a中所示的电路800'的已被修改的电路可在本文中称为重定时的电路(例如,重定时后的电路)。与重定时的电路关联的重置序列可在本文中称为“重定时的”重置序列,通常指的是计及各种类型的寄存器移动,作为“调整的”重置序列。

具体而言,电路(例如,电路800')可在本文中称为原始电路(例如,电路800)的c周期延迟版本,因为c个时钟周期的调整序列可用于延迟原始重置序列以生成调整的重置序列。例如,电路800'可以是电路800的1周期延迟版本,因为一个时钟周期的调整序列可用于延迟原始重置序列以生成调整的重置序列。

标题为“methodsfordelayingregisterresetforretimedcircuits”的美国专利申请号15/342,286中提供了生成c周期延迟的重置序列的另外的细节,其由此通过引用将它的整体结合。另外,标题为“methodsforboundingthenumberofdelayedresetclockcylesforretimedcircuits”的美国专利申请号15/352,487中提供了生成具有用户指定的最大c值或调整值的c周期延迟的重置序列的另外的细节,其由此也通过引用将它的整体结合。另外,标题为“methodsforverifyingretimedcircuitswithdelayedinitilization”的美国专利申请号15/354,809中提供了与生成的c周期延迟的重置序列的验证有关的另外的细节,其由此通过引用将它的整体结合。

图9示出用于重置重定时的电路系统(例如,图8b中的重定时的电路800')的说明性步骤的流程图。

在步骤900,配置设备可执行用于目标设备(例如,可编程集成电路)的设备配置。作为示例,逻辑设计系统(例如,图4中的cad工具420)可提供配置数据到配置数据加载器件,其然后使用配置设备(例如,配置系统、配置电路系统等)来提供配置数据到目标设备,由此执行设备配置。如果期望的话,配置设备可以是目标设备的部分或者与目标设备是分开的。

在步骤902,初始化模块(例如,自动初始化模块)可解冻在目标设备内的逻辑电路。换而言之,通过解冻逻辑电路,初始化模块可将目标设备转变到用户模式。例如,初始化模块可在目标设备(例如,可编程集成电路)内。

在步骤904,初始化模块可在配置的目标设备上执行c周期初始化(即,提供调整序列到目标设备),如图8a和8b中所描述的。为执行c周期初始化,初始化模块可首先接收保证适当重置在配置的目标设备上(例如,来自配置设备)的重定时的电路系统的调整序列的长度(例如,“空”时钟周期的数量)。作为示例,可向用户隐藏调整序列的确定和c周期初始化的实现。

如果期望的话,可确定重置序列(并且特别是调整序列),而没有任何用户输入(例如,没有用户放置的限制)。备选的是,用户可提供最大重置序列长度到cad工具420,以生成遵守最大重置序列长度约束的调整序列。此外,在cad工具420生成调整序列和对应调整的重置序列后,验证电路可验证调整序列和对应调整的重置序列适当地重置重定时的电路系统。

在步骤906,用户可为在目标设备上配置的重定时的逻辑设计提供用户定义的重置序列。换而言之,重置初始化电路系统可提供用户指定的重置序列到配置的目标设备。在为用户定义的重置序列前置添加调整序列后,可适当重置在配置的目标设备内的重定时的电路系统。例如,仅在在步骤904中执行c周期初始化后,用户可执行用户定义的重置。

在步骤906,在用户已为配置的目标设备提供包括调整序列和用户指定的重置序列的调整的重置序列后,重置初始化电路系统可退出用户重置周期,并且操作在图7中所描述的合法状态中的配置的目标设备上的逻辑电路。换而言之,重置初始化电路系统可提供指示配置的集成电路被适当重置,并且可开始正常操作的信号。

图10示出在pld100内的说明性重置初始化电路系统。重置初始化电路系统可包括配置电路系统1000、自动初始化模块1002和用户逻辑1004。重置初始化电路系统可完全从例如软逻辑或硬连线的逻辑形成。如果期望的话,重置初始化电路系统的一部分可从软逻辑形成,并且重置初始化电路系统的不同部分可从硬连线的逻辑形成。

具体而言,配置电路系统1000可以是安全设备管理器(sdm)、本地分区管理器或任何其它类型的硬控制逻辑。备选的是,配置电路系统1000也可从软逻辑形成(例如,从可配置的逻辑形成)。配置电路系统1000可生成指示目标集成电路的配置何时完成的信号(例如,信号configdone)。备选的是,如果pld100的另一部分监视pld100的配置过程(例如,图9中的步骤900),则配置电路系统1000可接收信号configdone。类似地,配置电路系统1000可生成或接收指示pld100内的逻辑电路的解冻何时可完成的信号(例如,信号initdone),如在图9中的步骤902中所描述的。

通过注意pld100的配置和解冻何时完成(例如,何时断言相应信号configdone和initdone),配置电路系统1000可通过提供信号start到自动初始化模块1002,指示软自动初始化模块1002何时可开始执行c周期初始化。另外,配置电路系统1000也可从图4中的cad工具420接收或内部生成调整序列长度或“空”时钟周期的数量。调整序列长度ci可与例如信号start并行被提供到自动初始化电路系统。

自动初始化模块1002可有时在本文中称为软逻辑模块1002。虽然配置电路系统1000可使用包括专用功能的硬逻辑被形成,但软逻辑模块1002可被编程以执行自动初始化模块的功能。例如,在pld100的配置和初始化(例如,解冻)期间,可使用pld100内的可编程硬件,自动实现自动初始化模块1002。作为示例,仅在用户指示(使用用户输入或输入信号)可期望的是执行c周期初始化时,才可在pld100上实现初始化模块1002。作为另一示例,在设计工具420计算大于零的计数值c(指示可能不当的重置)时,可在pld100上自动实现自动初始化模块1002。

用户逻辑1004可与自动初始化模块1002通信。具体而言,用户逻辑1004可提供信号reqi到自动初始化模块1002以选择性地执行在pld100内的寄存器的功能重置。功能重置可与在pld100的初始配置和解冻后的初始重置不同。功能重置可由例如在pld100的操作期间出现的问题或其它适合的触发事件来触发。

作为从用户逻辑1004发送到自动初始化模块1002的信号reqi的对应信号,输出信号t0i(有时在本文中称为重置控制信号t0i)可从自动初始化模块1002被提供到用户逻辑1004。具体而言,信号t0i可指示何时用户指定的重置序列可开始。换而言之,在信号t0i被断言时,在pld100内的寄存器已完成前置添加调整序列的加时钟,并且准备好接收原始重置序列(例如,用户指定的重置序列)。另外,响应于信号reqi,可断言信号t0i。具体而言,在断言信号reqi时,也可断言信号t0i。例如,仅在信号reqi被去断言后,信号t0i才能被去断言。

如先前结合生成c周期延迟的重置序列和调整序列所描述的,可在每时钟基础上提供调整的重置序列和调整序列。换而言之,接收第一时钟信号的寄存器可与接收第二不同时钟信号的寄存器分开被处理(例如,分开执行c周期初始化,分开重置)。然而,如果期望的话,可并行处理或重置两种类型的寄存器。如图10中所示,用户逻辑可用于域i,其中i用于具体时钟域。用于域i的用户逻辑1005(例如,域i的用户逻辑1005)可提供信号clki(其是用于域i的时钟信号)到自动初始化模块1002。另外,也可在域i基础上生成信号ci、reqi和t0i。

作为示例,设计工具420可优化要在pld100上实现的电路设计(例如,通过执行重定时操作,或者通过执行可影响在pld100上实现的电路设计的重置的任何其它操作等)。如果通过由设计工具420执行的优化过程(例如,重定时过程),用于任何时钟域的计数值c大于零(这指示相关电路系统的可能不当重置),则用于每个时钟域的对应c周期延迟的重置序列可被自动实现。换而言之,如果寄存器重定时要求调整序列,则调整序列被自动地插入(即,自动插入)以适当地执行重置操作。

图11示出在pld100内实现的说明性自动初始化模块。自动初始化模块1002可包括c周期计数器1100。c周期计数器1100可接收调整序列长度ci(有时在本文中称为c周期长度ci)。c周期计数器1100可根据从用户逻辑1004接收的时钟信号clki,从c周期长度ci向下计数。如先前所描述的,c周期长度ci可对应于与时钟信号clki相同的域i。

在操作的第一模式中,同步电路1102-1可接收来自配置电路系统1000的信号start(有时在本文中称为触发信号start或重置触发信号start)。同步电路1102-2可同步重置触发信号start到时钟信号clki,使得c周期计数器1100可正确地计数调整序列长度ci(例如,提供时钟信号clki的正确数量的“空”时钟周期)。在为多个时钟周期分析时钟信号clki后,同步电路1102-1可提供同步的重置触发信号starti*,其指示c周期计数器1100可开始计数操作。换而言之,同步的重置触发信号starti*可使得c周期计数器1100能够开始计数操作。

在任何给定时间,信号count可提供c周期计数器1100的当前计数值到重置控制电路1104。具体而言,重置控制电路1104可提供重置控制信号t0i到用户逻辑域。在情形中,在信号reqi*被去断言,并且信号count提供非零当前计数值时,去断言的输出信号t0i然后可被提供到用户逻辑1004,指示调整序列是不完整的。在零的当前计数值被提供到重置控制电路1104时,重置控制信号t0i可被断言。重置控制电路1104可执行与同步的信号reqi*的握手协议以用于鲁棒的通信,这在下面详细描述。

自动初始化模块可进一步包括接收来自用户逻辑1004的重置请求信号reqi的同步电路1102-2。类似于同步电路1102-1,同步电路1102-2可同步用户重置信号reqi到时钟信号clki。同步电路1102-2可生成对应同步的用户重置信号reqi*。c周期计数器1100和重置控制电路1104可接收同步的信号reqi*

在操作的第二模式中,用户重置请求(例如,使用重置触发信号reqi,有时在本文中称为触发信号reqi或用户重置请求信号reqi)可被提供到自动初始化模块1002。换而言之,断言的重置触发信号reqi可被提供到自动初始化模块1002。对应同步的重置触发信号reqi*可提示c周期计数器1100可开始调整序列。换而言之,c周期计数器1100可执行类似于在操作的第一模式中的操作的(向下)计数操作。因为计数通过用户请求被初始化,所以,信号reqi、reqi*、t0i可按顺序相互通信以输送重置操作的每个步骤何时完成。具体而言,此有序通信可在本文中称为“握手(handshake或handshaking)”操作。例如,可利用重置触发信号和重置控制信号,执行握手操作。

例如,在c周期计数器完成调整序列时(这通过来自用户逻辑1004的请求信号reqi的同步的信号提示),通过断言信号t0i,重置控制信号t0i可随后与用户逻辑1004通信。被断言的信号t0i可向用户逻辑1004指示调整序列已完成,并且用户指定的重置序列可开始。在用户逻辑1004接收来自自动初始化模块1002的、以被断言的信号t0i的形式的调整序列已完成的确认后,用户逻辑1004可去断言请求信号reqi。可使用同步的信号reqi*将用户逻辑1004已确认调整序列的完成的请求信号reqi的去断言输送到自动初始化模块1002(例如,具体而言,重置控制电路1104)。

图12示出在图10的重置初始化电路系统内的说明性用户逻辑电路系统。用户逻辑电路系统1004可包括用户重置状态机1200和时钟生成电路1202。时钟生成电路1202可生成时钟信号clki。换而言之,时钟生成电路1202可生成不同时钟域的一个或多个时钟信号。时钟生成电路1202可将生成的时钟信号clki提供到自动初始化模块1002以用于同步操作、作为加时钟信号提供到用户逻辑电路、提供到用户重置状态机1200以用于任何适合的使用等等。用户重置状态机1200可生成用户重置请求并实现重置序列(例如,调整序列、原始重置序列等等)。

用于域i的用户逻辑1004可包括用户逻辑电路1204(例如,可在pld100上实现为逻辑设计的用户逻辑1004的重要部分)。例如,用户逻辑电路1204可包括重定时的电路系统、寄存器或任何其它期望的电路系统。具体而言,用户逻辑电路可包括寄存器1206和在相同时钟域中的其它寄存器,如由椭圆所示。用户逻辑电路1204也可包括其它时钟域的寄存器。寄存器1206可接收时钟信号clki(例如,可使用时钟信号clki为用户逻辑电路1204内的寄存器1206和附加的寄存器加时钟)。另外,寄存器1206可包括主要输入或输入res。输入res可在本文中称为重置输入,因为在调整序列期间,到寄存器1206的实际输入是不相关的。适当重置寄存器1206例如可只依赖在调整序列期间由寄存器1206加时钟的时钟周期的数量。输入res可接收来自用户重置状态机1200的信号reseti。信号reseti可输送在调整序列中的随机值或在用户指定的重置序列期间的选择的值。

作为示例,重置状态机1200可接收来自用户逻辑电路1204的错误信号error。错误生成电路系统可在确定在用户逻辑电路1204内可存在错误之后生成信号error。错误例如可以是在用户逻辑电路1204的正常操作期间的非法状态的存在。可以存在专用错误生成电路系统。然而,如果期望的话,用户逻辑电路1204的多个部分可生成要在用户重置状态机1200接收的对应错误信号。

响应于接收被断言的信号error,用户重置状态机1200可相应地断言重置请求信号reqi。被断言的重置请求信号reqi可提示自动初始化模块通过执行重置操作来解决错误。

在自动初始化模块1002内的重置控制电路1104已确定调整序列已被实现(或c周期初始化已完成)时,信号t0i可被断言。作为示例,在信号t0i被断言时,用户重置状态机1200可发起任何用户指定的重置序列到用户逻辑电路1204。用户重置状态机1200也可去断言reqi以执行如图11中所述的握手操作。

图13是示出用于图10中的重置初始化电路系统的说明性操作的模式的时序图。具体而言,图13中所示的操作模式可在例如pld100的初始配置后被实现。在时间t0,可断言信号configdone以指示基于由用户提供的逻辑设计的可编程逻辑设备的配置完成了。因此,在时间t0前的时间周期可在本文中称为配置周期。信号configdone可由图10中的配置电路系统1000生成,或者可由配置电路系统1000从pld100内的监视电路系统接收。

在时间t1,可断言信号initdone以指示pld输入输出接口准备好与用户交互。换而言之,信号initdone可指示pld100已进入用户模式(例如,pld100已被解冻)。因此,在时间t0与t1之间的时间周期可在本文中称为解冻周期或到用户模式的转变周期。一旦目标设备已进入用户模式,重置操作便可开始准备用于在合法状态内的正常操作的目标设备。为显式触发重置操作,也可在时间t1断言触发信号start和计数值信号count。作为示例,信号start和count的断言可由信号initdone的断言触发,并且可跟随信号initdone的断言。

在时间t2,如在图10中所描述的,时钟信号clki可从用户逻辑1004被提供到自动初始化模块1002。如在图10和11中所描述的,信号count可在等于c周期长度ci的值开始。然而,当在时间t3断言时钟同步的开始信号starti*时,信号count只可开始递减。在时间t2与t3之间,同步电路系统1102-1可通过根据时钟信号clki来同步信号start,生成信号starti*

在时间t3,信号count可开始递减以开始c周期初始化。例如,c周期长度可以为四,因此,信号count可在四的值开始。在四周期调整序列(在时间t4)后,信号count可具有零的值。在时间t1与t4之间的时间周期可在本文中称为c周期初始化周期,其包括整个同步过程和实际计数操作两者。

在时间t4,可断言信号t0i以指示c周期初始化的完成。作为示例,用户请求信号reqi可遍及配置、解冻和c周期初始化过程被自动断言。作为示例,一旦已完成c周期初始化,便可去断言用户请求信号reqi。因为在c周期初始化的结束去断言reqi,指示缺乏用户发起的重置请求,所以,可在时间t5,在时间t4后的单个时钟周期去断言信号t0i。换而言之,握手操作可如由箭头1300所指示发生,在其期间,根据请求信号reqi的去断言,响应性地去断言信号t0i。

在c周期初始化周期后,用户重置周期可在时间t4开始,并且在时间t7结束。在该周期期间,用户重置序列可附加在c周期初始化周期期间实现的调整序列。具体而言,用户重置序列可在响应于缺乏任何用户重置请求而去断言信号t0i时在时间t5开始。用户重置序列可在时间t6结束,如由信号reseti所示。换而言之,信号reseti可将从时间t3到t4的调整序列和从时间t5到t6的用户重置序列提供到用户逻辑1004。信号reseti可在用户逻辑1004内被提供(例如,从用户重置状态机1200到用户逻辑电路1204内的电路系统,如在图12中所描述的)。时间t7可开始用户逻辑的正常操作。例如,在时间t6与t7之间,可执行任何其它重置序列或操作,以将用户逻辑1004带出在时间t7开始的重置。

图14是示出用于图10中的重置初始化电路系统的附加说明性操作的模式的时序图。具体而言,可在对于pld100的重置的用户请求之后实现图14中所示的操作的模式,这例如可在在pld100上实现的用户逻辑的正常操作期间发生。

在时间t0,在用户逻辑内可发生提示(例如,触发)用户逻辑的重置的事件。在时间t1,响应于事件,可断言触发信号reqi以将重置请求从用户逻辑1004提供到自动初始化模块1002。在时间t2,可同步触发信号reqi到时钟信号clki以断言同步的触发信号reqi*

在时间t2,信号count可在c周期初始化周期期间向下计数,类似于图13中所描述的操作的模式。作为示例,甚至在用户逻辑1004的正常操作期间,可在配置电路系统1000内保留八的计数值(指示八个周期的调整序列)。然而,仅在断言同步的请求信号时,信号count才可开始递减。换而言之,如由箭头1400所指示的,同步的请求信号reqi*的断言提示图11中的递减c周期计数器1100和信号count。

在时间t3,响应于在时间t2与t3之间的c周期初始化周期的完成,可断言信号t0i。如由箭头1402所指示的,在去断言t0i前,信号t0i可等待用户重置请求信号的去断言。作为示例,用户重置请求信号reqi的去断言被同步到时钟信号clki,以在时间t4去断言同步的请求信号reqi*。如由箭头1404所指示的,此事件触发信号t0i的随后去断言。

如先前结合图11所描述的,箭头1400、1402和1404的组合创建在用户逻辑1004与自动初始化模块1002之间的鲁棒的通信系统。换而言之,用户逻辑1004和自动初始化模块1002执行握手操作以保证信息被适当地输送(例如,服务带有给定用户重置的请求)。例如,只要请求信号reqi(或对应信号reqi*)被断言,自动初始化模块1002便可保持重置控制信号t0i被断言。

类似于图13的用户重置周期,在c周期初始化周期期间和在时间t1与t5之间的用户重置周期期间,信号reseti可被类似地断言以执行任何调整序列和用户指定的重置序列。如果期望的话,可在时间t2而不是时间t1断言信号reseti,以与同步的重置信号reqi*对准。在时间t5,用户逻辑1004可再次执行正常操作。

这些步骤只是说明性的。可修改或忽略现有步骤;可并行执行步骤中的某些步骤;可添加附加的步骤;并且可颠倒或改变某些步骤的顺序。

实施例迄今为止相对于集成电路已被描述。本文中描述的方法和装置可被并入任何适合的电路中。例如,它们可被并入多种类型的设备中,诸如可编程逻辑设备、专用标准产品(assp)和专用集成电路(asic)。可编程逻辑设备的示例包括可编程阵列逻辑(pal)、可编程逻辑阵列(pla)、现场可编程逻辑阵列(fpla)、电可编程逻辑设备(epld)、电可擦可编程逻辑设备(eepld)、逻辑单元阵列(lca)、复杂可编程逻辑设备(cpld)及现场可编程门阵列(fpga),仅举几例。

在本文中一个或多个实施例中描述的可编程逻辑设备可以是包括以下组件的一个或多个的数据处理系统的部分:处理器;存储器;io电路系统;和外设设备。数据处理能够在广泛的各种应用中使用,诸如计算机联网、数据联网、仪表化、视频处理、数字信号处理或其中使用可编程或可再编程逻辑的优点是期望的任何适合的其它应用。可编程逻辑设备能够用于执行各种不同逻辑功能。例如,可编程逻辑设备能够被配置为与系统处理器协同工作的处理器或控制器。可编程逻辑设备也可用作用于仲裁对数据处理系统中的共享资源的访问的仲裁器。在又一示例中,可编程逻辑设备能够被配置为在处理器与系统中其它组件之一之间的接口。在一个实施例中,可编程逻辑设备可以是由altera/intelcorporation拥有的设备的家族之一。

前面所述只是说明本发明的原理,并且各种修改能够由本领域技术人员进行。前面所述实施例可单独或以任何组合被实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1