一种基于Tcl/Tk脚本的时钟树扇出违约修复方法与流程

文档序号:12887380阅读:1444来源:国知局
一种基于Tcl/Tk脚本的时钟树扇出违约修复方法与流程

本发明属于半导体集成电路中数字物理设计技术领域,尤其涉及工作频率高、速度快的soc(systemonchip,片上系统)物理设计中,实现了对时钟树逻辑物理约束扇出违约的快速修复,该方法也可以应用于布线阶段扇出违约的快速修复。



背景技术:

时钟树综合是数字物理设计的核心,时钟树传递过来的时钟信号驱动了整个系统的工作,时钟树上的逻辑约束违约必须要清理干净。在进行时钟树综合的时候,首先需要设置逻辑约束,如扇出、转换时间、负载电容。扇出收敛是逻辑收敛的一个重要目标,扇出过大会导致前一级寄存器难以驱动后级寄存器,从而使该级时序不能够精确的通过工艺库得到,影响建立时间和保持时间的精度,进而使电路不能准确按照时钟节拍工作。现有数字物理设计软件如icc(iccompiler)可以解决大部分扇出问题,但是由于物理设计软件进行布局布线时需要考虑的因素较多,如阻挡位置、标准单元拥塞程度、时序问题等等,或多或少的存在一些难以修掉的扇出违约。

这时候通常的解决方案一种是手动修复,但是违约的数目如果过大,手动修复的效率太低,也容易出错;另一种方法是使用eco(engineeringchangeorder,工程修改)工具,但是eco工具价格很昂贵,比如某国产公司的eco工具,至少得20~30万人民币,而且用户操作界面不是很友好,并且需要花较长时间进行eco工具的初始化,eco工具导出的脚本,最终还得要数字物理软件进行执行,由于还存在不同软件之间的关联问题,这样就需要在eco工具和数字物理设计软件之间进行多轮交互才能彻底解决问题。

2012年3月,知网公开了一篇论文名为“基于socencounter的32位cpu双界面卡芯片后端设计的研究和实现”,在文中第57页提出了“原地优化”的方法来解决扇出违约,不同于本设计实现方法,本设计发明通过使用tcl编写脚本完成了对扇出违约pin的修复。

2006年5月,知网公开了一篇论文名为“数字电视机顶盒芯片数字后端设计”,在文中第24页提出了最大扇出综合方法,其使用数字后端设计软件astro对整个设计的高扇出进行综合,但不同于本设计,可以针对具体某个扇出违约pin进行修复。



技术实现要素:

本发明所要解决的技术问题是提供一种基于tcl/tk脚本的时钟树扇出违约修复方法,可以快速修复时钟树扇出违约,并且可以扩展应用修复数字物理设计任何阶段的扇出违约,该方法加速了逻辑约束收敛的时间,减少了手动操作,提高了数字物理设计可靠性与效率。

为解决上述技术问题,本发明提供一种基于tcl/tk脚本的时钟树扇出违约修复方法,其特征是,包括以下步骤:

1)输入扇出违约引脚的全称、插入缓冲器的名称、是否第一次执行本方法这三个参数;

2)遍历扇出违约引脚连接的所有扇出单元,并将所有单元平均分成两组;

3)将所有扇出单元的时序端口与扇出违约引脚的连接断开;

4)抓取扇出单元对应层次的名称,在相应层次下创建需要增加的新的缓冲器和连线;

5)按照不改变电路逻辑关系的原则,将两组扇出单元分别和两个上述缓冲器输出相连,两个上述缓冲器输入分别和违约引脚相连。

步骤2)中,如果有扇出违约的引脚是顶层的单元,通过其逻辑端口遍历所有扇出单元;如果是多层次的单元的引脚,直接按照实际连接情况遍历所有扇出单元。

步骤4)中,使用正则表达式抓取扇出单元对应层次的名称。

步骤4)中,具体包括以下步骤:

根据输入的是否第一次执行本方法的参数,生成全局控制变量;

使用全局变量创建两个新的缓冲器和两条新连线。

步骤5)中,使用全局变量创建两条新连线,分别连接两组扇出单元;使用全局变量创建两个新的缓冲器,分别与新创建的连线连接。

对上述步骤编写一扇出修复软件程序,采用tcl编写软件的逻辑处理部分,使用tk编写软件图形化界面。

本发明所达到的有益效果:

本发明使用tcl/tk语言编写修扇出的eco工具,主要使用tcl完成逻辑部分的处理,使用tk(tcl语言的图形化界面工具集)完成该工具的用户界面的实现。该工具可集成在icc的菜单栏中,并且工具在版图上所增加的单元直接在icc版图界面即可看到,完全去除不同软件之间交互操作,该工具直接利用icc的初始设置,因此也完全不用花时间再进行初始设化,进而能够快速、有效、准确的修复扇出违约,加速了逻辑约束收敛的时间,减少了手动操作,提高了数字物理设计可靠性与效率。

附图说明

图1本发明方法的实现流程图;

图2扇出修复软件菜单;

图3扇出修复软件图形界面;

图4修复前后的扇出报告;

图5扇出软件修复前后的版图对比。

具体实施方式

下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

本发明的使用tcl脚本编写逻辑处理部分的功能,使用tk编写图形化操作界面,使用数字物理设计软件提供的接口将编写软件集成到菜单栏中即可。程序具体实现流程图1所示。首先,必须得输入扇出违约引脚的全称和插入缓冲器的名称、是否第一次执行本方法程序等三个参数,在解决扇出问题的时候会使用到这三个参数。接着需要遍历扇出违约引脚连接的所有单元,并将所有单元平均分成两组。这时候存在单元层次结构的问题,需要按两种情况进行考虑,如果有扇出违约引脚是顶层的单元,那么就需要通过其逻辑端口遍历所有扇出单元;如果是多层次的单元的引脚,那么直接按照实际连接情况遍历所有扇出单元。接着将所有扇出单元的时序端口与扇出违约引脚的连接断开,使用正则表达式抓取扇出单元对应层次的名称,在相应层次下创建需要增加的缓冲器和连线。最后按照不改变电路逻辑关系的原则,将两组扇出单元分别和两个缓冲器输出相连,两个缓冲器输入分别和违约引脚相连即可。

使用本方法仅需输入扇出违约引脚、缓冲器的名称、是否第一次执行本方法软件等三个参数,软件得到这些信息之后,就会自动提取所有扇出违约引脚相连的单元、违约引脚单元的坐标信息,自动创建需要增加的连线和缓冲器,并按照相应逻辑关系进行连线。本设计方法仅仅需要输入三个参数就解决了对应引脚的扇出问题,大大的减少了手工操作,提高了可靠性。原本手动操作修复一个引脚扇出违约需要至少10分钟,使用本方法软件填入三个参数,软件修复扇出违约问题不到1分钟,极大的提高了效率。本方法的软件的输入代码稍加变化,也可实现扇出违约引脚批量修改,可扩展性极强。

1、根据算法流程编写扇出修复软件,主要使用tcl编写软件的逻辑处理部分,图形化界面使用tk来实现。

2、接着在linux系统(一种开源操作系统)下启动icc,在icc的对话框中读取源程序文件,就可以把这个软件集成在icc的菜单栏中。如图2所示,具体位置在菜单tclprogram下。

3、在tclprogram菜单下会看到两个选项,第一个为多层次单元(hierarchy)扇出违约修复使用,第二个为顶层单元(top)扇出违约修复使用,详细界面如图3所示,在第一个输入栏中输入有扇出违约的pin引脚名,多层次单元和顶层单元要区分正确。第二个对话框中输入选择的缓冲器名称,一般选择驱动能力适中的缓冲器,在图3中选择了slow库中的clkbux8这个缓冲器。第三个对话框中输入的参数,表示是否第一次执行该程序,如果是第一次执行该程序,则填1,这个变量会控制全局创建线网和缓冲器的命名规则,其他情况一定要写0。设置完成之后点击按钮fix之后,这个fix按钮基于tk,与修复扇出软件启动命令绑定在一起,这样软件就会自动修复这个扇出违约问题。在此以修复u_syncode_top/u_jlxz_s3/cts_clk_50m_cto_delay461/y这个引脚的扇出为例。

从图4的修复前报告中可以看出这个引脚的实际扇出为16,扇出约束为12,因此这个引脚的违约数是4,修复前时钟树clk_50m上共有6个扇出违约。从修复之后的报告中可以看出,报告中已经没有了之前引脚的违约了,并且时钟树clk_50m的扇出违约数量也从之前的6个降为5个。从报告中能看出u_syncode_top/u_jlxz_s3/cts_clk_50m_cto_delay461/y这个引脚的扇出违约已经被成功修复掉了。

从图5中能看到修复前,版图上扇出违约引脚的周围没有别的单元,为了修复该引脚的扇出违约,在其附件增加了两个缓冲器,将扇出违约引脚的连线打断,再插入两个合适的缓冲器,分别将两个缓冲器与扇出违约引脚进行连接,将之前单路分成两路,u_syncode_top/u_jlxz_s3/cts_clk_50m_cto_delay461/y这个引脚的扇出从原来的16变为2,两个缓冲器分别驱动8个标准单元,这样就解决了这个引脚的扇出违约问题。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

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