CN115658242B - 逻辑系统设计的任务处理方法及电子设备 - Google Patents
逻辑系统设计的任务处理方法及电子设备 Download PDFInfo
- Publication number
- CN115658242B CN115658242B CN202211292031.XA CN202211292031A CN115658242B CN 115658242 B CN115658242 B CN 115658242B CN 202211292031 A CN202211292031 A CN 202211292031A CN 115658242 B CN115658242 B CN 115658242B
- Authority
- CN
- China
- Prior art keywords
- task
- blocking
- tasks
- memory
- statement
- 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
- 238000013461 design Methods 0.000 title claims abstract description 31
- 238000003672 processing method Methods 0.000 title abstract description 13
- 230000000903 blocking effect Effects 0.000 claims abstract description 155
- 230000015654 memory Effects 0.000 claims abstract description 102
- 238000000034 method Methods 0.000 claims abstract description 53
- 230000004044 response Effects 0.000 claims abstract description 13
- 238000010586 diagram Methods 0.000 claims description 17
- 238000011144 upstream manufacturing Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 7
- 238000004088 simulation Methods 0.000 abstract description 35
- 238000004883 computer application Methods 0.000 abstract description 2
- 230000001960 triggered effect Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 11
- 238000012360 testing method Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000012795 verification Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请涉及计算机应用技术领域,具体公开了一种逻辑系统设计的任务处理方法及电子设备,所述方法包括:接收一个任务的描述,所述任务的描述包括任务执行语句;确定所述任务执行语句是否包括阻塞语句;响应于所述任务执行语句包括所述阻塞语句,将所述任务标记为阻塞任务;以及在内存中为所述阻塞任务分配堆内存。本申请通过对逻辑系统设计的源代码进行分析,将存在条件触发需要临时中断,并且稍后恢复执行的任务标记为阻塞任务,以及将可以一次性执行完成无需中断的任务标记为非阻塞任务,根据任务的阻塞和非阻塞性质分配内存,进而减少内存开销,并可以进一步提高仿真效率。
Description
技术领域
本申请涉及计算机应用技术领域,特别是涉及一种逻辑系统设计的任务处理方法及电子设备。
背景技术
Verilog语法中定义了任务(task),用于执行特定的功能。逻辑系统设计(例如,芯片设计)中往往包含多个任务(task)。根据硬件描述语言环境(例如Verilog语言)的定义,任务(task)是一个需要一次性执行完成的程序。任务(task)可以用来描述共同的代码段,并在模块内任意位置被调用,让代码更加的直观易读。任务(task)更像一个过程,不仅能完成函数的功能,还可以包含时序控制逻辑。
在相关技术中,有的任务(task)可能无法在规定时间内完成,有的任务(task)可能存在条件触发,需要临时中断,并且稍后恢复执行。这导致并非所有的任务(task)都可以一次性执行完毕。
发明内容
基于此,有必要针对上述技术问题,提供一种逻辑系统设计的任务处理方法、电子设备及可读存储介质。
第一方面,本申请提供了一种逻辑系统设计的任务处理方法。所述方法包括:接收一个任务的描述,所述任务的描述包括任务执行语句;确定所述任务执行语句是否包括阻塞语句;响应于所述任务执行语句包括所述阻塞语句,将所述任务标记为阻塞任务;以及在内存中为所述阻塞任务分配堆内存。
第二方面,本申请还提供了一种电子设备。所述电子设备包括存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以使得所述电子设备执行如第一方面所述的方法。
第三方面,本申请还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于在被执行时使所述计算机执行如第一方面所述的方法。
上述逻辑系统设计的任务处理方法、电子设备及可读存储介质,至少包括以下有益效果:
本申请实施例在Verilog语法的基础上,进一步将任务划分为阻塞任务和非阻塞任务,并对阻塞任务分配堆内存,而对非阻塞任务分配栈内存。这样,本申请实施例可以在保持与Verilog语法兼容的前提下,减少内存开销并提高仿真效率。更具体地说,通过在仿真测试过程中,对逻辑系统设计的源代码进行分析,将任务执行语句包括阻塞语句的任务标记为阻塞任务,以及将任务执行语句不包括阻塞语句任务标记为非阻塞任务,并进一步判断任务的多个嵌套调用子任务是否为阻塞任务,将存在调用子任务为阻塞任务逻辑的任务标记为阻塞任务,更加准确且全面地进行阻塞任务标记。同时,根据任务的阻塞和非阻塞性质分配内存,具体为阻塞任务分配内存(例如分配堆内存)保存其自身定义的信号和上下文信息,为非阻塞任务分配临时内存(例如栈内存)无需保存上下文信息,进而减少内存开销,并可以进一步提高仿真效率。
附图说明
为了更清楚地说明本申请实施例或传统技术中的技术方案,下面将对实施例或传统技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本申请实施例的主机的示意图;
图2示出了根据本申请实施例的仿真工具的示意图;
图3A和图3B示出了根据本申请实施例的任务的多个嵌套调用的子任务的示意图;
图4示出了根据本申请实施例的另一任务的多个嵌套调用的子任务的示意图;
图5示出了根据本申请实施例的一种逻辑系统设计的任务处理方法的示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。“连接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
在此使用时,单数形式的“一”、“一个”和“所述/该”也可以包括复数形式,除非上下文清楚指出另外的方式。还应当理解的是,术语“包括/包含”或“具有”等指定所陈述的特征、整体、步骤、操作、组件、部分或它们的组合的存在,但是不排除存在或添加一个或更多个其他特征、整体、步骤、操作、组件、部分或它们的组合的可能性。同时,在本说明书中,术语“和/或”包括相关所列项目的任何及所有组合。
如上所述,仿真调试过程中,往往存在需要反复在不同的范围(例如,一个信号、一个电路模块、一段代码等)查看逻辑系统设计的电路原理图、波形图、源代码、覆盖率等的情况,然而在仿真调试时,用户需要多次修改选中的范围,不断拖拽到功能窗口查看信号,可能需要尝试很多次才能得到自己想要调试的那部分信号,使得调试效率受到限制。本申请实施例提供的逻辑系统设计的任务处理方法,可以应用在仿真调试场合。采用本申请实施例提供的方法,可以在一定程度上提高仿真调试效率。
具体地,仿真测试是在运行仿真测试系统的主机上对逻辑系统设计施加各种激励以检测逻辑系统设计是否可以实现预定的功能。
图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上的计算机程序。
在芯片设计领域,通常可以利用仿真工具200对一个设计进行仿真。图2示出的示例性仿真工具200可以包括编译器210和仿真器220。编译器210可以基于待编译的计算机代码来生成目标代码204。待编译的计算机代码又可以称为源代码,例如编写的逻辑系统设计202。通常,编写源代码的源语言是高级编程语言。高级编程语言可以例如是C++、Java等软件编程语言或VHDL、Verilog、SystemVerilog等硬件描述语言。目标代码204则可以是例如汇编代码、机器码等。本领域技术人员应该理解本申请的实施例中的机器码可以用其他类型的目标代码代替。通常的,编译器210可以存储在图1所示的存储器104中,并且由处理器102执行,以将逻辑系统设计202编译为目标代码204。
仿真器220可以根据目标代码204进行仿真,并输出仿真结果206。例如,仿真器220可以将仿真结果206(例如,仿真波形图)经由图1的外围接口108输出到输出装置上(输出装置例如显示器等)。
在一些实施例中,逻辑系统设计202可以是一个用SystemVerilog语言编写的验证环境,例如通用验证方法学(Universal Verification Methodology,UVM)环境。通过利用仿真工具200仿真设计,可以构建一个UVM环境,并可以在该UVM环境中对一个待测设备(Device Under Test,简称DUT)进行验证。逻辑系统设计202计的描述(例如,HDL描述)通过编译可以形成仿真程序。该仿真程序在UVM环境中可以被用作DUT。
通过上述方式,本申请构建了逻辑系统设计的验证环境,通过验证环境对逻辑系统设计进行仿真。在逻辑系统设计202的仿真过程中,根据Verilog的语法定义,任务(task)是一个需要一次性执行完成的例行程序(routine)。任务(task)可以用来描述共同的代码段,并在模块内任意位置被调用,让代码更加的直观易读。任务更像一个过程,不仅能完成函数的功能,还可以包含时序控制逻辑。
在实际操作中,有的任务可以在规定时间内完成,有的任务可能存在条件触发(例如包括时序控制逻辑)的任务,需要临时中断,并且稍后恢复执行。这导致并非所有的任务都可以一次性执行完毕。因此,相关技术中,需要针对所有的任务在其被调用时分配内存(例如分配堆内存),保存其自身定义的信号和上下文信息,导致一定程度的内存浪费,降低了仿真效率。
基于此,本申请在此基础上进一步提出了一种逻辑系统设计的任务处理方法、电子设备和存储介质。通过本申请所提供的方法可以在仿真测试过程中,对逻辑系统设计的源代码进行分析,将存在条件触发需要临时中断,并且稍后恢复执行的任务标记为阻塞任务,以及将可以一次性执行完成无需中断的任务标记为非阻塞任务,根据任务的阻塞和非阻塞性质分配内存,具体为阻塞任务分配内存(例如分配堆内存)保存其自身定义的信号和上下文信息,为非阻塞任务分配临时内存(例如栈内存)无需保存上下文信息,进而减少内存开销,并可以进一步提高仿真效率。这样,在保持与Verilog语法中的任务定义相兼容的前提下,本申请实施例的方法可以将任务进一步分为阻塞任务和非阻塞任务,并且为非阻塞任务分配栈内存,从而减少内存开销提高了仿真的效率。
接下来,本申请将对如何标记任务的阻塞和非阻塞性质和如何根据任务的阻塞和非阻塞性质分配内存做更进一步地说明讲解。
编译器210可以接收一个任务的描述,该任务可以是Verilog任务。任务的描述可以是逻辑系统设计202中的源代码,其包括任务执行语句。编译器210可以进一步解析该任务的任务执行语句中是否包括阻塞语句,阻塞语句可以包括时序控制语句,例如delay、@、wait、event control等。编译器210可以将任务执行语句中包括阻塞语句的任务标记为阻塞任务,并在内存为阻塞任务分配堆内存,可以使得仿真器220可以使用堆内存实现跨仿真时间的访问内存,实现对阻塞任务的仿真。
在一些实施例中,编译器210还可以将任务执行语句中不包括阻塞语句的任务标记为非阻塞任务。
在一些实施例中,任务的描述可以进一步包括多个嵌套调用的子任务。也就说,在一个task描述中还存在调用另一个task的情况。例如,以下伪代码简单的示出了这种情形。
如上所示,在module top中存在任务A和任务B,并且任务A调用任务B。同时,任务A进一步包括依次执行的任务t1、t2、t3,任务B进一步包括依次执行的任务t4、t5、t6。
因此,存在一个任务本身不包括阻塞语句,但此任务嵌套调用的子任务中包括阻塞语句的情况,该情况下此任务为阻塞任务。因此,需要进一步为本身不包括阻塞语句的任务进行判断,判断方法如下。
图3A和图3B示出了本申请实施例中任务的多个嵌套调用的子任务的示意图。在图3A和图3B中,图中箭头表示调用关系,以单个箭头为例,箭头起点的任务为箭头终点的任务的上游任务,箭头终点的任务为箭头起点的任务的下游任务。
编译器210接收一个任务描述,例如以上伪代码中的任务A和B。如图3A所示,在这个示例中,编译器210解析确定任务A为非阻塞任务,编译器210可以根据任务A的描述解析获得任务A的多个嵌套调用的子任务t1、t2和t3。例如,编译器210可以分析任务A中除了子任务t1、t2和t3之外的描述都不包含阻塞语句,并因此初步确定任务A为非阻塞任务。
在一些实施例中,编译器210可以根据任务A的描述确定调用关系图300。类似地,编译器210还可以确定任务B为非阻塞任务(仅为一个示例),并获得任务B的多个子任务t4、t5和t6。
编译器210可以对任务A的多个嵌套调用的子任务进行遍历,确定当前遍历的目标子任务是否为阻塞任务。例如,编译器210首先对目标子任务t1进行解析判断,确定目标子任务t1为非阻塞任务(302)。编译器210则继续遍历以目标子任务t1的相邻下游子任务t2作为目标子任务进行解析判断,进而确定目标子任务t2为非阻塞任务(304)。编译器210则继续遍历以目标子任务t2的相邻下游子任务t3作为目标子任务进行解析判断,进而确定目标子任务t3为阻塞任务(306),则将目标子任务t3以及目标子任务t3的上游子任务(即,t1、t2)标记为阻塞任务,并且将任务A也标记为阻塞任务(308)。即响应于任务A的多个嵌套调用子任务存在阻塞任务的情况,将任务A标记为阻塞任务。可以注意到,原本是非阻塞任务的t1和t2被重新标记为了阻塞任务,且任务A也重新标记为了阻塞任务。
在一些实施例中,如图3B所示,编译器210逐级遍历任务A和B以及子任务t1-t5,并且确定它们均为非阻塞任务(310)。在312,编译器210将子任务t6作为目标子任务,并且确定子任务t6为阻塞任务。这样,在314,编译器210可以将阻塞任务t6的上游任务(任务B的多个嵌套调用的子任务中的任务t6的上游任务,即,子任务t4-t5)标记为阻塞任务,并且相应地标记任务B为阻塞任务。由于任务A是任务B的上游任务,响应于任务B为阻塞任务的情况,将任务B的上游任务标记为阻塞任务,因此任务A也相应地标记为阻塞任务。由于任务B不直接由子任务t3调用,因此,任务A的子任务t1-t3不受影响。
在一些实施例中,编译器210的遍历顺序可以根据嵌套调用的上下游关系按顺序遍历,即编译器210可以以当前接收的任务中顺序执行的第一个子任务作为目标子任务,优先依次向目标子任务的上游任务进行遍历,上游任务遍历结束后再依次向目标子任务的下游任务进行遍历,或者可以优先依次向目标子任务的下游任务进行遍历,下游任务遍历结束后再依次向目标子任务的上游任务进行遍历。
在一些实施例中,编译器210在完成对任务以及任务多个嵌套调用子任务的阻塞和非阻塞标记后,在内存为阻塞任务分配堆内存,并为非阻塞任务分配临时内存,例如栈内存,减少内存开销。
在一些实施例中,编译器210可以根据接收的任务描述获得该任务的调用关系图,进而根据调用关系图确定该任务的多个嵌套调用子任务。调用关系图通常可以是指一种流程控制图,目的是表征目标程序的各个子过程之间的相互调用关系,例如图3A和图3B中的每个节点(t1-t6)代表一个子过程。编译器210可以在编译过程中生成任务的调用关系图,并将调用关系图进行数据存储。编译器210可以在标记子任务过程中直接基于任务描述读取存储的调用关系图。在一些实施例中,编译器210还可以在标记子任务过程中,基于任务描述进行流程控制逻辑追溯,生成该任务的调用关系图。
在一些实施例中,编译器210在遍历任务的多个嵌套调用子任务过程中,可以为遍历的每个目标子任务增加完成标记,完成标记可以用于指示该子任务已完成了确定目标子任务的任务执行语句是否包括阻塞语句的步骤。编译器210在完成任务的多个嵌套调用子任务的遍历后,多个嵌套调用子任务均增添有完成标记。因此,编译器210可以在判断多个嵌套调用子任务均具有所述完成标记的情况下,结束遍历,避免陷入遍历死循环。
图4示出了本申请实施例中另一任务的多个嵌套调用的子任务的示意图。图4示出了调用关系图400。在该关系图400中,该任务包括的多个嵌套调用子任务(如图中子任务t1-t5)形成嵌套循环。编译器210可以向已遍历的子任务添加完成标记402。如图4示出的任务中,首先以子任务t1为目标子任务进行遍历,编译器210读取到子任务t1不具有完成标记402,触发执行判断子任务t1中是否包含阻塞语句,并在获得判断结果后为子任务t1添加完成标记402的步骤。编译器210继续以子任务t1的下游子任务t2作为目标子任务进行遍历,以此类推,当编译器210继续以子任务t2的下游子任务t3作为目标子任务进行遍历(未获得判断结果)时,此时子任务t1和t2具有完成标记402,子任务t3-t5不具有完成标记402。当编译器210继续以子任务t4的下游子任务t5作为目标子任务进行遍历,并获得判断结果时,编译器210为子任务t5添加完成标记402,此时子任务t1-t5均具有完成标记。编译器210继续遍历,以子任务t5的下游子任务t1作为目标子任务进行遍历,此时编译器210读取到子任务t1具有完成标记402,编译器210可以判断任务中多个嵌套调用子任务(即图4中子任务t1-t5)均具有完成标记,编译器210结束遍历。
在一些实施例中,编译器210接收任务的多个嵌套调用的子任务的示意图如图3A和图3B所示,编译器210可以累计完成标记的总数,在完成标记的总数与任务的多个嵌套调用子任务总数相等时,编译器210结束遍历。
或者,编译器210遵循嵌套调用的上下游关系按从上游到下游的顺序遍历时,编译器210在遍历到的目标子任务不具有下游子任务时,结束遍历。编译器210遵循嵌套调用的上下游关系按从下游到上游的顺序遍历时,编译器210在遍历到的目标子任务不具有上游子任务时,结束遍历。
本申请实施例在Verilog语法的基础上,进一步将任务划分为阻塞任务和非阻塞任务,并对阻塞任务分配堆内存,而对非阻塞任务分配栈内存。这样,本申请实施例可以在保持与Verilog语法兼容的前提下,减少内存开销并提高仿真效率。更具体地说,通过在仿真测试过程中,对逻辑系统设计的源代码进行分析,将任务执行语句包括阻塞语句的任务标记为阻塞任务,以及将任务执行语句不包括阻塞语句任务标记为非阻塞任务,并进一步判断任务的多个嵌套调用子任务是否为阻塞任务,将存在调用子任务为阻塞任务逻辑的任务标记为阻塞任务,更加准确且全面地进行阻塞任务标记。同时,根据任务的阻塞和非阻塞性质分配内存,具体为阻塞任务分配内存(例如分配堆内存)保存其自身定义的信号和上下文信息,为非阻塞任务分配临时内存(例如栈内存)无需保存上下文信息,进而减少内存开销,并可以进一步提高仿真效率。
本申请的一些实施例中还提供了一种逻辑系统设计的任务处理方法。
图5示出了根据本申请实施例的一种逻辑系统设计的任务处理方法500的示意图。方法500可以由图1的主机100执行,更具体地,可以由在主机100上运行的图2的仿真工具200来执行。方法500可以包括如下步骤。
在步骤510,主机100可以接收一个任务的描述(例如图2中逻辑系统设计202中任务的描述)。该任务的描述可以包括任务执行语句。在一些实施例中,该任务可以是Verilog任务。可以理解的是,主机100可以将逻辑系统设计的描述进行编译,进而对其中的任务描述进行解析。
在步骤520,根据接收的任务描述,主机100可以确定任务执行语句是否包括阻塞语句。其中,阻塞语句可以包括时序控制语句,例如delay、@、wait、event control等。
在步骤530,响应于任务执行语句包括阻塞语句,主机100可以将任务标记为阻塞任务。
在一些实施例中,方法500进一步包括:响应于任务执行语句不包括阻塞语句,主机100可以将任务标记为非阻塞任务。本实施例可以根据任务执行语句中是否包括阻塞语句,为包含阻塞语句的任务进行阻塞任务标记,以及为不包含阻塞语句的任务进行非阻塞任务标记,实现了任务阻塞性质的初步区分。
在一些实施例中,任务的描述进一步包括多个嵌套调用子任务(例如图3A和图3B中的子任务t1-t6),方法500进一步包括:确定多个嵌套调用子任务中的目标子任务是否为阻塞任务;响应于确定所述目标子任务为阻塞任务,将所述目标子任务以及所述目标子任务的上游子任务标记为阻塞任务,例如图3A和图3B所示,主机100确定一目标子任务(如子任务t3)为阻塞任务,主机100做出响应将目标子任务(子任务t3)以及目标子任务的上游子任务(子任务t1、t2)标记为阻塞任务。在一些实施例中,方法500进一步包括:响应于多个嵌套调用子任务均具有完成标记,主机100可以结束遍历。
在一些实施例中,方法500进一步包括:在内存中为非阻塞任务分配栈内存。主机100可以在完成标记后,根据阻塞标记和非阻塞标记为阻塞任务和非阻塞任务分配内存,其中,主机100可以为非阻塞任务分配临时内存(例如栈内存),无需保存上下文信息,可以大大减少内存开销。
在一些实施例中,在主机100确定多个嵌套调用子任务中的目标子任务是否为阻塞任务步骤之前包括:主机100可以根据任务的描述确定任务的调用关系图(例如图3A的调用关系图300或图4的关系图400),并基于调用关系图确定多个嵌套调用子任务。
在一些实施例中,主机100确定多个嵌套调用子任务中的目标子任务是否为阻塞任务进一步包括:主机100可以遍历多个嵌套调用子任务中的目标子任务(例如图3A和图3B,主机100可以遵循嵌套调用的上下游关系按顺序遍历),主机100在遍历过程中可以执行确定目标子任务的任务执行语句是否包括阻塞语句的步骤;以及为遍历过的目标子任务增加完成标记。
在步骤540,主机100可以在内存中为所述阻塞任务分配堆内存。堆内存可以保存阻塞任务的自身定义的信号和上下文信息。
本申请实施例在Verilog语法的基础上,进一步将任务划分为阻塞任务和非阻塞任务,并对阻塞任务分配堆内存,而对非阻塞任务分配栈内存。这样,本申请实施例可以在保持与Verilog语法兼容的前提下,减少内存开销并提高仿真效率。更具体地说,通过在仿真测试过程中,对逻辑系统设计的源代码进行分析,将任务执行语句包括阻塞语句的任务标记为阻塞任务,以及将任务执行语句不包括阻塞语句任务标记为非阻塞任务,并进一步判断任务的多个嵌套调用子任务是否为阻塞任务,将存在调用子任务为阻塞任务逻辑的任务标记为阻塞任务,更加准确且全面地进行阻塞任务标记。同时,根据任务的阻塞和非阻塞性质分配内存,具体为阻塞任务分配内存(例如分配堆内存)保存其自身定义的信号和上下文信息,为非阻塞任务分配临时内存(例如栈内存)无需保存上下文信息,进而减少内存开销,并可以进一步提高仿真效率。
需要说明的是,本申请的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在本申请实施例还提供了一种电子设备,包括存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以使得所述电子设备执行本申请实施例提供的方法500。
本申请实施例还提供了一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于在被执行时使所述计算机执行本申请实施例提供的方法400。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase ChangeMemory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random AccessMemory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(DynamicRandom Access Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
上述对本申请的一些实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以任意顺序实现,并存在如上所述的本申请的不同方面的许多其它变化,为了简明它们没有在细节中提供。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (8)
1.一种逻辑系统设计的任务处理方法,其特征在于,所述方法包括:
接收一个任务的描述,所述任务的描述包括任务执行语句;
确定所述任务执行语句是否包括阻塞语句;
响应于所述任务执行语句包括所述阻塞语句,将所述任务标记为阻塞任务;以及
在内存中为所述阻塞任务分配堆内存;
响应于所述任务执行语句不包括所述阻塞语句,将所述任务标记为非阻塞任;
在内存中为非阻塞任务分配栈内存。
2.根据权利要求1所述的方法,其特征在于,所述任务的描述进一步包括多个嵌套调用子任务,所述方法进一步包括:
确定所述多个嵌套调用子任务中的目标子任务是否为阻塞任务;
响应于确定所述目标子任务为阻塞任务,将所述目标子任务以及所述目标子任务的上游子任务标记为阻塞任务。
3.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
所述任务是Verilog任务。
4.根据权利要求2所述的方法,其特征在于,所述确定所述多个嵌套调用子任务中的目标子任务是否为阻塞任务步骤之前包括:
根据所述任务的描述确定所述任务的调用关系图,基于所述调用关系图确定所述多个嵌套调用子任务。
5.根据权利要求2所述的方法,其特征在于,所述确定所述多个嵌套调用子任务中的目标子任务是否为阻塞任务进一步包括:
遍历所述多个嵌套调用子任务中的目标子任务,执行确定所述目标子任务的任务执行语句是否包括阻塞语句的步骤;以及
为遍历过的所述目标子任务增加完成标记。
6.根据权利要求5所述的方法,其特征在于,所述方法进一步包括:
响应于所述多个嵌套调用子任务均具有所述完成标记,结束遍历。
7.一种电子设备,其特征在于,包括
存储器,用于存储一组指令;以及
至少一个处理器,配置为执行该组指令以使得所述电子设备执行如权利要求1至6的任一项所述的方法。
8.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于在被执行时使所述计算机执行如权利要求1至6的任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211292031.XA CN115658242B (zh) | 2022-10-21 | 2022-10-21 | 逻辑系统设计的任务处理方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211292031.XA CN115658242B (zh) | 2022-10-21 | 2022-10-21 | 逻辑系统设计的任务处理方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115658242A CN115658242A (zh) | 2023-01-31 |
CN115658242B true CN115658242B (zh) | 2024-04-26 |
Family
ID=84989513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211292031.XA Active CN115658242B (zh) | 2022-10-21 | 2022-10-21 | 逻辑系统设计的任务处理方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658242B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008250636A (ja) * | 2007-03-30 | 2008-10-16 | Nec Corp | 論理設計支援システム及びプログラム |
CN102117240A (zh) * | 2009-12-31 | 2011-07-06 | 腾讯科技(深圳)有限公司 | 一种获取进程阻塞信息的方法及装置 |
CN102930090A (zh) * | 2012-10-22 | 2013-02-13 | 中兴通讯股份有限公司 | 高级语言实现硬件非阻塞赋值的建模方法 |
CN110825441A (zh) * | 2019-09-23 | 2020-02-21 | 万达信息股份有限公司 | 异步系统的实现方法、计算机设备和存储介质 |
CN114077500A (zh) * | 2020-08-11 | 2022-02-22 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、计算机可读存储介质和处理器 |
CN114116203A (zh) * | 2021-10-29 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种资源调用控制方法、资源调用控制装置及存储介质 |
CN114168305A (zh) * | 2022-01-04 | 2022-03-11 | 北京金山云网络技术有限公司 | 一种任务调度方法、装置、设备及存储介质 |
CN114327861A (zh) * | 2021-11-17 | 2022-04-12 | 芯华章科技股份有限公司 | 执行eda任务的方法、装置、系统和存储介质 |
-
2022
- 2022-10-21 CN CN202211292031.XA patent/CN115658242B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008250636A (ja) * | 2007-03-30 | 2008-10-16 | Nec Corp | 論理設計支援システム及びプログラム |
CN102117240A (zh) * | 2009-12-31 | 2011-07-06 | 腾讯科技(深圳)有限公司 | 一种获取进程阻塞信息的方法及装置 |
CN102930090A (zh) * | 2012-10-22 | 2013-02-13 | 中兴通讯股份有限公司 | 高级语言实现硬件非阻塞赋值的建模方法 |
CN110825441A (zh) * | 2019-09-23 | 2020-02-21 | 万达信息股份有限公司 | 异步系统的实现方法、计算机设备和存储介质 |
CN114077500A (zh) * | 2020-08-11 | 2022-02-22 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、计算机可读存储介质和处理器 |
CN114116203A (zh) * | 2021-10-29 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种资源调用控制方法、资源调用控制装置及存储介质 |
CN114327861A (zh) * | 2021-11-17 | 2022-04-12 | 芯华章科技股份有限公司 | 执行eda任务的方法、装置、系统和存储介质 |
CN114168305A (zh) * | 2022-01-04 | 2022-03-11 | 北京金山云网络技术有限公司 | 一种任务调度方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115658242A (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7270764B2 (ja) | 人工知能チップ検証 | |
US8612944B2 (en) | Code evaluation for in-order processing | |
US10592703B1 (en) | Method and system for processing verification tests for testing a design under test | |
US9396095B2 (en) | Software verification | |
CN112597064B (zh) | 对程序进行仿真的方法、电子设备及存储介质 | |
WO2020237508A1 (zh) | 一种断言验证代码绑定方法及装置 | |
CN113127314A (zh) | 一种检测程序性能瓶颈的方法、装置及计算机设备 | |
US10528691B1 (en) | Method and system for automated selection of a subset of plurality of validation tests | |
JP5923636B2 (ja) | モデル検査のためのループ抽象化 | |
CN115658242B (zh) | 逻辑系统设计的任务处理方法及电子设备 | |
CN112445855A (zh) | 用于图形处理器芯片的可视化分析方法和可视化分析装置 | |
CN109189671B (zh) | 逐层夹逼式变量定位方法、系统及终端设备 | |
CN111385661B (zh) | 语音控制全屏播放的方法、装置、终端及存储介质 | |
CN113778838A (zh) | 二进制程序动态污点分析方法及装置 | |
CN108197005B (zh) | Ios应用的底层运行性能监测方法、介质、设备及系统 | |
CN114328062B (zh) | 校验缓存一致性的方法、装置和存储介质 | |
US10467118B2 (en) | Techniques for performance analysis of processor instruction execution | |
CN112506806B (zh) | 用于调试程序的方法、电子设备及存储介质 | |
US20140013312A1 (en) | Source level debugging apparatus and method for a reconfigurable processor | |
US20150220425A1 (en) | Test context generation | |
CN115827636A (zh) | 存储及从波形数据库读取逻辑系统设计的仿真数据的方法 | |
CN113296788B (zh) | 指令调度方法、装置、设备及存储介质 | |
CN114780409A (zh) | 基于程序运行进程的断点设置方法、电子设备和存储介质 | |
KR102606235B1 (ko) | 데이터센터 스토리지 평가 프레임워크 시뮬레이션 방법 | |
CN108304294B (zh) | Ios应用的实时帧数监测方法、存储介质、设备及系统 |
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 | ||
CB02 | Change of applicant information |
Address after: Room 1840, Hatching Building, No. 99 Tuanjie Road, Nanjing Area, China (Jiangsu) Pilot Free Trade Zone, Nanjing, Jiangsu, 211899 Applicant after: Xinhuazhang Technology Co.,Ltd. Address before: Room 1840, hatch Eagle building, No. 99, Tuanjie Road, Nanjing area, China (Jiangsu) pilot Free Trade Zone, Suzhou, Jiangsu 215000 Applicant before: Xinhuazhang Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |