适应于功能工程翻新的集成电路建立时序修复方法与流程

文档序号:19739492发布日期:2020-01-18 04:59阅读:287来源:国知局
适应于功能工程翻新的集成电路建立时序修复方法与流程

本发明涉及超大规模集成电路物理设计领域,涉及物理设计中建立时序(setuptiming)的修复,具体涉及一种适应于功能工程翻新(engineeringchangeorder,eco)的集成电路建立时序修复方法。



背景技术:

自cmos集成电路技术问世以来,集成电路与芯片的集成度与复杂度呈指数级上升,集成电路与芯片的前端逻辑设计日益复杂。同时,集成电路的工作频率也随着工艺的进步呈现上升趋势,集成电路物理设计的时序(timing)要求变得越来越复杂、越来越苛刻。当前端逻辑需要修复设计漏洞(bug)时,后端物理设计有重做和功能工程翻新(eco)两种途径。重做的代价往往是巨大的,几乎使得设计周期翻倍,一般只在极端情况下使用。工程翻新(eco)的代价相对小一些,受到业界的广泛重视。随着集成电路工作频率不断上升,设计复杂性不断增加,功能工程翻新(eco)对物理设计时序(timing)的影响越来越严重,一个翻新操作往往引发上万条路径(path)产生建立时序违反,使得时序修复变得十分困难。

现有技术功能工程翻新常常引发严重的建立时序违反,特别在高性能设计之中,采用传统的时序修复方法难以修复功能工程翻新引发的严重建立时序违反,且修复过程非常耗时,严重影响设计进度。因此,如何巧妙地修复工程翻新后的建立时序,降低时序修复周期成为当前物理设计面临的一大难题。



技术实现要素:

本发明要解决的技术问题:针对现有技术的上述问题,提供一种适应于功能工程翻新的集成电路建立时序修复方法,本发明提供了一套规范化的设计流程,通过设计流程实现新增时序单元的位置合理摆放、时序功能工程翻新后数据路径的重新规划、时序功能工程翻新后绕线资源的重新分配,从而以加速工程翻新后物理设计中建立时序的修复,减少功能工程翻新带来的设计周期开销。

为了解决上述技术问题,本发明采用的技术方案为:

一种适应于功能工程翻新的集成电路建立时序修复方法,实施步骤包括:

1)保存待翻新模块实施翻新操作前的初始物理设计状态db0,对待翻新模块进行功能修改得到翻新后的模块rt1,并基于修改对待翻新模块初始的网表netlist_0进行功能工程翻新得到第一网表netlist_1、初始的可测试性设计网表netlist_dft_0进行功能工程翻新得到第一可测试性设计网表netlist_dft_1;

2)在初始物理设计状态db0下导入第一网表netlist_1,将导入的第一网表netlist_1中非时序逻辑单元构成的集合coll_1不进行摆放、时序逻辑单元构成的集合regs_1进行摆放,不进行绕线并直接保存为第一物理设计状态db1;

3)进行翻新网表的化简并保存为第二物理设计状态db2;

4)在初始物理设计状态db0中获取所有寄存器的位置信息并保存为文件reg_place.tcl,在第二物理设计状态db2中执行文件reg_place.tcl,且预先将所有寄存器的位置摆放在与初始物理设计状态db0中该寄存器位置相同的位置,按照待翻新模块的物理设计路程重新放置组合逻辑单元的位置、构造时钟树、并进行绕线与绕线优化,保存为第三物理设计状态db3;

5)在第一物理设计状态db1中找出翻新单元相关的数据路径进行重新规划,并保持非翻新单元的部分数据路径处于断开状态且断开之处构成分支,保存为第五物理设计状态db5;

6)对第五物理设计状态db5中处于断开状态的分支的集合逐一进行连接,保存覆盖第五物理设计状态db5,新的第五物理设计状态db5对应的网表记为第五网表netlist_5;

7)将第五网表netlist_5、第一网表netlist_1实施等价性检查,检查通过则跳转执行步骤8),否则跳转执行步骤6)更改分支连接;

8)对第五物理设计状态db5中处于断开状态的分支的集合的每一条,找到驱动该分支的组合逻辑单元,遍历该单元之后的所有反相器与缓冲器,根据版图上的位置信息、负载信息选择最合适的反相器或缓冲器来驱动该分支,仍然保存覆盖第五物理设计状态db5,新的第五物理设计状态db5对应的网表覆盖第五网表netlist_5;

9)将第五网表netlist_5、第一网表netlist_1实施等价性检查,检查通过则跳转执行步骤10),否则跳转执行步骤8)进行分支优化;

10)对第五物理设计状态db5中的单元进行位置翻新消除第五物理设计状态db5中存在单元重叠,保存覆盖第五物理设计状态db5;

11)对第五物理设计状态db5实施绕线翻新或执行物理设计流程中绕线与绕线优化,保存覆盖第五物理设计状态db5,结束并退出。

可选地,步骤1)的详细步骤包括:

1.1)保存待翻新模块实施翻新操作前的初始物理设计状态db0;

1.2)对待翻新模块进行功能修改得到翻新后的模块rt1;

1.3)基于修改对待翻新模块初始的网表netlist_0进行功能工程翻新、修正错误的功能设计得到第一网表netlist_1;基于修改对待翻新模块初始的可测试性设计网表netlist_dft_0进行功能工程翻新、修正错误的功能设计得到第一可测试性设计网表netlist_dft_1;

1.4)将第一可测试性设计网表netlist_dft_1、翻新后的模块rt1进行等价性检查、将新网表netlist_1与第一可测试性设计网表netlist_dft_1进行等价性检查,如果等价性检查全部通过,则跳转执行步骤2);否则,跳转执行步骤1.2)。

可选地,步骤3)的详细步骤包括:对第一网表netlist_1进行化简处理,在保持等价性的基础上最大限度地删除所有数据路径上的反相器inverter,并删除所有数据路径上的缓冲器buffer,得到第二网表netlist_2,将第二网表netlist_2导入初始物理设计状态db0之中,保存为第二物理设计状态db2。

可选地,步骤3)的详细步骤包括:在第一物理设计状态db1里直接进行化简处理,在保持等价性的基础上最大限度地删除所有数据路径上的反相器inverter,并删除所有数据路径上的缓冲器buffer,保存为第二物理设计状态db2。

可选地,步骤3)的详细步骤包括:直接使用第一可测试性设计网表netlist_dft_1在布局布线工具中实施初始化操作,保存为第二物理设计状态db2。

可选地,步骤5)的详细步骤包括:在第一物理设计状态db1中,找出非时序逻辑单元构成的集合coll_1所有扇出的寄存器集合coll1_out_regs,再找出寄存器集合coll1_out_regs所有扇入的寄存器集合coll1_in_regs,将从寄存器集合coll1_in_regs的q端到寄存器集合coll1_out_regs的d端所有数据路径上的单元抓取出来构成集合coll1_rel_cells_db1;将集合coll1_rel_cells_db1中所有单元的连接关系抓出来并删除,将当前设计状态保存为第四物理设计状态db4;在第三物理设计状态db3中将从寄存器集合coll1_in_regs的q端到寄存器集合coll1_out_regs的d端的所有数据路径上的单元抓取出来构成集合coll1_rel_cells_db3;将集合coll1_rel_cells_db3中的单元的位置信息与它们的相互连接关系写入文件rel_cell_db3_place.tcl中,在第四物理设计状态db4中执行文件rel_cell_db3_place.tcl,从而将从寄存器集合coll1_in_regs的q端到寄存器集合coll1_out_regs的d端的所有数据路径重新建立起来,并将当前设计状态保存为第五物理设计状态db5。

可选地,步骤6)中对第五物理设计状态db5中处于断开状态的分支的集合逐一进行连接具体是指比照替换前后集合coll1_rel_cells_db1和集合coll1_rel_cells_db3中各组合逻辑单元的功能逐一进行连接。

和现有技术相比,本发明具有下述优点:在本发明之前,功能工程翻新常常引发严重的建立时序违反,特别在高性能设计之中,采用传统的时序修复方法难以修复功能工程翻新引发的严重建立时序违反,且修复过程非常耗时,严重影响设计进度。本发明适应于功能工程翻新的集成电路建立时序修复方法提出的设计流程,能以规范化的手段对任意模块功能工程翻新后对原数据路径的更改与新数据路径的引入进行合理规划,从而将这些功能工程翻新引入的建立时序违反进行有效地修复,而且修复建立时序的过程中对drc(设计规则检查)违反的影响小。本发明通过设计流程实现新增时序单元的位置合理摆放、时序功能工程翻新后数据路径的重新规划、时序功能工程翻新后绕线资源的重新分配,从而以加速工程翻新后物理设计中建立时序的修复,减少功能工程翻新带来的设计周期开销。

附图说明

图1为本发明实施例一方法的实施流程示意图。

具体实施方式

实施例一:

如图1,本实施例适应于功能工程翻新的集成电路建立时序修复方法的实施步骤包括:

1)网表的工程翻新:保存待翻新模块实施翻新操作前的初始物理设计状态db0,对待翻新模块进行功能修改得到翻新后的模块rt1,并基于修改对待翻新模块初始的网表netlist_0进行功能工程翻新得到第一网表netlist_1、初始的可测试性设计网表netlist_dft_0进行功能工程翻新得到第一可测试性设计网表netlist_dft_1;

2)物理数据的工程翻新:在初始物理设计状态db0下导入第一网表netlist_1,将导入的第一网表netlist_1中非时序逻辑单元构成的集合coll_1不进行摆放、时序逻辑单元构成的集合regs_1进行摆放,不进行绕线并直接保存为第一物理设计状态db1;

3)翻新网表的化简:进行翻新网表的化简并保存为第二物理设计状态db2;翻新网表的化简:基于等价性原则将翻新后的物理设计网表中的缓冲单元(包括反相器inverter和缓冲器buffer)删除,得到化简网表,或者直接使用翻新的dft网表作为化简网表。

4)化简网表的布局布线:在初始物理设计状态db0中获取所有寄存器的位置信息并保存为文件reg_place.tcl,在第二物理设计状态db2中执行文件reg_place.tcl,且预先将所有寄存器的位置摆放在与初始物理设计状态db0中该寄存器位置相同的位置,按照待翻新模块的物理设计路程重新放置(place)组合逻辑单元的位置、构造时钟树、并进行绕线(route)与绕线优化,保存为第三物理设计状态db3;化简网表的布局布线用于获取翻新前物理设计中所有时序逻辑的物理位置信息,并基于这些位置信息将化简网表的所有时序逻辑单元位置摆放好,再基于该模块的物理设计流程对化简网表重新实施布局布线。

5)逻辑替换:在第一物理设计状态db1中找出翻新单元相关的数据路径进行重新规划,并保持非翻新单元的部分数据路径处于断开状态且断开之处构成分支,保存为第五物理设计状态db5;在翻新前的物理设计数据中,抓取所有翻新单元相关的数据路径(path),删除其中的单元与连接关系;在化简网表的物理设计数据中,抓取所有翻新单元相关的数据路径(path),导入到翻新前的物理设计数据之中。这时,翻新单元相关的数据路径得到了重新规划,但是非翻新单元的部分数据路径处于断开状态,断开之处称为分支(branch)。

6)分支连接:对第五物理设计状态db5中处于断开状态的分支的集合逐一进行连接,保存覆盖第五物理设计状态db5,新的第五物理设计状态db5对应的网表记为第五网表netlist_5;分支连接依照驱动分支(branch)的逻辑单元功能对分支实施连接,直到所有分支处于连接状态。在第五物理设计状态db5中,翻新单元相关的数据路径(从寄存器集合coll1_in_regs的q端到寄存器集合coll1_out_regs的d端的所有数据的子集)得到了重新规划,但是非翻新单元的部分数据路径处于断开状态。

7)等价性检查:将第五网表netlist_5、第一网表netlist_1实施等价性检查,检查通过则跳转执行步骤8),否则跳转执行步骤6)更改分支连接;

8)分支优化:对第五物理设计状态db5中处于断开状态的分支的集合的每一条,找到驱动该分支的组合逻辑单元,遍历该单元之后的所有反相器与缓冲器,根据版图上的位置信息、负载信息选择最合适的反相器或缓冲器来驱动该分支,仍然保存覆盖第五物理设计状态db5,新的第五物理设计状态db5对应的网表覆盖第五网表netlist_5;分支优化用于对步骤6)中连接的每个分支,找到驱动该分支的逻辑单元,遍历该单元之后的所有反相器与缓冲器,根据版图上的位置信息、负载信息等选择最合适的反相器或缓冲器来驱动该分支。

9)等价性检查:将第五网表netlist_5、第一网表netlist_1实施等价性检查,检查通过则跳转执行步骤10),否则跳转执行步骤8)进行分支优化;

10)位置翻新:对第五物理设计状态db5中的单元进行位置翻新(ecoplace)消除第五物理设计状态db5中存在单元重叠,保存覆盖第五物理设计状态db5;

11)绕线翻新:对第五物理设计状态db5实施绕线翻新(ecoroute)或执行物理设计流程中绕线(route)与绕线优化,保存覆盖第五物理设计状态db5,结束并退出。

本实施例中,步骤1)的详细步骤包括:

1.1)保存待翻新模块实施翻新操作前的初始物理设计状态db0;

1.2)对待翻新模块进行功能修改得到翻新后的模块rt1;

1.3)基于修改对待翻新模块初始的网表netlist_0进行功能工程翻新、修正错误的功能设计得到第一网表netlist_1;基于修改对待翻新模块初始的可测试性设计网表netlist_dft_0进行功能工程翻新、修正错误的功能设计得到第一可测试性设计网表netlist_dft_1;

1.4)将第一可测试性设计网表netlist_dft_1、翻新后的模块rt1进行等价性检查、将新网表netlist_1与第一可测试性设计网表netlist_dft_1进行等价性检查,如果等价性检查全部通过,则跳转执行步骤2);否则,跳转执行步骤1.2)。

本实施例中,步骤2)进行物理数据的工程翻新时,将新导入的非时序逻辑单元记为单元集合1,简记为coll_1;新导入的时序逻辑单元集合记为regs_1,不对coll_1进行摆放(place),将regs_1中的所有单元放置在合理的位置。不进行绕线(route),直接保存为db1。

本实施例中,步骤3)的详细步骤包括:对第一网表netlist_1进行化简处理,在保持等价性的基础上最大限度地删除所有数据路径上的反相器inverter,并删除所有数据路径上的缓冲器buffer,得到第二网表netlist_2,将第二网表netlist_2导入初始物理设计状态db0之中,保存为第二物理设计状态db2。

本实施例中,步骤5)的详细步骤包括:在第一物理设计状态db1中,找出非时序逻辑单元构成的集合coll_1所有扇出的寄存器集合coll1_out_regs,再找出寄存器集合coll1_out_regs所有扇入的寄存器集合coll1_in_regs,将从寄存器集合coll1_in_regs的q端到寄存器集合coll1_out_regs的d端所有数据路径上的单元抓取出来构成集合coll1_rel_cells_db1;将集合coll1_rel_cells_db1中所有单元的连接关系抓出来并删除,将当前设计状态保存为第四物理设计状态db4;在第三物理设计状态db3中将从寄存器集合coll1_in_regs的q端到寄存器集合coll1_out_regs的d端的所有数据路径上的单元抓取出来构成集合coll1_rel_cells_db3;将集合coll1_rel_cells_db3中的单元的位置信息与它们的相互连接关系写入文件rel_cell_db3_place.tcl中,在第四物理设计状态db4中执行文件rel_cell_db3_place.tcl,从而将从寄存器集合coll1_in_regs的q端到寄存器集合coll1_out_regs的d端的所有数据路径重新建立起来,并将当前设计状态保存为第五物理设计状态db5。

执行步骤5)后,第五物理设计状态db5中从寄存器集合coll1_in_regs的q端到寄存器集合coll1_out_regs的d端的所有数据路径与这些数据路径集合之外的所有数据路径之间的连接关系没有建立,分支处于断开状态,将这些分支的集合记为branch_lists。针对集合branch_lists中的每个分支,比照替换前后集合coll1_rel_cells_db1和集合coll1_rel_cells_db3中各组合逻辑单元的功能,逐一进行连接,仍然保存为第五物理设计状态db5,新的第五物理设计状态db5对应的网表记为第五网表netlist_5。

本实施例中,步骤6)中对第五物理设计状态db5中处于断开状态的分支的集合逐一进行连接具体是指比照替换前后集合coll1_rel_cells_db1和集合coll1_rel_cells_db3中各组合逻辑单元的功能逐一进行连接。

本发明适应于功能工程翻新的集成电路建立时序修复方法提出的规范化的适应于功能工程翻新的建立时序修复流程是独一无二的,首次实现了对功能工程翻新引入或修改的数据路径进行自动化的重新规划,极大地缩短了功能工程翻新带来的设计开销与设计周期开销。

实施例二:

本实施例与实施例一基本相同,其主要区别点为步骤3)的实现方式不同。本实施例中,步骤3)的详细步骤包括:在第一物理设计状态db1里直接进行化简处理,在保持等价性的基础上最大限度地删除所有数据路径上的反相器inverter,并删除所有数据路径上的缓冲器buffer,保存为第二物理设计状态db2。

实施例三:

本实施例与实施例一基本相同,其主要区别点为步骤3)的实现方式不同。本实施例中,步骤3)的详细步骤包括:直接使用第一可测试性设计网表netlist_dft_1在布局布线工具中实施初始化操作,保存为第二物理设计状态db2。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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