IP Library Granted Patent US 12,438,959
Granted Patent B2
US 12,438,959 · App. 17/406,385 · Granted Oct 7, 2025

High-speed data packet generator

Inventor: Aaron Foo (Tokyo, JP)
Assignee: Fmad Engineering (SNG) Pte Ltd.
H04L69/22G06F9/30098G06F9/3853G06F11/1004H04L69/324H04L69/16
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,438,959
App. No.
17/406,385
Granted
Oct 7, 2025
Kind
B2
Abstract

An embodiment may involve executing a set of instructions, where the set of instructions define how to generate outputs that represent one or more data packets, and where segments of the outputs are copied from first parts of respective instructions in the set of instructions. The embodiment may further involve: retrieving, from a plurality of registers, a data packet header; retrieving, from the plurality of registers, a first part of a data packet payload and an increment value; applying the increment value to the first part of the data packet payload to generate a second part of the data packet payload; storing, in the plurality of registers, the first part of the data packet payload with the increment value applied; and providing, as additional segments of the outputs, the data packet header, the first part of the data packet payload, and the second part of the data packet payload.

Claims (49)

1. A system comprising:

a plurality of registers;

instruction memory; and

an execution unit configured to generate a sequence of outputs by executing a set of instructions stored in the instruction memory on values stored in the plurality of registers, wherein executing an instruction from the set of instructions involves: reading one or more of the values from the plurality of registers; generating a data payload based on the one or more of the values; and appending at least four control bits from the instruction to the data payload, wherein the control bits define how the data payload is to be placed in a data packet, and wherein the control bits define a count of valid bytes in the data payload and a number of times that the execution unit is to repeatedly execute the instruction; and

a processor configured to generate, from the sequence of outputs, the data packet.

2. The system of claim 1 , wherein the data packet includes one or more data packet headers and a data packet payload.

3. The system of claim 2 , wherein the one or more of the values define at least part of the one or more data packet headers and the data packet payload.

4. The system of claim 1 , wherein the control bits define whether the data payload is valid, and wherein the processor is configured to omit invalid data payloads from the data packet.

5. The system of claim 1 , wherein the control bits define whether the data payload is at a start of the data packet, and wherein the processor is configured to place data payloads at the start of the data packet when indicated by the control bits.

6. The system of claim 1 , wherein the control bits define whether the data payload is at an end of the data packet, and wherein the processor is configured to place data payloads at the end of the data packet when indicated by the control bits.

7. The system of claim 1 , wherein the control bits specify an add opcode, a pair of the registers containing operands, and a third of the registers for storing a result, wherein reading the one or more of the values from the plurality of registers comprises reading the operands from the pair of the registers, and wherein generating the data payload based on the one or more of the values comprises:

performing addition on the operands to form the result;

placing the result in the data payload; and

writing the result to the third of the registers.

8. The system of claim 1 , wherein the control bits specify a logical OR opcode, a pair of the registers containing operands, and a third of the registers for storing a result, wherein reading the one or more of the values from the plurality of registers comprises reading the operands from the pair of the registers, and wherein generating the data payload based on the one or more of the values comprises:

performing a logical OR on the operands to form the result;

placing the result in the data payload; and

writing the result to the third of the registers.

9. The system of claim 1 , wherein the control bits specify an add-and-mask opcode, a pair of the registers containing addition operands, a third of the registers containing a logical AND operand, and a fourth of the registers for storing a result, wherein reading the one or more of the values from the plurality of registers comprises reading the operands from the pair of the registers and reading the logical AND operand from the third of the registers, and wherein generating the data payload based on the one or more of the values comprises:

performing addition on the operands from the pair of the registers to form a partial result;

performing a logical AND operation on the partial result and the logical AND operand to form the result;

placing the result in the data payload; and

writing the result to the fourth of the registers.

10. The system of claim 1 , wherein the control bits specify an opcode, one or more registers of the registers respectively containing the one or more of the values, and a further register of the plurality of registers for storing a result, wherein reading the one or more of the values from the plurality of registers comprises reading one or more operands from the one or more of the registers, and wherein generating the data payload based on the one or more of the values comprises:

performing an operation, specified by the opcode, on the operands to form the result;

placing the result in the data payload; and

writing the result to the further register.

11. The system of claim 10 , wherein the further register is in the one or more of the registers.

12. The system of claim 1 , wherein generating the data packet comprises appending the outputs to one another in order of the sequence but without any of the control bits.

13. The system of claim 1 , further comprising:

two or more transceivers coupled to the processor, wherein the processor is also configured to transmit the data packet by way of a first transceiver of the two or more transceivers.

14. The system of claim 13 , further comprising:

a packet capture mechanism configured to receive, by way of a second transceiver of the two or more transceivers, the data packet, wherein a loopback cable connects the first transceiver to the second transceiver; and

a validator software application configured to determine whether content of the data packet as captured matches the content of the data packet as generated.

15. The system of claim 1 , further comprising:

an OR unit configured to modify the sequence of outputs based on a control bit from the instruction prior to the processor generating the data packet;

a cyclic redundancy check (CRC) generator configured to modify the sequence of outputs based on a control bit from the instruction prior to the processor generating the data packet; and

a multiplexor configured to modify the sequence of outputs based on a control bit from the instruction prior to the processor generating the data packet.

16. A method comprising:

generating, by an execution unit executing a set of instructions stored in instruction

memory, a sequence of outputs, wherein executing an instruction from the set of instructions involves: reading one or more values from a plurality of registers;

generating a data payload based on the one or more values; and appending at least four control bits from the instruction to the data payload, wherein the control bits define how the data payload is to be placed in a data packet, and wherein the control bits define a count of valid bytes in the data payload and a number of times that the execution unit is to repeatedly execute the instruction; and

generating, by a processor and from the sequence of outputs, the data packet.

17. The method of claim 16 , wherein the control bits define whether the data payload is valid, wherein the processor is configured to omit invalid data payloads from the data packet, wherein the control bits define whether the data payload is at a start of the data packet, wherein the processor is configured to place data payloads at the start of the data packet when indicated by the control bits, wherein the control bits define whether the data payload is at an end of the data packet, and wherein the processor is configured to place data payloads at the end of the data packet when indicated by the control bits.

18. The method of claim 16 , wherein the control bits specify an opcode, one or more registers of the registers respectively containing the one or more values, and a further register of the plurality of registers for storing a result, wherein reading the one or more values from the plurality of registers comprises reading one or more operands from the one or more of the registers, and wherein generating the data payload based on the one or more values comprises:

performing an operation, specified by the opcode, on the operands to form the result;

placing the result in the data payload; and

writing the result to the further register.

19. The method of claim 16 , wherein two or more transceivers are coupled to the processor, wherein the processor is also configured to transmit the data packet by way of a first transceiver of the two or more transceivers, wherein a packet capture mechanism configured to receive, by way of a second transceiver of the two or more transceivers, the data packet, wherein a loopback cable connects the first transceiver to the second transceiver; and wherein a validator software application configured to determine whether content of the data packet as captured matches the content of the data packet as generated.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 23, 2023
From: FMAD ENGINEERING KABUSHIKI GAISHA
To: FMAD ENGINEERING (SNG) PTE LTD.
Reel/Frame 065948/0073 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2021
From: FOO, AARON
To: FMAD ENGINEERING KABUSHIKI GAISHA
Reel/Frame 057356/0548 →
Continuity (4)
Continuation 16590855 · Oct 2, 2019
Continuation In Part 16528952 · Aug 1, 2019
Continuation 15609729 · May 31, 2017
Related Publication 20210385308A1 · Dec 9, 2021
References Cited (56)
US 5193071A · Umina · 1993 [cited by applicant]
US 5317734A · Gupta · 1994 [cited by applicant]
US 5442708A · Adams, Jr. · 1995 [cited by applicant]
US 6052362A · Somer · 2000 [cited by examiner]
US 6098155A · Chong, Jr. · 2000 [cited by applicant]
US 6134630A · McDonald · 2000 [cited by applicant]
US 6170063B1 · Golding · 2001 [cited by applicant]
US 6182176B1 · Ziegler · 2001 [cited by applicant]
US 6236658B1 · Essbaum · 2001 [cited by applicant]
US 6414966B1 · Kulkarni et al. · 2002 [cited by applicant]
US 6473809B1 · Aref · 2002 [cited by applicant]
US 7120828B2 · Greer · 2006 [cited by examiner]
US 7167476B1 · Kritayakirana · 2007 [cited by examiner]
US 7631193B1 · Hoffman · 2009 [cited by applicant]
US 8433777B1 · Liu · 2013 [cited by applicant]
US 8880696B1 · Michels · 2014 [cited by applicant]
US 9756154B1 · Jiang · 2017 [cited by examiner]
US 10013200B1 · Shveidel · 2018 [cited by applicant]
US 20010030943A1 · Gregg et al. · 2001 [cited by applicant]
US 20010038607A1 · Honda · 2001 [cited by applicant]
US 20020188742A1 · Nie · 2002 [cited by applicant]
US 20030058872A1 · Berggreen et al. · 2003 [cited by applicant]
US 20030081554A1 · Huang · 2003 [cited by applicant]
US 20030099250A1 · Blanc et al. · 2003 [cited by applicant]
US 20040193876A1 · Donley et al. · 2004 [cited by applicant]
US 20040233846A1 · Khandani et al. · 2004 [cited by applicant]
US 20040236982A1 · Greer · 2004 [cited by examiner]
US 20050013300A1 · Akahane · 2005 [cited by applicant]
US 20050220014A1 · DelRegno et al. · 2005 [cited by applicant]
US 20070248110A1 · Oz et al. · 2007 [cited by applicant]
US 20090077561A1 · Feng · 2009 [cited by applicant]
US 20090164752A1 · McConnell · 2009 [cited by applicant]
US 20090257451A1 · Saghi · 2009 [cited by examiner]
US 20100054128A1 · O'Hern · 2010 [cited by applicant]
US 20110225302A1 · Park · 2011 [cited by applicant]
US 20120151307A1 · Abel · 2012 [cited by examiner]
US 20130145105A1 · Sawicki · 2013 [cited by applicant]
US 20130315237A1 · Kagan · 2013 [cited by applicant]
US 20140277850A1 · Jobs · 2014 [cited by applicant]
US 20150100856A1 · Zhang · 2015 [cited by examiner]
US 20150227757A1 · Bestler · 2015 [cited by applicant]
US 20160119811A1 · Merlin · 2016 [cited by examiner]
US 20160127276A1 · Wu · 2016 [cited by applicant]
US 20170063992A1 · Baek et al. · 2017 [cited by applicant]
CA 2015934C · 2000 [cited by examiner]
Notice of Allowance, U.S. Appl. No. 17/320,393, mailed Mar. 8, 2023. [cited by applicant]
Office Action, U.S. Appl. No. 17/835,809, mailed Mar. 30, 2023. [cited by applicant]
Non-Final Office Action dated Nov. 17, 2021 for U.S. Appl. No. 16/854,071, 34 pages. [cited by applicant]
Office Action dated Oct. 27, 2021 for U.S. Appl. No. 17/034,593, 25 pages. [cited by applicant]
Kesavan et al., “Optimal Multicast with Packetization and Network Interface Support”, 1997, IEEE, pp. 370-377. [cited by applicant]
“Libpcap File Format,” The Wireshark Wiki, https://wiki.wireshark.org/Development/LibpcapFileFormat, 2015, 3 pages. [cited by applicant]
“Manpage of TCPDUMP,” http://tcpdump.org/manpages/tcpdump.1.html, 2017, 20 pages. [cited by applicant]
Kim et al., High available system control network in the packet transport system, IEEE, Conference Paper, pp. 1-3 (Year:2010). [cited by applicant]
Notice of Allowance mailed Dec. 9, 2021, issued in connection with U.S. Appl. No. 17/034,593, filed Sep. 28, 2020, 13 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/216,014, mailed Mar. 14, 2023. [cited by applicant]
Notice of Allowance and Fee(s) Due, U.S. Appl. No. 16/854,071, mailed May 5, 2022, 16 pages. [cited by applicant]
Cited By (1)
US 12,696,245