首页> 中国专利> 用于执行有关位于与不同的时钟域关联的电路之间的同步区域的寄存器重定时操作的方法

用于执行有关位于与不同的时钟域关联的电路之间的同步区域的寄存器重定时操作的方法

摘要

电路设计计算设备可以在已执行布局和布线操作之后,执行寄存器重定时操作以提高电路设计的性能。例如,所述电路设计计算设备可以执行寄存器重定时操作,所述寄存器重定时操作将寄存器从在第一时钟域中操作的电路设计的第一部分移动到同步区域中,所述同步区域将所述电路设计的所述第一部分与所述电路设计的第二部分分离,所述电路设计的所述第二部分在与所述第一时钟域不同的第二时钟域中操作。执行将寄存器移动到时钟域之间的同步区域中的寄存器重定时操作可以解决所谓的短路径‑长路径问题,其中将得益于寄存器重定时操作的长路径并行耦接到在寄存器重定时操作期间没有位置接收寄存器的短路径。

著录项

  • 公开/公告号CN106250577A

    专利类型发明专利

  • 公开/公告日2016-12-21

    原文格式PDF

  • 申请/专利权人 阿尔特拉公司;

    申请/专利号CN201610384252.8

  • 发明设计人 B·甘姆萨;G·R·邱;

    申请日2016-06-03

  • 分类号G06F17/50;

  • 代理机构北京纪凯知识产权代理有限公司;

  • 代理人赵志刚

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 01:11:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-17

    授权

    授权

  • 2017-01-18

    实质审查的生效 IPC(主分类):G06F17/50 申请日:20160603

    实质审查的生效

  • 2016-12-21

    公开

    公开

说明书

本申请要求2015年6月3日提交的美国专利申请号为14/730,082的优先权,其全部公开内容以引用方式并入本文。

技术领域

本申请涉及集成电路,并且更特别地,涉及在集成电路设计的实施期间执行寄存器重定时操作。

背景技术

从一个技术节点到下一个技术节点的每个过渡已经导致更小的晶体管几何形状,并且因此潜在地导致每单位的集成电路面积实施更多的功能。同步集成电路已经进一步得益于该发展,如由减少的互连和单元延迟所证明的,这已经导致性能提高。

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

然而,在布局(placement)操作之前执行寄存器重定时是基于预期延迟的估计(即,该估计是基于预布局电路设计中寄存器之间的组合逻辑门的数量),并且根据寄存器之间的实际延迟,可以导致次优的寄存器重定时解决方案。

类似地,在布线(routing)操作之前执行寄存器重定时是基于预期延迟的估计(即,该估计是基于在布局的电路设计中的寄存器之间的曼哈顿(Manhattan)距离),并且根据由因布线阻塞的更长布线引起的寄存器之间的实际延迟,可以导致次优的寄存器重定时解决方案。

在布局之后或在布线操作之后执行寄存器重定时可分别地需要先前确定的布局解决方案或先前确定的布局和布线解决方案的更新。

发明内容

根据本发明的某些方面,电路设计计算设备可以接收具有同步区域的电路设计描述。同步区域可以将在第一时钟域中操作的电路设计描述的第一部分耦接到在与第一时钟域不同的第二时钟域中操作的电路设计描述的第二部分。电路设计计算设备可以执行将寄存器从电路设计描述的第一部分移动到同步区域中的寄存器重定时操作。

应当理解,能够用许多方式实施本发明,诸如过程、装置、系统、器件或计算机可读介质上的方法。下面描述了本发明的若干发明实施例。

在某些实施例中,上面提到的寄存器可以被分配到电路设计描述的第一部分中的流水线布线资源,并且通过设置流水线布线资源以非流水线模式进行操作,电路设计计算设备可以执行寄存器重定时操作。如果需要,电路设计计算设备可以将同步区域中的另一个流水线布线资源从以非流水线模式进行操作切换到以流水线寄存器模式进行操作。

在某些实施例中,在执行寄存器重定时操作之前,通过在电路设计描述的第一部分和同步区域之间布局电路设计描述的第一部分的附加寄存器,电路设计计算设备可以形成同步链。电路设计描述的第二部分可以将信号发送到电路设计描述的第一部分;并且同步链可以执行这些信号的亚稳态处理。在寄存器重定时操作的执行期间,通过将寄存器从电路设计描述的第一部分移动到同步区域中,而不变更同步链,电路设计计算设备可以保留亚稳态处理。

从附图和优选实施例的以下详细描述,本发明的进一步的特征、其本质和各种优势将更显而易见。

附图说明

图1是根据一个实施例的示意性的集成电路的图示。

图2是根据一个实施例的示意性的寄存器重定时操作的图示。

图3是根据一个实施例的使用寄存器用流水线输送布线信号的示意性的流水线布线资源的图示。

图4是根据一个实施例的可以被用于设计集成电路的示意性的电路设计系统的图示。

图5是根据一个实施例的可以被用于电路设计系统中的示意性的计算机辅助设计(CAD)工具的图示。

图6是根据一个实施例的用于设计集成电路的示意性的步骤的流程图。

图7是根据一个实施例的解决短路径-长路径问题的示意性的寄存器重定时操作的图示。

图8是根据一个实施例的到时钟域之间的同步区域中的示意性的寄存器重定时操作的图示。

图9是根据一个实施例的可以导致时钟域之间的同步区域中被卡住的(stuck)寄存器的示意性的寄存器重定时操作的图示。

图10是根据一个实施例的到两个时钟域之间的同步区域中的可以导致新的关键路径的示意性的寄存器重定时操作的图示。

图11是根据一个实施例的用于执行将寄存器移动到两个时钟域之间的同步区域中的寄存器重定时操作的示意性的步骤的流程图。

图12是根据一个实施例的用于执行将寄存器移动经过同步寄存器的寄存器重定时操作的示意性的步骤的流程图。

图13是根据一个实施例的用于解决短路径-长路径问题的示意性的步骤的流程图。

具体实施方式

本实施例涉及集成电路,并且更特别地,涉及在集成电路设计的实施期间执行寄存器重定时操作。

如上面所提到的,在背景技术部分中,在布局操作之前和/或在布线操作之前执行寄存器重定时是基于预期延迟的估计,并且根据在寄存器之间的实际延迟,可以导致次优的寄存器重定时解决方案,然而在布局之后或在布线之后执行寄存器重定时可以依赖更准确的定时信息。然而,在布局之后或在布线操作之后执行寄存器重定时可以导致所谓的短路径-长路径问题,其中长路径将得益于因在寄存器重定时操作期间与长路径并行的短路径没有位置接收寄存器而不能执行的寄存器重定时操作。作为在短路径中创建空间的结果,寄存器重定时操作可分别需要先前确定的布局解决方案或先前确定的布局和布线解决方案的更新。在某些情况中,更新布局和/或布线解决方案可以使触发原始决定以执行寄存器重定时操作从而解决短路径-长路径问题的定时信息无效。因此,寄存器重定时操作可以遇到不同的短路径-长路径问题,这可以抵消为原始短路径中的寄存器添加空间的益处。

在某些情况中,时钟域之间的同步区域可以具有可用的位置以在寄存器重定时操作期间接收寄存器,从而避免先前确定的布局解决方案或先前确定的布局和布线解决方案的更新。因此,可期望通过将寄存器移动到时钟域之间的那些同步区域中执行寄存器重定时操作。

本领域中的技术人员将认识到,可以在没有这些具体细节中的某些或全部的情况下实践本示例性实施例。在其他情况中,没有详细描述众所周知的操作,以便避免不必要地混淆本实施例。

图1中示出可以经配置用于实施电路设计的集成电路诸如可编程逻辑器件(PLD)100的说明性的实施例。如图1所示,可编程逻辑器件(PLD)可以包括功能块的二维阵列,例如,功能块包括逻辑阵列块(LAB)110和其他功能块,诸如随机存取存储器(RAM)块130和数字信号处理(DSP)块120。功能块诸如LAB 110可以包括接收输入信号并针对输入信号执行定制功能以产生输出信号的较小的可编程区域(例如,逻辑元件、可配置的逻辑块或自适应逻辑模块)。

可编程逻辑器件100可以包含可编程存储器元件。存储器元件可以使用输入/输出元件(IOE)102加载有配置数据(还称为编程数据)。一旦加载,每个存储器元件提供控制相关联的功能块(例如,LAB 110、DSP 120、RAM 130或输入/输出元件102)的操作的对应的静态控制信号。

在一个典型的情形中,加载的存储器元件的输出被应用到功能块中的金属氧化物半导体晶体管的栅极以导通或截止某些晶体管,并且从而配置包括布线路径的功能块中的逻辑。可以以该方式控制的可编程逻辑电路元件包括多路复用器(例如,用于形成互连电路中的布线路径的多路复用器)、查找表、逻辑阵列、与逻辑门、或逻辑门、异或逻辑门、与非逻辑门、或非逻辑门,以及异或非逻辑门、通过门等中的一部分。

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

此外,可编程逻辑器件可以具有用于驱动信号离开PLD和用于从其他器件接收信号的输入/输出元件(IOE)102。输入/输出元件102可以包括并行输入/输出电路、串行数据收发器电路、差动接收器和发送器电路,或用于将一个集成电路连接到另一个集成电路的其他电路。如图所示,输入/输出元件102可以围绕芯片的周边进行定位。如果需要,可编程逻辑器件可以具有以不同的方式安置的输入/输出元件102。例如,输入/输出元件102可以形成可以被定位在可编程逻辑器件上的任何地方的输入/输出元件的一列或更多列(例如,横跨PLD的宽度均匀地分布)。如果需要,输入/输出元件102可以形成输入/输出元件的一行或更多行(例如,横跨PLD的高度分布)。可替换地,输入/输出元件102可以形成输入/输出元件的岛状物,输入/输出元件的岛状物可以分布在PLD的表面上,或者被集群在所选择的区域中。

PLD还可以包括以垂直布线通道140(即,沿着PLD 100的垂直轴形成的互连)和水平布线通道150(即,沿着PLD 100的水平轴形成的互连)的形式、每个布线通道包括至少一个轨道以布线至少一根导线的可编程互连电路。如果需要,互连电路可以包括流水线元件,并且在操作期间,可以访问储存在这些流水线元件中的内容。例如,编程电路可以向流水线元件提供读和写访问。

请注意,除图1中所描绘的互连电路的拓扑结构之外,其他布线拓扑结构旨在被包括在本发明的范围内。例如,布线拓扑结构可以包括呈对角线行进的导线,或者沿着它们的范围的不同部分水平和垂直行进的导线,以及在三维集成电路的情况下,垂直于器件平面的导线,并且导线的驱动器可以被定位在与导线的一端不同的点处。布线拓扑结构可以包括基本上跨越整个PLD 100的全局导线、部分全局导线诸如跨越部分PLD 100的导线、特定长度的交错导线、较短的局部导线,或者任何其他合适的互连资源安置。

而且,应当理解,可以在任何集成电路中实施实施例。如果需要,此类集成电路的功能块可以被安置在更多级或层中,在更多级或层中多个功能块被互连以形成更大的块。其他器件安置可以使用不是以行和列安置的功能块。

图2示出PLD 100可以实施的不同版本的电路设计的示例。第一版本的电路设计可以包括时钟控制的储存电路诸如寄存器210、寄存器220、寄存器230和寄存器240,以及组合逻辑245。

组合逻辑245可以包括由布尔电路实施的任何数字逻辑,组合逻辑245的输出可以仅随着当前输入的函数而异步地改变。组合逻辑的示例可以包括与逻辑门、或逻辑门、异或逻辑门、与非逻辑门、或非逻辑门,以及异或非逻辑门、反相器、通过门、多路复用器、解复用器、查找表、逻辑阵列等,以及其任何组合。

相比之下,顺序逻辑可以包括由电路实施的任何数字逻辑,响应于同步信号(例如,时钟信号),顺序逻辑的输出可以在离散的时间同步地改变。顺序逻辑的示例可以包括任何时钟控制的储存电路诸如寄存器(有时还被称为触发器)或存储器诸如随机存取存储器(RAM)、只读存储器(ROM)、内容寻址存储器(CAM)等。

电路设计元件可以包括在电路设计中的任何组合逻辑、顺序逻辑和/或导线。如果需要,延迟可以与电路设计元件相关联。

在图2的示例中,寄存器210可以将信号发送到寄存器220;寄存器220可以通过组合逻辑240将信号发送到寄存器230;以及寄存器230可以将信号发送到寄存器240。作为示例,从寄存器220通过组合逻辑245到寄存器230的路径可以具有6ns(纳秒)的延迟,然而在寄存器210和寄存器220之间以及在寄存器230和寄存器240之间的路径可以具有零纳秒的可以忽略的延迟。因此,第一版本的电路设计可以在166MHz的频率下操作。

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

作为示例,从寄存器220通过组合逻辑242到寄存器230的路径可以具有4ns的延迟,并且从寄存器230通过组合逻辑244到寄存器240的路径可以具有2ns的延迟。因此,第二版本的电路设计可以在250MHz的频率下操作。

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

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

在某些实施例中,可以沿着导线推动寄存器,而不用向前或向后推动寄存器通过组合逻辑。例如,考虑其中从寄存器220到第二版本的电路设计的组合逻辑242的导线具有2ns的延迟,且通过组合逻辑242到寄存器230的路径具有2ns延迟的情形。在该情形下,可以沿着导线推动寄存器220更靠近组合逻辑242,从而实现与在第三版本的电路设计中的相同的结果(即,在寄存器210、寄存器220、寄存器230和寄存器240之间2ns的最坏情况的延迟),而不用推动寄存器220通过任何组合逻辑。

因此,为了避免不必要地混淆本实施例,我们把包括向前或者向后推动寄存器通过组合逻辑,以及沿着导线向前或向后推动寄存器的所有寄存器移动称作寄存器重定时操作。

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

多路复用器302可以是驱动器输入多路复用器(DIM)或功能块输入多路复用器(FBIM)。DIM可以从多个源选择信号,并且将所选择的信号发送到驱动导线的驱动器304。多个源可以包括来自功能块的输出以及行进在与所述导线相同的方向上或者行进在与所述导线正交的方向上的其他布线导线的信号。FBIM将信号输出到功能块,并且可以从多个布线导线选择信号。

如图3所示,根据本发明的一个实施例,多路复用器302可以通过将它的输出提供到寄存器306的数据输入被流水线化。流水线布线资源300中的多路复用器308可以直接接收多路复用器302的输出,并且还可以从寄存器306接收数据输出。

虽然流水线布线资源300包括寄存器,但是本领域中的技术人员将认识到,可以使用不同的寄存器实施方式以储存布线信号,诸如边沿触发的触发器、脉冲锁存器、透明-低锁存器、透明-高锁存器,仅举几例。因此,为了避免不必要地混淆本实施例,我们把流水线布线资源中的储存电路称作流水线储存元件。

多路复用器308可以使得流水线布线资源300或者被用于非流水线模式,或者被用于流水线寄存器模式。在非流水线模式中,多路复用器308的输出选择多路复用器302的直接输出。

在流水线寄存器模式中,多路复用器308可以选择寄存器306的输出。多路复用器308可以将它的输出提供到驱动器电路304,并且驱动器电路304的输出可以被用于驱动布线导线。布线导线可以跨越多个功能块(例如,对于具有DIM的流水线布线资源)。可替换地,布线导线可以在功能块(例如,对于具有FBIM的流水线布线资源)的内部。

每个DIM/FBIM可以包括寄存器诸如寄存器306,使得所有的布线多路复用器被流水线化。然而,在某些实施例中,因为所提供的能力可以超过设计要求,所以所有的布线多路复用器被流水线化可以是不必要的。因此,在某些实施例中,仅一部分诸如一半或四分之一的布线多路复用器可以被流水线化。例如,信号可以耗费150皮秒(ps)穿过给定长度的导线,而时钟信号可以被约束以用650ps的时钟周期进行操作。因此,在该示例中,每隔四根导线提供流水线寄存器诸如寄存器306可以是足够的。可替换地,寄存器可以布局得比每隔四根导线的布局更频繁(例如,每隔两根导线),以在使用哪些寄存器的选择中提供更高的自由度。

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

电路设计系统中的CAD工具可以评估寄存器重定时是否可以提高当前版本的电路设计的性能,或者当前版本的电路设计是否满足给定的性能标准。如果需要,并且在CAD工具确定寄存器重定时将提高当前版本的电路设计的性能,或者当前版本的电路设计未达到给定的性能标准的情况下,CAD工具可以执行将当前版本的电路设计转换成另一个版本的电路设计的寄存器重定时操作(例如,如图2所示)。

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

基于软件的部件诸如计算机辅助设计工具420和数据库430驻留在系统400上。在操作期间,可执行软件诸如计算机辅助设计工具420的软件在系统400的(一个或更多个)处理器上运行。数据库430被用于为系统400的操作储存数据。一般来说,软件和数据可以被储存在系统400中的任何计算机可读媒介(储存器)上。此类储存器可以包括计算机存储器芯片、可移动和固定介质诸如硬盘驱动器、闪速存储器、光盘(CD)、数字多功能光盘(DVD)、蓝光光盘(BD)、其他光学介质、软盘、磁带,或任何其他合适的存储器或(一个或更多个)储存器件。当安装系统400的软件时,系统400的储存器具有致使系统400中的计算设备执行各种方法(过程)的指令和数据。当执行这些过程时,计算设备经配置用于实施电路设计系统的功能。

可以由单个供应商或者由多个供应商提供其中某些或全部有时被统称为CAD工具、为电子设计自动化(EDA)工具,或为电路设计计算设备的计算机辅助设计(CAD)工具420。工具420可以被提供作为一个或更多个工具套件(例如,用于执行与在可编程逻辑器件中与实施电路设计相关联的任务的编译器套件),和/或作为一个或更多个分离的软件部件(工具)。

(一个或更多个)数据库430可以包括仅由一个特定的工具或更多个特定的工具访问的一个或更多个数据库,并且可以包括一个或更多个共享的数据库。可以由多个工具访问共享的数据库。例如,第一工具可以将用于第二工具的数据储存在共享的数据库中。第二工具可以访问共享的数据库以检索由第一工具储存的数据。这允许一个工具将信息传递到另一个工具。如果需要,工具还可以在彼此之间传递信息,而不用将信息储存在共享的数据库中。

图5中示出可以被用于电路设计系统诸如图4的电路设计系统400中的示意性的计算机辅助设计工具520。

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

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

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

作为另一个示例,设计和约束录入工具564可以包括原理图捕获工具。原理图捕获工具可以允许电路设计人员根据组成部分诸如逻辑门和成组的逻辑门而形象化地构造集成电路设计。预先存在的集成电路设计的库可以被用于允许用原理图捕获工具导入设计的期望的部分。

如果需要,设计和约束录入工具564可以允许电路设计人员使用硬件描述语言诸如Verilog硬件描述语言(Verilog HDL)、超高速集成电路硬件描述语言(VHDL)、SystemVerilog,或高级电路描述语言诸如OpenCL或SystemC(仅举几例),将电路设计提供给电路设计系统400。集成电路设计的设计人员能够通过用编辑器568写硬件描述语言代码录入电路设计。如果需要,可以从用户维护的或商业库导入代码块。

在已经使用设计和约束录入工具564录入设计之后,行为仿真工具572可以被用于仿真电路设计的功能性能。如果设计的功能性能是不完整的或不正确的,则电路设计人员能够使用设计和约束录入工具564更改电路设计。在已经使用工具574执行综合操作之前,可以使用行为仿真工具572验证新的电路设计的功能操作。如果需要(例如,在逻辑综合之后),仿真工具诸如行为仿真工具572还可以被用于设计流程中的其他阶段。行为仿真工具572的输出可以以任何合适的格式(例如,真值表、定时图等)被提供给电路设计人员。

一旦已确定电路设计的功能操作是令人满意的,逻辑综合和优化工具574就可以生成电路设计的门级网表,例如使用来自从属于由已被选择用于生产集成电路的铸造厂支持的目标过程的特定的库的门生成电路设计的门级网表。可替换地,逻辑综合和优化工具574可以使用目标可编程逻辑器件(即,在特定的可编程逻辑设备产品或产品系列的逻辑和互连资源中)的门,生成电路设计的门级网表。

基于由逻辑设计人员使用工具564录入的电路设计数据和约束数据,逻辑综合和优化工具574可以通过进行硬件的适当选择来优化设计,以在电路设计中实施不同的逻辑功能。

在使用工具574进行逻辑综合和优化之后,电路设计系统可以使用工具诸如布局和布线工具576执行物理设计步骤(布局综合操作)。布局和布线工具576被用于确定将由工具574产生的门级网表的每个门布局在哪里。例如,如果两个计数器相互作用,则布局和布线工具576可以将这些计数器定位在相邻的区域中以减少互连延迟,或者以满足规定最大被允许的互连延迟的定时要求。布局和布线工具576为任何目标集成电路(例如,为给定的可编程集成电路诸如现场可编程门阵列(FPGA))创建有序且有效的电路设计实施方式。

工具诸如工具574和工具576可以是编译器套件的一部分(例如,由可编程逻辑器件供应商提供的编译器工具套件的一部分)。根据本发明,工具诸如工具574、工具576和工具578还可以包括定时分析工具诸如定时估计器。这使得工具574和工具576在实际生产集成电路之前满足性能要求(例如,定时要求)。

作为示例,基于电路设计中的寄存器之间的组合路径的长度和由逻辑设计人员使用工具564录入的对应的定时约束,工具574和/或工具576可以在电路设计上执行寄存器重定时操作。如图2所述,寄存器重定时操作可以移动寄存器通过组合逻辑(例如,通过逻辑与、或、异或等门、查找表(LUT)、多路复用器、算术运算符等),或者沿着导线移动寄存器。如果需要,工具574和工具576可以通过配置流水线布线资源诸如图3的流水线布线资源300以非流水线模式进行操作或以流水线寄存器模式进行操作,执行寄存器的向前或向后推动。

在某些情形下,工具576可以遇到短路径-长路径问题,其中将得益于寄存器重定时操作的长路径并行耦接到短路径,该短路径在寄存器重定时操作期间没有位置接收寄存器。作为示例,考虑其中短路径以在第一时钟域中操作并与在第二时钟域中操作的电路设计元件相邻放置的同步寄存器结束的情形。同步寄存器和在第二时钟域中操作的其他寄存器之间的连接有时还被称为同步区域。

在该情形下,工具576可以执行寄存器重定时操作,该操作将除同步寄存器之外的第一时钟域的寄存器移动到第一时钟域和第二时钟域之间的同步区域中,以及移动到长路径中,从而解决短路径-长路径问题。作为示例,工具576可以通过配置同步区域中的流水线布线资源诸如图3的流水线布线资源300以流水线寄存器模式进行操作,执行寄存器重定时操作到同步区域中。

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

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

图6中示出涉及使用图5的工具520产生集成电路的掩模级布局描述的示意性的操作。如图6所述,电路设计人员可以首先提供设计规范602。一般来说,设计规范602可以是以应用程序代码(例如,C代码、C++代码、SystemC代码、OpenCL代码等)的形式提供的行为描述。在某些情形下,可以以寄存器传输级(RTL)描述606的形式提供设计规范。

一般来说,行为设计规范602可以包括不定时的或部分定时的功能代码(即,应用程序代码不描述逐周期硬件行为),然而RTL描述606可以包括详细说明寄存器传输级处电路的逐周期行为的完全定时的设计描述。

在步骤604处,可以执行行为综合(有时还被称为算法综合)以将行为描述转变成RTL描述606。如果已经以RTL描述的形式提供了设计规范,则可以跳过步骤604。

RTL描述可以具有描述寄存器传输级处的电路功能的任何形式。例如,可以使用硬件描述语言诸如Verilog硬件描述语言(Verilog HDL或Verilog)、SystemVerilog硬件描述语言(SystemVerilog HDL或SystemVerilog),或超高速集成电路硬件描述语言(VHDL)提供RTL描述。如果需要,部分或全部的RTL描述可以被提供作为原理图表示。

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

这些约束能够被提供用于各数据路径、各数据路径的部分、部分的设计,或用于整个设计。例如,在约束文件中,或者通过用户输入(例如,使用图5的设计和约束录入工具564),可以提供具有设计规范602、RTL描述606(例如,作为编译指示或作为声明)的约束,仅举几例。

在某些实施例中,给定的数据路径可以具有与路径相关联的不止一个约束,并且这些约束中的某些可以彼此冲突(例如,对于给定的路径,接收的具有行为设计规范的约束可以与接收的具有RTL描述的约束以及接收的具有约束文件的约束相冲突)。在该情形下,预定的约束的优先级(其可以由CAD工具520明确地定义或隐式地决定)可以确定选择哪些冲突约束。例如,来自用户或配置文件的约束可以覆盖从其他源接收的约束,然而接收的具有RTL描述的约束可以覆盖接收的具有行为设计规范的约束。

约束可以把整个电路设计或部分的电路设计作为目标。例如,可以全局地定义某些约束,并且因此其可以应用于整个电路设计。可以局部地分配其他约束,并且因此该其他约束仅可应用于对应部分的电路设计。

考虑其中分层次地组织电路设计的情形。在该情形下,每个分层实例可以包括不同的分配。换句话说,多个不同的约束可以把电路设计的相同部分作为目标,并且可以由CAD工具520明确地定义或隐式地决定优先级。例如,在设计层级的较高级处定义的约束可以覆盖较低级处的约束。可替换地,在设计层级的较低级处定义的约束可以覆盖在较高级处的约束,或者可以对设计层级的个别级给定高于设计层级的其他级的优先级。

包括在设计规范602或RTL描述606中的约束可以以变量、参数、编译器命令、宏命令、编译指示或断言(仅举几例)的形式被传达到CAD工具520。CAD工具520可以使用可以包括部分或全部约束的约束文件。这种约束文件可以包括有设计规范602或RTL描述606可以包括此类约束文件。在某些情形下,部分或全部的约束可以被嵌入在电路设计中。可替换地,可以已经使用设计和约束录入工具564(参见图5)定义了约束。

在步骤618处,行为仿真工具572可以执行RTL描述的RTL仿真,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的输出是被布线的门级描述617。

在步骤619期间,如图2所示,并且根据包括在设计规范602或RTL描述606中的约束,使用例如图5的布局和布线工具576,寄存器重定时操作可以移动在被布线的门级描述617中的寄存器。作为示例,寄存器重定时操作可以将某些流水线布线资源(例如,图3的流水线布线资源300的某些实例)的配置从以流水线寄存器模式进行操作改变为以非流水线模式进行操作,以及将其他流水线布线资源(例如,图3的流水线布线资源300的其他实例)的配置从以非流水线模式进行操作改变为以流水线寄存器模式进行操作。寄存器重定时619的输出是掩模级版图(layout)描述616。

在步骤614期间,电路设计系统400(图4)可以包括定时估计器(例如,作为优化工具574、工具576或工具578的一部分形成),该定时估计器可以被用于估计在电路设计的同步元件之间的延迟。例如,定时估计器可以估计时钟控制的储存元件诸如寄存器和储存电路之间的延迟(例如,基于互连的长度、中间组合逻辑等)。如果需要,逻辑综合608、布局612、布线615和寄存器重定时619的步骤可以调用定时分析614以在各自的步骤期间估计时钟控制的储存元件之间的延迟。

如果需要,基于度量诸如松弛(例如,所需的到达时间和信号的到达时间之间的差值)、松弛比(slack-ratios)、互连拥塞或其他定时度量,可以估计延迟。电路设计系统400可以使用所估计的延迟确定成组的电路的位置,同时帮助确保延迟满足定时要求(例如,关键路径延迟要求)或其他性能约束。

考虑其中电路设计具有从寄存器通过组合逻辑到另外的寄存器的给定的路径,且该给定的路径未达到一个或更多个目标标准的情形。定时估计器可以进一步确定给定的路径与延迟相关联,该延迟比目标标准中的其中一个针对该路径规定的目标延迟大。例如,在布线615之后,定时估计器可以检测给定的路径具有比目标延迟大的延迟。在该情形下,寄存器重定时619可以移动寄存器(例如,向前和/或向后通过组合逻辑和/或沿着导线),从而减少寄存器之间的延迟,并且潜在地提高给定的路径的性能。

在给定的路径与另外的路径并行的情况下,寄存器重定时619可以将所移动的寄存器从给定的路径复制到其他路径。如果其他路径没有空间接收寄存器,则所移动的寄存器从给定的路径到其他路径的复制可能是难以实施的。

其中定时关键(timing critical)长路径与在寄存器重定时操作期间不能接收寄存器的非定时关键短路径并行的问题有时还被称为短路径-长路径问题。图7是根据一个实施例的解决短路径-长路径问题的示意性的寄存器重定时操作的图示。

第一版本的电路设计(例如,图6的被布线的门级描述617)可以包括时钟控制的储存电路诸如寄存器710、寄存器720、寄存器730和寄存器770。第一版本的电路设计可以进一步包括组合逻辑740和组合逻辑760,以及以非流水线模式配置的流水线布线资源737、流水线布线资源750、流水线布线资源780和流水线布线资源790。

组合逻辑740和组合逻辑760可以包括由布尔电路实施的任何数字逻辑,组合逻辑740和组合逻辑760的输出可以仅随着当前输入的函数而异步地改变。组合逻辑的示例可以包括与逻辑门、或逻辑门、与非逻辑门、或非逻辑门以及异或逻辑门、反相器、通过门、多路复用器、解复用器、查找表、逻辑阵列等,以及其任何组合。

相比之下,顺序逻辑可以包括由电路实施的任何数字逻辑,响应于同步信号(例如,时钟信号),顺序逻辑的输出可以在离散的时间同步地改变。顺序逻辑的示例可以包括任何时钟控制的储存电路诸如寄存器或存储器,所述存储器诸如随机存取存储器(RAM)、只读存储器(ROM)、内容寻址存储器(CAM)等。

电路设计元件可以包括在电路设计中的任何组合逻辑和/或顺序逻辑和/或导线。如果需要,延迟可以与电路设计元件相关联。

在图7的示例中,寄存器710可以将信号发送到寄存器720;寄存器720可以将信号发送通过组合逻辑740、流水线布线资源750和组合逻辑760到寄存器730;以及额外地从组合逻辑760通过两者都以非流水线模式配置的流水线布线资源780和流水线布线资源790到寄存器770。

考虑其中从寄存器720到寄存器770的长路径是定时关键的且从寄存器720到寄存器730的短路径不是定时关键的情形。在该情形下,通过直接将寄存器710连接到组合逻辑740,并且将流水线布线资源750的配置从以非流水线模式进行操作改变为以流水线寄存器模式进行操作,寄存器重定时操作诸如图6的寄存器重定时619可以将寄存器720向前移动通过组合逻辑740到流水线布线资源750。

作为示例,考虑到从流水线布线资源750到寄存器770的长路径仍然是定时关键的,并且可能需要附加寄存器重定时操作。在该示例中,寄存器重定时操作可以将寄存器730移动到流水线布线资源737,从而释放短路径中的可以接收寄存器的空间。然后,另外的寄存器重定时操作可以将寄存器从流水线布线资源750移动到流水线资源780(例如,通过将流水线布线资源750从以流水线寄存器模式进行操作改变为以非流水线模式进行操作,并且通过将流水线布线资源780从以非流水线模式进行操作改变为以流水线寄存器模式进行操作),以及将寄存器移动到短路径中的寄存器730的先前的位置,从而解决短路径-长路径问题。

第二版本的电路设计(例如,图6的被布线的门级描述617)可以包括时钟控制的储存电路诸如寄存器715、寄存器725、寄存器735和寄存器775。第二版本的电路设计可以进一步包括组合逻辑745和组合逻辑765,以及全部以非流水线模式配置的流水线布线资源739、流水线布线资源755、流水线布线资源785和流水线布线资源795。

组合逻辑745和组合逻辑765可以包括由布尔电路实施的任何数字逻辑,组合逻辑745和组合逻辑765的输出可以仅随着当前输入的函数而异步地改变。组合逻辑的示例可以包括与逻辑门、或逻辑门、与非逻辑门、或非逻辑门以及异或逻辑门、反相器、通过门、多路复用器、解复用器、查找表、逻辑阵列等,以及其任何组合。

相比之下,顺序逻辑可以包括由电路实施的任何数字逻辑,响应于同步信号(例如,时钟信号),顺序逻辑的输出可以在离散的时间同步地改变。顺序逻辑的示例可以包括任何时钟控制的储存电路诸如寄存器或存储器,所述存储器诸如随机存取存储器(RAM)、只读存储器(ROM)、内容寻址存储器(CAM)等。

电路设计元件可以包括在电路设计中的任何组合逻辑和/或顺序逻辑和/或导线。如果需要,延迟可以与电路设计元件相关联。

在第二版本的电路设计的示例中,每个寄存器735和寄存器775可以发送可聚集(converge)在组合逻辑765中的信号。聚集的信号可以在到达寄存器725之前穿过流水线布线资源755和组合逻辑745;并且寄存器725可以将信号发送到寄存器715。

考虑其中从寄存器775到寄存器725的长路径是定时关键的且从寄存器735到寄存器725的短路径不是定时关键的情形。在该情形下,通过直接将寄存器715连接到组合逻辑745,并且将流水线布线资源755的配置从以非流水线模式进行操作改变为以流水线寄存器模式进行操作,寄存器重定时操作诸如图6的寄存器重定时619可以将寄存器725向后移动通过组合逻辑745到流水线布线资源755。

作为示例,考虑从寄存器775到流水线布线资源755中的寄存器的长路径仍然是定时关键的,并且可能需要附加寄存器重定时操作。在该示例中,寄存器重定时操作可以将寄存器735移动到流水线布线资源739,从而释放短路径中的可以接收寄存器的空间。然后,另外的寄存器重定时操作可以将寄存器从流水线布线资源755移动到流水线资源785,以及将寄存器移动到短路径中的寄存器735的先前的位置,从而解决短路径-长路径问题。

在某些实施例中,第一版本的寄存器730可以在第一时钟域中操作,并且通过流水线布线资源737连接到在第二时钟域中操作的时钟控制的储存元件,该第二时钟域与第一时钟域不同。类似地,第二版本的寄存器735可以在第一时钟域中操作,并且通过流水线布线资源739连接到在第二时钟域中操作的时钟控制的储存元件,该第二时钟域与第一时钟域不同。从在不同的时钟域中操作的时钟控制的储存元件接收信号的寄存器(例如,寄存器735)有时还被称为同步寄存器。在第一时钟域中操作的寄存器(例如,寄存器730和寄存器735)和在第二时钟域中操作的电路设计元件之间的电路设计元件有时还被称为同步区域中的电路设计元件。

图8是根据一个实施例到两个时钟域之间的同步区域中的示意性的寄存器重定时操作的图示。如图所示,图8的电路设计包括在第一时钟域中操作的第一部分和在第二时钟域中操作的第二部分,该第二时钟域与第一时钟域不同。

例如,组合逻辑807、两者都以非流水线模式配置的流水线布线资源880和流水线布线资源890,以及寄存器810、寄存器820、寄存器830、寄存器835和寄存器840可以基于同步信号(或时钟信号)CLOCK 1在第一时钟域中操作,然而,寄存器850可以基于同步信号(或时钟信号)CLOCK 2在第二时钟域中操作。组合逻辑803以及以非流水线模式配置的流水线布线资源860和流水线布线资源870可以在电路设计的两个部分之间形成同步区域899。

寄存器850可以将来自电路设计的第二部分的信号发送通过同步区域899(即,通过流水线布线资源860和流水线布线资源870以及组合逻辑803)到电路设计的第一部分中的寄存器810。寄存器810可以与寄存器820一起形成同步链,该寄存器820执行从寄存器850接收的信号的亚稳态处理。

例如,到达寄存器810的信号可以在同步信号CLOCK 1的上升沿处从逻辑“0”转换为逻辑“1”。由于在寄存器810的数据和时钟端口上几乎同时发生事件的不确定性,所以在寄存器810的输出上的信号起初可能变成亚稳态的,并且可能需要占据同步信号CLOCK 1一半的周期来解决亚稳态。在同步信号CLOCK 1的下一个上升沿处,寄存器820可以储存来自寄存器810的信号,从而产生稳定的信号。

寄存器840可以发送信号通过流水线布线资源880和流水线布线资源890,所述信号可以与来自寄存器820的信号一起聚集在组合逻辑807中。所聚集的信号可以从组合逻辑807的输出到达寄存器830;并且寄存器830可以将信号发送到寄存器835。

考虑其中从寄存器840到寄存器830的长路径是定时关键的且从寄存器820到寄存器830的短路径不是定时关键的情形。进一步考虑到可能需要寄存器重定时操作以保留由寄存器810和寄存器820形成的同步链执行的亚稳态处理。换句话说,只是在移动保留同步链的亚稳态处理的时候,寄存器重定时操作才可以将寄存器从电路设计的第一部分移动到同步区域899中。

在该情形下,寄存器重定时操作可以将寄存器810向后移动到同步区域899中通过组合逻辑803到流水线布线资源870。例如,寄存器重定时操作可以将流水线布线资源870从以非流水线模式进行操作改变为以流水线寄存器模式进行操作。寄存器重定时操作可以进一步将寄存器820移动到寄存器810的以前的位置,并且可以进一步将寄存器830向后移动通过组合逻辑807到寄存器820的以前的位置,以及将寄存器830移动到在并行长路径中的流水线布线资源890(例如,通过将流水线布线资源890从以非流水线模式进行操作改变为以流水线寄存器模式进行操作)。

在寄存器重定时操作之后,从寄存器840到寄存器830的先前的长路径(其现在具有从寄存器840到流水线布线资源890以及从流水线布线资源890到寄存器835的第一部分)可以不再是定时关键的。换句话说,通过将寄存器从电路设计的第一部分移动到同步区域899中,同时保留同步链的亚稳态处理,寄存器重定时操作可能已经解决了短路径-长路径问题。

在某些情形下,寄存器重定时操作可以将寄存器从电路设计的第一部分和电路设计的第二部分两者移动到时钟域之间的同步区域中。如图所示,图9的电路设计包括在第一时钟域中操作的第一部分和在第二时钟域中操作的第二部分,该第二时钟域与第一时钟域不同。在某些情形下,第一时钟域和第二时钟域可以是彼此异步的。换句话说,第一时钟域可以基于第一同步信号(例如,第一时钟信号)进行操作,然而,第二时钟域基于第二同步信号(例如,第二时钟信号)进行操作,该第二同步信号不与第一同步信号的相位对齐。

作为示例,组合逻辑807、两者都以非流水线模式配置的流水线布线资源880和流水线布线资源890,以及寄存器810、寄存器820、寄存器830、寄存器835和寄存器840可以基于同步信号(或时钟信号)CLOCK 1在第一时钟域中操作,然而,寄存器950和寄存器955可以基于同步信号(或时钟信号)CLOCK 2在第二时钟域中操作。以非流水线模式配置的流水线布线资源960、流水线布线资源965、流水线布线资源970和流水线布线资源975可以在电路设计的两个部分之间形成同步区域999。

考虑其中寄存器重定时操作可以将寄存器955向前移动到同步区域999中到流水线布线资源970的情形。例如,寄存器重定时操作可以将流水线布线资源970从以非流水线模式进行操作改变为以流水线寄存器模式进行操作,并且由同步信号CLOCK 2进行时钟控制。

此外,寄存器重定时操作可以将寄存器810移动到流水线布线资源975。然而,因为流水线布线资源970已经实施寄存器955,所以寄存器重定时操作可以不将寄存器810移动到流水线布线资源970中;并且因为流水线布线资源960和流水线布线资源965在第二时钟域内的两个寄存器之间的路径上,所以寄存器重定时操作可以不将寄存器810移动到流水线布线资源960或流水线布线资源965。

在某些实施例中,寄存器重定时操作可以在图上进行操作。例如,寄存器重定时操作可以创建约束图,该创建基于源于基本约束的不等式(其确保弧(arc)上非负数量的寄存器)、定时约束(例如,来自执行图6的定时分析614)(其确保实际定时满足或超过定时要求(例如,通过要求至少一个寄存器被添加到电路上与弧相关联的位置处)),以及架构约束(其可以限制寄存器重定时到节点之间任何连接上的可用寄存器的数量(例如,布线寄存器或流水线布线资源的数量))。

通过在约束图上使用最短路径算法,寄存器重定时操作可以求解不等式系统。在某些实施例中,当边权可以为负时,寄存器重定时操作可以使用贝尔曼-福德(Bellman-Ford)算法用于解决单源最短路径问题。当且仅当约束图不包含负回路时,不等式系统可以有解(即,全部约束能够同时被满足)。

如果需要,如果不等式的解存在,则寄存器重定时操作可以通过将约束表示为整数线性规划(ILP)问题来确定解。作为示例,寄存器重定时操作可以使用单纯形法解决ILP问题。

在某些实施例中,寄存器重定时操作可以为每个时钟域生成单独的图,从而为在不同的时钟域中操作的电路设计的各部分单独地执行寄存器重定时。如果需要,寄存器重定时操作可以将来自同步区域999中的第一部分的元件分配到在第一时钟域中操作的电路设计的第一部分,并且可以将来自不与同步区域999的第一部分重叠的同步区域999的第二部分的元件分配到在第二时钟域中操作的电路设计的第二部分。

例如,寄存器重定时操作可以将同步区域999的流水线布线资源970和流水线布线资源975分配到在第一时钟域中操作的电路设计的部分(即,包括组合逻辑807、两者都以非流水线模式配置的流水线布线资源880和流水线布线资源890,以及寄存器810、寄存器820、寄存器830、寄存器835和寄存器840的电路设计的部分),并且可以将流水线布线资源960和流水线布线资源965分配到在第二时钟域中操作的电路设计的部分(即,包括寄存器950和寄存器955的电路设计的部分)。如果需要,寄存器重定时操作可以创建两个单独的约束图,一个用于在第一时钟域中操作的电路设计的部分(其现在包括流水线布线资源970和流水线布线资源975),以及另一个用于在第二时钟域中操作的电路设计的部分(其现在包括流水线布线资源960和流水线布线资源965),并且使用两个图为每个时钟域单独地确定寄存器重定时解决方案。

因此,寄存器重定时操作可以防止来自第一时钟域的寄存器经过从第二时钟域被移动到同步区域999的寄存器移动到同步区域999中,并且反之亦然。

如果需要,寄存器重定时操作可以保留在多个寄存器移动期间的图。作为示例,考虑以下情形,其中寄存器重定时操作已经将寄存器955移动到流水线布线资源970,并且因为从寄存器950到寄存器970的路径相对于同步信号CLOCK 2是定时关键的,所以定时分析已经创建从寄存器950到流水线布线资源970的弧(其需要在寄存器950和流水线布线资源970之间插入附加寄存器)。

在该示例中,寄存器重定时操作可以移动寄存器950更接近于流水线布线资源970,或者可以从流水线布线资源970移动寄存器更接近于寄存器950(例如,更接近于流水线布线资源960或更接近于寄存器955的以前的位置)。在某些实施例中,因为流水线布线资源位于电路设计的两个异步部分之间的同步区域999中,所以即使可以不需要插入附加寄存器,流水线操作也可以将附加寄存器插入在寄存器950和流水线布线资源970之间(例如,通过将流水线布线资源960和/或流水线布线资源965从以非流水线模式进行操作改变为以寄存器流水线模式进行操作)。

在某些实施例中,在寄存器955已经被移动到流水线布线资源970之后,寄存器重定时操作可以重建图,从而隐式地将寄存器950和寄存器955以及流水线布线资源960、流水线布线资源965和流水线布线资源970视为第二时钟域的一部分。换句话说,寄存器重定时操作可能已经隐式地将在第二时钟域中操作的电路部分扩展到流水线布线资源970,并且对第二时钟域的图的任何更新可以从现在起包括扩展到流水线布线资源970的定时弧。

因此,即使在将寄存器从流水线布线资源970移动回到更接近于寄存器950之后,因为从寄存器950到流水线布线资源970的弧,所以寄存器重定时操作可以仍然将该寄存器移动回到流水线布线资源970。换句话说,因为寄存器重定时操作,所以寄存器955可以被卡在流水线布线资源970处。类似地,因为从寄存器950到流水线布线资源970的定时弧,所以流水线操作仍然可以通过相应地配置流水线布线资源960和/或流水线布线资源965,插入附加寄存器。

因此,在某些实施例中,寄存器重定时操作可以限制距离,寄存器可以通过该距离被移动到同步区域中(例如,通过限制在同步区域中布局的寄存器中开始和/或结束的最长路径的延迟、通过限制流水线布线资源的数量,寄存器可以通过该流水线布线资源被移动到同步区域中、通过限制布线跳数的数量,寄存器可以通过该布线跳数被移动到同步区域中、通过限制来自同步区域的电路设计元件的数量,该电路设计元件被分配到一个或另一个电路设计部分,或其任何组合,仅举几例)。例如,寄存器重定时操作可以将流水线布线资源970和流水线布线资源975指派为用于从电路设计的第一部分接收寄存器的可用的时隙,并且将流水线布线资源960和流水线布线资源965指派为用于从电路设计的第二部分接收寄存器的可用的时隙。

在某些实施例中,寄存器重定时操作可以防止通过将寄存器移动到两个时钟域之间的同步区域中导致的定时关键路径的创建。图10是根据一个实施例的到两个时钟域之间的同步区域中的可以引起新的关键路径的示意性的寄存器重定时操作的图示。

如图所示,图10的电路设计包括在第一时钟域中操作的第一部分和在第二时钟域中操作的第二部分,该第二时钟域与第一时钟域不同。

例如,以非流水线模式配置的流水线布线资源1060,以及寄存器1010、寄存器1020、寄存器1030和寄存器1040可以基于同步信号(或时钟信号)CLOCK 1在第一时钟域中操作,然而,寄存器1050和寄存器1090可以基于同步信号(或时钟信号)CLOCK 2在第二时钟域中操作。组合逻辑1003、组合逻辑1007和组合逻辑1009以及以非流水线模式配置的流水线布线资源1070和流水线布线资源1080可以在电路设计的两个部分之间形成同步区域。

考虑其中寄存器重定时操作将寄存器1020和寄存器1040移动通过组合逻辑1007到流水线布线资源1080的情形。在该情形下,从寄存器1030到流水线布线资源1080的路径(其先前被分配为布局在时钟域之间的同步区域中,并且因此不旨在支持时序收敛)可以是在第一时钟域的内部的新的定时关键路径。

在某些实施例中,基于电路设计元件的输入的数量,寄存器重定时操作可以限制电路设计元件,寄存器可以被向前移动通过该电路设计元件到同步区域中。例如,寄存器重定时操作可以将寄存器向前移动仅通过具有一个扇入的电路设计元件。在图10的示例中,因为组合逻辑1007具有两个扇入,所以寄存器1020可以被向前移动到流水线布线资源1070,而不通过组合逻辑1007。

类似地,基于电路设计元件的输出的数量,寄存器重定时操作可以限制电路设计元件,寄存器可以被向后移动通过该电路设计元件到同步区域中。例如,寄存器重定时操作可以将寄存器向后移动通过具有一个扇出的电路设计元件。在图10的示例中,因为流水线布线资源1080具有两个扇出,所以寄存器1050不可以被向后移动到流水线布线资源1080。

图11是用于用电路设计计算设备执行寄存器重定时操作的示意性步骤的流程图。根据一个实施例,寄存器重定时操作可以将寄存器移动到两个时钟域之间的同步区域中。

在步骤1110期间,电路设计计算设备可以接收包括同步区域的电路设计描述,所述同步区域将在第一时钟域中操作的电路设计描述的第一部分耦接到在第二时钟域中操作的电路设计描述的第二部分,该第二时钟域与第一时钟域不同。图8、图9和图10中示出此类电路设计描述的示例。

在步骤1120期间,电路设计计算设备可以执行将寄存器从电路设计描述的第一部分移动到同步区域中的寄存器重定时操作。例如,电路设计计算设备可以将寄存器810从图8的电路设计的第一部分移动到同步区域中到流水线布线资源870。

图12是用于用电路设计计算设备执行寄存器重定时操作的示意性步骤的流程图。根据一个实施例,寄存器重定时操作可以移动寄存器经过同步寄存器。

在步骤1210期间,电路设计计算设备可以接收集成电路设计,其中集成电路设计的第一子集在第一时钟域中操作,并且包括耦接到在第二时钟域中操作的电路设计元件的第一寄存器,该第二时钟域与第一时钟域不同。图8、图9和图10示出此类集成电路设计的示例。

在步骤1220期间,电路设计计算设备可以执行在第一寄存器和电路设计元件之间移动来自第一子集的第二寄存器的寄存器重定时操作。

图13是根据一个实施例的用于解决短路径-长路径问题的示意性步骤的流程图。非暂时计算机可读储存介质可以储存用于执行电路设计描述的编译的指令。如果需要,编译器可以执行这些示意性步骤。

在步骤1310期间,编译器可以接收其中第一寄存器和第二寄存器耦接到第三寄存器的电路设计描述。在步骤1320期间,编译器可以执行将第一寄存器、第二寄存器和第三寄存器分配到集成电路上相应的第一位置、第二位置和第三位置的电路设计描述的布局操作,以致该布局操作创建具有短路径为非定时关键的且长路径为定时关键的短路径-长路径问题。短路径可以包括第一寄存器和第三寄存器;并且长路径可以包括第二寄存器和第三寄存器。图7中示出短路径-长路径问题的示例。

在步骤1330期间,编译器可以执行解决短路径-长路径问题的寄存器重定时操作。图8和图9中示出解决短路径-长路径问题的寄存器重定时操作的示例。

本文所描述的方法和装置可以被合并到任何合适的电子器件或电子器件的系统中。例如,方法和装置可以被合并到许多类型的器件中,诸如微处理器或其他IC。示例性IC包括可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电可编程逻辑器件(EPLD)、电可擦除可编程逻辑器件(EEPLD)、逻辑单元阵列(LCA)、现场可编程门阵列(FPGA)、专用标准产品(ASSP)、专用集成电路(ASIC)、数字信号处理器(DSP)、图形处理器(GPU),仅举几例。

本文所描述的集成电路可以是包括一个或更多个以下部件的数据处理系统的一部分,所述部件包括:处理器、存储器、IO电路和外围设备。集成电路可以被用于各种各样的应用中,所述各种各样的应用诸如计算机网络、数据网络、仪表化、视频处理、数字信号处理或者期望执行寄存器重定时操作的优势的任何合适的其他应用。

虽然以特定的顺序描述了方法操作,但是应当理解,可以在所描述的操作之间执行其他操作,可以调整所描述的操作使得调整后的所描述的操作在稍微不同的时间发生,或者所描述的操作可以被分布在系统中,该系统允许处理操作发生在与处理相关联的不同的时间间隔处,只要以期望的方式执行叠置操作的处理。

附加实施例:

附加实施例1.一种用于操作电路设计计算设备的方法,其包括:用所述电路设计计算设备接收包括同步区域的电路设计描述,所述同步区域将在第一时钟域中操作的所述电路设计描述的第一部分耦接到在第二时钟域中操作的所述电路设计描述的第二部分,所述第二时钟域与所述第一时钟域不同;以及用所述电路设计计算设备执行将寄存器从所述电路设计描述的所述第一部分移动到所述同步区域中的寄存器重定时操作。

附加实施例2.根据附加实施例1所述的方法,其中所述寄存器被分配到所述电路设计描述的所述第一部分中的流水线布线资源,并且其中执行所述寄存器重定时操作进一步包括:用所述电路设计计算设备,设置所述流水线布线资源以非流水线模式进行操作。

附加实施例3.根据附加实施例2所述的方法,其进一步包括:用所述电路设计计算设备,将所述同步区域中的另外的流水线布线资源从以非流水线模式进行操作切换到以流水线寄存器模式进行操作。

附加实施例4.根据附加实施例1所述的方法,其进一步包括:在执行所述寄存器重定时操作之前,通过将所述电路设计描述的所述第一部分的附加寄存器布局在所述电路设计描述的所述第一部分和所述同步区域之间,形成同步链。

附加实施例5.根据附加实施例4所述的方法,其中所述电路设计描述的所述第二部分将信号发送到所述电路设计描述的所述第一部分,其中所述同步链执行所述信号的亚稳态处理,并且其中所述寄存器重定时操作保留所述亚稳态处理。

附加实施例6.根据附加实施例5所述的方法,其中保留所述亚稳态处理进一步包括:用所述电路设计计算设备,将所述寄存器从所述电路设计描述的所述第一部分移动到所述同步区域中,而不变更所述同步链。

附加实施例7.根据附加实施例1的所述方法,其中执行所述寄存器重定时操作进一步包括:根据预定标准,限制所述寄存器移动到所述同步区域中。

附加实施例8.根据附加实施例7的所述方法,其中所述寄存器被分配到所述同步区域中的预定位置,并且其中从以下项构成的组中选择限制所述寄存器移动到所述同步区域中的所述预定标准:在所述预定位置和所述电路设计描述的所述第一部分之间的所述同步区域中的电路元件的输入的最大数量、在所述预定位置和所述电路设计描述的所述第一部分之间的所述同步区域中的电路元件的输出的最大数量、在所述预定位置和所述电路设计描述的所述第一部分之间的所述同步区域中的电路元件的最大数量、在所述预定位置和所述电路设计描述的所述第一部分之间的所述同步区域中的一对同步电路元件之间的最大延迟、以及先前从所述电路设计描述的所述第一部分移动到所述同步区域中的附加寄存器的最大数量。

附加实施例9.根据附加实施例1的所述方法,其中所述寄存器被分配到所述同步区域中的第一预定位置,其进一步包括:执行将另外的寄存器从所述电路设计描述的所述第二部分移动到所述同步区域中的第二预定位置中的另外的寄存器重定时操作。

附加实施例10.根据附加实施例9所述的方法,其中所述同步区域中的所述第二预定位置位于所述第一预定位置和所述电路设计描述的所述第二部分之间。

附加实施例11.根据附加实施例1所述的方法,其中所述寄存器重定时操作将所述寄存器从所述同步区域复制到并行路径。

附加实施例12.根据附加实施例1所述的方法,其中由第一同步信号控制在所述第一时钟域中的第一时钟控制的储存电路,其中由第二同步信号控制在所述第二时钟域中的第二时钟控制的储存电路,并且其中所述第一同步信号和所述第二同步信号是彼此异步的。

附加实施例13.一种用于操作电路设计计算设备以执行用于集成电路设计的寄存器重定时操作的方法,其包括:用所述电路设计计算设备接收所述集成电路设计,其中所述集成电路设计的第一子集在第一时钟域中操作,并且包括耦接到在第二时钟域中操作的所述集成电路设计的第二子集中的时钟控制的储存电路的第一寄存器,所述第二时钟域与所述第一时钟域不同;以及用所述电路设计计算设备执行在所述第一寄存器和所述时钟控制的储存电路之间移动来自所述第一子集的第二寄存器的寄存器重定时操作。

附加实施例14.根据附加实施例13所述的方法,其中所述第一时钟域基于第一时钟信号操作,并且其中所述第二时钟域基于与所述第一时钟信号不同的第二时钟信号操作。

附加实施例15.根据附加实施例14所述的方法,其中所述第一时钟信号和所述第二时钟信号不是相位对齐的。

附加实施例16.根据附加实施例13所述的方法,其中所述寄存器重定时操作使得在所述第一时钟域中的频率能够增加。

附加实施例17.根据附加实施例13所述的方法,其中所述第一寄存器在非关键路径上。

附加实施例18.根据附加实施例17所述的方法,其进一步包括:将所述第二寄存器复制到与所述非关键路径并行的关键路径中。

附加实施例19.根据附加实施例13所述的方法,其中所述第一寄存器是执行亚稳态预防的同步链的一部分,并且其中所述寄存器重定时操作保留所述亚稳态预防。

附加实施例20.根据附加实施例13所述的方法,其进一步包括:执行从在所述第二时钟域中操作的所述集成电路设计的所述第二子集移动第三寄存器的另外的寄存器重定时操作。

附加实施例21.根据附加实施例20所述的方法,其中其他寄存器重定时操作将所述第三寄存器布局在所述第二寄存器和所述第二子集之间。

附加实施例22.一种用于编译电路设计描述的非暂时计算机可读储存介质,其包括用于以下步骤的指令:接收其中第一寄存器和第二寄存器耦接到第三寄存器的电路设计描述;执行将所述第一寄存器、所述第二寄存器和所述第三寄存器分配到集成电路上相应的第一位置、第二位置和第三位置的所述电路设计描述的布局操作,其中所述布局操作创建具有短路径为非定时关键的且长路径为定时关键的短路径-长路径问题,其中所述短路径包括所述第一寄存器和所述第三寄存器,并且其中所述长路径包括第二寄存器和第三寄存器;以及执行解决所述短路径-长路径问题的寄存器重定时操作。

附加实施例23.根据附加实施例22所述的非暂时计算机可读储存介质,其中执行解决所述短路径-长路径问题的所述寄存器重定时操作包括用于以下步骤的指令:将所述第一寄存器从所述第一位置移动到第四位置,其中在所述第三位置和所述第四位置之间的第一延迟大于在所述第三位置和所述第一位置之间的第二延迟。

附加实施例24.根据附加实施例所述的非暂时计算机可读储存介质,其进一步包括用于以下步骤的指令:将布局在所述第四位置处的流水线布线资源从以非流水线模式进行操作改变为以流水线寄存器模式进行操作。

附加实施例25.根据附加实施例23所述的非暂时计算机可读储存介质,其进一步包括用于以下步骤的指令:将所述第三寄存器从所述第三位置移动到所述第一位置,并且移动到被布局在所述长路径上的第五位置。

附加实施例26.根据附加实施例22的所述非暂时计算机可读储存介质,其进一步包括用于以下步骤的指令:通过将耦接到所述第一寄存器的第四寄存器布局在第四位置处,形成同步链以预防亚稳态;以及在所述寄存器重定时操作期间,将寄存器保持在所述第一位置和所述第四位置中以保留所述同步链。

前述仅是本发明的原理的说明,并且在不脱离本发明的保护范围和精神的情况下,能够由本领域中的技术人员作出各种修改。可以以任何合适的组合实施前述实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号