IP Library › Granted Patent US 12,748,900
Granted Patent B2
US 12,748,900 · App. 17/662,818 · Granted Sep 29, 2026

Framework for system simulation using multiple simulators

Inventors: Ji Yang (Coram, NY); Haris Javaid (Singapore, SG); Sundararajarao Mohan (Sunnyvale, CA)
Assignee: Xilinx, Inc.
G06F30/20H04L9/50G06F2111/02
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,748,900
App. No.
17/662,818
Granted
Sep 29, 2026
Kind
B2
Abstract

A simulation framework is capable of modeling a hardware implementation of a reference software system using models specified in different computer-readable languages. The models correspond to different ones of a plurality of subsystems of the hardware implementation. Input data is provided to a first simulator configured to simulate a first model of a first subsystem of the modeled hardware implementation. The input data is captured from execution of the reference software system. The first simulator executing the first model generates a first data file specifying output of the first subsystem. The first data file specifies intermediate data of the modeled hardware implementation. The first data file is provided to a second simulator configured to simulate a second model of a second subsystem of the modeled hardware implementation. The second simulator executing the second model generates a second data file specifying output of the second subsystem.

Claims (51)

1 . A method, comprising:

modeling a hardware implementation of a reference software system using models that correspond to different ones of a plurality of subsystems of the hardware implementation;

simulating, by a first simulator, an executable model of a first subsystem of the plurality of subsystems that implements a protocol processor configured to classify packets of input data as normal packets forwarded directly to a host data processing system and block chain packets requiring further processing by the hardware implementation;

generating, from the first simulator executing the executable model, a first data file specifying output of the first subsystem, wherein the first data file specifies intermediate data generated by the executable model;

simulating, by a second simulator, a register transfer level model of a second subsystem of the plurality of subsystems that implements a block processor coupled to the protocol processor and configured to implement block and transaction verification operations on the first data file; and

generating, from the second simulator executing the register transfer level model, a second data file specifying output of the second subsystem;

wherein the first data file and the second data file are specified in human-readable text.

2 . The method of claim 1 , wherein the hardware implementation is a network-attached accelerator.

3 . The method of claim 2 , wherein the hardware implementation is configured to perform blockchain transaction processing.

4 . The method of claim 1 , wherein at least one of the first data file or the second data file specifies particular ports of the hardware implementation over which data specified by the first data file or the second data file is conveyed.

5 . The method of claim 1 , further comprising:

capturing output data generated by the reference software system;

comparing the second data file with the output data; and

determining whether the hardware implementation behaves as designed based on the comparing.

6 . The method of claim 1 , further comprising:

editing at least one of the first data file or the second data file by removing one or more blocks therein and editing a hash value and a block identifier to be consistent with the removing of the one or more blocks.

7 . The method of claim 1 , wherein at least one of the first data file or the second data file is encoded to specify data at a selected layer of an Open Systems Interconnect (OSI) model.

8 . A system, comprising:

a processor configured to initiate operations including:

modeling a hardware implementation of a reference software system using models that correspond to different ones of a plurality of subsystems of the hardware implementation;

simulating, by a first simulator, an executable model of a first subsystem of the plurality of subsystems that implements a protocol processor configured to classify packets of input data as normal packets forwarded directly to a host data processing system and block chain packets requiring further processing by the hardware implementation;

generating, from the first simulator executing the executable model, a first data file specifying output of the first subsystem, wherein the first data file specifies intermediate data generated by the executable model;

simulating, by a second simulator, a register transfer level model of a second subsystem of the plurality of subsystems that implements a block processor coupled to the protocol processor and configured to implement block and transaction verification operations on the first data file; and

generating, from the second simulator executing the register transfer level model, a second data file specifying output of the second subsystem;

wherein the first data file and the second data file are specified in human-readable text.

9 . The system of claim 8 , wherein the hardware implementation is a network-attached accelerator.

10 . The system of claim 9 , wherein the hardware implementation is configured to perform blockchain transaction processing.

11 . The system of claim 8 , wherein at least one of the first data file or the second data file specifies particular ports of the hardware implementation over which data specified by the first data file or the second data file is conveyed.

12 . The system of claim 8 , wherein the processor is further configured to initiate operations comprising:

capturing output data generated by the reference software system;

comparing the second data file with the output data; and

determining whether the hardware implementation behaves as designed based on the comparing.

13 . The system of claim 8 , wherein the processor is further configured to initiate operations comprising:

editing at least one of the first data file or the second data file by removing one or more blocks therein and editing a hash value and a block identifier to be consistent with the removing of the one or more blocks.

14 . The system of claim 8 , wherein at least one of the first data file or the second data file is encoded to specify data at a selected layer of an Open Systems Interconnect (OSI) model.

15 . A computer program product, comprising:

one or more computer-readable storage media, and program instructions collectively stored on the one or more computer-readable storage media, wherein the program instructions are executable by computer hardware to initiate operations including:

modeling a hardware implementation of a reference software system using models that correspond to different ones of a plurality of subsystems of the hardware implementation;

simulating, by a first simulator, an executable model of a first subsystem of the plurality of subsystems that implements a protocol processor configured to classify packets of input data as normal packets forwarded directly to a host data processing system and block chain packets requiring further processing by the hardware implementation;

generating, from the first simulator executing the executable model, a first data file specifying output of the first subsystem, wherein the first data file specifies intermediate data generated by the executable model;

simulating, by a second simulator, a register transfer level model of a second subsystem of the plurality of subsystems that implements a block processor coupled to the protocol processor and configured to implement block and transaction verification operations on the first data file; and

generating, from the second simulator executing the register transfer level model, a second data file specifying output of the second subsystem;

wherein the first data file and the second data file are specified in human-readable text.

16 . The computer program product of claim 15 , wherein the hardware implementation is a network-attached accelerator.

17 . The computer program product of claim 16 , wherein the hardware implementation is configured to perform blockchain transaction processing.

18 . The computer program product of claim 15 , wherein at least one of the first data file or the second data file specifies particular ports of the hardware implementation over which data specified by the first data file or the second data file is conveyed.

19 . The computer program product of claim 15 , wherein the program instructions are executable by the computer hardware to initiate operations including:

capturing output data generated by the reference software system;

comparing the second data file with the output data; and

determining whether the hardware implementation behaves as designed based on the comparing.

20 . The computer program product of claim 15 , wherein at least one of the first data file or the second data file is encoded to specify data at a selected layer of an Open Systems Interconnect (OSI) model.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 10, 2022
From: YANG, JI; JAVAID, HARIS; MOHAN, SUNDARARAJARAO
To: XILINX, INC.
Reel/Frame 059886/0270 →
Continuity (1)
Related Publication 20230367923A1 · Nov 16, 2023
References Cited (68)
US 7197445B1 · Deepak · 2007 [cited by applicant]
US 7302377B1 · Deepak · 2007 [cited by applicant]
US 7330808B1 · Jorgensen · 2008 [cited by applicant]
US 7451417B1 · Carrillo · 2008 [cited by applicant]
US 7590137B1 · Chan · 2009 [cited by applicant]
US 7636653B1 · Chan · 2009 [cited by applicant]
US 7673201B1 · Chan et al. · 2010 [cited by applicant]
US 7707019B1 · Ballagh · 2010 [cited by applicant]
US 7721090B1 · Deepak · 2010 [cited by applicant]
US 7739092B1 · Ballagh · 2010 [cited by applicant]
US 7895026B1 · Kelly · 2011 [cited by applicant]
US 7930162B1 · Chan · 2011 [cited by applicant]
US 8041553B1 · Hernandez · 2011 [cited by examiner]
US 8074077B1 · Neema · 2011 [cited by applicant]
US 8150638B1 · Wu · 2012 [cited by applicant]
US 8195441B1 · Ou · 2012 [cited by examiner]
US 8224638B1 · Shirazi · 2012 [cited by applicant]
US 8352229B1 · Ma · 2013 [cited by applicant]
US 8640064B1 · Liddell · 2014 [cited by examiner]
US 9117043B1 · Huang et al. · 2015 [cited by applicant]
US 9396154B2 · Garg · 2016 [cited by examiner]
US 10291627B2 · Gleichauf · 2019 [cited by examiner]
US 10296673B1 · Ghosh · 2019 [cited by examiner]
US 10325042B1 · Sharma · 2019 [cited by examiner]
US 10375105B2 · Kozloski · 2019 [cited by examiner]
US 10387584B1 · Popovici · 2019 [cited by examiner]
US 10417171B1 · Sarmah · 2019 [cited by examiner]
US 10437946B1 · Kasat et al. · 2019 [cited by applicant]
US 10437949B1 · Mihalache · 2019 [cited by examiner]
US 10586003B1 · Suresh · 2020 [cited by examiner]
US 10671785B1 · Mihalache et al. · 2020 [cited by applicant]
US 10761877B2 · Peffers · 2020 [cited by examiner]
US 10762479B2 · Hyun · 2020 [cited by examiner]
US 10816600B1 · Liddell et al. · 2020 [cited by applicant]
US 11314763B2 · Opferman · 2022 [cited by examiner]
US 11443088B1 · Verma · 2022 [cited by examiner]
US 11475199B1 · Bandyopadhyay · 2022 [cited by examiner]
US 20090024381A1 · Sakamoto · 2009 [cited by examiner]
US 20120017197A1 · Mehta · 2012 [cited by examiner]
US 20120036503A1 · Reeves · 2012 [cited by examiner]
US 20130039207A1 · Vadasz · 2013 [cited by examiner]
US 20140047419A1 · Gaster · 2014 [cited by examiner]
US 20140325516A1 · Ventroux · 2014 [cited by examiner]
US 20150301975A1 · Garg · 2015 [cited by examiner]
US 20150358211A1 · Kumar · 2015 [cited by examiner]
US 20150379172A1 · Ventroux · 2015 [cited by examiner]
US 20160125113A1 · Acar · 2016 [cited by examiner]
US 20180060456A1 · Phatak · 2018 [cited by examiner]
US 20180109541A1 · Gleichauf · 2018 [cited by examiner]
US 20190026146A1 · Peffers · 2019 [cited by examiner]
US 20190370806A1 · Wang · 2019 [cited by examiner]
US 20200103930A1 · Suresh · 2020 [cited by examiner]
US 20200119926A1 · Buki · 2020 [cited by examiner]
US 20200177373A1 · Komandur · 2020 [cited by examiner]
US 20200311022A1 · Ginn · 2020 [cited by examiner]
US 20210182423A1 · Padmanabhan · 2021 [cited by examiner]
US 20220131704A1 · Javaid · 2022 [cited by examiner]
US 20220141025A1 · Bogineni · 2022 [cited by examiner]
US 20220172074A1 · Luo · 2022 [cited by examiner]
US 20220366267A1 · Karmakar · 2022 [cited by examiner]
US 20230032302A1 · Lavagno · 2023 [cited by examiner]
US 20230114858A1 · Ksheerasagar · 2023 [cited by examiner]
US 20230267156A1 · Goel · 2023 [cited by examiner]
US 20230342775A1 · Javaid · 2023 [cited by examiner]
Androulaki et al. (Hyperledger Fabric: A Distributed Operating System for Permissioned Blockchains, arXiv, 2018, pp. 1-15) (Year: 2018). [cited by examiner]
Thakkar et al. (Scaling Blockchains Using Pipelined Execution and Sparse Peers, ACM, 2021, pp. 1-15) (Year: 2021). [cited by examiner]
Javaid et al. (Optimizing Validation Phase of Hyperledger Fabric, IEEE, 2019, pp. 269-275) (Year: 2019). [cited by examiner]
Haris Javaid, Mohit Upadhyay, Ji Yang, Sundararajarao Mohan, Gordon Brebner, Nathania Santoso, and Chengchen Hu, “Blockchain Machine: A Network-Attached Hardware Accelerator for Hyperledger Fabric,” Sep. 20, 2021, 13 pa… [cited by applicant]