CN112464636A - 约束文件的比较方法、装置、电子设备和存储介质 - Google Patents
约束文件的比较方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112464636A CN112464636A CN202011343056.9A CN202011343056A CN112464636A CN 112464636 A CN112464636 A CN 112464636A CN 202011343056 A CN202011343056 A CN 202011343056A CN 112464636 A CN112464636 A CN 112464636A
- Authority
- CN
- China
- Prior art keywords
- constraint
- attribute
- command
- file
- data structure
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 99
- 230000001419 dependent effect Effects 0.000 claims description 20
- 239000010410 layer Substances 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 17
- 230000009471 action Effects 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 10
- 239000002356 single layer Substances 0.000 claims description 9
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000013461 design Methods 0.000 description 53
- 238000010586 diagram Methods 0.000 description 28
- 230000006870 function Effects 0.000 description 20
- 101000874179 Homo sapiens Syndecan-1 Proteins 0.000 description 19
- 102100035721 Syndecan-1 Human genes 0.000 description 19
- 101000579423 Homo sapiens Regulator of nonsense transcripts 1 Proteins 0.000 description 17
- 102100028287 Regulator of nonsense transcripts 1 Human genes 0.000 description 17
- 238000011985 exploratory data analysis Methods 0.000 description 12
- 102100021087 Regulator of nonsense transcripts 2 Human genes 0.000 description 10
- 101710028540 UPF2 Proteins 0.000 description 10
- 101000692109 Homo sapiens Syndecan-2 Proteins 0.000 description 7
- 102100026087 Syndecan-2 Human genes 0.000 description 7
- 230000015572 biosynthetic process Effects 0.000 description 6
- 238000007689 inspection Methods 0.000 description 6
- 238000003786 synthesis reaction Methods 0.000 description 6
- 101100457838 Caenorhabditis elegans mod-1 gene Proteins 0.000 description 4
- 101150110972 ME1 gene Proteins 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 102100036285 25-hydroxyvitamin D-1 alpha hydroxylase, mitochondrial Human genes 0.000 description 2
- 101000875403 Homo sapiens 25-hydroxyvitamin D-1 alpha hydroxylase, mitochondrial Proteins 0.000 description 2
- 241001181114 Neta Species 0.000 description 2
- 238000012938 design process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/194—Calculation of difference between files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种约束文件的比较方法、装置、电子设备和计算机可读存储介质。该约束文件的比较方法,包括:获取第一约束文件和第二约束文件,第一约束文件包括至少一个第一约束命令,第二约束文件包括至少一个第二约束命令;分别对第一约束文件和第二约束文件进行解析以获得第一约束文件的第一数据结构和第二约束文件的第二数据结构,第一数据结构指示了至少一个第一约束命令形成的约束规则,第二数据结构指示了至少一个第二约束命令形成的约束规则;比较第一数据结构与第二数据结构,以获得用于判断第一约束文件和第二约束文件之间是否存在差异的比较结果。该比较方法可以在不依赖任何工具的情况快速准确地比较出至少两个约束文件在约束规则上的差异。
Description
技术领域
本公开的实施例涉及一种约束文件的比较方法、约束文件的比较装置、电子设备和计算机可读存储介质。
背景技术
在芯片设计的流程中,很多步骤都会用到各种格式的约束文件,比如对芯片设计的时序进行约束的时序约束文件,对芯片设计的功耗进行约束的约束文件等。
从芯片设计到流片,存在多个芯片设计的检查环节,这些检查环节是保证芯片顺利流片的必要环节,而这些检查环节都需要用到不同类型的约束文件。而且,因为检查环节可能多次迭代,每次迭代都涉及到设计修改和约束文件的变化,因此对约束文件的比较在整个芯片设计中也会重复很多次。
发明内容
本公开至少一个实施例提供一种约束文件的比较方法,包括:获取第一约束文件和第二约束文件,所述第一约束文件包括至少一个第一约束命令,所述第二约束文件包括至少一个第二约束命令;分别对所述第一约束文件和所述第二约束文件进行解析以获得所述第一约束文件的第一数据结构和所述第二约束文件的第二数据结构,所述第一数据结构指示了所述至少一个第一约束命令形成的约束规则,所述第二数据结构指示了所述至少一个第二约束命令形成的约束规则;以及比较所述第一数据结构与所述第二数据结构,以获得用于判断所述第一约束文件和所述第二约束文件之间是否存在差异的比较结果。
例如,在本公开一实施例提供的比较方法中,分别对所述第一约束文件和所述第二约束文件进行解析以获得所述第一约束文件的第一数据结构和所述第二约束文件的第二数据结构,包括:获取所述至少一个第一约束命令各自的第一命令数据结构和获取所述至少一个第二约束命令各自的第二命令数据结构,所述第一命令数据结构指示了所述第一约束命令的第一约束属性和所述第一约束属性的属性信息,所述第二命令数据结构指示了第二约束命令的第二约束属性和所述第二约束属性的属性信息;以及根据所述第一命令数据结构,对每个第一约束命令进行解析而生成所述第一数据结构,并且根据所述第二命令数据结构,对每个第二约束命令进行解析而生成所述第二数据结构。
例如,在本公开一实施例提供的比较方法中,第一命令数据结构和所述第二命令数据结构为树状数据结构。
例如,在本公开一实施例提供的比较方法中,获取所述至少一个第一约束命令各自的第一命令数据结构和获取所述至少一个第二约束命令各自的第二命令数据结构,包括:从命令数据结构文件中获取所述至少一个第一约束命令各自的第一命令数据结构和所述至少一个第二约束命令各自的第二命令数据结构,所述命令数据结构文件包括多个规范命令中每个规范命令的命令数据结构,所述命令数据结构指示了规范命令的约束属性和约束属性的属性信息。
例如,在本公开一实施例提供的比较方法中,该比较方法还包括:获取规范命令语法文件,所述规范命令语法文件包括多个规范命令;以及按照预设的解析规则对规范命令语法文件中的每个规范命令进行解析而生成所述命令数据结构文件。
例如,在本公开一实施例提供的比较方法中,获取规范命令语法文件包括:从规范命令文档中提取每个规范命令的语法信息,所述规范命令文档包括所述多个规范命令;按照预设的文件格式,根据多个所述语法信息生成所述规范命令语法文件;所述规范命令文档中的规范命令包括所述至少一个第一约束命令和所述至少一个第二约束命令。
例如,在本公开一实施例提供的比较方法中,根据所述第一命令数据结构,对每个第一约束命令进行解析而生成所述第一数据结构,并且根据所述第二命令数据结构,对每个第二约束命令进行解析而生成所述第二数据结构,包括:根据所述第一约束属性的属性信息和所述第一约束命令,确定所述第一约束属性的属性值,并且根据所述第二约束属性的属性信息和所述第二约束命令确定所述第二约束属性的属性值;根据所述第一约束文件包含的第一约束命令、所述第一约束命令的约束属性和所述约束属性的属性值,生成所述第一数据结构;以及根据所述第二约束文件包含的第二约束命令、所述第二约束命令的约束属性和所述约束属性的属性值,生成所述第二数据结构。
例如,在本公开一实施例提供的比较方法中,第一数据结构和所述第二数据结构为嵌套的哈希表结构,所述嵌套的哈希表结构中的第一层索引包括所述第一约束命令的标识或者所述第二约束命令的标识,所述每个第一层索引下各自包括属性哈希表,所述属性哈希表包含至少一个第一约束属性的属性索引或者至少一个第二约束属性的属性索引,每个第一约束属性的属性索引下包含该第一约束属性的属性值,每个第二约束属性的属性索引下包含该第二约束属性的属性值。
例如,在本公开一实施例提供的比较方法中,属性哈希表包含的所述属性索引的索引值是唯一的。
例如,在本公开一实施例提供的比较方法中,属性值包括标量、集合、单层子属性哈希表以及多层子属性哈希表中的任意一种,在所述属性值为单层子属性哈希表的情形中,所述单层子属性哈希表中的约束属性的属性值包括所述标量或者所述集合,在所述属性值为多层子属性哈希表的情形中,所述多层子属性哈希表中的至少一个约束属性的属性值包括哈希表。
例如,在本公开一实施例提供的比较方法中,该比较方法还包括:在多个所述第一约束属性的属性值为集合的情况下,将多个所述第一约束属性的属性值拆分为多个标量,或者将多个所述第一约束属性中被指定的约束属性的属性值拆分为多个标量;在多个所述第二约束属性的属性值为集合的情况下,将多个所述第二约束属性的属性值拆分为多个标量,或者将多个所述第二约束属性中被指定的约束属性的属性值拆分为多个标量。
例如,在本公开一实施例提供的比较方法中,该比较方法还包括:确定所述第一约束文件和所述第二约束文件的文件类型;在多个所述第一约束属性的属性值为集合的情况下,将多个所述第一约束属性的属性值拆分为多个标量,或者将多个所述第一约束属性中被指定的约束属性的属性值拆分为多个标量,包括:在多个所述第一约束属性的属性值为集合并且所述第一约束文件的文件类型为时序约束文件的情况下,将多个所述第一约束属性的属性值拆分为多个标量;或者将多个所述第一约束属性中被指定的约束属性的属性值拆分为多个标量,在多个所述第二约束属性的属性值为集合的情况下,将多个所述第二约束属性的属性值拆分为多个标量,或者将多个所述第二约束属性中被指定的约束属性的属性值拆分为多个标量,包括:在多个所述第二约束属性的属性值为集合并且所述第二约束文件的文件类型为时序约束文件情况下,将多个所述第二约束属性的属性值拆分为多个标量,或者将多个所述第二约束属性中被指定的约束属性的属性值拆分为多个标量。
例如,在本公开一实施例提供的比较方法中,该比较方法还包括:确定所述第一约束命令或者第二约束命令是否为依赖命令,所述依赖命令为多个约束属性相互关联的规范命令;在多个所述第一约束属性的属性值为集合的情况下,将多个所述第一约束属性的属性值拆分为多个标量,或者将多个所述第一约束属性中被指定的约束属性的属性值拆分为多个标量,包括:在多个所述第一约束属性的属性值为集合并且所述第一约束命令为依赖命令的情况下,将所述多个第一约束属性的属性值拆分为多个标量;或者将所述多个第一约束属性中被指定的第一约束属性的属性值拆分为多个标量,在多个所述第二约束属性的属性值为集合的情况下,将多个所述第二约束属性的属性值拆分为多个标量,或者将多个所述第二约束属性中被指定的约束属性的属性值拆分为多个标量,包括:在所多个所述第二约束属性的属性值为集合并且所述第二约束命令为依赖命令情况下,将多个所述第二约束属性的属性值拆分为多个标量,或者将多个所述第二约束属性中被指定的约束属性的属性值拆分为多个标量。
例如,在本公开一实施例提供的比较方法中,所述第一约束属性或者第二约束属性的属性信息包括:动作、属性值个数和目标命名空间中的至少一个,所述动作指示是否允许所述约束属性的属性值个数包括多个,所述目标命名空间表示所述约束属性的查找路径。
例如,在本公开一实施例提供的比较方法中,该比较方法还包括按照输出文档格式,输出所述比较结果。
本公开至少一个实施例还提供一种约束文件的比较装置,包括:获取单元,配置为获取第一约束文件和第二约束文件,所述第一约束文件包括至少一个第一约束命令,所述第二约束文件包括至少一个第二约束命令;解析单元,配置为分别对所述第一约束文件和所述第二约束文件进行解析以获得所述第一约束文件的第一数据结构和所述第二约束文件的第二数据结构,所述第一数据结构指示了所述至少一个第一约束命令形成的约束规则,所述第二数据结构指示了所述至少一个第二约束命令形成的约束规则;以及比较单元,配置为比较所述第一数据结构与所述第二数据结构,以获得用于判断所述第一约束文件和所述第二约束文件之间是否存在差异的比较结果。
本公开至少一个实施例还提供一种电子设备,包括:处理器;存储器,包括一个或多个计算机程序模块;一个或多个计算机程序模块被存储在存储器中并被配置为由处理器执行,一个或多个计算机程序模块包括用于实现本公开任一实施例提供的约束文件的比较方法的指令。
本公开至少一个实施例还提供一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当非暂时性计算机可读指令由计算机执行时可以实现本公开任一实施例提供的约束文件的比较方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了一种约束文件的示例;
图2示出了一种芯片设计的流程图;
图3示出了利用文本比较工具对两个约束文件进行对比的示例;
图4A示出了本公开至少一个实施例提供的一种约束文件的比较方法的流程图;
图4B示出了本公开至少一个实施例提供的约束文件的数据结构示意图;
图5示出了本公开至少一个实施例提供的对两个UPF约束文件进行解析而获得的第一数据结构和第二数据结构示意图;
图6A示出了本公开至少一个实施例提供的图4A中的步骤S20的一个实施例的方法流程图;
图6B示出了本公开至少一个实施例提供的约束命令的树状数据结构的示意图;
图6C示出了一种约束命令语法文件中的某个约束命令的示例;
图6D示出了本公开至少一个实施例提供的步骤S22的一个实施例的方法流程图;
图7示出了本公开至少一实施例提供的将约束属性的属性值拆分为多个标量所形成的约束文件的数据结构的示意图;
图8A示出了本公开至少一实施例提供的另一约束文件的比较方法的流程图;
图8B示出了本公开至少一实施例提供的一种输出文档格式的示意图;
图9A~9C示出了利用本公开至少一实施例提供的约束文件的比较方法对两个约束文件进行比较的示意图;
图10A~10C示出了利用本公开至少一实施例提供的约束文件的比较方法对两个约束文件进行比较的示意图;
图11示出了本公开至少一个实施例提供的一种约束文件的比较装置的示意框图;
图12为本公开一些实施例提供的一种电子设备的示意框图;
图13示出了本公开至少一个实施例提供的另一种电子设备的示意框图;以及
图14示出了本公开至少一个实施例提供的一种计算机可读存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
在芯片设计的流程中,很多步骤都会用到各种格式的约束文件,比如对芯片设计的时序进行约束的时序约束文件(Synopsys design constraints,SDC),对芯片设计的功耗进行约束的约束文件,使用Spyglass做寄存器转换级电路(Register Transfer Level,RTL)质量检查的SGDC约束文件等。对芯片设计的功耗进行约束的约束文件,例如可以理解包括UPF(Unified Power Format)约束文件或者CPF(Common Power Forma)约束文件。这些约束文件的通常是基于命令的形式,用于对芯片设计中的设计规则,时序,功耗等进行约束。
图1示出了一种约束文件的示例。其中,图1中的(A)为约束文件中所包含多个约束命令的示例,图1中的(B)为约束文件中约束命令的命令格式。
如图1中(A)所示,约束文件通常由很多不同的约束命令组成,这些约束命令来自标准的规范文档,比如UPF的约束命令来自规范文档IEEE1801,比如SDC的约束命令来自新思科技的SDC规范文档。每个约束命令由特定的命令格式组成。如图1中(B)所示,命令格式例如可以是约束命令+{约束属性,属性值},属性值为可选。例如,图1中(A)文件中的第一行,约束命令是command_a,约束属性为-attr1和-attr2,约束属性-attr1和-attr2的属性值分别为value1和value2。而第二行的约束命令为command_b,其约束属性为object和-attr3,约束属性object没有属性值,约束属性-attr3的属性值为value3。
约束文件广泛应用在各种电子设计辅助工具(例如,Electronic designautomation,EDA)中,用来检查设计是否符合设计者的意图。
图2示出了一种芯片设计的流程图。
如图2所示,芯片设计需要经过RTL设计、逻辑综合设计、物理设计等多个步骤。在每个步骤的相关设计完成后,都需要对该步骤的相关设计进行检查。例如,RTL设计后,使用静态验证工具对RTL设计规则进行检查,在逻辑综合设计后,可以对低功耗设计规则和时序进行检查。
可见,从芯片设计到流片,存在多个设计约束的检查环节,这些检查是保证芯片顺利流片的必要环节,而这些检查环节都需要用到不同类型的约束文件。例如,对RTL设计规则检查需要用到SGDC约束文件,对芯片设计的功耗进行检查需要用到UPF或者CPF约束文件,对芯片设计的时序进行检查需要用户到SDC约束文件。
当这些检查操作检查出问题,往往需要定位问题发生的原因。首先需要定位问题发生是否是因为约束文件变动引起,例如可以对前一个版本和当前版本的约束文件进行对比来确定约束文件是否发生变动。因为检查环节可能多次迭代,每次迭代都涉及到设计修改和约束文件变化,因此对约束文件的比较在整个芯片设计中也会重复很多次。
如图2所示,例如,使用Spyglass对RTL设计规则检查,Spyglass获取原始设计约束文件,Spyglass根据自身的格式对原始设计约束文件重新排版,并输出重新排版后的约束文件,并且根据重新排版后的约束文件进行RTL设计规则检查。若对RTL设计规则检查出现问题,则需要对比重新排版后的约束文件与原始设计约束文件之间的约束规则是否一致。
在对RTL设计规则检查出现问题之后,芯片设计人员可以对RTL设计进行修改,或者对约束文件迭代,从而利用修改后的RTL设计或者约束文件重新进行RTL设计规则进行检查,直到RTL设计规则检查成功,则可以进行下一流程,例如可以进行逻辑综合设计。逻辑综合设计需要进行设计规则和时序检查,与RTL设计规则检查类似,在此不再赘述。
约束文件的改变可能来源于不同设计人员修改约束文件,或者EDA工具输出的约束文件的个数变化。不同设计人员修改约束文件,比如RTL设计人员和DFT设计人员都可能修改SDC和UPF,而不同团队不同设计人员修改的方式因人而异,同样的功能实现方式也可能千差万别。EDA工具输出约束文件的格式变化,比如图2中的逻辑综合步骤,输入的约束文件可能为人工编写,而逻辑综合工具会产生输出重新排版的约束文件,输入的约束文件和重新排版的约束文件往往存在很大差异。又比如,使用新思科技公司EDA工具输出的SDC/UPF格式,与铿腾电子公司EDA工具输出的SDC/UPF格式不一样,即使两者功能上没有差别。
在相关技术中,例如可以使用文本比较工具(例如,tkdif或者vimdiff)来对比多个约束文件。文本比较工具往往是基于纯文本的方式比较,跟文本顺序和格式有很大关系。然而,对于多个约束文件的比较,不需要比较多个约束文件的表达格式或者文本顺序是否完全一致,只需要比较多个约束文件所达到的功能是否一致,即,比较多个约束文件的逻辑是否一致。如果多个约束文件达到相同的功能或者说是多个约束文件的逻辑一致,则认为多个约束文件相同。约束文件所达到的功能或者约束文件的逻辑是由约束文件中包括的多个约束命令所形成的约束规则决定的。
对于两个在功能和逻辑上完全一致,但是文件格式不同的约束文件,文本比较工具通常会认为这两个文件是不同的。然而,实际上这两个约束文件在功能和逻辑上是完全相同,也就是这两个约束文件所形成的约束规则是完全相同的。
图3示出了利用文本比较工具对两个约束文件进行对比的示例。
在图3中包括A组~D组的示例。在每组示例包括第一约束文件中的文本11和第二个约束文件中的文本12。
如图3所示,在A组的示例中,同一约束命令的同一约束属性的内容顺序不同。即,文本11和文本12中同一约束命令1的约束属性C的属性值中元素的顺序不同。文本11中约束属性C的属性值为{X Y Z},而文本12中约束属性C的属性值为{Z X Y}。但是,文本11和文本12的逻辑功能是相同的,例如,约束属性A表示电源,约束属性B表示地,则文本11和文本12的都可以表示对象X、对象Y、对象Z的一端接电源,电源的名称为power_netA,另一端接地,地的名称为power_netB。如果使用文本比较工具对A组的约束命令进行比较,只能比较出文本11和文本12在文本上是不同的。
在B组的示例中,同一约束命令不同约束属性的顺序不同。即,文本11和文本12中不同约束属性的顺序不同。但是,文本11和文本12的逻辑功能是相同的,例如都是表示对象X、对象Y、对象Z的一端接电源,电源的名称为power_netA,另一端接地,地的名称为power_netB。如果使用文本比较工具对B组的约束命令进行比较,只能比较出文本11和文本12在文本上是不同的。
在C组的示例中,文本11和文本12的逻辑功能是相同的,只是文本11中约束属性-ports的属性值是以集合的形式表示的,而文本12中约束属性-ports的属性值是以标量的形式表示的。也就是,在文本12中集合{X Y…N}中的元素被拆分为多个标量。如果使用文本比较工具对C组的约束命令进行比较,只能比较出文本11和文本12在文本上是不同的。
在D组的示例中,文本11和文本12的逻辑功能是相同的,只是文本11中约束属性-ports的属性值是以集合的形式表示的,而文本12中约束属性-ports的属性值是以标量的形式表示的。也就是在文本12中集合{X Y…N}中的元素被拆分为多个标量。如果使用文本比较工具对D组的约束命令进行比较,只能比较出文本11和文本12在文本上是不同的。
使用文本比较工具分别对A组~D组中的约束命令进行比较的比较结果都是文本11和文本12不相同。然而,实际上文本11和文本12的逻辑功能都是相同的。可见,文本比较工具只能简单地对比文本,往往需要人工对文本比较工具的比较结果进一步地分析,例如可以逐一分析约束文件的文本上的差异是否是真正的逻辑或者功能上的差异,非常花费时间和精力。
在另一些相关技术中,可以使用特定的EDA工具对约束文件进行对比。然而由于EDA的流程非常耗时,对于大型的芯片设计,整个流程可能需要几个甚至十几个小时完成,即使对于比较小的设计,也可能需要数十分钟,因此,导致使用EDA工具对约束文件进行比较也非常耗时。另外,有一些命令约束文件的比较目前并没有EDA工具支持,比如Spyglass的SGDC约束文件,只能使用文本工具进行。还有一些特定的EDA需要特定的许可文件,如果专门为了这个功能购买许可文件,成本比较高。比如比较SDC约束文件的PrimeTime-GCA工具,除了PrimeTime的许可文件外,还需要额外付费的GCA许可。比如比较UPF约束文件的VCLP工具,也需要VCLP的许可文件。而且当EDA软件被禁用的时候,就无法使用这些功能。
综上,文本比较工具能解决基于文本的简单比较,但是对一些逻辑上相等但文本上不等的约束文件比较无能为力。而使用EDA工具进行约束文件比较非常耗时,大大影响了迭代周期,从而增加整个芯片的研发周期。因此,亟需一种不需要依赖任何第三方工具并且能够快速准确地比较出至少两个约束文件所实现的逻辑功能的差异的方法。
本公开至少一个实施例提供一种约束文件的比较方法、装置、电子设备和计算机可读存储介质。该约束文件的比较方法包括:获取第一约束文件和第二约束文件,第一约束文件包括至少一个第一约束命令,第二约束文件包括至少一个第二约束命令,分别对第一约束文件和第二约束文件进行解析以获得第一约束文件的第一数据结构和第二约束文件的第二数据结构,第一数据结构指示了至少一个第一约束命令形成的约束规则,第二数据结构指示了至少一个第二约束命令形成的约束规则,以及比较第一数据结构与第二数据结构,以获得用于判断第一约束文件和第二约束文件之间是否存在差异的比较结果。该约束文件的比较方法在不依赖任何第三方工具的情况下能够快速准确地比较出至少两个约束文件所实现的逻辑功能的差异。
图4A示出了本公开至少一个实施例提供的一种约束文件的比较方法的流程图。如图4A所示,该比较方法包括步骤S10-步骤S30。
步骤S10:获取第一约束文件和第二约束文件。
步骤S20:分别对第一约束文件和第二约束文件进行解析以获得第一约束文件的第一数据结构和第二约束文件的第二数据结构。
步骤S30:比较第一数据结构与第二数据结构,以获得用于判断第一约束文件和第二约束文件之间是否存在差异的比较结果。
在本公开的一些实施例中,对于步骤S10,例如,第一约束文件包括至少一个第一约束命令,第二约束文件包括至少一个第二约束命令。第一约束文件例如可以包括多个第一约束命令,该多个第一约束命令形成约束规则,以根据约束规则对芯片设计的时序、功耗等进行约束。第二约束文件例如可以包括多个第二约束命令,该多个第二约束命令形成约束规则,以根据约束规则对芯片设计的时序、功耗等进行约束。
第一约束文件和第二约束文件例如可以是用户期望比较的两个约束文件。第一约束文件和第二约束文件例如可以是同一类型的约束文件,例如都是UPF文件或者SDC文件。当然,第一约束文件和第二约束文件也可以是不同类型的约束文件。第一约束文件和第二约束文件例如可以是不同EDA工具输出的约束文件,也可以是开发人员开发的约束文件或者是对某个约束文件进行修改后的约束文件。总之,用户可以通过各种方式获取任何两个或者多个约束文件进行比较。
在本公开的一些实施例中,对于步骤S20,例如,第一数据结构指示了至少一个第一约束命令形成的约束规则,第二数据结构指示了至少一个第二约束命令形成的约束规则。第一数据结构和第二数据结构例如可以是树状结构,并且树状结构例如可以以哈希表的结构存储。以哈希表结构存储的第一数据结构可以指示至少一个第一约束命令形成的约束规则,以哈希表结构存储的第二数据结构可以指示至少一个第二约束命令形成的约束规则。第一数据结构和第二数据结构例如可以是下图4B所示的数据结构。
图4B示出了本公开至少一个实施例提供的约束文件的数据结构示意图。
如图4B所示,约束文件的数据结构可以是嵌套的哈希表结构。即,约束文件可以抽象为一个嵌套的哈希表结构。该嵌套的哈希表结构中的第一层索引可以是命令索引,命令索引可以是约束命令的标识。如图4B中的约束命令1、约束命令2、…约束命令N为约束文件中所包含的所有约束命令的标识。约束命令的标识例如可以是约束命令的名称。
在每个第一层索引下各自包括一个属性哈希表,属性哈希表可以包含一个或者多个约束属性的属性索引。如图4B所示,命令索引约束命令2下包括属性哈希表401,属性哈希表401包含约束属性1~约束属性N的约束属性的属性索引。约束属性的属性索引例如可以是该约束属性的属性名称。每个约束属性的属性索引下包含该约束属性的属性值。在嵌套的哈希表结构中,约束命令不依赖约束属性的顺序,从而至少部分地解决了图3中B组的问题,即,本公开实施例提供的比较方法对多个约束文件的比较不受约束属性的顺序的影响,从而可以对多个约束文件的逻辑和功能进行准确地比较。
在本公开的一些实施例中,属性哈希表包含的属性索引的索引值是唯一的。例如,属性哈希表401包含的属性索引的索引值分别为约束属性1~约束属性N,那么约束属性1~约束属性N是互不相同的。通过属性索引的索引值唯一来将同一个约束属性的值都集合到一个属性索引下,从而至少部分地解决了例如图3中C组中的问题,即,本公开提供的实施例可以同一个属性的属性值集合到一个索引下,使得对多个约束文件的比较不受约束属性是否拆分表示的影响,从而可以对多个约束文件的逻辑和功能进行准确地比较。
在本公开的一些实施例中,属性值包括标量、集合、单层子属性哈希表以及多层子属性哈希表中的任意一种。在属性值为单层子属性哈希表的情形中,单层子属性哈希表中的约束子属性的属性值包括标量或者集合。在属性值为多层子属性哈希表的情形中,多层子属性哈希表中的至少一个约束子属性的属性值包括哈希表,约束子属性包括在单层子属性哈希表或者多层属性哈希表中的第一约束属性或者第二约束属性。通过集合存储多个属性值,跟属性值的顺序没有任何关系,至少部分地解决了例如图3中A组中的问题,使得对多个约束文件的比较不受属性值的表示形式的影响,从而可以对多个约束文件的逻辑和功能进行准确地比较。
如图4B所示,索引约束命令2下的属性哈希表401中的约束属性M的属性值为一个哈希表411,即在属性哈希表401下嵌套有哈希表411。哈希表411包括约束属性M.1、约束属性M.2、…。约束属性M.1、约束属性M.2、…为约束属性M的约束子属性。约束属性M.1、约束属性M.2、…中的每个约束属性的属性值是标量或者集合,那么哈希表411即为单层子属性哈希表。也即,约束属性M的属性值为单层子属性哈希表,哈希表411中的约束属性M.1、约束属性M.2、…为约束属性M的约束子属性。
如图4B所示,索引约束命令2下的属性哈希表401中的约束属性N的属性值为一个哈希表421,即在属性哈希表401下嵌套有哈希表421。哈希表421包括多个属性值,在该多个属性值中属性值N.2为带子属性的标量属性值。带子属性的标量属性值,例如可以是在该标量属性值下再次嵌套了哈希表。如图4B的示例中,带子属性的标量属性值N.2再一次嵌套了哈希表4211,哈希表4211中的约束属性N.2.1和约束属性N.2.2为属性值N.2的约束子属性。因此,约束属性N的属性值为多层子属性哈希表。
需要理解的是,虽然图4B所示的多层子属性哈希表是两层子属性哈希表,但是多层子属性哈希表不限于为两层,约束属性下嵌套几层哈希表是根据约束文件而具体确定的,本公开对多层子属性哈希表的层数不做限定。例如在哈希表4211下还可以再次嵌套哈希表。
例如,第一约束文件的第一数据结构包含多个第一约束属性的属性索引,每个第一约束属性的属性索引下包含该第一约束属性的属性值。该第一约束属性的属性值包括标量、集合、单层子属性哈希表以及多层子属性哈希表中的任意一种。第二约束文件的第二数据结构包含多个第二约束属性的属性索引,每个第二约束属性的属性索引下包含该第二约束属性的属性值。该第二约束属性的属性值包括标量、集合、单层子属性哈希表以及多层子属性哈希表中的任意一种。
为了便于理解本公开所提供的比较方法,图5示例性示出了对两个约束文件进行解析所得到的第一数据结构和第二数据结构。需要理解的是,图5仅为一种便于理解本公开的比较方法的示例,对本公开不具有限定作用。
图5示出了本公开至少一个实施例提供的对两个UPF约束文件进行解析而获得的第一数据结构和第二数据结构示意图。
如图5所示,在该示例中包括UPF1约束文件和UPF2约束文件。
对UPF1约束文件进行解析获得第一数据结构501。第一数据结构501指示出了UPF1中所包含的约束命令和每个约束命令的约束属性和约束属性的属性值。如图5所示,第一数据结构501包括约束命令connect_supply_net、create_power_domain、set_port_attribute和add_power_state。约束命令connect_supply_net包括约束属性VDD1和约束属性VDD2。约束属性VDD1下包括VDD1的约束子属性-ports。约束子属性-ports下为约束子属性-ports的属性值。约束子属性-ports的属性值为集合。约束属性VDD2下包括VDD2的约束子属性-ports。类似地,第一数据结构501中也指示了create_power_domain、set_port_attribute和add_power_state的约束属性和约束属性的属性值,在此不再赘述。
对UPF1约束文件进行解析获得第二数据结构502。第二数据结构502也包括约束命令connect_supply_net、create_power_domain、set_port_attribute和add_power_state。与第一数据结构501类似,第二数据结构502也指示出了UPF2中所包含的约束命令和每个约束命令的约束属性和约束属性的属性值,在此不再赘述。
对于步骤30,例如比较第一数据结构501和第二数据结构502来获得用于判断第一约束文件和第二约束文件之间是否存在差异的比较结果,从而判断UPF1和UPF2之间是否存在差异。
图6A示出了本公开至少一个实施例提供的图4A中的步骤S20的一个实施例的方法流程图。
如图6A所示,在一些示例中,图4A中的步骤S20可以包括步骤S21~步骤S22。
步骤S21:获取至少一个第一约束命令各自的第一命令数据结构和获取至少一个第二约束命令各自的第二命令数据结构。
步骤S22:根据第一命令数据结构,对每个第一约束命令进行解析而生成第一数据结构,并且根据第二命令数据结构,对每个第二约束命令进行解析而生成第二数据结构。
例如,对于步骤S21,第一命令数据结构指示了第一约束命令的第一约束属性和第一约束属性的属性信息,第二命令数据结构指示了第二约束命令的第二约束属性和第二约束属性的属性信息。
在本公开的一些实施例中,第一命令数据结构和第二命令数据结构可以是树状数据结构。
在本公开的一些实施例中,在步骤S21和步骤S22,可以对第一约束文件中的至少一个第一约束命令和第二约束文件中的至少一个第二约束命令执行相同的操作,因此为了便于描述,除特别说明外,在下文中第一约束命令和第二约束命令统称为约束命令,第一命令数据结构和第二命令数据结构统称为命令数据结构。
图6B示出了本公开至少一个实施例提供的约束命令的树状数据结构的示意图。
如图6B所示,在树状数据结构中,一个约束命令由一个或者多个约束属性节点构成。一个约束属性节点下包括该约束属性的属性信息。属性信息例如可以包括标识符、叶节点属性列表和子属性列表等。
标识符可以是每个约束属性节点唯一的标识符,用来区分不同的约束属性节点。标识符可以是该树状数据结构中一个必须的叶节点。标识符下面可以没有任何分支。
叶节点属性列表可以是一个非叶节点,包含所有叶节点属性分支,叶节点属性分支下面可以不再有分支。叶节点属性分支例如可以包括约束属性的动作、属性值个数和目标命名空间中的至少一个。叶节点属性分支例如还可以包括必须性和互斥性等。动作指示是否允许约束属性的属性值个数包括多个,目标命名空间表示所述约束属性的查找路径。目标命名空间的表示格式例如可以是“约束命令.属性节点”,或者“约束命令.属性节点.子属性节点....”
必须性指示该约束属性在约束命令中是否必须存在,互斥性指示该约束属性是否与其他约束属性互斥。
子属性列表是一个可选的非叶节点。也就是说,约束命令中的约束属性节点可以具有子属性列表也可以没有子属性列表。如果约束属性节点具有子属性列表,那么该子属性列表下包含一个或者多个约束属性节点,子属性列表下的约束属性节点是约束命令下的约束属性节点的约束子属性。子属性列表下的约束属性节点与约束命令下的约束属性节点的数据结构完全一样,这样就形成了嵌套的属性节点结构。
例如,第一命令数据结构和第二命令数据结构都可以是图6B所示的树状结构。
在本公开的一些实施例中,可以从命令数据结构文件中获取至少一个第一约束命令各自的第一命令数据结构和至少一个第二约束命令各自的第二命令数据结构。命令数据结构文件包括多个规范命令中每个规范命令的命令数据结构,命令数据结构指示了规范命令的约束属性和约束属性的属性信息。
规范命令,例如可以是规范命令文档中规定的命令。规范命令文档,例如可以是新思科技的规范文档、规范文档IEEE 1801等。命令数据结构文件,例如可以包括规范命令文档中所有规范命令各自的命令数据结构。命令数据结构文件中的命令数据结构例如可以是图6B所示的树状结构。该树状结构指示了规范命令的约束属性和约束属性的属性信息。
例如在确定UPF1或者UPF2中包含约束命令add_power_state后,可以根据索引add_power_state到命令数据结构文件中找出约束命令add_power_state的命令数据结构。
在本公开的一些实施例中,比较方法还可以包括生成上述的命令数据结构文件,以便从命令数据结构文件中获取至少一个第一约束命令各自的第一命令数据结构和至少一个第二约束命令各自的第二命令数据结构。
在本公开的实施例中,预先生成包含多个约束命令各自的命令数据结构的命令数据结构文件可以提高比较方法的执行效率和适用性。命令数据结构文件中例如可以包含规范命令文档中每个规范命令的命令数据结构,这样可以方便地直接从命令数据结构文件中获取所需要的约束命令的命令数据结构,而不需要每次比较不同的约束文件都需要生成不同约束命令的命令数据结构。
在本公开的一些实施例中,例如可以获取规范命令语法文件,规范命令语法文件包括多个规范命令,以及按照预设的解析规则对规范命令语法文件中的每个规范命令进行解析而生成所述命令数据结构文件。
在本公开的一些实施例中,获取规范命令语法文件,例如可以包括从规范命令文档中提取每个规范命令的语法信息,规范命令文档包括多个规范命令,以及按照预设的文件格式,根据多个语法信息生成规范命令语法文件。规范命令文档中的规范命令包括至少一个第一约束命令和至少一个第二约束命令。在该实施例中,从规范命令文档中提取每个规范命令的语法信息,可以将规范命令文档中的冗余信息去除,以生成简洁的规范命令语法文件,从而使得命令数据结构文件的生成简单化,节约资源。
下文示出了一种预设的文件格式,但是需要理解的是下面所示的预设的文件格式仅为一种示例,并不意味着本公开将预设的文件格式限定为下文所示的格式,实际上,本领域技术人员可以对预设的文件格式进行设计。
预设的文件格式:
{
描述:约束命令1的描述
语法:约束命令1的详细语法
},
{
描述:约束命令2的描述
语法:约束命令2的详细语法
}
……
例如本领域技术人员可以编写从规范命令文档中提取约束命令的描述和约束命令的详细语法,并且按照上述预设的文件格式将从规范命令文档中提取得到的约束命令的描述和约束命令的详细语法排列,从而生成规范命令语法文件。
图6C示出了一种约束命令语法文件中的某个约束命令的示例。
如图6C所示,一个命令由命令描述和命令的详细语法两部分构成,比如图6C中,该命令的描述是“Define power state(s)of a power domain or supply set”,而命令的详细语法是:
在得到规范命令语法文件之后,例如可以通过约束命令语法分析器对约束命令语法文件中的内容进行解析而生成上述的命令数据结构文件。约束命令语法分析器,例如可以是开发人员设计的,使其可以按照预设的解析规则对规范命令语法文件中的每个规范命令进行解析而生成命令数据结构文件。
预设的解析规则,例如可以包括约束命令语法文件中的标识符的含义。例如,预设的解析规则可以包括“*”可以表示约束属性的动作为可扩展,[A|B]表示约束属性A和B互斥等。
在本公开的另一些实施例中,例如可以从规范文档中提取第一约束命令和第二约束命令。然后按照对规范文档中规范命令解析的解析规则,分别对第一约束命令和第二约束命令进行解析而获得第一命令数据结构和第二命令数据结构。
例如,对于步骤S22,约束命令add_power_state的命令数据结构指示约束命令add_power_state的约束属性节点可以包括约束属性-supply、约束属性-domain约束属性-complete和-update,约束属性-supply和约束属性-domain互斥,并且在add_power_state的命令数据结构中还指示了-supply的约束子属性可以包括ssA和-state。在步骤S22,例如可以将第一约束文件或者第二约束文件中的约束命令add_power_state的内容与约束命令add_power_state的命令数据结构进行比对。例如,约束命令add_power_state的内容中包括-supply,则根据命令数据结构确定-supply是约束命令add_power_state的约束属性,则可以将-supply填入例如图5所示的哈希表结构中约束命令add_power_state下的约束属性的位置。又例如,约束命令add_power_state的内容中包括ssA和-state,则根据命令数据结构确定ssA和-state是约束属性-supply的约束子属性,则可以将ssA和-state分别填入例如图5所示的哈希表结构中约束属性-supply下的约束子属性的位置。
在图6A所描述的实施例中,可以根据约束命令的命令数据结构对约束命令进行解析,使得对约束命令的解析简单,并且便于比较。
图6D示出了本公开至少一个实施例提供的步骤S22的一个实施例的方法流程图。
如图6D所示,在一些示例中,图6A中的步骤S22可以包括步骤S221~步骤S223。
步骤S221:根据第一约束属性的属性信息和所述第一约束命令,确定第一约束属性的属性值,并且根据第二约束属性的属性信息和第二约束命令确定第二约束属性的属性值。
例如可以根据叶节点属性列表中的动作、属性值个数等属性信息以及第一约束命令的数值来确定第一约束属性的属性值。
例如,动作可以包括可扩展和存储这两种属性。如果第一约束属性的动作为可扩展,那么第一约束属性的属性值个数可以是多个。对于动作为可扩展的第一约束属性,例如,第一约束文件中出现多次给第一约束属性定义不同属性值的命令,那么这些不同属性值可以都被记录在该约束文件对应的嵌套的哈希表中。例如这些不同属性值所形成的集合可以作为该第一约束属性的属性值。如果第一约束属性的动作为存储,那么第一约束属性的属性值个数只能是1个。例如,第一约束文件中出现多次给第一约束属性定义不同属性值的命令,那么这些不同属性值中在约束文件中最后出现的属性值可以被记录在该第一约束文件对应的嵌套的哈希表中,作为该第一约束属性的属性值。
在本公开的另一些实施例中,如果第一约束属性的动作为可扩展,那么可以进一步地根据属性值个数来确定第一约束属性具体具有几个属性值。
例如在图5所示的示例中,UPF1约束文件中出现多次给第一约束属性-ports定义不同属性值的命令,至少包括-ports{mod1.VDD mod1.VDDA}(见UPF1约束文件第一行)和-ports{mod2.VDD mod2.VDDB mod3.VDD}(见UPF1约束文件第二行)。例如通过命令数据结构指示的属性信息确定-ports的动作为可扩展,那么在UPF1约束文件对应的嵌套的哈希表结构中-ports的属性值可以为{mod1.VDD mod1.VDDA,mod2.VDD mod2.VDDB mod3.VDD}。
根据第二约束属性的属性信息和第二约束命令确定第二约束属性的属性值的方法与上述示例性描述的根据第一约束属性的属性信息和第一约束命令,确定第一约束属性的属性值的方法类似,在此不再赘述。
需要理解的是,上述描述仅为步骤S221的示例,本领域技术人员可以根据具体的属性信息和约束文件中的约束命令来确定约束属性的属性值。
步骤S222:根据第一约束文件包含的第一约束命令、第一约束命令的约束属性和约束属性的属性值,生成第一数据结构。
步骤S223:根据第二约束文件包含的第二约束命令、第二约束命令的约束属性和约束属性的属性值,生成第二数据结构。
对于步骤S222和步骤S223,例如可以将第一约束命令的名称作为第一约束文件对应的嵌套的哈希表结构的第一层索引,每个第一层索引下包括该第一约束命令的属性哈希表。属性哈希表包含第一约束属性的属性索引,每个第一约束属性的属性索引下包含该第一约束属性的属性值,从而得到第一数据结构。类似地,例如可以将第二约束命令的名称作为第二约束文件对应的嵌套的哈希表结构的第一层索引,每个第一层索引下包括该第二约束命令的属性哈希表。属性哈希表包含第二约束属性的属性索引,每个第二约束属性的属性索引下包含该第二约束属性的属性值,从而得到第二数据结构。
需要理解的是,虽然在图6D中步骤S222在步骤S223的前面,但是本公开对步骤S222和步骤S223的执行顺序不做限定。步骤S222可以先于步骤S223执行,也可以晚于步骤S223执行,或者步骤S222和步骤S223可以并行执行。
在本公开的一些实施例中,约束文件的比较方法在前述图6D所描述实施例的基础上还可以包括:在多个第一约束属性的属性值为集合的情况下,将多个第一约束属性的属性值拆分为多个标量,或者将多个第一约束属性中被指定的约束属性的属性值拆分为多个标量,以及在多个第二约束属性的属性值为集合的情况下,将多个第二约束属性的属性值拆分为多个标量,或者将多个第二约束属性中被指定的约束属性的属性值拆分为多个标量。在第一约束属性或者第二约束属性的属性值为集合的情况下,例如可以通过多次嵌套的约束子属性哈希表将属性值拆分为多个标量,每个标量的约束属性索引都是都是该第一约束属性或者第二约束属性,这样可以至少部分地解决图3中D组中的技术问题。
例如,第一约束命令或者第二约束命令包括如下约束命令:
set_false_path–from{portA portB…}–through{portM portN}–to{portXportY}
该约束命令中约束属性–from、–through和–to的属性值都是集合,可以将–from、–through和–to的属性值分别拆分为多个标量。例如,–from{portA portB…}拆分为{portA}和{portB},–through{portM portN}拆分为{portM}和{portN}以及–to{portX portY}拆分为{portX}和{portY}。
在本公开的一些实施例中,可以是将多个第一约束属性中被指定的约束属性的属性值拆分为多个标量,或者第二约束属性中被指定的约束属性的属性值拆分为多个标量。本领域技术人员可以设置确定被指定的约束属性的确定规则。确定规则,例如可以是在约束命令的详细语法中出现的多个约束属性中除末尾出现的约束属性之外的其他约束属性。例如在上述约束命令set_false_path的详细语法中末尾出现的是-to,那么-from和-through的属性值被拆分为多个标量,-to的属性值依然保持集合。或者,本领域技术人员也可以对不需要进行拆分或者需要进行拆分的约束属性做标识,以根据标识来确定是否进行拆分。
图7示出了本公开至少一实施例提供的将约束属性的属性值拆分为多个标量所形成的约束文件的数据结构的示意图。
如图7所示,在SDC1约束文件中包括约束命令:set_false_path–from{port1port2…}–through{mux1 mux2}–to{FF1/D FF2/D}。
在对SDC1约束文件进行解析的过程中,将–from{port1 port2…}进行拆分。如图7所示,–from{port1 port2…}被拆分为两个分支,一个分支中约束属性-from的属性值为port1,另一个分支中约束属性-from的属性值为port2。属性值port1和属性值port2都是-from的子节点。类似地,–through也被拆分为两个分支,一个分支–through的属性值为mux1,另一个分支–through的属性值为mux2。约束属性-to,例如可以是在约束命令的详细语法中末尾出现的约束属性,那么约束属性-to可以不被拆分为多个分支,其属性值依然可以是集合。
在本公开的一些实施例中,约束文件的比较方法在前述实施例的基础上还可以包括:确定第一约束命令或者第二约束命令是否为依赖命令,依赖命令为多个约束属性相互关联的规范命令。在多个第一约束属性的属性值为集合并且第一约束命令为依赖命令的情况下,将多个第一约束属性的属性值拆分为多个标量,或者将多个第一约束属性中被指定的第一约束属性的属性值拆分为多个标量。在所多个第二约束属性的属性值为集合并且第二约束命令为依赖命令情况下,将多个第二约束属性的属性值拆分为多个标量,或者将多个第二约束属性中被指定的约束属性的属性值拆分为多个标量。
例如,约束命令set_false_path–from{portA portB…}–through{portM portN}–to{portX portY}的含义为从{portA portB…}经由{portM portN}到{portX portY},也就是,–from、–through和–to的先后顺序是确定的,那么–from、–through和–to是相关联的约束属性,因此,约束命令set_false_path是依赖命令。
由于set_false_path为依赖命令,–from、–through和–to的属性值为集合,因此可以将–from、–through和–to的属性值分别拆分为多个标量,或者将–from、–through和–to中–from、–through的属性值拆分为多个标量。
在本公开的一些实施例中,例如可以通过查找依赖命令文件来确定第一约束命令或者第二约束命令是否为依赖命令。如果在依赖命令文件中包括第一约束命令或者第二约束命令,那么第一约束命令和第二约束命令是依赖命令。
在本公开的另一些实施例中,约束文件的比较方法在前述实施例的基础上还可以包括确定第一约束文件和第二约束文件的文件类型。在多个第一约束属性的属性值为集合并且第一约束文件的文件类型为时序约束文件的情况下,将多个第一约束属性的属性值拆分为多个标量,或者将多个第一约束属性中被指定的约束属性的属性值拆分为多个标量。在多个第二约束属性的属性值为集合并且第二约束文件的文件类型为时序约束文件情况下,将多个第二约束属性的属性值拆分为多个标量,或者将多个第二约束属性中被指定的约束属性的属性值拆分为多个标量。
对于时序约束文件(例如SDC约束文件)通常包含依赖命令。依赖命令为多个约束属性相互关联的规范命令,那么对于时序约束文件可以在多个第一约束属性的属性值为集合的情况下,将多个第一约束属性的属性值拆分为多个标量,或者将多个第一约束属性中被指定的约束属性的属性值拆分为多个标量。
例如对于UPF约束文件通常不包含多个约束属性相互依赖的约束命令,因此若文件类型为UPF约束文件,那么对于UPF约束文件可以在多个第一约束属性的属性值为集合的情况下,不对多个第一约束属性的属性值拆分。
图8A示出了本公开至少一实施例提供的另一约束文件的比较方法的流程图。
如图8A所示,该比较方法包括步骤S10~S40,其中步骤S10~S30与上文参考图4A中的步骤S10~S30相同,在此不再赘述。
步骤S40:按照输出文档格式,输出所述比较结果。
输出文档格式,例如可以是开发人员自己定义的。图8B示出了本公开至少一实施例提供的一种输出文档格式的示意图。
如图8B所示,例如在该输出文档格式中可以包括两部分,第一部分为不匹配的约束,第二部分为多出来的约束。
需要理解的是,图8B仅为一种输出文档格式的示例,本公开的实施例不局限于图8B所示的输出文档格式。
图9A~图9C示出了利用本公开至少一实施例提供的约束文件的比较方法对两个约束文件进行比较的示意图。
如图9A~图9C所示,在该实施例中利用本公开至少一实施例提供的约束文件的比较方法将UPF1约束文件91和UPF2约束文件92进行比对。
其中,图9A和图9B分别对UPF1约束文件91进行解析而获得第一数据结构93,以及对UPF2约束文件92进行解析而获得第二数据结构94的示意图。图9C为将第一数据结构93和第二数据结构94进行比对而获得的比较结果。
例如可以利用上文参考图4A描述的步骤S20对UPF1约束文件91进行解析而获得UPF1约束文件91的第一数据结构93,以及对UPF2约束文件92进行解析而获得UPF2约束文件92的第二数据结构94。
然后,例如可以利用数据结构逻辑比较器对第一数据结构93和第二数据结构94进行比较。数据结构逻辑比较器例如可以执行上文参考图4A描述的步骤S30。
然后,例如可以执行上文参考图8A所描述的步骤S40,输出例如图9C所示的比较结果,以根据比较结果判断UPF1约束文件91和UPF2约束文件92是否存在差异。
在该实施例中如果利用文本比较工具将UPF1约束文件91和UPF2约束文件92进行比对,只能将UPF1约束文件91和UPF2约束文件92的文字进行比较,而不能对这两个文件中的约束命令各自形成的约束规则进行比较。
图10A~图10C示出了利用本公开至少一实施例提供的约束文件的比较方法对两个约束文件进行比较的示意图。
如图10A~图10C所示,在该实施例中利用本公开至少一实施例提供的约束文件的比较方法将SDC1约束文件101和SDC2约束文件102进行比对。
其中,图10A和图10B分别对SDC1约束文件101进行解析而获得第一数据结构103,以及对SDC2约束文件102进行解析而获得第二数据结构104的示意图。图10C为将第一数据结构103和第二数据结构104进行比对而获得的比较结果。
例如可以利用上文参考图4A描述的步骤S20对SDC1约束文件101进行解析而获得SDC1约束文件101的第一数据结构103,以及对SDC2约束文件102进行解析而获得SDC2约束文件102的第二数据结构104。
然后,例如可以利用数据结构逻辑比较器对第一数据结构103和第二数据结构104进行比较。数据结构逻辑比较器例如可以执行上文参考图4A描述的步骤S30。
然后,例如可以执行上文参考图8A所描述的步骤S40,以图10C所示的输出文档格式输出比较结果,以根据比较结果判断SDC1约束文件101和SDC2约束文件102是否存在差异。
在该实施例中如果利用文本比较工具将SDC1约束文件101和SDC2约束文件102进行比对,只能将SDC1约束文件101和SDC2约束文件102的文字进行比较,而不能对这两个文件中的约束命令各自形成的约束规则进行比较。
图11示出了本公开至少一个实施例提供的一种约束文件的比较装置1100的示意框图。
例如,如图11所示,该比较装置1100包括获取单元1110、解析单元1120和比较单元1130。
获取单元1110配置为获取第一约束文件和第二约束文件,其中,所述第一约束文件包括至少一个第一约束命令,所述第二约束文件包括至少一个第二约束命令。获取单元1110例如可以执行图4A描述的步骤S10。
解析单元1120配置为分别对所述第一约束文件和所述第二约束文件进行解析以获得所述第一约束文件的第一数据结构和所述第二约束文件的第二数据结构,其中,所述第一数据结构指示了所述至少一个第一约束命令形成的约束规则,所述第二数据结构指示了所述至少一个第二约束命令形成的约束规则。解析单元1120例如可以执行图4A描述的步骤S20。
比较单元1130配置为比较所述第一数据结构与所述第二数据结构,以获得用于判断所述第一约束文件和所述第二约束文件之间是否存在差异的比较结果。比较单元1130例如可以执行图4A描述的步骤S30。
例如,获取单元1110、解析单元1120和比较单元1130可以为硬件、软件、固件以及它们的任意可行的组合。例如,获取单元1110、解析单元1120和比较单元1130可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于上述各个单元的具体实现形式,本公开的实施例对此不作限制。
需要说明的是,本公开的实施例中,比较装置1100的各个单元与前述的比较方法的各个步骤对应,关于比较装置1100的具体功能可以参考关于比较方法的相关描述,此处不再赘述。图11所示的比较装置1100的组件和结构只是示例性的,而非限制性的,根据需要,该比较装置1100还可以包括其他组件和结构。
本公开的至少一个实施例还提供了一种电子设备,该电子设备包括处理器和存储器,存储器包括一个或多个计算机程序模块。一个或多个计算机程序模块被存储在存储器中并被配置为由处理器执行,一个或多个计算机程序模块包括用于实现上述的比较方法的指令。该比较方法可以在不依赖任何工具的情况快速准确地比较出至少两个约束文件在约束规则上的差异。
图12为本公开一些实施例提供的一种电子设备的示意框图。如图12所示,该电子设备1200包括处理器1210和存储器1220。存储器1220用于存储非暂时性计算机可读指令(例如一个或多个计算机程序模块)。处理器1210用于运行非暂时性计算机可读指令,非暂时性计算机可读指令被处理器1210运行时可以执行上文所述的比较方法中的一个或多个步骤。存储器1220和处理器1210可以通过总线系统和/或其它形式的连接机构(未示出)互连。
例如,处理器1210可以是中央处理单元(CPU)、图形处理单元(GPU)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元。例如,中央处理单元(CPU)可以为X86或ARM架构等。处理器1210可以为通用处理器或专用处理器,可以控制电子设备1200中的其它组件以执行期望的功能。
例如,存储器1220可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块,处理器1210可以运行一个或多个计算机程序模块,以实现电子设备1200的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
需要说明的是,本公开的实施例中,电子设备1200的具体功能和技术效果可以参考上文中关于约束文件的比较方法的描述,此处不再赘述。
图13为本公开一些实施例提供的另一种电子设备的示意框图。该电子设备1300例如适于用来实施本公开实施例提供的比较方法。电子设备1300可以是终端设备等。需要注意的是,图13示出的电子设备1300仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图13所示,电子设备1300可以包括处理装置(例如中央处理器、图形处理器等)1310,其可以根据存储在只读存储器(ROM)1320中的程序或者从存储装置1380加载到随机访问存储器(RAM)1330中的程序而执行各种适当的动作和处理。在RAM 1330中,还存储有电子设备1300操作所需的各种程序和数据。处理装置1310、ROM 1320以及RAM 1330通过总线1340彼此相连。输入/输出(I/O)接口1350也连接至总线1340。
通常,以下装置可以连接至I/O接口1350:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置1360;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置1370;包括例如磁带、硬盘等的存储装置1380;以及通信装置1390。通信装置1390可以允许电子设备1300与其他电子设备进行无线或有线通信以交换数据。虽然图13示出了具有各种装置的电子设备1300,但应理解的是,并不要求实施或具备所有示出的装置,电子设备1300可以替代地实施或具备更多或更少的装置。
例如,根据本公开的实施例,上述约束文件的比较方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述比较方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置1390从网络上被下载和安装,或者从存储装置1380安装,或者从ROM1320安装。在该计算机程序被处理装置1310执行时,可以实现本公开实施例提供的比较方法中限定的功能。
本公开的至少一个实施例还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储非暂时性计算机可读指令,当非暂时性计算机可读指令由计算机执行时可以实现上述的约束文件的比较方法。利用该计算机可读存储介质,可以实现在不依赖任何第三方工具的情况快速准确地比较出至少两个约束文件在约束规则上的差异。
图14为本公开一些实施例提供的一种计算机可读存储介质的示意图。如图14所示,计算机可读存储介质1400用于存储非暂时性计算机可读指令1410。例如,当非暂时性计算机可读指令1410由计算机执行时可以执行根据上文所述的比较方法中的一个或多个步骤。
例如,该计算机可读存储介质1400可以应用于上述电子设备1200中。例如,计算机可读存储介质1400可以为图12所示的电子设备1200中的存储器1220。例如,关于计算机可读存储介质1400的相关说明可以参考图12所示的电子设备1200中的存储器1220的相应描述,此处不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (18)
1.一种约束文件的比较方法,包括:
获取第一约束文件和第二约束文件,其中,所述第一约束文件包括至少一个第一约束命令,所述第二约束文件包括至少一个第二约束命令;
分别对所述第一约束文件和所述第二约束文件进行解析以获得所述第一约束文件的第一数据结构和所述第二约束文件的第二数据结构,其中,所述第一数据结构指示了所述至少一个第一约束命令形成的约束规则,所述第二数据结构指示了所述至少一个第二约束命令形成的约束规则;以及
比较所述第一数据结构与所述第二数据结构,以获得用于判断所述第一约束文件和所述第二约束文件之间是否存在差异的比较结果。
2.根据权利要求1所述的方法,其中,分别对所述第一约束文件和所述第二约束文件进行解析以获得所述第一约束文件的第一数据结构和所述第二约束文件的第二数据结构,包括:
获取所述至少一个第一约束命令各自的第一命令数据结构和获取所述至少一个第二约束命令各自的第二命令数据结构,其中,所述第一命令数据结构指示了所述第一约束命令的第一约束属性和所述第一约束属性的属性信息,所述第二命令数据结构指示了第二约束命令的第二约束属性和所述第二约束属性的属性信息;以及
根据所述第一命令数据结构,对每个第一约束命令进行解析而生成所述第一数据结构,并且根据所述第二命令数据结构,对每个第二约束命令进行解析而生成所述第二数据结构。
3.根据权利要求2所述的方法,其中,所述第一命令数据结构和所述第二命令数据结构为树状数据结构。
4.根据权利要求2所述的方法,其中,获取所述至少一个第一约束命令各自的第一命令数据结构和获取所述至少一个第二约束命令各自的第二命令数据结构,包括:
从命令数据结构文件中获取所述至少一个第一约束命令各自的第一命令数据结构和所述至少一个第二约束命令各自的第二命令数据结构,其中,所述命令数据结构文件包括多个规范命令中每个规范命令的命令数据结构,所述命令数据结构指示了规范命令的约束属性和约束属性的属性信息。
5.根据权利要求4所述的方法,还包括:
获取规范命令语法文件,所述规范命令语法文件包括多个规范命令;以及
按照预设的解析规则对规范命令语法文件中的每个规范命令进行解析而生成所述命令数据结构文件。
6.根据权利要求5所述的方法,其中,获取规范命令语法文件,包括:
从规范命令文档中提取每个规范命令的语法信息,其中,所述规范命令文档包括所述多个规范命令;
按照预设的文件格式,根据多个所述语法信息生成所述规范命令语法文件;
其中,所述规范命令文档中的规范命令包括所述至少一个第一约束命令和所述至少一个第二约束命令。
7.根据权利要求4所述的方法,其中,根据所述第一命令数据结构,对每个第一约束命令进行解析而生成所述第一数据结构,并且根据所述第二命令数据结构,对每个第二约束命令进行解析而生成所述第二数据结构,包括:
根据所述第一约束属性的属性信息和所述第一约束命令,确定所述第一约束属性的属性值,并且根据所述第二约束属性的属性信息和所述第二约束命令确定所述第二约束属性的属性值;
根据所述第一约束文件包含的第一约束命令、所述第一约束命令的约束属性和所述约束属性的属性值,生成所述第一数据结构;以及
根据所述第二约束文件包含的第二约束命令、所述第二约束命令的约束属性和所述约束属性的属性值,生成所述第二数据结构。
8.根据权利要求7所述的方法,其中,所述第一数据结构和所述第二数据结构为嵌套的哈希表结构,所述嵌套的哈希表结构中的第一层索引包括所述第一约束命令的标识或者所述第二约束命令的标识,所述每个第一层索引下各自包括属性哈希表,
所述属性哈希表包含至少一个第一约束属性的属性索引或者至少一个第二约束属性的属性索引,每个第一约束属性的属性索引下包含该第一约束属性的属性值,每个第二约束属性的属性索引下包含该第二约束属性的属性值。
9.根据权利要求8所述的方法,其中,所述属性哈希表包含的所述属性索引的索引值是唯一的。
10.根据权利要求8所述的方法,其中,所述属性值包括标量、集合、单层子属性哈希表以及多层子属性哈希表中的任意一种,
其中,在所述属性值为单层子属性哈希表的情形中,所述单层子属性哈希表中的约束属性的属性值包括所述标量或者所述集合,
在所述属性值为多层子属性哈希表的情形中,所述多层子属性哈希表中的至少一个约束属性的属性值包括哈希表。
11.根据权利要求10所述的方法,还包括:
在多个所述第一约束属性的属性值为集合的情况下,将多个所述第一约束属性的属性值拆分为多个标量,或者将多个所述第一约束属性中被指定的约束属性的属性值拆分为多个标量;
在多个所述第二约束属性的属性值为集合的情况下,将多个所述第二约束属性的属性值拆分为多个标量,或者将多个所述第二约束属性中被指定的约束属性的属性值拆分为多个标量。
12.根据权利要求11所述的方法,还包括:
确定所述第一约束文件和所述第二约束文件的文件类型;
其中,在多个所述第一约束属性的属性值为集合的情况下,将多个所述第一约束属性的属性值拆分为多个标量,或者将多个所述第一约束属性中被指定的约束属性的属性值拆分为多个标量,包括:
在多个所述第一约束属性的属性值为集合并且所述第一约束文件的文件类型为时序约束文件的情况下,将多个所述第一约束属性的属性值拆分为多个标量;或者将多个所述第一约束属性中被指定的约束属性的属性值拆分为多个标量,
在多个所述第二约束属性的属性值为集合的情况下,将多个所述第二约束属性的属性值拆分为多个标量,或者将多个所述第二约束属性中被指定的约束属性的属性值拆分为多个标量,包括:
在多个所述第二约束属性的属性值为集合并且所述第二约束文件的文件类型为时序约束文件情况下,将多个所述第二约束属性的属性值拆分为多个标量,或者将多个所述第二约束属性中被指定的约束属性的属性值拆分为多个标量。
13.根据权利要求11所述的方法,还包括:
确定所述第一约束命令或者第二约束命令是否为依赖命令,所述依赖命令为多个约束属性相互关联的规范命令;
其中,在多个所述第一约束属性的属性值为集合的情况下,将多个所述第一约束属性的属性值拆分为多个标量,或者将多个所述第一约束属性中被指定的约束属性的属性值拆分为多个标量,包括:
在多个所述第一约束属性的属性值为集合并且所述第一约束命令为依赖命令的情况下,将所述多个第一约束属性的属性值拆分为多个标量;或者将所述多个第一约束属性中被指定的第一约束属性的属性值拆分为多个标量,
在多个所述第二约束属性的属性值为集合的情况下,将多个所述第二约束属性的属性值拆分为多个标量,或者将多个所述第二约束属性中被指定的约束属性的属性值拆分为多个标量,包括:
在所多个所述第二约束属性的属性值为集合并且所述第二约束命令为依赖命令情况下,将多个所述第二约束属性的属性值拆分为多个标量,或者将多个所述第二约束属性中被指定的约束属性的属性值拆分为多个标量。
14.根据权利要求2所述的方法,其中,所述第一约束属性或者第二约束属性的属性信息包括:动作、属性值个数和目标命名空间中的至少一个,
所述动作指示是否允许所述约束属性的属性值个数包括多个,
所述目标命名空间表示所述约束属性的查找路径。
15.根据权利要求1所述的方法,还包括:
按照输出文档格式,输出所述比较结果。
16.一种约束文件的比较装置,包括:
获取单元,配置为获取第一约束文件和第二约束文件,其中,所述第一约束文件包括至少一个第一约束命令,所述第二约束文件包括至少一个第二约束命令;
解析单元,配置为分别对所述第一约束文件和所述第二约束文件进行解析以获得所述第一约束文件的第一数据结构和所述第二约束文件的第二数据结构,其中,所述第一数据结构指示了所述至少一个第一约束命令形成的约束规则,所述第二数据结构指示了所述至少一个第二约束命令形成的约束规则;以及
比较单元,配置为比较所述第一数据结构与所述第二数据结构,以获得用于判断所述第一约束文件和所述第二约束文件之间是否存在差异的比较结果。
17.一种电子设备,包括:
处理器;
存储器,包括一个或多个计算机程序模块;
其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于实现权利要求1-15任一项所述的约束文件的比较方法的指令。
18.一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时可以实现权利要求1-15任一项所述的约束文件的比较方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011343056.9A CN112464636B (zh) | 2020-11-25 | 2020-11-25 | 约束文件的比较方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011343056.9A CN112464636B (zh) | 2020-11-25 | 2020-11-25 | 约束文件的比较方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112464636A true CN112464636A (zh) | 2021-03-09 |
CN112464636B CN112464636B (zh) | 2024-02-09 |
Family
ID=74809660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011343056.9A Active CN112464636B (zh) | 2020-11-25 | 2020-11-25 | 约束文件的比较方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112464636B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116774777A (zh) * | 2023-08-16 | 2023-09-19 | 沐曦集成电路(上海)有限公司 | 芯片时钟数据处理系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090106715A1 (en) * | 2007-05-15 | 2009-04-23 | Fedor Pikus | Programmable Design Rule Checking |
CN104346485A (zh) * | 2013-08-01 | 2015-02-11 | 上海华虹宏力半导体制造有限公司 | 综合模型同仿真模型的时序约束一致性的验证系统及方法 |
CN104698370A (zh) * | 2013-12-10 | 2015-06-10 | 展讯通信(上海)有限公司 | 芯片中电路的时序测试方法、装置及rtl仿真设备 |
CN104699473A (zh) * | 2013-12-10 | 2015-06-10 | 展讯通信(上海)有限公司 | 时序约束文件的生成方法、装置以及rtl仿真设备 |
CN105654993A (zh) * | 2016-02-22 | 2016-06-08 | 深圳市同创国芯电子有限公司 | 用于ddr3 sdram控制器的功能验证方法及平台 |
US20180365359A1 (en) * | 2017-06-14 | 2018-12-20 | Excellicon Corporation | Method to automatically generate and promote timing constraints in a synopsys design constraint format |
CN110032781A (zh) * | 2019-03-27 | 2019-07-19 | 广东高云半导体科技股份有限公司 | 编辑时序约束方法、装置、计算机设备及存储介质 |
-
2020
- 2020-11-25 CN CN202011343056.9A patent/CN112464636B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090106715A1 (en) * | 2007-05-15 | 2009-04-23 | Fedor Pikus | Programmable Design Rule Checking |
CN104346485A (zh) * | 2013-08-01 | 2015-02-11 | 上海华虹宏力半导体制造有限公司 | 综合模型同仿真模型的时序约束一致性的验证系统及方法 |
CN104698370A (zh) * | 2013-12-10 | 2015-06-10 | 展讯通信(上海)有限公司 | 芯片中电路的时序测试方法、装置及rtl仿真设备 |
CN104699473A (zh) * | 2013-12-10 | 2015-06-10 | 展讯通信(上海)有限公司 | 时序约束文件的生成方法、装置以及rtl仿真设备 |
CN105654993A (zh) * | 2016-02-22 | 2016-06-08 | 深圳市同创国芯电子有限公司 | 用于ddr3 sdram控制器的功能验证方法及平台 |
US20180365359A1 (en) * | 2017-06-14 | 2018-12-20 | Excellicon Corporation | Method to automatically generate and promote timing constraints in a synopsys design constraint format |
CN110032781A (zh) * | 2019-03-27 | 2019-07-19 | 广东高云半导体科技股份有限公司 | 编辑时序约束方法、装置、计算机设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
HOON PARK,ET AL: "Modular Timing Constraints for Delay-Insensitive Systems", 《JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY》 * |
董伟: "基于40纳米工艺的存储单元控制器的设计与实现", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116774777A (zh) * | 2023-08-16 | 2023-09-19 | 沐曦集成电路(上海)有限公司 | 芯片时钟数据处理系统 |
CN116774777B (zh) * | 2023-08-16 | 2023-11-10 | 沐曦集成电路(上海)有限公司 | 芯片时钟数据处理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112464636B (zh) | 2024-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8381175B2 (en) | Low-level code rewriter verification | |
US9612806B2 (en) | Verification of computer-executable code generated from a model | |
US8266571B2 (en) | Methods and devices for independent evaluation of cell integrity, changes and origin in chip design for production workflow | |
KR101580258B1 (ko) | 생산용 칩 디자인 워크플로우에서의 셀 무결성, 변경 및 기점에 대한 독립적인 평가 방법 및 장치 | |
US7428715B2 (en) | Hole query for functional coverage analysis | |
JPH03156572A (ja) | 論理回路比較検証システムおよび方法 | |
US8122402B2 (en) | Equivalence checking method, equivalence checking program, and generating method for equivalence checking program | |
WO2016026328A1 (zh) | 一种信息处理方法、装置及计算机存储介质 | |
US9524366B1 (en) | Annotations to identify objects in design generated by high level synthesis (HLS) | |
JP2017174418A (ja) | モデルチェックのためのデータ構造抽象化 | |
US10839124B1 (en) | Interactive compilation of software to a hardware language to satisfy formal verification constraints | |
CN115422866A (zh) | 用于在仿真器上仿真逻辑系统设计的方法及相关设备 | |
CN112464636B (zh) | 约束文件的比较方法、装置、电子设备和存储介质 | |
CN116069726B (zh) | 一种集成电路设计库的管理方法、设备及介质 | |
US20150088483A1 (en) | Simulated component connector definition and connection process | |
CN115827636A (zh) | 存储及从波形数据库读取逻辑系统设计的仿真数据的方法 | |
CN113822002B (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN116933699A (zh) | 用于生成和存储电路仿真过程中的波形数据的方法、电子设备和存储介质 | |
CN116861829B (zh) | 用于定位逻辑系统设计中错误的方法、电子设备 | |
US11782682B2 (en) | Providing metric data for patterns usable in a modeling environment | |
US20060025980A1 (en) | Method, system and computer program product for improving efficiency in generating high-level coverage data for a circuit-testing scheme | |
US20230100758A1 (en) | Unique identifier creation and management for elaborated platform | |
US20060129368A1 (en) | Object-oriented interface to RTL model signals | |
US20230036323A1 (en) | Information processing apparatus, information processing method, and computer readable recording medium | |
CN116362230A (zh) | 参数校验方法、装置、计算机设备可存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40048789 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |