CN115345155A - Sv运行时的表达式求值方法 - Google Patents

Sv运行时的表达式求值方法 Download PDF

Info

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
Application number
CN202211036281.7A
Other languages
English (en)
Other versions
CN115345155B (zh
Inventor
陈彬
杨晓东
董森华
雍晓
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.)
Chengdu Huada Jiutian Technology Co ltd
Original Assignee
Chengdu Huada Jiutian Technology Co ltd
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 Chengdu Huada Jiutian Technology Co ltd filed Critical Chengdu Huada Jiutian Technology Co ltd
Priority to CN202211036281.7A priority Critical patent/CN115345155B/zh
Publication of CN115345155A publication Critical patent/CN115345155A/zh
Application granted granted Critical
Publication of CN115345155B publication Critical patent/CN115345155B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic 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运行时的表达式求值方法
技术领域
本申请属于集成电路技术领域,尤其涉及一种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是否需要优化。
CN202211036281.7A 2022-08-28 2022-08-28 Sv运行时的表达式求值方法 Active CN115345155B (zh)

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)

* Cited by examiner, † Cited by third party
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 京东科技信息技术有限公司 一种数据处理方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
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