CN104572800A - Ic设计数据的比较与合并 - Google Patents

Ic设计数据的比较与合并 Download PDF

Info

Publication number
CN104572800A
CN104572800A CN201410493949.XA CN201410493949A CN104572800A CN 104572800 A CN104572800 A CN 104572800A CN 201410493949 A CN201410493949 A CN 201410493949A CN 104572800 A CN104572800 A CN 104572800A
Authority
CN
China
Prior art keywords
subregion
data
design information
data store
main body
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410493949.XA
Other languages
English (en)
Other versions
CN104572800B (zh
Inventor
I·多宾森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Reach Cable System U S Co
Dassault Systemes Americas Corp
Original Assignee
Reach Cable System U S Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Reach Cable System U S Co filed Critical Reach Cable System U S Co
Publication of CN104572800A publication Critical patent/CN104572800A/zh
Application granted granted Critical
Publication of CN104572800B publication Critical patent/CN104572800B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1873Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • G06F16/355Class or cluster creation or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/02CAD in a network environment, e.g. collaborative CAD or distributed simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/12Symbolic schematics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

所提出的方法包括用于管理用于多个数据存储的集成电路(IC)设计信息的方法和系统。每一个数据存储都被分成分区,允许对更大的数据集进行比较。将关键字分配给每一个数据集中的对象,以便确定在多个数据存储之间是否添加、删除或修改了对象,并且还确定了对象差异。用户可以使用基于图形或文本的方法,来比较和合并数据存储之间的差异。所提出的方法对于大型数据库而言是非常高效而准确的。所提出的方法允许用户容易地可视化复杂数据库中的差异,并且容易地合并所期望的改变。

Description

IC设计数据的比较与合并
相关申请
本申请是于2013年9月25日提交的美国专利申请14/036,734的继续申请,并且要求其优先权。在此通过引用的方式将上面的申请的全部示教并入本文。
背景技术
随着任何数据随时间而发展,潜在地由工作于单独的副本上的多个人生成了数据的多个版本(例如,数据文件、数据库、数据存储)。在各种时刻,期望比较数据的不同版本,并且潜在地将由不同的编辑工作做出的改变合并到数据的每一个版本中。
对于以一个或多个“文本”文件形式的数据(例如,简单的文本文档),已经开发了许多工具,它们使用各种算法用于识别做出了什么改变,并且用于提供接口以组合这些改变。所有这些算法一般都通过识别相同的或不同的文件“区域”来进行操作。这些“区域”一般采取文件的一行或多行的形式。一旦识别出差异,合并通常涉及从“结果”文件简单地增加和/或删除行,以更好地匹配源文件。
在集成电路(IC)设计环境中,IC数据通常不采取简单的“文本”文件的形式,而是代替为以“数据库”的形式,例如,一个或多个二进制文件、数据存储、数据库或者其它类型的IC数据。IC数据可以包括具有各种不同“属性”的(非常)大量的各种类型的“对象”。从其本质而言,与“文本”文件截然不同的是,IC设计通常是是三维的,其具有多个层(例如,金属1、金属2和金属3),这进一步增加了需要被存储的“对象”的数量。用户一般通过使用图形设计工具来与这样的IC数据进行交互。因此,需要用于管理用于IC的这样的复杂数据的方法,所述方法超出了标准文本文件数据管理。
发明内容
非常有挑战的是,将用于对文本文件进行比较以及合并的现有的解决方案应用到数据库(或数据存储、通用的数据存储、一个或多个二进制文件、数据库或其它类型的文件或数据存储装置)中,至少有以下四个主要原因:
第一,对“行”进行简单的“线性”比较不能转换为数据库,其中“对象”不一定以连续的方式进行“排列”。即使数据库对象具有位置坐标,但是也倾向于不基于此来进行比较,因为对于对象而言改变位置是非常普遍的,并且这需要被正确地识别出(而不是例如,删除对象,并且添加新的对象。)
第二,在数据库中可以存在“相同”但是“修改”的对象。以相同的方式,文件的两行可能看来是相同的,但是具有不同的一个或两个特性,在数据库中,可以存在相同的,但是一些“属性”不同的两个对象。然而在文本比较中,这样的情况可能会被处理成整行都是不同的,在数据库中这样做将会非常低效。
第三,用于比较的设计数据库的大小通常比文本文件大几个数量级。例如,然而可以“合理”期望的是比较/合并几千行的文本文件,常见的是比较/合并包括成百上千个对象的数据库。
第四,需要识别数据库的两个对象中的“差异”的步骤,以及需要“合并”这些差异的步骤,与简单地比较文本的两行并且利用另一行来替换一行相比更加复杂得多。实际上,对于数据库而言,可能存在需要以不同的方式来进行处理的多种类型的对象。
综上所述,非常挑战的是,将在数据库中找到的差异作为文本的简单行来呈现给用户。需要替代的方法来描述数据的改变,并且允许用户对其可视化,并且然后允许用户查看任何“合并”的结果。
鉴于对替代的方法的需要,下面所提出的方法包括至少以下四个元素(以及要遵循的附加的元素),其克服了呈现数据库差异的上面提到的挑战。
第一,数据库被划分为分区。这给出了用于比较的对象的更小的集合,并且因此允许用于比较的更大的数据集。
第二,基于对象的某个方面,数据库中的对象被分配了“关键字”。然后对两个数据库中的关键字进行比较以识别出“相同”的对象。这允许对是否添加/删除或只是改变了项目进行准确的识别。然后可以对具有同一关键字的两个对象进行更详细的检查以识别出它们是否被“修改”。
第三,然后将两个数据库之间的差异呈现给用户,或者作为差异的文本摘要,或者通过突出显示存在差异的数据库的图形表示。这使得用户容易查看差异,并且检查差异对数据库的其余的上下文的影响。
第四,然后可以一个接一个地或成组地选择一个或多个差异,并且可以修改两个数据库中的一个,使得它与另一个数据库相匹配(即,可以合并所选择的改变。)
可以由一个或多个用户对整个过程(比较与合并二者)进行定制,以便满足所述一个或多个用户使用的数据库的任何具体要求或具体方面。
所提出的方法包括用于管理集成电路(IC)设计信息的计算机实现的方法。该计算机实现的方法可以呈现第一数据存储中的主体IC设计信息的第一版本,并且呈现第二数据存储中的主体IC设计信息的第二版本。该方法可以将第一数据存储划分为多个分区,每一个分区保留了呈现第一版本中的主体IC设计信息的部分的相应的对象。该方法可以将第二数据存储划分为与第一数据存储的多个分区相对应的分区,第二数据存储的每一个分区保留了呈现第二版本中的主体IC设计信息的部分的相应的对象。
对于每一个分区,该方法可以根据对象的方面来将关键字分配给分区中的每一个对象,使得所述对关键字的分配引起下面的动作:(a)可以将同一关键字分配给(i)第一数据存储的分区中的主体对象以及(ii)第二数据存储的相对应的分区中的对象,该对象是与第一数据存储中的主体对象相对应的对象,并且引起(b)将相应的关键字分配给没有被分配关键字的每一个对象。
对于每一个给定的分区,该方法可以通过基于第一数据存储的分区中的对象的关键字,和第二数据存储的相对应的分区中的对象的关键字来执行第一比较,从而确定是否添加、删除或修改了该分区的对象。对于第一数据存储中每一个给定的对象,以及第二数据存储中共享同一关键字的其相对应的对象,该方法可以执行确定了一个或多个对象差异的第二比较。 基于第一和第二比较的结果,该方法可以呈现第一数据存储中主体IC设计信息的第一版本与第二数据存储中主体IC设计信息的第二版本之间的一个或多个差异。
所述计算机实现的方法可以使终端用户能够选择所述一个或多个差异中的至少一个的差异集,并且可以使终端用户能够将所选择的差异集应用于第二数据存储中的主体IC设计信息的第二版本。所述计算机实现的方法可以包括以文本格式将所述一个或多个差异呈现给终端用户。所述计算机实现的方法可以包括通过在图形表示上突出显示每一个差异来将所述一个或多个差异呈现给终端用户。所述计算机实现的方法可以将关键字分配给每一个对象,包括基于对象的位置信息和属性信息的任何组合来分配关键字。
所述计算机实现的方法可以呈现祖先数据存储中的主体IC设计信息的祖先版本,第一版本和第二版本都来自该祖先版本。所述计算机实现的方法可以进一步包括将祖先数据存储划分为与第一数据存储和第二数据存储的多个分区相对应的分区,祖先数据存储中的每一个分区都保留了呈现祖先版本中的IC设计信息的部分的相应的对象。
对于祖先数据存储中的每一个分区,该方法可以根据对象的方面来将关键字分配给每一个对象,使得对于祖先数据存储的每一个分区:(1)将同一关键字分配给祖先数据存储的分区中给定的对象以及第一数据存储和第二数据存储的相对应的分区中的相对应的对象,所述相对应的对象与祖先数据存储中给定的对象相对应,以及(2)将相应的关键字分配给祖先数据存储的分区中剩余的对象。
对于每一个给定的分区,该方法可以通过执行第三比较,来确定是否添加、删除或修改了分区的对象。第三比较可以基于第一和第二数据存储的分区中的对象的关键字以及祖先数据存储的相对应的分区中的对象的关键字。对于第一和第二数据存储中的每一个给定的对象,以及在祖先数据存储中共享同一关键字的其相对应的对象,该方法可以执行确定了一个或多个相应的对象差异的第四比较。
基于第三和第四比较的结果,该方法可以呈现祖先数据存储中主体IC设计信息的祖先版本之间的至少一个差异。该方法还可以呈现第一数据存 储中主体IC设计信息的第一版本和第二数据存储中主体IC设计信息的第二版本中的至少一个。该方法可以使终端用户能够选择所述至少一个差异中的至少一个的相应的差异集。该方法可以使终端用户能够将所选择的相应的差异集应用于第二数据存储中主体IC设计信息的第二版本。
所提出的方法包括用于管理集成电路(IC)设计信息的计算机实现的系统。所述计算机实现的系统可以包括数据模块,所述数据模块被配置为呈现第一数据存储中主体IC设计信息的第一版本。所述数据模块可以进一步被配置为呈现第二数据存储中主体IC设计信息的第二版本。划分模块可以被配置为将第一数据存储划分为多个分区,每一个分区都保留了呈现第一版本中主体IC设计信息的部分的相应的对象。划分模块可以进一步被配置为将第二数据存储划分为与第一数据存储的多个分区相对应的分区。第二数据存储的每一个分区可以保留呈现第二版本中主体IC设计信息的部分的相应的对象。
控制模块可以被配置为对于每一个分区,根据对象的方面来将关键字分配给分区中的每一个对象,使得通过控制模块对关键字的分配引起:(a)通过控制模块来将同一关键字分配给,(i)第一数据存储的分区中的主体对象,以及(ii)第二数据存储的相对应的分区中的对象,所述对象是与第一数据存储中的主体对象相对应的对象,并且引起(b)通过控制模块来将相应的关键字分配给没有通过控制模块分配关键字的每一个对象。
控制模块还可以进一步被配置为,对于每一个给定的分区,通过基于第一数据存储的分区中的对象的关键字和第二数据存储的相对应的分区中的对象的关键字来执行第一比较,从而确定是否添加、删除或修改了分区的对象。控制模块可以进一步被配置为对于第一数据存储中每一个给定的对象以及在第二数据存储中共享同一关键字的其相对应的对象,来执行第二比较,所述第二比较确定一个或多个对象差异。
所述系统可以包括显示模块,其被配置为基于所述第一和第二比较的结果,来呈现第一数据存储中主体IC设计信息的第一版本和第二数据存储中主体IC设计信息的第二版本之间的一个或多个差异。
控制模块可以进一步被配置为使终端用户能够选择所述一个或多个差异中的至少一个的差异集。控制模块可以进一步被配置为使终端用户能够 将所选择的差异集应用于第二数据存储中主体IC设计信息的第二版本。
显示模块可以进一步被配置为以文本格式将一个或多个差异呈现给终端用户。显示模块可以进一步被配置为通过在图形表示上突出显示每一个差异来将一个或多个差异呈现给终端用户。控制模块可以进一步被配置为将关键字分配给每一个对象,控制模块基于对象的位置信息和属性信息的任何组合来分配关键字。
数据模块可以进一步被配置为在祖先数据存储中呈现主体IC设计信息的祖先版本。第一版本和第二版本可以来自祖先版本。
划分模块可以进一步被配置为将祖先数据存储划分为与第一数据存储和第二数据存储的多个分区相对应的分区,祖先数据存储的每一个分区保留了呈现祖先版本中IC设计信息的部分的相应的对象。
控制模块可以进一步被配置为对于祖先数据存储中的每一个分区,根据对象的方面,来将关键字分配给每一个对象,使得对于祖先数据存储的每一个分区:(1)通过控制模块,将同一关键字分配给祖先数据存储的分区中给定的对象,以及第一数据存储和第二数据存储的相对应的分区中相对应的对象,所述相对应的对象与祖先数据存储中给定的对象相对应,以及(2)通过控制模块将相应的关键字分配给祖先数据存储的分区中剩余的对象。
控制模块可以进一步被配置为对于每一个给定的分区,通过执行第三比较,确定是否增加、删除或者修改了分区的对象。第三比较可以基于第一和第二数据存储的分区中对象的关键字以及祖先数据存储的相对应的分区中对象的关键字。控制模块可以进一步被配置为对于第一和第二数据存储中每一个给定的对象,以及祖先数据存储中共享同一关键字的其相对应的对象,来执行第四比较。通过第四比较,控制模块可以确定一个或多个相应的对象差异。
显示模块可以进一步被配置为基于第三和第四比较的结果,呈现祖先数据存储中主体IC设计信息的祖先版本之间的至少一个差异。显示模块还可以呈现第一数据存储中的主体IC设计信息的第一版本和第二数据存储中的主体IC设计信息的第二版本中的至少一个。
控制模块可以进一步被配置为使终端用户能够选择所述至少一个差异 中的至少一个的相应的差异集。控制模块可以进一步被配置为使终端用户能够将所选择的相应的差异集应用于第二数据存储中的主体IC设计信息的第二版本。
所提出的方法包括具有存储于其上的指令的序列的非暂时性计算机可读介质。当由耦合到装置的处理器加载并且执行所述指令时,可以使该装置呈现第一数据存储中主体IC设计信息的第一版本并且呈现第二数据存储中主体IC设计信息的第二版本。所述指令可以使该装置将第一数据存储划分为多个分区。第一数据存储的每一个分区都可以保留呈现第一版本中主体IC设计信息的部分的相应的对象。所述指令可以使该装置将第二数据存储划分为与第一数据存储的多个分区相对应的分区。第二数据存储的每一个分区都可以保留呈现第二版本中主体IC设计信息的部分的相应的对象。
对于每一个分区,该装置可以根据对象的方面,将关键字分配给分区中的每一个对象,使得对关键字的分配引起:(a)将同一关键字分配给(i)第一数据存储的分区中的主体对象,以及(ii)第二数据存储的相对应的分区中的对象,所述对象是与第一数据存储的主体对象相对应的对象,并且引起(b)将相应的关键字分配给没有被分配关键字的每一个对象。
对于每一个给定的分区,所述装置可以通过执行第一比较,确定是否添加、删除或修改了该分区的对象。所述比较可以基于第一数据存储的分区中对象的关键字,和第二数据存储的相对应的分区中的对象的关键字。对于第一数据存储中每一个给定的对象和第二数据存储中共享同一关键字的其相对应的对象,所述装置可以执行第二比较。第二比较可以确定一个或多个对象差异。所述装置可以基于第一和第二比较的结果,呈现第一数据存储的主体IC设计信息的第一版本和第二数据存储的主体IC设计信息的第二版本之间的一个或多个差异。
所述装置可以使终端用户能够选择所述一个或多个差异中的至少一个的差异集。所述装置还可以使终端用户能够将所选择的差异集应用于第二数据存储的主体IC设计信息的第二版本。
所述装置可以以文本格式将一个或多个差异呈现给终端用户。所述装置可以通过在图形表示上突出显示每一个差异来将一个或多个差异呈现给终端用户。所述装置可以将关键字分配给每一个对象,所述装置基于对象 的位置信息和属性信息的任何组合来分配关键字。所述装置可以呈现祖先数据存储的主体IC设计信息的祖先版本,第一和第二版本都来自祖先版本。所述装置可以将祖先数据存储划分为与第一数据存储和第二数据存储的多个分区相对应的分区。祖先数据存储的每一个分区都可以保留呈现祖先版本中的IC设计信息的部分的相应的对象。
对于祖先数据存储中的每一个分区,所述装置可以根据对象的方面来将关键字分配给每一个对象,使得对于祖先数据存储的每一个分区:(1)将同一关键字分配给祖先数据存储的分区中给定的对象,以及第一数据存储和第二数据存储的相对应的分区中相对应的对象,所述相对应的对象与祖先数据存储中给定的对象相对应,并且(2)将相应的关键字分配给祖先数据存储的分区中剩余的对象。
对于每一个给定的分区,所述装置可以通过执行第三比较,来确定是否添加、删除或修改了分区的对象。第三比较可以基于第一和第二数据存储的分区中对象的关键字和祖先数据存储的相对应的分区中对象的关键字。对于第一和第二数据存储中每一个给定的对象,以及祖先数据存储中共享同一关键字的其相对应的对象,所述装置可以执行第四比较。第四比较可以确定一个或多个相应的对象差异。
基于第三和第四比较的结果,所述装置可以呈现祖先数据存储中主体IC设计信息的祖先版本之间的至少一个差异。所述装置还可以呈现第一数据存储的主体IC设计信息的第一版本和第二数据存储的主体IC设计信息的第二版本中的至少一个。
所述装置可以使终端用户能够选择所述至少一个差异中的至少一个的相应的差异集。所述装置可以使终端用户能够将所选择的相应的差异集应用于第二数据存储的主体IC设计信息的第二版本。
本发明的优势在于,它对于大型数据库而言是非常高效的。本发明的另一个优势在于它提供了可定制的程度的准确性。本发明的另一个优势是,它允许用户更容易地可视化复杂数据库中的差异并且仅合并需要的这些改变。
附图说明
根据以下对本发明的示例实施例的更具体的描述,前文所述将是显而易见的,正如附图中所示出的,贯穿不同的视图,所述附图中相同的附图标记指代相同的部件。所述附图不一定按照比例绘制,代替为将重点放在示出本发明的实施例。
图1示出了对文本文件的差异的比较。
图2A示出了具有简单的示意图的第一版本的本发明的实施例。
图2B示出了具有图2A的示意图的第二版本的本发明的实施例。
图2C示出了本发明的一个实施例,其示出了对图2B的示意图进行分区的形式。
图2D示出了本发明的另一个实施例,其示出了根据图2B的示意图进行分区。
图3A示出了本发明的基于文本的摘要报告。
图3B示出了本发明的基于文本的摘要报告,其突出显示了图2A和图2B之间的差异。
图3C示出了本发明的图形视图,其突出显示了图2A和图2B之间的差异。
图4A示出了本发明的图形用户界面(GUI)。
图4B示出了执行过滤的本发明的GUI。
图4C示出了执行合并的本发明的GUI。
图5A示出了本发明的步骤的高级流程图。
图5B示出了参考图5A的本发明的关键字分配算法的高级流程图。
图5C示出了本发明的三向比较与合并的高级流程图。
图5D示出了参考图5C的本发明的关键字分配算法的高级流程图。
图6示出了在其中可以实现本发明的实施例的计算机网络或类似的数字处理环境。
图7是图6的计算机网络中的计算机的内部结构的框图。
具体实施方式
以下是本发明的示例实施例的描述。
如前文所述,现有的算法一般通过识别相同或者不同的文本文件的区域来进行操作。请参考图1中对比较文本文件差异的说明。如图1所示,文本比较区域一般采取文件的一行或者多行的形式。一旦识别出文件差异101,合并通常涉及从结果文件简单地添加和/或删除行,以更好地匹配源文件102、103。
与仅仅处理文本文件不同的是,所提出的方法提供了用于比较并且随后合并设计数据库之间的数据的方法和系统。
除了处理文本文件之外,现有的方法还处理IC设计数据库,但现有的方法是有缺陷的,因为它们不能比较和合并数据库(例如,数据存储、二进制数据文件、数据库、或其它类型的IC设计数据)。这样的现有的IC数据库方法也不能处理两向或三向数据比较,并且合并所找到的差异。这样的现有的IC数据库方法可以受益于本发明的应用,本发明以用户友好的方式来处理比较与合并。
本发明可以使用现有的编程语言来实现并且可以被添加到(并且可兼容于)现有的IC数据库设计框架。例如,本发明可以使用SKILL扩展编程语言来实现,尽管本发明并不限于使用SKILL扩展编程语言,并且可以使用其它编程语言来实现。同样,本发明可以被添加到使用“Open Access”(也被称为“OpenAccess”或“Open Access Coalition”)数据库格式的现有的设计框架,但是本发明不限于此,并且可以被添加到使用其它数据库格式的其它类型的框架。
比较
为了比较可能非常大的两个数据库,倾向于考虑多个因素。一个这样的因素是如何将数据库划分成可管理的分区。另一个这样的因素是如何识别两个数据库中“相同”的对象,或已经被添加和/或删除的对象。另一个这样的因素是,当对象是“相同的”时,如何识别对象是否具有一致的属性,以及对象属性的差异是什么。
例如,第一数据库中的对象可以是第二数据库中的“相同”对象。然而,与第一数据库中相同的(相对应的)对象的位置相比,所述第二数据 库中的对象可以被移动到不同的位置。由于对象被移动了,所以与第一数据库中相同的(相对应的)对象的位置/定位属性相比,所述第二数据库中的对象可以具有不同的(非一致的)位置/定位属性。
请参考图2A和2B,其示出了本发明的示例实施例。图2A示出了具有简单的示意图的第一版本201a的本发明的实施例。图2B示出了具有图2A的示意图的第二版本201b的本发明的实施例。
参考图2A至图5D,由本发明的处理器、装置,或计算机系统1000来执行操作,其中被指示为由用户执行的除外。
图2A至图2B的示意图看起来是相似的,但图2A和图2B之间存在较小的修改。首先,在图2B中,标签202a将示意性元件201b识别为nand2(双输入与非门),并且相对于在图2A的示意图201a中的其原始位置290a,所述标签202a由用户移动到了新位置290b。在图2B中的标签202a与图2A中的标签202a是相同的,只是现在位于图2B的新位置290b。第二,为左上方的P沟道场效应晶体管(PFET)251f提供电力连接的图2A的“线”201e,在图2B中由用户移除了。第三,右侧的PFET 251b的“宽度”属性由用户从宽度“6”(见图2A中位置290c处的元件203a)改为宽度“8”(见图2B中位置290c处的元件203b)。所述PFET实例251b在图2A中的示意图201a和图2B中的示意图201b之间是相同的实例,然而,图2B中的实例251b具有现有属性203a的新值203b。第四,图2A中缺失的地(也被称为“gnd”)实例251e(在位置290d),现在由用户添加到了图2B。
所提出的方法识别出了这些差异,并且区分了对现有项目的“修改”以及添加/移除。
数据库分区
为了使数据“可管理”,由本发明的处理器、装置、或计算机系统1000首先将数据库划分为不同“种类”的数据(也被称为“分区”)。
图2C示出了一个实施例,由本发明的处理器、装置或计算机系统1000将图2B(示意图201b)中的对象划分为分区261a和261b。在图2D中,图2B的示意图被划分为两个分区。分区261b包括对象201a、251d、251e和252b。分区261a包括对象201b、201c、201d、202a、251a、251b、251c、251f、252a和252c。
用于图2D中的分区的一个实施例,示出了图2B中的示意性数据库201b,其被划分为线201、标签202、实例251和引脚252的分区。
由本发明的处理器、装置或计算机系统1000进行的对图2D的分区,在下文中进行更详细地描述。数据库中“物理”形状(包括但不限于线201、标签202、线路以及其它形状),与“层/用途对”相关联。也就是说,每一个形状都具有“层名称”(这可能是物理层,如“多晶硅”或“金属层1”或逻辑层,例如“线”201)以及“用途”(例如,“制图”或“布局”)的组合。所述“层”和“用途”对(“lpp”)是设计数据库的公共特征。因此,数据库中所有的“形状”都根据“lpp”值来进行分类。
数据库中所有的“逻辑”元件(包括但不限于引脚252、实例251、引脚/终端252以及网),都具有与其相关联的“类型”。因此,数据库中所有的“逻辑”元件都根据“类型”来进行分类。
由本发明的处理器、装置或计算机系统1000来将分区实现为一系列“提取”(划分)例程,所述分区根据上面的标准分出数据库的子集。本发明的实施例提供了“标准”提取例程的集合,但是该系统的用户可以修改这些例程(使用由本发明提供的API),以扩展系统用于比较数据库的附加部分,或限制对感兴趣的区域的比较。
对于给定的数据库,过程的所述部分的结果是一系列更小的数据子集(或“分区”),以这样的方式来划分这些子集:需要进行比较的数据库中的每一个元素恰恰被包含在一个子集中,并且倾向于,给定的数据库的不同子集中没有两个元件被认为是“相同”的元件。对于给定的数据库,这意味着子集倾向于不重叠,并且给定的子集的每一个给定的对象与给定的数据库的其它子集中的每一个对象相比是唯一的(不“相同”的)。注意,一个数据库中的对象可以与另一个数据库的另一个对象是“相同”的,但是给定的数据库中的每一个对象在所述给定的数据库中倾向于是唯一的。
用于对数据进行划分的准确的标准取决于可用的数据库格式和访问程序。上述标准对于Open Access数据库,并且特别是SKILL语言接口而言是方便的,但是所提出的方法可以使用对于其它数据库而言可以更加方便的其它标准。
识别比较对象
将数据库划分成更小的集合后,下一个问题是如何识别“表示同一事物”的对象。这是所提出的方法的关键部分。如果对象被移动,则它是同一个对象吗?如果对象被“重命名”,则它是同一个对象吗?
在文本文件的传统比较中,通过文件的“分区”来比较行,如果将一行从文件的一个位置移动到另一个位置,则这被看成是在一个位置删除并且在别处的添加。传统的比较不能满足IC设计数据库的需求,至少因为以下三个缺陷。首先,在IC设计中,对于一个或多个对象而言,移动是非常普遍的,并且仅仅因为对象移动,它不会成为不同的对象。第二,IC设计数据库在结构上是多维的(二维、三维,或更多维),所以通过“区域”来进行比较是更复杂并且易出错的。第三,在一些情况下,在完全相同的位置中并且具有不同的名称或不同的属性的对象可以被认为是添加和移除,而不是简单的“修改”。
所提出的方法克服了传统比较的不足。在所提出的方法中,与“提取”例程相关联的数据的每一个集合都具有与其相关联的“关键字生成”例程。在所提出的方法中,“关键字生成器”从数据集中取出对象,并且生成“关键字”,所述关键字对于所述数据集而言应该是唯一的。接下来,所提出的方法比较“关键字”的值以识别对象是“相同”的(但可以具有微小差异),或者是完全不同的对象。
例如,用于“标签”的“关键字生成器”可以基于标签位置来生成关键字或可以基于标签文本来生成关键字。在参考实现中生成的实际的关键字采取“列表”值的形式。这对于SKILL语言而言是方便的,它使得比较结果列表变得简单。
参考图2A-图2B中的前面的示例,如果用于标签202a的“关键字”仅仅是标签202a的文本,那么对于示意性视图(201a,201b)二者而言,所得到的关键字是关键字(“nand2”),即包括图2A-图2B的202a中的标签“nand2”的字符串的列表。由于对于两个视图而言这是相同的,所以比较工具可以识别出这两个对象是相同的(尽管它们在其它方面可以是“不同”的—将在后文详细描述)
然而,在给定的场景中使用文本标签作为关键字可能是不够的。在具有相同文本的示意图中可能存在其它标签,引起多个元件生成相同的关键 字,这倾向于是不被允许的,因为在这种情况下在数据库之间对它们进行“匹配”是非常有挑战性的。因此,在首选的实施例中,关键字可以是标签的x/y的原点(或x/y坐标)。例如,请参考图2A中202a的原点290a(0.1,0.98)和图2B中202a的原点290b(0.2,0.965)。在这个场景中,关键字(290a,290b)是不同的,并且比较不会将这些识别为“同一”对象202a,相反,比较会报告两处差异:标签被移除,以及标签被添加。
关键字生成是复杂的,并且在产生唯一值的需要和基本上正确地识别出“相同”的项目的希望之间存在权衡。本范例实现提供了最好地处理这些权衡的关键字生成例程的集合,但是如果用户的设计方法提供了更好的选择,则用户被赋予替换这些例程的功能。例如,如果用户的设计方法和规则不允许相同的名称的多个标签,那么使用标签文本与使用标签位置相比是更好的关键字。
在对数据库的特定分区中的每一个对象的“关键字”进行评估之后,比较例程然后可以比较关键字,以便识别被“添加”或“删除”的项目或者“是相同的”项目。
相同但是不同 
尽管两个项目返回相同的关键字,但是它们可以具有差异。这相当于在“文本”比较中的情况,其中在两个文件中一行是相同的,但是被“修改”过,可能添加或移除了一些字符。
在这些数据库中,可以存在于是“相同”的对象之间的改变的集合是相当大的。对象可以是相同但被“移动”过的。对象可以是相同但“重命名”的。对象可以是相同但已经改变了属性的。通常,许多对象都包括在单元视图(或“单元的视图”,“数据库”)中,例如,示意性视图201a的nand2,或中央处理单元(CPU)的布局。因此,比较的下一步是提取是“相同”的项目,并且执行对对象的更详细地“差异检查”。
此外,所执行的准确的比较取决于对象。它很大程度上还取决于关键字生成:已被提取作为关键字的部分的值不需要被比较。例如,如果“实例”具有包括该实例的x/y位置和单元视图名称为“父”(或“主”)单元视图的关键字,那么这些值就不需要通过详细的“差异检查”来进行再比较。然而,由于实例的任何旋转/映射都不是关键字的部分,因此旋转/映射 是差异检查的优选部分。
在范例实现中,“差异”例程检查不是关键字的部分的对象的大部分方面。特别地,在所讨论的数据库中,对象可以具有被比较的通用的“属性列表”。然而,所提出的方法允许用户覆写标准差异例程,以便与用户的具体需求相匹配。
报告结果
如果存在用于将所找到的差异通知给用户的清晰的方法,则识别出两个数据库之间的差异是更有利的。所提出的方法应用了图形化的方法,其具有“多层”方案,以用于报告各种层次的细节中的差异,以及用于在单元视图自身内“突出显示”改变的功能。
除了图形化的方法以外,本发明的处理器、装置或计算机系统1000还应用基于文本的摘要报告,如图3A所示。图3A的摘要报告示出了当执行比较操作后最初被显示给用户的表格结果。在图3A中,摘要报告301a(通过下拉菜单303选择的)指示第一单元视图201a(图2A中)和第二单元视图201b(图2B中)之间的差异302。
如图3A所示,所提出的方法使用图2D中的划分/分区方案,确定在数据的每一个“分区”中找到的201a和201b之间的差异302,作为简单摘要。在图3A中,由本发明的处理器、装置或计算机系统1000生成分区,所述分区用于线201、标签202、实例251和网253。
例如,图3A示出了“实例”251中的差异302。图3A的报告指示,具有差异(参见从图2A的元件203a到图2B的元件203b,宽度从“6”改变到“8”)的一个实例。图3A的报告还指示,一个实例只在第二单元视图中存在,并且因此,“添加”了实例(参见图2B的实例251e)。
如图3B所示,接下来,用户可以使用下拉字段/菜单303来选择实例301b,并且进一步精简该结果以示出适用于数据的仅一个“分区”的结果。所示出的“分区”的集合倾向取决于所定义的分区功能,并且倾向于,将引起差异的分区呈现给用户。
在图3B所示的情况中,用户选择了“实例”报告301b。如图3B所示出的,通过本发明的处理器、装置或计算机系统1000,实例报告301b向用户示出了实例分区(图3A中的251)中差异305的更多细节。特别地,在 差异窗口309中示出的差异305示出了实例名称,和针对每一个实例生成的“关键字”的细节(这使得所提出的方法能够用于在数据库中找到该关键字),以及关于所述实例只在单元视图中的一个中(添加或删除的实例)或者在两个单元视图中但具有一些“差异”的报告。在具有“差异”的对象的情况中,可以由用户执行选择307,如图3B所示,并且在底部面板308中示出了相关联的差异的完整细节306。在细节部分306中,用户可以看到实例“2”,它在位置(0.8125,0.9375),是单元pCells/pmos/symbol的实例,其具有一个差异,所述差异是属性“w”具有改变的值:它现在具有值“8”(见图2B),并且过去是值“6”(见图2A)。
结果的详细文本报告的确切形式由“差异检查”例程所控制。在图3B中,可以倾向于将示出属性改变的方式转换为首先报告“旧”值,并且所提出的方法允许用户执行这个转换。另外,在所提出的方法中,详细结果的完整集合可以被写入到文件中,这提供了结果的永久记录,并且允许对结果进行进一步分析。另外,图3B示出了合并功能304。
如图3C所示,通过本发明的处理器、装置或计算机系统1000,所提出的方法还允许图形差异/改变310直接“突出显示”在图3C的示意图的图形视图350a上。例如,在图3B中,如果由用户选择307实例改变305,那么在示意性视图350a中,由本发明的处理器、装置或计算机系统1000来突出显示310所述图形改变。
如图3C所示,元件203a(顶部的“pmos”符号)被突出显示为黄色,因为所述对象在第一和第二数据库二者(参见图2A 203a和图2B 203b)中,但是具有差异。在图3C中,在底部的元件251e(接地符号)被突出显示为红色,因为它不存在于这个特定的视图中。注意,所提出的方法可以突出显示形状(通过与其它视图比较),即使在给定的视图中所述形状并不实际存在。
合并
一旦识别出两个数据库之间的差异,就可以考虑“合并”这些改变。执行合并所需的确切的步骤可以取决于各种因素,包括改变的类型、改变是否表示“添加”、“删除”或简单的“改变”、底层系统的API功能,以及所需要的任何“随之发生”的改变。例如,如果删除“网”,则与该网相关 联的物理形状也应该被移除吗?
在前面描述的简单比较(参照下面用于更复杂的情况的三向比较)中,它从来不真正适合于合并“所有”差异。如果合并所有差异是期望的结果,则用户可以简单地将一个数据库“复制”到另一个数据库。
本发明的处理器、装置或计算机系统1000允许用户选择比较结果的任何子集并且将来自“第一”数据库(或单元视图)的差异合并到“第二”数据库(或单元视图)。例如,在第一单元视图中但不在第二单元视图中的线,可以通过在第二单元视图中创建相同的线来进行合并。作为另一个示例,不在第一单元视图中而在第二单元视图中的标签,可以通过将该标签从第二单元视图中删除来进行合并。作为另一个示例,第一单元视图中具有“宽度”属性“6”的单元视图而在第二单元视图中具有宽度“8”的实例,可以通过将第二单元视图中的所述属性改变为“6”来进行合并。
所提出的方法提供了合并方法,一种方式使用例如通过SKILL语言而可用的API功能而将改变合并到数据库中通用的数据库对象类型。然而,作为本领域的技术人员应该意识到,该合并方法可以由终端用户修改,以提供所期待的终端用户自己的合并功能。
在执行某个合并操作中,必要的是识别出数据库中被合并的等价的对象。例如,如果在要被添加的网上进行合并,则可以期待的是在第二数据库中找到在原始数据库中连接该网的“引脚”的等价的“引脚”,使得新网可以被连接到它们。在进行这项操作中,所提出的方法利用了由比较功能使用的相同的关键字生成:为了找到等价的引脚,所提出的方法找到了生成与源数据库中的引脚的关键字相同的一个引脚。
合并对象的顺序可以是重要的。例如,可以期望的是,在合并网之前合并引脚,以便存在用于连接所述网的引脚。如果用户简单地选择所有的网和引脚用于合并,那么本发明的处理器、装置或计算机系统1000倾向于需要知道首先处理的引脚。数据库结构的知识被用于定义用于合并请求的处理的默认“顺序”,但是如果本发明的处理器、装置或计算机系统1000需要,则所述顺序可以进行修改。
三向比较
在上述图2A-图2B的范例比较中,很难知道是移除了“gnd”符号以 生成左侧所示的数据库,还是添加了“gnd”符号以生成右侧的数据库。不存在哪个数据库(第一或第二)可以是“更迟”的版本的指示。这就是为什么系统1000的报告简单地陈述为实例“只在第二视图中”(见图3B中的305)的原因。运行程序的用户可以“知道”右侧数据库(图2B 201b)比左侧数据库(图2A 201a)“更迟”,因此这可以不是问题。
然而,对于这类比较工具非常普遍的需要和用途是从同一个起点在哪里对数据库做出两个独立的修改。在一个示例中,数据库的前一个版本被存储在数据管理系统中。设计师Fred取出该数据库的副本并且开始做出改变。设计师Jill也取出副本,做出一些改变并且将这些改变存回到数据管理系统中。在这一点,Fred想要将他的数据库版本与Jill的数据库版本相比较,以便查看Jill所做的改变,并且潜在地,合并Fred和Jill之间的改变。这就是经典的“三向合并”问题。
本发明的处理器、装置或计算机系统1000完全支持三向比较。系统1000可以将分区应用于所有三个数据库。系统1000可以针对所有三个数据库来生成关键字。系统1000然后可以横跨所有三个数据库来比较关键字,以便识别出与“公共的祖先”数据库相比,对于更迟的数据库中的每一个,是否“添加”或“删除”了对象。系统1000的结果报告和突出显示然后可以更准确地指示所执行的实际的改变。
三向合并
如果使用系统1000来执行三向比较,那么用于从本系统1000进行合并的动作与系统1000的双向比较/合并的情况相比可以不同。对于三向合并,在相对于公共的祖先的“当前”数据库中做出的改变倾向于单独放在左侧,并且倾向于,考虑合并在“比较”数据库与公共祖先之间所做出的改变。系统1000以清楚地知道应用了哪个案例的这样的方式向用户呈现了结果,并且使得用户可以容易地选择用于合并的改变的适当的集合。
图形用户界面
图4A示出了本发明的系统1000的图形用户界面和显示(GUI)400。图4A示出了第一数据库的数据库名称信息401a,和第二数据库的数据库名称信息401b,其中数据库名称信息包括库名称(430a、430b)、单元名称(431a、431b)和视图名称(432a、432b)。GUI包括许多命令(被实现为 按钮、字段、下拉菜单或通过其它手段实现)。如图4A所示,GUI命令包括浏览单元视图410a、410b,打开单元视图409a、409b,以及取出不同的版本411a、411b。命令还包括从第一单元视图合并304到第二单元视图。图4A的GUI包括下拉字段/菜单303。GUI还包括以下的命令:允许用户选择(通过计算机鼠标或其它手段)所有差异402、不选择差异403、突出显示差异404、进行到下一个差异405、进行到前一个差异406以及清除所选择的差异407。
如图4A所示,GUI显示指示以下的单元视图元件:在结果视图中的414、不在结果视图中的415,以及当前视图和结果视图之间不同的416。注意,字段414、415、416允许用户选择通过其来突出显示差异元件的手段,并且允许用户选择被用于突出显示的“层”(以及颜色)。使用GUI,用户可以运行比较420,或取消所述操作421(释放表格)。GUI还包括允许用户缩放408a的命令,包括缩小408b或放大408c,所述命令具有显示的缩放百分比417。其它GUI命令允许用户保存GUI的状态423、恢复GUI的状态422,或获取包括描述和指南的帮助424。
图4B的GUI 400示出了对于两个单元视图的系统1000的过滤操作。用户可以选择430用于比较的不同的单元视图或数据库版本并且过滤431对象的结果以进行突出显示。系统1000执行“diff”操作(确定差异)并且通过在图形视图350b中突出显示差异310b,并且还通过到输出文件的差异的文本输出来显示结果。
图4C中的GUI 400示出了用于两个单元视图的系统1000的合并操作。用户可以选择430用于比较的不同的单元视图或数据库版本。系统1000执行“diff”操作(确定差异),并且通过在图形视图350b中突出显示的差异310b,并且还通过到输出文件的差异的文本输出来显示结果。用户还可以选择432要合并的项目并且自动合并433突出显示的/选择的差异。
如图4C所示,本系统1000类似对文本语言的diff/合并,并且使用户能够管理来自不同源的改变,从这些改变中进行选择,并且应用所选择的改变。设计的方面(例如,实例,或单独的层上的形状)可以被单独合并。系统1000是可定制的,以允许用户定义要合并的元件是什么类型,例如,忽略简单的图形操作。另外,系统1000通过允许工程师自动合并内容不同 的单元视图来提高开发生产力。
图5A示出了具体实现本发明的系统或过程1000的步骤的高级流程图500。在步骤501中,呈现了设计信息的第一版本(来自第一数据存储)和设计信息的第二版本(来自第二数据存储)。所述设计信息包括设计对象。在步骤502中,第一和第二数据存储被划分成(通过划分例程)与第一和第二数据存储之间相对应的分区。在步骤503中,关键字被分配给每一个分区中的每一个对象。关键字分配503在以下的图5B中进行更详细地描述。
返回参考图5A,步骤504通过基于第一数据存储的分区中对象的关键字和第二数据存储的相对应的分区中对象的关键字来执行第一比较,从而确定是否添加、删除或修改了分区中的对象。在步骤505中,通过第二比较确定了一个或多个对象差异。对于第一数据存储中的每一个给定的对象,以及第二数据存储中共享同一关键字的其相对应的对象,执行确定了一个或多个对象差异的第二比较。在步骤506中,产生于第一比较和第二比较的差异被呈现给用户。在步骤507中,系统1000使用户能够选择来自差异的至少一个差异的集合。在步骤508中,系统1000使用户能够将所选择的差异应用于设计信息的第二版本。
图5B示出了本发明的系统或过程1000的关键字分配算法(或关键字生成例程)503的高级流程图。注意,在数据存储内的数据的每个集合与划分例程相关联,还与关键字生成例程相关联。在步骤503a中,对于每一个分区,将关键字分配给分区中的每一个对象(如下所述)。在步骤503b中,将同一(唯一的)关键字分配给第一数据存储的分区中的对象,并且分配给第二数据存储的相对应的分区中的对象。在步骤503c中,将相应的(唯一的)关键字分配给没有被分配关键字的每一个对象。可以基于对象位置、对象文本,和/或其它对象属性来生成关键字。
图5C示出了本发明的系统或过程1000的另一个高级流程图520,它描绘了本发明的三向比较和合并。在步骤521中,呈现了设计信息的第一版本(来自第一数据存储)、设计信息的第二版本(来自第二数据存储)以及设计信息的祖先版本(来自祖先数据存储)。设计信息的祖先版本是关于设计信息的第一版本和第二版本的祖先。在步骤522中,第一、第二和祖先数据存储被划分为(通过划分例程)与祖先和第一以及第二数据存储之 间相对应的分区。在步骤523中,将关键字分配给每一个分区中的每一个对象。关键字分配523在以下的图5D中进行更详细地描述。
返回参考图5C,步骤524通过基于祖先数据存储的分区中的和第一和第二数据存储的相对应的分区中的对象的关键字来执行比较,从而确定是否添加、删除或修改了分区的对象。在步骤525中,通过附加的比较来确定一个或多个对象差异。对于第一和第二数据存储中每一个给定的对象,以及在祖先数据存储中共享同一关键字的其相对应的对象,执行确定了一个或多个对象差异的附加的比较。在步骤526中,将比较产生的差异呈现给用户。在步骤527中,系统1000使用户能够选择来自差异的至少一个差异的集合。在步骤528中,系统1000使用户能够将所选择的差异应用于设计信息的第二版本。
图5D示出了本发明的系统或过程1000的关键字分配算法(或关键字生成例程)523的高级流程图。注意,数据存储中的数据的每一个集合与划分例程相关联,还与关键字生成例程相关联。在步骤523a中,对于每一个分区,将关键字分配给分区中的每一个对象(如下所述)。在步骤523b中,将同一(唯一的)关键字分配给祖先数据存储的分区中的对象,并且分配给第一和第二数据存储中相对应的对象。在步骤523c中,将相应的(唯一的)关键字分配给没有被分配关键字的每一个对象。可以基于对象位置、对象文本,和/或其它对象属性来生成关键字。
图6示出了在其中可以实施所提出的方法的计算机网络或类似的数字处理环境。
客户端计算机/设备50和服务器计算机60提供了执行应用程序等的处理、存储和输入/输出设备。客户端计算机/设备50还可以通过通信网络70连接到其它计算设备,包括其它客户端设备/进程50和服务器计算机60。通信网络70可以是远程接入网络、全球或本地网络(例如,互联网)、计算机的世界范围内的集合、局域网或广域网,以及当前使用相应的协议(TCP/IP、BULETOOTHTM等)来进行相互通信的网关的一部分。其它的电子设备/计算机网络体系结构都是适合的。
图7是图6的计算机系统中的计算机(例如,客户端处理器/设备50或服务器计算机60)的内部结构的图。每台计算机50、60都包含系统总线 79,其中总线是用于在计算机或处理系统的部件之间进行数据传输的硬件线路的集合。总线79本质上是连接计算机系统的不同元件(例如,处理器、磁盘存储、存储器、输入/输出端口、网络端口等)的共享的导线管,总线79使元件之间的信息能够进行传输。附接到系统总线79的是用于将各种输入和输出设备(例如,键盘、鼠标、显示器、打印机、扬声器等)连接到计算机50、60的I/O设备接口82。网络接口86允许将计算机连接到附接到网络(例如,图6中的网络70)的各种其它设备。存储器90为用于实现所提出的方法的实施例(例如,上面描述的系统1000和过程步骤/流程400)的计算机软件指令92和数据94提供了易失性存储装置。盘存储装置95为用于实现所提出的方法的实施例的计算机软件指令92和数据94提供了非易失性存储装置。注意,数据94在客户端50和服务器60之间可以是相同的,然而,计算机软件指令92的类型在客户端50和服务器60之间可以不同。中央处理器单元84也附接到系统总线79并且提供对计算机指令的执行。
在一个实施例中,处理器例程92和数据94是计算机程序产品(一般引用为92),包括提供本发明系统的软件指令的至少一部分的计算机可读介质(例如,可移除存储介质,诸如,一个或多个DVD-ROM、CD-ROM、软盘、磁带等)。计算机程序产品92可以由任何合适的软件安装过程来进行安装,正如在本领域所公知的。在另一个实施例中,还可以通过电缆、通信和/或无线连接来下载软件指令的至少一部分。在其它实施例中,本发明程序是计算机程序传播信号产品107(在图6中示出),其被具体实现在传播介质(例如,无线电波、红外波、激光波、声波或在诸如因特网或其它网络之类的全球网络上传播的电波)上的传播信号上。这样的载体介质或信号提供了用于所提出的方法例程/程序92的软件指令的至少一部分。
在替代的实施例中,传播信号是在传播介质上承载的模拟载波或数字信号。例如,所传播的信号可以是在全球网络(例如,互联网)、电信网络或其它网络上进行传播的数字信号。在一个实施例中,传播信号是在时间段内在传输介质上进行传输的信号,例如,用于在毫秒、秒、分钟,或更长的时间段内通过网络以分组发送的软件应用的指令。在另一个实施例中,计算机程序产品92的计算机可读介质是计算机系统50可以接收和读取(例 如,通过接收传播介质并且识别在传播介质中具体实现的传播信号)的传播介质,正如上面对于计算机程序传播信号产品的描述。
一般来说,术语“载体介质”或暂时性载体包括前述的暂时性信号、传播信号、传播介质、存储介质等。
所提出的方法应用于用于模拟和数字部件二者的IC设计环境。所提出的方法不限于IC,并且还可以应用于印刷电路板(PCB)、电路原理图和用于模拟和/或数字电路的其它用途。所提出的方法处理多维的设计,包括但不限于二维或三维。
尽管参考其示例实施例来具体示出并且描述了本发明,但是本领域的技术人员应该理解,可以在不偏离由所附的权利要求包括的本发明的范围的情况下,来做出对其形式和细节的各种改变。

Claims (18)

1.一种用于管理集成电路(IC)设计信息的计算机实现的方法,所述计算机实现的方法包括:
呈现第一数据存储中主体IC设计信息的第一版本;
呈现第二数据存储中所述主体IC设计信息的第二版本;
将所述第一数据存储划分为多个分区,每一个分区保留了呈现所述第一版本的主体IC设计信息的部分的相应的对象;
将所述第二数据存储划分为与所述第一数据存储的多个分区相对应的分区,所述第二数据存储的每一个分区保留了呈现所述第二版本的主体IC设计信息的部分的相应的对象;
对于每一个分区,根据所述对象的方面将关键字分配给所述分区中的每一个对象,使得对关键字的所述分配引起:
(a)将同一关键字分配给
(i)所述第一数据存储的分区中的主体对象以及
(ii)所述第二数据存储的相对应的分区中的对象,所述对象是与所述第一数据存储中的主体对象相对应的对象,并且引起
(b)将相应的关键字分配给没有被分配关键字的每一个对象;
对于每一个给定的分区,通过基于所述第一数据存储的分区中的对象的关键字和所述第二数据存储的相对应的分区中的对象的关键字,来执行第一比较,从而确定是否添加、删除或修改了所述分区的对象;
对于所述第一数据存储中的每一个给定的对象,以及在所述第二数据存储中共享所述同一关键字的其相对应的对象,执行确定了一个或多个对象差异的第二比较;并且
基于所述第一比较和第二比较的结果,来呈现所述第一数据存储中的主体IC设计信息的第一版本和所述第二数据存储中的主体IC设计信息的第二版本之间的一个或多个差异。
2.根据权利要求1所述的计算机实现的方法,进一步包括:
使终端用户能够选择所述一个或多个差异中的至少一个的差异集;并且
使所述终端用户能够将所选择的差异集应用于所述第二数据存储中的主体IC设计信息的第二版本。
3.根据权利要求1所述的计算机实现的方法,其中,以文本格式将所述一个或多个差异呈现给终端用户。
4.根据权利要求1所述的计算机实现的方法,其中,通过在图形表示上突出显示每一个差异来将所述一个或多个差异呈现给终端用户。
5.根据权利要求1所述的计算机实现的方法,其中,将关键字分配给每一个对象包括基于所述对象的位置信息和属性信息的任何组合来分配所述关键字。
6.根据权利要求1所述的计算机实现的方法,进一步包括:
呈现祖先数据存储中的主体IC设计信息的祖先版本,所述第一版本和第二版本来自所述祖先版本;
将所述祖先数据存储划分为与所述第一数据存储和所述第二数据存储的多个分区相对应的分区,所述祖先数据存储的每一个分区保留了呈现所述祖先版本的IC设计信息的部分的相应的对象;
对于所述祖先数据存储中的每一个分区,根据所述对象的方面来将关键字分配给每一个对象,使得对于所述祖先数据存储的每一个分区:
(1)将同一关键字分配给所述祖先数据存储的分区中给定的对象,以及在所述第一数据存储和所述第二数据存储的相对应的分区中的相对应的对象,所述相对应的对象与所述祖先数据存储中的给定的对象相对应,并且
(2)将相应的关键字分配给所述祖先数据存储的分区中剩余的对象;
对于每一个给定的分区,通过基于所述第一数据存储和第二数据存储的分区中的对象的关键字和所述祖先数据存储的相对应的分区中的对象的关键字来执行第三比较,从而确定是否添加、删除或修改了所述分区的对象;
对于所述第一数据存储和第二数据存储中的每一个给定的对象,以及所述祖先数据存储中共享所述同一关键字的其相对应的对象,执行确定了一个或多个相应的对象差异的第四比较;
基于所述第三比较和第四比较的结果,呈现所述祖先数据存储中的主体IC设计信息的祖先版本与所述第一数据存储中的主体IC设计信息的第一版本和所述第二数据存储中的主体IC设计信息的第二版本中的至少一个之间的至少一个差异;
使终端用户能够选择所述至少一个差异中的至少一个的相应的差异集;并且
使所述终端用户能够将所选择的相应的差异集应用于所述第二数据存储中的主体IC设计信息的第二版本。
7.一种用于管理集成电路(IC)设计信息的计算机实现的系统,所述计算机实现的系统包括:
数据模块,其被配置为呈现第一数据存储中的主体IC设计信息的第一版本;
所述数据模块进一步被配置为呈现第二数据存储中的所述主体IC设计信息的第二版本;
划分模块,其被配置为将所述第一数据存储划分为多个分区,每一个分区保留了呈现所述第一版本的主体IC设计信息的部分的相应的对象;
所述划分模块进一步被配置为将所述第二数据存储划分为与所述第一数据存储的多个分区相对应的分区,所述第二数据存储的每一个分区保留了呈现所述第二版本的主体IC设计信息的部分的相应的对象;
控制模块,其被配置为对于每一个分区,根据所述对象的方面来将关键字分配给所述分区中的每一个对象,使得通过所述控制模块对关键字的分配引起:
(a)通过所述控制模块将同一关键字分配给
(i)所述第一数据存储中的分区中的主体对象,以及
(ii)所述第二数据存储中的相对应的分区中的对象,所述对象是与所述第一数据存储中的主体对象相对应的对象,并且引起
(b)通过所述控制模块将相应的关键字分配给没有由所述控制模块分配关键字的每一个对象;
所述控制模块进一步被配置为,对于每一个给定的分区,通过基于所述第一数据存储中的分区中的对象的关键字以及所述第二数据存储中的相对应的分区中的对象的关键字来执行第一比较,从而确定是否添加、删除或修改了所述分区的对象;
所述控制模块进一步被配置为对于所述第一数据存储中的每一个给定的对象,以及在所述第二数据存储中共享所述同一关键字的其相对应的对象,执行第二比较,所述第二比较确定一个或多个对象差异;以及
显示模块,其被配置为基于所述第一比较和第二比较的结果,来呈现所述第一数据存储中的主体IC设计信息的第一版本和所述第二数据存储中的主体IC设计信息的第二版本之间的一个或多个差异。
8.根据权利要求7所述的计算机实现的系统,其中
所述控制模块进一步被配置为使终端用户能够选择所述一个或多个差异中的至少一个的差异集;并且
所述控制模块进一步被配置为使所述终端用户能够将所选择的差异集应用于所述第二数据存储中的主体IC设计信息的第二版本。
9.根据权利要求7所述的计算机实现的系统,其中,所述显示模块进一步被配置为以文本格式将所述一个或多个差异呈现给终端用户。
10.根据权利要求7所述的计算机实现的系统,其中,所述显示模块进一步被配置为通过在图形表示上突出显示每一个差异来将所述一个或多个差异呈现给终端用户。
11.根据权利要求7所述的计算机实现的系统,其中,所述控制模块进一步被配置为将关键字分配给每一个对象,所述控制模块基于所述对象的位置信息和属性信息的任何组合来分配所述关键字。
12.根据权利要求7所述的计算机实现的系统,其中
所述数据模块进一步被配置为呈现祖先数据存储中的主体IC设计信息的祖先版本,所述第一版本和第二版本来自所述祖先版本;
所述划分模块进一步被配置为将所述祖先数据存储划分为与所述第一数据存储和所述第二数据存储的多个分区相对应的分区,所述祖先数据存储的每一个分区保留了呈现所述祖先版本的IC设计信息的部分的相应的对象;
所述控制模块进一步被配置为对于所述祖先数据存储中的每一个分区,根据所述对象的方面,将关键字分配给每一个对象,使得对于所述祖先数据存储的每一个分区:
(1)通过所述控制模块将同一关键字分配给所述祖先数据存储的分区中给定的对象,以及所述第一数据存储和所述第二数据存储的相对应的分区中的相对应的对象,所述相对应的对象与所述祖先数据存储中给定的对象相对应,以及
(2)通过所述控制模块,将相应的关键字分配给所述祖先数据存储的分区中的剩余对象;
所述控制模块进一步被配置为,对于每一个给定的分区,通过基于所述第一数据存储和第二数据存储中的分区中的对象的关键字和所述祖先数据存储的相对应的分区中的对象的关键字来执行第三比较,从而确定是否添加、删除或修改了所述分区的对象;
所述控制模块进一步被配置为,对于在所述第一数据存储和第二数据存储中的每一个给定的对象,以及在所述祖先数据存储中共享所述同一关键字的其相对应的对象,来执行第四比较,进一步的比较确定了一个或多个相对应的对象差异;
所述显示模块进一步被配置为,基于所述第三和第四比较的结果,来呈现所述祖先数据存储中的主体IC设计信息的祖先版本,与所述第一数据存储中的主体IC设计信息的第一版本和所述第二数据存储中的主体IC设计信息的第二版本中的至少一个之间的至少一个差异;
所述控制模块进一步被配置为使终端用户能够选择所述至少一个差异中的至少一个的相应的差异集;并且
所述控制模块进一步被配置为使所述终端用户能够将所选择的差异集应用于所述第二数据存储中的主体IC设计信息的第二版本。
13.一种具有存储在其上的指令的序列的非暂时性的计算机可读介质,当由耦合到装置的处理器加载和执行所述指令时,使所述装置用于:
呈现第一数据存储中的主体IC设计信息的第一版本;
呈现第二数据存储中的所述主体IC设计信息的第二版本;
将所述第一数据存储划分为多个分区,每一个分区保留了呈现所述第一版本的主体IC设计信息的部分的相应的对象;
将所述第二数据存储划分为与所述第一数据存储的多个分区相对应的分区,所述第二数据存储的每一个分区保留了呈现所述第二版本的主体IC设计信息的部分的相应的对象;
对于每一个分区,根据所述对象的方面,将关键字分配给所述分区中的每一个对象,使得对关键字的分配引起:
(a)将同一关键字分配给
(i)所述第一数据存储中的分区中的主体对象以及
(ii)所述第二数据存储中的相对应的分区中的对象,所述对象是与所述第一数据存储中的主体对象相对应的对象,并且引起
(b)将相应的关键字分配给没有被分配关键字的每一个对象;
通过基于所述第一数据存储的分区中的对象的关键字,以及所述第二数据存储中的相对应的分区中的对象的关键字来执行第一比较,从而确定是否添加、删除或修改了所述分区中的对象;
对于所述第一数据存储的每一个给定的对象,以及所述第二数据存储中共享所述同一关键字的其相对应的对象,来执行第二比较,所述第二比较确定一个或多个对象差异;并且
基于所述第一比较和第二比较的结果,来呈现所述第一数据存储中的主体IC设计信息的第一版本和所述第二数据存储中的主体IC设计信息的第二版本之间的一个或多个差异。
14.根据权利要求13所述的非暂时性的计算机可读介质,进一步使所述装置用于:
使终端用户能够选择所述一个或多个差异的至少一个的差异集;并且
使所述终端用户能够将所选择的差异集应用于所述第二数据存储中的主体IC设计信息的第二版本。
15.根据权利要求13所述的非暂时性的计算机可读介质,进一步使所述装置用于以文本格式将所述一个或多个差异呈现给终端用户。
16.根据权利要求13所述的非暂时性的计算机可读介质,进一步使所述装置通过在图形表示上突出显示每一个差异,来将所述一个或多个差异呈现给终端用户。
17.根据权利要求13所述的非暂时性的计算机可读介质,进一步使所述装置用于将关键字分配给每一个对象,所述装置基于所述对象的位置信息和属性信息的任何组合来分配所述关键字。
18.根据权利要求13所述的非暂时性的计算机可读介质,进一步使所述装置用于:
呈现祖先数据存储中的所述主体IC设计信息的祖先版本,所述第一版本和第二版本来自所述祖先版本;
将所述祖先数据存储划分为与所述第一数据存储和所述第二数据存储的多个分区相对应的分区,所述祖先数据存储的每一个分区保留了呈现所述祖先版本中的IC设计信息的部分的相应的对象;
对于所述祖先数据存储中的每一个分区,根据所述对象的方面来将关键字分配给每一个对象,使得对于所述祖先数据存储的每一个分区:
(1)将同一关键字分配给所述祖先数据存储的分区中的给定的对象,以及所述第一数据存储和所述第二数据存储的相对应的分区中的相对应的对象,所述相对应的对象与所述祖先数据存储中的给定的对象相对应,并且
(2)将相应的关键字分配给所述祖先数据存储的分区中剩余的对象;
对于每一个给定的分区,通过基于所述第一数据存储和第二数据存储中的分区中的对象的关键字和所述祖先数据存储中的相对应的分区中的对象的关键字来执行第三比较,从而确定是否添加、删除或修改了所述分区的对象;
对于所述第一数据存储和第二数据存储中的每一个给定的对象,以及在所述祖先数据中共享所述同一关键字的其相对应的对象,来执行第四比较,所述第四比较确定一个或多个相应的对象差异;
基于所述第三比较和第四比较的结果,来呈现所述祖先数据存储中的主体IC设计信息的祖先版本,与所述第一数据存储中的主体IC设计信息的第一版本和所述第二数据存储中的主体IC设计信息的第二版本中的至少一个之间的至少一个差异;
使终端用户能够选择所述至少一个差异中的至少一个的相应的差异集;并且
使所述终端用户能够将所选择的相应差异集应用于所述第二数据存储中的主体IC设计信息的第二版本。
CN201410493949.XA 2013-09-25 2014-09-24 Ic设计数据的比较与合并 Active CN104572800B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/036,734 US9557989B2 (en) 2013-09-25 2013-09-25 Comparison and merging of IC design data
US14/036,734 2013-09-25

Publications (2)

Publication Number Publication Date
CN104572800A true CN104572800A (zh) 2015-04-29
CN104572800B CN104572800B (zh) 2018-08-21

Family

ID=51618999

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410493949.XA Active CN104572800B (zh) 2013-09-25 2014-09-24 Ic设计数据的比较与合并

Country Status (6)

Country Link
US (1) US9557989B2 (zh)
EP (1) EP2854052A1 (zh)
JP (1) JP6352744B2 (zh)
KR (1) KR20150034106A (zh)
CN (1) CN104572800B (zh)
CA (1) CA2864915A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106777766A (zh) * 2017-01-03 2017-05-31 山东理工大学 一级渐变刚度板簧的各片副簧下料长度的设计方法
CN107341197A (zh) * 2017-06-16 2017-11-10 国电南瑞科技股份有限公司 一种电力系统多版本图形差异可视化展示方法
CN114416163A (zh) * 2021-12-27 2022-04-29 中国民航信息网络股份有限公司 一种制品管理方法、系统、存储介质和电子设备

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9779193B1 (en) * 2015-03-31 2017-10-03 Cadence Design Systems, Inc. Methods, systems, and computer program product for implementing electronic design layouts with symbolic representations
WO2017134651A1 (en) * 2016-02-01 2017-08-10 Shapedo Ltd. Comparing and merging complex data structures
JP6870479B2 (ja) 2017-05-30 2021-05-12 オムロン株式会社 Hmi開発支援装置、hmi開発支援方法、および、hmi開発支援プログラム
US10423750B1 (en) * 2017-10-24 2019-09-24 Cadence Design Systems, Inc. Technology database independent components for integrated circuit package

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080244482A1 (en) * 2007-03-30 2008-10-02 Taiwan Semiconductor Manufacturing Company, Ltd. Integrated circuit design usage and sanity verification
CN102112988A (zh) * 2008-06-10 2011-06-29 绿洲模具公司 用于针对生产工作流的芯片设计中的单元完整性、改变和起点的独立评估的方法和设备
US20120317525A1 (en) * 2011-06-10 2012-12-13 Oasis Tooling, Inc. Identifying hierarchical chip design intellectual property through digests

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3137231B2 (ja) * 1995-11-02 2001-02-19 株式会社図研 差分表示装置
JP3761156B2 (ja) * 2001-07-27 2006-03-29 三菱電機株式会社 接続図面の編集表示装置、その動作方法およびその方法をコンピュータに実行させるプログラム
US7420573B1 (en) 2001-11-09 2008-09-02 The Mathworks, Inc. System and method for merging electronic diagrams
GB0217201D0 (en) * 2002-07-24 2002-09-04 Beach Solutions Ltd XML database differencing engine
US7373586B2 (en) 2004-09-03 2008-05-13 International Business Machines Corporation Differencing and merging tree-structured documents
US7703027B2 (en) 2005-01-13 2010-04-20 National Instruments Corporation Merging graphical programs
US8286132B2 (en) 2008-09-25 2012-10-09 International Business Machines Corporation Comparing and merging structured documents syntactically and semantically
JP2012038266A (ja) * 2010-08-11 2012-02-23 Ricoh Co Ltd 設計支援装置及び設計支援方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080244482A1 (en) * 2007-03-30 2008-10-02 Taiwan Semiconductor Manufacturing Company, Ltd. Integrated circuit design usage and sanity verification
CN102112988A (zh) * 2008-06-10 2011-06-29 绿洲模具公司 用于针对生产工作流的芯片设计中的单元完整性、改变和起点的独立评估的方法和设备
US20120317525A1 (en) * 2011-06-10 2012-12-13 Oasis Tooling, Inc. Identifying hierarchical chip design intellectual property through digests

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106777766A (zh) * 2017-01-03 2017-05-31 山东理工大学 一级渐变刚度板簧的各片副簧下料长度的设计方法
CN106777766B (zh) * 2017-01-03 2019-09-03 山东理工大学 一级渐变刚度板簧的各片副簧下料长度的设计方法
CN107341197A (zh) * 2017-06-16 2017-11-10 国电南瑞科技股份有限公司 一种电力系统多版本图形差异可视化展示方法
CN107341197B (zh) * 2017-06-16 2020-05-05 国电南瑞科技股份有限公司 一种电力系统多版本图形差异可视化展示方法
CN114416163A (zh) * 2021-12-27 2022-04-29 中国民航信息网络股份有限公司 一种制品管理方法、系统、存储介质和电子设备

Also Published As

Publication number Publication date
JP2015079493A (ja) 2015-04-23
CN104572800B (zh) 2018-08-21
US9557989B2 (en) 2017-01-31
KR20150034106A (ko) 2015-04-02
CA2864915A1 (en) 2015-03-25
EP2854052A1 (en) 2015-04-01
US20150088861A1 (en) 2015-03-26
JP6352744B2 (ja) 2018-07-04

Similar Documents

Publication Publication Date Title
CN104572800A (zh) Ic设计数据的比较与合并
US10719560B2 (en) System for identifying, associating, searching and presenting documents based on relation combination
US10719559B2 (en) System for identifying, associating, searching and presenting documents based on time sequentialization
CN104572067B (zh) 用于存储屏幕快照的方法和系统
US20070130113A1 (en) Method and system for navigation and visualization of data in relational and/or multidimensional databases
US10296626B2 (en) Graph
TW201337606A (zh) 動態重新分類與擷取目標資訊物件之使用者設備、系統及方法
US9639587B2 (en) Social network analyzer
EP3721354A1 (en) Systems and methods for querying databases using interactive search paths
US20240265153A1 (en) Seamless three-dimensional design collaboration
CA2823832C (en) A method for multiple pass symbol and components-based visual object searching of documents
JPWO2004111877A1 (ja) 情報処理方法及びその装置、及びそのプログラム
CA3189504A1 (en) Systems and methods to facilitate enhanced document retrieval in electronic discovery
US10891580B2 (en) Service design assistance system and service design assistance method
JP2022041859A (ja) プログラム、方法、情報処理装置、及びシステム
JP2022012940A (ja) 計算機システムおよび貢献度計算方法
CN111222166A (zh) 多人在线协同的设计素材共享与管理的方法和装置
CN110941662A (zh) 科研合作关系的图示化方法、系统、存储介质、及终端
EP3001336A1 (en) Presenting publisher data sets in context
EP4002187A1 (en) Progress tracking with automatic symbol detection
US7079907B2 (en) Apparatus, system and method for design support for providing information for bi-directional references between design information and geometry information
CN104834661B (zh) 管理方法、管理设备和管理系统
US10331426B1 (en) Systems and methods of diagram transformation
CN115983196B (zh) 一种通过lvs检查分析芯片物理版图噪声耦合与屏蔽的方法
US20150100361A1 (en) In-context oilfield process documentation system and method

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant