集成电路设计的增量寄存器重定时.pdf

上传人:00****42 文档编号:1285245 上传时间:2018-04-12 格式:PDF 页数:34 大小:1.85MB
返回 下载 相关 举报
摘要
申请专利号:

CN201610800831.6

申请日:

2016.09.01

公开号:

CN106503282A

公开日:

2017.03.15

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 17/50申请日:20160901|||公开

IPC分类号:

G06F17/50

主分类号:

G06F17/50

申请人:

阿尔特拉公司

发明人:

N·辛纳杜莱; G·R·邱

地址:

美国加利福尼亚州

优先权:

2015.09.04 US 14/846,645

专利代理机构:

北京纪凯知识产权代理有限公司 11245

代理人:

赵志刚;孙娜燕

PDF下载: PDF下载
内容摘要

本发明涉及集成电路设计的增量寄存器重定时。第一电路设计描述可以具有寄存器和组合门。电路设计计算设备可以对第一电路设计描述执行寄存器重定时,由此在第一电路设计实现过程中跨组合门移动寄存器。第一电路设计的工程变更指令(ECO)可以引起第二电路设计。可以将第一与第二电路设计之间的差异限制到变化区域。电路设计计算设备可以在第二电路设计实现过程中保存来自第一电路设计实现的结果以及这些结果的重复使用部分。例如,电路设计计算设备可以针对第二电路设计的、在变化区域之外的部分保存来自第一电路设计实现的寄存器重定时方案,并增量地创建允许在第二电路设计实现过程中增量地解决寄存器重定时问题的图。

权利要求书

1.一种操作电路设计计算设备的方法,所述方法包括:
使用所述电路设计计算设备,接收第一电路设计和由于寄存器重定时操作被至少部分
地生成的第一电路设计实现;
使用所述电路设计计算设备,接收作为所述第一电路设计的工程变更指令的结果的第
二电路设计;
使用所述电路设计计算设备,识别所述第一电路设计与所述第二电路设计之间的差
异;以及
使用所述电路设计计算设备,执行所述第二电路设计的编译以生成第二电路设计实
现,其中所述编译涉及基于所识别的所述第一电路设计与第二电路设计之间的差异和所述
寄存器重定时操作的结果执行增量寄存器重定时操作。
2.如权利要求1所述的方法,其中,识别所述第一电路设计与所述第二电路设计之间的
差异包括:
识别具有预定功能的所述第一电路设计的第一区域;
识别具有相同的所述预定功能的所述第二电路设计的第二区域;
识别耦合至所述第一区域的所述第一电路设计的第三区域;以及
识别耦合至所述第二区域的所述第二电路设计的第四区域。
3.如权利要求2所述的方法,其中,执行所述增量寄存器重定时操作进一步包括:
在所述第四区域与所述第一区域的子区域之间移动寄存器。
4.如权利要求2所述的方法,其中,执行所述增量寄存器重定时操作进一步包括:
通过以下方式在所述第四区域中跨组合节点移动寄存器:
使能连接至所述组合节点的第一布线资源中的第一寄存器;以及
禁用连接至所述组合节点且不同于所述第一布线资源的第二布线资源中的第二寄存
器。
5.如权利要求2所述的方法,其中,执行所述编译进一步包括:
保存所述第一电路设计实现的一部分,其中所述一部分在所述第二电路设计实现中至
少实现所述第一区域的子区域。
6.如权利要求5所述的方法,其中,执行所述增量寄存器重定时操作进一步包括:
在所述第一电路设计实现的所述一部分中保存时序约束。
7.一种用于操作计算设备上实现的电路设计工具的方法,所述方法包括:
使用所述计算设备上实现的所述电路设计工具,接收第一电路设计的第一约束以及第
一重定时方案;
接收包括变化区域的第二电路设计,其中所述变化区域包括所述第一电路设计与第二
电路设计之间的差异;
基于所述第一约束和所述变化区域生成第二约束;以及
基于所述第二约束和所述变化区域执行增量寄存器重定时操作,以生成与所述第一重
定时方案至少部分重叠的第二重定时方案。
8.如权利要求7所述的方法,其中,从包括以下项的组中选择所述第二约束:时序约束、
依赖约束、架构约束、用户约束和物理约束。
9.如权利要求7所述的方法,其中,生成第二约束进一步包括:
保存来自所述第一约束的约束的子集,其中所述约束的子集中的约束与所述第二电路
设计的、在所述变化区域之外的一部分相关联。
10.如权利要求9所述的方法,进一步包括:
更新来自所述第一约束的附加约束子集,其中所述附加约束子集与所述第二电路设计
的、至少部分在所述变化区域内的附加部分相关联。
11.如权利要求10所述的方法,其中,更新所述附加约束子集进一步包括:
使得所述附加约束子集中、将所述第二电路设计在所述变化区域之外的第一元件与所
述第二电路设计在所述变化区域之内的第二元件相关联的约束无效。
12.如权利要求11所述的方法,进一步包括:
生成将所述第二电路设计的所述第一元件与所述第二电路设计的所述第二元件相关
联的新约束;以及
使用所述新约束替换所述附加约束子集中被无效的约束。
13.如权利要求7所述的方法,其中所述第一重定时方案包括第一图,并且其中,执行所
述增量寄存器重定时操作进一步包括:
基于所述第一图和所述变化区域生成第二图,其中所述第二图包括所述第二约束的图
形表示。
14.如权利要求13所述的方法,其中所述第一图包括节点以及节点之间的转变,并且其
中,生成所述第二图进一步包括:
保存来自所述第一图、在所述变化区域之外的节点;以及
保存来自所述第一图、在所述变化区域之外的节点之间的转变。
15.如权利要求13所述的方法,进一步包括:
通过将约束求解器运用到所述第二图来生成所述第二重定时方案。
16.一种用于在电路设计上执行增量寄存器重定时操作的非瞬态计算机可读存储介
质,所述非瞬态计算机可读存储介质包括用于以下各项的指令:
基于来自之前电路设计的之前寄存器重定时操作的遗留约束并基于包括所述电路设
计与所述之前电路设计之间的差异的变化区域,增量地创建更新的约束;
基于来自所述之前寄存器重定时操作的遗留图和所述更新的约束来增量地生成更新
的图,其中所述更新的图对依赖性和所述电路设计的更新的约束进行建模;以及
使用所述更新的图求解所述更新的约束来实现所述电路设计的寄存器重定时方案。
17.如权利要求16所述的非瞬态计算机可读存储介质,其中,增量地创建更新的约束进
一步包括用于以下项的指令:
保存与所述变化区域之外的电路设计元件相关联的所述遗留约束的子集。
18.如权利要求16所述的非瞬态计算机可读存储介质,其中,增量地生成更新的图进一
步包括用于以下各项的指令:
保存所述遗留图的、与所述变化区域之外的电路设计元件相关的约束相关联的节点;
以及
保存所述遗留图的所保存的节点之间的弧线。
19.如权利要求18所述的非暂态计算机可读存储介质,进一步包括用于以下各项的指
令:
删除所述遗留图的弧线,所述弧线连接至所述遗留图的、与所述变化区域之内的电路
设计元件相关的约束相关联的节点;以及
删除所述遗留图的、与所述变化区域之内的电路设计元件相关的约束相关联的节点。
20.如权利要求19所述的非暂态计算机可读存储介质,进一步包括用于以下各项的指
令:
生成与所述变化区域之内的电路设计元件相关的约束相关联的新节点和新弧线;以及
在所述新节点与所述保存的节点之间生成附加的新弧线,其中所述新弧线与跨所述变
化区域的边界的电路设计元件相关的约束相关联。

说明书

集成电路设计的增量寄存器重定时

本申请要求2015年9月4日提交的美国专利申请号14/846,645的优先权,该申请特
此通过引用以其全文结合在此。

技术领域

本申请涉及集成电路,并且更具体地涉及执行集成电路设计的增量寄存器重定
时。

背景技术

从一个技术节点到下一个技术节点的每次转变已经导致了更小的晶体管几何结
构并因此潜在地导致了每单位集成电路面积实现更多功能。同步集成电路已经从如减少的
互连和信元延迟所证明的这一发展中进一步获益,这些减少的互连和信元延迟已经使得性
能增加。

为了进一步增加性能,已经提出了如寄存器重定时等方案,在这些方案中,在组合
逻辑部分之间移动寄存器,由此实现寄存器之间的延迟的更加均衡分布,并因此实现可以
操作集成电路的潜在更高的时钟频率。

当寄存器之间的延迟为已知时,经常执行寄存器重定时。例如,可以在已经对集成
电路设计执行如布置和布线等物理设计操作之后执行寄存器重定时。

有时,集成电路设计可能例如由于规格变化或者由于设计周期后期定位的错误而
改变。集成电路设计的此类改变可能需要完全重复物理设计操作和寄存器重定时操作。

本文中的实施例出自此上下文。

发明内容

根据本发明的某些方面,电路设计计算设备可以接收第一电路设计和由于寄存器
重定时操作而至少部分生成的第一电路设计实现。电路设计计算设备可以进一步接收作为
第一电路设计的工程变更指令的结果的第二电路设计、识别第一电路设计与第二电路设计
之间的差异以及执行第二电路设计的编译以生成第二电路设计实现。该编译可以包括基于
第一与第二电路设计之间的所识别的差异以及寄存器重定时操作的结果的增量寄存器重
定时操作。

应当认识到,可以在计算机可读介质上采用如过程、装置、系统、设备或方法等各
种方式实现本发明。下面描述本发明的几个发明性实施例。

在某些实施例中,上述提到的电路设计计算设备可以为了识别第一电路设计与第
二电路设计之间的差异的目的而识别第一电路设计具有预定功能的第一区域并且识别第
二电路设计具有相同的预定功能的第二区域。

如果期望,电路设计计算设备可以进一步识别第一电路设计的、耦合至第一区域
的第三区域以及第二电路设计的、耦合至第二区域的第四区域。

从附图以及以下优选实施例的详细描述,本发明的进一步特征、性质以及各种优
点将变得更加明显。

附图说明

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

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

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

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

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

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

图7是根据一个实施例的具有变化区域的说明性电路设计的图示。

图8是根据一个实施例的说明性电路设计的图示以及代表该电路设计的说明性依
赖图。

图9是根据一个实施例的说明性约束的图示以及相应的约束图。

图10是根据一个实施例的用于操作电路设计计算设备的说明性步骤的图示。

图11是根据一个实施例的用于操作计算设备上实现的电路设计工具的说明性步
骤的图示。

图12是根据一个实施例的用于执行电路设计的增量寄存器重定时操作的说明性
步骤的图示。

图13是根据一个实施例的用于基于遗留图来增量地生成更新的依赖图和更新的
约束的说明性步骤的图示。

具体实施方式

本发明实施例涉及集成电路,并且更具体地涉及执行集成电路设计的增量寄存器
重定时。

计算机辅助设计(CAD)工具可以对电路设计进行编译以生成电路设计实现。仅列
举一些,这种电路设计实现可以包括用于配置可编程逻辑器件(PLD)的位流、仿真网表、时
序约束、时序分析结果、功率分析结果、布置网表、布线网表、寄存器重定时依赖图、集成电
路的掩模组、集成电路等。

在编译过程中,CAD工具可以执行如布置、布线以及寄存器重定时等操作。有时,集
成电路可能例如由于规格变化、由于设计周期后期定位的错误或者通过例如布线操作之后
执行的并且增加选定路径上的寄存器的数量以提高性能的寄存器流水线操作而改变。这种
电路设计的改变(有时也被称为工程变更指令(ECO))可能需要从头开始对修改的电路设计
进行编译。这种对布置、布线以及寄存器重定时操作的完全重复可能引起不再满足时序要
求的电路设计实现,由此再次开始整个漫长的时序收敛过程。

因此,可能期望在修改的电路设计编译过程中保存原始集成电路实现的部分并且
仅更新受ECO影响的原始集成电路实现的部分。保存第一集成电路实现的部分并且仅更新
受ECO影响的原始集成电路实现的部分的编译有时也被称作增量编译或增量汇编
(compile)。增量编译过程中执行的并且仅更新受ECO影响的原始集成电路实现的部分的操
作有时也被称作是增量的(例如,增量逻辑综合、增量技术映射、增量物理综合、增量聚类、
增量布置、增量布线、增量重定时等)。

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

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

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

在一种典型的情况下,加载的存储器元件的输出被应用到功能块中的金属氧化物
半导体晶体管的栅极以打开或关闭某些晶体管并由此配置功能块中包括布线路径的逻辑。
可以采用这种方式控制的可编程逻辑电路元件包括多路复用器(例如,用于在互连电路中
形成布线路径的多路复用器);查找表;逻辑阵列;与(AND)、或(OR)、与非(NAND)以及或非
(NOR)逻辑门;旁通门等的部分。

存储器元件可以使用任何适当的易失性和/或非易失性存储器结构,比如随机存
取存储器(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。寄存器210可以向寄存器220发
送信号;寄存器220可以通过组合逻辑245向寄存器230发送信号;并且寄存器230可以向寄
存器240发送信号。作为一个示例,从寄存器220通过组合逻辑245到寄存器230的路径上的
延迟可能具有6ns(纳秒)的延迟,而寄存器210与220之间以及寄存器230与240之间的延迟
可能具有0ns的延迟。因此,电路设计的第一版本可以以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的频率操作,该频率为电路
设计的第一版本可以操作的频率的三倍。

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

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

如图3中所示,根据本发明的一个实施例,可以通过向寄存器306的数据输入端提
供多路复用器302的输出来流水线操作多路复用器302。在流水线布线资源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)工具420(其部分或全部有时被统称为CAD工具或电子设计
自动化(EDA)工具)可以由单个供应商或由多个供应商提供。工具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可以使用目标可编程逻辑器件(即,在
具体可编程逻辑器件产品或产品族的逻辑和互连资源中)的门来生成电路设计的门级网
表。

逻辑综合和优化工具574可以通过对硬件进行合适选择来优化设计,从而基于逻
辑设计师使用工具564输入的电路设计数据和约束数据在电路设计中实现不同的逻辑功
能。作为一个示例,逻辑综合和优化工具574可以基于电路设计中的寄存器之间的组合路径
长度和逻辑设计师使用工具564输入的相应时序约束在电路设计上执行寄存器重定时。如
果期望,逻辑综合和优化工具574可以增量地执行所有操作。例如,逻辑综合和优化工具574
可以基于来自逻辑综合和优化工具574的之前执行的寄存器重定时方案来执行增量寄存器
重定时。

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

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

作为一个示例,工具574和576可以将寄存器移动通过组合逻辑(例如,通过逻辑
AND、OR、异或(XOR)等;门;查找表(LUT);多路复用器;算术运算符等)来执行寄存器重定时。
如图2中所示的,工具574和576跨组合逻辑将寄存器向前或向后推。如果期望,工具574和
576可以通过配置流水线布线资源(如图3的流水线布线资源300)来执行寄存器的向前推和
向后推,从而以非流水线模式操作或者作为流水线布线元件操作。

考虑这样的情况:工具574和576已经执行电路设计的编译以生成包括寄存器重定
时方案的第一电路设计实现。进一步考虑:工程变更指令(ECO)导致电路设计的有限变化
(例如,变化被限制到变化区域)。在此情况下,工具574和576可以执行改变后的电路设计的
增量编译,以生成第二电路设计实现。如果期望,增量编译可以包括增量寄存器重定时操
作。增量寄存器重定时操作可以基于电路设计的有限变化和来自第一电路设计实现的寄存
器重定时方案。例如,增量寄存器重定时操作可以将来自第一电路设计实现的寄存器重定
时方案用于第二电路设计实现的未受电路设计的有限变化影响的那部分。

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

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

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

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

通常,行为设计规格602可以包括不定时或部分定时的功能代码(即,应用程序代
码并不对逐周期硬件行为进行描述),而RTL描述606可以包括对寄存器传输级电路的逐周
期行为进行详述的完全定时设计规格。

设计规格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)限定这些约束。

在步骤604处,可以执行行为综合(有时也称为算法综合)以将行为描述转换成RTL
描述606。如果已经采用RTL描述的形式提供设计规格,那么可以跳过步骤604。

在步骤618处,行为仿真工具572可以执行RTL描述的RTL仿真,这可以验证RTL描述
的功能性能。如果RTL描述的功能性能不完整或不正确,则电路设计师能够对HDL代码进行
改变(作为一个示例)。在RTL仿真618过程中,可以将从对RTL描述的行为进行仿真获得的实
际结果与期望结果比较。

在步骤608过程中,逻辑综合操作可以使用来自图5的逻辑综合和优化工具574生
成门级描述610。如果期望,逻辑综合操作可以根据包括在设计规格602或RTL描述606中的
约束执行如图2中所示的寄存器重定时。如果期望,在逻辑综合操作608的初始执行之后,逻
辑综合操作608的后续执行可以执行增量寄存器重定时(例如,在RTL描述606中的ECO之
后)。

在步骤612过程中,物理综合操作(例如,使用如布置和布线工具576的放置、布线
以及优化操作)可以在目标集成电路上的优选位置中放置并连接门级描述610中的不同门
以满足给定目标标准(例如,最小化面积、最大化布线效率或最小化路径延迟以及最大化时
钟频率或其任何组合)。

如果期望,物理综合操作可以如图2中所示的并根据包括在设计规格602或RTL描
述606中的约束执行寄存器重定时。作为一个示例,在布置和布线操作之后,物理综合操作
可以通过将一些流水线布线资源(例如,图3的流水线布线资源300的一些实例)的配置从流
水线寄存器模式操作改变为非流水线模式操作以及将其他流水线布线资源(例如,图3的流
水线布线资源300的其他实例)的配置从非流水线模式操作改变为流水线寄存器模式操作
来执行寄存器重定时。物理综合612的输出是掩模级布局描述616。

如果期望,在物理综合操作612的初始执行之后,物理综合操作612的后续执行可
以执行增量寄存器重定时(例如,在门级描述610中的ECO之后或在RTL描述606中的ECO引起
门级描述610的更新之后)。

电路设计系统400(图4)可以包括时序估计器(例如,形成为优化工具574、工具576
或者工具578的部分),该时序估计器可以在步骤614过程中用于生成电路设计的同步元件
之间的路径的时序信息。例如,时序估计器可以生成顺序元件(如寄存器和存储电路)之间
的路径的时序信息(例如,基于互连的长度、中间组合逻辑等)。如果期望,可以基于如延迟、
松弛(例如,信号的所需到达时间与信号的实际到达时间之差)、松弛比、互连拥塞或其他时
序度量等度量来估计时序信息。在帮助确保延迟满足时序要求(例如,临界路径延迟要求)
或其他性能约束的同时,电路设计系统400可以使用估计的延迟确定电路系统组的位置。

考虑这样的情况:电路设计具有从一个寄存器通过组合逻辑到另一个寄存器的给
定路径,并且此给定路径未满足一个或更多个目标标准。例如,时序估计器可以将给定路径
与大于针对该路径规定的目标延迟的延迟相关联确定为目标标准之一。在逻辑综合608之
前、期间以及之后或在可以包括如聚类、划分、布置以及布线(仅列举一些)的操作的物理综
合612之前、期间以及之后,时序估计器可能检测到给定路径具有更大的延迟。在此情况下,
逻辑综合608或物理综合612可以执行寄存器重定时,从而减少通过寄存器之间的组合逻辑
的延迟并潜在地提高给定路径的性能。

如果期望,时序估计器可以在步骤614过程中保存在第一电路设计实现过程中生
成的时序信息。在ECO情况下,改变的电路设计的实现中涉及的后续操作可以在步骤614过
程中使用增量时序分析。

作为一个示例,时序估计器可以使用时序图确定第一电路设计实现中的时序信
息。在增量时序分析过程中,时序估计器可以确定时序图的哪些部分受ECO的影响以及哪些
部分未受影响。如果期望,增量时序分析可以保存未受ECO影响的时序图的那部分并移除并
重新生成受影响的时序图的那部分。如果期望,增量时序分析可以针对未受ECO影响的改变
的电路设计的那部分保存第一电路设计实现的时序分析结果(例如,延迟、松弛、松弛比
等),并针对受ECO影响的电路设计的那部分重新生成时序分析结果。

作为ECO的一个示例,考虑可以采用设计规格602、RTL描述606或门级描述610形式
的图7的电路设计710。

考虑这样的情况:工具574和576已经执行电路设计710的第一编译以生成第一电
路设计实现,其由于寄存器重定时操作而被至少部分地生成。进一步考虑:ECO引起电路设
计710的一部分的更新。电路设计710的此部分可以被限制到变化区域720。

变化区域720可以具有输入730和输出740,这些输入和输出可以将变化区域720之
内的元件(例如,逻辑门、查找表(LUT)、算术运算符、存储电路系统、接口电路系统、时钟电
路系统等)与变化区域720之外的元件耦合。如果期望,输入730和/或输出740可以将变化区
域720之内的元件与电路设计710的引脚耦合。

在此情况下,工具574和576可以执行改变的电路设计的增量编译以生成第二电路
设计实现。如果期望,增量编译可以包括增量寄存器重定时操作。增量寄存器重定时操作可
以基于电路设计的有限改变和来自第一电路设计实现的寄存器重定时操作的结果。

例如,增量寄存器重定时操作可以将来自第一电路设计实现的寄存器重定时操作
的结果用于未受电路设计的有限改变影响的第二电路设计实现的部分。换言之,未直接连
接至变化区域中的元件的第二电路设计实现的任何部分可以与第一电路设计实现中的部
分具有相同布置、布线以及寄存器重定时。

在一些实施例中,增量编译可以扩大变化区域直至到达寄存器边界。因此,增量编
译可以考虑变化区域之外的一些组合逻辑块,即使那些组合逻辑块不受ECO影响并且没有
从第一电路设计实现进行改变。

作为寄存器边界的部分的寄存器有时也被称为同步寄存器。如果期望,同步寄存
器可以在第二电路设计实现过程中维持来自第一电路设计实现的分配的布置。换言之,增
量寄存器重定时操作可以不移动同步寄存器。

在图7的示例中,未被直接连接至变化区域720的输入730或输出740的电路设计
710中的元件在第二电路设计实现中可以具有与在第一电路设计实现中相同的布置、布线
以及寄存器重定时。然而,变化区域720中的任何元件可能需要不同的布置和/或布线。因
此,变化区域720中或被直接连接至变化区域720的任何元件可能需要执行不同于第一电路
设计实现的寄存器重定时操作。

寄存器重定时操作可以图形地代表节点依赖性和/或约束(例如,使用依赖图和/
或约束图),并且使用这些图来解决寄存器重定时问题。作为一个示例,增量寄存器重定时
操作可以基于第一电路设计实现的寄存器重定时操作的结果来增量地更新依赖图和/或约
束图。

图8示出了说明性电路设计870和代表该电路设计的说明性依赖图880。电路设计
870可以包括寄存器815、825、835和845以及组合逻辑810、820、830、840、850和860。相应的
依赖图880可以包括用于电路设计中的每一个组合逻辑块的节点。例如,依赖图880的节点
812、822、832、842、852和862可以分别代表电路设计870的组合块810、820、830、840、850和
860。

依赖图880可以包括弧线,该弧线有时也被称为“定向边”或者简单地被称为边,该
弧线位于用于电路设计中的一对组合逻辑块之间的相应连接的每一对节点之间。例如,依
赖图中从节点812到节点832的弧线可以代表电路设计中组合逻辑810与组合逻辑830之间
的连接。类似地,从节点822到节点842、从节点832到节点852、从节点842到节点852以及从
节点852到节点862的弧线可以分别代表组合逻辑820与组合逻辑840之间、组合逻辑830与
组合逻辑850之间、组合逻辑840与组合逻辑850之间以及组合逻辑850与组合逻辑860之间
的连接。

依赖图中的每一条弧线可以具有指示电路设计中的组合逻辑块之间的寄存器数
量的权重。例如,从依赖图880的节点812到节点832的弧线上的权重“1”可以代表从组合逻
辑810到组合逻辑830的连接上的寄存器815。可以采用相同方式确定剩余弧线上的权重。

考虑以下情况:例如,第一电路设计实现的ECO导致包括寄存器815、825、835和845
以及组合逻辑830、840和850的变化区域(例如,图7的变化区域720)。进一步考虑:组合逻辑
810、820和860在变化区域之外。因此,从组合逻辑810和组合逻辑820到寄存器815和寄存器
825的连接分别代表变化区域的输入(例如,图7的输入730),并且从寄存器845到组合逻辑
860的连接代表变化区域的输出(例如,图7的输出740)。

在此示例中,增量寄存器重定时操作可以从第一电路设计实现中识别依赖图中的
节点(即,节点812,、822和862)、从依赖图中删除位于变化区域内的所有节点和边以及保存
位于变化区域之外的节点和节点之间的边(或者转变)。之后,增量寄存器重定时操作可以
通过将来自变化区域的元件引入依赖图中来增量地重建依赖图。例如,增量寄存器重定时
操作可以从变化区域的输入开始执行广度优先搜索(BFS)或深度优先搜索(DFS)。替代地,
增量寄存器重定时操作可以从变化区域的输出开始执行BFS或DFS。

作为一个示例,增量寄存器重定时操作可以在组合逻辑810中开始并且向前搜索。
增量寄存器重定时操作可以在到达组合逻辑830时将节点832添加到依赖图中,以及将节点
832和来自具有由寄存器815引起的权重“1”的节点812的弧线连接。之后,增量寄存器重定
时操作可以在组合逻辑820中开始并且向前搜索。换言之,增量寄存器重定时操作正从变化
区域的输入朝向变化区域的输出执行BFS。在到达组合逻辑840时,增量寄存器重定时操作
可以将节点842添加到依赖图中并将节点842和来自于具有由寄存器825引起的权重“1”的
节点812的弧线连接。

增量寄存器重定时操作可以从组合逻辑830开始向前搜索而继续。在到达组合逻
辑850时,增量寄存器重定时操作可以将节点852添加到依赖图中并将节点852和来自具有
权重“0”的节点842的弧线连接,这是因为组合节点830与850之间不存在寄存器。之后,增量
寄存器重定时操作可以从组合逻辑840开始向前搜索并且到达组合节点850。增量寄存器重
定时操作可以认识到已经由节点852代表组合逻辑850并将节点852和来自具有权重“0”的
节点842的弧线连接,这是因为组合节点840与850之间不存在寄存器。

增量寄存器重定时操作可以向前搜索而继续,认识到在到达组合逻辑860时已经
由节点862代表组合逻辑860并将节点862和来自具有由寄存器835和845引起的权重“2”的
节点852的弧线连接。

如果期望,增量寄存器重定时操作可以从第一电路设计实现中识别约束图中的节
点(即,节点812、822和862)、从约束图中删除位于变化区域内的所有节点和边以及保存位
于变化区域之外的节点和节点之间的边(或者转变)。之后,增量寄存器重定时操作可以通
过增量地将来自变化区域的约束添加到约束图中来增量地重建约束图。如果期望,增量寄
存器重定时操作可以使与变化区域之外的元件和变化区域之内的元件之间的路径相关的
约束无效。之后,增量寄存器重定时操作可以针对那些路径生成新约束并使用新约束代替
无效的约束。

图9示出可以添加到之前电路设计实现的约束图中的约束的示例和由此产生的约
束图980。

增量寄存器重定时操作可以通过将受ECO影响的、来自依赖图的节点和边(即,依
赖图880的节点812、822、832、842、852和862以及相应的边)添加到约束图980中来增量地建
立约束图,并且分别标注节点A、B、C、D、E和F。增量寄存器重定时操作也可以添加可以具有
标签H的主节点910并将在约束图中的每一个节点与来自主节点的权重为“0”的弧线连接。

在一些实施例中,增量寄存器重定时操作可以针对变化区域枚举新约束。如果期
望,增量寄存器重定时操作可以区分基本约束,这些基本约束确保在弧线上非负数数量的
寄存器、时序约束(例如,来自执行图6的时序分析614)以及架构约束,并且可以将寄存器重
定时限制在节点之间的任何连接上的可用寄存器的数量(例如,布线寄存器或者流水线布
线资源的数量)。

作为一个示例,考虑以下情况:在增量寄存器重定时操作之前和之后,从节点
node1到节点node2的弧线的权重分别由w(node1,node2)和w_ret(node1,node2)表示,并且
跨节点node2将寄存器向前推由r(node2)表示。进一步考虑图8的电路设计870的情况,在增
量寄存器重定时操作之前,节点812、822和862在变化区域之外,而且从节点A到节点C的弧
线具有权重1(即,w(A,C)=1),从节点B到节点D的弧线具有权重1(即,w(B,D)=1),从节点C
到节点E的弧线具有权重0(即,w(C,E)=0),从节点D到节点E的弧线具有权重0(即,w(D,E)
=0),并且从节点E到节点F的弧线具有权重2(即,w(E,F)=2)。

在增量寄存器重定时操作之后,从节点A到节点C的弧线的权重(即,w_ret(A,C))
被限定为重定时之前从节点A到节点C的弧线的权重(即,w(A,C))加上向前推通过节点A的
寄存器的数量(即,r(A))减去向前推通过节点C的寄存器的数量(即,r(C)):

w_ret(A,C)=w(A,C)+r(A)-r(C) (1)

类似地确定增量寄存器重定时操作之后,弧线的剩余权重:

w_ret(B,D)=w(B,D)+r(B)-r(D) (2)

w_ret(C,E)=w(C,E)+r(C)-r(E) (3)

w_ret(D,E)=w(D,E)+r(D)-r(E) (4)

w_ret(E,F)=w(E,F)+r(E)-r(F) (5)

基本约束可以确保在增量寄存器重定时之后没有弧线具有负数数量的寄存器。换
句话说,等式(1)至(5)中的每一个必须大于或等于0。

w_ret(A,C)>=0 (6)

w_ret(B,D)>=0 (7)

w_ret(C,E)>=0 (8)

w_ret(D,E)>=0 (9)

w_ret(E,F)>=0 (10)

用等式(1)至(5)替代不等式(6)至(10)中的增量寄存器重定时操作之后的各个权
重,并且在上述的示例性情景中引入增量寄存器重定时操作之前的权重值,得到:

r(C)-r(A)<=1 (11)

r(D)-r(B)<=1 (12)

r(E)-r(C)<=0 (13)

r(E)-r(D)<=0 (14)

r(F)-r(E)<=2 (15)

增量寄存器重定时操作可以由从节点A到节点C权重为1的弧线、从节点B到节点D
权重为1的弧线、从节点C到节点E权重为0的弧线、从节点D到节点E权重为0的弧线以及从节
点E到节点F权重为2的弧线来分别代表约束图980中的不等式(11)至(15)。

增量寄存器重定时操作可以确定时序约束,例如,通过执行图6的时序分析614。作
为一个示例,时序分析可以确定,为了满足时序,从图5的组合逻辑830到组合逻辑850以及
从组合逻辑840到组合逻辑850的路径可能需要至少一个寄存器。

因此,在增量寄存器重定时操作之后,节点C和节点E之间必须存在至少一个寄存
器,并且节点D与节点E之间必须存在一个寄存器。换言之,等式(3)和(4)必须大于或等于1:

w_ret(C,E)>=1 (16)

w_ret(D,E)>=1 (17)

使用等式(3)和(4)替代不等式(16)和(17)中增量寄存器重定时操作之后的各个
权重,并且引入增量寄存器重定时操作之前的权重值,得到:

r(E)-r(C)<=-1 (18)

r(E)-r(D)<=-1 (19)

增量寄存器重定时操作可以由从节点C到节点E的权重为-1的弧线以及从节点D到
节点E的权重为-1的弧线来分别代表约束图980中的不等式(18)和(19)。

增量寄存器重定时操作可以基于节点之间的任何连接上的可用寄存器的数量(例
如,布线寄存器或者流水线布线资源的数量)确定架构约束。作为一个示例,图8的电路设计
870可以在电路设计870的任何连接的电路元件之间具有小于或等于一个可用寄存器。换言
之,在图8的电路设计870的组合逻辑810和830之间、组合逻辑820和840之间、组合逻辑830
和850之间、组合逻辑840和850之间以及组合逻辑850和860之间可以存在一个或少于一个
寄存器。

因此,在增量寄存器重定时操作之后,等式(1)至(5)中的每一个等式必须小于或
等于1:

w_ret(A,C)<=1 (20)

w_ret(B,D)<=1 (21)

w_ret(C,E)<=1 (22)

w_ret(D,E)<=1 (23)

w_ret(E,F)<=1 (24)

使用等式(1)至(5)代入不等式(20)至(24)中的增量寄存器重定时操作之后的各
个权重,并且引入增量寄存器重定时操作之前的权重值,得到:

r(A)-r(C)<=0 (25)

r(B)-r(D)<=0 (26)

r(C)-r(E)<=1 (27)

r(D)-r(E)<=1 (28)

r(E)-r(F)<=-1 (29)

增量寄存器重定时操作可以由从节点C到节点A权重为0的弧线、从节点D到节点B
权重为0的弧线、从节点E到节点C权重为1的弧线、从节点E到节点D权重为1的弧线以及从节
点F到节点E权重为-1的弧线来分别代表约束图980中的不等式(25)至(29)。

增量寄存器重定时操作可以通过在约束图上使用最短路径算法来解决不等式组。
在一些实施例中,当边权重可能为负并选择主节点910(有时也被称为“源节点”)作为约束
图的原点时,增量寄存器重定时操作可以使用贝尔曼-福特算法来解决单源最短路径问题。
如果并且只有在约束图不包含负周期时,不等式组可能具有解决方案(即,能够同时满足所
有约束)。

如果存在不等式的解决方案,如果期望,增量寄存器重定时操作可以通过将约束
表示为整数线性规划(ILP)问题来确定解决方案。作为一个示例,增量寄存器重定时操作可
以使用单纯形法(simplex method)来解决ILP问题。因此,增量寄存器重定时操作可以将寄
存器835从图8的电路设计870的组合逻辑850的输出移动到组合逻辑850的两个输入。

图10是根据一个实施例的用于操作电路设计计算设备的说明性步骤的图示。在步
骤1010过程中,电路设计计算设备可以接收第一电路设计(例如,没有变化区域720的图7的
电路设计710)和由于寄存器重定时操作而至少部分生成的第一电路设计实现。在步骤1020
过程中,电路设计计算设备可以接收为第一电路设计的工程变更指令(ECO)的结果的第二
电路设计(例如,具有变化区域720的图7的电路设计710)。例如,布线操作之后的寄存器流
水线操作可能已经具有附加寄存器被插入到第一电路设计中以创建第二电路设计。

在步骤1030过程中,电路设计计算设备可以识别第一电路设计与第二电路设计之
间的差异。例如,电路设计计算设备可以将第一电路设计实现的门级网表与第二电路设计
实现的门级网表进行比较以确定变化区域。例如,电路设计计算设备可以识别图7的变化区
域720,该变化区域包括没有变化区域720的电路设计710与具有变化区域720的电路设计
710之间的所有差异。

在步骤1040过程中,电路设计计算设备可以基于所识别的第一与第二电路设计之
间的差异以及寄存器重定时操作的结果来执行包括增量寄存器重定时操作的编译,以生成
第二电路设计实现。例如,如果期望,增量寄存器重定时操作可以针对变化区域(例如,图7
的变化区域720)内的电路设计部分增量地更新依赖图(如图8的依赖图880)和约束图(如图
9的约束图980)。

图11是根据一个实施例的用于操作计算设备上实现的电路设计工具的说明性步
骤的图示。在步骤1110过程中,电路设计工具可以接收第一电路设计(例如,没有变化区域
720的图7的电路设计710)的第一约束和第一重定时方案。

在步骤1120过程中,电路设计工具可以接收包括变化区域的第二电路设计(例如,
具有变化区域720的图7的电路设计710),该变化区域包括第一与第二电路设计之间的差
异。在步骤1130过程中,电路设计工具可以基于第一约束和变化区域(例如,针对电路设计
870在图8中展示的约束)来生成约束,并且在步骤1140过程中,电路设计工具可以基于第二
约束和变化区域执行增量寄存器重定时操作(例如,通过将图8的寄存器835从组合逻辑850
的输出移动到组合逻辑850的输入),使得第二重定时方案包括第一重定时方案的一部分。

例如,如果期望,电路设计工具可以重复使用变化区域之外的第一重定时方案的
任何部分。

图12是根据一个实施例的用于执行电路设计的增量寄存器重定时操作的说明性
步骤的图示。在步骤1210过程中,增量寄存器重定时操作可以基于来自之前电路设计的之
前寄存器重定时操作的遗留约束和包括电路设计与之前电路设计之间的差异的变化区域
来增量地创建更新的约束。例如,增量寄存器重定时操作可以使用来自在没有变化区域720
的图7的电路设计710上执行的寄存器重定时操作的遗留约束,并且通过改变、添加和/或移
除由变化区域720引起的约束来增量地创建更新约束。

在步骤1220过程中,增量寄存器重定时操作可以增量地生成更新的图,该更新的
图基于来自之前寄存器重定时操作的遗留图和更新的约束来对依赖性和更新的约束进行
建模。例如,增量寄存器重定时操作可以使用来自没有变化区域720的图7的电路设计710上
执行的寄存器重定时操作的遗留图,并根据由变化区域720引起的更新的约束通过改变、添
加和/或移除遗留图中的节点和弧线来增量地生成更新的图。

在步骤1230过程中,增量寄存器重定时操作可以使用更新的图来求解更新的约
束,从而实现电路设计的寄存器重定时方案。例如,增量寄存器重定时操作可以通过在约束
图980上使用最短路径算法来解决如图9中所示的更新的约束。

图13是根据一个实施例的用于基于如图12的步骤1220中所示的遗留图增量生成
更新的依赖图和更新的约束的说明性步骤的图示。

在步骤1310过程中,增量寄存器重定时操作可以保存遗留图的、与变化区域外的
电路设计元件相关的约束相关联的节点,并且可以在步骤1320过程中保存遗留图的保存的
节点之间的弧线。

在步骤1330过程中,增量寄存器重定时操作可以删除遗留图的弧线,这些弧线被
连接至遗留图的、与变化区域内的电路设计元件相关的约束相关联的节点,并且可以在步
骤1340过程中删除遗留图的、与变化区域内的电路设计元件相关的约束相关联的节点。

在步骤1350过程中,增量寄存器重定时操作可以生成与变化区域内的电路设计元
件相关的约束相关联的新节点和新弧线。在步骤1360过程中,增量寄存器重定时操作可以
在新节点与保存的节点之间生成附加的新弧线,其中,新弧线与跨变化区域的边界的电路
设计元件相关的约束相关联。

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

本文所述的集成电路可以是包括一个或更多个以下部件的数据处理系统的部分:
处理器、存储器、I/O电路以及外围设备。能够在各种各样的应用(比如,计算机联网、数据联
网、仪器设备、视频处理、数字信号处理或任何适当的其他应用(在该应用中,执行增量寄存
器重定时操作的优势是令人期望的))中使用所述集成电路。

虽然按照具体顺序描述方法操作,但应当理解的是,可以在描述的操作之间执行
其他操作,可以调整描述的操作以使得它们在略有不同的时间发生,或者可以将描述的操
作分布在允许处理操作以与处理相关联的各种间隔发生的系统中,只要以期望方式执行覆
盖操作的处理。

附加实施例:

附加实施例1:一种用于操作电路设计计算设备的方法,该方法包括:使用该电路
设计计算设备,接收第一电路设计和由于寄存器重定时操作而至少部分生成的第一电路设
计实现;使用该电路设计计算设备,接收作为该第一电路设计的工程变更指令的结果的第
二电路设计;使用该电路设计计算设备,识别该第一电路设计与该第二电路设计之间的差
异;以及使用该电路设计计算设备,执行该第二电路设计的编译,以生成第二电路设计实
现,其中,该编译涉及基于该第一与第二电路设计之间的这些识别的差异以及该寄存器重
定时操作的结果来执行增量寄存器重定时操作。

附加实施例2:如附加实施例1所述的方法,其中,识别该第一电路设计与该第二电
路设计之间的差异包括:识别该第一电路设计的具有预定功能的第一区域;以及识别该第
二电路设计的具有相同的预定功能的第二区域。

附加实施例3:如附加实施例2所述的方法,进一步包括:识别该第一电路设计的耦
合至该第一区域的第三区域;以及识别该第二电路设计的耦合至该第二区域的第四区域。

附加实施例4:如附加实施例3所述的方法,其中,执行该增量寄存器重定时操作进
一步包括:在该第四区域与该第一区域的子区域之间移动寄存器。

附加实施例5:如附加实施例3述的方法,其中,执行该增量寄存器重定时操作进一
步包括:在该第四区域中跨组合节点移动寄存器。

附加实施例6:如附加实施例5所述的方法,其中跨该组合节点移动该寄存器进一
步包括:使能被连接至该组合节点的第一布线资源中的第一寄存器;以及禁用被连接至该
组合节点且不同于该第一布线资源的第二布线资源中的第二寄存器。

附加实施例7:如附加实施例3所述的方法,其中,执行该编译进一步包括:保存该
第一电路设计实现的一部分,其中,该部分在该第二电路设计实现中至少实现该第一区域
的子区域。

附加实施例8:如附加实施例7所述的方法,其中,执行该增量寄存器重定时操作进
一步包括:在该第一电路设计实现的该部分中保存时序约束。

附加实施例9:如附加实施例8所述的方法,进一步包括:在该第四区域中生成附加
时序约束。

附加实施例10:一种用于操作在计算设备上实现的电路设计工具的方法,该方法
包括:使用在该计算设备上实现的该电路设计工具,接收第一电路设计的第一约束以及第
一重定时方案;接收包括变化区域的第二电路设计,其中,该变化区域包括该第一与第二电
路设计之间的差异;基于这些第一约束和该变化区域来生成第二约束;以及基于这些第二
约束和该变化区域来执行增量寄存器重定时操作,以生成与该第一重定时方案至少部分地
重叠的第二重定时方案。

附加实施例11:如附加实施例10所述的方法,其中,从包括以下各项的组中选择第
二约束:时序约束、依赖约束、架构约束、用户约束以及物理约束。

附加实施例12:如附加实施例10所述的方法,其中,生成第二约束进一步包括:保
存来自第一约束的约束的子集,其中,该约束的子集中的约束与该第二电路设计的、变化区
域之外的一部分相关联。

附加实施例13:如附加实施例12所述的方法,进一步包括:更新来自第一约束的附
加约束子集,其中,该附加约束子集与该第二电路设计的、至少部分地在该变化区域之内的
附加部分相关联。

附加实施例14:如附加实施例13所述的方法,其中,更新该附加约束子集进一步包
括:使附加约束子集中、将变化区域之外的第二电路设计的第一元件与变化区域之内的第
二电路设计在的第二元件相关联的约束无效。

附加实施例15:如附加实施例14所述的方法,进一步包括:生成将该第二电路设计
的这些第一元件与该第二电路设计的这些第二元件相关联的新约束;以及使用这些新约束
替换附加约束子集中的无效的约束。

附加实施例16:如附加实施例10所述的方法,其中,该第一重定时方案包括第一
图,并且其中,执行该增量寄存器重定时操作进一步包括:基于该第一图和该变化区域来生
成第二图,其中,该第二图包括第二约束的图形表示。

附加实施例17:如附加实施例16所述的方法,其中,该第一图包括节点以及节点之
间的转变,并且其中,生成该第二图进一步包括:保存来自该第一图的、变化区域之外的节
点;以及保存来自该第一图的在该变化区域之外的这些节点之间的转变。

附加实施例18:如附加实施例16所述的方法,进一步包括:通过将约束求解器运用
到该第二图来生成第二重定时方案。

附加实施例19:一种用于在电路设计上执行增量寄存器重定时操作的非瞬态计算
机可读存储介质,该非瞬态计算机可读存储介质包括用于以下各项的指令:基于来自于之
前电路设计的之前寄存器重定时操作的遗留约束并基于包括电路设计与之前电路设计之
间的差异的变化区域,增量地创建更新的约束;基于来自于之前寄存器重定时操作的遗留
图以及更新的约束来增量地生成更新的图,其中,该更新的图对依赖性以及电路设计的更
新的约束进行建模;以及使用更新的图来求解更新的约束以实现该电路设计的寄存器重定
时方案。

附加实施例20:如附加实施例19所述的非瞬态计算机可读存储介质,其中,增量地
创建更新的约束进一步包括用于以下各项的指令:保存与变化区域之外的电路设计元件相
关联的遗留约束的子集。

附加实施例21:如附加实施例19所述的非瞬态计算机可读存储介质,其中,增量地
生成更新的图进一步包括用于以下各项的指令:保存该遗留图的与变化区域之外的电路设
计元件相关的约束相关联的节点;以及保存该遗留图的这些保存的节点之间的弧线。

附加实施例22:如附加实施例21所述的非瞬态计算机可读存储介质,进一步包括
用于以下各项的指令:删除遗留图的弧线,这些弧线被连接至该遗留图的、与变化区域之内
的电路设计元件相关的约束相关联的节点;以及删除与该遗留图的、与变化区域之内的电
路设计元件相关的约束相关联的节点。

附加实施例23:如附加实施例22所述的非瞬态计算机可读存储介质,进一步包括
用于以下各项的指令:生成与变化区域之内的电路设计元件相关的约束相关联的新节点和
新弧线;以及在这些新节点与这些保存的节点之间生成附加的新弧线,其中这些新弧线与
跨变化区域的边界的电路设计元件相关的约束相关联。

前述内容仅仅说明本发明的原理,并且在不偏离本发明的范围和精神的情况下,
本领域技术人员可以进行各种修改。前述实施例可以采用任何适当的组合方式来实现。

集成电路设计的增量寄存器重定时.pdf_第1页
第1页 / 共34页
集成电路设计的增量寄存器重定时.pdf_第2页
第2页 / 共34页
集成电路设计的增量寄存器重定时.pdf_第3页
第3页 / 共34页
点击查看更多>>
资源描述

《集成电路设计的增量寄存器重定时.pdf》由会员分享,可在线阅读,更多相关《集成电路设计的增量寄存器重定时.pdf(34页珍藏版)》请在专利查询网上搜索。

本发明涉及集成电路设计的增量寄存器重定时。第一电路设计描述可以具有寄存器和组合门。电路设计计算设备可以对第一电路设计描述执行寄存器重定时,由此在第一电路设计实现过程中跨组合门移动寄存器。第一电路设计的工程变更指令(ECO)可以引起第二电路设计。可以将第一与第二电路设计之间的差异限制到变化区域。电路设计计算设备可以在第二电路设计实现过程中保存来自第一电路设计实现的结果以及这些结果的重复使用部分。例如。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1