IP Library › Granted Patent US 12,737,166
Granted Patent B2
US 12,737,166 · App. 18/528,357 · Granted Sep 15, 2026

Loop pipelining semantics using structured control flow (SCF) operations with explicitly passed-in asynchronous tokens

Inventors: Erwei Wang (London, GB); Jeffrey Fifield (Longmont, CO); Philip James-Roxby (Longmont, CO); Samuel R. Bayliss (Mountain View, CA); Zachary Blair (San Jose, CA)
Assignee: XILINX, INC.
G06F8/452
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,737,166
App. No.
18/528,357
Granted
Sep 15, 2026
Kind
B2
Abstract

A method includes a method includes receiving, by a compiler of a host of a computing system, input code, generating, by the compiler, pipelined input code by adding first tokens in a loop iteration argument field of a loop in the input code to pipeline the loop, the first tokens configured to sequentialize and serialize loop operations, a quantity of the first tokens based on a quantity of pipeline stages, and providing, by the host, the pipelined input code to a controller of an integrated circuit (IC) of the computing system.

Claims (35)

1 . A method comprising:

receiving, by a compiler of a host of a computing system, input code;

generating, by the compiler, pipelined input code by adding first tokens in a loop iteration argument field of a loop in the input code to pipeline the loop, the first tokens configured to sequentialize and serialize loop operations, wherein a quantity of the first tokens is N+2, wherein N is based on a quantity of pipeline stages; and

providing, by the host, the pipelined input code to a controller of an integrated circuit (IC) of the computing system.

2 . The method of claim 1 , further comprising:

generating, by the compiler, asynchronous input code prior to generating the pipelined input code by adding second tokens to the loop iteration argument field, the second tokens configured to be passed sequentially through operations of the loop to provide asynchronous concurrency; and

generating the pipelined input code by replacing the second tokens with the first tokens in the loop iteration argument field.

3 . The method of claim 2 , wherein generating the asynchronous input code comprises inserting the second tokens in the loop iteration argument field based on loop-carried dependencies in the loop.

4 . The method of claim 1 , wherein generating the pipelined input code comprises modifying a body of the loop so that execution of each loop operation is dependent on receipt of at least one of the first tokens.

5 . The method of claim 1 , wherein generating the pipelined input code comprises unrolling the loop into N memory blocks, wherein N is an integer equal to the quantity of the pipeline stages.

6 . The method of claim 5 , wherein generating the pipelined input code further comprises generating a producer thread and a consumer thread for each of the pipeline stages.

7 . The method of claim 1 , further comprising:

generating, by the compiler, a control and dataflow graph (CDFG) representing the pipelined input code, the CDFG including dependency edges that connect loop operations to one another, and wherein providing, by the host, the pipelined input code to the controller of the IC of the computing system comprises the host providing the CDFG to the controller.

8 . A computer system comprising:

a memory comprising instructions; and

a processor coupled to the memory and configured to execute the instructions, the instructions when executed cause the processor to:

receive input code; and

generate pipelined input code by adding first tokens in a loop iteration argument field of a loop in the input code to pipeline the loop, the first tokens configured to sequentialize and serialize loop operations, wherein a quantity of the first tokens is N+2, and wherein N is based on a quantity of pipeline stages.

9 . The computer system of claim 8 , wherein the processor is further caused to:

generate asynchronous input code prior to generating the pipelined input code by adding second tokens to the loop iteration argument field, the second tokens configured to be passed sequentially through operations of the loop to provide asynchronous concurrency; and

generate the pipelined input code by replacing the second tokens with the first tokens in the loop iteration argument field.

10 . The computer system of claim 9 , wherein generating the asynchronous input code comprises inserting the second tokens in the loop iteration argument field based on loop-carried dependencies in the loop.

11 . The computer system of claim 8 , wherein generating the pipelined input code comprises modifying a body of the loop so that execution of each loop operation is dependent on receipt of at least one of the first tokens.

12 . The computer system of claim 8 , wherein generating the pipelined input code comprises unrolling the loop into N memory blocks, wherein N is an integer equal to the quantity of the pipeline stages.

13 . The computer of claim 12 , wherein generating the pipelined input code further comprises generating a producer thread and a consumer thread for each of the pipeline stages.

14 . An integrated circuit (IC) comprising:

a controller configured to receive pipelined input code from a host including a compiler to:

receive input code; and

generate the pipelined input code by adding first tokens in a loop iteration argument field of a loop in the input code to pipeline the loop, the first tokens configured to sequentialize and serialize loop operations, wherein a quantity of the first tokens is N+2, wherein N is based on a quantity of pipeline stages.

15 . The IC of claim 14 , wherein the compiler is to:

generate asynchronous input code prior to generating the pipelined input code by adding second tokens to the loop iteration argument field, the second tokens configured to be passed sequentially through operations of the loop to provide asynchronous concurrency; and

generate the pipelined input code by replacing the second tokens with the first tokens in the loop iteration argument field.

16 . The IC of claim 15 , wherein generating the asynchronous input code comprises inserting second tokens in the loop iteration argument field based on loop-carried dependencies in the loop.

17 . The IC of claim 14 , wherein generating the pipelined input code comprises modifying a body of the loop so that execution of each loop operation is dependent on receipt of at least one of the first tokens.

18 . The IC of claim 14 , wherein generating the pipelined input code comprises unrolling the loop into N memory blocks, wherein N is an integer equal to the quantity of the pipeline stages.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2024
From: WANG, ERWEI; FIFIELD, JEFFREY; JAMES-ROXBY, PHILIP; BAYLISS, SAMUEL R.; BLAIR, ZACHARY
To: XILINX, INC.
Reel/Frame 066687/0457 →
Continuity (1)
Related Publication 20250181334A1 · Jun 5, 2025
References Cited (19)
US 11758393B1 · Stolbikov · 2023 [cited by examiner]
US 20020120923A1 · Granston · 2002 [cited by examiner]
US 20040019883A1 · Banerjee · 2004 [cited by examiner]
US 20040088666A1 · Poznanovic · 2004 [cited by examiner]
US 20080195847A1 · Wu · 2008 [cited by examiner]
US 20090077545A1 · Silvera · 2009 [cited by examiner]
US 20110088021A1 · Kruglick · 2011 [cited by examiner]
US 20120254875A1 · Marathe · 2012 [cited by examiner]
US 20120311106A1 · Morgan · 2012 [cited by examiner]
US 20140047422A1 · Ravi · 2014 [cited by examiner]
US 20150106596A1 · Vorbach · 2015 [cited by examiner]
US 20150339256A1 · Dupont De Dinechin · 2015 [cited by examiner]
US 20160048380A1 · Nakashima · 2016 [cited by examiner]
US 20200257510A1 · Deodhar · 2020 [cited by examiner]
US 20210224099A1 · Luo · 2021 [cited by examiner]
US 20230153086A1 · Ahmed · 2023 [cited by examiner]
US 20230206046A1 · Ma · 2023 [cited by examiner]
US 20250124204A1 · Kulshreshtha et al. · 2025 [cited by applicant]
US 20250190189A1 · Lucia · 2025 [cited by examiner]