CN118211535A - 数字电路仿真中表达式的计算方法及装置 - Google Patents
数字电路仿真中表达式的计算方法及装置 Download PDFInfo
- Publication number
- CN118211535A CN118211535A CN202410385321.1A CN202410385321A CN118211535A CN 118211535 A CN118211535 A CN 118211535A CN 202410385321 A CN202410385321 A CN 202410385321A CN 118211535 A CN118211535 A CN 118211535A
- Authority
- CN
- China
- Prior art keywords
- data
- expression
- array
- layer
- calculation
- 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
- 230000014509 gene expression Effects 0.000 title claims abstract description 185
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000004088 simulation Methods 0.000 title claims abstract description 70
- 238000004364 calculation method Methods 0.000 claims abstract description 81
- 238000012545 processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 235000008429 bread Nutrition 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本公开涉及一种数字电路仿真中表达式的计算方法及装置。该方法包括:在数字电路仿真过程中获取待计算的表达式;生成所述表达式的前缀表达式;根据所述表达式和所述前缀表达式构建三层数据结构,所述三层数据结构包括计算层;根据所述前缀表达式生成所述计算层中的运算序列数组和数据数组;根据运算序列数组中元素的元素类型和内容调用数据进行计算;由所述数据数组获取所述表达式的计算结果。本申请涉及的数字电路仿真中表达式的计算方法及装置,能够在数字电路仿真过程中,提高长表达式的运算效率,减少仿真的内存开销,减少信号存取次数,加快仿真速度。
Description
技术领域
本公开涉及计算机信息处理领域,具体而言,涉及一种数字电路仿真中表达式的计算方法及装置。
背景技术
用数字信号完成对数字量进行算术运算和逻辑运算的电路称为数字电路,或数字系统。由于它具有逻辑运算和逻辑处理功能,所以又称数字逻辑电路。逻辑门是数字逻辑电路的基本单元。数字电路可以分为组合逻辑电路和时序逻辑电路两大类。
在构建实际的电路之前,对设计进行仿真验证,可以大大地提高设计效率。这是由于,设计人员可以在构建电路之前,预先观察、研究电路的行为,而不必为电路的物理实现付出时间和经济的成本。尤其是集成电路,在物理上实现电路所需的光掩模等电子工艺成本不菲,而集成电路的高复杂性又在面包板上面难以实现,用传统的方法研究电路的行为较为困难。因此,几乎所有的集成电路设计都较为依赖仿真。
数字电路中存在着大量的表达式,主要由逻辑运算和算数运算组成。EDA仿真器可以对电路的功能行为进行模拟,而不需要建立实际的电路,因此它是一种很有实用价值的工具。最著名的模拟仿真是SPICE,而最著名的数字电路仿真器都是基于Verilog或VHDL的。对于数字电路进行仿真需要计算大量表达式,如何将表达式的仿真计算过程进行优化,一直时数字电路仿真中的热点技术。
在所述背景技术部分公开的上述信息仅用于加强对本申请的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本申请提供一种数字电路仿真中表达式的计算方法及装置,能够在数字电路仿真过程中,提高长表达式的运算效率,减少仿真的内存开销,减少信号存取次数,加快仿真速度。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请的一方面,提出一种数字电路仿真中表达式的计算方法,该方法包括:在数字电路仿真过程中获取待计算的表达式;生成所述表达式的前缀表达式;根据所述表达式和所述前缀表达式构建三层数据结构,所述三层数据结构包括计算层;根据所述前缀表达式生成所述计算层中的运算序列数组和数据数组;根据运算序列数组中元素的元素类型和内容调用数据进行计算;由所述数据数组获取所述表达式的计算结果。
在本申请的一种示例性实施例中,根据所述表达式和所述前缀表达式构建三层数据结构,包括:通过所述表达式中的数据构建第一数据层和第二数据层;通过所述前缀表达式构建计算层。
在本申请的一种示例性实施例中,通过所述表达式中的数据构建第一数据层和第二数据层,包括:生成所述第一数据层和所述第二数据层;将所述表达式中数据的数据宽度、数据类型、数据值储存在第二数据层中。
在本申请的一种示例性实施例中,还包括:在将数据储存到所述第一数据层和/或所述第二数据层时,剔除所述数据的数据强度。
在本申请的一种示例性实施例中,根据所述前缀表达式生成所述计算层中的运算序列数组和数据数组,包括:逐一读取所述前缀表达式中的字符;根据所述字符确定其对应的元素类型;将所述字符和其对应的元素类型作为元素以储存在所述运算序列数组;创建用于储存中间运算结果的所述数据数组。
在本申请的一种示例性实施例中,将所述字符和其对应的元素类型作为元素以储存在运算序列数组,包括:根据所述字符的储存位置生成指针;将所述指针作为元素的内容;将所述内容和所述元素类型逐一储存在所述运算序列数组。
在本申请的一种示例性实施例中,根据运算序列数组中元素的元素类型和内容调用数据进行计算,包括:逐一读取所述运算序列数组中的元素,根据运算序列数组中元素的元素类型和内容调用数据进行计算;将计算结果储存在所述数据数组的栈顶。
在本申请的一种示例性实施例中,根据运算序列数组中元素的元素类型和内容调用数据进行计算,包括:在所述元素的元素类型为数据类型时,由所述元素的内容中提取指针;根据所述指针由第二层数据中提取对应的数据;将所述数据储存到所述数据数组中以进行计算。
在本申请的一种示例性实施例中,根据运算序列数组中元素的元素类型和内容调用数据进行计算,包括:在所述元素的元素类型为关联运算类型时,由所述元素的内容中确定目标指令;根据所述目标指令进行运算;获取运算数据;将所述数据储存到所述数据数组中以进行计算。
在本申请的一种示例性实施例中,根据运算序列数组中元素的元素类型和内容调用数据进行计算,包括:在所述元素的元素类型为运算符类型时,根据所述运算符类型的特征由所述数据数组中提取至少一个数据;根据所述数据进行计算。
在本申请的一种示例性实施例中,由所述数据数组获取所述表达式的计算结果,包括:在所述运算序列数组中的元素读取完毕之后,根据所述数据数组栈顶中的数据值生成所述表达式的计算结果。
根据本申请的一方面,提出一种数字电路仿真中表达式的计算装置,该装置包括:表达式模块,用于在数字电路仿真过程中获取待计算的表达式;前缀模块,用于生成所述表达式的前缀表达式;构建模块,用于根据所述表达式和所述前缀表达式构建三层数据结构,所述三层数据结构包括计算层;数组模块,用于根据所述前缀表达式生成所述计算层中的运算序列数组和数据数组;计算模块,用于根据运算序列数组中元素的元素类型和内容调用数据进行计算;结果模块,用于由所述数据数组获取所述表达式的计算结果。
根据本申请的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
根据本申请的一方面,提出一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中的方法。
根据本申请的数字电路仿真中表达式的计算方法及装置,通过在数字电路仿真过程中获取待计算的表达式;生成所述表达式的前缀表达式;根据所述表达式和所述前缀表达式构建三层数据结构,所述三层数据结构包括计算层;根据所述前缀表达式生成所述计算层中的运算序列数组和数据数组;根据运算序列数组中元素的元素类型和内容调用数据进行计算;由所述数据数组获取所述表达式的计算结果的方式,能够在数字电路仿真过程中,提高长表达式的运算效率,减少仿真的内存开销,减少信号存取次数,加快仿真速度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
通过参照附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种数字电路仿真中表达式的计算方法的流程图。
图2是根据一示例性实施例示出的一种数字电路仿真中表达式的计算方法的示意图。
图3是根据一示例性实施例示出的一种数字电路仿真中表达式的计算方法的示意图。
图4是根据另一示例性实施例示出的一种数字电路仿真中表达式的计算方法的流程图。
图5是根据一示例性实施例示出的一种数字电路仿真中表达式的计算方法的示意图。
图6是根据一示例性实施例示出的一种数字电路仿真中表达式的计算方法的示意图。
图7是根据一示例性实施例示出的一种数字电路仿真中表达式的计算装置的框图。
图8是根据一示例性实施例示出的一种电子设备的框图。
图9是根据一示例性实施例示出的一种计算机可读介质的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本申请概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的,因此不能用于限制本申请的保护范围。
本申请涉及的技术缩略语解释如下:
表达式:由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。约束变量在表达式中已被指定数值,而自由变量则可以在表达式之外另行指定数值。
运算单元:组成表达式的运算符对应的一个完整的运算器,如与门,加法器等。
信号强度:Verilog信号具有不同强度,这些强度在多驱动时将发挥作用,参与决定信号的最终结果。
前缀表达式:也称波兰式,前缀表达式的优点是可以方便地用计算机算法来处理和计算,因为它没有括号和运算符的优先级问题需要解决。此外,它也可以用于构建解析树,多用于各类编程语言的编译器中。
逻辑网表(Logic Netlist):是数字电路设计中的一种数据结构,用于表示电路中的逻辑门和连线之间的关系。它是一个文本或二进制文件,其中包含了设计的各个部分之间的连接方式,例如输入、输出、寄存器、逻辑门等。
Verilog HDL:是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。Verilog HDL和VHDL是世界上最流行的两种硬件描述语言。
比特(BIT,Binary digit),计算机专业术语,是信息量单位,是由英文BIT音译而来。同时也是二进制数字中的位,信息量的度量单位,为信息量的最小单位。
本案申请人经过研究之后发现,常见的开源Verilog语言仿真器和商业EDA工具在已经公布的资料中,在处理assign a=b&c|d这种语句时,会把它解析成一个逻辑网表(Logic Netlist)。举例来说,商业EDA工具ZOIX通常会将这个表达式转换成适合硬件实现的逻辑电路。具体来说,它会生成逻辑门电路,用于实现表达式的功能。在这种情况下,ZOIX会生成一个与门电路和一个或门电路,用于实现b&c和d的逻辑运算,然后将它们的结果输入到一个或门电路中,以得出最终的结果,并将其分配给a。这种电路实现可以实现表达式的功能,同时最小化芯片的面积和功耗
需要指出的是,assign语句并不会在Verilog设计中创建任何硬件(除了常量驱动器/块)。它只是一种描述设计的语言,可以利用仿真器对其进行模拟和验证。在实际设计中,这种逻辑会被转化成布局和线路板,然后被实现为硬件。
在现有技术中,当表达式更长时,如assign a=b1+b2+b3+b4…,Verilog语言使用者们可能并不关心每一个加法器的运算结果,这些结果对于单个加法器来说是最终结果,但对于整个表达式只是中间结果。事实上编程人员也看不到,他们更专注于仿真器是否能准确且快速的给出a的数值。而根据现有做法,多数仿真器更愿意一对一的创建运算单元。
按照运算符一对一的创建运算单元的开销不小,且一个运算单元运算结束后,切换到下一个运算电路的开销也不小。面对大型芯片时,将带来很大的内存开销,造成内存抖动,降低仿真速度。
Verilog内的类型为logic的每一位信号均具有强度信息,而信号经过运算器后将设置为默认强度,且强度信息不参与运算。一对一的创建运算单元将会带来额外的数据存取开销,即为:上一个运算单元将运算结果打上强度信息输出,下一个运算单元需要将信号的强度信息抹掉再进行运算。
为了克服现有技术中的技术瓶颈,本申请提出了新的一种数字电路仿真中表达式的计算方法,本申请通过提高数字电路仿真中长表达式的运算效率,减少仿真的内存开销,减少信号存取次数,使得一个长表达式的内存空间更加紧凑,加快仿真速度。下面借助具体的实施例,对本申请的内容进行详细描述。
图1是根据一示例性实施例示出的一种数字电路仿真中表达式的计算方法的流程图。数字电路仿真中表达式的计算方法10至少包括步骤S102至S112。
如图1所示,在S102中,在数字电路仿真过程中获取待计算的表达式。本申请中的方式可应用在现有的仿真软件中,在数字电路仿真的过程中,可在执行前续的仿真设置等环节之后,在计算表达式的步骤中引入本申请中的方法。
在S104中,生成所述表达式的前缀表达式。本步骤可通过现有技术中,编译原理中的相关算法实现,在此不再赘述。
在S106中,根据所述表达式和所述前缀表达式构建三层数据结构,所述三层数据结构中包括计算层。
在一个实施例中,可通过所述表达式中的数据构建第一数据层和第二数据层;通过所述前缀表达式构建计算层。更具体的,可生成所述第一数据层和所述第二数据层;将所述表达式中数据的数据宽度、数据类型、数据值储存在第二数据层中。
在一个具体的实施例中,待计算的表达式为:
top=(t11&t12)^(t21|t 22)。
在现有技术中,数常见的开源Verilog语言仿真器与商业EDA仿真工具在处理这种表达式时,会把它解析成一个逻辑网表(Logic Netlist),其中会包含一些基本的运算器件,如加法器,与或门等运算单元,按照现有技术中的表达式处理方式,将产生一个如图2所示的数据结构。
如图2所示,在现有技术中,会为此待计算的表达式创建三个完整的运算单元以及他们之间的连接关系,并且每一个门电路均接受包含强度的信息,输出包含强度的信息。
采用本申请的中的方法,上文中的表达式会被创建为一个具有三层结构的数据结构。更具体的,按照本申请的创建方式,生成的数据结构如图3所示。其中,图3中最顶层top在本申请中称之为第一数据层,第一数据层用于储存输出数据,图3中第二层在本申请中称之为计算层,计算层用于进行实际计算处理,图3中的最底层在本申请中称之为第二数据层,第二数据层用于储存输入数据。
在本申请中,电路仿真计算中,所有的表达式都可以简化为以上的三层结构。第一数据层和第二数据层用于储存数据层,第一数据层和第二数据层的设置可以和仿真器内其他数据存储结构相同,以便兼容现有的电路仿真中的数据储存方式。
第一数据层和第二数据层可用于存储数据宽度、数据类型、数据值。其中,如果数据类型是integer或者logic,根据IEEE标准其每一位将具有四种状态:0、1、x、z。
在本申请中的将表达式转换为三层数据结构的方式,在实际的数字电路仿真过程中,虽然不会减少仿真计算中连线和信号的个数,但是将大大减少运算器件的占用空间,减少数据的存取次数,使得内存更加紧凑,提升其运算速度。
在一个实施例中,还包括:在将数据储存到所述第一数据层和/或所述第二数据层时,剔除所述数据的数据强度。值得一提的是,不同于c或者c++语言,数字电路仿真Verilog语言内的数据每一位都可能具有一个额外的特性:强度。但是根据标准,运算器输出的强度固定为strong,这意味着在表达式的运算内,强度无需参与运算。在本申请的数据储存过程中,会将有强度数据转换为无强度数据储存,这种处理将会减少存储中间变量所占空间,并加快运行速度。
在S108中,根据所述前缀表达式生成所述计算层中的运算序列数组和数据数组。
在一个实施例中,可例如,逐一读取所述前缀表达式中的字符;根据所述字符确定其对应的元素类型;将所述字符和其对应的元素类型作为元素以储存在所述运算序列数组;创建用于储存中间运算结果的所述数据数组。
更具体的,还可根据所述字符的储存位置生成指针;将所述指针作为元素的内容;将所述内容和所述元素类型逐一储存在所述运算序列数组。
更具体的,计算层中的数据可由两个数组组成,一个是运算序列数组,用于储存运算相关的符号或者命令;另一个是数据数组,用于储存中间运算结果。
在S110中,根据运算序列数组中元素的元素类型和内容调用数据进行计算。可例如,逐一读取所述运算序列数组中的元素,根据运算序列数组中元素的元素类型和内容调用数据进行计算;将计算结果储存在所述数据数组的栈顶。
其中,元素类型可包括数据类型、关联运算类型、运算符类型,根据不同的运算类型,选择不同的方式进行计算。其中,运算符类型表名该元素是运算符,数据类表名该元素是一个具体的数据,关联运算类型表名该元素是一个需要通过其他运算的才能够得到的具体数据。
如上文的示例所述,前缀表达式为:
top=^&t11 t12|t21 t22。
在本申请中,运算序列中^,&,t11,t12,|,t21,t22会被分别储存为运算序列中的元素,符号被储存为运算符类型,t11,t12,t21,t22根据其对应的数据的具体内容会被储存为的数据类型或关联运算类型。
在计算层中,可通过游标在运算序列数组中按序移动,以便按序逐一读取元素进行计算,后续将根据当前游标指向的数组元素的元素类型,进行不同操作。游标将会逐一读取以保证运算顺序。
在本申请中引入的前缀表达式的计算顺序可以保证进行本申请的数据计算之后,运算结果与现有技术中的运算结果等价,在常见c语言编译器中,这种等价性得到了广泛的验证。
更进一步的,“根据运算序列数组中元素的元素类型和内容调用数据进行计算”的具体内容将在图4对应的实施例中进行详细描述。
在S112中,由所述数据数组获取所述表达式的计算结果。在所述运算序列数组中的元素读取完毕之后,可例如,根据所述数据数组栈顶中的数据值生成所述表达式的计算结果。
根据本申请的数字电路仿真中表达式的计算方法,通过在数字电路仿真过程中获取待计算的表达式;生成所述表达式的前缀表达式;根据所述表达式和所述前缀表达式构建三层数据结构,所述三层数据结构包括计算层;根据所述前缀表达式生成所述计算层中的运算序列数组和数据数组;根据运算序列数组中元素的元素类型和内容调用数据进行计算;由所述数据数组获取所述表达式的计算结果的方式,能够在数字电路仿真过程中,提高长表达式的运算效率,减少仿真的内存开销,减少信号存取次数,加快仿真速度。
应清楚地理解,本申请描述了如何形成和使用特定示例,但本申请的原理不限于这些示例的任何细节。相反,基于本申请公开的内容的教导,这些原理能够应用于许多其它实施例。
图4是根据另一示例性实施例示出的一种数字电路仿真中表达式的计算方法的流程图。图4所示的流程40是对图1所示的流程中S110“根据运算序列数组中元素的元素类型和内容调用数据进行计算”的详细描述。
如图4所示,在S402中,逐一读取所述运算序列数组中的元素。可通过游标或者其他的方式逐一读取运算序列数组中的元素,本申请不以此为限。
在S404中,在所述元素的元素类型为数据类型时,由所述元素的内容中提取指针;根据所述指针由第二层数据中提取对应的数据;将所述数据储存到所述数据数组中以进行计算。
更具体的,在数组元素类型为数据类型时,可通过指针由第二层数据中的该元素对应的目标位置处提取无强度的纯净数据,压入数据数组中,该步骤可用于处理eg和wire为Verilog内的基本数据类型,类似c的int和char。
在S406中,在所述元素的元素类型为关联运算类型时,由所述元素的内容中确定目标指令;根据所述目标指令进行运算;获取运算数据;将所述数据储存到所述数据数组中以进行计算。
更具体的,在数组元素类型为关联运算类型,即表明,该元素是一个“需要经过其他运算的才能够得到的数据”,则可根据元素内容确定待执行的相关运算,然后执行相关运算,再提取相关运算的运算结果,将运算结果储存到数据数组中,压入数据区,以便后续使用。
值得一提的是,相关运算的运算结果也可储存在第二层的该元素对应的目标位置中,以便后续计算的其他环节中直接调用。
在S408中,在所述元素的元素类型为运算符类型时,根据所述运算符类型的特征由所述数据数组中提取至少一个数据;根据所述至少一个数据进行计算。
更具体的,在数组元素为运算符类型时,则可根据运算符种类,从数据数组中提取出不同数量的数据,进行运算,运算的结果可保存在数据数组的“栈顶”。
更具体的,可根据操作符的类型提取出不同数量的数据。
如运算符为:"!",则可提取出一个数据;
如运算符为:“+”,则可提取出两个数据A,B,按照运算符相关的运算顺序,将这两个数据相加:A+B;
如运算符为:如“-”,则可提取出两个数据A,B,按照运算符相关的运算顺序,将这两个数据相加:A-B。
下文是一个具体的实施例,描述计算一个表达式的过程,
如表达式为:
result=data1+data2-data3
在实际的操作中,可首先访问符号数组,读取到+,加法需要两个运算符,则可尝试从数据数组获取数据,若成功,则将其存入数据区;若获取的数据是一个不可优化的元素,比如data2是$time()(Verilog内获取当前时间),则运行获取时间的相关函数计算时间,将计算后的结果存进数据区。之后,加法的两个加数提取完毕,进行加法运算,将运算结果存入数据数组中。
在S410中,将计算结果储存在所述数据数组的栈顶。将运算结果储存在栈顶,以便后续使用。
本申请中引入的这种三层数据结构,有助于数据电路仿真中的仿真器更好的组织内存,使得其空间与时间局部性更好,而且,不用完整的创建三个运算部件,仅仅需要创建一个特殊的“表达式运算部件”,就可以支持全部的表达式计算操作。
本申请中的表达式的计算方式,在面对越长的表达式的时候,会体现出更多的有点,越长的表达式,本申请中的方案所带来的内存和计算速度的收益就会越可观。
更具体的,当数字电路仿真运行在M3级别的芯片中时,通过本申请中的优化方式对某仿真中的数据和表达式进行优化之后,在运算速度上有10-20%的提升。
下文是一个完整的实施例,用于描述通过本申请的表达式计算方法,在实际的操作过程中和现有技术的区别。
利用现有技术中的方案,在表达式具有N个运算符时,需要实例化N个类,具体如下所示:
利用现有技术中的方式,在实例化N个类之后,通过下文和图5所示的计算流程,在表达式的计算过程中调用N个类中的数据进行表达式计算。
而通过本申请的方式处理的表达式,无论多少个运算符,仅需实例化一个对象,如下所示:
利用现有技术中的方式,仅需实例化1个类之后,即可通过如下文和图6所示的计算流程,在表达式的计算过程中调用数据进行表达式计算。
本申请的数字电路仿真中表达式的计算方法,通过前缀表达式的方式对长表达式进行加速将显著减少运算时仿真器内对无用中间变量的仿真,将减少存储空间,同时减少数据读写次数,可以达到更高的效率;同时,这种结构将带来更加紧凑的内存,在面对大型芯片时,将减少内存抖动,带来更高的效率。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本申请提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本申请示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图7是根据一示例性实施例示出的一种数字电路仿真中表达式的计算装置的框图。如图7所示,数字电路仿真中表达式的计算装置70包括:表达式模块702,前缀模块704,构建模块706,数组模块708,计算模块710,结果模块712。
表达式模块702用于在数字电路仿真过程中获取待计算的表达式;
前缀模块704用于生成所述表达式的前缀表达式;
构建模块706用于根据所述表达式和所述前缀表达式构建三层数据结构,所述三层数据结构包括计算层;构建模块706还用于通过所述表达式中的数据构建第一数据层和第二数据层;通过所述前缀表达式构建计算层。
数组模块708用于根据所述前缀表达式生成所述计算层中的运算序列数组和数据数组;数组模块708还用于逐一读取所述前缀表达式中的字符;根据所述字符确定其对应的元素类型;将所述字符和其对应的元素类型作为元素以储存在所述运算序列数组;创建用于储存中间运算结果的所述数据数组。
计算模块710用于根据运算序列数组中元素的元素类型和内容调用数据进行计算;计算模块710还用于逐一读取所述运算序列数组中的元素,根据运算序列数组中元素的元素类型和内容调用数据进行计算;将计算结果储存在所述数据数组的栈顶。
结果模块712用于由所述数据数组获取所述表达式的计算结果。结果模块712还用于在所述运算序列数组中的元素读取完毕之后,根据所述数据数组栈顶中的数据值生成所述表达式的计算结果。
根据本申请的数字电路仿真中表达式的计算装置,通过在数字电路仿真过程中获取待计算的表达式;生成所述表达式的前缀表达式;根据所述表达式和所述前缀表达式构建三层数据结构,所述三层数据结构包括计算层;根据所述前缀表达式生成所述计算层中的运算序列数组和数据数组;根据运算序列数组中元素的元素类型和内容调用数据进行计算;由所述数据数组获取所述表达式的计算结果的方式,能够在数字电路仿真过程中,提高长表达式的运算效率,减少仿真的内存开销,减少信号存取次数,加快仿真速度。
图8是根据一示例性实施例示出的一种电子设备的框图。
下面参照图8来描述根据本申请的这种实施方式的电子设备800。图8显示的电子设备800仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:至少一个处理单元810、至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830、显示单元840等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元810执行本说明书中描述的根据本申请各种示例性实施方式的步骤。例如,所述处理单元810可以执行如图1,图4中所示的步骤。
所述存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(ROM)8203。
所述存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备800也可以与一个或多个外部设备800’(例如键盘、指向设备、蓝牙设备等)通信,使得用户能与该电子设备800交互的设备通信,和/或该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口850进行。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器860可以通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,如图9所示,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本申请实施方式的上述方法。
所述软件产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:在数字电路仿真过程中获取待计算的表达式;生成所述表达式的前缀表达式;根据所述表达式和所述前缀表达式构建三层数据结构,所述三层数据结构包括计算层;根据所述前缀表达式生成所述计算层中的运算序列数组和数据数组;根据运算序列数组中元素的元素类型和内容调用数据进行计算;由所述数据数组获取所述表达式的计算结果。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本申请实施例的方法。
以上具体地示出和描述了本申请的示例性实施例。应可理解的是,本申请不限于这里描述的详细结构、设置方式或实现方法;相反,本申请意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
Claims (12)
1.一种数字电路仿真中表达式的计算方法,其特征在于,包括:
在数字电路仿真过程中获取待计算的表达式;
生成所述表达式的前缀表达式;
根据所述表达式和所述前缀表达式构建三层数据结构,所述三层数据结构中包括计算层;
根据所述前缀表达式生成所述计算层中的运算序列数组和数据数组;
根据运算序列数组中元素的元素类型和内容调用数据进行计算;
由所述数据数组获取所述表达式的计算结果。
2.如权利要求1所述的方法,其特征在于,根据所述表达式和所述前缀表达式构建三层数据结构,包括:
通过所述表达式中的数据构建第一数据层和第二数据层;
通过所述前缀表达式构建计算层。
3.如权利要求2所述的方法,其特征在于,通过所述表达式中的数据构建第一数据层和第二数据层,包括:
生成所述第一数据层和所述第二数据层;
将所述表达式中数据的数据宽度、数据类型、数据值储存在第二数据层中。
4.如权利要求3所述的方法,其特征在于,还包括:
在将数据储存到所述第一数据层和/或所述第二数据层时,剔除所述数据的数据强度。
5.如权利要求1所述的方法,其特征在于,根据所述前缀表达式生成所述计算层中的运算序列数组和数据数组,包括:
逐一读取所述前缀表达式中的字符;
根据所述字符确定其对应的元素类型;
将所述字符和其对应的元素类型作为元素以储存在所述运算序列数组;
创建用于储存中间运算结果的所述数据数组。
6.如权利要求5所述的方法,其特征在于,将所述字符和其对应的元素类型作为元素以储存在运算序列数组,包括:
根据所述字符的储存位置生成指针;
将所述指针作为元素的内容;
将所述内容和所述元素类型逐一储存在所述运算序列数组。
7.如权利要求1所述的方法,其特征在于,根据运算序列数组中元素的元素类型和内容调用数据进行计算,包括:
逐一读取所述运算序列数组中的元素,根据运算序列数组中元素的元素类型和内容调用数据进行计算;
将计算结果储存在所述数据数组的栈顶。
8.如权利要求7所述的方法,其特征在于,根据运算序列数组中元素的元素类型和内容调用数据进行计算,包括:
在所述元素的元素类型为数据类型时,由所述元素的内容中提取指针;
根据所述指针由第二层数据中提取对应的数据;
将所述数据储存到所述数据数组中以进行计算。
9.如权利要求7所述的方法,其特征在于,根据运算序列数组中元素的元素类型和内容调用数据进行计算,包括:
在所述元素的元素类型为关联运算类型时,由所述元素的内容中确定目标指令;
根据所述目标指令进行运算;
获取运算数据;
将所述数据储存到所述数据数组中以进行计算。
10.如权利要求7所述的方法,其特征在于,根据运算序列数组中元素的元素类型和内容调用数据进行计算,包括:
在所述元素的元素类型为运算符类型时,根据所述运算符类型的特征由所述数据数组中提取至少一个数据;
根据所述至少一个数据进行计算。
11.如权利要求1所述的方法,其特征在于,由所述数据数组获取所述表达式的计算结果,包括:
在所述运算序列数组中的元素读取完毕之后,根据所述数据数组栈顶中的数据值生成所述表达式的计算结果。
12.一种数字电路仿真中表达式的计算装置,其特征在于,包括:
表达式模块,用于在数字电路仿真过程中获取待计算的表达式;
前缀模块,用于生成所述表达式的前缀表达式;
构建模块,用于根据所述表达式和所述前缀表达式构建三层数据结构,所述三层数据结构包括计算层;
数组模块,用于根据所述前缀表达式生成所述计算层中的运算序列数组和数据数组;
计算模块,用于根据运算序列数组中元素的元素类型和内容调用数据进行计算;
结果模块,用于由所述数据数组获取所述表达式的计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410385321.1A CN118211535A (zh) | 2024-04-01 | 2024-04-01 | 数字电路仿真中表达式的计算方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410385321.1A CN118211535A (zh) | 2024-04-01 | 2024-04-01 | 数字电路仿真中表达式的计算方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118211535A true CN118211535A (zh) | 2024-06-18 |
Family
ID=91447316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410385321.1A Pending CN118211535A (zh) | 2024-04-01 | 2024-04-01 | 数字电路仿真中表达式的计算方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118211535A (zh) |
-
2024
- 2024-04-01 CN CN202410385321.1A patent/CN118211535A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ben-Hur et al. | SIMPLER MAGIC: Synthesis and mapping of in-memory logic executed in a single row to improve throughput | |
Vahid et al. | Embedded system design: a unified hardware/software introduction | |
US5910898A (en) | Circuit design methods and tools | |
Kumar et al. | A framework for hardware/software codesign | |
Wain et al. | An overview of FPGAs and FPGA programming-Initial experiences at Daresbury | |
Valencia-Cabrera et al. | Simulation challenges in membrane computing | |
Willsey et al. | Iterative search for reconfigurable accelerator blocks with a compiler in the loop | |
Britton | MIPS assembly language programming | |
Yıldız et al. | CPU design simplified | |
Chaudhuri | Computer organization and design | |
Oztekin et al. | BZK. SAU. FPGA10. 1: A modular approach to FPGA‐based micro computer architecture design for educational purpose | |
Mencer et al. | Object-oriented domain specific compilers for programming FPGAs | |
US20140359545A1 (en) | Equivalence checking using structural analysis on data flow graphs | |
CN115204076B (zh) | 集成电路的逻辑优化方法、装置、电子设备及可读介质 | |
CN118211535A (zh) | 数字电路仿真中表达式的计算方法及装置 | |
Reichenbach et al. | RISC-V3: A RISC-V compatible CPU with a data path based on redundant number systems | |
Guo et al. | An integrated system for developing regular array designs | |
Plagge et al. | Athena: Enabling codesign for next-generation ai/ml architectures | |
Frangieh | A design assembly technique for FPGA back-end acceleration | |
CN117540668A (zh) | 数字电路的仿真方法及装置 | |
Gordon | The formal definition of a synchronous hardware-description language in higher order logic | |
Deng et al. | A new sign detection design for the residue number system based on quantum-dot cellular automata | |
Skliarova et al. | Reconfigurable devices and design tools | |
Mami et al. | XSG-based HLS flow for optimized signal processing designs for FPGAs | |
CN115204077B (zh) | 集成电路的节点优化方法、装置、电子设备及可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |