IP Library Granted Patent US 12,468,581
Granted Patent B2
US 12,468,581 · App. 17/385,261 · Granted Nov 11, 2025

Inter-kernel dataflow analysis and deadlock detection

Inventors: Luciano Lavagno (Berkeley, CA); Xin Jin (Beijing, CN); Dan Liu (Beijing, CN); Thomas Bollaert (Portland, OR); Hem C. Neema (San Jose, CA); Chaosheng Shi (Beijing, CN)
Assignee: Xilinx, Inc.
G06F9/524G06F5/06G06F30/20
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,468,581
App. No.
17/385,261
Granted
Nov 11, 2025
Kind
B2
Abstract

Inter-kernel dataflow analysis and deadlock detection includes, for each kernel of a plurality of kernels of a design, including, using computer hardware, a signal for the kernel that is asserted in response to all processes inside the kernel stalling, wherein the plurality of kernels form a strongly connected component. For each kernel of the plurality of kernels, the signal is asserted during operation of the design in response to each process in the kernel stalling. A notification is generated indicating that the strongly connected component is deadlocked in response to each kernel of the strongly connected component asserting the signal.

Claims (52)

1 . A method, comprising:

for each kernel of a plurality of kernels of a design, including, using computer hardware, a signal in the kernel that is asserted in response to all processes inside the kernel stalling;

performing a first simulation of the design using an executable model of the design where a size of each of a plurality of First-In-First-Out (FIFO) channels of the design is permitted to grow according to data carried by each FIFO channel based on reads and writes to the FIFO channel;

for each kernel of the plurality of kernels, asserting the signal during the first simulation in response to each process in the kernel stalling;

detecting a data rate mismatch for a selected FIFO channel of the plurality of FIFO channels during the first simulation in response to detecting a rate of growth in size of the selected FIFO channel that exceeds a minimum predetermined rate; and

generating a notification indicating the data rate mismatch based on the detecting.

2 . The method of claim 1 , further comprising:

determining a maximum depth for one or more other FIFO channels of the plurality of FIFO channels of the design during the first simulation.

3 . The method of claim 2 , further comprising:

generating a hardware description language (HDL) version of the design.

4 . The method of claim 3 , further comprising:

performing second simulation of the HDL version of the design and, during the second simulation, monitoring for a deadlock, wherein depths of the plurality of FIFO channels of the design are set to maximum depths determined during the first simulation; and

outputting a further notification indicating whether a depth of the FIFO channels is adequate based on whether a deadlock is detected during the second simulation.

5 . The method of claim 4 , wherein, in response to detecting the deadlock during the second simulation, the notification indicates that a source of the deadlock is an error by a high-level synthesis tool in generating the HDL version of the design.

6 . The method of claim 1 , further comprising:

for each kernel of the plurality of kernels, generating blocking status data specifying which FIFO channels of an interface of the kernel are blocked during operation;

for a kernel stream graph specifying connections between the plurality of kernels, updating, using computer hardware, the kernel stream graph based on the blocking status data for the plurality of kernels; and

in response to detecting a cycle in the kernel stream graph as updated, generating, using the computer hardware, a notification specifying which of the plurality of FIFO channels are involved in a deadlock.

7 . The method of claim 6 , wherein the updating includes the computer hardware adding edges to the kernel stream graph corresponding to blockages specified by the blocking status data.

8 . The method of claim 6 , wherein each kernel of the plurality of kernels includes a blocking matrix configured to store the blocking status data of the kernel, wherein each blocking matrix specifies a blocking status for each pair of FIFO channels of the kernel bidirectionally for each pair.

9 . A system, comprising:

a processor configured to initiate operations including:

for each kernel of a plurality of kernels of a design, including a signal in the kernel that is asserted in response to all processes inside the kernel stalling;

performing a first simulation of the design using an executable model of the design where a size of each of a plurality of First-In-First-Out (FIFO) channels of the design is permitted to grow according to data carried by each FIFO channel based on reads and writes to the FIFO channel;

for each kernel of the plurality of kernels, asserting the signal during the first simulation in response to each process in the kernel stalling;

detecting a data rate mismatch of a selected FIFO channel of the plurality of FIFO channels during the first simulation in response to detecting a rate of growth in size of the selected FIFO channel that exceeds a minimum predetermined rate; and

generating a notification indicating the data rate mismatch based on the detecting.

10 . The system of claim 9 , wherein the processor is configured to initiate executable operations including:

determining a maximum depth for each of the plurality of FIFO channels of the design during the first simulation;

generating a hardware description language (HDL) version of the design;

performing second simulation of the HDL version of the design and, during the second simulation, monitoring for a deadlock, wherein depths of the plurality of FIFO channels of the design set to the maximum depths determined during the first simulation; and

outputting a further notification indicating whether a depth of the plurality of FIFO channels is adequate based on whether a deadlock is detected during the second simulation.

11 . The system of claim 9 , wherein the processor is configured to initiate executable operations including:

for each kernel of the plurality of kernels, generating blocking status data specifying which FIFO channels of an interface of the kernel are blocked during operation;

for a kernel stream graph specifying connections between the plurality of kernels, updating the kernel stream graph based on the blocking status data for the plurality of kernels; and

in response to detecting a cycle in the kernel stream graph as updated, generating a notification specifying which FIFO channels of the plurality of kernels are involved in a deadlock.

12 . A method, comprising:

for each kernel of a plurality of kernels of a design, including, using computer hardware, a signal in the kernel that is asserted in response to all processes inside the kernel stalling;

performing a first simulation of the design using an executable model of the design where a size of each of a plurality of First-In-First-Out (FIFO) channels of the design is permitted to grow according to data carried by each FIFO channel based on reads and writes to the FIFO channel;

for each kernel of the plurality of kernels, asserting the signal during the first simulation in response to each process in the kernel stalling;

detecting a data rate mismatch for a selected FIFO channel of the plurality of FIFO channels based, at least in part, on whether a size of the selected FIFO channel stabilizes during the first simulation to a particular maximum size;

for each kernel of the plurality of kernels, generating blocking status data specifying which FIFO channels of an interface of the kernel are blocked during operation;

for a kernel stream graph specifying connections between the plurality of kernels, updating, using computer hardware, the kernel stream graph based on the blocking status data for the plurality of kernels; and

in response to detecting a cycle in the kernel stream graph as updated, generating, using the computer hardware, a notification specifying which of the plurality of FIFO channels are involved in a deadlock, wherein each kernel of the plurality of kernels includes a blocking matrix configured to store the blocking status data of the kernel, and wherein each blocking matrix specifies a blocking status for each pair of FIFO channels of the kernel bidirectionally for each pair.

13 . The method of claim 12 , further comprising:

determining a maximum depth for one or more other FIFO channels of the plurality of FIFO channels of the design during the first simulation.

14 . The method of claim 13 , further comprising:

generating a hardware description language (HDL) version of the design.

15 . The method of claim 14 , further comprising:

performing second simulation of the HDL version of the design and, during the second simulation, monitoring for a deadlock, wherein depths of the plurality of FIFO channels of the design are set to maximum depths determined during the first simulation; and

outputting a further notification indicating whether a depth of the FIFO channels is adequate based on whether a deadlock is detected during the second simulation.

16 . The method of claim 15 , wherein, in response to detecting the deadlock during the second simulation, the notification indicates that a source of the deadlock is an error by a high-level synthesis tool in generating the HDL version of the design.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2021
From: LAVAGNO, LUCIANO; BOLLAERT, THOMAS; NEEMA, HEM C.
To: XILINX, INC.
Reel/Frame 057044/0343 →
Continuity (1)
Related Publication 20230032302A1 · Feb 2, 2023
References Cited (42)
US 5648913A · Bennett et al. · 1997 [cited by applicant]
US 5659484A · Bennett et al. · 1997 [cited by applicant]
US 5971595A · Grant et al. · 1999 [cited by applicant]
US 6086629A · McGettigan et al. · 2000 [cited by applicant]
US 6152612A · Liao · 2000 [cited by examiner]
US 6308309B1 · Gan et al. · 2001 [cited by applicant]
US 7073149B2 · Knol et al. · 2006 [cited by applicant]
US 7185309B1 · Kulkarni et al. · 2007 [cited by applicant]
US 7251804B1 · Trimberger · 2007 [cited by applicant]
US 7281093B1 · Kulkarni et al. · 2007 [cited by applicant]
US 7367007B1 · Sundararajan et al. · 2008 [cited by applicant]
US 7500060B1 · Anderson et al. · 2009 [cited by applicant]
US 7574680B1 · Kulkarni et al. · 2009 [cited by applicant]
US 7650248B1 · Baxter · 2010 [cited by applicant]
US 7970977B1 · Li · 2011 [cited by applicant]
US 8006021B1 · Li et al. · 2011 [cited by applicant]
US 8020163B2 · Nollet et al. · 2011 [cited by applicant]
US 8104011B1 · Sundararajan et al. · 2012 [cited by applicant]
US 8154989B1 · Susai · 2012 [cited by applicant]
US 10133549B1 · Do · 2018 [cited by examiner]
US 10445456B1 · Fraisse · 2019 [cited by applicant]
US 10565346B1 · Suthar et al. · 2020 [cited by applicant]
US 10628547B1 · Swarbrick et al. · 2020 [cited by applicant]
US 10628622B1 · Sivaraman · 2020 [cited by examiner]
US 10691580B1 · Kasat · 2020 [cited by examiner]
US 20030167348A1 · Greenblat · 2003 [cited by applicant]
US 20030172189A1 · Greenblat · 2003 [cited by applicant]
US 20050080610A1 · Toma · 2005 [cited by examiner]
US 20150154337A1 · Fang · 2015 [cited by applicant]
US 20160077997A1 · Froese · 2016 [cited by examiner]
US 20170177753A9 · Darbari · 2017 [cited by examiner]
US 20180330467A1 · Park · 2018 [cited by examiner]
Choi, Y. “Performance Debugging Frameworks for FPGA High-Level Synthesis” [Thesis] Computer Science, University of California , Los Angeles [retrieved on Aug. 7, 2024] (Year: 2019). [cited by examiner]
Cheung et al. “Runtime Deadlock Analysis of SystemC Designs” 2006 IEEE International High Level Design and Test Workshop; DOI: 10.1109/HLDVT.2006.319990 [retrieved on Aug. 6, 2024] (Year: 2006). [cited by examiner]
Cho, M. et al., “BoxRouter: A New Global Router Based on Box Expansion and Progressive ILP,” In ACM Proc. of DAC 2006, Jul. 24-28, 2006, pp. 373-378. [cited by applicant]
Wood, R. et al., “FPGA Routing and Routability Estimation via Boolean Satisfiability,” IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 6, No. 2, Jun. 1998, 10 pg. [cited by applicant]
Nam, G. et al., “A New FPGA Detailed Routing Approach via Search-Based Boolean Satisfiability,” IEEE Transactions on Computer-Aided Design of Intergrated Circuits and Systems, vol. 21, No. 6, Jun. 2002, 11 pg. [cited by applicant]
McMurchie, L. et al., “PathFinder: A Negotiation-Based Performance-Driven Router for FPGAs,” In Proc. ACM/IEEE Int'l. Sym. Field Programmable Gate Arrays, Feb. 1995, 7 pg. [cited by applicant]
Nam, G. et al., “A Comparative Study of Two Boolean Formulations of FPGA Detailed Routing Constraints,” IEEE Trans. on Computers, vol. 53, No. 6, Jun. 2004, 9 pg. [cited by applicant]
Fraisse, H. et al., “Boolean Satisfiability-Based Routing and Its Applicaiton to Xilinx UltraScale Clock Network,” In Proc. of 2016 ACM/SIGDA Int'l. Sym. on Fieldl-Programmable Gate Arrays, Feb. 2016, 6 pg. [cited by applicant]
Hu, J. et al., “Sidewinder: A Scalable ILP-Based Router,” In Proc. of 2008 Int'l. Workshop on System Level Interconnect Prediction, Apr. 5-8, 2008, 7 pg. [cited by applicant]
Dally, W.J. et al., “Deadlock-Free Message Routing in Multiprocessor Interconnection Networks,” In IEEE Trans. on Computers, vol. 36, No. 5, May 1987, pp. 547-553. [cited by applicant]