CN111950257A - 一种文件解析方法和装置 - Google Patents
一种文件解析方法和装置 Download PDFInfo
- Publication number
- CN111950257A CN111950257A CN202010758660.1A CN202010758660A CN111950257A CN 111950257 A CN111950257 A CN 111950257A CN 202010758660 A CN202010758660 A CN 202010758660A CN 111950257 A CN111950257 A CN 111950257A
- Authority
- CN
- China
- Prior art keywords
- sub
- line
- data structure
- format
- content
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/211—Syntactic parsing, e.g. based on context-free grammar [CFG] or unification grammars
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本申请提供了一种文件解析方法和装置,通过按照语句格式解析的方式来遍历及解析时序库文件,不需要逐行识别时序库文件中的关键词,更不要进行关键词匹配,只需通过时序库文件中内容所符合的语句格式来分析时序库文件,大大加快了时序库文件的文件解析速度,也即大大提高了时序库文件的解析效率。此外,本申请提供的方法只识别时序库文件中包括的语句格式,无需识别关键词,而时序库文件的语句格式的类别一般不会发生变化,因此,采用语句格式解析的方法可以解析各个IC设计流程的时序库文件,更加具备通用性。
Description
技术领域
本申请涉及集成电路技术领域,尤其涉及一种文件解析方法和装置。
背景技术
时序库(Timing lib)文件是一种库特征数据文件,遵循liberty格式,包含了集成电路的时序、功耗和噪声信息,是集成电路(Integrated Circuit,IC)设计流程中的重要文件,在IC设计流程中的综合、布局布线和静态时序分析等环节具有广泛应用。Timing lib文件一般由电子设计自动化(Electronic Design Automation,EDA)工具生成,在生成Timinglib文件后,IC设计流程往往对Timing lib文件的处理有很多定制化的需求,很多场合都需要解析Timing lib文件中的内容,将Timing lib文件的内容做数据展示或内容修改,例如,提取Timing lib文件中的时序、功耗和噪声数据并展示、替换Timing lib文件中的数据并生成新文件和提取多个Timing lib文件中的数据并拼成一个新的Timing lib文件等等。而liberty格式是IC设计流程中所用到的数据格式,具有固定的文件编写方式,解析liberty格式的Timing lib文件并提取其数据,对IC设计流程中数据的定制化处理有重大意义。
而现有技术一般采用基于关键词的文件解析方法来解析liberty格式的Timinglib文件,但是该方法需要列出Timing lib文件中所有可能包含的关键词,比如cell,bundle,bus,pin…等等,然后逐行读取Timing lib文件并匹配关键词,如果能匹配到某个关键词,则将该关键词记录在指定数据结构中;当正确匹配完Timing lib文件的所有行之后,记录匹配项的数据结构也就包含了完整的Timing lib文件的内容。但是对Timing lib文件而言,关键词可能有几百项之多,逐行匹配数百个关键词效率会非常低,耗时很长,而且随着工艺的升级迭代,Timing lib文件中的关键词也会有所变化。不同工艺节点的Timing lib文件中的关键词可能略有不同,这样就需要为每个工艺节点专门写一套不同的关键词解析程序,很难做到解析程序的通用性。
因此,如何快速、高效地解析Timing lib文件是值得考虑的技术问题之一。
发明内容
有鉴于此,本申请提供一种文件解析方法和装置,用以快速、高效地解析时序库文件。
具体地,本申请是通过如下技术方案实现的:
根据本申请的第一方面,提供一种文件解析方法,包括:
从集成电路IC设计流程的时序库文件中用于填充上一数据结构的内容的末行的下一行开始遍历;
判断用于填充上一数据结构的内容的末行的下一行至遍历到的第一扫描行所包括的内容是否满足设定的语句格式解析条件;
当判断结果为满足设定的语句格式解析条件时,则创建所满足的语句格式对应的数据结构;
从所述时序库文件的所述第一扫描行的下一行继续遍历,当遍历至符合所满足的语句格式的结尾的内容所在行时,根据所述用于填充上一数据结构的内容的末行的下一行至所述所满足的语句格式的结尾的内容所在行所包括的内容,按照所满足的语句格式对应的数据结构的格式填充创建的所满足的语句格式对应的数据结构;并
当符合所满足的语句格式的结尾的内容所在行不是所述时序库文件的最后一行时,将所述所满足的语句格式对应的数据结构作为新的上一数据结构,并继续执行所述从集成电路IC设计流程的时序库文件中用于填充上一数据结构的内容的末行的下一行开始遍历的步骤,直至遍历到所述时序库文件的最后一个内容为止。
根据本申请的第二方面,提供一种文件解析装置,包括:
遍历模块,用于从集成电路IC设计流程的时序库文件中用于填充上一数据结构的内容的末行的下一行开始遍历;
第一判断模块,用于判断用于填充上一数据结构的内容的末行的下一行至遍历到的第一扫描行所包括的内容是否满足设定的语句格式解析条件;
创建模块,用于当所述第一判断模块的判断结果为满足设定的语句格式解析条件时,则创建所满足的语句格式对应的数据结构;
所述遍历模块,还用于从所述时序库文件的所述第一扫描行的下一行继续遍历;
填充模块,用于当所述遍历模块遍历至符合所满足的语句格式的结尾的内容所在行时,根据所述用于填充上一数据结构的内容的末行的下一行至所述所满足的语句格式的结尾的内容所在行所包括的内容,按照所满足的语句格式对应的数据结构的格式填充创建的所满足的语句格式对应的数据结构;
第二判断模块,用于判断所述所满足的语句格式的结尾的内容所在行是否为所述时序库文件的最后一行;
所述遍历模块,还用于当所述第二判断模块的判断结果为否时,将所述所满足的语句格式对应的数据结构作为新的上一数据结构,并继续执行所述从集成电路IC设计流程的时序库文件中用于填充上一数据结构的内容的末行的下一行开始遍历的步骤,直至遍历到所述时序库文件的最后一个内容为止。
根据本申请的第三方面,提供一种电子设备,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的计算机程序,处理器被计算机程序促使执行本申请实施例第一方面所提供的方法。
根据本申请的第四方面,提供一种机器可读存储介质,机器可读存储介质存储有计算机程序,在被处理器调用和执行时,计算机程序促使处理器执行本申请实施例第一方面所提供的方法。
本申请实施例的有益效果:
本申请实施例提供的文件解析方法和装置,通过采用语句格式解析的方式来遍历及解析时序库文件,不需要逐行识别时序库文件中的关键词,更不要进行关键词匹配,只需通过时序库文件中内容所符合的语句格式来分析时序库文件,大大加快了时序库文件的文件解析速度,也即大大提高了时序库文件的解析效率。此外,本申请提供的方法只识别时序库文件中包括的语句格式,无需识别关键词,而时序库文件的语句格式的类别一般不会发生变化,因此,采用语句格式解析的方法可以解析各IC设计流程的时序库文件,通用性极强。
附图说明
图1是本申请实施例提供的一种文件解析方法的流程示意图;
图2是本申请实施例提供的另一种文件解析方法的流程图;
图3是本申请实施例提供的嵌套式的数据结构示意图;
图4是本申请实施例提供的再一种文件解析方法的流程图;
图5是本申请实施例提供的以Python字典转换后的可视化的数据结构示意图;
图6a是本申请实施例提供的时序库文件的示意图;
图6b是本申请实施例提供的图6a的时序库文件解析后的数据结构示意图;
图7是本申请实施例提供的文件解析装置的框图;
图8是本申请实施例提供的另一种文件解析装置的框图;
图9是本申请实施例提供的实施文件解析方法的电子设备的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相对应的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
需要说明的是,本申请中的数据结构可以是分层级的,当然也可以不分层级,具体要根据时序库文件本身的代码结构而定,而当时序库文件中的代码符合多个层级的数据结构时,则,本申请中的数据结构是指任一层级的数据结构,该数据结构可以是上述任一层级的上一层级的子数据结构,该数据结构本身还可以有子数据结构;相应地,本申请中提到的子数据结构可以是上一层级的数据结构的子数据结构,该子数据结构也可以有下一层级的子数据结构。例如,有L0层级、L1层级、L2层级等,其中L0层级对应一个数据结构,可以理解为顶层数据结构A0,L1层级位于L0层级的下一层,且对应2个数据结构A1和A2;而L2层级为L1层级的下一层,且对应一个数据结构A3,则A1和A2为A0的子数据结构,但是A1和A2本身也是上层数据结构,其子数据结构为A3,当然A3可能也有子数据结构等等。
此外,需要说明的是,时序库文件一般还包括空行和注释行,但空行和注释行是计算机不用识别的,因此在遍历时跳过空行和注释行,然后从空行或注释行的下一行继续遍历。即,本申请中末行、第一扫描行、第二扫描行和第三扫描行均不为时序库文件中的空行和注释行。如果遍历过程遇到空行或注释行,则上述末行、第一扫描行、第二扫描行或第三扫描行为遍历到的空行或注释行的下一行。
值得注意的是,本申请中某一行至第几行所包括的内容,是包括某一行的内容和第几行的内容的,例如,第1行至第3行所包括的内容,包括第1行的内容和第2行的内容和第3行的内容。
下面对本申请提供的文件解析方法进行详细地说明。
参见图1,图1是本申请提供的一种文件解析方法的流程图,该方法可包括如下所示步骤:
S101、从IC设计流程的时序库文件中用于填充上一数据结构的内容的末行的下一行开始遍历。
实际应用中,时序库文件本身是有一定编写规则和数据格式的,因此,可以将时序库文件看作由符合若干数据结构的字符组合得到。因此,在解析时序库文件时,可以基于时序库文件中的数据结构对时序库文件进行解析。
具体地,当首次对时序库文件进行解析时,则本步骤的时序库文件中用于填充上一数据结构的内容的末行实际上是不存在的,可以将时序库文件中用于填充上一数据结构的内容的末行理解为时序库文件的第0行,然后从时序库文件中的第一行开始遍历该时序库文件。需要说明的是,上一数据结构为填充的内容所满足的语句格式对应的数据结构,而当已经遍历出若干个满足语句格式的字符后,且已利用遍历出的字符填充所满足的语句格式对应的数据结构时,此时表明已经将已经按照所符合的语句格式对时序库文件进行了解析,并按照所符合语句格式对应的数据结构的格式写入到内存中,然后从时序库文件截止当前用于填充的最后一个数据结构(也即上一数据结构)的内容的末行的下一行开始,继续遍历时序库文件。例如,用于填充上一数据结构的内容的末行是第5行,则从时序库文件的第6行开始继续遍历该时序库文件。
可选地,本申请提供的时序库文件的格式可以但不限于为liberty格式等。
此外,本申请中的语句格式可以但不限于包括第一语句格式、第二语句格式和第三语句格式。具体地,第一语句格式、第二语句格式和第三语句格式是根据时序库文件中代码的复杂程度来定义的,第一语句格式可以为简单语句格式(Simple Attributes),第二语句格式一般为复杂语句格式(Complex Attributes),而第三语句格式可以为组声明语句格式(Group Statements)。举例来说,“revision:“1.0”;”属于简单语句格式,而“capacitive_load_unit(1,pf)”属于复杂语句格式,而“cell(DFFX1){……}”属于复杂语句格式。基于此,上述三种语句格式的说明请参考表1所示:
表1
需要说明的是,本申请中提到的语句格式还可以有扩展,可能会存在更加复杂的语句格式,只要能够应用本申请提供的基于语句格式来解析时序库文件所涉及的语句格式都在本申请的保护范围内。
相应地,创建的数据结构对应包括简单数据结构、复杂数据结构和组声明数据结构。相应地,本申请提供的数据结构也可以扩展,具体可以根据实际情况来定。
S102、判断用于填充上一数据结构的内容的末行的下一行至遍历到的第一扫描行所包括的内容是否满足设定的语句格式解析条件,若判断结果为是,则执行步骤S103;若判断结果为否,则继续遍历并继续执行步骤S102。
本步骤中的第一扫描行是动态变化的,其实质上是当前遍历到的行。本步骤中会判断用于填充上一数据结构的内容的末行的下一行至第一扫描行所包括的内容是否满足设定的语句格式解析条件,不同的语句格式对应的语句格式解析条件也不同,当满足设定的语句格式解析条件时在内存中创建所满足的语句格式对应的数据结构,如果不满足条件则继续从第一扫描行的下一行继续遍历时序库文件,然后将遍历到的当前行作为新的第一扫描行,然后再次执行步骤S102。
可选地,可以按照下述过程实施步骤S102,包括以下步骤:判断用于填充上一数据结构的内容的末行的下一行至遍历到的第一扫描行所包括的内容的格式是否符合设定的语句格式;当符合时,则确定满足设定的语句格式解析条件;当不符合时,则确定不满足设定的语句格式解析条件。
具体地,针对简单语句格式,则可以判断遍历到的内容的是否符合表1中所示的简单语句格式,即冒号和分号组合的格式,如果符合则可以判定为满足简单语句格式对应的语句格式解析条件;而对于复杂语句格式,则可以判断遍历到的内容的格式是否符合括号,以及括号内有至少一个逗号和分号组合的格式,如果符合则确定满足复杂语句格式对应的语句格式解析条件;再者,对于组声明语句格式,则可以判断遍历到的内容的格式是否符合大括号的格式,当符合时则确定满足组声明语句格式对应的语句格式解析条件。具体来说,可以采用正则表达式的方法来执行上述判断过程。
S103、创建所满足的语句格式对应的数据结构。
本步骤中,对时序库文件解析后,需要将解析得到的内容以数据结构的形式保存在内存中以方便提取使用。若上一数据结构存在,则内存中会存储有按照上一数据结构的格式存储的时序库文件中的代码转换成机器可识别的代码。举例来说,若满足组声明语句格式对应的语句格式解析条件,则在内存中创建组声明数据结构。
S104、从所述时序库文件的所述第一扫描行的下一行继续遍历,当遍历至符合所满足的语句格式的结尾的内容所在行时,根据用于填充上一数据结构的内容的末行的下一行至符合所满足的语句格式的结尾的内容所在行所包括的内容,按照所满足的语句格式对应的数据结构的格式填充创建的数据结构。
具体地,本实施例提供的所满足的语句格式对应的数据结构包括键值对,上述数据结构中的键值对的取值为基于用于填充上一数据结构的内容的末行的下一行的首个字符至第一扫描行中用于标识所满足的语句格式的结尾的设定字符之间的字符确定出的。
具体来说,当所满足的语句格式对应的数据结构为简单数据结构时,当遍历到所满足的简单语句格式的结尾的内容所在行时,该简单语句格式的结尾为分号,则从用于填充上一数据结构的内容的末行的下一行至所满足的语句格式的结尾的内容所在行所包括的内容中找到关键词和关键词的取值,然后以键值对的形式,即Key:Value的格式,将关键词及其取值填充到内存对应的简单数据结构中。而当所满足的语句格式对应的数据结构为复杂数据结构时,则当遍历到所满足的复杂语句格式的结尾的内容的所在行时,该复杂语句格式的结尾也是分号,则从用于填充上一数据结构的内容的末行的下一行至所满足的语句格式的结尾的内容所在行所包括的内容中找到关键词和关键词的各取值,并按照“Key(Value1,Value2,…);”的格式写入内存中对应复杂数据结构中。当所满足的语句格式对应的数据结构为组声明数据结构时,则所满足的组声明语句格式的结尾的内容所在行时,该组声明语句格式的结尾为大括号的右侧括号,则从用于填充上一数据结构的内容的末行的下一行至所满足的语句格式的结尾的内容所在行所包括的内容中确定关键词及取值,同时时序库文件中关键词及取值所在行的下一行至结尾的内容所在行所包括的内容作为Content直接写入内存中对应的组声明数据结构中。
具体地,当遍历到所满足的语句格式的结尾的内容所在行时,将该语句格式标识为“结束”,以便开始新的语句格式的遍历过程。
S105、判断符合所满足的语句格式的结尾的内容所在行是否为时序库文件的最后一行,若是则遍历完,流程结束;若否,则执行步骤S106。
具体地,由于当前仅是遍历完一个语句格式,则需要执行步骤S105,即判断所满足的语句格式的结尾的内容所在行是否为时序库文件的最后一行,若判断结果为是,则表明已经遍历完整个时序库文件,即流程结束,否则,表明还未遍历完整的时序库文件,则需要执行步骤S106。
S106、将所满足的语句格式对应的数据结构作为新的上一数据结构。
当步骤S105的判断结果为否时,则表明还未遍历到时序库文件的最后一行的最后一个内容,故还需要继续进行遍历,但是后续的执行过程与当前创建的数据结构的执行过程类似,因此,本步骤中,将当前所满足的语句格式对应的数据结构作为新的上一数据结构,然后重新执行步骤S101~S106,直至遍历到时序库文件的最后一个内容为止。
通过实施图1所示的流程,通过按照语句格式解析的方式来遍历及解析时序库文件,不需要逐行识别时序库文件中的关键词,更不要进行关键词匹配,只需通过时序库文件中内容所符合的语句格式来分析时序库文件,大大加快了时序库文件的文件解析速度,也即大大提高了时序库文件的解析效率。此外,本申请提供的方法只识别时序库文件中包括的语句格式,无需识别关键词,而时序库文件的语句格式的类别一般不会发生变化,因此,采用语句格式解析的方法可以解析各个IC设计流程的时序库文件,更加具备通用性。
可选地,图1中语句格式对应到时序库文件中的代码段,该代码段内可能嵌套有子语句格式,相应地,在内存中填充数据结构时,数据结构的内容可能会有所不同,具体可以按照图2所示的流程实施步骤S104,即填充数据结构,包括以下步骤:
S201、从时序库文件的第一扫描行的下一行继续遍历。
S202、判断第一扫描行的下一行至遍历到的第二扫描行所包括的内容是否满足设定的子语句格式解析条件;若判断结果为是,则执行步骤S203;若判断结果为否,则继续遍历并继续执行步骤S202。
本步骤中的第二扫描行在符合所满足的语句格式的结尾的内容所在行之前,具体地,第二扫描行在时序库文件中的行数小于上述所满足的语句格式的结尾的内容所在行在时序库文件中的行数,例如,第二扫描行为时序库文件中的第10行,而所满足的语句格式的结尾的内容所在行为时序库文件中的第15行,即先扫描到第二扫描行,再扫描到所满足的语句格式的结尾的内容所在行。
具体地,本步骤中的第二扫描行也是动态变化的,其实质上继续遍历时,当前遍历到的行,为了确认该语句格式对应的代码段中的代码是否符合子语句格式,则本步骤执行步骤S202,不同的子语句格式其对应的子语句格式解析条件不同;当第一扫描行的下一行至遍历到的第二扫描行所包括的内容满足设定的子语句格式解析条件时,则执行步骤S203;若不满足子语句格式继续条件,则从第二扫描行的下一行继续遍历时序库文件,然后将第二扫描行的下一行(也即当前行)作为新的第二扫描行,然后再次执行步骤S202。
可选地,本申请中的子语句格式也可以但不限于包括第一子语句格式、第二子语句格式和第三子语句格式。关于第一子语句格式、第二子语句格式和第三子语句格式也可以分别为简单语句格式、复杂语句格式和组声明语句格式。基于此,上述三种子语句格式的具体描述可以参考表1中的描述,此处不再重复赘述。
在此基础上,可以按照下述过程实施步骤S202,包括以下步骤:
判断第一扫描行的下一行至遍历到的第二扫描行所包括的内容的格式是否符合设定的子语句格式;当符合时,则确定满足设定的子语句格式解析条件;当不符合时,则确定不满足设定的子语句格式解析条件。
具体地,当子语句格式为简单语句格式、复杂语句格式和组声明语句格式时,判断过程可以参考步骤S102中的相关描述,此处不再重复赘述。
S203、在所满足的语句格式对应的数据结构中创建的子数据结构列表中增加子数据结构标识。
具体地,若当前未创建子数据结构列表,则在所满足的语句格式对应的数据结构中创建子数据结构列表,然后在创建的子数据结构列表中增加子数据结构标识。需要说明的是,若当前已创建的子数据结构列表,表明该数据结构包括多个子数据结构,则在子数据结构列表中添加标识时,要保证列表中各个子数据结构标识互不相同。以所满足的语句格式对应的数据结构和子数据结构为组声明数据结构为例进行说明,则当步骤S202的判断结果为是时,则在所满足的组声明数据结构中创建子数据结构列表,然后在该子数据结构列表中增加组声明结构(子数据结构)对应的子数据结构标识。当确认子数据结构列表中已有若干个子数据结构标识,则直接添加与已有子数据结构标识均不相同的子数据结构标识。例如,子数据结构列表为group:(CELL_GROUP1,CELL_GROUP2),则当有新的子数据结构时,可以将新的子数据结构标识确定为CELL_GROUP3,然后添加到group子数据结构列表中,添加后的子数据结构列表为:group:(CELL_GROUP1,CELL_GROUP2,CELL_GROUP3)。
S204、创建所满足的子语句格式对应的子数据结构。
其中,步骤S203中添加的子数据结构标识为所满足的子语句格式对应的子数据结构的标识。
具体地,在内存中创建子数据结构时,可以采用嵌套的方式创建,即可以在数据结构的内部创建子数据结构,参考图3所示。当然也可以采用其他方式,本申请对此不进行限定,只要在使用时能快速找到子数据结构所包括的内容即可。
S205、从时序库文件中的第二扫描行的下一行继续遍历,当遍历至符合子语句格式的结尾的内容所在行时,根据第一扫描行的下一行至符合子语句格式的结尾的内容所在行所包括的内容,按照所满足的子数据结构的格式填充创建的子数据结构。
具体地,在创建完子数据结构后,该子数据结构还未填充内容,还需要将时序库文件中对应内容填充到该子数据结构中,基于此,则需要从第二扫描行的下一行开始继续遍历时序库文件,当遍历到符合子语句格式的结尾的内容所在行时,基于前述两行所包括的内容按照子数据结构的格式填充该子数据结构。
可选地,本实施例提供的所满足的子语句格式对应的子数据结构包括键值对,上述子数据结构中的键值对的取值为基于第一扫描行的下一行的首个字符至第二扫描行中用于标识所满足的子语句格式的结尾的设定字符之间的字符确定出的。
S206、将符合子语句格式的结尾的内容所在行作为新的第一扫描行。
具体地,由于图1所示的数据结构可能还包括其他子数据结构,故还需要继续遍历时序库文件,但是后续的执行过程与当前子数据结构的处理过程类似,因此,本步骤中,需要将当前符合子语句格式的结尾的内容所在行作为新的第一扫描行,然后重新执行步骤S201~S206,直至遍历到步骤S104中所满足的语句格式的结尾的内容所在行为止。
通过实施图2所示的流程,实现了符合嵌套式的语句格式的时序库文件的遍历及解析,无需逐行识别时序库文件中的关键词,提高了时序库文件的解析效率。
可选地,当本申请中的子语句格式包括第一子语句格式、第二子语句格式和第三子语句格式时,可以按照下述过程实施步骤S202:判断第一扫描行的下一行至遍历到的第三扫描行所包括的内容是否满足第一子语句格式或第二子语句格式对应的子语句格式解析条件,其中第三扫描行在第二扫描行之前。
具体地,本实施例中的第三扫描行也是动态变化的,其实质上是当前遍历到的行。且第三扫描行在第二扫描行之前可以理解为:第三扫描行在时序库文件中的行数小于第二扫描行在时序库文件中的行数,例如,第三扫描行为时序库文件中的第8行,第二扫描行为时序库文件中的第10行,即先扫描到第三扫描行,再扫描到第二扫描行。
具体地,时序库文件中符合子语句格式对应的代码段中还可能嵌套符合子语句格式的若干代码,因此,在从第二扫描行的下一行继续遍历时序库文件时,需要判断时序库文件中的内容是否符合第一子语句格式或第二子语句格式。具体地,在实施判断过程时,可以判断第一扫描行的下一行至当前扫描到的第三扫描行之间的内容的格式是否符合第一子语句格式的设定格式或是否符合第二子语句格式的设定格式,当符合第一子语句格式的设定格式,或符合第二子语句格式的设定格式时,确定满足对应的子语句格式解析条件。当均不符合时则不满足对应的子语句格式解析条件。
在此基础之上,可以按照图4所示的流程实施步骤S203,包括以下步骤:
S401、当满足任一子语句格式解析条件时,则将第一扫描行的下一行至遍历到的第三扫描行所包括的内容按照第一子语句格式对应的子数据结构的格式或第二子语句格式对应的子数据结构的格式写入到所满足的语句格式对应的数据结构。
本步骤中,以第一子语句格式为简单语句格式,第二子语句格式为复杂语句格式为例进行说明,则当前遍历到的第三扫描行的结尾为分号,且第一扫描行的下一行至第三扫描行所包括的内容符合简单语句格式(第一子语句格式)的格式时,则从第一扫描行的下一行至第三扫描行所包括的内容中找到关键词和关键词的取值,然后以键值对的形式,即Key:Value的格式,将关键词及其取值填充到内存中对应的简单数据结构(第一子语句格式对应的子数据结构)中,且该简单数据结构在上层数据结构内部。同理,当第一扫描行的下一行至第三扫描行所包括的内容符合复杂语句格式的格式(第二子语句格式)时,则从第一扫描行的下一行至第三扫描行所包括的内容中找到关键词及关键词的各个取值,并按照“Key(Value1,Value2,…);”的格式写入内存中对应复杂数据结构(第二子语句格式对应的子数据结构)中,其中该对应复杂数据结构(第二子语句格式对应的子数据结构)位于上层数据结构的内部。
S402、从时序库文件中的第三扫描行的下一行继续遍历,当遍历到第二扫描行时,若第三扫描行的下一行至第二扫描行所包括的内容符合第三子语句格式对应的子语句格式解析条件时,在所满足的语句格式对应的数据结构中创建的子数据结构列表中增加第三子语句格式对应的数据结构对应的子数据结构标识。
具体地,上层数据结构中除了包括第一子数据结构和第二子数据结构外,还可能包括第三子数据结构,则需要从第三扫描行的下一行继续遍历时序库文件,则当遍历到第二扫描行时,若确认第三扫描行至第二扫描上之间的内容的格式符合第三子语句格式的设定格式,即符合第三子语句格式对应的子语句格式解析条件,则在所满足的语句格式对应的数据结构中创建的子数据结构列表中增加第三子语句格式对应子数据结构对应的子数据结构标识,具体添加子数据结构标识的方法可以参考步骤S203中的描述,此处不再详细描述。
通过实施图4所示的流程,实现了子语句格式中包括多种类型子语句格式的时序库文件的遍历及解析,无需逐行识别时序库文件中的关键词,提高了时序库文件的解析效率。
可选地,还可以按照下述过程实施步骤S104:识别用于填充上一数据结构的内容的末行的下一行至符合所满足的语句格式的结尾的内容所在行所包括的内容中的关键词;当识别出的关键词为设定关键词时,将该关键词及该关键词定义的取值以键值对的形式写入到所满足的语句格式对应的数据结构中。
具体地,用于填充上一数据结构的内容的末行的下一行至所满足的语句格式的结尾的内容所在行所包括的内容中可能有符合组声明语句格式的内容,例如,时序库文件一般都会包含library->cell->pin->timing/internal_power这样的逻辑结构,也就是说,时序库文件中一般都包括library/cell/pin/timing/interl_power等关键词,而且这些关键词不会随着工艺节点的变化而变化,因此,可以通过识别关键词的方法从用于填充上一数据结构的内容的末行的下一行至所满足的语句格式的结尾的内容所在行所包括的内容中识别关键词,当识别出的关键词为设定关键词时,将该关键词及该关键词定义的取值以键值对的形式直接写入到所满足的语句格式对应的数据结构中。通过采用上述方法,采用关键词和数据结构两种方式来解析时序库文件,进一步加快了时序库文件的解析速度。
通过实施上述方法,基于语句格式的方式解析时序库文件,最终得到的解析完成后,以Python字典转换后的数据结构可以参考图5所示。
为了更好地理解本申请提供的文件解析方法,以图6a所示的时序库文件为例进行说明,该时序库文件中的内容符合三类语句格式,分别为简单语句格式(SimpleAttributes)、复杂语句格式(Complex Attributes)和组声明(Group Statements)语句格式,采用本申请提供的文件解析方法来解析图6a所示的时序库文件的大致过程为:
1、从时序库文件的第1行开始遍历,可以判断出第1行包括的内容符合组声明语句格式对应的语句格式解析条件(结合表1中关于组声明语句格式的说明),即整个时序库文件本身是一个顶层的Group Statements,则在内存中创建顶层数据结构。
2、继续遍历第2行,第2行的内容符合简单语句格式对应的语句格式解析条件,即在顶层语句格式中嵌套了子语句格式(简单语句格式),则将第2行的内容按照简单语句格式对应的简单数据结构的格式写入到顶层数据结构中,具体请参考下述顶层数据结构以Python字典展示的具体内容。
3、继续遍历第3行,第3行的内容符合复杂语句格式对应的语句格式解析条件,即在顶层语句格式中嵌套了子语句格式(复杂语句格式),则将第3行的内容按照复杂数据结构的格式写入到顶层数据结构中,具体请参考下述顶层数据结构以Python字典展示的具体内容。
4、继续遍历第4行,第4行的内容的格式符合组声明语句格式,也即,在顶层语句格式中嵌套了一个子语句格式(组声明语句格式),即在顶层数据结构中嵌套了cell对应的组声明数据结构,则由于没有与该组声明数据结构同级的组声明数据结构,故需要在上述顶层数据结构中创建子数据结构列表,然后将cell对应的组声明数据结构的子数据结构标识添加到创建的子数据结构列表中,以cell对应的组声明数据结构的子数据结构标识为CELL_GROUP1为例进行说明,则添加后的子数据结构列表为group:[CELL_GROUP1,],具体也请参考下述顶层数据结构:
{
Key:“library”,
Value:“/home/doug/examples/liberate_121/liberate/LIBRARY/example_ccs”,
revision:“1.0”,
capacitive_load_unit:“(1,pf)”,
group:[CELL_GROUP1,],
}
具体地,该顶层数据结构的关键词Key为“library”,Value是“/home/doug/examples/liberate_121/liberate/LIBRARY/example_ccs”,该顶层数据结构的内容Content为图5中最外层大括号中的所有内容。该顶层数据结构包括简单数据结构和复杂数据结构,则采用键值对Key:Value的格式填充到顶层数据结构中。该顶层数据结构是利用python字典对写入到内存中的数据结构转换成的可视化的语言。
5、创建CELL_GROUP1对应的子数据结构,且从第4行的内容中提取子数据结构的关键词“cell”及Value取值“DFFX1”。
6、从第5行继续遍历时序库文件,第5行的内容的格式符合简单语句格式(子语句格式),则从第5行内容中提取出关键词“area”及Value取值“0”,并以简单数据结构的格式写入到上述CELL_GROUP1对应的子数据结构中,参考下述cell对应的子数据结构。从第6行继续遍历时序库文件,确认第6行的内容的格式符合简单语句格式,则从第6行的内容中提取出关键词“cell_leakage_power”及Value取值“5.72675”,并以简单数据结构的格式按顺序写入到上述CELL_GROUP1对应的子数据结构中,也请参考下述CELL_GROUP1对应的子数据结构,下述该cell对应的子数据结构是利用python字典对写入到内存中的数据结构转换成的可视化的语言。
7、从第7行继续遍历时序库文件,确认第7行的内容的格式符合组声明语句格式(子语句格式),即“pin(Q){”符合组声明语句格式,也即,在CELL_GROUP1对应的子数据结构中嵌套了pin对应的子数据结构,此时CELL_GROUP1对应的数据结构相当于图1描述的数据结构,pin对应的数据结构相当于图2描述的子数据结构,则在CELL_GROUP1对应的子数据结构中创建子数据结构列表,并将pin对应的子数据结构的子数据结构标识(PIN_GROUP1)添加到创建的子数据结构列表中,即,group:[PIN_GROUP1,],具体也请参考下述CELL_GROUP1对应的子数据结构:
{
Key:“cell”,
Value:“DFFX1”,
area:“0”,
Cell_leakage_power:“5.72675”,
group:[PIN_GROUP1,],
}
上述CELL_GROUP1对应的子数据结构的关键词Key为“cell”,Value为“DFFX1”;“area:“0”,Cell_leakage_power:“5.72675”,”为两行简单数据结构的具体内容等。
8、创建PIN_GROUP1对应的子数据结构,且从第7行的内容中提取子数据结构的关键词“pin”及Value取值“Q”。
9、从第8行继续遍历时序库文件,确认第8行的内容的格式符合简单语句格式(子语句格式),则从第8行内容中提取出关键词“direction”及Value取值“output”,并以简单数据结构的格式写入到上述PIN_GROUP1对应的子数据结构中,参考下述PIN_GROUP1对应的子数据结构。
10、继续遍历第9行,第9行的内容的格式符合组声明语句格式(子语句格式),也即,在PIN_GROUP1对应的子数据结构中嵌套了一个子数据结构(组声明数据结构),即“timing(){”,则在PIN_GROUP1对应的子数据结构中创建子数据结构列表,将timing对应的子数据结构的子数据结构标识(TIMING_GROUP1)添加到创建的子数据结构列表中,即,group:[TIMING_GROUP1],具体也请参考下述PIN_GROUP1对应的子数据结构:
{
Key:“pin”,
Value:“Q”,
Direction:“output”,
group:[TIMING_GROUP1,],
}
11、继续遍历第10行直至该时序库文件的末行,后续过程同上述步骤5~10中的过程,此处不再逐一详细描述,最终遍历完时序库文件,解析得到的数据结构可以参考图6b所示。
需要说明的是,任一层级的语句格式中,可以包括多个简单语句格式和多个复杂语句格式,也可以包括多个组声明语句格式,但是同一层的简单语句格式SimpleAttributes和复杂语句格式Complex Attributes,各自的关键字是完全不同的。但是同一层的多个组声明语句格式Group Statements,各自的Key可以相同,但是各自的Value值互不相同。
基于同一发明构思,本申请还提供了与上述文件解析方法对应的文件解析装置。该文件解析装置的实施具体可以参考上述对文件解析方法的描述,此处不再一一论述。
参见图7,图7是本申请一示例性实施例提供的一种文件解析装置,包括:
遍历模块701,用于从集成电路IC设计流程的时序库文件中用于填充上一数据结构的内容的末行的下一行开始遍历;
第一判断模块702,用于判断用于填充上一数据结构的内容的末行的下一行至遍历到的第一扫描行所包括的内容是否满足设定的语句格式解析条件;
创建模块703,用于当第一判断模块702的判断结果为满足设定的语句格式解析条件时,则创建所满足的语句格式对应的数据结构;
上述遍历模块701,还用于从所述时序库文件的所述第一扫描行的下一行继续遍历;
填充模块704,用于当上述遍历模块701遍历至符合所满足的语句格式的结尾的内容所在行时,根据所述用于填充上一数据结构的内容的末行的下一行至所述所满足的语句格式的结尾的内容所在行所包括的内容,按照所满足的语句格式对应的数据结构的格式填充创建的所满足的语句格式对应的数据结构;
第二判断模块705,用于判断所满足的语句格式的结尾的内容所在行是否为所述时序库文件的最后一行;
上述遍历模块701,还用于当上述第二判断模块705的判断结果为否时,将所述所满足的语句格式对应的数据结构作为新的上一数据结构,并继续执行所述从集成电路IC设计流程的时序库文件中用于填充上一数据结构的内容的末行的下一行开始遍历的步骤,直至遍历到所述时序库文件的最后一个内容为止。
一种可能的实施例中,上述填充模块704,包括:遍历子模块、判断子模块、添加子模块、创建子模块和填充子模块,具体请参考图8所示,其中:
遍历子模块801,用于从时序库文件的第一扫描行的下一行继续遍历;
判断子模块802,用于判断第一扫描行的下一行至遍历到的第二扫描行所包括的内容是否满足设定的子语句格式解析条件,其中,所述第二扫描行在所述符合所满足的语句格式的结尾的内容所在行之前;
添加子模块803,用于当判断子模块802的判断结果为满足子语句格式解析条件时,则在所述所满足的语句格式对应的数据结构中创建的子数据结构列表中增加子数据结构标识;
创建子模块804,用于创建所满足的子语句格式对应的子数据结构,其中,所述子数据结构标识为所述所满足的子语句格式对应的子数据结构的标识;
遍历子模块801,还用于从时序库文件中的第二扫描行的下一行继续遍历;
填充子模块805,用于当所述遍历子模块801遍历至符合所述子语句格式的结尾的内容所在行时,根据所述第一扫描行的下一行至所述符合所述子语句格式的结尾的内容所在行所包括的内容,按照所述子数据结构的格式填充创建的子数据结构;
遍历子模块801,还用于将符合所述子语句格式的结尾的内容所在行作为新的第一扫描行,并继续执行所述从所述时序库文件的第一扫描行的下一行继续遍历的步骤,直至遍历至符合所满足的语句格式的结尾的内容所在行。
可选地,本实施例中的子语句格式包括第一子语句格式、第二子语句格式和第三子语句格式,则
上述判断子模块802,具体用于判断所述第一扫描行的下一行至遍历到的第三扫描行所包括的内容是否满足第一子语句格式或第二子语句格式对应的子语句格式解析条件,其中所述第三扫描行在所述第二扫描行之前;
上述添加子模块803,具体用于当满足任一子语句格式解析条件时,则将所述第一扫描行的下一行至遍历到的第三扫描行所包括的内容按照第一子语句格式对应的子数据结构的格式或第二子语句格式对应的子数据结构的格式写入到所述所满足的语句格式对应的数据结构;从所述时序库文件中的第三扫描行的下一行继续遍历,当遍历到第二扫描行时,若所述第三扫描行的下一行至所述第二扫描行所包括的内容符合第三子语句格式对应的子语句格式解析条件时,在所述所满足的语句格式对应的数据结构中创建的子数据结构列表中增加所述第三子语句格式对应的子数据结构对应的子数据结构标识。
另一种可能的实施例中,上述填充模块704,具体用于识别所述用于填充上一数据结构的内容的末行的下一行至所述符合所满足的语句格式的结尾的内容所在行所包括的内容中的关键词;当识别出的关键词为设定关键词时,将该关键词及该关键词定义的取值以键值对的形式写入到所满足的语句格式对应的数据结构中。
可选地,上述第一判断模块702,具体用于判断用于填充上一数据结构的内容的末行的下一行至遍历到的第一扫描行所包括的内容的格式是否符合设定的语句格式;当符合时,则确定满足设定的语句格式解析条件;当不符合时,则确定不满足设定的语句格式解析条件。
可选地,上述判断子模块802,具体用于判断所述第一扫描行的下一行至遍历到的第二扫描行所包括的内容的格式是否符合设定的子语句格式;当符合时,则确定满足设定的子语句格式解析条件;当不符合时,则确定不满足设定的子语句格式解析条件。
可选地,本实施例中的所满足的语句格式对应的数据结构包括键值对,所述键值对的取值为基于所述用于填充上一数据结构的内容的末行的下一行的首个字符至所述第一扫描行中用于标识所满足的语句格式的结尾的设定字符之间的字符确定出的;以及
所述所满足的子语句格式对应的子数据结构包括键值对,所述子数据结构中的键值对的取值为基于所述第一扫描行的下一行的首个字符至所述第二扫描行中用于标识所满足的子语句格式的结尾的设定字符之间的字符确定出的。
基于同一发明构思,本申请实施例提供了一种电子设备,如图9所示,包括处理器901和机器可读存储介质902,机器可读存储介质902存储有能够被处理器901执行的计算机程序,处理器901被计算机程序促使执行本申请实施例所提供的文件解析方法。
上述计算机可读存储介质可以包括RAM(Random Access Memory,随机存取存储器),也可以包括NVM(Non-volatile Memory,非易失性存储器),例如至少一个磁盘存储器。可选的,计算机可读存储介质还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括CPU(Central Processing Unit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processor,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
另外,本申请实施例提供了一种机器可读存储介质,机器可读存储介质存储有计算机程序,在被处理器调用和执行时,计算机程序促使处理器执行本申请实施例所提供的文件解析方法。
对于电子设备以及机器可读存储介质实施例而言,由于其涉及的方法内容基本相似于前述的方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种文件解析方法,其特征在于,包括:
从集成电路IC设计流程的时序库文件中用于填充上一数据结构的内容的末行的下一行开始遍历;
判断用于填充上一数据结构的内容的末行的下一行至遍历到的第一扫描行所包括的内容是否满足设定的语句格式解析条件;
当判断结果为满足设定的语句格式解析条件时,则创建所满足的语句格式对应的数据结构;
从所述时序库文件的所述第一扫描行的下一行继续遍历,当遍历至符合所满足的语句格式的结尾的内容所在行时,根据所述用于填充上一数据结构的内容的末行的下一行至符合所满足的语句格式的结尾的内容所在行所包括的内容,按照所满足语句格式对应的数据结构的格式填充创建的数据结构;并
当符合所满足的语句格式的结尾的内容所在行不是所述时序库文件的最后一行时,将所述所满足语句格式对应的数据结构作为新的上一数据结构,并继续执行从集成电路IC设计流程的时序库文件中用于填充上一数据结构的内容的末行的下一行开始遍历的步骤,直至遍历到所述时序库文件的最后一个内容为止。
2.根据权利要求1所述的方法,其特征在于,从所述时序库文件的所述第一扫描行的下一行继续遍历,当遍历至符合所满足的语句格式的结尾的内容所在行时,根据所述用于填充上一数据结构的内容的末行的下一行至符合所满足的语句格式的结尾的内容所在行所包括的内容,按照所满足语句格式对应的数据结构的格式填充创建的数据结构,包括:
从所述时序库文件的第一扫描行的下一行继续遍历;
判断所述第一扫描行的下一行至遍历到的第二扫描行所包括的内容是否满足设定的子语句格式解析条件,其中,所述第二扫描行在所述符合所满足的语句格式的结尾的内容所在行之前;
当满足子语句格式解析条件时,则在所述所满足的语句格式对应的数据结构中创建的子数据结构列表中增加子数据结构标识;
创建所满足的子语句格式对应的子数据结构,其中,所述子数据结构标识为所述所满足的子语句格式对应的子数据结构的标识;
从所述时序库文件中的第二扫描行的下一行继续遍历,当遍历至符合所述子语句格式的结尾的内容所在行时,根据所述第一扫描行的下一行至所述符合所述子语句格式的结尾的内容所在行所包括的内容,按照所述子数据结构的格式填充创建的子数据结构;
将所述符合所述子语句格式的结尾的内容所在行作为新的第一扫描行,并继续执行所述从所述时序库文件的第一扫描行的下一行继续遍历的步骤,直至符合所满足的语句格式的结尾的内容所在行。
3.根据权利要求2所述的方法,其特征在于,所述子语句格式包括第一子语句格式、第二子语句格式和第三子语句格式,则判断所述第一扫描行的下一行至遍历到的第二扫描行所包括的内容是否满足设定的子语句格式解析条件,包括:
判断所述第一扫描行的下一行至遍历到的第三扫描行所包括的内容是否满足第一子语句格式或第二子语句格式对应的子语句格式解析条件,其中所述第三扫描行在所述第二扫描行之前;
当满足子语句格式解析条件时,则在所述所满足的语句格式对应的数据结构中创建的子数据结构列表中增加子数据结构标识,包括:
当满足任一子语句格式解析条件时,则将所述第一扫描行的下一行至遍历到的第三扫描行所包括的内容按照第一子语句格式对应的子数据结构的格式或第二子语句格式对应的子数据结构的格式写入到所述所满足语句格式对应的数据结构中;
从所述时序库文件中的第三扫描行的下一行继续遍历,当遍历到第二扫描行时,若所述第三扫描行的下一行至所述第二扫描行所包括的内容符合第三子语句格式对应的子语句格式解析条件时,在所述所满足的语句格式对应的数据结构中创建的子数据结构列表中增加所述第三子语句格式对应的子数据结构对应的子数据结构标识。
4.根据权利要求1所述的方法,其特征在于,根据所述用于填充上一数据结构的内容的末行的下一行至符合所满足的语句格式的结尾的内容所在行所包括的内容,按照所满足语句格式对应的数据结构的格式填充创建的数据结构,包括:
识别所述用于填充上一数据结构的内容的末行的下一行至所述符合所满足的语句格式的结尾的内容所在行所包括的内容中的关键词;
当识别出的关键词为设定关键词时,将该关键词及该关键词定义的取值以键值对的形式写入到所满足的语句格式对应的数据结构中。
5.根据权利要求1所述的方法,其特征在于,判断用于填充上一数据结构的内容的末行的下一行至遍历到的第一扫描行所包括的内容是否满足设定的语句格式解析条件,包括:
判断用于填充上一数据结构的内容的末行的下一行至遍历到的第一扫描行所包括的内容的格式是否符合设定的语句格式;
当符合时,则确定满足设定的语句格式解析条件;
当不符合时,则确定不满足设定的语句格式解析条件。
6.根据权利要求2所述的方法,其特征在于,判断所述第一扫描行的下一行至遍历到的第二扫描行所包括的内容是否满足设定的子语句格式解析条件,包括:
判断所述第一扫描行的下一行至遍历到的第二扫描行所包括的内容的格式是否符合设定的子语句格式;
当符合时,则确定满足设定的子语句格式解析条件;
当不符合时,则确定不满足设定的子语句格式解析条件。
7.根据权利要求2所述的方法,其特征在于,所述所满足的语句格式对应的数据结构包括键值对,所述键值对的取值为基于所述用于填充上一数据结构的内容的末行的下一行的首个字符至所述第一扫描行中用于标识所满足的语句格式的结尾的设定字符之间的字符确定出的;以及
所述所满足的子语句格式对应的子数据结构包括键值对,所述子数据结构中的键值对的取值为基于所述第一扫描行的下一行的首个字符至所述第二扫描行中用于标识所满足的子语句格式的结尾的设定字符之间的字符确定出的。
8.一种文件解析装置,其特征在于,包括:
遍历模块,用于从集成电路IC设计流程的时序库文件中用于填充上一数据结构的内容的末行的下一行开始遍历;
第一判断模块,用于判断用于填充上一数据结构的内容的末行的下一行至遍历到的第一扫描行所包括的内容是否满足设定的语句格式解析条件;
创建模块,用于当所述第一判断模块的判断结果为满足设定的语句格式解析条件时,则创建所满足的语句格式对应的数据结构;
所述遍历模块,还用于从所述时序库文件的所述第一扫描行的下一行继续遍历;
填充模块,用于当所述遍历模块遍历至符合所满足的语句格式的结尾的内容所在行时,根据所述用于填充上一数据结构的内容的末行的下一行至所述所满足的语句格式的结尾的内容所在行所包括的内容,按照所满足的语句格式对应的数据结构的格式填充创建的数据结构;
第二判断模块,用于判断所述所满足的语句格式的结尾的内容所在行是否为所述时序库文件的最后一行;
所述遍历模块,还用于当所述第二判断模块的判断结果为否时,将所述所满足的语句格式对应的数据结构作为新的上一数据结构,并继续执行所述从集成电路IC设计流程的时序库文件中用于填充上一数据结构的内容的末行的下一行开始遍历的步骤,直至遍历到所述时序库文件的最后一个内容为止。
9.根据权利要求8所述的装置,其特征在于,所述填充模块,包括:
遍历子模块,用于从所述时序库文件的第一扫描行的下一行继续遍历;
判断子模块,用于判断所述第一扫描行的下一行至遍历到的第二扫描行所包括的内容是否满足设定的子语句格式解析条件,其中,所述第二扫描行在所述符合所满足的语句格式的结尾的内容所在行之前;
添加子模块,用于当所述判断子模块的判断结果为满足子语句格式解析条件时,则在所述所满足的语句格式对应的数据结构中创建的子数据结构列表中增加子数据结构标识;
创建子模块,用于创建所满足的子语句格式对应的子数据结构,其中,所述子数据结构标识为所述所满足的子语句格式对应的子数据结构的标识;
所述遍历子模块,还用于从所述时序库文件中的第二扫描行的下一行继续遍历;
填充子模块,用于当所述遍历子模块遍历至符合所述子语句格式的结尾的内容所在行时,根据所述第一扫描行的下一行至所述符合所述子语句格式的结尾的内容所在行所包括的内容,按照所述子数据结构的格式填充创建的子数据结构;
所述遍历子模块,还用于将所述符合所述子语句格式的结尾的内容所在行作为新的第一扫描行,并继续执行所述从所述时序库文件的第一扫描行的下一行继续遍历的步骤,直至遍历至符合所满足的语句格式的结尾的内容所在行。
10.根据权利要求9述的装置,其特征在于,所述子语句格式包括第一子语句格式、第二子语句格式和第三子语句格式,则
所述判断子模块,具体用于判断所述第一扫描行的下一行至遍历到的第三扫描行所包括的内容是否满足第一子语句格式或第二子语句格式对应的子语句格式解析条件,其中所述第三扫描行在所述第二扫描行之前;
所述添加子模块,具体用于当满足任一子语句格式解析条件时,则将所述第一扫描行的下一行至遍历到的第三扫描行所包括的内容按照第一子语句格式对应的子数据结构的格式或第二子语句格式对应的子数据结构的格式写入到所述所满足的语句格式对应的数据结构;从所述时序库文件中的第三扫描行的下一行继续遍历,当遍历到第二扫描行时,若所述第三扫描行的下一行至所述第二扫描行所包括的内容符合第三子语句格式对应的子语句格式解析条件时,在所述所满足的语句格式对应的数据结构中创建的子数据结构列表中增加所述第三子语句格式对应的子数据结构对应的子数据结构标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010758660.1A CN111950257A (zh) | 2020-07-31 | 2020-07-31 | 一种文件解析方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010758660.1A CN111950257A (zh) | 2020-07-31 | 2020-07-31 | 一种文件解析方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111950257A true CN111950257A (zh) | 2020-11-17 |
Family
ID=73339814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010758660.1A Pending CN111950257A (zh) | 2020-07-31 | 2020-07-31 | 一种文件解析方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111950257A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114969843A (zh) * | 2022-08-03 | 2022-08-30 | 确信信息股份有限公司 | 支持文档样式保护的签验章方法、系统、存储介质及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455471A (zh) * | 2012-06-01 | 2013-12-18 | 阿里巴巴集团控股有限公司 | 一种将文本解析成键值对的方法和装置 |
US20160364517A1 (en) * | 2015-06-10 | 2016-12-15 | Arm Limited | Liberty File Generation |
CN110597517A (zh) * | 2019-09-16 | 2019-12-20 | 苏州思必驰信息科技有限公司 | 动态解析mat文件的方法及装置 |
-
2020
- 2020-07-31 CN CN202010758660.1A patent/CN111950257A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455471A (zh) * | 2012-06-01 | 2013-12-18 | 阿里巴巴集团控股有限公司 | 一种将文本解析成键值对的方法和装置 |
US20160364517A1 (en) * | 2015-06-10 | 2016-12-15 | Arm Limited | Liberty File Generation |
CN110597517A (zh) * | 2019-09-16 | 2019-12-20 | 苏州思必驰信息科技有限公司 | 动态解析mat文件的方法及装置 |
Non-Patent Citations (1)
Title |
---|
落水清风的个人空间: "liberty parser - liberty格式的library文件解析器", 《HTTPS://BLOG.EETOP.CN/HOME.PHP?MOD=SPACE&UID=1751000&DO=BLOG&ID=6943634》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114969843A (zh) * | 2022-08-03 | 2022-08-30 | 确信信息股份有限公司 | 支持文档样式保护的签验章方法、系统、存储介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108256074B (zh) | 校验处理的方法、装置、电子设备和存储介质 | |
CN110502227B (zh) | 代码补全的方法及装置、存储介质、电子设备 | |
Tilley et al. | A survey of formal concept analysis support for software engineering activities | |
CN108549605B (zh) | 一种自动化测试方法 | |
US8132156B2 (en) | Methods and systems for testing tool with comparative testing | |
US7340475B2 (en) | Evaluating dynamic expressions in a modeling application | |
Holzinger et al. | Using ontologies for extracting product features from web pages | |
US20070136220A1 (en) | Apparatus for learning classification model and method and program thereof | |
CN115358200A (zh) | 一种基于SysML元模型的模板化文档自动生成方法 | |
CN115080448B (zh) | 一种软件代码不可达路径自动检测的方法和装置 | |
CN108427580A (zh) | 配置对命名重复的检测方法、存储介质和智能设备 | |
CN111506342A (zh) | 版本差异检测方法、装置、电子设备及存储介质 | |
CN114692532A (zh) | 芯片系统的集成方法、装置及计算机可读存储介质 | |
CN115344504A (zh) | 基于需求规格说明书的软件测试用例自动生成方法及工具 | |
CN109325217B (zh) | 一种文件转换方法、系统、装置及计算机可读存储介质 | |
CN113360603B (zh) | 一种合同相似性及合规性检测方法及装置 | |
Hameed et al. | SURAGH: Syntactic Pattern Matching to Identify Ill-Formed Records. | |
CN111950257A (zh) | 一种文件解析方法和装置 | |
CN110874398B (zh) | 违禁词处理方法、装置、电子设备及存储介质 | |
CN113139033A (zh) | 文本处理方法、装置、设备及存储介质 | |
JP6022815B2 (ja) | 構文解析を用いたソースコードの差分抽出方法およびシステム | |
CN102486731B (zh) | 增强软件的软件调用栈的可视化的方法、设备和系统 | |
CN115544975A (zh) | 一种日志格式转换方法及设备 | |
CN113971044A (zh) | 组件文档生成方法、装置、设备及可读存储介质 | |
CN114385155A (zh) | vue项目可视化工具生成方法、装置、设备及存储介质 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20201117 |