集成电路设计的原理图的交互式简化.pdf

上传人:Y948****062 文档编号:967256 上传时间:2018-03-22 格式:PDF 页数:33 大小:1.52MB
返回 下载 相关 举报
摘要
申请专利号:

CN201010145108.1

申请日:

2010.03.26

公开号:

CN101847169A

公开日:

2010.09.29

当前法律状态:

授权

有效性:

有权

法律详情:

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

IPC分类号:

G06F17/50; G06F3/048

主分类号:

G06F17/50

申请人:

阿尔特拉公司

发明人:

C·P·施恩; D·C·H·古

地址:

美国加利福尼亚州

优先权:

2009.03.26 US 12/412,045

专利代理机构:

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

代理人:

赵蓉民

PDF下载: PDF下载
内容摘要

交互式成组工具提供通过将没有被列为感兴趣的电路元件成组为任何大小的实体来简化集成电路(IC)设计的电路图的灵活性。可以将各种类型和功能的电路元件(包括端口和管脚)组合起来成为同一实体而不修改底层设计逻辑和连接关系。通过成组并且隐藏不必要的细节,所述工具降低了电路图中的凌乱程度并且极大地方便了遍历、调试和分析电路图的处理。用户可以动态地选定成组电路图上的电路元件而不经过任何编译或综合处理。用户也可以选择用解组操作将任一实体恢复到最初的电路图。为了特殊地或批量操控电路图,所述工具为用户提供了输入命令的脚本界面。可以通过使用用于特定操作的拖放技术来改变选中的实体的内容,特定操作包括将节点移入实体、从实体中移走节点和将节点加入实体。

权利要求书

1.  一种简化集成电路IC设计的原理图的方法,所述方法包括:
生成所述IC设计的原理图;
将所述原理图显示在图形用户界面GUI上,所述原理图具有多个节点和互连所述节点的多条线,其中所述多个节点中的一个节点包括所述IC设计的功能元件;以及
使用户能够从所述GUI上的多个节点和多条线中进行选择,并且能够将选中的节点和线成组到一个实体中,其中所述节点被选择并成组到与所述节点的类型无关的所述实体中。

2.
  根据权利要求1所述的方法,还包括在IC设计过程中的综合阶段后简化所述原理图。

3.
  根据权利要求1所述的方法,还包括在保持所述IC设计的底层逻辑的同时修改所述原理图。

4.
  根据权利要求1所述的方法,其中所述原理图还包括至少一个实体,其中所述至少一个实体是多个节点和互连所述多个节点的多条线的成组。

5.
  根据权利要求1所述的方法,其中所述使用户进行选择和成组的步骤包括:
对于所述多个节点中的每个节点,评定所述节点是否是选中的节点;
确定所述选中的节点的至少一个输入端口;
对于所述选中的节点的所述至少一个输入端口中的每个输入端口,确定驱动输入路径的源节点;
确定所述源节点是否与所述选中的节点被指定在同一实体中;以及
如果所述源节点与所述选中的节点没有被指定在所述同一实体中,则将所述源节点与所述实体断开。

6.
  根据权利要求5所述的方法,其中将所述源节点与所述实体断开的步骤包括:
如果没有为所述实体创建输入端口,则创建由所述源节点驱动的输入端口;以及
将所述源节点连接到所述输入端口。

7.
  根据权利要求5所述的方法,还包括:
为所述选中的节点确定至少一个输出端口;
对于所述选中的节点的每个输出端口,确定由所述输出端口驱动的目的节点;
确定所述目的节点是否与所述选中的节点被指定在同一实体中;
如果所述目的节点与所述选中的节点没有被指定在所述同一实体中,则将所述目的节点与所述选中的节点断开;以及
将所述选中的节点作为所述实体的成员插入。

8.
  根据权利要求7所述的方法,其中将所述目的节点与所述实体断开的步骤包括:
如果没有为所述实体创建输出端口,则创建由所述选中的节点驱动的输出端口;以及
将所述目的节点连接到所述输出端口。

9.
  根据权利要求1所述的方法,还包括使所述用户能够选择显示的至少一个实体,并且将所述至少一个实体解组为多个节点和多条线。

10.
  根据权利要求9所述的方法,还包括使所述用户能够将所述多个节点和所述多条线重组为之前的实体。

11.
  根据权利要求9所述的方法,还包括:
为每个实体确定至少一个输入端口;
对于所述实体的每个输入端口,确定驱动所述输入端口的源节点;
确定由所述输入端口驱动的至少一个子节点;
对于由所述输入端口驱动的每个子节点,将所述子节点与所述输入端口断开;以及
将所述子节点连接到所述源节点。

12.
  根据权利要求11所述的方法,还包括:
为每个实体确定至少一个输出端口;
对于所述实体的每个输出端口,确定驱动所述输出端口的子节点;
对于所述实体的每个输出端口,确定由所述输出端口驱动的至少一个目的节点;
将所述目的节点与所述输出端口断开;
将所述子节点连接到所述目的节点;以及
移走所述实体。

13.
  根据权利要求1所述的方法,还包括使所述用户能够选择实体并且显示已置于所述实体中的多个节点和多条线。

14.
  根据权利要求1所述的方法,还包括:
使所述用户能够将至少一个节点从源实体移动至目的实体;以及
使所述用户能够使用拖放技术用于所述移动,其中所述用户将所述至少一个节点从所述源实体中拖出,并且将所述至少一个节点放入所述目的实体。

15.
  根据权利要求14所述的方法,还包括:
确定要从源实体中移走的至少一个节点;
对于要被移走的所述至少一个节点中的每个节点,确定所述节点的至少一个输入端口;
对于要被移走的所述至少一个节点中的每个节点,确定所述节点的至少一个输出端口;
从所述源实体中移走所述节点;以及
将所述节点加到所述目的实体。

16.
  根据权利要求15所述的方法,其中确定所述节点的至少一个输入端口的步骤包括:
对于所述节点的所述至少一个输入端口的每个输入端口,执行一系列步骤,所述步骤包括:
为旧实体创建映射的输出管脚;
为新实体创建映射的输入管脚;
为所述旧实体创建新输出端口,其中所述新输出端口被映射到所述旧实体的映射的输出管脚;
为所述新实体创建新输入端口,其中所述新输入端口被映射到所述新实体的映射的输入管脚;
经由所述新输出端口和所述新输入端口连接所述旧实体和所述新实体;
确定驱动所述节点的所述输入端口的输出端口;
将所述实体的所述输入端口与所述输出端口断开;
将所述输出端口连接到所述旧实体的所述映射的输出管脚;
将所述节点的所述输入端口连接到所述新实体的所述映射的输入管脚;以及
如果所述输出端口是所述映射的输入管脚的所述输出端口并且所述输出端口不具有扇出,则从所述旧实体中移走所述输出端口。

17.
  根据权利要求15所述的方法,其中确定所述节点的至少一个输出端口的步骤包括:
对于所述节点的所述至少一个输出端口的每个输出端口,执行一系列步骤,所述步骤包括:
为所述旧实体创建映射的输入管脚;
为所述新实体创建映射的输出管脚;
为所述旧实体创建新输入端口,其中所述新输入端口被映射到所述旧实体的所述映射的输入管脚;
为所述新实体创建新输出端口,其中将所述新输出端口映射到所述新实体的所述映射的输出管脚;
经由所述新输入端口和所述新输出端口连接所述新实体和所述旧实体;
确定由所述实体的所述输出端口驱动的至少一个输入端口;以及
对于所述至少一个输入端口的每个输入端口,执行一系列步骤,所述步骤包括:
将所述输入端口与所述节点的所述输出端口断开;
将所述输入端口连接到所述旧实体的所述映射的输入管脚;以及
将所述输出端口连接到所述新实体的所述映射的输出管脚。

18.
  一种用于描绘集成电路IC的原理图的电子设备的机器可读介质,所述介质包括用于下述指令:
在用户界面上以图形方式将所述原理图表示为具有多个电路元件,其中所述多个电路元件的一个电路元件包括所述IC的功能元件、节点、端口、管脚或互连的电路路径;
接收用户输入,其中所述用户输入包括关于选择和组织所述电路元件的指令;
响应所述用户输入,将多个选中的电路元件成组为实体,其中所述实体包括任何类型和功能的电路元件的合集;以及
响应所述用户输入,将至少一个选中的实体解组为多个电路元件。

19.
  根据权利要求18所述的机器可读介质,其中所述用户输入包括下述中的至少一个:
以脚本语言编码并且在用户界面的命令提示符处输入的用户输入;以及
利用图形用户界面GUI输入的用户输入。

20.
  根据权利要求18所述的机器可读介质,其中所述解组包括将所述多个实体和所述多条路径重组回所述实体。

21.
  根据权利要求18所述的机器可读介质,还包括用于提供拖放工具的指令,所述拖放工具用于将电路元件从源实体转移到目的实体,其中所述用户将至少一个电路元件从源实体转移到目的实体。

22.
  根据权利要求18所述的机器可读介质,其中所述介质是电子设计自动化工具的元件。

23.
  一种生成并且显示集成电路IC设计的原理图的电子设备,所述电子设备包括:
存储器;
显示屏,其中所述显示屏显示所述IC设计的所述原理图;以及
处理器,其中所述处理器执行指令,所述指令包括:
在图形用户界面GUI上生成所述IC设计的所述原理图;
从用户接收与简化所述原理图有关的输入;以及
基于来自所述用户的所述输入,通过执行以下步骤中的至少一个来简化所述原理图:
成组多个电路元件;
解组多个电路元件;以及
重组多个电路电路元件。

24.
  根据权利要求23所述的电子设备,还包括输入介质,所述输入介质允许所述用户选择多个电路元件并且选定在所述多个电路元件上期望执行的功能来,其中所述期望执行的功能包括成组、解组和重组所述多个电路元件。

25.
  根据权利要求24所述的电子设备,还包括输入介质,所述输入介质允许所述用户执行拖放操作,其中所述用户将至少一个电路元件从具有多个电路元件的一个组拖到具有多个电路元件的另一个组。

说明书

集成电路设计的原理图的交互式简化
技术领域
本发明通常涉及设计集成电路(IC),更具体地说,涉及简化IC设计的原理图。
背景技术
在IC的设计周期中的其中一个处理包括在寄存器传输级(RTL)定义IC设计,在其中设计者确定硬件寄存器之间的信号流向和在信号上执行的逻辑操作。在RTL设计中,设计者使用硬件设计语言(HDL)来声明寄存器并且通过使用与标准编程语言中的那些类似的结构(例如if-then-else)和算术操作来描述组合逻辑。HDL的示例包括Verilog和VHDL。
在设计IC中通常使用电子设计自动化(EDA)软件。通过在IC设计周期中称为综合的处理期间使用EDA软件,可以将HDL文件转换成包含实现HDL文件中指定逻辑的通用硬件原型(hardware primitives)的等效网表。
一般来说,网表包含与IC设计中的元件的数目和类型以及它们互连的方式有关的信息。在网表中,互连的电路元件(典型地称为节点)可以是简单到如电阻器或复杂到如微处理器。连接电路元件的导线(wire)常称为线(net)。典型的网表可能包括连接在公共线上的电路元件的列表。
随着市场需求驱动电子公司将更多的性能和功能打包到尺寸日渐减小的芯片中,网表的复杂度也已经极大地增加,导致当对用户显示时,原理图在视觉上总是拥挤并且极难操控。因此,综合问题需要较大量的时间来分析和调试。
网表查看器典型地提供了图形用户界面(GUI)来展现网表的原理图(schematic diagram)。通过网表查看器,设计者可以以视觉方式检查它们的设计以确保在仿真和其他验证处理之前连接关系和逻辑满足所有要求。查看以原理图形式表现的网表是分析、调试和优化IC设计的强有力的方式。例如,设计者可以在原理图中前进和后退,并且也可以在多级成组层级(grouping hierarchy)之间移动以通过视觉检查图表的方式找到特定的节点或定位特殊的线。
网表不断增长的复杂度使得对以较为简洁的方式提供原理图的方法的需求成为必要。隐藏不必要的实现细节而不改变底层逻辑的原理图使分析、调试和优化处理变得容易。通常,可以以许多方式来简化原理图,包括:
a)改变最初的源(例如HDL设计规范)并且生成新网表显示在网表查看器上。由于HDL设计在每次改变代码时需要重新编译,所以这个选择是乏味的并且耗时的。
b)通过GUI在网表查看器上编辑原理图。
许多EDA软件工具提供网表简化特征,其包括下述中的至少一项:
a)对节点成组和解组。然而,可以被成组或解组的节点必须已经在HDL设计中被定义为层级实例。因此,用户不能将节点从现有组中移走或将新的并且不相关的节点加入现有的组。
b)过滤节点。通过过滤特征,用户可以滤除网表中的节点和线以仅显示感兴趣的逻辑和连接关系。然而,过滤标准是由程序来固定的,并且用户不能绕开固定的网表修改程序来基于他们自己的标准直接修改网表。
c)将节点成组为“云(cloud)”。一个云包括一组组合逻辑节点。通过云成组特征,用户可以通过将节点成组为云来选择隐藏原理图中的组合逻辑。云成组特征基于在软件中定义的一组固定标准。用户可以打开或关闭云成组特征,但是不具有改变成组云的标准的灵活性。此外,云成组特征仅可以用于组合逻辑元件。
d)将节点划分为多个页面(page)。虽然划分特征仅减少了每页面细节的量,但是没有隐藏不必要的细节。当遍历难处理的原理图时,用户仍然不得不从一个页面移动到另一个页面。
EDA软件和网表查看器的示例包括:
a)内华达州韩德森市的Aldec公司的Active HDL;
b)加利福尼亚州圣何塞市的Cadence Design Systems公司的Composer;
c)加利福尼亚州山景城市的Synopsys公司的Design Compiler Graphical;
d)俄勒冈州波特兰市的Mentor Graphics公司的DxDesigner;
e)加利福尼亚州圣何塞市的Xilinx公司的ISE;
f)俄勒冈州波特兰市的Mentor Graphics公司的Leonardo Spectrum;
g)加利福尼亚州圣何塞市的Altera公司的Matrix;
h)加利福尼亚州圣何塞市的Altera公司的Quartus II;
i)加利福尼亚州山景城市的Synopsys公司的Synplify;
j)加利福尼亚州帕洛阿尔托市的Veritools公司的Undertow;以及
k)内华达州韩德森市的Aldec公司的ViewDraw。
一般来说,当前的许多网表查看器当其用来减少原理图上的节点和线的数目时提供了一组固定的标准,并且不为用户提供基于他们自己的需求简化原理图的灵活性。
发明内容
一般来说,本发明的实施例提供了查看和编辑工具,在其中用户可以使用许多编辑程序来减小网表原理图上的复杂度和凌乱程度。用户可以通过隐藏不必要的细节并且仅显示他们想要看到的节点和线来实现他们自己的成组和过滤标准。在一个实施例中,简化在综合阶段之后执行并且不会改变IC设计的底层逻辑和设计规范。
所公开的实施例通过将用户不感兴趣的元件进行成组来简化RTL网表的原理图。成组处理通过仅显示用户想要看到的元件减小了原理图中的凌乱程度。用户也可以选择通过解组元件将其恢复到最初的原理图。简化操作是交互式的,这意味着系统等待用户输入、处理该用户输入并且在每个用户交互之后立即将简化结果显示在原理图上而无需编译或综合。可以选择任何数目的节点和线进行成组。节点不限于网表的基本结构模块例如端口、逻辑门和寄存器,而且也包括更复杂的硬件结构例如数字信号处理器(DSP)和/或微处理器。节点的成组不只限于相同类型的节点。例如,可以将形成组合逻辑的一组逻辑门与寄存器成组。也可以将执行不同功能的节点组合在同一组中。
可以以许多方式实现本发明的实施例,包括方法、系统或设备。下面描述了本发明的若干富于创造的实施例。
本发明的一个实施例涉及一种简化IC设计的原理图的方法。在该方法中,将IC设计表示为原理图并且显示在GUI上。在原理图中,将硬件原型以不同的形式(包括形状、符号和颜色)表示为形象的元件。形象的元件表示设计中的节点和互连节点的线。在该方法中,用户能够从设计中的节点和线中进行选择并且将它们成组为一个或多个实体。实体被定义为节点和线的成组集合。从用户的角度来说,实体通常显示为单个节点,其中不显示底层实现细节。用户也能够将实体解组为其最初的元件或将之前已成组的一组元件重组回实体。
在本发明的另一实施例中,提供了一种用于生成和显示芯片设计的原理图的电子设备。该电子设备包括存储器和用于将原理图显示在GUI上的屏幕。该电子设备还包括用于执行与生成原理图、接收关于简化原理图的用户输入相关的指令的处理器,其中通过成组、解组或重组原理图中的电路元件来简化原理图。
结合附图参考以下详细描述,本发明的实施例的其他方面和优势将变得明显。
附图说明
在所附权利要求中列出了本发明的新颖特征。然而,出于解释的目的,参照附图描述本发明的特定实施例的若干方面。
图1示出了表示IC的一部分的示例性原理图。
图2a示出了原理图,图2b示出了根据一个实施例在已经使用交互式成组简化图2a中的图之后产生的图。
图3a示出了原理图,图3b示出了根据一个实施例在将XOR节点和NOR节点成组为实体inst_1之后产生的简化图。
图4a示出了原理图,图4b示出了根据一个实施例在将NAND节点、AND节点、BUFFER节点和OR节点成组为实体inst_2之后产生的简化图。
图5a示出了原理图,图5b示出了根据一个实施例在将inst_1节点、inst_2节点和寄存器节点成组为新实体inst_3之后产生的简化图。
图6a示出了具有实体inst_3的原理图,图6b示出了根据一个实施例将inst_3的输入端口成组为输入总线并且将inst_3的输出端口成组为输出总线之后产生的简化图。
图7a示出了原理图,图7b示出了根据一个实施例将输入管脚成组之后产生的简化图。
图8a示出了原理图,图8b示出了根据一个实施例将输出管脚成组在一起之后产生的简化图。
图9示出了根据一个实施例被展开以显示其底层部件的实体。
图10a、图10b和图10c示出了根据一个实施例的拖放操作。
图11a示出了根据一个实施例的复杂且凌乱的高速串行接口(HSSI)模块,可以通过原理图的交互式简化将所述高速串行接口模块减少到图11b的三模块图。
图12示出了根据一个实施例的成组处理的流程。
图13示出了根据一个实施例的解组处理的流程。
图14示出了根据一个实施例的拖放操作的流程。
图15示出了根据一个实施例的计算机系统。
具体实施方式
下述描述是为了使本领域任何技术人员能够理解并且使用本发明,并且以下描述是在特定应用及其需求的背景下提供的。对本领域技术人员来说,对示例性实施例的各种修改将是显而易见的,并且可以将本文限定的一般性原理应用到其他实施例和应用而不偏离本发明的精神和范围。因此,无意将本发明限制在所示的实施例,而是赋予其与本文公开的原理和特征一致的最宽的范围。
以下实施例描述了可以如何简化原理图。在分析或调试IC的设计中,大多数用户常常仅对设计的特定部分而不是整个原理图感兴趣。对节点和线的成组减少了原理图中的凌乱程度,因此极大地减少了确定感兴趣的节点之间的关系所需的时间。
在所描述的实施例中,节点被用来表示除导线(wire)以外的IC设计的所有部件。线被用来表示直接或间接互连电路元件的导线。术语“节点”包括从基本的构成单元(例如I/O管脚、寄存器和/或门)到复杂的逻辑结构(例如DSP和/或微处理器)的范围广泛的电路元件。在此实施例中,节点也被用来指代已成组的节点(实体)、端口和管脚。实体是节点和线的成组集合。
图1示出了对应于IC的一部分的示例原理图。可以通过使用网表查看器来生成原理图并且将其显示在GUI上用于操控。从用户的角度来说,由于网表中的电路元件的数目太大并且连接关系太复杂以至于不易于通过肉眼区分,所以图1中的图看起来几乎完全是黑的。
图2a示出了原理图,图2b示出了根据一个实施例在已经使用交互式成组来简化图2a中的图之后产生的图。图2a中的原理图包括输入管脚101-105(input_pin_1-input_pin_5)、XOR节点111、NOR节点112、AND节点113、NAND节点121、BUFFER节点131、寄存器节点141、OR节点142以及输出管脚151(output_pin_1)和输出管脚152(output_pin_2)。图2b示出了在执行交互式成组之后所述原理图仅包括实体inst_3 203、一个输入管脚组221和一个输出管脚组222的简化原理图。图3a至图8b示出了在图2a中的图上执行的为实现图2b中的简化图的逐步成组过程。
图3a示出了原理图,图3b示出了根据一个实施例将XOR节点和NOR节点成组为实体inst_1之后产生的简化图。图3a示出了正在被选择进行成组的XOR节点111和NOR节点112两者。网表查看器中的GUI使用户能够使用键盘、触摸板或图形输入设备(例如鼠标)来选择节点进行成组,以及使用类似于301中描绘的菜单驱动界面呈现操控原理图的可用选项。一旦选中,节点或线的图形表示与那些未被选中的图形表示不同。在该实施例中,使用粗线描绘选中的节点。虽然通过示例示出了这种表示方法,但是使用不同的图标、颜色、图案等的其他表示方法也是可能的,只要保持本文描述的功能。在该实施例中,除了成组操作之外,用户也可以通过301的菜单驱动界面来选择解组或重组操作。图3b示出了将XOR节点111和NOR节点112成组为inst_1 201后产生的图。
图4a示出了原理图,图4b示出了根据一个实施例将NAND节点、AND节点、BUFFER节点和OR节点成组为实体inst_2之后产生的简化图。在一个实施例中,可以选择任何数目的节点并且将其成组为实体。在一个实施例中,节点的选择可以是与它们的功能无关。在图4a中,AND节点113、NAND节点121、BUFFER节点131和OR节点142是具有不同功能的节点,这些节点被选择并且被成组为inst_2 202,如图4b中所示。
图5a示出了原理图,而图5b示出了根据一个实施例将inst_1节点、inst_2节点和寄存器节点成组为新实体inst_3 203之后产生的简化图。根据一个实施例,不仅可以在相同类型的节点上执行交互式成组,也可以在不同类型的节点上执行交互式成组。换句话说,节点可以被选择用于成组为与节点的类型无关的实体。例如,可以将组合逻辑节点(例如AND、OR、NOR、XOR、NAND、XNOR、BUFFER或MUX节点)与非组合逻辑节点(例如寄存器)组合。更一般地,如在上述示例中,在一个实施例中,节点可以被选择以成组为与节点的类型和功能无关的实体。可以将已成组的节点或实体与其他节点或实体组合以再次成组为不同的实体。在图5a中,inst_1节点201、inst_2节点202和寄存器节点141被选择并成组为inst_3节点203。图5b中示出了所产生的图。
图6a示出了具有实体inst_3的原理图,图6b示出了根据一个实施例将inst_3的输入端口成组为输入总线并且将inst_3的输出端口成组为输出总线之后产生的简化图。在该实施例中,除了逻辑元件以外,也可以将成组处理用于I/O元件,例如IC中的端口和管脚。在一个实施例中,对于端口成组,用户只能选择驱动相同节点或正在被相同节点驱动的端口。同样在一个实施例中,对于特定的节点,只有相同方向的端口才可以成组,这意味着输入端口只能与其他输入端口成组,并且输出端口只能与其他输出端口成组。可以选择并且同时成组不同组的端口。图6a示出了正在被选择用于分别成组为不同总线端口的inst_3节点203的所有输入端口171-175和输出端口181-182。图6b示出了产生的图,其中输入端口被成组为总线端口211而输出端口被成组为总线端口212。
在一个实施例中,也为用户提供了成组相同方向的管脚的灵活性。图7a示出了原理图并且图7b示出了根据一个实施例将输入管脚成组后产生的简化图。在图7a中,将输入管脚101、102、103、104和105成组为输入管脚组221,如图7b中所示。
图8a示出了原理图并且图8b示出了根据一个实施例将输出管脚成组后产生的简化图。在图8a中,将输出管脚151和152成组为输出管脚组222,如图8b所示。
图9示出了根据一个实施例的被展开以显示其底层部件的实体。该实施例使用户能够显示成组实体的内容而不解组该实体。一旦成组,每个实体显示为单个节点,其中实现细节对用户是隐藏的。然而,可以将每个成组的实体展开以揭示已置于其内的部件,包括其他已成组的实体。可以通过菜单驱动界面来使展开已成组实体的选项可用,并且用输入设备例如鼠标来选择该选项。也可以使用鼠标悬停(mouse-over)技术来展开每个已成组的实体,即将鼠标指针在成组的实体上移动。只要鼠标指针悬浮在已成组的实体上就显示底层的部件或实体,并且当鼠标指针从已成组的实体移开时,再次隐藏底层的部件或实体。也可以使用其他方式查看底层部件,例如通过双击已成组的实体。在展开的视图901中,实体inst_3 203的底层部件被显示为实体inst_1 201、实体inst_2 202和寄存器节点141。可以将实体inst_1 201和实体inst_2 202进一步展开以显示其各自的底层部件。如展开的视图902中所示的,可以将实体inst_1 201展开以显示其部件,包括XOR节点111和NOR节点112。同样,如展开的视图903中所示的,可以将实体inst_2 202展开以显示其部件,包括NAND节点121、AND节点113、BUFFER节点131和OR节点142。
本发明的另一实施例涉及使用拖放(drag-and-drop)操作来修改成组实体的内容。图10a、图10b和图10c示出了根据一个实施例的拖放操作。使用拖放操作技术,可以容易地将节点从实体中移走或将节点加入实体。可以通过移走节点和加入节点来改变实体的组成。图10a示出了具有两个已成组实体(inst_1 201和inst_2 202)的原理图。图10b示出了自实体inst_2 202被拖到实体inst_1 201的NAND节点113。图10c示出了节点NAND 113被移至实体inst_1 201所产生的图。移动之后,实体inst_2 202a现在具有三个节点而不是四个,而实体inst_1 201a现在具有三个节点而不是两个。对于受影响的实体,将重画节点和布线。典型地通过允许用户在屏幕上选择和移动物体的用户输入设备来执行拖放操作。这种设备的示例包括鼠标、轨迹球(trackball)和键盘。
本发明的另一实施例涉及使用脚本命令来发出在原理图上执行成组、解组和重组的指令。可以在显示屏的命令提示符处经由用户输入设备(例如键盘)来输入这些脚本命令。脚本环境或工具通常为用户提供使用特定脚本语言(例如Tcl)输入命令的接口。下面的表1示出了可以用来操控原理图显示的某些示例命令。使用基于脚本的命令的其中一个优势是指定要成组的多个节点的灵活性或在批处理模式中同时执行一个以上成组操作的灵活性。当用户已经知道选择哪些节点时,它也是有用的。用户可以仅在脚本命令中列出节点名称而不是遍历整个原理图来寻找指定的节点。例如,下述命令将通过-node参数指定的节点成组为通过-grouped_instance参数指定的实体:
group_instance-node<node_name>[-grouped_instance<instance_name>]通过使用通配符或正则表达式,用户可以扩展节点的列表和范围以进行成组。
表1:用于原理图的交互式简化的命令

  命令  描述  group_instance-node<node_name>  [-grouped_instance<instance_name>]  该命令将由-node指定的所有节点成组。这些  节点被成组为名为<instance_name>的实体。  -node指定用于成组的候选节点列表。可以使  用通配符和正则表达式来标识多个节点。  如果没有指定-grouped_instance,则为实体分  配缺省名称。  ungroup_instance-instance   <instance_name>  该命令解组由-instance指定的实体。可以使用  通配符和正则表达式来标识多个实例,并且可  以同时解组多个实体。  在成组之后,高亮实体内的所有节点。  group_port-instance<instance name>-port  <port_name>[-grouped_port  <grouped_port_name>]  该命令成组端口。端口的成组限于同一实体内  的端口的成组。<instance_name>不接受通配符  表达式。  由<port_name>指定的所有端口必须是同一类  型的(或输入端口或输出端口)。  -port选项指定要被成组到总线端口的端口。可  以使用通配符和正则表达式来标识要被成组到  总线端口的端口。  -grouped_port选项允许用户指定总线端口的名  称。

  命令  描述  ungroup_port-instance<instance_name>  -bus_port<bus_port_name>  该命令将由-port选项指定的所有总线端口解  组。可以使用通配符和正则表达式来指定  <bus_port_name>,但是<instance_name>必须  是具体的。  remove_member-instance  <instance_name>-node<node_name>  这个命令将由<node_name>指定的节点从名为  <instance_name>的实体中移走。  可以用通配符或正则表达式来指定  <node_name>,但是<instance_name>必须是具  体的。  将由<node_name>指定的节点从实体  <instance_name>中移走并且放在与实体  <instance_name>相同的层级上。  add_member-instance<instance_name>   -node<node_name>  该命令搜索与实例<instance_name>相同层级  的所有节点,以找到满足<node_name>表达式  的节点。  可以用通配符或正则表达式来指定  <node_name>,但是<instance_name>必须是具  体的。  将满足<node_name>标准的所有节点加到实例  <instance_name>。  move_member-from_instance  <src_instance_name>-to_instance  <dest_instance_name>-node  <node_name>  该功能搜索<src_instance_name>的所有成员,  并且识别满足<node_name>通配符或正则表达  式的节点。这些节点将从<src_instance_name>  中移至<dest_instance_name>。  <src_instance_name>和<dest_instance_name>  必须是在同一层级。  <node_name>可以使用通配符或正则表达式,  但是实例必须是具体的。

从本文描述的实施例中可以清楚地看到,本发明在增强原理图的可读性方面提供了较大的灵活性。除了提供直观的GUI和用户可以交互式地简化原理图的若干方法之外,本发明的实施例也不将简化标准局限于HDL或网表查看器工具所限定的范围。用户可以选择将网表中的所有节点成组、解组和重组为更易管理的块(chunk),同时隐藏不相关的细节。可以使用本文描述的实施例(包括菜单驱动界面、脚本语言和拖放技术)组合不同类型和不同功能的节点(包括端口和管脚)。通常,当分析或调试IC设计时,用户仅对IC设计的一小部分感兴趣。交互式简化工具使用户能够仅显示IC设计的相关部分,因此缩短了遍历原理图以跟踪特定路径或查找目标节点所需的时间。例如,图11a示出了一个复杂、凌乱的高速串行接口(HSSI)模块,根据一个实施例该模块可通过原理图的交互式简化而被减少到图11b的三模块图。
图12示出了根据一个实施例的成组处理的流程。成组处理500开始于步骤502,之后继续步骤504,在步骤504中创建新实体(entityA)。接着处理继续步骤506,在步骤506中系统遍历每个节点以查看其是否被选中。如在步骤540中看到的,如果已经到达最后一个节点,则该处理结束。如果分析的节点(nodeB)被选中,则该处理继续到步骤508,在步骤508中系统检查并分析nodeB的每个输入端口(input_portD)。接下来,在步骤510中,系统获取驱动input_portD的源节点(sourceC)。在步骤512中,如果sourceC已经被选中在与nodeB相同的组中,则系统返回到步骤506以分析下一个节点。如果sourceC没有被选中在与nodeB相同的组中,则系统继续到步骤514并将sourceC与nodeB断开。在步骤516中,系统检查entityA是否已经创建input_portD用于连接到sourceC。如果没有,则在步骤518中创建新输入端口,因为当nodeB与sourceC断开时输入端口已经被移走。在步骤520中系统将input_portD连接到sourceC。
在分析了每个节点的输入端口之后,接着系统转到对输出端口的分析。在步骤522中通过检查nodeB的所有输出端口(output_portF)开始分析。在步骤524中,系统搜索由output_portF驱动的所有目的节点(destE)。对于每个destE,在步骤526中系统检查其是否被选中在与nodeB相同的组中。如果是,则系统转至步骤524以分析下一个节点。如果destE没有被选中在与nodeB相同的组中,则在步骤528中将destE与nodeB断开。在断开之后,将nodeB连接到destE的输出端口没有了。因此,为了建立与destE的连接,必须为该实体创建新的输出端口。在步骤530中,系统检查entityA是否已经创建output_portF。如果没有,则在步骤532中创建output_portF。如果存在output_portF,则在步骤534中系统将output_portF连接到destE。
下述伪代码描述了根据一个实施例进行成组处理的流程。如果在伪代码和图12的处理流程500之间存在任何不一致,则应该以与下面伪代码中列出的方法一致的方式解释处理流程500及其相关描述。


图13示出了根据一个实施例解组处理的流程。解组处理600开始于步骤602并且继续到步骤604,在步骤604中系统分析被选择进行解组的每个实体(entityA)。如果系统不能找到被选择进行解组的任何实体,则在步骤640处理结束。对于每个实体,系统在步骤606中检查输入端口(input_portB)。对于实体的每个输入端口,系统在步骤608中搜索驱动input_portB的源节点(sourceC)并且在步骤610中搜索由input_portB驱动的所有子节点。在步骤612中,系统分析由input_portB驱动的每个子节点(childD)。在步骤614中将每个子节点与input_portB断开并且随后在步骤616中将该子节点连接到sourceC。
一旦系统已经遍历entityA的所有输入节点,接着系统将在步骤618中检查entityA的输出端口(output_portE)。接下来,在步骤620中,系统搜索驱动output_portE的子节点(childF)。在搜索子节点之后,系统在步骤622中搜索由output_portE驱动的目的节点(destG)。在步骤624中将每个destG与output_portE断开并且在步骤626中将该destG连接回childF。在分析了entityA的所有输出端口之后,系统继续到步骤630,在步骤630中移走entityA。接着系统返回到步骤604解组下一个实体。
下述伪代码描述了根据一个实施例解组处理的流程。如果在伪代码和图13的处理流程600之间存在任何不一致,则应该以与下面伪代码中列出的方法一致的方式解释处理流程600及其相关描述。


图14示出了根据一个实施例的拖放操作的流程。在该实施例中,将至少一个节点从旧实体中移走并加入新实体。该处理开始于步骤702并且继续到步骤704,在步骤704中分析被选择要从实体移走的每个节点(nodeA)。在步骤706中,系统检查nodeA的所有输入端口(input_portB)。对于每个input_portB,系统在步骤708中执行下述子步骤:
a)为旧实体创建映射的输出管脚(mapped_pinC);
b)为新实体创建映射的输入管脚(mapped_pinD);
c)为旧实体创建新输出端口并且将该新输出端口映射到mapped_pinC;
d)为新实体创建新输入端口并且将该新输入端口映射到mapped_pinD;
e)用新创建的输入端口和输出端口连接旧实体和新实体;
f)获取驱动input_portB的输出端口(output_portE);
g)将input_portB与output_portE断开;
h)将output_portE连接到mapped_pinC;以及
i)将input_portB连接到mapped_pinD。
在步骤708之后,接着系统在步骤710中确定output_portE是否是mapped_pinD的输出端口。如果不是,则处理返回到步骤706以分析nodeA的下一个输入端口。如果是,则系统在步骤712中确定output_portE是否具有任何扇出(fan-out)。如果output_portE不具有任何扇出,则在步骤714中将output_portE从旧实体中移走。如果output_portE具有扇出,则系统返回到步骤706。
在分析所有输入端口之后,系统在步骤716中分析nodeA的输出端口(output_portF)。对于每个output_portF,系统在步骤718中执行下述子步骤:
a)为旧实体创建映射的输入管脚(mapped_pinG);
b)为新实体创建映射的输出管脚(mapped_pinH);
c)为旧实体创建新输入端口并且将该新输入端口映射到mapped_pinG;
d)为新实体创建新输出端口并且将该新输出端口映射到mapped_pinH;
e)用新创建的输入端口和输出端口连接旧实体和新实体;以及
f)获取由output_portF驱动的输入端口。
在步骤720中,系统继续分析由output_portF驱动的每个输入端口(input_portJ)。在步骤722中,系统对每个input_portJ执行下述子步骤:
a)将input_portJ与output_portF断开;
b)将input_portJ连接到mapped_pinG;以及
c)将output_portF连接到mapped_pinH。
在重连每个选中的nodeA的所有连接之后,接着系统在步骤730中将nodeA从旧实体中移走并且将nodeA加入到新实体中。系统对每个选中的节点重复步骤706至步骤730直到已经遍历所有节点,最后在步骤740处理结束。
下述伪代码描述了根据一个实施例的拖放操作的流程。如果在伪代码和图14的处理流程700之间存在任何不一致,则应该以与下面伪代码中列出的方法一致的方式解释处理流程700及其相关描述。


形成本发明的实施例的部分的、本文描述的任一操作都是有用的机器操作。本发明的实施例也涉及用于执行这些操作的设备或装置。装置可以是为所需目的而专门构建,或者可以是由存储在计算机中的计算机程序选择性地激活或配置的通用计算机。特别地,各种通用机器可以与根据本文的教导所撰写的计算机程序一起来使用,或更为方便的是构建更专用的装置来执行所需的操作。
本发明也可以体现为计算机可读介质上的计算机可读代码。计算机可读介质是可以是存储随后可由计算机系统读取的数据的任何数据存储设备。计算机可读介质的示例包括硬盘驱动器、网络附加存储(NAS)、只读存储器(ROM)、随机访问存取存储器(RAM)、只读式光盘(CD-ROM)、可写光盘(CD-R)、可重写光盘(CD-RW)、数字多功能光盘(DVD)、闪存或其他非易失性数据存储设备、磁带和其他光学和非光学数据存储设备。也可以将计算机可读介质分布在耦合网络的计算机系统上,使得以分布方式存储和/或执行计算机可读代码。
图15示出了根据一个实施例的计算机系统。计算机系统1000典型地包括监视器1100、计算机1200、键盘1300、图形输入设备1400和网络接口1500。图形输入设备1400包括计算机鼠标、轨迹球、触摸板(track pad)、图形输入板(graphicstablet)、触摸屏和/或允许用户创建或选择出现在监视器1100上的图形、物体、图表和/或文本的其他有线或无线输入设备。网络接口1500的实施例典型地提供与电子通信网络的有线或无线通信,所述电子通信网络例如局域网、广域网(例如互联网)和/或虚拟网络(例如虚拟专用网络(VPN))。
计算机1200典型地包括多个部件,例如一个或多个通用处理器1600和例如RAM 1700、磁盘驱动器1800的存储设备,以及将以上部件互连的系统总线1900。RAM 1700和磁盘驱动器1800是用于存储数据、音频/视频文件、计算机程序、Java程序解释器或编译器、虚拟机和本文描述的本发明实施例的真实介质的示例。计算机1200的其他实施例可以包括用于配置、操作、测试和与可编程设备通信的专用输入、输出和通信子系统。其他类型的有形介质包括软盘、移动硬盘、光存储介质(例如只读式数字多功能光盘(DVD-ROM)、CD-ROM和条形码)、非易失性存储设备(例如闪存、ROM和备有电池的易失性存储器)和连到网络的存储设备。
虽然针对所说明的实施例已经特别地描述了本发明,但是应理解,可以基于本公开进行各种改变、修改和改编,并且意在使这些改变、修改和改编在本发明的范围内。虽然结合当前被认为是最实用和最优选的实施例已经描述了本发明,但是应明白,本发明不限于所公开的实施例,相反,而是意在覆盖包括在所附权利要求的范围内的各种修改和等效布置。

集成电路设计的原理图的交互式简化.pdf_第1页
第1页 / 共33页
集成电路设计的原理图的交互式简化.pdf_第2页
第2页 / 共33页
集成电路设计的原理图的交互式简化.pdf_第3页
第3页 / 共33页
点击查看更多>>
资源描述

《集成电路设计的原理图的交互式简化.pdf》由会员分享,可在线阅读,更多相关《集成电路设计的原理图的交互式简化.pdf(33页珍藏版)》请在专利查询网上搜索。

交互式成组工具提供通过将没有被列为感兴趣的电路元件成组为任何大小的实体来简化集成电路(IC)设计的电路图的灵活性。可以将各种类型和功能的电路元件(包括端口和管脚)组合起来成为同一实体而不修改底层设计逻辑和连接关系。通过成组并且隐藏不必要的细节,所述工具降低了电路图中的凌乱程度并且极大地方便了遍历、调试和分析电路图的处理。用户可以动态地选定成组电路图上的电路元件而不经过任何编译或综合处理。用户也可以。

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

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


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