CN115345155A - Sv运行时的表达式求值方法 - Google Patents
Sv运行时的表达式求值方法 Download PDFInfo
- Publication number
- CN115345155A CN115345155A CN202211036281.7A CN202211036281A CN115345155A CN 115345155 A CN115345155 A CN 115345155A CN 202211036281 A CN202211036281 A CN 202211036281A CN 115345155 A CN115345155 A CN 115345155A
- Authority
- CN
- China
- Prior art keywords
- ast
- expression
- variable
- nodes
- node
- 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
- 230000014509 gene expression Effects 0.000 title claims abstract description 174
- 238000011156 evaluation Methods 0.000 title claims abstract description 40
- 238000000034 method Methods 0.000 claims abstract description 26
- 238000001514 detection method Methods 0.000 claims abstract description 23
- 238000005457 optimization Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 238000009795 derivation Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000012854 evaluation process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000007493 shaping process 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/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
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)
- Machine Translation (AREA)
Abstract
一种SV运行时的表达式求值方法,其包括:对输入的SV表达式字符串进行语法分析,以将SV表达式字符串转换为AST,AST包括节点以及节点间依赖关系,节点包括操作节点、变量节点;基于SV语义检测规则,对AST进行语义分析,以通过变量查询推导AST中各个变量节点的表达式类型,以及通过操作数合法化核查来确定各个操作节点的表达式类型,并基于表达式类型进行表达式类型传播以对AST进行合法化;判断合法化的AST是否需要优化,如果不需要,则按照自底向上的方向进行遍历,以对合法化后的AST进行求值操作得到SV表达式字符串的求值结果;如果需要,则对合法化后的AST进行优化,按照自底向上的方向进行遍历以对优化后的AST进行求值操作得到SV表达式字符串的求值结果。
Description
技术领域
本申请属于集成电路技术领域,尤其涉及一种SV运行时的表达式求值方法。
背景技术
Spirit库是一个基于EBNF(Extended Backus-Naur Form)范式的LL(Left-to-right,Leftmost derivation)解析器框架,直接使用C++代码来实现EBNF语法,易于编写、理解和阅读。
SV(SystemVerilog)是一种在现代集成电路(尤其是超大规模集成电路)的设计及验证流程中,由Verilog发展而来的硬体描述、硬件验证统一语言,前一部分基本上是2005年版Verilog的扩展,而后一部分功能验证特性则是一门面向对象程序设计语言。面向对象特性很好地弥补了传统Verilog在芯片验证领域的缺陷,改善了代码可重用性,同时可以让验证工程师在比寄存器传输级更高的抽象级别,以事务而非单个信号作为监测对象,这些都大大提高了验证平台搭建的效率。
SV仿真程序、仿真调试器以及波形调试器的某些功能都需要在运行时去对表达式进行求值,所以基于SV的表达式求值是实现SV仿真程序、仿真调试工具以及波形调试工具所需解决的重点问题之一。基于SV的表达式求值在求值过程中会进行值类型(Value type)和值长度(Value size)的传播,所以需要更多的处理步骤,由此导致求值效率较低。
发明内容
为解决现有技术中上述技术问题,本申请提供了一种SV运行时的表达式求值方法,其包括:
对输入的SV表达式字符串进行语法分析,以将所述SV表达式字符串转换为AST,其中,所述AST包括节点以及节点间依赖关系,所述节点包括操作节点、变量节点;
基于SV语义检测规则,对所述AST进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,以及通过操作数合法化核查来确定各个操作节点的表达式类型,并基于所述表达式类型进行表达式类型传播以对所述AST进行合法化;
判断合法化的AST是否需要优化,如果不需要,则按照自底向上的方向进行遍历,以对合法化后的AST进行求值操作,得到SV表达式字符串的求值结果;如果需要,则对合法化后的AST进行优化,按照自底向上的方向进行遍历,以对优化后的AST进行求值操作,得到SV表达式字符串的求值结果。
可选地,所述将所述SV表达式字符串转换为AST,包括:若所述节点为操作节点,则在所述AST中以实线圆圈节点标识,若所述节点为变量节点,则在所述AST中以虚线圆圈节点标识。
可选地,所述将所述SV表达式字符串转换为AST,包括:对于有依赖关系的节点,在生成有箭头的线段来表示所述节点之间的依赖关系。
可选地,所述方法还包括:定义表达式类型的数据结构,以在基于SV语义检测规则,对所述AST进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型时,基于所述表达式类型的数据结构进行所述变量查询。
可选地,在所述表达式类型的数据结构中定义有所述SV表达式字符串中的变量是否为无符号数、定义有所述SV表达式字符串中变量的数据类型、定义有所述SV表达式字符串中变量的数据长度,以在基于所述表达式类型的数据结构进行所述变量查询时,基于所述变量是否为无符号数、所述变量的数据类型、所述变量的数据长度进行所述变量查询。
可选地,所述表达式类型的数据结构的长度为64比特,其中,第63个比特用于定义SV表达式字符串中的变量是否为无符号数,第56至62个比特用于定义有所述SV表达式字符串中变量的数据类型,第0至55个比特用于所述SV表达式字符串中变量的数据长度。
可选地,所述基于SV语义检测规则,对所述AST进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,包括:基于SV语义检测规则定义的先访问父节点再访问该父节点的孩子节点,遍历所述AST中的节点以进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型。
可选地,所述基于SV语义检测规则定义的先访问父节点再访问该父节点的孩子节点,遍历所述AST中的节点以进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,包括:判断当前要遍历的父节点是变量节点,还是操作节点,若当前要遍历的父节点是变量节点,则针对所述父节点变量查询推导所述变量节点的表达式类型。
可选地,所述通过操作数合法化核查来确定各个操作节点的表达式类型,包括:基于操作节点的运算符以进行操作数合法化核查通过操作数合法化核查来确定各个操作节点的表达式类型。
可选地,所述判断合法化的AST是否需要优化,包括:根据运算的开销和效率,判断合法化的AST是否需要优化。
本申请中,通过对输入的SV表达式字符串进行语法分析,以将所述SV表达式字符串转换为AST,其中,所述AST包括节点以及节点间依赖关系,所述节点包括操作节点、变量节点;基于SV语义检测规则,对所述AST进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,以及通过操作数合法化核查来确定各个操作节点的表达式类型,并基于所述表达式类型进行表达式类型传播以对所述AST进行合法化;判断合法化的AST是否需要优化,如果不需要,则按照自底向上的方向进行遍历,以对合法化后的AST进行求值操作,得到SV表达式字符串的求值结果;如果需要,则对合法化后的AST进行优化,按照自底向上的方向进行遍历,以对优化后的AST进行求值操作,得到SV表达式字符串的求值结果,如果同一个表达式重复求值,还可以缓存优化后的AST,下一次求值时,直接使用缓存的AST进行求值,从而大大提高了求值效率。
附图说明
图1为本申请提供的一种SV运行时的表达式求值方法的流程示意图;
图2为本申请实施例表达式类型的数据结构的示意图;
图3为(a~^b)+c进行语法解析得到的AST示意图;
图4中通过表达式类型推导后的示意图;
图5为表达式类型推广的示意图;
图6为求值的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请中,通过对输入的SV表达式字符串进行语法分析,以将所述SV表达式字符串转换为AST,其中,所述AST包括节点以及节点间依赖关系,所述节点包括操作节点、变量节点;基于SV语义检测规则,对所述AST进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,以及通过操作数合法化核查来确定各个操作节点的表达式类型,并基于所述表达式类型进行表达式类型传播以对所述AST进行合法化;判断合法化的AST是否需要优化,如果不需要,则按照自底向上的方向进行遍历,以对合法化后的AST进行求值操作,得到SV表达式字符串的求值结果;如果需要,则对合法化后的AST进行优化,按照自底向上的方向进行遍历,以对优化后的AST进行求值操作,得到SV表达式字符串的求值结果,如果同一个表达式重复求值,还可以缓存优化后的AST,下一次求值时,直接使用缓存的AST进行求值,从而大大提高了求值效率。
图1为本申请提供的一种SV运行时的表达式求值方法的流程示意图;如图1所示,其包括:
S101、语法分析步骤,以形成AST。
AST全称为Abstract Syntax Tree,中文含义为抽象语法树;或简称语法树(Syntax tree),是SV表达式字符串的一种抽象表示。它以树状的形式表现SV表达式字符串的语法结构,树上的每个节点都表示SV表达式字符串中的一种结构。
当然,此处需要说明的是,也可以使用其他语法树结构来代替AST,本申请实施例不做特别限定。
具体地,所述步骤S101可以包括:对输入的SV表达式字符串进行语法分析,以将所述SV表达式字符串转换为AST,其中,所述AST包括节点以及节点间依赖关系,所述节点包括操作节点、变量节点。
可选地,可以基于spirit库编写的语法分析器执行上述语法分析步骤,以对输入的SV表达式字符串进行语法分析,从而降低了算法实现的难度,同时便于算法的理解。
此处,基于spirit库编写的语法分析器仅仅是实现上述语法分析的一种示例,并非唯一性限定,对于本领域普通技术人员来说,也可以使用其他类型的语法分析器来实现上述步骤S101。
可选地,所述将所述SV表达式字符串转换为AST,包括:若所述节点为操作节点,则在所述AST中以实线圆圈节点标识,若所述节点为变量节点,则在所述AST中以虚线圆圈节点标识。
可选地,所述将所述SV表达式字符串转换为AST,包括:对于有依赖关系的节点,在生成有箭头的线段来表示所述节点之间的依赖关系。
需要说明的是,实线圆圈节点标识操作节点,虚线圆圈节点标识变量节点仅仅示例,并非唯一性限定。
S102、语义分析步骤,以对所述AST进行表达式类型推导以及表达式类型传播。
可选地,步骤S102中,可以具体基于SV语义检测规则,对所述AST进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,以及通过操作数合法化核查来确定各个操作节点的表达式类型,并基于所述表达式类型进行表达式类型传播以对所述AST进行合法化。
可选地,所述方法还包括:定义表达式类型的数据结构,以在基于SV语义检测规则,对所述AST进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型时,基于所述表达式类型的数据结构进行所述变量查询,从而降低上述语法分析的开销。
可选地,在所述表达式类型的数据结构中定义有所述SV表达式字符串中的变量是否为无符号数、定义有所述SV表达式字符串中变量的数据类型、定义有所述SV表达式字符串中变量的数据长度,以在基于所述表达式类型的数据结构进行所述变量查询时,基于所述变量是否为无符号数、所述变量的数据类型、所述变量的数据长度进行所述变量查询,从而使得上述语法分析中表达式类型推导可以有序进行,并提高表达式类型推导的效率。
可选地,图2为本申请实施例表达式类型的数据结构的示意图;如图2所示,所述表达式类型的数据结构的长度为64比特,其中,第63个比特(1比特)用于定义SV表达式字符串中的变量是否为无符号数(图中记为Unsigned),第56至62个比特(共计7比特)用于定义有所述SV表达式字符串中变量的数据类型(图中记为DataType),第0至55个比特(56比特)用于所述SV表达式字符串中变量的数据长度(图中记为DataLength),从而在进行表达式类型推导时只占用一个64比特的整形寄存器,尽可能降低了开销。
可选地,所述基于SV语义检测规则,对所述AST进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,包括:基于SV语义检测规则定义的先访问父节点再访问该父节点的孩子节点,遍历所述AST中的节点以进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,从而可以实现父节点以及其下的所有孩子节点遍历完成后,再遍历另外一个父节点以及其下的所有孩子节点,直至AST上所有的节点遍历完毕,从而提高了遍历的效率和速度。
可选地,所述基于SV语义检测规则定义的先访问父节点再访问该父节点的孩子节点,遍历所述AST中的节点以进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,包括:判断当前要遍历的父节点是变量节点,还是操作节点,若当前要遍历的父节点是变量节点,则针对所述父节点变量查询推导所述变量节点的表达式类型,从而使得只针对变量节点进行变量查询,提高了变量查询的效率。如果是操作节点,则直接进行操作数合法化核查来确定该操作节点的表达式类型。
可选地,所述通过操作数合法化核查来确定各个操作节点的表达式类型,包括:基于操作节点的运算符以进行操作数合法化核查通过操作数合法化核查来确定各个操作节点的表达式类型。比如移位运算符的操作数不能为浮点类型。
可选地,在进行所述变量查询时,查询内存中是否存在该变量节点对应的变量,若不存在,则在进程中获取该变量节点对应的变量,从而提高求值的效率。
可选地,基于所述表达式类型进行表达式类型传播以对所述AST进行合法化,包括:基于SV语义检测规则定义的先访问父节点再访问该父节点的孩子节点,遍历所述AST中的节点以表达式类型传播以对所述AST进行合法化,从而实现了以父节点的表达式类型为参考类型,根据父节点的操作符的运算语义,对子节点的表达式类型进行更新或生成相应的类型提升节点,实现类型提升以及长度的扩展。类型提升以及长度扩展的规则为:与参考类型比较,长度取最长,值类型取最大(bit<logic<real),存在unsigned取unsigned,否则为signed;如果子节点为变量节点则需要生成相应的类型提升节点,否则需要根据操作符的运算语义对子节点的表达式类型进行更新或生成相应的类型提升节点。例如,在图5中父节点加法操作节点(+)要求其操作数是相同类型(长度、值类型相同)的节点,而子节点同或操作节点(~^)的长度为2,与父节点的长度不同,所以需要将子节点的长度更新为4。一直重复该步骤直到AST中所有的节点都遍历完成。
可选地,所述基于所述表达式类型进行表达式类型传播以对所述AST进行合法化,包括:在具有依赖关系的变量节点和操作节点之间进行零扩展或符号扩展或浮点转换操作以增加零扩展节点或符号扩展节点或浮点转换节点,分别记为zext,sext,fcvt。zext,sext,fcvt节点将变量节点转换为操作节点的合法操作数,将隐式的转换变成了显式的转换,在求值时每个操作节点只需负责其本身的操作,而无需进行类型的判断和转换操作,既方便求值,又有利于优化,也保留了变量节点的原始信息。
本实施例中,通过增加零扩展节点(zext),一方面可以满足所有转换的显示,不需要在运算时去加以判断;另一方面可以满足操作节点对各操作数类型相同的要求,同时还可以保证AST合法化的要求,以及保证了在优化过程中,每一个节点都是合法的节点,无需对类型进行多余的判断。
可选地,基于SV语义检测规则比如具体为中序遍历算法。
S103、优化AST步骤;
可选地,所述步骤S103中,判断合法化的AST是否需要优化;
可选地,所述判断合法化的AST是否需要优化,包括:根据运算的开销和效率,判断合法化的AST是否需要优化。在大多数计算机***中移位运算的效率和开销都比加法运行要快要小,因此,可以将操作节点表示的加法优化为移位运算,从而实现AST的优化。
可替代或者进一步地,也可以根据具体的指令***以及SV仿真器的具体实现来优化AST。
S104、求值步骤;
如果不需要,则按照自底向上的方向进行遍历,以对合法化后的AST进行求值操作,得到SV表达式字符串的求值结果;如果需要,则对合法化后的AST进行优化,按照自底向上的方向进行遍历,以对优化后的AST进行求值操作,得到SV表达式字符串的求值结果。
以下以一具体的SV表达式字符串为例对本申请的上述技术内容进行示例性解释。
SV表达式字符串为:(a~^b)+c,其中,“~^”为同或运算,a、b为无符号logic类型的变量,其长度2位,c为无符号logic类型的变量,其长度为4位:
(1)对(a~^b)+c进行语法解析得到的AST如图3所示,其中虚线圆圈节点为变量节点,实线圆圈节点为运算(操作)节点,箭头表示节点之间的依赖关系。
(2)完成语法分析后进行语义分析,分别如下图4、5所示。图4中通过表达式类型推导后的示意图;图5为表达式类型推广的示意图;如图4所示,变量a和b的类型(2logicunsigned),然后同或操作(~^)通过a和b类型得出表达式a~^b的类型为(2logicunsigned),通过变量查询得出变量c的类型(4logic unsigned),然后+操作根据左右操作数得出表达式(a~^b)+c的类型为(4logic unsigned)。图5中,增加了zext节点,类型(4logic unsigned),由此,同或操作(~^)通过a和b类型得出表达式a~^b的类型变为(4logic unsigned)。
(3)完成完语义分析之后,判断是否需要进行AST优化,本实施例的开销最小,判定不需要优化。
(4)进行求值操作。此时变量a、b、c经过语义分析的变量查询之后,其值是已知的。在本例中假设a=2’b00,b=2’b00,c=4’b0001。经过求值之后表达式的结果为4’b0000,其求值过程为下图6所示。
本申请实施例还提供一种计算机程序产品,其上存储有计算机可执行指令,所述计算机可执行指令被执行,以实施如下步骤:
对输入的SV表达式字符串进行语法分析,以将所述SV表达式字符串转换为AST,其中,所述AST包括节点以及节点间依赖关系,所述节点包括操作节点、变量节点;
基于SV语义检测规则,对所述AST进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,以及通过操作数合法化核查来确定各个操作节点的表达式类型,并基于所述表达式类型进行表达式类型传播以对所述AST进行合法化;
判断合法化的AST是否需要优化,如果不需要,则按照自底向上的方向进行遍历,以对合法化后的AST进行求值操作,得到SV表达式字符串的求值结果;如果需要,则对合法化后的AST进行优化,按照自底向上的方向进行遍历,以对优化后的AST进行求值操作,得到SV表达式字符串的求值结果。
本申请实施例还提供一种SV运行时的表达式求值装置,其包括:
第一程序单元,用于对输入的SV表达式字符串进行语法分析,以将所述SV表达式字符串转换为AST,其中,所述AST包括节点以及节点间依赖关系,所述节点包括操作节点、变量节点;
第二程序单元,用于基于SV语义检测规则,对所述AST进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,以及通过操作数合法化核查来确定各个操作节点的表达式类型,并基于所述表达式类型进行表达式类型传播以对所述AST进行合法化;
第三程序单元,用于判断合法化的AST是否需要优化,如果不需要,则按照自底向上的方向进行遍历,以对合法化后的AST进行求值操作,得到SV表达式字符串的求值结果;如果需要,则对合法化后的AST进行优化,按照自底向上的方向进行遍历,以对优化后的AST进行求值操作,得到SV表达式字符串的求值结果。
所述第一程序单元、第二程序单元、第三程序单元的示例性处理可参见上述方法实施例的记载。
本申请实施例还提供一种电子设备,其包括存储器以及处理器,所述存储器上存储有计算机可执行指令,所述计算机可执行指令被执行,以实施如下步骤:
对输入的SV表达式字符串进行语法分析,以将所述SV表达式字符串转换为AST,其中,所述AST包括节点以及节点间依赖关系,所述节点包括操作节点、变量节点;
基于SV语义检测规则,对所述AST进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,以及通过操作数合法化核查来确定各个操作节点的表达式类型,并基于所述表达式类型进行表达式类型传播以对所述AST进行合法化;
判断合法化的AST是否需要优化,如果不需要,则按照自底向上的方向进行遍历,以对合法化后的AST进行求值操作,得到SV表达式字符串的求值结果;如果需要,则对合法化后的AST进行优化,按照自底向上的方向进行遍历,以对优化后的AST进行求值操作,得到SV表达式字符串的求值结果。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (10)
1.一种SV运行时的表达式求值方法,其特征在于,包括:
对输入的SV表达式字符串进行语法分析,以将所述SV表达式字符串转换为AST,其中,所述AST包括节点以及节点间依赖关系,所述节点包括操作节点、变量节点;
基于SV语义检测规则,对所述AST进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,以及通过操作数合法化核查来确定各个操作节点的表达式类型,并基于所述表达式类型进行表达式类型传播以对所述AST进行合法化;
判断合法化的AST是否需要优化,如果不需要,则按照自底向上的方向进行遍历,以对合法化后的AST进行求值操作,得到SV表达式字符串的求值结果;如果需要,则对合法化后的AST进行优化,按照自底向上的方向进行遍历,以对优化后的AST进行求值操作,得到SV表达式字符串的求值结果。
2.根据权利要求1所述的方法,其特征在于,所述将所述SV表达式字符串转换为AST,包括:若所述节点为操作节点,则在所述AST中以实线圆圈节点标识,若所述节点为变量节点,则在所述AST中以虚线圆圈节点标识。
3.根据权利要求1所述的方法,其特征在于,所述将所述SV表达式字符串转换为AST,包括:对于有依赖关系的节点,在生成有箭头的线段来表示所述节点之间的依赖关系。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:定义表达式类型的数据结构,以在基于SV语义检测规则,对所述AST进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型时,基于所述表达式类型的数据结构进行所述变量查询。
5.根据权利要求4所述的方法,其特征在于,在所述表达式类型的数据结构中定义有所述SV表达式字符串中的变量是否为无符号数、定义有所述SV表达式字符串中变量的数据类型、定义有所述SV表达式字符串中变量的数据长度,以在基于所述表达式类型的数据结构进行所述变量查询时,基于所述变量是否为无符号数、所述变量的数据类型、所述变量的数据长度进行所述变量查询。
6.根据权利要求5所述的方法,其特征在于,所述表达式类型的数据结构的长度为64比特,其中,第63个比特用于定义SV表达式字符串中的变量是否为无符号数,第56至62个比特用于定义有所述SV表达式字符串中变量的数据类型,第0至55个比特用于所述SV表达式字符串中变量的数据长度。
7.根据权利要求1所述的方法,其特征在于,所述基于SV语义检测规则,对所述AST进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,包括:基于SV语义检测规则定义的先访问父节点再访问该父节点的孩子节点,遍历所述AST中的节点以进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型。
8.根据权利要求7所述的方法,其特征在于,所述基于SV语义检测规则定义的先访问父节点再访问该父节点的孩子节点,遍历所述AST中的节点以进行语义分析,以通过变量查询推导所述AST中各个变量节点的表达式类型,包括:判断当前要遍历的父节点是变量节点,还是操作节点,若当前要遍历的父节点是变量节点,则针对所述父节点变量查询推导所述变量节点的表达式类型。
9.根据权利要求8所述的方法,其特征在于,所述通过操作数合法化核查来确定各个操作节点的表达式类型,包括:基于操作节点的运算符以进行操作数合法化核查通过操作数合法化核查来确定各个操作节点的表达式类型。
10.根据权利要求1所述的方法,其特征在于,所述判断合法化的AST是否需要优化,包括:根据运算的开销和效率,判断合法化的AST是否需要优化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211036281.7A CN115345155B (zh) | 2022-08-28 | 2022-08-28 | Sv运行时的表达式求值方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211036281.7A CN115345155B (zh) | 2022-08-28 | 2022-08-28 | Sv运行时的表达式求值方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115345155A true CN115345155A (zh) | 2022-11-15 |
CN115345155B CN115345155B (zh) | 2024-07-09 |
Family
ID=83953171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211036281.7A Active CN115345155B (zh) | 2022-08-28 | 2022-08-28 | Sv运行时的表达式求值方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115345155B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040019883A1 (en) * | 2001-01-26 | 2004-01-29 | Northwestern University | Method and apparatus for automatically generating hardware from algorithms described in matlab |
US20190042215A1 (en) * | 2017-08-07 | 2019-02-07 | Sap Se | Template expressions for constraint-based systems |
CN110088737A (zh) * | 2016-10-25 | 2019-08-02 | 重构.Io有限公司 | 将并发程序转换为可部署在基于fpga的云基础设施上的硬件的综合路径 |
CN111045678A (zh) * | 2019-11-06 | 2020-04-21 | 北京奇艺世纪科技有限公司 | 页面执行动态代码的方法、装置、设备及存储介质 |
CN111124414A (zh) * | 2019-12-02 | 2020-05-08 | 东巽科技(北京)有限公司 | 一种基于操作链接的抽象语法树取词方法 |
CN113987405A (zh) * | 2021-11-02 | 2022-01-28 | 山东新汉唐数据科技有限公司 | 一种基于ast的数学表达式计算算法 |
CN114816420A (zh) * | 2022-04-25 | 2022-07-29 | 京东科技信息技术有限公司 | 一种数据处理方法和装置 |
-
2022
- 2022-08-28 CN CN202211036281.7A patent/CN115345155B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040019883A1 (en) * | 2001-01-26 | 2004-01-29 | Northwestern University | Method and apparatus for automatically generating hardware from algorithms described in matlab |
CN110088737A (zh) * | 2016-10-25 | 2019-08-02 | 重构.Io有限公司 | 将并发程序转换为可部署在基于fpga的云基础设施上的硬件的综合路径 |
US20190042215A1 (en) * | 2017-08-07 | 2019-02-07 | Sap Se | Template expressions for constraint-based systems |
CN111045678A (zh) * | 2019-11-06 | 2020-04-21 | 北京奇艺世纪科技有限公司 | 页面执行动态代码的方法、装置、设备及存储介质 |
CN111124414A (zh) * | 2019-12-02 | 2020-05-08 | 东巽科技(北京)有限公司 | 一种基于操作链接的抽象语法树取词方法 |
CN113987405A (zh) * | 2021-11-02 | 2022-01-28 | 山东新汉唐数据科技有限公司 | 一种基于ast的数学表达式计算算法 |
CN114816420A (zh) * | 2022-04-25 | 2022-07-29 | 京东科技信息技术有限公司 | 一种数据处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115345155B (zh) | 2024-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110187885B (zh) | 一种量子程序编译的中间代码生成方法及装置 | |
Cordeiro et al. | SMT-based bounded model checking for embedded ANSI-C software | |
US10423518B2 (en) | Systems and methods for analyzing violations of coding rules | |
JP2007528059A (ja) | ソフトウェアのモデル化、抽象、および分析のためのシステムと方法 | |
US8108195B2 (en) | Satisfiability (SAT) based bounded model checkers | |
EP0755544A1 (en) | Architecture and methods for a hardware description language source level analysis and debugging system | |
US5949993A (en) | Method for the generation of ISA simulators and assemblers from a machine description | |
US6990438B1 (en) | Method and apparatus for observability-based code coverage | |
US8108199B2 (en) | Phase events in a simulation model of a digital system | |
JPH06501580A (ja) | 多言語最適化コンパイラ内のシンボル テーブル構成用インタフェイス | |
CN114638184B (zh) | 门级电路的仿真方法、***、存储介质及设备 | |
US10839124B1 (en) | Interactive compilation of software to a hardware language to satisfy formal verification constraints | |
CN116149670A (zh) | 一种基于图的hdl编译优化方法 | |
CN115345155B (zh) | Sv运行时的表达式求值方法 | |
CN118103815A (zh) | 编译方法以及用于编译的装置 | |
US7225417B2 (en) | Method and system to verify a circuit design by verifying consistency between two different language representations of a circuit design | |
US6578196B1 (en) | Checking of units and dimensional homogeneity of expressions in computer programs | |
US7506287B2 (en) | Method, system, and program product for pre-compile processing of hardware design language (HDL) source files | |
KR20050065015A (ko) | 프로그램의 복제 여부를 검사하는 방법 및 시스템 | |
US11650802B2 (en) | Idiomatic source code generation | |
CN117743658B (zh) | 一种约束信息的集中可视化方法、电子设备及存储介质 | |
CN118069150A (zh) | 一种编译方法、编译器以及隐式转换方法、装置 | |
Adamchuk et al. | Automatic Acceptor Generation based on EBNF Grammar Definition | |
Büssow | Model checking combined Z and Statechart specifications | |
CN118113291A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Hu Hao Inventor after: Chen Bin Inventor after: Yang Xiaodong Inventor after: Dong Senhua Inventor after: Yong Xiao Inventor before: Chen Bin Inventor before: Yang Xiaodong Inventor before: Dong Senhua Inventor before: Yong Xiao |