可编程流水线接口电路的制作方法

文档序号:17950209发布日期:2019-06-18 23:58阅读:298来源:国知局
可编程流水线接口电路的制作方法

本公开总体涉及修复保持时间冲突和改进同步电路的性能。



背景技术:

“建立时间”和“保持时间”描述了对时序逻辑元件(如触发器或寄存器)的数据输入相对于时钟输入的时序要求。建立和保持时间定义了一个时间窗口,在此期间,数据必须是稳定的,以保证在操作条件和制造公差的全范围内的可预测性能。建立时间是指为了可靠地捕获数据信号的状态,在时钟事件(如时钟信号的上升或下降边沿)发生之前,输入数据信号必须保持稳定的最小时间量。保持时间是指为了可靠地捕获数据信号的状态,在时钟事件之后,输入数据信号应当保持稳定的最小时间量。建立时间冲突有时被称为长路径问题,可通过减少路径长度或降低时钟速度来补救。保持时间冲突有时被称为短路径问题,可通过增加路径长度或向信号路径添加延迟电路来补救。

一些电路时序问题可能直到设计流程的后期才会被发现。也就是说,电路设计被实现为电路后,在测试过程中可能会发现错误。在这个后期阶段修复电路设计可能会非常昂贵。为了解决新发现的时序问题,一些设计包括在电路设计中几乎“无处不在”的流水线(pipeline)寄存器,例如,在每个触发器的输入和输出。在每个位置都有流水线寄存器的电路可能有利于优化时序,但这些电路可能非常昂贵。



技术实现要素:

本公开的电路结构包括逻辑电路、多个双稳态电路以及耦合到所述双稳态电路的控制电路。每个双稳态电路具有数据输入、时钟输入和耦合到逻辑电路的输出。控制电路被编程以选择性地将双稳态电路的输出或者在所述多个双稳态电路的数据输入处的信号连接到所述逻辑电路的输入。所述控制电路从所述时钟信号产生一个或多个延迟时钟信号,并选择性地将所述一个或多个延迟时钟信号中的一个或没有延迟的时钟信号提供给所述第一多个双稳态电路的每个双稳态电路的时钟输入。

另一种公开的电路结构包括多个可编程逻辑电路块。每个可编程逻辑电路块被配置为实现逻辑功能。所述可编程互连电路被配置以在所述多个可编程逻辑块之间选择性地传输信号。接口电路分别被耦合到所述多个可编程逻辑电路块。每个接口电路包括多个双稳态电路,以及与双稳态电路耦合的控制电路。每个双稳态电路具有数据输入、时钟输入和耦合到逻辑电路的输出。所述控制电路被编程以选择性地将双稳态电路的输出或在所述多个双稳态电路的数据输入处的信号连接到所述逻辑电路的输入。所述控制电路从所述时钟信号产生一个或多个延迟时钟信号,并选择性地将所述一个或多个延迟时钟信号中的一个延迟时钟信号或者没有延迟的所述输入时钟信号提供到所述第一多个双稳态电路的每个双稳态电路的时钟输入。

参考以下详细描述可理解这些和其他方面。

附图说明

电路的各个方面和特点将在回顾以下详细描述和参考附图后变得明显,在这些附图中:

图1示出了具有多个逻辑电路块的系统,每个逻辑电路具有可用于增强系统性能的相应的流水线接口电路;

图2示出了连接到逻辑电路的流水线接口电路;

图3示出了流水线接口电路的控制电路的示例实施例;

图4示出了提供给流水线接口电路的锁存器的脉冲时钟信号;

图5示出了根据一种方法选择的用于流水线化关键路径的时钟信号的波形;

图6示出了根据另一方法选择的用于流水线化关键路径的时钟信号的波形;

图7示出了通过流水线接口电路提供流水线化和为接口电路和逻辑块提供时间借用的时钟信号的波形;

图8示出了一种方法,其中可使用流水线接口电路来延缓快速数据路径并防止保持冲突;

图9示出了另一种方法,其中可使用流水线接口电路来延缓快速数据路径并防止保持冲突;以及

图10示出了可编程集成电路(ic),其上可实现所公开的电路和过程。

具体实施方式

如下所述,本文给出了许多具体细节用于描述具体的实施例。然而,对于本领域技术人员而言,显而易见的是,这些实施例的一个或多个其它例子和/或变型可在没有下面给出的所有具体细节的情况下实施。在其它例子中,在其它例子中,没有详细描述众所周知的特征,以免使这里的示例的描述模糊。为了便于说明,可在不同的图中使用相同的附图标记来表示相同元件或相同元件的附加实例。

所公开的电路和方法涉及在逻辑电路块输入处的接口电路。每个接口电路都选择性地支持流水线化(pipelining)、选择性地时间借用和/或选择性地增加逻辑电路块输入的最小延迟路径上的延迟。每个逻辑电路块可具有一个相关联的接口电路,所述接口电路单独控制到所述块的每个位输入。接口电路可选择性地允许输入数据信号绕过(bypass)用于输入的接口到块,选择性地将输入数据信号在输入到块之前流水线化,选择性地将输入数据信号用延迟时钟信号流水线化用于时间借用,选择性地延缓快速路径,使时间借用在其他路径上成为可能。

通过将寄存器集中在逻辑电路块的输入附近的接口电路中,并将寄存器与时钟延迟元件耦合以时间借用,迫使靠近输入端的寄存器表现为好像这些寄存器被放置在给定路径上靠近源触发器的位置,可以实现在几乎任何地方都有流水线寄存器的优点中的大多数,且不需要很高的成本。所述接口电路还可用于通过延缓较快的数据路径来促进全局激进的的时间借用,并可用于一般地修复的保持冲突(violation)。由于接口寄存器的位置集中在逻辑电路块的输入附近,因此接口寄存器更有可能与逻辑电路块共享相同的控制集(时钟、时钟使能和重置),从而降低使能寄存器的成本,因为不再需要用于从控制集中选择信号的多路复用器。

为了提高集成电路的性能,接口电路被提供在靠近逻辑电路块。每个接口电路都是可编程的,用于提供对输入信号的选择性流水线化到逻辑电路块。每个接口电路都包含多个双稳态电路和控制电路。每个双稳态电路被耦合用于接收输入数据信号,并被耦合用于输出数据信号到逻辑电路块的输入。所述控制电路控制到双稳态电路的时钟信号。控制电路是可编程的,从而选择性地将延迟时钟信号或没有延迟的时钟信号提供到每个双稳态电路的时钟输入。控制电路也是可编程的用于选择性地将双稳态电路的输出或双稳态电路的数据输入处的信号连接到逻辑电路块的输入。

图1示出了具有多个逻辑电路块的系统,每个逻辑电路块具有可用于增强系统性能的相应的流水线接口电路(pipelineinterfacecircuit)。所述系统包括多个逻辑电路块,这些逻辑电路块表示为块102、104、106、108,也可称为“逻辑电路”或“逻辑块”。每个逻辑电路块都包括组合逻辑,组合逻辑既可是硬连线逻辑电路,也可以是可编程逻辑电路。硬连线逻辑是具有固定逻辑功能的电路。可编程逻辑可被配置为通过将配置数据存储在配置内存中实现不同组合的逻辑功能,例如,配置内存中的配置数据配置查找表和路由电路(routingcircuitry)的状态。逻辑电路块在这里也可称为“逻辑电路”或“逻辑块”。

每个逻辑块都具有一组相关的一个或多个输出触发器(“ff”),用于记录输出信号的状态。输出触发器组显示为块110、112、114和118。根据所实现的电路,来自每个ff组110、112、114和116的输出信号可连接到一个或多个逻辑块的输入或ic管芯的输出引脚。例如,一种特定实现的电路可使得来自输出ff110的输出信号通过流水线接口电路122连接到逻辑电路106的输入。所述连接可是硬连线的,例如在专用集成电路(asic)实现中,或者是可编程的,例如在现场可编程门阵列(fpga)实现中。

每个逻辑块都有一个相关联的流水线接口电路,该流水线接口电路可用于选择性地流水线化和控制到逻辑块的输入信号的时序。流水线接口电路118被耦合到逻辑块的输入102,流水线接口电路120耦合到逻辑块104的输入,流水线接口电路122被耦合到逻辑块106的输入,以及流水线接口电路124被耦合到逻辑块108的输入。到逻辑块的每个输入信号都可由相关流水线接口电路单独地控制。例如,流水线接口电路可对一个输入信号进行流水线化,并且可绕过对另一个输入信号的流水线化。同样,流水线接口电路可独立地控制输入信号的时序。

每个流水线接口电路包括双稳态电路组,双稳态电路可是电平敏感锁存器或边沿触发式触发器。流水线接口电路使用双稳态电路将到相关逻辑块的信号流水线化。

每个流水线接口电路从输入时钟信号126产生不同的时钟信号。例如,每个流水线接口电路可产生脉冲时钟信号、延迟脉冲时钟信号和宽脉冲时钟信号,并将这些时钟信号选择性地提供给流水线接口电路中的双稳态电路组。

另一方面,每个流水线接口电路可向输出ff提供选择的时钟信号,该输出ff与流水线接口电路控制其输入信号的逻辑块相关联。例如,每个流水线接口电路都可选择性地提供时钟信号126的延迟版本或时钟信号126的非延迟版本到输出ff的时钟输入。

结合工作特性,图1大致示出了逻辑块的物理布局,以及关联的输出ff组和关联的流水线接口电路。每个流水线接口电路设置在相关逻辑块的输入附近。也就是说,与逻辑块相关联的流水线接口电路设置在集成电路芯片上与逻辑块相邻接的位置。在流水线接口电路和相关逻辑块之间不设置其他逻辑块、ff、存储器等。由于流水线接口电路被设置在相关逻辑块的输入附近,因此流水线接口电路中的双稳态电路集合更有可能与相关逻辑块共享相同的控制集(时钟、时钟使能和重置),从而消除了将控制集从远程寄存器路由到逻辑块所需的资源。

图2示出连接到逻辑电路202的流水线接口电路。流水线接口电路包括双稳态电路组,如锁存204、206、208、……、210、控制电路等。流水线接口电路的控制电路包括控制电路212和多路复用器214、216、218、……220,以及从控制电路212到锁存器和多路复用器的信号线连接。流水线接口电路可被配置为选择性地绕过用于输入信号的异步馈通(asynchronousfeedthrough)的锁存器、流水线化到逻辑电路的非时序关键信号、流水线化到逻辑电路的时序关键信号、流水线化或者时间移位到逻辑电路的信号,以及延缓数据信号以修复保持冲突,并且允许更加激烈的时间借用。在另一种实施例中,边缘触发触发器可替代锁存器204、206、208、……、210,同时控制电路212不再使用脉冲发生器。

控制电路212向多路复用器214、216、218、……220提供相应的控制信号,用于选择性地流水线化到逻辑电路的输入信号。单条控制线236表示到多路复用器的多个控制信号。为了流水线化到逻辑电路202的输入信号,控制电路控制相关联的多路复用器以从锁存器中选择输出信号。为了绕过流水线化,控制电路控制相关的多路复用器选择绕过锁存器的信号。例如,要将用于逻辑电路输入的信号222流水线化,控制电路向多路复用器214发信号以从锁存器204中选择输出信号。控制电路可单独地控制输入信号222、224、226、……228或流水线化后版本的选择,并且彼此相互独立。在一个实施例中,控制电路可包括各自的配置存储器单元,这些配置存储器单元是可编程的以用于控制对流水线化后信号或未流水线化信号的选择。

控制电路212还被配置为基于输入时钟信号126产生多个不同的时钟信号。控制电路212产生脉冲时钟信号、延迟脉冲时钟信号以及宽脉冲时钟信号。对于每个锁存器204、206、208、……、210,控制电路选择这些时钟信号中的一个连接到锁存器的时钟输入。用于连接到锁存器的时钟信号的选择是彼此独立的。也就是说,可为不同的锁存器提供不同的所产生的时钟信号。所选择的时钟信号由连接到锁存器210的时钟输入的线240和连接到其他锁存器204、206和208的时钟输入的线表示。

在另一实施例中,流水线接口电路可被配置为向输出触发器230、232、…、234的时钟输入提供选择的时钟信号,用信号线238表示。控制电路可被配置为为逻辑电路202和下游逻辑电路(未示出)借用时间,该下游逻辑电路由来自逻辑电路202并在触发器230、232、…、234中捕获的输出信号驱动。控制电路是可编程的,用于选择性地将时钟信号或时钟信号的延迟版本提供给每个输出触发器230、232、…、234的时钟输入。

图3示出了流水线接口电路的控制电路212的示例性实施例。控制电路大致从输入时钟信号126中产生多个可选时钟信号,并选择其中这些时钟信号中的一个输入到每个锁存器204、…、210的时钟输入。

时钟信号126在一个时钟路径上被路由到宽脉冲发生器302。宽脉冲发生器是一种产生时钟脉冲的电路,该时钟脉冲的脉冲宽度大于由窄脉冲发生器304和306产生的时钟信号的脉冲宽度。可以选择该宽脉冲时钟信号,以便在所需的路径上时间借用该脉冲的宽度的时间量。

时钟信号126也在另一个时钟路径上被路由到延迟电路308,延迟电路308相位移位时钟信号126,用于产生时钟信号126的延迟版本。延时电路是可编程的,以将所需的延时量引入时钟信号。时钟信号的延迟版本被路由到窄脉冲发生器304,窄脉冲发生器304从延迟时钟信号中产生窄脉冲。窄脉冲发生器304产生的时钟信号的脉冲宽度小于时钟信号126的脉冲宽度。

时钟信号126在另一个时钟路径上被路由到窄脉冲发生器306。该窄脉冲发生器接收经多路复用器310选择的两个时钟信号中的一个,并从所选时钟信号中产生窄脉冲信号。窄脉冲发生器306产生的时钟信号的脉冲宽度小于时钟信号126的脉冲宽度。多路复用器310在反相器312的输出反相时钟信号和输入时钟信号126之间进行选择。因此,根据施加到多路复用器310的控制信号,窄脉冲发生器产生输入时钟信号的窄脉冲,或在输入时钟信号126的负相位期间产生窄脉冲。

控制电路212包括多路复用器314、316、318、320、……、322和时钟选择控制电路324,该时钟选择控制电路324用于为锁存器204、……、210选择时钟信号。可使用多级多路复用器以减少用于将不同时钟信号传送到锁存器的路由需求。在一个示例实施例中,每个多路复用器314、316和318从生成的时钟信号的子集中进行选择,并且总的来说,多路复用器314、316和318提供了的时钟信号的子集,时钟信号可从该子集中被选择用于锁存器。例如,多路复用器314从来自宽脉冲发生器302的宽脉冲时钟信号、来自窄脉冲发生器304的延迟窄脉冲时钟信号、和来自窄脉冲发生器306的窄脉冲时钟信号中进行选择。每个多路复用器320、322从多路复用器314、…、316、318提供的时钟信号子集中选择时钟信号。例如,多路复用器320可从时钟信号i、j、k中进行选择,其中时钟i、时钟j、时钟k包含来自时钟1、…、时钟n、和块时钟的时钟信号中的三个。“块时钟”是被选择用于驱动与流水线接口电路相关联的逻辑块的时钟信号。

时钟选择控制电路324通过复用器314、……、316、318、320、……、322控制时钟信号的选择。在一个示例实施例中,时钟选择控制可包括配置存储器单元,该配置存储器单元可以用控制这些选择的值被编程。

图4-9示出了可为流水线接口电路的双稳态电路和相关逻辑块的输出触发器生成和选择的不同时钟信号。图4示出了提供给流水线接口电路的锁存器的脉冲时钟信号。施加到发送触发器和接收触发器之间锁存器的时钟输入的窄脉冲时钟信号可用于提供非关键路径的流水线化,从而潜在地提高性能。波形402示出了发射触发器处的时钟信号,波形404示出了提供给流水线接口电路中的锁存器的窄脉冲时钟信号,并且波形406示出了接收触发器处的时钟。

图5示出了根据一种方法选择的用于流水线化关键路径的时钟信号的波形,而图6示出了根据另一种方法选择的用于流水线化关键路径的时钟信号的波形。流水线化关键路径与非关键路径之间的两个区别是:1)关键路径通常可从向后续流水线级借用时间中获益;和2)非关键路径可能具有更短的路径,这些更短的路径可能引起随时间借用的保持时间冲突。因此,希望将到关键路径的时钟脉冲延迟,而不是非关键路径。图5和6示出了用于时间借用的两种方法。在图5中,波形408示出了提供给流水线接口电路的锁存器的延迟脉冲时钟信号。在图6中,波形410示出了提供给流水线接口电路的锁存器的宽脉冲时钟信号。注意,时钟信号408(图5)的脉宽小于时钟信号410(图6)的脉宽。

每个公开的流水线接口电路还可用于为相关逻辑块和流水线接口借用时间。如果流水线接口和逻辑块之间的数据路径延迟太大,且没有时序余量(timingslack)用于时间延迟,则用于接口电路和逻辑块两者的时间借用是有用的,但是产生于同一逻辑块的到下一个逻辑块的下一条路径是很短的。

图7示出了通过流水线接口电路提供流水线化和为接口电路和逻辑块提供时间借用的时钟信号的波形。波形412示出了在流水线接口电路中的锁存器处的延迟脉冲时钟信号,并且波形414示出了逻辑块的输出触发器处的延迟时钟信号。

图8和9示出了根据替代方法如何能够使用流水线接口电路来延缓快速数据路径并防止保持冲突。在图8中,波形416示出了,以超出输入数据信号的到达的亚稳区域的量,使得延迟脉冲时钟信号被延迟到流水线接口电路中的锁存器。在图9中,波形418示出了延迟的脉冲时钟信号被延迟到发射触发器(波形402)处的时钟信号的负边缘,其使时钟延迟超出了输入数据信号的到达的亚稳区域。

图10示出了可在其上实现所公开的电路和过程的可编程集成电路(ic)500。可编程ic也可称为片上系统(soc),其包括现场可编程门阵列逻辑(fpga)和其他可编程资源。fpga逻辑可在阵列中包含几种不同类型的可编程逻辑块。例如,图10所示的可编程ic500包括大量不同的可编程单元块,包括多千兆比特收发器(mgt)501、可配置逻辑块(clb)502、随机存取存储器块(bram)503、输入/输出块(iob)504、配置和时钟逻辑(config/clocks)505、数字信号处理块(dsp)506、专用输入/输出块(i/o)507、例如,时钟端口、以及其他可编程逻辑508,例如数字时钟管理器、模数转换器、系统监控逻辑等等。一些具有fpga逻辑的可编程ic还包括专用处理器块(proc)510和内部和外部重新配置端口(未显示)。

在某些fpga逻辑中,每个可编程单元块包括一个可编程互连元件(int)511,可编程互连元件511具有去到和来自每个相邻单元块中相应互连元件的标准化连接。因此,将可编程互连元件组合在一起,实现所示出的fpga逻辑的可编程互连结构。可编程互连元件int511还包括去到以及来自同一单元块内的可编程逻辑元件的连接,如图10的顶部所包括的例子所示。

例如,clb502可包括可配置逻辑元件(cle)512再加上单个可编程互连元件int511,cle512可通过编程来实现用户逻辑。bram503除了一个或多个可编程互连元件外,还可包括bram逻辑元件(brl)513。通常,包含在单元块中的互连元件的数量取决于单元块的高度。图示的bram单元块具有与5个clbs一样的高度,但是也可以使用其他的数字(例如,4)。dsp单元块506可包括dsp逻辑元件(dspl)514,此外还有适当数量的可编程互连元件。iob504可包括,例如,输入/输出逻辑元件(iol)515的两个实例,以及可编程互连元件int511的一个实例。如本领域的技术人员所清楚的那样,例如,连接到i/o逻辑元件515的实际i/o焊垫,是使用层叠在各种图示逻辑块之上的金属制造的,并且通常不限于输入/输出逻辑元件515的区域。

管芯中心附近的柱状区域(图10中阴影部分)用于配置、时钟以及其他控制逻辑。从这一柱状区域延伸出来的水平区域509用于将时钟和配置信号分布在可编程ic的宽度上。请注意,所引用的“柱状”和“水平”区域是相对于从纵向查看附图。

一些利用图10所示架构的可编程ic包括额外的逻辑块,这些逻辑块破坏了构成可编程ic的很大一部分的规则柱状结构。这些额外的逻辑块可以是可编程块和/或专用逻辑。例如,图10所示的处理器块proc510跨越了多个clb和bram列。

注意,图10仅用于演示示例性可编程ic架构。一个列中的逻辑块的数量、列的相对宽度、列的数量和顺序、列中包含的逻辑块的类型、逻辑块的相对大小以及图10顶部包括的互连/逻辑实施例都是纯粹示例性的。例如,在实际的可编程ic中,在clbs出现的任何地方通常都包括了clbs的多个相邻列,以促进用户逻辑的有效实现。

虽然在某些情况下,一些方面和特征可在单个图形进行描述,但是可以理解,一个图形的特征可以与另一个图形的特征相结合,即使该组合未被明确地示出或明确地描述为组合。

本公开的电路和方法被认为可应用于用于优化集成电路的时序的各种系统。通过考虑本说明书,其它方面和特征对于本领域技术人员来说是显而易见的。所述电路和方法可以被作为专用集成电路(asic)或可编程逻辑实现。本发明的说明书和图纸仅作为示例,本发明的范围由所附权利要求确定。

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