# US 10,120,702 B2 · Platform simulation for management controller development projects

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,120,702 B2
- Document ID: US10120702B2
- Status: Granted
- Kind: B2
- Application number: 15/207,905
- Filed: 2016-07-12
- Published: 2018-01-18
- Granted: 2018-11-06
- Earliest claimed: 2016-07-12
- Assignees: American Megatrends, Inc.
- Applicants: American Megatrends, Inc.
- Inventors: Satheesh Thomas; Baskar Parthiban; Rajeswari Ravichandran; Pavithra Sachidanandam; Aruna Venkataraman; Senathipathy Thangavel
- Web page: https://patentgrep.com/patent/US10120702B2

## CPC

- G06F 9/455: Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F 8/654: using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
- G06F 8/77: Software metrics
- G06F 9/4411: {Configuring for operating with peripheral devices; Loading of device drivers}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Certain aspects direct to systems and methods for platform simulation for development projects of a management controller, such as a baseboard management controller (BMC). The management controller stores a firmware module and a simulator module. The firmware module is supposed to receive output signals from a computing device as the platform, or from one or more devices connected to the platform. The simulator module is a software implemented module used to simulate the platform or the device, by generating the output signals of the platform or the device based on configuration data stored in a data library, and sending the simulated output signals to the firmware module for development and testing purposes.

## Claims

### Claim 1

A system, comprising:
a management controller, comprising a processor and a storage device storing computer executable code, wherein the management controller is a baseboard management controller (BMC), and wherein the computer executable code comprises:
a firmware module for the management controller; and
a simulator module configured to simulate a simulated host computing device for the management controller and at least one simulated device connected to the simulated host computing device;
wherein the firmware module and the simulator module are both stored in the storage device of the management controller and executable at the processor of the management controller;
wherein the firmware module, when executed at the processor, is configured to receive at least one output signal from the simulated host computing device or from the at least one simulated device connected to the simulated host computing device, and to perform a test using the at least one output signal;
wherein the simulator module, when executed at the processor, is configured to simulate the simulated host computing device and the at least one simulated device connected to the simulated host computing device by:
generating the at least one output signal based on configuration data of the simulated host computing device or the at least one simulated device connected to the simulated host computing device; and
sending the at least one output signal to the firmware module.

### Claim 2 (depends on 1)

The system as claimed in claim 1, wherein the firmware module comprises a library module storing a plurality of library programs for the simulated host computing device and the at least one simulated device connected to the simulated host computing device.

### Claim 3 (depends on 2)

The system as claimed in claim 2, wherein the simulator module comprises:
a data store storing the configuration data of the simulated host computing device or the simulated device connected to the simulated host computing device; and
at least one simulator library sub-module, each configured to simulate one of the at least one simulated device by:
receiving a first command from one of the library programs of the library module;
generating the at least one output signal as a first response to the first command for the at least one device based on the configuration data stored in the data store; and
sending the first response to the library module.

### Claim 4 (depends on 3)

The system as claimed in claim 3, wherein the simulator module further comprises:
at least one simulator driver sub-module, each configured to simulate one of the at least one simulated device controlled by a driver by:
receiving a second command from the driver;
generating the at least one output signal as a second response to the second command for the at least one simulated device based on the configuration data stored in the data library; and
sending the second response to the driver.

### Claim 5 (depends on 1)

The system as claimed in claim 1, wherein the configuration data comprises:
platform data for the simulated host computing device;
device data for the at least one simulated device connected to the simulated host computing device; and
device specific configuration parameters for the at least one simulated device connected to the simulated host computing device.

### Claim 6 (depends on 5)

The system as claimed in claim 5, wherein each of the device specific configuration parameters is a static value, a random value within a range, a value obtained from one or more patterns, a value derived from a function of another set of variables, a value set by an administrator, a time-based value, or a value picked from a socket server.

### Claim 7 (depends on 1)

The system as claimed in claim 1, wherein each of the at least one simulated device connected to the simulated host computing device is:
a voltage sensor:
a computer tachometer sensor;
an Inter-Integrated Circuit (I2C) device;
a power supply unit (PSU);
a complex programmable logic device (CPLD);
a field-replaceable unit (FRU);
a Redundant Array of Independent Disks (RAID) controller;
a RAID-on-chip (ROC);
a network interface card (NIC);
a satellite management controller;
an interface connected to the satellite management controller;
a system interface;
a universal serial bus (USB) interface; or
a Host Embedded Controller Interface (HECI).

### Claim 8

A method for platform simulation for development, projects of a management controller, the method comprising:
providing a simulator module in the management controller to simulate a simulated host computing device for the management controller and at least one simulated device connected to the simulated host computing device;
generating, by the simulator module, at least one output signal based on configuration data of the simulated host computing device or the simulated device connected to the simulated host computing device;
sending, by the simulator module, the at least one output signal to a firmware module of the management controller, such that the firmware module receives the at least one output signal from the simulated host computing device or from the at least one simulated device connected to the simulated host computing device;
upon receiving the at least one output signal from the simulated host computing device or from the at least one simulated device connected to the simulated host computing, device, performing, the firmware module, a test using the at least one output signal,
wherein the firmware module and the simulator module are both stored in a storage device of the management controller and executable at a processor of the management controller; and
wherein the management controller is a baseboard management controller (BMC).

### Claim 9 (depends on 8)

The method as claimed in claim 8, wherein the firmware module comprises a library module storing a plurality of library programs for the simulated host computing device and the at least one simulated device connected to the simulated host computing device, and the simulator module comprises:
a data store storing the configuration data of the simulated host computing device or the simulated device connected to the simulated host computing device; and
at least one simulator library sub-module, each configured to simulate one of the at least one simulated device by:
receiving a first command from one of the library programs of the library module;
generating the at least one output signal as a first response to the first command for the at least one simulated device based on the configuration data stored in the data store; and
sending the first response to the library module.

### Claim 10 (depends on 9)

The method as claimed in claim 9, wherein the simulator module further comprises:
at least one simulator driver sub-module, each configured to simulate one of the at least one simulated device controlled by a driver by:
receiving a second command from the driver;
generating the at least one output signal as a second response to the second command for the at least one simulated device based on the configuration data stored in the data library; and
sending the second response to the driver.

### Claim 11 (depends on 8)

The method as claimed in claim 8, wherein the configuration data comprises:
platform data for the simulated host computing device;
device data for the at least one simulated device connected to the simulated host computing device; and
device specific configuration parameters for the at least one simulated device connected to the simulated host computing device.

### Claim 12 (depends on 11)

The method as claimed in claim 11, Wherein each of the device specific configuration parameters is a static value, a random value within a range, a value obtained from one or more patterns a value derived from a function of another set of variables, a value set by an administrator, a time-based value, or a value picked from a socket server.

### Claim 13 (depends on 8)

The method as claimed in claim 8, wherein each of the at least one device connected to the simulated host computing device is:
a voltage sensor;
a computer tachometer sensor;
an Inter-Integrated Circuit (I2C) device;
a power supply unit (PSU);
a complex programmable logic device (CPLD);
a field-replaceable unit (FRU);
a Redundant Array of Independent Disks (RAID) controller;
RAID-on-chip (ROC);
a network interface card (NIC);
a satellite management controller;
an interface connected to the satellite management controller;
a system interface;
a universal serial bus (USB) interface; or
a Host Embedded Controller Interface (HECI).

### Claim 14

A non-transitory computer readable medium storing computer executable code, wherein the computer executable code, when executed at a processor of a management controller, is configured to:
control a simulator module to simulate a simulated host computing device for the management controller and at least one simulated device connected to the simulated host computing device;
control the simulator module to generate at least one output signal based on configuration data of the simulated host computing device or the simulated device connected to the simulated host computing device;
control the simulator module to send the at least one output signal to a firmware module of the management controller, such that the firmware module receives the at least one output signal from the simulated host computing device or from the at least one simulated device connected to the simulated host computing device; and
upon receiving the at least one output signal from the simulated host computing device or from the at least one simulated device connected to the simulated host computing device, control the firmware module to perform a test using the at least one output signal,
wherein the firmware module and the simulator module are both stored in a storage device of the management controller and executable at the processor of the management controller; and
wherein the management controller is a baseboard management controller (BMC).

### Claim 15 (depends on 14)

The non-transitory computer readable medium as claimed in claim 14, wherein the firmware module comprises a library module storing a plurality of library programs for the simulated host computing device and the at least one simulated device connected to the simulated host computing device, and the simulator module comprises:
a data store storing the configuration data of the simulated host computing device or the simulated device connected to the simulated host computing device;
at least one simulator library sub-module, each configured to simulate one of the at least one simulated device by:
receiving a first command from one of the library programs of the library module;
generating the at least one output signal as a first response to the first command for the at least one simulated device based on the configuration data, stored in the data store; and
sending the first response to the library module; and
at least one simulator driver sub-module, each configured to simulate one of the at least one simulated device controlled by a driver by:
receiving a second command from the driver;
generating the at least one output signal as a second response to the second command for the at least one simulated device based on the configuration data stored in the data library; and
sending the second response to the driver.

### Claim 16 (depends on 14)

The non-transitory computer readable medium as claimed in claim 14, wherein the configuration data comprises:
platform data for the simulated host computing device;
device data for the at least one device connected to the simulated host computing device; and
device specific configuration parameters for the at least one device connected to the simulated host computing device,
wherein each of the device specific configuration parameters is a static value, a random value within a range, a value obtained from one or more patterns, a value derived from a function of another set of variables, a value set by an administrator, a time-based value, or a value picked from a socket server.

### Claim 17 (depends on 14)

The non-transitory computer readable medium as claimed in claim 14, wherein each of the at least one simulated device connected to the simulated host computing device is:
a voltage sensor;
a computer tachometer sensor;
an Inter-Integrated Circuit (I2C) device;
a power supply unit (PSU);
a complex programmable logic device (CPLD);
a field-replaceable unit (FRU);
a Redundant Array of Independent Disks (RAID) controller;
a RAID-on-chip (ROC);
a network interface card (NIC);
a satellite management controller;
an interface connected to the satellite management controller;
a system interface;
a universal serial bus (USB) interface; or
a Host Embedded Controller Interface (HECI).
