Event processing method, apparatus and verification method
By building TX and RX buckets in the UVM verification platform, doorbell events in the RDMA system are classified, stored, and prioritized, which solves the problems of chaotic and inefficient event management in the RDMA system and improves system performance and verification reliability.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- CHINA TELECOM CLOUD TECH CO LTD
- Filing Date
- 2024-12-05
- Publication Date
- 2026-05-29
AI Technical Summary
The management process of doorbell events in RDMA systems is chaotic and inefficient, making it difficult to ensure the timely processing of high-priority events, resulting in increased system latency and decreased throughput. Furthermore, the verification process is complex and lacks an effective verification mechanism.
In the UVM verification platform, TX buckets and RX buckets are built for each queue pair. Doorbell events are classified, stored and aggregated according to the doorbell signal storage priority strategy, including priority processing of different types of doorbell signal DBs in the TX and RX directions, and classified, stored and scheduled through TX buckets and RX buckets.
This improved the efficiency of doorbell event management and processing, ensured the timely handling of high-priority events, reduced system latency, and enhanced system performance and verification reliability.
Smart Images

Figure CN119668898B_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of chip verification technology, and in particular to a verification platform construction method and a verification method. Background Technology
[0002] RDMA (Remote Direct Memory Access) technology allows bypassing the operating system to directly access the memory of a remote machine, thereby improving data transfer speed and efficiency. RDMA is widely used in high-performance computing, data centers, distributed storage systems, and low-latency network communication. In these applications, a doorbell mechanism is used to notify remote nodes of new data transfer requests or tasks that need to be processed.
[0003] In RDMA systems, there are various types of doorbell events that need to be categorized, stored, and managed. However, traditional management methods suffer from chaotic processing and inefficiency. Summary of the Invention
[0004] Therefore, it is necessary to provide an event processing method, apparatus, and verification method that can improve the efficiency of doorbell event processing in response to the above-mentioned technical problems.
[0005] In one embodiment, this application provides an event handling method applied to a UVM verification platform; the method includes:
[0006] In the reference model of the UVM validation platform, TX buckets and RX buckets are constructed for each queue pair; wherein, the TX bucket includes the buckets in the TX direction of the queue pair, and the RX bucket includes the buckets in the RX direction of the queue pair.
[0007] When the exciter of the UVM verification platform issues a trigger stimulus, the monitor of the UVM verification platform captures the doorbell event generated by the stimulus to generate the corresponding doorbell transaction, and sends the doorbell transaction to the reference model;
[0008] Based on the TX bucket and RX bucket, the reference model classifies and stores the received doorbell events.
[0009] In one embodiment, the doorbell event includes a doorbell signal DB in the TX direction and a doorbell signal DB in the RX direction;
[0010] Based on the TX bucket and RX bucket, the reference model classifies and stores received doorbell events, including:
[0011] Based on the storage priority strategy of the doorbell signal DB, the doorbell signal DB in the TX direction is stored in the TX bucket, or the doorbell signal DB in the RX direction is stored in the RX bucket.
[0012] In one embodiment, the doorbell signal DB in the TX direction includes the retransmission event DB, the TX echo DB, and the SQDB; the storage priority strategy includes the TX direction storage priority strategy.
[0013] The doorbell signal DB in the TX direction is stored in the TX bucket, including:
[0014] Based on the TX direction storage priority strategy, the doorbell signal DB in the TX direction of the doorbell transaction is stored in the TX bucket;
[0015] The TX direction storage priority strategy includes: the storage priority of the retransmission event DB is greater than the storage priority of the TX feedback DB; the storage priority of the TX feedback DB is greater than the storage priority of the SQ DB.
[0016] In one embodiment, storing the doorbell signal DB in the TX direction of the doorbell transaction into the TX bucket includes:
[0017] If there are multiple retransmission event databases in the doorbell transaction, the retransmission event database with the smallest PSN will be selected for storage.
[0018] If there are multiple TX feedback databases in the doorbell transaction, then select one of the TX feedback databases for storage;
[0019] Based on the storage status of the doorbell signal DB in the TX bucket, perform an aggregation operation on the doorbell signal DB in the TX direction.
[0020] In one embodiment, the doorbell signal DB is aggregated based on its storage status in the TX bucket, including:
[0021] If both SQ DB and TX feedback DB exist in the TX bucket, then the SQ DB and TX feedback DB will be aggregated, and the SQ DB will be deleted.
[0022] If the SQ DB, TX echo DB, and retransmission event DB exist simultaneously in the TX bucket, then the SQ DB and retransmission event DB will be aggregated, and the SQ DB and TX echo DB will be deleted.
[0023] In one embodiment, the doorbell signal DB in the RX direction includes the CNP DB, the first RX read response return DB, the repeated RX read response return DB, and the RAN DB; the storage priority strategy includes the RX direction storage priority strategy.
[0024] The doorbell signal DB in the RX direction is stored in the RX bucket, including:
[0025] Based on the RX direction storage priority strategy, the doorbell signal DB in the RX direction of the doorbell transaction is stored in the RX bucket;
[0026] The RX direction storage priority strategy includes: the storage priority of CNP DB is higher than that of the first RX read response return DB and the repeated RX read response return DB, and the storage priority of the first RX read response return DB and the repeated RX read response return DB is higher than that of RAN DB.
[0027] In one embodiment, the RAN DB includes a duplicate message DB, a newly generated message DB, and a RAN_NAK DB;
[0028] Store the doorbell signal DB in the RX direction of the doorbell transaction to the RX bucket, including:
[0029] If multiple CNP DBs exist in the doorbell transaction, then the multiple CNP DBs are cached in sequence;
[0030] If both the first RX read response return DB and the duplicate RX read response return DB exist in the doorbell transaction, then save either the first RX read response return DB or the duplicate RX read response return DB.
[0031] If both duplicate message DB and newly generated message DB exist in a doorbell transaction, the processing priority of duplicate message DB is higher than that of newly generated message DB.
[0032] If the RX bucket receives RAN_NAK DB, then doorbell events with PSNs greater than RAN_NAK DB are discarded.
[0033] In one embodiment, the duplicate message DB includes a duplicate read response DB and a duplicate ACK DB; the newly generated message DB includes the first read response DB and the ACK generation DB.
[0034] Storing the doorbell signal DB in the RX direction of the doorbell transaction to the RX bucket also includes:
[0035] When a doorbell transaction contains both a duplicate read response database (DB) and a duplicate ACK database (DB), the doorbell event with the smaller PSN is stored and processed first.
[0036] If the PSN of the duplicate ACK DB in the doorbell transaction is greater than the PSN of the duplicate read response DB, then the duplicate ACK DB will be stored after the duplicate read response DB has been stored.
[0037] When the storage of repeated read response DB in a doorbell transaction needs to be processed using multiple scheduling cycles, if repeated RX read response return DB exists, the doorbell signal DB in the RX direction with the smaller PSN will be stored first.
[0038] If the first read response DB, the ACK generation DB, and the RAN_NAK DB exist simultaneously in the doorbell transaction, then the storage processing is carried out in ascending order of the PSN of the first read response DB, the ACK generation DB, and the RAN_NAK DB.
[0039] If there is a first read response DB with a smaller PSN before processing the ACK generation DB or RAN_NAK DB, then the storage processing of the first read response DB is performed first, and then the storage processing of the ACK generation DB or RAN_NAK DB is performed.
[0040] If the first read response DB needs to be processed using multiple scheduling cycles, and there are duplicate RX read response return DBs in the QPC cached by the UVM verification platform, then after processing the duplicate RX read response return DBs, process the newly generated message DB.
[0041] Secondly, in one embodiment, this application provides an event processing apparatus applied to a UVM verification platform, the apparatus comprising:
[0042] The bucket building module is used to build TX buckets and RX buckets for each queue pair in the reference model of the UVM validation platform; wherein, the TX bucket includes the buckets in the TX direction of the queue pair, and the RX bucket includes the buckets in the RX direction of the queue pair.
[0043] The doorbell transaction sending module is used to capture the doorbell event generated by the exciter of the UVM verification platform through the monitor of the UVM verification platform to generate the corresponding doorbell transaction and send the doorbell transaction to the reference model when the exciter of the UVM verification platform issues a trigger exciter.
[0044] The storage processing module is used to classify and store received doorbell events based on the TX bucket and RX bucket, using a reference model.
[0045] Thirdly, in one embodiment, this application provides a verification method based on the event handling method described in any embodiment of the first aspect, the verification method comprising:
[0046] When the exciter sends a scheduling excitation to the DUT, the monitor captures the doorbell scheduling event generated by the excitation to generate the corresponding doorbell scheduling transaction and sends the doorbell scheduling transaction to the reference model;
[0047] The reference model determines the scheduling direction of the doorbell scheduling transaction based on the received doorbell scheduling transaction; the scheduling direction includes the TX direction and the RX direction.
[0048] Based on the scheduling direction, the reference model retrieves the corresponding doorbell event from the TX bucket or RX bucket;
[0049] The doorbell events extracted from the reference model and the doorbell events output by the DUT based on the doorbell scheduling stimulus are input into the scoreboard of the UVM verification platform for synchronous comparison to obtain the verification results.
[0050] The aforementioned event processing method, apparatus, and verification method include the following: The event processing method involves constructing TX buckets and RX buckets for each queue pair in the reference model of the UVM verification platform. The TX buckets include buckets along the TX direction of the queue pair, and the RX buckets include buckets along the RX direction of the queue pair. When the exciter of the UVM verification platform issues a trigger stimulus, the monitor of the UVM verification platform captures the doorbell event generated by the stimulus to generate a corresponding doorbell transaction, and sends the doorbell transaction to the reference model. Based on the TX and RX buckets, the reference model classifies and stores the received doorbell events. This application can effectively improve the management and processing efficiency of doorbell events. Attached Figure Description
[0051] To more clearly illustrate the technical solutions in the embodiments of this application or related technologies, the drawings used in the description of the embodiments of this application or related technologies will be briefly introduced below. Obviously, the drawings described below are only some embodiments of this application. For those skilled in the art, other related drawings can be obtained based on these drawings without creative effort.
[0052] Figure 1 This is a diagram illustrating the application environment of an event handling method in one embodiment.
[0053] Figure 2 This is a flowchart illustrating an event handling method in one embodiment;
[0054] Figure 3 This is a schematic diagram illustrating the process of storing and processing doorbell events in one embodiment.
[0055] Figure 4 This is a schematic diagram illustrating the process of storing and processing doorbell events in the TX direction in one embodiment;
[0056] Figure 5 This is a schematic diagram illustrating the process of storing and processing doorbell events in the RX direction in one embodiment;
[0057] Figure 6 This is a schematic diagram illustrating the process of storing and processing doorbell events in the RX direction in another embodiment;
[0058] Figure 7 This is a flowchart illustrating the verification method in one embodiment;
[0059] Figure 8 This is a schematic diagram illustrating the signal transmission for storing and scheduling doorbell events in one embodiment;
[0060] Figure 9 This is a structural block diagram of an event handling device in one embodiment. Detailed Implementation
[0061] To make the objectives, technical solutions, and advantages of this application clearer, the following detailed description is provided in conjunction with the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are merely illustrative and not intended to limit the scope of this application.
[0062] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this application belongs. The terminology used herein is for the purpose of describing embodiments of this application only and is not intended to limit this application.
[0063] It is understood that terms such as "first" and "second" in this application are used only to distinguish similar objects and should not be construed as indicating or implying relative importance or implicitly specifying the number of technical features indicated. It is understood that "at least one" means one or more, and "multiple" means two or more.
[0064] RDMA technology allows bypassing the operating system to directly access the memory of a remote machine, thereby improving data transfer speed and efficiency. RDMA can significantly reduce latency and CPU overhead, thus increasing data transfer speed and efficiency. Therefore, RDMA is widely used in high-performance computing, data centers, distributed storage systems, and low-latency network communication scenarios. In these applications, a doorbell mechanism is used to notify remote nodes of new data transfer requests or tasks that need to be processed.
[0065] However, the following technical problems still exist in using the traditional doorbell mechanism in RDMA systems:
[0066] ① Complex event management: RDMA systems contain various types of doorbell events (such as SQ DB, loopback DB, Timer DB, CNP DB, etc.), requiring categorized storage and management. Traditional management methods may lead to chaotic and inefficient event processing.
[0067] ② Priority scheduling problem: Different types of doorbell events have different priorities. However, traditional technologies cannot ensure that high-priority events (such as Timer DB and CNP DB) can be processed in a timely manner, and traditional technologies cannot guarantee the real-time performance of critical events.
[0068] ③ Difficulty in maintaining order: Some doorbell events need to be processed in order to maintain the consistency and integrity of data transmission. Especially when dealing with duplicate messages and newly generated messages, traditional techniques often cannot effectively guarantee the order, thus compromising data consistency.
[0069] ④ System performance bottleneck: With the increase in data volume and concurrent requests, the processing performance of RDMA systems faces significant pressure. Traditional doorbell management and scheduling methods tend to lead to increased system latency and decreased throughput, making it difficult to meet the needs of high-performance applications.
[0070] ⑤ High verification complexity: Ensuring the correct scheduling and handling of doorbell events requires a complex verification process. Traditional methods lack effective verification mechanisms, making it difficult to detect and correct errors during the scheduling process.
[0071] To facilitate understanding of the technical solution of this invention, the technical features and proper nouns that may appear in the embodiments of this invention will first be explained:
[0072] UVM (Universal Verification Methodology): UVM is a standardized methodology for design verification, widely used in the field of Electronic Design Automation (EDA). UVM provides a standard set of libraries and interfaces for creating reusable verification environments and test platforms, supporting various verification techniques such as functional verification, randomized testing, and coverage-driven verification. Through component-based and modular design, it simplifies the verification process and improves verification efficiency and maintainability.
[0073] Queue Pair (QP): Queue Pair is a fundamental concept in RDMA technology, consisting of two queues: the Send Queue (SQ) and the Receive Queue (RQ). Each QP manages data transmission requests; the Send Queue handles send operations, and the Receive Queue handles receive operations. Through QPs, RDMA enables efficient data transmission and communication management.
[0074] Doorbell: In RDMA systems, a doorbell is a mechanism used to notify remote nodes of new data transmission requests or tasks that need to be processed. Doorbell events are generated by the application, indicating that a new request has entered the send queue. Different types of doorbells (such as SQ DB, loopback DB, Timer DB, CNP DB, etc.) have different priorities and processing rules within the system. The doorbell mechanism efficiently coordinates and manages data transmission requests, ensuring high system performance and low latency.
[0075] PSN (Packet Sequence Number): In an RDMA system, the PSN is a sequence number used for packet ordering and integrity verification. It plays a crucial role in ensuring message order and consistency during data transmission.
[0076] Reference Model: In UVM, the reference model is an idealized module used to simulate the desired system behavior. It provides a gold standard for comparison with the actual output of the Design Under Test (DUT) to verify the correctness of the design.
[0077] The event handling method provided in this application embodiment can be applied to, for example, Figure 1 The application environment shown. Among them, such as... Figure 1 As shown, an embodiment of this application provides a UVM verification platform 10 (i.e., UMV ENV, also known as an EUV verification environment). This UVM verification platform may include a UVM agent and a reference model 16. The UVM agent includes a monitor 12 and a driver 14. Exemplarily, the UVM verification platform 10 can also establish a communication connection with the DUT 20 through the driver 14 to send relevant stimuli to the DUT 20. Further, the monitor 12 is connected to both the driver 14 and the reference model 16. Optionally, the DUT may refer to the RDMA communication chip to be verified.
[0078] In one embodiment, such as Figure 2 As shown, this application provides an event handling method applicable to, for example, Figure 1 The UVM verification platform 10 shown includes the following steps S202 to S206:
[0079] Step S202: Construct TX buckets and RX buckets for each queue pair in the reference model of the UVM validation platform.
[0080] The TX bucket can include buckets corresponding to the TX direction (Transmission Direction) of the queue pair, and the RX bucket can include buckets corresponding to the RX direction (Reception Direction) of the queue pair. In some examples, the TX direction can refer to the request being sent from the DUT's perspective during RDMA communication and waiting for a response from the receiver; the RX direction can refer to the request being received from the DUT's perspective during RDMA communication and preparing to send a response.
[0081] For example, a queue pair (QP) may include a send queue (SQ) and a receive queue (RQ). It can be understood that each queue pair can be used to manage data transmission requests, the send queue SQ can be used to perform send operations, and the receive queue RQ can be used to perform receive operations.
[0082] Optionally, each queue pair has a locally unique QP number (QP Number, QPN). Some status information of the queue pair, such as QPN, QP address, QP length, etc., can be stored in the QP Context (QPC), and a QPC table will be maintained in the UVM verification platform to cache the relevant registered QPC information.
[0083] For example, the TX bucket and the RX bucket for each queue pair can be constructed in the reference model based on the QP Number of each queue pair.
[0084] In some possible implementations, the TX bucket can store doorbell events in the TX direction (Transmission Direction), such as the SQ DB (DB stands for DoorBell), loopback TX_Send DB, and Timer DB. The RX bucket can store doorbell events in the RX direction (Reception Direction), such as the CNP DB (Congestion Notification Packet, CNP), loopback RX_Rd_Rsp_first DB, loopback RX_Rd_Rsp_dupl DB, and RAN DB.
[0085] It is understood that the types of doorbell events that can be stored in the TX bucket and RX bucket are not limited to the implementation methods mentioned in the above embodiments. As long as the doorbell event to be stored and processed belongs to the TX direction or the RX direction, this application does not specifically limit the types of doorbell events that can be stored in the TX bucket and RX bucket.
[0086] Specifically, TX and RX buckets can be created under the QP Number of each queue pair to store doorbell events in the TX and RX directions, respectively:
[0087] Step S204: When the exciter of the UVM verification platform issues a trigger stimulus, the doorbell event generated by the stimulus is captured by the monitor of the UVM verification platform to generate the corresponding doorbell transaction, and the doorbell transaction is sent to the reference model.
[0088] The trigger stimulus can be used to generate corresponding doorbell events for subsequent doorbell event storage processing in the TX and RX directions. For example, the UVM verification platform can generate corresponding doorbell events based on the trigger stimulus, such as SQ DB, loopback TX_Send DB, and Timer DB.
[0089] Optionally, the monitor can pass a doorbell transaction generated based on the captured doorbell event to the reference model via the EXPORT port in the UVM and the IMP port in the reference model. For example, a doorbell transaction can be a data packet used for communication and interaction between the UVM verification environment and the DUT.
[0090] Specifically, when the monitor detects that a trigger stimulus has generated a corresponding doorbell event, it will capture these doorbell events to generate corresponding doorbell transactions and send these doorbell transactions to the reference model.
[0091] Step S206: Based on the TX bucket and RX bucket, the received doorbell events are classified and stored according to the reference model.
[0092] For example, the doorbell events received by the reference model may include doorbell events in the TX direction and / or doorbell events in the RX direction; wherein, doorbell events in the TX direction may include SQ DB, loopback TX_Send DB, and Timer DB, etc.; doorbell events in the RX direction may include CNP DB (Congestion Notification Packet, CNP), loopback RX_Rd_Rsp_first DB, loopback RX_Rd_Rsp_dupl DB, and RAN DB, etc.
[0093] Specifically, when the reference model receives a doorbell event from the monitor, it can store and process the doorbell event according to the TX bucket and RX bucket.
[0094] This application constructs TX buckets and RX buckets for each queue pair in the reference model of the UVM verification platform. When the exciter of the UVM verification platform issues a trigger stimulus, the doorbell event generated by the stimulus can be captured by the monitor of the UVM verification platform to generate the corresponding doorbell transaction, and the doorbell transaction is sent to the reference model. Then, the reference model can classify and store the received doorbell events based on the TX bucket and RX bucket. The embodiments of this application can effectively improve the efficiency of doorbell event processing.
[0095] In one embodiment, the doorbell event includes a doorbell signal DB in the TX direction and a doorbell signal DB in the RX direction;
[0096] Based on the TX bucket and RX bucket, the reference model classifies and stores received doorbell events, including the following steps:
[0097] Based on the storage priority strategy of the doorbell signal DB, the doorbell signal DB in the TX direction is stored in the TX bucket, or the doorbell signal DB in the RX direction is stored in the RX bucket.
[0098] For example, the doorbell signal DB in the TX direction can be a doorbell event in the TX direction; optionally, the doorbell signal DB in the TX direction can include SQ DB, loopback TX_Send DB, and Timer DB, etc. The doorbell signal DB in the TX direction can be a doorbell event in the TX direction; optionally, the doorbell signal DB in the TX direction includes CNP DB, loopback RX_Rd_Rsp_first DB, loopback RX_Rd_Rsp_dupl DB, and RAN DB, etc.
[0099] It is understood that the doorbell signal DB in the TX direction and the doorbell signal DB in the RX direction are not limited to the implementation methods mentioned in the above embodiments, and the specific doorbell event types of the doorbell signal DB in the TX direction and the doorbell signal DB in the RX direction are not specifically limited here.
[0100] For example, the doorbell signal DB in the RX direction may include doorbell events in the RX direction such as CNP DB, first RX read response return DB, repeated RX read response return DB, and RAN DB. Optionally, the first RX read response return DB may include loopback RX_Rd_Rsp_first DB, which can be used to save the first breakpoint doorbell event when the read response is too long and packet switching is required; the repeated RX read response return DB may include loopback RX_Rd_Rsp_dupl DB, which can be used to save doorbell events of subsequent breakpoints of the first breakpoint; the RAN DB may include RAN_Rd_rsp_first DB, RAN_Rd_rsp_dupl DB, RAN_ACK_First DB, etc., used to generate Response responses. It is understood that the specific doorbell event types of the first RX read response return DB, repeated RX read response return DB, and RAN DB are not limited to the implementation methods mentioned in the above embodiments, and other possible implementation methods will not be described in detail here.
[0101] Optionally, if the doorbell signal DB in the TX direction or the doorbell signal DB in the RX direction contains multiple types of doorbell events, the model can be referenced to set corresponding priority strategies for different types of doorbell signal DB in the TX direction or the RX direction, so as to realize storage processing according to the functional characteristics of doorbell events, thereby improving the efficiency of doorbell event storage and scheduling.
[0102] Specifically, the reference model can store the doorbell signal DB in the TX bucket or in the RX bucket, depending on the storage priority strategy of the doorbell signal DB.
[0103] In one embodiment, the doorbell signal DB in the TX direction includes the retransmission event DB, the TX echo DB, and the SQDB; the storage priority strategy includes the TX direction storage priority strategy.
[0104] Storing the doorbell signal DB in the TX direction in the TX bucket includes the following steps:
[0105] Based on the TX direction storage priority strategy, the doorbell signal DB in the TX direction of the doorbell transaction is stored in the TX bucket;
[0106] The TX direction storage priority strategy includes: the storage priority of the retransmission event DB is greater than the storage priority of the TX feedback DB; the storage priority of the TX feedback DB is greater than the storage priority of the SQ DB.
[0107] For example, the doorbell signal DB in the TX direction may include doorbell events in the TX direction such as retransmission event DB, TX echo DB, and SQ DB. Optionally, the retransmission event DB (i.e., Timer DB) may include timeout retransmission DB, RNR (Receiver Not Ready) retransmission DB, and packet loss retransmission DB; the TX echo DB may include loopback TX_Send DB. It is understood that the specific doorbell event types included in the above retransmission event DB and TX echo DB are not limited to the implementation methods mentioned in the above embodiments, and will not be elaborated further in this application embodiment.
[0108] Specifically, when the reference model stores the doorbell signal DB in the TX direction through the TX bucket, the priority of the stored retransmission event DB is greater than the priority of the TX feedback DB, and the priority of the stored TX feedback DB is greater than the priority of the SQ DB.
[0109] In one embodiment, the doorbell signal DB in the TX direction of the doorbell transaction is stored in the TX bucket, including the following steps S302 to S306. Wherein:
[0110] Step S302: If there are multiple retransmission event DBs in the doorbell transaction, the retransmission event DB with the smallest PSN is selected for storage.
[0111] For example, the retransmission event DB may include doorbell signals BD in the TX direction, such as timeout retransmission DB, RNR (Receiver Not Ready) retransmission DB, and packet loss retransmission DB, to characterize message retransmission. In some possible implementations, PSN may be set to increment sequentially based on the order in which data packets are sent, starting from an initial value.
[0112] Optionally, each queue pair can be configured with an entry to cache the retransmission event database, or an overlay storage method can be used for caching the retransmission event database.
[0113] Specifically, when there are multiple retransmission event databases in a doorbell transaction, the TX bucket can select the retransmission event database with the smallest PSN and cache it in the entry of the queue pair.
[0114] Step S304: If there are multiple TX feedback DBs in the doorbell transaction, select one of the TX feedback DBs for storage.
[0115] For example, the TX return DB may include a doorbell signal BD representing the TX direction of the TX direction message return, such as loopback TX_Send DB.
[0116] Optionally, each queue pair can be configured to cache only one TX echo database. In some possible implementations, TX echo databases that meet specific characteristics of the PSN can be selected for storage, and these characteristics can be set according to actual application requirements.
[0117] Specifically, if there are multiple TX feedback databases in a doorbell transaction, one of the TX feedback databases can be selected for storage processing.
[0118] Step S306: Based on the storage status of the doorbell signal DB in the TX bucket, perform an aggregation operation on the doorbell signal DB in the TX direction.
[0119] For example, the storage status of the doorbell signal DB in the TX bucket may include the type and quantity of doorbell signals BD in the TX direction currently cached in the TX bucket. Optionally, the aggregation operation can represent the data fusion of key data information from different types of doorbell events.
[0120] Specifically, based on the specific storage conditions of the doorbell signal DB in the TX bucket, the doorbell signal DB in the TX direction can be aggregated.
[0121] In some exemplary embodiments, an overlay storage approach can be used to cache the SQL database. Optionally, when caching the SQL database, only the SQL database with the latest wqe_index is saved.
[0122] In one embodiment, such as Figure 4 As shown, based on the storage status of the doorbell signal DB in the TX bucket, an aggregation operation is performed on the doorbell signal DB, including the following steps S402 to S404. Among them,
[0123] Step S402: If both SQ DB and TX return DB exist in the TX bucket, then perform data aggregation processing on SQ DB and TX return DB, and delete SQ DB.
[0124] Optionally, data aggregation processing may include writing the WQE (Work Queue Element) counter parameter from the SQ DB to the TX loopback DB. For example, the counter parameter may include the sw_sq_wqe_counter parameter from the SQ DB. In some examples, the SQ DB can be used to record the wqe_index that needs to be processed in the QPC by triggering the SQ DB when an RDMA communication transmit request is generated.
[0125] Specifically, if both SQ DB and TX feedback DB exist in the TX bucket, the SQ DB and TX feedback DB are aggregated, and the corresponding SQ DB is deleted.
[0126] Step S404: If the SQ DB, TX echo DB, and retransmission event DB exist simultaneously in the TX bucket, then perform data aggregation processing on the SQ DB and the retransmission event DB, and delete the SQ DB and the TX echo DB.
[0127] Optionally, the data aggregation process may include writing the WQE count parameter from the SQ DB to the Timer DB.
[0128] Specifically, when the TX bucket contains the SQ DB, TX echo DB, and retransmission event DB, the SQ DB and retransmission event DB are aggregated, and the SQ DB and TX echo DB are deleted.
[0129] In one embodiment, the doorbell signal DB in the RX direction includes the CNP DB, the first RX read response return DB, the repeated RX read response return DB, and the RAN DB; the storage priority strategy includes the RX direction storage priority strategy.
[0130] Storing the doorbell signal DB in the RX direction in the RX bucket includes the following steps:
[0131] Based on the RX direction storage priority strategy, the doorbell signal DB in the RX direction of the doorbell transaction is stored in the RX bucket;
[0132] The storage priority strategy includes the RX direction storage priority strategy, which includes: the storage priority of CNP DB is higher than the storage priority of the first RX read response return DB and the repeated RX read response return DB, and the storage priority of the first RX read response return DB and the repeated RX read response return DB is higher than the storage priority of RAN DB.
[0133] Specifically, when the reference model stores the doorbell signal DB in the RX direction through the RX bucket, the priority of storing the CNP DB is higher than the priority of the first RX read response return DB and the repeated RX read response return DB. The priority of storing the first RX read response return DB and the repeated RX read response return DB is higher than the priority of the RAN DB.
[0134] In one embodiment, the RAN DB includes a duplicate message DB, a newly generated message DB, and a RAN_NAK DB; such as Figure 5 As shown, storing the doorbell signal DB in the RX direction of a doorbell transaction into the RX bucket includes the following steps S502 to S508. Wherein:
[0135] Step S502: If there are multiple CNP DBs in the doorbell transaction, then cache the multiple CNP DBs in sequence.
[0136] For example, the CNP DB in a doorbell transaction can determine the order in which the CNP DBs are sent based on their PSN. In some examples, the CNP DB can be used for flow control.
[0137] Specifically, when there are multiple CNP DBs in a doorbell transaction, the captured CNP DBs can be cached sequentially.
[0138] Step S504: If both the first RX read response return DB and the duplicate RX read response return DB exist in the doorbell transaction, then save either the first RX read response return DB or the duplicate RX read response return DB.
[0139] Optionally, each queue pair can be configured to store only one first RX read response return DB or one duplicate RX read response return DB, so that the first RX read response return DB and the duplicate RX read response return DB will not coexist in the same queue pair. For example, the choice between storing the first RX read response return DB or the duplicate RX read response return DB can be determined by specifying a feature of the PSN.
[0140] Specifically, if both the first RX read response return DB and the duplicate RX read response return DB exist in the received doorbell transaction, either the first RX read response return DB or the duplicate RX read response return DB is saved.
[0141] Step S506: If both duplicate message DB and newly generated message DB exist in the doorbell transaction, the processing priority of duplicate message DB is higher than that of newly generated message DB.
[0142] For example, the duplicate message DB can include doorbell events such as RAN_Rd_rsp_dupl DB and RAN_ACK_dupl DB that require repeated processing over multiple scheduling cycles. For instance, RAN_Rd_rsp_dupl DB can be used to represent the generation of a duplicate read response, and RAN_ACK_dupl DB can be used to represent the generation of a duplicate ACK (Acknowledge character). The newly generated message DB can include doorbell events such as RAN_Rd_rsp_first DB and RAN_ACK_First DB that represent newly generated messages. For instance, RAN_Rd_rsp_first DB can be used to represent a newly generated read response, and RAN_ACK_First DB can be used to represent a newly generated ACK.
[0143] In some examples, a doorbell event of type RAN_ACK can be used to ACK a send request (sendreq) received by the DUT and send a response; a doorbell event of type RAN_Rd_rsp can be used to ACK a read request (read req) received by the DUT and send a response.
[0144] It is understood that the specific doorbell event types of the aforementioned duplicate message DB and newly generated message DB are not limited to the implementation methods mentioned in the above embodiments. This application embodiment does not specifically limit the specific doorbell event types of duplicate message DB and newly generated message DB.
[0145] Specifically, when both duplicate message DB and newly generated message DB exist in the received doorbell transaction, the priority of processing duplicate message DB is higher than that of newly generated message DB.
[0146] Step S508: If the RX bucket receives RAN_NAK DB, then discard doorbell events with PSNs greater than RAN_NAK DB.
[0147] For example, the received doorbell transaction may include a RAN_NAK DB. Optionally, the RAN_NAK DB can be used to represent the generated NAK (Negative Acknowledgment character).
[0148] Specifically, if the RX bucket receives RAN_NAK DB, doorbell events with PSNs greater than RAN_NAK DB are discarded.
[0149] In one embodiment, the duplicate message DB includes a duplicate read response DB and a duplicate ACK DB; the newly generated message DB includes the first read response DB and the ACK generation DB; as shown Figure 6 As shown, storing the doorbell signal DB in the RX direction of a doorbell transaction into the RX bucket also includes the following steps S602 to S612. Wherein:
[0150] Step S602: When there are both duplicate read response DB and duplicate ACK DB in the doorbell transaction, the doorbell event with the smaller PSN is stored and processed first.
[0151] For example, the repeated read response database can be RAN_Rd_rsp_dupl database; the repeated ACK database can be RAN_ACK_dupl database; the first read response database can be RAN_Rd_rsp_first database; and the ACK generation database can be RAN_ACK_First database.
[0152] Specifically, if there are both duplicate read response DB and duplicate ACK DB in the received doorbell transaction, the doorbell event with the smaller PSN will be stored and processed first.
[0153] Step S604: If the PSN of the duplicate ACK DB in the doorbell transaction is greater than the PSN of the duplicate read response DB, then the storage process of the duplicate ACK DB is performed after the duplicate read response DB has been stored.
[0154] For example, the repeated read response DB can be RAN_Rd_rsp_dupl DB; the repeated ACK DB can be RAN_ACK_dupl DB.
[0155] Specifically, if the PSN of the duplicate ACK DB in the received doorbell transaction is greater than the PSN of the duplicate read response DB, then the duplicate ACK DB can be stored and processed after the duplicate read response DB has been stored.
[0156] Step S606: When the storage of repeated read response DB in the doorbell transaction needs to be processed using multiple scheduling cycles, if repeated RX read response return DB exists, the doorbell signal DB in the RX direction with the smaller PSN is stored first.
[0157] For example, the repeated read response DB can be RAN_Rd_rsp_dupl DB; the repeated ACK DB can be RAN_ACK_dupl DB; the first read response DB can be RAN_Rd_rsp_first DB; the ACK generation DB can be RAN_ACK_First DB; and the repeated RX read response feedback DB can be loopback RX_Rd_Rsp_dupl DB.
[0158] Specifically, if the storage of repeated read response DB in a doorbell transaction requires processing over multiple scheduling cycles, then if repeated RX read response return DB exists, the doorbell signal DB in the RX direction with the smaller PSN will be stored and processed first.
[0159] Step S608: If the first read response DB, ACK generation DB, and RAN_NAK DB exist simultaneously in the doorbell transaction, then the storage processing is performed in ascending order of the PSN of the first read response DB, ACK generation DB, and RAN_NAK DB.
[0160] For example, the repeated read response database can be RAN_Rd_rsp_dupl database; the repeated ACK database can be RAN_ACK_dupl database; the first read response database can be RAN_Rd_rsp_first database; and the ACK generation database can be RAN_ACK_First database.
[0161] Specifically, when the received doorbell transaction contains the first read response DB, the ACK generation DB, and the RAN_NAK DB simultaneously, the storage is processed in ascending order of the PSN of the first read response DB, the ACK generation DB, and the RAN_NAK DB.
[0162] In step S610, if there is a first read response DB with a smaller PSN before processing the ACK generation DB or RAN_NAK DB, then the storage processing of the first read response DB is performed first, and then the storage processing of the ACK generation DB or RAN_NAK DB is performed.
[0163] For example, the first read response database can be RAN_Rd_rsp_first database; the ACK generation database can be RAN_ACK_First database.
[0164] Specifically, if there is a first read response DB with a smaller PSN before processing the ACK generation DB or RAN_NAK DB, the storage processing of the first read response DB is performed first, and then the storage processing of the ACK generation DB or RAN_NAK DB is performed.
[0165] Step S612: If the first read response DB needs to be processed using multiple scheduling cycles, and there are duplicate RX read response return DBs in the QPC cached by the UVM verification platform, then after processing the duplicate RX read response return DBs, process the newly generated message DB.
[0166] For example, the repeated read response database can be RAN_Rd_rsp_dupl; the repeated ACK database can be RAN_ACK_dupl; the first read response database can be RAN_Rd_rsp_first; the ACK generation database can be RAN_ACK_First; and the repeated RX read response feedback database can be loopback RX_Rd_Rsp_dupl. In some instances, the QPC can be stored in the RAM of the DPU chip with local RDMA.
[0167] Specifically, if the first read response DB needs to be processed using multiple scheduling cycles and there are duplicate RX read response return DBs in the QPC cached by the UVM verification platform, then the subsequent newly generated message DBs can be processed after the duplicate RX read response return DBs are processed.
[0168] In one embodiment, such as Figure 7 As shown, this application provides a verification method based on the event handling method described in any of the above method embodiments, which can be applied to events such as... Figure 1 Taking the application environment shown as an example, the verification method includes the following steps S702 to S708. Wherein:
[0169] In step S702, when the exciter sends a scheduling excitation to the DUT, the monitor captures the doorbell scheduling event generated by the excitation to generate the corresponding doorbell scheduling transaction and sends the doorbell scheduling transaction to the reference model.
[0170] For example, doorbell scheduling events can correspond to the doorbell event types written in the TX bucket and RX bucket. Optionally, the doorbell scheduling events generated corresponding to the scheduling stimulus can include doorbell events with a scheduling direction of TX, such as SQ DB, loopback TX_Send DB, and Timer DB as described in the above embodiments; doorbell scheduling events can also include doorbell events with a scheduling direction of RX, such as CNP DB, loopback RX_Rd_Rsp_first DB, loopback RX_Rd_Rsp_dupl DB, and RAN DB as described in the above embodiments. It is understood that the above doorbell scheduling events are not limited to the implementation methods mentioned in the above embodiments, as long as they belong to doorbell events in the TX direction or doorbell events in the RX direction. This application does not specifically limit the specific type of doorbell scheduling events.
[0171] Specifically, after the exciter sends a scheduling stimulus to the DUT, the DUT can respond to the stimulus and output the corresponding doorbell event. On the other hand, the monitor of the UVM verification platform can capture the doorbell scheduling event generated by the stimulus to generate the corresponding doorbell scheduling transaction and send the doorbell scheduling transaction to the reference model of the UVM verification platform.
[0172] Step S704: The reference model determines the scheduling direction of the doorbell scheduling transaction based on the received doorbell scheduling transaction; the scheduling direction includes the TX direction and the RX direction.
[0173] For example, a doorbell scheduling transaction may include a doorbell scheduling transaction with a scheduling direction of TX and a doorbell scheduling transaction with a scheduling direction of RX.
[0174] Specifically, the reference model of the UVM verification platform can determine whether the received doorbell scheduling transaction belongs to the TX direction or the RX direction, in order to perform subsequent scheduling operations.
[0175] Step S706: Based on the scheduling direction, the reference model retrieves the corresponding doorbell event from the TX bucket or RX bucket.
[0176] For example, the TX bucket can cache doorbell signal DB (i.e., doorbell events in the TX direction), and the RX bucket can cache doorbell signal DB (i.e., doorbell events in the RX direction).
[0177] Specifically, the reference model of the UVM verification platform can retrieve the corresponding doorbell event from the TX bucket or RX bucket based on the scheduling direction of the doorbell scheduling transaction.
[0178] Step S708: The doorbell events extracted from the reference model and the doorbell events output by the DUT based on the doorbell scheduling stimulus are input into the scoring board of the UVM verification platform for synchronous comparison to obtain the verification results.
[0179] For example, the system performance of the tested design device (DUT) can be determined based on the verification results obtained from synchronous comparison. Optionally, the system performance of the DUT may include the processing performance of the DUT's RDMA system.
[0180] Specifically, the doorbell events output by the reference model of the UVM verification platform and the doorbell events output by the DUT based on the doorbell scheduling stimulus are input into the scoreboard of the UVM verification platform for synchronous comparison, so as to obtain the required verification results.
[0181] By implementing this application, the efficiency of doorbell event management in RDMA systems can be improved. This application also significantly improves system processing speed and throughput by parallel scheduling of doorbells in the RX and TX directions. The priority scheduling mechanism of this application ensures that critical doorbell events (such as Timer DB, CNP DB, etc.) are processed in a timely manner, thereby improving the system's real-time performance and reliability. For doorbells requiring order-preserving processing, this application determines the processing order according to the PSN size, ensuring the orderliness and consistency of data processing in complex network communication scenarios. Furthermore, the classification storage and scheduling mechanism of this application is highly flexible, adaptable to different types and numbers of doorbell events, and easy to expand and maintain. This application can also capture scheduling events through the monitor component in the UVM agent and compare them with the corresponding output of the DUT, thereby ensuring the accuracy and reliability of the scheduling process.
[0182] To make the purpose, technical solution, and advantages of this application clearer, the following is combined with Figure 8 The present application will be further described in detail below with reference to exemplary embodiments. It should be understood that the specific embodiments described herein are merely illustrative and not intended to limit the scope of the application. The specific implementation process is as follows:
[0183] Step 1: The Monitor detects a doorbell write event (corresponding to...) Figure 8 In the `catch write req` method, the following doorbell events are written to the reference model: doorbell events in the RX direction include CNP DB, loopback RX_Rd_Rsp_first DB, RAN_Rd_rsp_first DB, RAN_ACK_First DB, and RAN_NAK DB; doorbell events in the TX direction include Timer DB, loopback TX_Send DB, and SQ DB.
[0184] Step 2: The RX bucket (RX doorbell bucket) processes the stored RX databases in the RX direction: It prioritizes the CNP database, moving it to the top of the RX bucket; then it processes the loopback RX_Rd_Rsp_first database, moving it below the CNP database; it processes the RAN_Rd_rsp_first and RAN_ACK_First databases in PSN order, stacking the doorbells from top to bottom of the bucket in ascending order of PSN; if a NAK database is detected in the bucket, it deletes all doorbell events in the bucket with PSNs greater than the corresponding PSN of the NAK database.
[0185] Step 3: Processing TX-direction store tx databases in the TX bucket: Aggregate the processing of SQ DB and loopback TX_Send DB to merge sw_sq_wqe_counter; if Timer DB exists, only process Timer DB and merge sw_sq_wqe_counter of SQ DB; process Timer DB and aggregate the processing of Timer DB and loopback TX_Send DB; if multiple Timer DB events exist, take the smallest PSN value for processing, and within the scheduling cycle of a doorbell transaction, stack the doorbells from top to bottom of the bucket in ascending order of PSN.
[0186] Step 4: The Monitor detects the doorbell readout event (corresponding to...) Figure 8 (catch read req): If the reference model receives a read request in the TX direction (read tx req), the top-level doorbell of the TX bucket is output to the scorboard and compared with the actual doorbell output of the DUT. If the reference model receives a read request in the RX direction (read rx req), the top-level doorbell of the RX bucket is output to the scorboard and compared with the actual output of the DUT to obtain the required verification result. The top-level doorbell outputs of the TX bucket and RX bucket correspond to each other. Figure 8 The expected doorbell output is shown. Additionally... Figure 8 The imp_function shown can be used to parse received doorbell transactions or doorbell scheduling transactions to obtain the corresponding doorbell events, such as store tx db, read db, read rx db, and store rx db.
[0187] It is understood that steps 1 to 4 above are only one exemplary execution process. This application obviously has other implementation methods in actual application scenarios, which will not be elaborated here.
[0188] It should be understood that although the steps in the flowcharts of the embodiments described above are shown sequentially according to the arrows, these steps are not necessarily executed in the order indicated by the arrows. Unless explicitly stated herein, there is no strict order restriction on the execution of these steps, and they can be executed in other orders. Moreover, at least some steps in the flowcharts of the embodiments described above may include multiple steps or multiple stages. These steps or stages are not necessarily completed at the same time, but can be executed at different times. The execution order of these steps or stages is not necessarily sequential, but can be performed alternately or in turn with other steps or at least some of the steps or stages of other steps.
[0189] Based on the same inventive concept, this application also provides an event processing apparatus for implementing the event processing method described above. The solution provided by this apparatus is similar to the implementation described in the above method; therefore, the specific limitations in one or more event processing apparatus embodiments provided below can be found in the limitations of the event processing method described above, and will not be repeated here.
[0190] In one embodiment, such as Figure 9 As shown, this application provides an event processing apparatus 900 applied to a UVM verification platform. The apparatus 900 includes:
[0191] Bucket building module 902 is used to build TX buckets and RX buckets for each queue pair in the reference model of the UVM validation platform; wherein, the TX bucket includes buckets in the TX direction of the queue pair, and the RX bucket includes buckets in the RX direction of the queue pair.
[0192] The doorbell transaction sending module 904 is used to capture the doorbell event generated by the exciter of the UVM verification platform through the monitor of the UVM verification platform to generate the corresponding doorbell transaction and send the doorbell transaction to the reference model when the exciter of the UVM verification platform issues a trigger exciter.
[0193] The storage processing module 906 is used to classify and store received doorbell events based on the TX bucket and RX bucket, using a reference model.
[0194] In one embodiment, the doorbell event includes a doorbell signal DB in the TX direction and a doorbell signal DB in the RX direction;
[0195] The storage processing module 906 is also used to: store the doorbell signal DB in the TX direction in the TX bucket, or store the doorbell signal DB in the RX direction in the RX bucket, according to the storage priority strategy of the doorbell signal DB.
[0196] In one embodiment, the doorbell signal DB in the TX direction includes the retransmission event DB, the TX echo DB, and the SQDB; the storage priority strategy includes the TX direction storage priority strategy.
[0197] The storage processing module 906 is also used to: store the doorbell signal DB in the TX direction of the doorbell transaction into the TX bucket according to the TX direction storage priority strategy;
[0198] The TX direction storage priority strategy includes: the storage priority of the retransmission event DB is greater than the storage priority of the TX feedback DB; the storage priority of the TX feedback DB is greater than the storage priority of the SQ DB.
[0199] In one embodiment, the storage processing module 906 is further configured to:
[0200] If there are multiple retransmission event databases in the doorbell transaction, the retransmission event database with the smallest PSN will be selected for storage.
[0201] If there are multiple TX feedback databases in the doorbell transaction, then select one of the TX feedback databases for storage;
[0202] Based on the storage status of the doorbell signal DB in the TX bucket, perform an aggregation operation on the doorbell signal DB in the TX direction.
[0203] In one embodiment, the storage processing module 906 is further configured to:
[0204] If both SQ DB and TX feedback DB exist in the TX bucket, then the SQ DB and TX feedback DB will be aggregated, and the SQ DB will be deleted.
[0205] If the SQ DB, TX echo DB, and retransmission event DB exist simultaneously in the TX bucket, then the SQ DB and retransmission event DB will be aggregated, and the SQ DB and TX echo DB will be deleted.
[0206] In one embodiment, the doorbell signal DB in the RX direction includes the CNP DB, the first RX read response return DB, the repeated RX read response return DB, and the RAN DB; the storage priority strategy includes the RX direction storage priority strategy.
[0207] The storage processing module 906 is also used to: store the doorbell signal DB in the RX direction of the doorbell transaction into the RX bucket according to the RX direction storage priority strategy;
[0208] The RX direction storage priority strategy includes: the storage priority of CNP DB is higher than that of the first RX read response return DB and the repeated RX read response return DB, and the storage priority of the first RX read response return DB and the repeated RX read response return DB is higher than that of RAN DB.
[0209] In one embodiment, the RAN DB includes a duplicate message DB, a newly generated message DB, and a RAN_NAK DB;
[0210] Storage processing module 906 is also used for:
[0211] If multiple CNP DBs exist in the doorbell transaction, then the multiple CNP DBs are cached in sequence;
[0212] If both the first RX read response return DB and the duplicate RX read response return DB exist in the doorbell transaction, then save either the first RX read response return DB or the duplicate RX read response return DB.
[0213] If both duplicate message DB and newly generated message DB exist in a doorbell transaction, the processing priority of duplicate message DB is higher than that of newly generated message DB.
[0214] If the RX bucket receives RAN_NAK DB, then doorbell events with PSNs greater than RAN_NAK DB are discarded.
[0215] In one embodiment, the duplicate message DB includes a duplicate read response DB and a duplicate ACK DB; the newly generated message DB includes a first read response DB and an ACK generation DB; the storage processing module 906 is further configured to:
[0216] When a doorbell transaction contains both a duplicate read response database (DB) and a duplicate ACK database (DB), the doorbell event with the smaller PSN is stored and processed first.
[0217] If the PSN of the duplicate ACK DB in the doorbell transaction is greater than the PSN of the duplicate read response DB, then the duplicate ACK DB will be stored after the duplicate read response DB has been stored.
[0218] When the storage of repeated read response DB in a doorbell transaction needs to be processed using multiple scheduling cycles, if repeated RX read response return DB exists, the doorbell signal DB in the RX direction with the smaller PSN will be stored first.
[0219] If the first read response DB, the ACK generation DB, and the RAN_NAK DB exist simultaneously in the doorbell transaction, then the storage processing is carried out in ascending order of the PSN of the first read response DB, the ACK generation DB, and the RAN_NAK DB.
[0220] If there is a first read response DB with a smaller PSN before processing the ACK generation DB or RAN_NAK DB, then the storage processing of the first read response DB is performed first, and then the storage processing of the ACK generation DB or RAN_NAK DB is performed.
[0221] If the first read response DB needs to be processed using multiple scheduling cycles, and there are duplicate RX read response return DBs in the QPC cached by the UVM verification platform, then after processing the duplicate RX read response return DBs, process the newly generated message DB.
[0222] Each module in the aforementioned event processing device 900 can be implemented entirely or partially through software, hardware, or a combination thereof. These modules can be embedded in or independent of the processor in a computer device in hardware form, or stored in the memory of a computer device in software form, so that the processor can call and execute the operations corresponding to each module.
[0223] In one embodiment, a computer device is also provided, including a memory and a processor, wherein the memory stores a computer program, and the processor executes the computer program to implement the steps in the above method embodiments.
[0224] In one embodiment, a computer-readable storage medium is provided having a computer program stored thereon that, when executed by a processor, implements the steps in the above method embodiments.
[0225] In one embodiment, a computer program product is provided, including a computer program that, when executed by a processor, implements the steps in the above method embodiments.
[0226] Those skilled in the art will understand that all or part of the processes in the methods of the above embodiments can be implemented by a computer program instructing related hardware. The computer program can be stored in a non-volatile computer-readable storage medium, and when executed, it can include the processes of the embodiments of the above methods. Any references to memory, databases, or other media used in the embodiments provided in this application can include at least one of non-volatile memory and volatile memory. Non-volatile memory can include read-only memory (ROM), magnetic tape, floppy disk, flash memory, optical memory, high-density embedded non-volatile memory, resistive random access memory (ReRAM), magnetic random access memory (MRAM), ferroelectric random access memory (FRAM), phase change memory (PCM), graphene memory, etc. Volatile memory can include random access memory (RAM) or external cache memory, etc. By way of illustration and not limitation, RAM can take many forms, such as Static Random Access Memory (SRAM) or Dynamic Random Access Memory (DRAM). The databases involved in the embodiments provided in this application may include at least one type of relational database and non-relational database. Non-relational databases may include, but are not limited to, blockchain-based distributed databases. The processors involved in the embodiments provided in this application may be general-purpose processors, central processing units, graphics processing units, digital signal processors, programmable logic devices, quantum computing-based data processing logic devices, artificial intelligence (AI) processors, etc., and are not limited to these.
[0227] The technical features of the above embodiments can be combined in any way. For the sake of brevity, not all possible combinations of the technical features in the above embodiments are described. However, as long as there is no contradiction in the combination of these technical features, they should be considered to be within the scope of this application.
[0228] The embodiments described above are merely illustrative of several implementation methods of this application, and while the descriptions are specific and detailed, they should not be construed as limiting the scope of this patent application. It should be noted that those skilled in the art can make various modifications and improvements without departing from the concept of this application, and these all fall within the protection scope of this application. Therefore, the protection scope of this application should be determined by the appended claims.
Claims
1. An event handling method, characterized in that, Applied to a UVM validation platform; the method includes: In the reference model of the UVM verification platform, a TX bucket and an RX bucket are constructed for each queue pair; wherein, the TX bucket includes the bucket in the TX direction of the queue pair, and the RX bucket includes the bucket in the RX direction of the queue pair; When the exciter of the UVM verification platform issues a trigger stimulus, the monitor of the UVM verification platform captures the doorbell event generated by the stimulus to generate the corresponding doorbell transaction, and sends the doorbell transaction to the reference model; Based on the TX bucket and the RX bucket, the reference model classifies and stores the received doorbell events; The categorized storage refers to the TX bucket storing the doorbell events in the TX direction and the RX bucket storing the doorbell events in the RX direction.
2. The method according to claim 1, characterized in that, The doorbell event includes the doorbell signal DB in the TX direction and the doorbell signal DB in the RX direction; Based on the TX bucket and the RX bucket, the reference model classifies and stores the received doorbell events, including: According to the storage priority strategy of the doorbell signal DB, the doorbell signal DB in the TX direction is stored in the TX bucket, or the doorbell signal DB in the RX direction is stored in the RX bucket.
3. The method according to claim 2, characterized in that, The doorbell signal DB in the TX direction includes retransmission event DB, TX feedback DB, and SQ DB; The storage priority strategy includes a TX-direction storage priority strategy; The storage of the doorbell signal DB in the TX direction in the TX bucket includes: According to the TX direction storage priority strategy, the doorbell signal DB in the TX direction of the doorbell transaction is stored in the TX bucket; The TX direction storage priority strategy includes: the storage priority of the retransmission event DB is greater than the storage priority of the TX feedback DB; the storage priority of the TX feedback DB is greater than the storage priority of the SQ DB.
4. The method according to claim 3, characterized in that, The step of storing the doorbell signal DB in the TX direction of the doorbell transaction into the TX bucket includes: If there are multiple retransmission event databases in the doorbell transaction, the retransmission event database with the smallest PSN is selected for storage. If there are multiple TX feedback databases in the doorbell transaction, then one of the TX feedback databases is selected for storage; Based on the storage status of the doorbell signal DB in the TX bucket, an aggregation operation is performed on the doorbell signal DB in the TX direction.
5. The method according to claim 4, characterized in that, The step of aggregating the doorbell signal DB according to the storage status of the doorbell signal DB in the TX bucket includes: If both the SQ DB and the TX return DB exist in the TX bucket, then the SQ DB and the TX return DB are aggregated, and the SQ DB is deleted. If the SQ DB, the TX echo DB, and the retransmission event DB all exist in the TX bucket, then the SQ DB and the retransmission event DB are aggregated, and the SQ DB and the TX echo DB are deleted.
6. The method according to claim 2, characterized in that, The doorbell signal DB in the RX direction includes the CNP DB, the first RX read response return DB, the repeated RX read response return DB, and the RAN DB; the storage priority strategy includes the RX direction storage priority strategy; The RAN DB includes doorbell events for generating Response responses; The storage of the doorbell signal DB in the RX direction in the RX bucket includes: According to the RX direction storage priority strategy, the doorbell signal DB in the RX direction of the doorbell transaction is stored in the RX bucket; The RX direction storage priority strategy includes: the storage priority of the CNP DB is higher than the storage priority of the first RX read response return DB and the repeated RX read response return DB, and the storage priority of the first RX read response return DB and the repeated RX read response return DB is higher than the storage priority of the RAN DB.
7. The method according to claim 6, characterized in that, The RAN DB includes a duplicate message DB, a newly generated message DB, and a RAN_NAK DB; the RAN_NAK DB is used to generate NAKs. The step of storing the doorbell signal DB in the RX direction of the doorbell transaction into the RX bucket includes: If multiple CNP DBs exist in the doorbell transaction, then multiple CNP DBs are cached sequentially; If both the first RX read response return DB and the duplicate RX read response return DB exist in the doorbell transaction, then save one of the first RX read response return DB or one of the duplicate RX read response return DB. If both the duplicate message DB and the newly generated message DB exist in the doorbell transaction, the processing priority of the duplicate message DB is higher than that of the newly generated message DB. If the RX bucket receives the RAN_NAK DB, then discard the doorbell event with a PSN greater than the RAN_NAK DB.
8. The method according to claim 7, characterized in that, The duplicate message database includes the duplicate read response database and the duplicate ACK database; the newly generated message database includes the first read response database and the ACK generation database. The step of storing the doorbell signal DB in the RX direction of the doorbell transaction into the RX bucket further includes: If both the duplicate read response DB and the duplicate ACK DB exist in the doorbell transaction, the doorbell event with the smaller PSN will be stored and processed first. If the PSN of the duplicate ACK DB in the doorbell transaction is greater than the PSN of the duplicate read response DB, then the storage process of the duplicate ACK DB will be performed after the duplicate read response DB has been stored. When the storage of the repeated read response DB in the doorbell transaction needs to be processed using multiple scheduling cycles, in the case that the repeated RX read response feedback DB exists, the doorbell signal DB in the RX direction with the smaller PSN is stored first. If the first read response DB, the ACK generation DB, and the RAN_NAK DB all exist simultaneously in the doorbell transaction, then the storage processing is performed in ascending order of the PSN of the first read response DB, the ACK generation DB, and the RAN_NAK DB; If there is a first read response DB with a smaller PSN before processing the ACK generation DB or the RAN_NAK DB, then the storage processing of the first read response DB is performed first, and then the storage processing of the ACK generation DB or the RAN_NAK DB is performed. If the first read response DB needs to be processed using multiple scheduling cycles, and the duplicate RX read response return DB exists in the QPC cached by the UVM verification platform, then the newly generated message DB is processed after the duplicate RX read response return DB has been processed.
9. An event processing device, characterized in that, The device, used in a UVM validation platform, includes: A bucket building module is used to build TX buckets and RX buckets for each queue pair in the reference model of the UVM verification platform; wherein, the TX bucket includes buckets in the TX direction of the queue pair, and the RX bucket includes buckets in the RX direction of the queue pair; The doorbell transaction sending module is used to capture the doorbell event generated by the exciter of the UVM verification platform through the monitor of the UVM verification platform to generate the corresponding doorbell transaction, and send the doorbell transaction to the reference model when the exciter of the UVM verification platform issues a trigger exciter. The storage processing module is used to classify and store the received doorbell events based on the TX bucket and the RX bucket, and the reference model. The categorized storage refers to the TX bucket storing the doorbell events in the TX direction and the RX bucket storing the doorbell events in the RX direction.
10. A verification method based on the event handling method according to any one of claims 1 to 8, characterized in that, The verification method includes: When the exciter sends a scheduling excitation to the DUT, the monitor captures the doorbell scheduling event generated by the excitation to generate the corresponding doorbell scheduling transaction, and sends the doorbell scheduling transaction to the reference model; The reference model determines the scheduling direction of the doorbell scheduling transaction based on the received doorbell scheduling transaction; the scheduling direction includes the TX direction and the RX direction. According to the scheduling direction, the reference model retrieves the corresponding doorbell event from the TX bucket or the RX bucket; The doorbell events extracted from the reference model and the doorbell events output by the DUT based on the doorbell scheduling stimulus are input into the scoring board of the UVM verification platform for synchronous comparison to obtain the verification results.