CN115470737B - 生成数据流图的方法、电子设备及存储介质 - Google Patents
生成数据流图的方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115470737B CN115470737B CN202210934579.3A CN202210934579A CN115470737B CN 115470737 B CN115470737 B CN 115470737B CN 202210934579 A CN202210934579 A CN 202210934579A CN 115470737 B CN115470737 B CN 115470737B
- Authority
- CN
- China
- Prior art keywords
- basic block
- flow graph
- control flow
- basic
- dominance
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/323—Translation or migration, e.g. logic to logic, hardware description language [HDL] translation or netlist translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供一种生成数据流图的方法、电子设备及存储介质。该方法包括:处理逻辑系统设计以获取所述逻辑系统设计的控制流图,所述控制流图包括多个基本块,每个所述基本块包括所述逻辑系统设计中的指令的一部分,其中所述指令包括执行条件;基于所述控制流图确定所述执行条件相同的第一基本块和第二基本块;生成与所述第一基本块和所述第二基本块对应的第一顶点,所述第一顶点存储所述执行条件;以及基于所述控制流图的所述多个基本块生成数据流图,其中所述数据流图包括所述第一顶点。
Description
技术领域
本公开实施例涉及逻辑系统设计领域,尤其涉及一种生成数据流图的方法、电子设备及存储介质。
背景技术
在逻辑系统设计领域,C-to-RTL是指将算法描述层的C程序直接转换为晶体管层(Register transfer level,RTL)的硬件描述语言(Hardware Description Language,HDL),属于硬件设计自动化中高层次综合的一种。
在C-to-RTL的过程中,用户可以使用控制流图(Control Flow Graph,CFG)来表示与一段程序代码对应的一个过程内所有基本块(Basic Block)执行的流向。控制流图是用在编译器中的一个抽象数据结构,由编译器在内部维护,代表了一个程序执行过程中会遍历到的所有路径,通常是顺序执行的。
但是在进行分析时,用户关注的往往是数据在系统中流动和处理的过程,此时,数据流图(Data Flow Graph,DFG)是比控制流图更利于分析的一种结构模型。因此,在实际的综合分析过程中,往往需要将控制流图转换为数据流图。
发明内容
有鉴于此,本公开提出了一种生成数据流图的方法、电子设备及存储介质。
本公开第一方面,提供了一种生成数据流图的方法。所述方法包括:处理逻辑系统设计以获取所述逻辑系统设计的控制流图,所述控制流图包括多个基本块,每个所述基本块包括所述逻辑系统设计中的指令的一部分,其中所述指令包括执行条件;基于所述控制流图确定所述执行条件相同的第一基本块和第二基本块;生成与所述第一基本块和所述第二基本块对应的第一顶点,所述第一顶点存储所述执行条件;以及基于所述控制流图的所述多个基本块生成数据流图,其中所述数据流图包括所述第一顶点。
本公开第二方面,提供了一种电子设备,包括:存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以进行如第一方面所述的方法。
本公开第三方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子装置的一组指令,该组指令用于使所述电子装置执行第一方面所述的方法。
本公开实施例通过引入反向支配树,从正向和反向支配树中确定执行条件相同的基本块,验证系统生成与这些基本块对应的一个储存执行条件的顶点,进而减少数据流图中顶点的数量,有效降低了后续形式验证或模拟的计算量,提高了验证效率。
附图说明
为了更清楚地说明本公开或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图
图1示出了根据本公开实施例的主机的示意图。
图2示出了根据本公开实施例的验证系统的示意图。
图3A示出了根据本公开实施例的C语言的示例性代码的示意图。
图3B示出了根据本公开实施例的控制流图的示意图。
图3C示出了根据本公开实施例的原始数据流图的示意图。
图4A示出了根据本公开实施例的正向支配树的示意图。
图4B示出了根据本公开实施例的反向支配树的示意图。
图4C示出了根据本公开实施例生成的数据流图的示意图。
图5为根据本公开实施例的一种生成数据流图的方法的流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
在逻辑系统设计领域,C-to-RTL是指将算法描述层的C程序直接转换为晶体管层(RTL)的硬件描述语言(HDL),例如可以是VHDL、Verilog或SystemVerilog。
图1示出了根据本公开实施例的主机100的示意图。主机100可以是运行仿真系统的电子设备。如图1所示,主机100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中,处理器102、存储器104、网络接口106和外围接口108通过总线110实现彼此之间在主机内部的通信连接。
处理器102可以是中央处理器(Central Processing Unit,CPU)、图像处理器、神经网络处理器(NPU)、微控制器(MCU)、可编程逻辑器件、数字信号处理器(DSP)、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路。处理器102可以用于执行与本公开描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1所示,处理器102可以包括多个处理器102a、102b和102c。
存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。在一些实施例中,用于仿真测试设计的仿真测试系统可以是存储器104中存储的计算机程序。如图1所示,存储器存储的数据可以包括程序指令(例如,用于实现本公开的仿真方法的程序指令)以及要处理的数据(例如,存储器可以存储在编译过程产生的临时代码)。处理器102也可以访问存储器存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络接口106可以配置为经由网络向主机100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口108可以配置为将主机100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
总线110可以被配置为在主机100的各个组件(例如处理器102、存储器104、网络接口106和外围接口108)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
需要说明的是,尽管上述主机架构仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该主机架构还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述主机架构中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
图2示出了根据本公开实施例的验证系统200的示意图。验证系统200可以是运行在主机100上的计算机程序。
在逻辑系统设计(例如,芯片设计)领域,通常可以利用验证系统对一个设计进行验证(例如,形式验证)。图2示出的示例性验证系统200可以包括编译器210和形式验证工具220。编译器210可以接收源代码204(例如,C语言等),并编译为RTL级别的语言(例如,VHDL、Verilog、SystemVerilog等硬件描述语言),再进一步编译为执行代码206(例如,汇编代码、机器码等)。形式验证工具220例如可以是芯华章科技股份有限公司出品的GalaxFV形式验证工具。例如,验证系统200可以将验证结果208经由图1的外围接口108输出到输出设备上(例如,显示在显示器上)。
图3A示出了根据本公开实施例的C语言的示例性代码300的示意图。
在一些实施例中,源代码204例如可以是以C语言编写的代码300。可以理解的是,图3A所示的示例性代码300可以是整个C语言代码中的一部分。如图3A所示,代码300中可以包括7个基本块(basic block),例如基本块301~307。
图3B示出了根据本公开实施例的控制流图310的示意图。
在一些实施例中,代码300可以经由编译器210编译得到控制流图310。控制流图310可以表示与代码300对应的所有基本块执行的流向。控制流图310可以包括7个基本块,例如基本块311~317。其中,控制流图310中的基本块311~317分别与代码300中的基本块301~307对应。基本块311~317中可以包括逻辑系统设计中的指令的一部分。例如,图3B所示的基本块311中可以包括执行指令“%tobool=icmp ne i32%a,0”和出口指令“br i1%tobool,label%cond.ture,label%con.false”。基本块311还可以包括执行条件3111和3112。其中,执行条件3111和3112通常可以是布尔表达式。
如上所述,在进行分析时,数据流图是比控制流图更利于分析的一种结构模型,因此,往往需要将控制流图转换为数据流图。通常,控制流图转换为数据流图的过程中,需要为每个基本块添加对应的顶点(Out Vertex)来连接不同的基本块。
图3C示出了根据本公开实施例的原始数据流图320的示意图。
控制流图310可以转换为原始数据流图320。原始数据流图320中可以包括23个顶点。其中,顶点的类型可以包括NORMAL、EDGEOUT、LOCAL、BBOUT。例如,NORMAL类型的顶点可以是指令顶点,与控制流图中基本块的执行指令对应;EDGEOUT类型的顶点可以储存分支指令的执行条件(例如,if/switch等);LOCAL类型的顶点可以是为适配数据流图的特性而增加的临时顶点;BBOUT类型的顶点可以储存基本块的执行条件。顶点与顶点之间的连线代表数据的流向。
在转换的过程中,由于原始数据流图320表示的是数据的流向,所以一个基本块可以对应不止一个顶点。例如,基本块311可以对应原始数据流图320中的顶点3211、顶点3212、顶点3213、以及顶点322,其中顶点3211可以配置为输入的数据,顶点3212可以配置为常量,顶点3213可以配置为数据的处理,顶点322可以配置为储存基本块311的执行条件。控制流图310转换为原始数据流图320的过程中会增加额外的顶点,而顶点的数量会直接影响后续形式证明或者模拟时的计算量,顶点越多,计算量越大。因此,需要在转换的过程中尽量减少顶点的数量,以确保后续计算的形式证明或模拟的流畅运行。
有鉴于此,本公开实施例提出一种生成数据流图的方法。
通常,BBOUT类型的顶点是通过其直接前驱的EDGEOUT类型的顶点和基本块自身特性来生成的,可以配置为储存执行条件。那么,如果两个基本块的执行条件相同,则与这两个基本块对应的BBOUT类型的顶点也可以是同一个。通过复用顶点的方式可以减少数据流图中顶点的数量。
在一些实施例中,验证工具200可以通过支配树的方法来找到执行条件相同的基本块。支配树表示,如果进入一个基本块B的路径必然会经过其先导的基本块A,则该先导的基本块A支配基本块B。如果加之基本块A是紧邻基本块B的基本块,则该基本块A直接支配该基本块B。验证工具200可以基于控制流图310生成正向支配树。
图4A示出了根据本公开实施例的正向支配树400的示意图。
正向支配树400可以包括控制流图310中的7个基本块。如图4A所示,在正向支配树400中,基本块311直接支配基本块312、314和313,并间接支配基本块315、317和316;基本块314直接支配基本块315、317和316。
通常,控制流图是顺序执行的,为了找到执行条件相同的基本块,本公开还引入了反向支配树。如果两个基本块在正向支配树和反向支配树中均是支配关系,即,这两个基本块是互相支配关系,则这两个基本块的执行条件是相同的。
图4B示出了根据本公开实施例的反向支配树410的示意图。
如图4B所示,在反向支配树410中,基本块317直接支配基本块315、314和316,并间接支配基本块312、311和313;基本块314直接支配基本块312、311和313。
因此,从正向支配树400中得到,基本块311直接支配基本块314,基本块311间接支配317,基本块314直接支配基本块317;从反向支配树得到,基本块317直接支配基本块314,基本块317间接支配311,基本块314直接支配基本块311。因此,基本块311和314是互相直接支配的,基本块314和317是互相直接支配的,基本块311和317是互相支配的,则基本块311、314和317的执行条件可以是相同的。例如,这三个基本块的执行条件均为满足控制流图310中的执行条件3111/3112和执行条件3141/3142。
在一些实施例中,验证系统200可以标识执行条件相同的基本块311、314和317。在一些实施例中,验证系统200可以使用键值对列表的方式进行标识。例如,验证系统200可以生成与基本块311“entry”、基本块314“cond.end”和基本块317“cond.end5”对应的键值对列表map={<cond.end,entry>,<cond.end5,cond.end>}。可以理解的是,这里使用键值对列表的方式对基本块进行标识仅仅是举例,验证系统200还可以采用例如高亮、标记特殊符号等方式对基本块进行标识,本公开并不对标识的具体方式进行限定。
图4C示出了根据本公开实施例生成的数据流图420的示意图。
验证系统200可以在数据流图420中生成与基本块311、314和317对应的顶点422。在控制流图310转化为数据流图420的过程中,验证系统200可以检查当前的基本块是否有标识。如果基本块没有标识,则为该没有标识的基本块在数据流图420中创建新的顶点。例如,基本块313没有标识,因而验证系统200可以基于基本块313生成顶点424。如果基本块有标识,则该有标识的基本块与其他有标识的基本块共用同一储存执行条件的顶点。例如,在数据流图420中,基本块311、314和317可以共用同一个顶点422。
在一些实施例中,验证系统200还可以检查当前的基本块是否是第一个有标识的基本块。如果当前的基本块是第一个有标识的基本块(例如,基本块311),验证系统200则可以基于基本块311生成储存执行条件的顶点422。如果当前的基本块不是第一个有标识的基本块(例如,基本块314),验证系统200则可以向前寻找上一个有标识的基本块(例如,基本块311)。此时,验证系统200可以确定基本块314与基本块311共用一个顶点422。
在一些实施例中,验证系统200检查当前的基本块是否有标识的方法可以是检查该基本块是否出现在键值对列表中。
回到图3C,可以看出,在原始数据流图320中,基本块311可以生成顶点322,基本块314可以生成顶点324,基本块317可以生成顶点326,原始数据流图320可以包括23个顶点。采用本实施例提供的方法生成的数据流图420中,基本块311、314和317可以共用同一个顶点422,移除了原始数据流图320中的顶点324和326。原来连接到顶点324和326的线变为从顶点422流出的两条数据流向线(例如,图4C中加粗所示的两条线)。数据流图420中可以包括21个顶点,减少了顶点数量。
可以理解的是,本实施例所示出的代码300只是很简短的一段代码。随着现在逻辑系统设计越来越大,与设计对应的代码量也愈发庞大,对于大量的代码而言,采用本实施例提供的方法生成的数据流图可以有效减少顶点的数量,进而降低后续形式验证或模拟的计算量,提高验证效率。
图5为根据本公开实施例的一种生成数据流图的方法500的流程图。方法500可以由图2所示的验证系统200实施,该验证系统200可以运行在主机100上。参照图5所示,该方法500可以包括如下步骤。
在步骤S502中,验证系统200可以处理逻辑系统设计以获取该逻辑系统设计的控制流图(例如,图3B所示的控制流图310)。该控制流图可以包括多个基本块(例如,图3B所示的基本块311~317),每个基本块可以包括该逻辑系统设计中的指令的一部分(例如,图3B所示的基本块311中的执行指令“%tobool=icmp ne i32%a,0”和出口指令“br i1%tobool,label%cond.ture,label%con.false”等),其中该指令可以包括执行条件(例如,图3B所示的基本块311的执行条件3111和3112)。
在一些实施例中,验证系统200可以获取该逻辑系统设计的源代码(例如,图3A所示的以C语言编写的代码300)。验证系统200可以编译该源代码以获取控制流图(例如,图3B所示的控制流图310)。其中,图3B所示的控制流图310中的基本块311~317与图3A所示的代码300中的基本块301~307对应。
在步骤S504中,验证系统200可以基于该控制流图确定执行条件相同的第一基本块和第二基本块。在一些实施例中,验证系统200基于该控制流图可以生成正向支配树(例如,图4A所示的正向支配树400)和反向支配树(例如,图4B所示的反向支配树410)。验证系统200可以从该正向支配树中确定第一支配关系,该第一支配关系可以包括该第一基本块支配该第二基本块(例如,图4A中所示的基本块311支配基本块314、317,基本块314支配基本块317)。验证系统200可以从该反向支配树中确定第二支配关系,该第二支配关系可以包括该第二基本块支配该第一基本块(例如,图4B中所示的基本块317支配基本块314、311,基本块314支配基本块311)。根据该第一支配关系和该第二支配关系,验证系统200可以确定该第一基本块和该第二基本块(例如,基本块311、314和317)的执行条件相同(例如,执行条件均为满足图3B所示的控制流图310中的执行条件3111/3112和执行条件3141/3142)。
在一些实施例中,验证系统200可以标识该第一基本块和该第二基本块。在一些实施例中,验证系统200可以生成该第一基本块和该第二基本块的键值对列表(例如,map={<cond.end,entry>,<cond.end5,cond.end>})。可以理解的是,键值对列表只是标识基本块的其中一种方式,验证系统200还可以采用例如高亮、标记特殊符号等方式对基本块进行标识。
在步骤S506中,验证系统200可以生成与该第一基本块和该第二基本块对应的第一顶点(例如,图4C所示的顶点422),该第一顶点存储该执行条件。在一些实施例中,验证系统200可以检查该第一基本块(例如,图3B所示的基本块311)和该第二基本块(例如,图3B所示的基本块314)是否有标识。在一些实施例中,响应于该第一基本块和该第二基本块有标识,验证系统200可以检查该第一基本块和该第二基本块是否是第一个有标识的基本块。响应于该第一基本块是第一个有标识的基本块,验证系统200则可以根据该第一基本块生成储存执行条件的第一顶点(例如,图4C所示的顶点422)。响应于该第二基本块不是第一个有标识的基本块,验证系统200则可以寻找上一个有标识的第一基本块(例如,基本块311),并确定该第二基本块与该第一基本块共用该第一顶点。
在步骤S508中,验证系统200可以基于该控制流图的多个基本块(例如,图3B所示的基本块311~317)生成数据流图(例如,图4C所示的数据流图420),其中该数据流图可以包括该第一顶点(例如,图4C所示的顶点422)。在一些实施例中,响应于第三基本块(例如,图3B所示的基本块313)没有标识,验证系统200基于该第三基本块在该数据流图中可以生成第二顶点(例如,图4C所示的顶点424)。
本公开还提供了一种生成数据流图的电子设备。该电子设备可以是图1所示的主机100。验证系统200可以被配置为执行存储在存储器104中的计算机程序以实现与本公开一致的生成数据流图的方法,诸如上述示例性方法(例如,图5所示的方法500)。此处不再赘述。
需要说明的是,本公开的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
本公开还提供了一种非暂态计算机可读存储介质。非暂态计算机可读存储介质存储验证系统200的一组指令。该一组指令在被执行时使得验证系统200实现与本公开一致的生成数据流图的方法,诸如上述示例性方法(例如,图5所示的方法500)。此处不再赘述。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述对本公开的一些实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (8)
1.一种生成数据流图的方法,包括:
处理逻辑系统设计以获取所述逻辑系统设计的控制流图,所述控制流图包括多个基本块,每个所述基本块包括所述逻辑系统设计中的指令的一部分,其中所述指令包括执行条件;
基于所述控制流图确定所述执行条件相同的第一基本块和第二基本块;其中,所述基于所述控制流图确定所述执行条件相同的第一基本块和第二基本块进一步包括:响应于所述第一基本块和所述第二基本块是互相支配关系,确定所述第一基本块和所述第二基本块的所述执行条件是相同的;
生成与所述第一基本块和所述第二基本块对应的第一顶点,所述第一顶点存储所述执行条件;以及
基于所述控制流图的所述多个基本块生成数据流图,其中所述数据流图包括所述第一顶点。
2.根据权利要求1所述的方法,其中,基于所述控制流图确定执行条件相同的第一基本块和第二基本块进一步包括:
基于所述控制流图生成正向支配树和反向支配树;
从所述正向支配树中确定第一支配关系,所述第一支配关系包括所述第一基本块支配所述第二基本块;
从所述反向支配树中确定第二支配关系,所述第二支配关系包括所述第二基本块支配所述第一基本块;以及
根据所述第一支配关系和所述第二支配关系确定所述第一基本块和所述第二基本块的执行条件相同。
3.根据权利要求1或2所述的方法,其中,处理逻辑系统设计以获取所述逻辑系统设计的控制流图进一步包括:
获取所述逻辑系统设计的源代码;以及
编译所述源代码以获取所述控制流图。
4.根据权利要求2所述的方法,进一步包括:
标识所述第一基本块和所述第二基本块。
5.根据权利要求4所述的方法,其中,标识所述第一基本块和所述第二基本块进一步包括:
生成所述第一基本块和所述第二基本块的键值对列表。
6.根据权利要求4或5所述的方法,其中,基于所述控制流图的所述多个基本块生成数据流图,其中所述数据流图包括所述第一顶点进一步包括:
响应于所述控制流图的第三基本块没有标识,基于所述第三基本块在所述数据流图中生成第二顶点。
7.一种生成数据流图的电子设备,包括:
存储器,用于存储一组指令;以及
至少一个处理器,配置为执行所述一组指令以使得所述电子设备执行如权利要求1至6任一项所述的方法。
8.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储验证系统的一组指令,所述一组指令在被执行时使得所述验证系统执行权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210934579.3A CN115470737B (zh) | 2022-08-04 | 2022-08-04 | 生成数据流图的方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210934579.3A CN115470737B (zh) | 2022-08-04 | 2022-08-04 | 生成数据流图的方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115470737A CN115470737A (zh) | 2022-12-13 |
CN115470737B true CN115470737B (zh) | 2023-07-25 |
Family
ID=84366772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210934579.3A Active CN115470737B (zh) | 2022-08-04 | 2022-08-04 | 生成数据流图的方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115470737B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7299458B2 (en) * | 2002-10-31 | 2007-11-20 | Src Computers, Inc. | System and method for converting control flow graph representations to control-dataflow graph representations |
US8281297B2 (en) * | 2003-02-05 | 2012-10-02 | Arizona Board Of Regents | Reconfigurable processing |
CN103577242B (zh) * | 2013-11-14 | 2016-11-02 | 中国科学院声学研究所 | 针对已调度汇编代码的控制流图重构方法 |
CN113885877A (zh) * | 2021-10-11 | 2022-01-04 | 北京超弦存储器研究院 | 编译的方法、装置、设备及介质 |
-
2022
- 2022-08-04 CN CN202210934579.3A patent/CN115470737B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115470737A (zh) | 2022-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112632880B (zh) | 用于逻辑系统设计的编译方法、电子设备及存储介质 | |
CN112287569B (zh) | 用于仿真逻辑系统设计的方法、电子设备及存储介质 | |
CN112597064B (zh) | 对程序进行仿真的方法、电子设备及存储介质 | |
CN115422866A (zh) | 用于在仿真器上仿真逻辑系统设计的方法及相关设备 | |
CN112434478B (zh) | 仿真逻辑系统设计的虚拟接口的方法及相关设备 | |
US9405652B2 (en) | Regular expression support in instrumentation languages using kernel-mode executable code | |
US10990073B2 (en) | Program editing device, program editing method, and computer readable medium | |
CN115293076B (zh) | 生成电路的方法、电子设备及存储介质 | |
US9069892B2 (en) | Reducing false-positive errors in a software change-impact analysis | |
CN115470737B (zh) | 生成数据流图的方法、电子设备及存储介质 | |
CN115688643A (zh) | 仿真逻辑系统设计的方法、设备及存储介质 | |
CN114548028B (zh) | 进行低功耗设计的方法、电子设备及存储介质 | |
CN113760751B (zh) | 生成测试用例的方法、电子设备及存储介质 | |
CN114328062B (zh) | 校验缓存一致性的方法、装置和存储介质 | |
CN112232003B (zh) | 对设计进行仿真的方法、电子设备及存储介质 | |
US8645758B2 (en) | Determining page faulting behavior of a memory operation | |
US20170115973A1 (en) | Operating method of semiconductor device and semiconductor system | |
US9477448B2 (en) | Screen-oriented computing program refactoring | |
CN112580297B (zh) | 一种编解码数据的方法、电子设备及存储介质 | |
CN117075912B (zh) | 用于程序语言转换的方法、编译方法及相关设备 | |
CN117172168B (zh) | 在仿真中实现回调的方法、电子设备和存储介质 | |
JP5262678B2 (ja) | 動作合成システム、動作合成方法、及び動作合成用プログラム | |
US10908934B2 (en) | Simulation program, method, and device | |
CN115828805A (zh) | 分割逻辑系统设计的方法、设备及存储介质 | |
CN116911219A (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 |