CN116401990B - 处理中断事件的方法、装置、系统和存储介质 - Google Patents
处理中断事件的方法、装置、系统和存储介质 Download PDFInfo
- Publication number
- CN116401990B CN116401990B CN202310116728.XA CN202310116728A CN116401990B CN 116401990 B CN116401990 B CN 116401990B CN 202310116728 A CN202310116728 A CN 202310116728A CN 116401990 B CN116401990 B CN 116401990B
- Authority
- CN
- China
- Prior art keywords
- queue
- thread
- interrupt
- empty
- programmable logic
- 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
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000012545 processing Methods 0.000 title claims abstract description 17
- 230000004044 response Effects 0.000 claims abstract description 19
- 230000002618 waking effect Effects 0.000 claims abstract description 5
- 238000004088 simulation Methods 0.000 claims description 77
- 238000013461 design Methods 0.000 description 33
- 238000012360 testing method Methods 0.000 description 25
- 230000008569 process Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 11
- 238000012795 verification Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 238000010200 validation analysis Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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
Abstract
本申请提供处理中断事件的方法,包括:运行第一线程以从多个可编程逻辑器件的一个接收中断数据;经由第一线程在第一队列中存储中断数据并唤醒第二线程;响应于在第一队列不为空,经由第二线程读取第一队列的队首处的第一中断数据,以确定与第一中断数据对应的第一可编程逻辑器件的第一标识和第一中断类型;经由第二线程确定第二队列是否为空,其中第二队列与第一中断类型对应;响应于第二队列不为空,经由第二线程在第二队列中查找第一标识;响应于第二队列中查找到第一标识,经由第二线程从第二队列中移除第一标识;经由第二线程再次确定第二队列是否为空;响应于第二队列为空,经由第二线程根据第一中断数据处理多个可编程逻辑器件的中断事件。
Description
技术领域
本申请涉及芯片验证技术领域,尤其涉及一种处理多个可编程逻辑器件的中断事件的方法、装置、系统和存储介质。
背景技术
仿真工具(例如,原型验证板或硬件仿真工具(emulator))可以原型化(prototype)并且调试一个包括一个或多个模块的逻辑系统设计。所述逻辑系统设计可以是,例如,用于供专门应用的集成电路(ApplicationSpecificIntegratedCircuit,简称ASIC)或者片上系统芯片(System-On-Chip,简称SOC)的设计。因此,在仿真工具中被测试的逻辑系统设计又可以称为待测设计(DesignUnderTest,简称DUT)。仿真工具可以包括一个或多个可编程逻辑器件(例如,现场可编程逻辑门阵列(FieldProgrammableGateArray,简称FPGA)),用来仿真该待测设计,包括执行该待测设计的各种操作,从而在制造之前就测试并验证待测设计的各个模块的功能。通过在仿真工具上外接多种外设子卡还可以测试待测设计与各种外设作为一个完整系统进行运行的效果。
仿真工具的FPGA在执行各项操作时会与主机进行通信,并根据主机的指令进行操作。在仿真的过程中,FPGA可能触发中断事件,从而需要和主机进行通信。
如何处理多个中断事件是一个亟待解决的问题。
发明内容
本申请的第一方面提供一种处理多个可编程逻辑器件的中断事件的方法。所述方法可以包括:运行第一线程以从所述多个可编程逻辑器件的一个接收中断数据;经由所述第一线程在第一队列中存储所述中断数据并且唤醒第二线程;响应于在所述第一队列不为空,经由所述第二线程读取所述第一队列的队首处的第一中断数据,以确定与所述第一中断数据对应的第一可编程逻辑器件的第一标识和第一中断类型;经由所述第二线程确定第二队列是否为空,其中所述第二队列与所述第一中断类型对应;响应于所述第二队列不为空,经由所述第二线程在所述第二队列中查找所述第一标识;响应于所述第二队列中查找到所述第一标识,经由所述第二线程从所述第二队列中移除所述第一标识;经由所述第二线程再次确定所述第二队列是否为空;响应于所述第二队列为空,经由所述第二线程根据所述第一中断数据处理所述多个可编程逻辑器件的中断事件。
本申请的第二方面提供一种电子装置,包括:存储器,用于存储一组指令;以及至少一个处理器,配置为执行所述一组指令以使得所述电子装置执行如第一方面所述的方法。
本申请的第三方面提供一种仿真系统,包括:如第二方面所述的电子装置;以及与所述电子装置通信耦接的多个仿真工具,所述多个仿真工具的每一个包括一个或多个可编程逻辑器件。
本申请的第四方面提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于在被执行时使所述计算机执行如第一方面所述的方法。
附图说明
为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本申请实施例的示例性主机的结构示意图。
图2示出了根据本申请实施例的仿真系统的示意图。
图3示出了根据本申请实施例的另一仿真系统的示意图。
图4示出了根据本申请实施例的处理中断事件的示意图。
图5示出了根据本申请实施例的一种处理多个可编程逻辑器件的中断事件的方法的流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
过去的设计通常是一个仿真工具上容纳多个 FPGA。随着芯片设计规模扩大,单板的FPGA容量已经无法满足需求,叠加硬件仿真能力上云的需求,多个仿真工具共同提供FPGA 仿真能力成为主流。因此,主机的一个中断事件可能引起多个FPGA产生中断状态并反馈到主机。但是,尽管单板上的多个 FPGA 和主控芯片的通信通常可以是可控的,但是多个仿真工具和主机之间的通信就受到外界干扰较多。例如,多个仿真工具与主机之间的通信线路的稳定性,路由的先后,主机处理通信请求的延迟等等都可能导致多个仿真工具向主机反馈的中断信息未必可以在一个周期内被主机处理并且反馈到仿真工具。这使得主机无法及时并且同步地获取多个仿真工具的中断状态,这样主机就无法在合适的时间对中断事件进行处理。
本申请实施例的方法、装置、系统和存储介质通过在主机端的主线程和子线程的配合,并且在主线程和子线程之间设置共享的第一数据队列实现中断数据的共享,从而使得主线程可以从等待FPGA反馈中断数据中解放出来。本申请实施例还为子线程设置第二数据队列用于存储主动读取的FPGA中断状态,并且在主线程接收到FPGA的中断数据后清除第二数据队列,从而保证主机既可以主动获取全部FPGA的中断状态,又确保主机仅在全部FPGA的中断数据接收到之后才开始处理对应的中断事件。
图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的示意图。
如图2所示,仿真系统200可以包括仿真工具202以及与仿真工具202连接的主机100。
仿真工具202是一种用于仿真待测设计(DUT)的硬件系统。仿真工具202可以是原型验证板或者硬件仿真工具(emulator)。一个待测设计可以包括多个模块。待测设计可以是组合逻辑电路、时序逻辑电路、或上述两者的组合。仿真工具202可以包括一个或多个可配置电路(例如,FPGA),用于仿真待测设计。
仿真工具202可以包括接口单元2022,用于与主机100通信地耦接,以进行主机100和仿真工具202之间的通信。在一些实施例中,接口单元2022可以包括具有电连接能力的一个或多个接口。例如,接口单元2022可以包括RS232接口、USB接口、LAN口、光纤接口、IEEE1394(火线接口)等。在一些实施例中,接口单元2022可以是无线网络接口。例如,接口单元2022可以是WIFI接口、蓝牙接口等。
主机100可以经由接口单元2022向仿真工具202传输编译后的DUT、调试指令等。仿真工具202也可以经由接口单元2022向主机100传输仿真数据等。
仿真工具202还可以包括存储器2024,用于存储在仿真过程中待测设计产生的仿真数据(例如,各种信号值)。在一些实施例中,仿真过程中待测设计产生的信号值可以直接被主机100读取。可以理解的是,存储器2024也可以独立仿真工具202,例如,使用一种外接存储器。
仿真工具202还可以包括FPGA 2026,用于将逻辑系统设计硬件地实现到FPGA上。可以理解的是,仿真工具202可以包括多个FPGA,图中仅为示例。
除了连接到主机100,仿真工具202还可以经由接口单元2022连接到一个或多个子卡204。
子卡用于在使用仿真工具202进行原型验证时向DUT提供外设以构成完整的电子系统。原型验证是指在芯片流片之前,尽可能的还原芯片真实使用场景,验证芯片功能是否准确和完整的一种验证方式。子卡204可以包括存储器子卡(例如,提供DDR内存接口)、通信子卡(例如,提供多种网络接口或无线网卡接口)等。
主机100可以用于配置仿真工具202以仿真一个待测设计。该待测设计可以是一个完整的逻辑系统设计或一个完整逻辑系统设计的一个或多个模块。在一些实施例中,主机100可以是云计算系统中的一个虚拟主机。逻辑系统设计(例如,ASIC或者System-On-Chip)可以由硬件描述语言(例如Verilog、VHDL、System C、或System Verilog)设计。
主机100可以从用户接收调试待测设计的请求。如上所述,待测设计可以包括一个或多个模块。待测设计的描述可以用硬件描述语言来完成。主机100可以基于待测设计的描述来进行综合,以生成,例如,待测设计的门级电路网表(未示出)。待测设计的该门级电路网表可以被载入仿真工具202中运行,进而可以在仿真工具202中形成与待测设计相对应的电路结构。因此,待测设计的电路结构可以根据该描述而获得,并且相应地,待测设计中的每个块的电路结构也可以类似地获得。
图3示出了根据本申请实施例的另一仿真系统300的示意图。
如图3所示,仿真系统300可以包括多个仿真工具202(例如,仿真工具202a、仿真工具202b等)与多个仿真工具202连接的主机100。仿真工具202和主机100的描述与图2相同,不再重复。
在图3中,仿真系统300提供了多个仿真工具202,每个仿真工具202可以包括一个或多个FPGA(例如,FPGA 2026a、FPGA 2026b)。这些仿真工具202与主机100作为整体的仿真系统300运行。
在一些实施例中,仿真系统300的中断事件可能导致多个仿真工具202的多个FPGA产生中断数据,主机100需要在确认所有的FPGA都报告中断数据之后才处理中断事件。
中断事件的中断类型可以包括时钟停止、事件触发、命令触发、探测状态更新等。
图4示出了根据本申请实施例的处理(400)中断事件的示意图。
如图4所示,主机100运行验证工具的应用程序,验证工具在运行过程中可以包括第一线程402和第二线程404。也就是说,主机100运行第一线程402和第二线程404。第一线程402是主线程,通常在验证工具的运行期间保持运行以处理验证任务。第二线程404是子线程,通常处于休眠状态,并且可以由第一线程402唤醒。
当仿真系统300遇到中断事件时,多个仿真工具202上的多个FPGA可以产生中断数据。多个FPGA的中断数据可以分别至少包括中断事件的中断类型、中断事件的编号、或FPGA的标识(即,ID)等。每一个FPGA可以单独发送中断数据到该FPGA所在的仿真工具202,并且由仿真工具202发送到主机100。由于多个仿真工具202与主机100的通信受到多种因素的影响,所以中断数据从不同仿真工具202发送到主机100可能会有不同的延迟。主机100通常是在收到全部FPGA的中断数据之后才开始处理中断事件,因而,主机100需要明确全部FPGA的中断数据都已经收到。但是,如果验证工具的主线程都用来查询和等待FPGA的中断数据,则会造成验证工具长时间挂起并且等待中断数据,使得验证工具的运行效率低下。
在一些实施例中,如图4所示,在412,当第一线程402接收到来自一个FPGA(例如,FPGA 2026a)的中断数据时,第一线程402可以存储该中断数据到队列406,并且激活第二线程404。队列406可以在存储器104中建立。除了第一线程402,第二线程404也可以读写队列406。队列406可以是先进先出(FIFO)队列。在队列406的队首处的数据可以被称为data[0],在队尾处的数据可以被称为data[i],其中,i是队列的长度。
这样,第一线程402可以将中断数据的相关事务移交给第二线程404,并且继续其他任务的执行,从而可以保证验证工具不会被中断数据挂起,提高了验证工具的运行效率。
第二线程404在被激活后,在422,第二线程404确定队列406是否为空。
响应于队列406为空,第二线程404可以继续查询队列406。可以理解的是,即使第二线程404持续查询队列406,也不会影响第一线程402继续执行验证工具的相关任务。
响应于队列406不为空,第二线程404可以从队列406读取队首处的中断数据data[0]。如上所述,中断数据可以至少包括中断事件的中断类型、中断事件的编号、或FPGA的标识(在这个示例中,FPGA 2026a)等。因此,根据data[0],第二线程404可以确定与该中断数据对应的FPGA 2026a的标识、中断事件的中断类型T(例如,时钟停止)或中断事件的编号。中断事件的编号可以用于区分不同的中断事件。
FPGA 2026a的标识、中断事件的中断类型或中断事件的编号可以暂时存储在缓存中。也就是说,由第二线程404暂时保存。
在获取FPGA 2026a的标识、中断事件的中断类型或中断事件的编号之后,第二线程404可以在426检查队列408是否为空。
队列408是一个由第二线程404管理的队列,用于存储FPGA 2026a的标识。通过在队列408中加入或移除FPGA 2026a的标识,可以判断是否所有的FPGA都已经完成了中断数据的发送。
队列408与中断事件的中断类型T对应。在一些实施例中,对于不同的中断事件的中断类型,可以提供不同的队列。在一些实施例中,可以为不同的中断事件的中断类型创建多维队列,每一维可以对应于一种中断事件的中断类型。也就是说,第二线程404可以同时创建和维护多个队列或一个多维队列。这里仅以一个队列408进行说明,而非限制。
当队列408为空时,第二线程404可以在428主动地查询并直接读取与主机100连接的多个FPGA的寄存器,以获取存在类型T的中断事件的FPGA的标识。更具体地,第二线程404可以主动地查询除了FPGA 2026a之外的所有FPGA的寄存器并获取存在类型T的中断事件的FPGA的标识。第二线程404可以将这些FPGA的标识(例如,除了FPGA 2026a之外的FPGA的标识)存储到队列408中。通过第二线程404主动查询并直接读取多个FPGA的寄存器,避免了仿真工具202与主机100的通信导致的延迟,使得主机100可以主动获取FPGA的中断状态。
当队列408不为空时,第二线程404可以在440在队列408中查找FPGA 2026a的标识,以确定FPGA 2026a是否已经存在于队列408中。
当FPGA 2026a已经存在于队列408中时,第二线程404可以确定在之前已经获取了多个FPGA的标识,而FPGA 2026a是刚刚才把中断数据发送到主机100激活了第二线程404。也就是说,第二线程404可以确定FPGA 2026a的中断数据已经收到,因此可以将FPGA 2026a从队列408中移除。相应地,第二线程404还可以在440将FPGA 2026a从队列408中移除,以明确FPGA 2026a已经收到了中断数据(即,已经存储在队列406中并作为data[0]被第二线程404读取)。
在442,第二线程404可以再次确定队列408是否为空。
当确定队列408为空时,第二线程404可以确定所有FPGA的中断数据都已经收到,可以在444处理本次中断事件。
当确定队列408不为空时,第二线程404可以确定还有一些FPGA的中断数据尚未收到。相应地,第二线程404可以回到422以再次确定队列406是否为空,开始第二线程404的新循环。
可以理解的是,第二线程404还可以进一步确定第一线程402是否关闭。如果第一线程402关闭,则作为子线程的第二线程404也相应关闭。
在另一些实施例中,第二线程404可以仅包括一个队列408。但是主机100可以为不同的中断事件的中断类型提供不同的子线程。也就是说,主机100可以提供多个第二线程404。
通过采用主线程和子线程的多线程处理中断事件的方式,由主线程通过共享队列(例如,队列406)接收并存储中断数据,避免了多个FPGA的多个中断数据的数据丢失。利用共享队列唤醒子线程的方式又可以使得子线程及时响应并处理中断数据,同时还降低了对主线程的占用,提高了计算资源的利用率。
通过由子线程主动读取FPGA的寄存器,子线程可以主动获取与该中断事件有关的FPGA的中断状态,并且利用子线程队列(例如,队列408)和共享队列实现了对子线程队列中数据的动态消除,可以准确判断在FPGA处的中断事件是否完成,避免了中断事件的遗漏。同时,子线程只能在中断数据到达主机后才从子线程队列中消除FPGA的ID,这确保了子线程不至于在FPGA数据尚未达到主机之前就开始处理中断事件。
本申请实施例还提供了一种处理多个可编程逻辑器件的中断事件的方法。
图5示出了根据本申请实施例的一种处理多个可编程逻辑器件的中断事件的方法500的流程图。方法500可以由如图1所示的主机100执行。方法500可以包括如下步骤。
在步骤501,主机100运行第一线程(例如,图4的第一线程402)以从所述多个可编程逻辑器件(例如,FPGA 2026a、FPGA 2026b等)的一个(例如,FPGA 2026a)接收中断数据。中断数据可以是FPGA在执行验证任务的过程中根据中断事件中断执行后产生的数据。中断数据可以包括中断类型、可编程逻辑器件的标识等等。
在步骤502,主机100经由所述第一线程在第一队列(例如,队列406)中存储所述中断数据并且唤醒第二线程(例如,第二线程404)。第二线程相应地确定第一队列是否为空。
在步骤503,响应于在所述第一队列不为空,主机100经由所述第二线程读取所述第一队列的队首处的第一中断数据(例如,图4的data[0]),以确定与所述第一中断数据对应的第一可编程逻辑器件(例如,FPGA 2026a)的第一标识和第一中断类型(例如,时钟停止、事件触发、命令触发、探测状态更新)。在获取第一标识和第一中断类型后,第二线程暂时保存它们。可以理解的是,正常情况在步骤503第一队列应当是有数据的。如果没有数据,就说明系统出错。因此,若第一队列为空,则第二线程挂起。
在步骤504,主机100经由所述第二线程确定第二队列(例如,队列408)是否为空,其中所述第二队列与所述第一中断类型对应。如上所述,在一些实施例中,可以包括多个第二列队,多个第二队列分别对应于不同的中断类型。不同的中断类型可以包括第一中断类型、第二中断类型等等。在又一些实施例中,可以由一个多维队列来存储来自不同的中断类型的标识。例如,多维队列的一个维可以对应于一种中断类型。
在步骤505,响应于所述第二队列不为空,主机100从所述第二队列中移除所述第一标识。例如,主机100可以在所述第二队列中查找所述第一标识,并且将找到的第一标识移除。可以理解的是,通常主机100可以在第二队列中找到第一标识。如果在第二队列中无法找到第一标识,则意味着程序出错,第二线程会挂起。
在移除找到的第一标识之后,在步骤506主机100可以经由所述第二线程再次确定所述第二队列是否为空。这是为了判断被移除的第一标识是否为最后一个FPGA的标识。如果再次检查第二队列为空,则被移除的第一标识为最后一个FPGA的标识,并且所有的FPGA的中断数据都已经收到,可以进行下一步处理了。
相应地,在步骤507,响应于所述第二队列为空,主机100可以经由所述第二线程根据所述第一中断数据处理所述多个可编程逻辑器件的中断事件。例如,以run clock为例,当run n rclk执行完成后,FPGA发出clock stop类型的中断数据,主机100接收全部FPGA的中断数据后,可以调用上层函数接口,告知用户run完成,可以执行下一个命令。而在接收和处理中断事件之间,run命令是挂起的。
相对地,响应于所述第二队列不为空,主机100可以回到步骤502重新确定所述第一队列是否为空。具体可以参考图4从444回到422的过程。
响应于所述第一队列为空,主机100可以挂起所述第二线程。
与步骤505对应,在步骤508,响应于所述第二队列为空,主机100可以经由所述第二线程分别获取所述多个可编程逻辑器件的多个标识并将所述多个标识存储到所述第二队列中。在一些实施例中,为了分别获取所述多个可编程逻辑器件的多个标识并将所述多个标识存储到所述第二队列中,主机100可以:经由所述第二线程分别获取所述多个可编程逻辑器件中除了所述第一可编程逻辑器件之外的其他可编程逻辑器件的多个标识并将所述多个标识存储到所述第二队列中。可以理解的是,在另一些实施例中,第二线程也可以将包括第一可编程逻辑器件在内的全部可编程逻辑器件的标识都存储到第二队列中,并且删除其中重复的标识。本领域技术人员可以理解的是,步骤507的目的在于读取全部可编程逻辑器件的状态,并存储到第二队列,各种方式都可以用于实现上述目的,而不限于步骤507的上述具体示例。
完成步骤508后,方法500可以回到步骤506再次确定第二队列是否为空。在一些实施例中,步骤508可以仅查看除了第一可编程逻辑器件之外的其他可编程逻辑器件,此时,存在一定可能是其他可编程逻辑器件已经不存在中断数据了。因此,步骤508无法读到任何数据,也无法向第二队列存储新的数据。这时,就需要再次确认第二队列是否为空,以确定后续的处理方式。
在一些实施例中,方法500还可以进一步包括:确定所述第一线程是否结束;响应于所述第一线程结束,关闭所述第二线程。由于第一线程是主线程而第二线程是子线程,所以当第一线程结束的时候,第二线程需要相应被关闭。
通过采用主线程和子线程的多线程处理中断事件的方式,由主线程通过共享队列(例如,队列406)接收并存储中断数据,避免了多个FPGA的多个中断数据的数据丢失。利用共享队列唤醒子线程的方式又可以使得子线程及时响应并处理中断数据,同时还降低了对主线程的占用,提高了计算资源的利用率。
通过由子线程主动读取FPGA的寄存器,子线程可以主动获取与该中断事件有关的FPGA的中断状态,并且利用子线程队列(例如,队列408)和共享队列实现了对子线程队列中数据的动态消除,可以准确判断在FPGA处的中断事件是否完成,避免了中断事件的遗漏。同时,子线程只能在中断数据到达主机后才从子线程队列中消除FPGA的ID,这确保了子线程不至于在FPGA数据尚未达到主机之前就开始处理中断事件。
本申请实施例还提供一种电子装置。该电子装置可以是图1的主机100。该主机100可以包括存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以使得所述电子装置执行方法500。
本申请实施例还提供一种仿真系统。该仿真系统可以是图3的仿真系统300。该仿真系统可以包括:如上所述的电子装置;以及与所述电子装置通信耦接的多个仿真工具(例如,仿真工具202a和202b),所述多个仿真工具的每一个包括一个或多个可编程逻辑器件(例如,FPGA 2026a和2026b)。
本申请实施例还提供一种非暂态计算机可读存储介质。该非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于在被执行时使该电子控制装置执行方法500。
上述对本申请的一些实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。 在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请的不同方面的许多其它变化,为了简明它们没有在细节中提供。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种处理多个可编程逻辑器件的中断事件的方法,包括:
运行第一线程以从所述多个可编程逻辑器件的一个接收中断数据;
经由所述第一线程在第一队列中存储所述中断数据并且唤醒第二线程;
响应于在所述第一队列不为空,经由所述第二线程读取所述第一队列的队首处的第一中断数据,以确定与所述第一中断数据对应的第一可编程逻辑器件的第一标识和第一中断类型;
经由所述第二线程确定第二队列是否为空,其中所述第二队列与所述第一中断类型对应;
响应于所述第二队列不为空,经由所述第二线程在所述第二队列中查找所述第一标识;
响应于所述第二队列中查找到所述第一标识,经由所述第二线程从所述第二队列中移除所述第一标识;
经由所述第二线程再次确定所述第二队列是否为空;
响应于所述第二队列为空,经由所述第二线程根据所述第一中断数据处理所述多个可编程逻辑器件的中断事件。
2.如权利要求1所述的方法,其中,所述方法进一步包括:
响应于所述第二队列为空,经由所述第二线程分别获取所述多个可编程逻辑器件的多个标识并将所述多个标识存储到所述第二队列中。
3.如权利要求2所述的方法,其中,经由所述第二线程分别获取所述多个可编程逻辑器件的多个标识并将所述多个标识存储到所述第二队列中进一步包括:
经由所述第二线程分别获取所述多个可编程逻辑器件中除了所述第一可编程逻辑器件之外的其他可编程逻辑器件的多个标识并将所述多个标识存储到所述第二队列中。
4.如权利要求1所述的方法,其中,所述方法进一步包括:
响应于所述第二队列不为空,确定所述第一队列是否为空。
5.如权利要求4所述的方法,其中,所述方法进一步包括:
响应于所述第一队列为空,挂起所述第二线程。
6.如权利要求1所述的方法,其中,所述方法进一步包括:
确定所述第一线程是否结束;
响应于所述第一线程结束,关闭所述第二线程。
7.一种电子装置,包括:
存储器,用于存储一组指令;以及
至少一个处理器,配置为执行所述一组指令以使得所述电子装置执行如权利要求1-6的任一种所述的方法。
8.一种仿真系统,包括:
如权利要求7所述的电子装置;以及
与所述电子装置通信耦接的多个仿真工具,所述多个仿真工具的每一个包括一个或多个可编程逻辑器件。
9.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于在被执行时使得所述计算机执行如权利要求1-6的任一种所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310116728.XA CN116401990B (zh) | 2023-01-30 | 2023-01-30 | 处理中断事件的方法、装置、系统和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310116728.XA CN116401990B (zh) | 2023-01-30 | 2023-01-30 | 处理中断事件的方法、装置、系统和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116401990A CN116401990A (zh) | 2023-07-07 |
CN116401990B true CN116401990B (zh) | 2023-10-20 |
Family
ID=87011227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310116728.XA Active CN116401990B (zh) | 2023-01-30 | 2023-01-30 | 处理中断事件的方法、装置、系统和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116401990B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549968A (zh) * | 2001-08-31 | 2004-11-24 | ض� | 在支持并发执行多线程的计算机系统中处理中断的机制 |
CN101918920A (zh) * | 2007-12-12 | 2010-12-15 | 高通股份有限公司 | 用于多线程处理器的共享的中断控制器 |
CN108509260A (zh) * | 2018-01-31 | 2018-09-07 | 深圳市万普拉斯科技有限公司 | 线程识别处理方法、装置、计算机设备和存储介质 |
CN114064227A (zh) * | 2020-08-10 | 2022-02-18 | 阿里巴巴集团控股有限公司 | 应用于微内核的中断处理方法、装置、设备和存储介质 |
CN114595044A (zh) * | 2022-02-22 | 2022-06-07 | 杭州加速科技有限公司 | 一种基于自定义条件队列的多线程处理数据的方法及系统 |
CN115361451A (zh) * | 2022-10-24 | 2022-11-18 | 中国人民解放军国防科技大学 | 一种网络通信并行处理方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050246461A1 (en) * | 2004-04-29 | 2005-11-03 | International Business Machines Corporation | Scheduling threads in a multi-processor computer |
US20190391940A1 (en) * | 2019-06-28 | 2019-12-26 | Intel Corporation | Technologies for interrupt disassociated queuing for multi-queue i/o devices |
-
2023
- 2023-01-30 CN CN202310116728.XA patent/CN116401990B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549968A (zh) * | 2001-08-31 | 2004-11-24 | ض� | 在支持并发执行多线程的计算机系统中处理中断的机制 |
CN101918920A (zh) * | 2007-12-12 | 2010-12-15 | 高通股份有限公司 | 用于多线程处理器的共享的中断控制器 |
CN108509260A (zh) * | 2018-01-31 | 2018-09-07 | 深圳市万普拉斯科技有限公司 | 线程识别处理方法、装置、计算机设备和存储介质 |
CN114064227A (zh) * | 2020-08-10 | 2022-02-18 | 阿里巴巴集团控股有限公司 | 应用于微内核的中断处理方法、装置、设备和存储介质 |
CN114595044A (zh) * | 2022-02-22 | 2022-06-07 | 杭州加速科技有限公司 | 一种基于自定义条件队列的多线程处理数据的方法及系统 |
CN115361451A (zh) * | 2022-10-24 | 2022-11-18 | 中国人民解放军国防科技大学 | 一种网络通信并行处理方法及系统 |
Non-Patent Citations (2)
Title |
---|
Message progression in parallel computing - to thread or not to thread?;Torsten Hoefler等;2008 IEEE International Conference on Cluster Computing;第1-10页 * |
基于COM的机器人可重构软件平台设计与实现;刘江平;中国优秀硕士学位论文全文数据库 信息科技辑;第2016年卷卷(第12期);第I138-52页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116401990A (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107346351B (zh) | 用于基于源代码中定义的硬件要求来设计fpga的方法和系统 | |
US9652410B1 (en) | Automated modification of configuration settings of an integrated circuit | |
KR20210011451A (ko) | 하드웨어 가속을 위한 하드웨어 리소스들의 임베디드 스케줄링 | |
US7526634B1 (en) | Counter-based delay of dependent thread group execution | |
CN111913822B (zh) | 一种基于amp架构的核间通信方式 | |
CN111190842B (zh) | 直接存储器访问、处理器、电子设备和数据搬移方法 | |
JP6655028B2 (ja) | 高位合成におけるシステムアーキテクチャの抽出 | |
CN113947050A (zh) | 用于生成形式验证环境的方法、电子设备及存储介质 | |
CN113868986A (zh) | 端口时延的约束方法、装置、电子设备、存储介质 | |
CN116401990B (zh) | 处理中断事件的方法、装置、系统和存储介质 | |
US10088523B2 (en) | Debug adapter | |
CN116841697B (zh) | 处理mmio请求的方法、电子装置和存储介质 | |
CN115809620B (zh) | 仿真逻辑系统设计的方法、电子设备和存储介质 | |
US9323702B2 (en) | Increasing coverage of delays through arbitration logic | |
CN116880963B (zh) | 用于检测多个硬件仿真工具之间的连接错误的方法 | |
US7024577B2 (en) | Program logic device for synchronous operation with multiple clock signals | |
JP2003015968A (ja) | バスシミュレータ | |
CN116594830B (zh) | 硬件仿真工具、调试方法和存储介质 | |
CN116738906B (zh) | 实现循环电路的方法、电路、装置和存储介质 | |
CN115983192B (zh) | 验证系统及配置验证系统的外设子卡资源的方法 | |
CN116151187B (zh) | 处理触发条件的方法、装置和存储介质 | |
US9721048B1 (en) | Multiprocessing subsystem with FIFO/buffer modes for flexible input/output processing in an emulation system | |
US11112999B2 (en) | Optimizing I/O latency by software stack latency reduction in a cooperative thread processing model | |
Banerjee et al. | Multi-stage parallel processing of design element access tasks in FPGA-based logic emulation systems | |
CN117910398A (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 |