Ic设计数据的比较与合并的制作方法
【专利说明】IC设计数据的比较与合并
[0001]相关申请
[0002]本申请是于2013年9月25日提交的美国专利申请14/036,734的继续申请,并且要求其优先权。在此通过引用的方式将上面的申请的全部示教并入本文。
【背景技术】
[0003]随着任何数据随时间而发展,潜在地由工作于单独的副本上的多个人生成了数据的多个版本(例如,数据文件、数据库、数据存储)。在各种时刻,期望比较数据的不同版本,并且潜在地将由不同的编辑工作做出的改变合并到数据的每一个版本中。
[0004]对于以一个或多个“文本”文件形式的数据(例如,简单的文本文档),已经开发了许多工具,它们使用各种算法用于识别做出了什么改变,并且用于提供接口以组合这些改变。所有这些算法一般都通过识别相同的或不同的文件“区域”来进行操作。这些“区域”一般采取文件的一行或多行的形式。一旦识别出差异,合并通常涉及从“结果”文件简单地增加和/或删除行,以更好地匹配源文件。
[0005]在集成电路(IC)设计环境中,IC数据通常不采取简单的“文本”文件的形式,而是代替为以“数据库”的形式,例如,一个或多个二进制文件、数据存储、数据库或者其它类型的IC数据。IC数据可以包括具有各种不同“属性”的(非常)大量的各种类型的“对象”。从其本质而言,与“文本”文件截然不同的是,IC设计通常是是三维的,其具有多个层(例如,金属1、金属2和金属3),这进一步增加了需要被存储的“对象”的数量。用户一般通过使用图形设计工具来与这样的IC数据进行交互。因此,需要用于管理用于IC的这样的复杂数据的方法,所述方法超出了标准文本文件数据管理。
【发明内容】
[0006]非常有挑战的是,将用于对文本文件进行比较以及合并的现有的解决方案应用到数据库(或数据存储、通用的数据存储、一个或多个二进制文件、数据库或其它类型的文件或数据存储装置)中,至少有以下四个主要原因:
[0007]第一,对“行”进行简单的“线性”比较不能转换为数据库,其中“对象”不一定以连续的方式进行“排列”。即使数据库对象具有位置坐标,但是也倾向于不基于此来进行比较,因为对于对象而言改变位置是非常普遍的,并且这需要被正确地识别出(而不是例如,删除对象,并且添加新的对象。)
[0008]第二,在数据库中可以存在“相同”但是“修改”的对象。以相同的方式,文件的两行可能看来是相同的,但是具有不同的一个或两个特性,在数据库中,可以存在相同的,但是一些“属性”不同的两个对象。然而在文本比较中,这样的情况可能会被处理成整行都是不同的,在数据库中这样做将会非常低效。
[0009]第三,用于比较的设计数据库的大小通常比文本文件大几个数量级。例如,然而可以“合理”期望的是比较/合并几千行的文本文件,常见的是比较/合并包括成百上千个对象的数据库。
[0010]第四,需要识别数据库的两个对象中的“差异”的步骤,以及需要“合并”这些差异的步骤,与简单地比较文本的两行并且利用另一行来替换一行相比更加复杂得多。实际上,对于数据库而言,可能存在需要以不同的方式来进行处理的多种类型的对象。
[0011]综上所述,非常挑战的是,将在数据库中找到的差异作为文本的简单行来呈现给用户。需要替代的方法来描述数据的改变,并且允许用户对其可视化,并且然后允许用户查看任何“合并”的结果。
[0012]鉴于对替代的方法的需要,下面所提出的方法包括至少以下四个元素(以及要遵循的附加的元素),其克服了呈现数据库差异的上面提到的挑战。
[0013]第一,数据库被划分为分区。这给出了用于比较的对象的更小的集合,并且因此允许用于比较的更大的数据集。
[0014]第二,基于对象的某个方面,数据库中的对象被分配了“关键字”。然后对两个数据库中的关键字进行比较以识别出“相同”的对象。这允许对是否添加/删除或只是改变了项目进行准确的识别。然后可以对具有同一关键字的两个对象进行更详细的检查以识别出它们是否被“修改”。
[0015]第三,然后将两个数据库之间的差异呈现给用户,或者作为差异的文本摘要,或者通过突出显示存在差异的数据库的图形表示。这使得用户容易查看差异,并且检查差异对数据库的其余的上下文的影响。
[0016]第四,然后可以一个接一个地或成组地选择一个或多个差异,并且可以修改两个数据库中的一个,使得它与另一个数据库相匹配(即,可以合并所选择的改变。)
[0017]可以由一个或多个用户对整个过程(比较与合并二者)进行定制,以便满足所述一个或多个用户使用的数据库的任何具体要求或具体方面。
[0018]所提出的方法包括用于管理集成电路(IC)设计信息的计算机实现的方法。该计算机实现的方法可以呈现第一数据存储中的主体IC设计信息的第一版本,并且呈现第二数据存储中的主体IC设计信息的第二版本。该方法可以将第一数据存储划分为多个分区,每一个分区保留了呈现第一版本中的主体IC设计信息的部分的相应的对象。该方法可以将第二数据存储划分为与第一数据存储的多个分区相对应的分区,第二数据存储的每一个分区保留了呈现第二版本中的主体IC设计信息的部分的相应的对象。
[0019]对于每一个分区,该方法可以根据对象的方面来将关键字分配给分区中的每一个对象,使得所述对关键字的分配引起下面的动作:(a)可以将同一关键字分配给(i)第一数据存储的分区中的主体对象以及Qi)第二数据存储的相对应的分区中的对象,该对象是与第一数据存储中的主体对象相对应的对象,并且引起(b)将相应的关键字分配给没有被分配关键字的每一个对象。
[0020]对于每一个给定的分区,该方法可以通过基于第一数据存储的分区中的对象的关键字,和第二数据存储的相对应的分区中的对象的关键字来执行第一比较,从而确定是否添加、删除或修改了该分区的对象。对于第一数据存储中每一个给定的对象,以及第二数据存储中共享同一关键字的其相对应的对象,该方法可以执行确定了一个或多个对象差异的第二比较。基于第一和第二比较的结果,该方法可以呈现第一数据存储中主体IC设计信息的第一版本与第二数据存储中主体IC设计信息的第二版本之间的一个或多个差异。
[0021]所述计算机实现的方法可以使终端用户能够选择所述一个或多个差异中的至少一个的差异集,并且可以使终端用户能够将所选择的差异集应用于第二数据存储中的主体IC设计信息的第二版本。所述计算机实现的方法可以包括以文本格式将所述一个或多个差异呈现给终端用户。所述计算机实现的方法可以包括通过在图形表示上突出显示每一个差异来将所述一个或多个差异呈现给终端用户。所述计算机实现的方法可以将关键字分配给每一个对象,包括基于对象的位置信息和属性信息的任何组合来分配关键字。
[0022]所述计算机实现的方法可以呈现祖先数据存储中的主体IC设计信息的祖先版本,第一版本和第二版本都来自该祖先版本。所述计算机实现的方法可以进一步包括将祖先数据存储划分为与第一数据存储和第二数据存储的多个分区相对应的分区,祖先数据存储中的每一个分区都保留了呈现祖先版本中的IC设计信息的部分的相应的对象。
[0023]对于祖先数据存储中的每一个分区,该方法可以根据对象的方面来将关键字分配给每一个对象,使得对于祖先数据存储的每一个分区:(I)将同一关键字分配给祖先数据存储的分区中给定的对象以及第一数据存储和第二数据存储的相对应的分区中的相对应的对象,所述相对应的对象与祖先数据存储中给定的对象相对应,以及(2)将相应的关键字分配给祖先数据存储的分区中剩余的对象。
[0024]对于每一个给定的分区,该方法可以通过执行第三比较,来确定是否添加、删除或修改了分区的对象。第三比较可以基于第一和第二数据存储的分区中的对象的关键字以及祖先数据存储的相对应的分区中的对象的关键字。对于第一和第二数据存储中的每一个给定的对象,以及在祖先数据存储中共享同一关键字的其相对应的对象,该方法可以执行确定了一个或多个相应的对象差异的第四比较。
[0025]基于第三和第四比较的结果,该方法可以呈现祖先数据存储中主体IC设计信息的祖先版本之间的至少一个差异。该方法还可以呈现第一数据存储中主体IC设计信息的第一版本和第二数据存储中主体IC设计信息的第二版本中的至少一个。该方法可以使终端用户能够选择所述至少一个差异中的至少一个的相应的差异集。该方法可以使终端用户能够将所选择的相应的差异集应用于第二数据存储中主体IC设计信息的第二版本。
[0026]所提出的方法包括用于管理集成电路(IC)设计信息的计算机实现的系统。所述计算机实现的系统可以包括数据模块,所述数据模块被配置为呈现第一数据存储中主体IC设计信息的第一版本。所述数据模块可以进一步被配置为呈现第二数据存储中主体IC设计信息的第二版本。划分模块可以被配置为将第一数据存储划分为多个分区,每一个分区都保留了呈现第一版本中主体IC设计信息的部分的相应的对象。划分模块可以进一步被配置为将第二数据存储划分为与第一数据存储的多个分区相对应的分区。第二数据存储的每一个分区可以保留呈现第二版本中主体IC设计信息的部分的相应的对象。
[0027]控制模块可以被配置为对于每一个分区,根据对象的方面来将关键字分配给分区中的每一个对象,使得通过控制模块对关键字的分配引起:(a)通过控制模块来将同一关键字分配给,(i)第一数据存储的分区中的主体对象,以及(ii)第二数据存储的相对应的分区中的对象,所述对象是与第一数据存储中的主体对象相对应的对象,并且引起(b)通过控制模块来将相应的关键字分配给没有通过控制模块分配关键字的每一个对象。
[0028]控制模块还可以进一步被配置为,对于每一个给定的分区,通过基于第一数据存储的分区中的对象的关键字和第二数据存储的相对应的分区中的对象的关键字来执行第一比较,从而确定是否添加、删除或修改了分区的对象。控制模块可以进一步被配置为对于第一数据存储中每一个给定的对象以及在第二数据存储中共享同一关键字的其相对应的对象,来执行第二比较,所述第二比较确定一个或多个对象差异。
[0029]所述系统可以包括显示模块,其被配置为基于所述第一和第二比较的结果,来呈现第一数据存储中主体IC设计信息的第一版本和第二数据存储中主体IC设计信息的第二版本之间的一个或多个差异。
[0030]控制模块可以进一步被配置为使终端用户能够选择所述一个或多个差异中的至少一个的差异集。控制模块可以进一步被配置为使终端用户能够将所选择的差异集应用于第二数据存储中主体IC设计信息的第二版本。
[003