IP Library Granted Patent US 11,616,498
Granted Patent B2
US 11,616,498 · App. 17/575,862 · Granted Mar 28, 2023

Software-defined pulse orchestration platform

Inventors: Yonatan Cohen (Tel Aviv, IL); Nissim Ofek (Tel Aviv, IL); Itamar Sivan (Tel Aviv, IL); Tal Shani (Tel Aviv, IL)
H03K3/38G06N3/04G06N10/00H03K19/195
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 11,616,498
App. No.
17/575,862
Granted
Mar 28, 2023
Kind
B2
Abstract

A system comprises pulse program compiler circuitry operable to analyze a pulse program that includes a pulse operation statement, and to generate, based on the pulse program, machine code that, if loaded into a pulse generation and measurement circuit, configures the pulse generation and measurement circuit to generate one or more pulses and/or process one or more received pulses. The pulse operation statement may specify a first pulse to be generated, and a target of the first pulse. The pulse operation statement may specify parameters to be used for processing of a return signal resulting from transmission of the first pulse. The pulse operation statement may specify an expression to be used for processing of the first pulse by the pulse generation and measurement circuit before the pulse generation and measurement circuit sends the first pulse to the target.

Claims (115)

1. A method comprising:

receiving, by a pulse program compiler, a pulse program comprising a pulse operation statement that specifies a first pulse to be generated, a characteristic of the first pulse, and a target of the first pulse;

generating, by the pulse program compiler, machine code according to the pulse program;

loading the machine code into a pulse generation and measurement circuit; and

configuring the pulse generation and measurement circuit, according to the machine code, to generate the first pulse and send the first pulse to the target.

2. The method of claim 1 , wherein:

the pulse program comprises a first declaration statement that defines a first variable; and

the pulse operation statement references the first variable.

3. The method of claim 2 , wherein the first variable is part of an expression that determines the characteristic of the first pulse.

4. The method of claim 1 , wherein the characteristic is an amplitude of the first pulse.

5. The method of claim 1 , wherein the characteristic is a duration of the first pulse.

6. The method of claim 3 , wherein:

configuring the pulse generation and measurement circuit comprises determining a value to be assigned to the first variable during runtime of the machine code.

7. The method of claim 1 , wherein:

the pulse operation statement does not specify an intermediate frequency of the first pulse; and

generating the machine code comprises setting the intermediate frequency of the first pulse according to the target.

8. The method of claim 1 , wherein:

the pulse operation statement specifies parameters to be used for processing a return signal resulting from transmission of the first pulse; and

the method comprises configuring the pulse generation and measurement circuit to process of the return signal.

9. The method of claim 8 , wherein:

processing the return signal comprises an integration of the return signal; and

the parameters specify integration weights to use for the integration.

10. The method of claim 9 , wherein the integration weights are specified as one or more vectors.

11. The method of claim 8 , wherein the parameters comprise parameters of a neural network to be used for processing the return signal.

12. The method of claim 8 , wherein:

processing the return signal comprises an integration of the return signal; and

the parameters specify time parameters to use for the integration.

13. The method of claim 8 , wherein:

processing the return signal comprises a demodulation of the return signal; and

the parameters specify a frequency to use for the demodulation.

14. The method of claim 8 , wherein:

the return signal comprises a series of pulses; and

processing the return signal comprises counting a number of pulses in a given time window.

15. The method of claim 8 , wherein:

the return signal comprises a series of pulses; and

processing the return signal comprises identifying an arrival time of each pulse relative to a beginning of a specified time window.

16. The method of claim 1 , wherein:

the pulse program comprises a first declaration statement that defines a first variable;

the pulse operation statement references the first variable;

the pulse operation statement specifies that a result of processing a return signal resulting from transmission of the first pulse is to be associated with the first variable and stored to memory; and

the method comprises associating the result with the first variable and storing the result to memory.

17. The method of claim 1 , wherein:

the pulse operation statement specifies an expression to be used for processing the first pulse by the pulse generation and measurement circuit before the pulse generation and measurement circuit sends the first pulse to the target; and

the method comprises processing the first pulse before sending the first pulse to the target.

18. The method of claim 17 , wherein:

the pulse program comprises a first declaration statement that defines a first variable;

the expression references the first variable; and

the method comprises determining a value of the first variable during runtime of the machine code.

19. The method of claim 18 , wherein the method comprises:

processing a return signal; and

determining a value of the first variable according to the processing of the return signal.

20. The method of claim 19 , wherein the value of the first variable is a fixed point or floating point number.

21. The method of claim 1 , wherein:

the pulse operation statement specifies a condition expression that:

is to be evaluated during runtime by the pulse generation and measurement circuit, and

must be evaluated to a determined value before the first pulse is sent to the target; and

the method comprises:

evaluating the condition expression during runtime of the machine code, and

sending the first pulse to the target only when the condition expression evaluates to the determined value.

22. The method of claim 1 , wherein:

the pulse program comprises a phase alteration statement that specifies the target and an expression for an angle for altering a phase of a local oscillator associated with the target; and

the method comprises:

evaluating the expression during runtime of the machine code, and

altering the phase of the local oscillator according to a result of the evaluation of the expression.

23. The method of claim 1 , wherein:

the pulse program comprises an update frequency statement that specifies the target and an expression for the frequency of a local oscillator associated with the target; and

the method comprises:

evaluating the expression during runtime of the machine code, and

setting the frequency of the local oscillator according to a result of the evaluation of the expression.

24. The method of claim 1 , wherein:

the pulse program comprises a flow control statement; and

the method comprises waiting for a signal before resuming execution of the pulse program.

25. The method of claim 1 , wherein:

the pulse program comprises a conditional statement that specifies a condition expression and one or more conditioned statements; and

the method comprises:

evaluating the condition expression; and

executing instructions corresponding to the one or more conditioned statements only if the condition expression evaluates to a determined value.

26. The method of claim 25 , wherein:

the conditioned expression comprises a variable; and

the method comprises:

processing a return signal, and

determining a value of the variable according to the processing of the return signal.

27. The method of claim 26 , wherein the value of the variable is a fixed point or floating point number.

28. The method of claim 1 , wherein:

the pulse program comprises a conditional statement that specifies a condition expression, a first conditioned statement, and a second conditioned statement; and

the method comprises:

evaluating the condition expression; and

executing instructions corresponding to the first conditioned statements only if the condition expression evaluates to a first value, and

executing instructions corresponding to the second conditioned statement only if the condition expression evaluates to a second value.

29. The method of claim 28 , wherein the first conditioned statement is a second pulse operation statement and the second conditioned statement is a third pulse operation statement.

30. The method of claim 1 , wherein the method comprises:

parsing a machine specification that comprises a definition of the first pulse and a definition of the target; and

generating the machine code according to the machine specification.

31. The method of claim 1 , wherein:

the pulse operation statement specifies a break condition; and

the method comprises:

evaluating the break condition, and

stopping generation of the first pulse when the break condition evaluates to a determined value.

32. The method of claim 1 , wherein:

the pulse program comprises an align statement that specifies a plurality of pulse targets; and

the method comprises waiting for an execution of instructions involving any of the plurality of pulse targets to complete before beginning an execution of subsequent instructions involving any of the plurality of pulse targets.

33. The method of claim 1 , wherein:

the pulse program comprises a wait statement that specifies a target and an amount of time to wait before sending a pulse to the target; and

the method comprises waiting the specified amount of time.

34. The method of claim 1 , wherein:

the pulse program comprises a variable assignment statement that assigns an expression to a variable that is associated with a register that can be read from and/or written to by a programming subsystem during runtime of the machine code;

the pulse operation statement references the variable.

35. The method of claim 1 , wherein:

the pulse program comprises a variable declaration statement that assigns a first variable to a second variable, where the second variable is a reserved variable reference to a register that can be read from and/or written to by a programming subsystem during runtime of the machine code; and

the pulse operation statement references the second variable.

36. The method of claim 1 , wherein the characteristic is a slope of the first pulse.

37. The method of claim 1 , wherein the characteristic is a chirp rate of the first pulse.

38. The method of claim 1 , wherein the pulse program comprises a trigger wait statement operable to stop the program execution until a trigger is received.

39. The method of claim 38 , wherein the trigger is generated by software.

40. The method of claim 38 , wherein the trigger is generated by hardware.

Continuity (5)
Continuation 17227881 · Apr 12, 2021
Continuation In Part 17095944 · Nov 12, 2020
Continuation 16777480 · Jan 30, 2020
Provisional Application 62894905 · Sep 2, 2019
Related Publication 20220140820A1 · May 5, 2022
Cited By (16)
US 12,242,406 US 12,255,652 US 12,273,111 US 12,332,682 US 12,450,513 US 12,488,275 US 12,493,810 US 12,494,850 US 12,518,189 US 12,524,691 US 12,541,699 US 12,541,703 US 12,549,161 US 12,556,169 US 12,657,498 US 12,719,457