IP Library Granted Patent US 11,210,439
Granted Patent B2
US 11,210,439 · App. 16/006,490 · Granted Dec 28, 2021

Gate activity analysis

Inventors: Hari Cherupalli (Minneapolis, MN); Rakesh Kumar (Urbana, IL); John Sartori (Minneapolis, MN)
Assignees: Regents of the University of Minnesota; The Board of Trustees of the University of Illinois
G06F30/20G06F30/33G06F30/398G06F21/554G06F21/577G06F21/71G06F2115/10G06F2221/033
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,210,439
App. No.
16/006,490
Granted
Dec 28, 2021
Kind
B2
Abstract

A method for analyzing a processor design includes receiving a design for a processor and receiving an application to be executed by the processor. The method includes simulating the execution of the application on the processor based on the design to identify unexercisable gates of the processor.

Claims (47)

1. A method for analyzing a processor design, the method comprising:

receiving, via a processing system, a design for a processor;

receiving, via the processing system, an application to be executed by the processor; and

simulating, via the processing system, the execution of the application on the processor for all possible executions of the application for any possible inputs to the application by performing symbolic simulation, where unknown input values are represented by symbolic values, based on the design to identify unexercisable gates of the processor,

wherein performing the symbolic simulation comprises:

initializing a list of unexercisable gates as all gates of a gate-level netlist of the design;

initializing all inputs to the simulation to Xs, where each X represents an unknown logic value;

simulating the application based on the gate-level netlist and an application binary for the application; and

removing each gate that toggles and each gate through which an X propagates during the simulation from the list of unexercisable gates, and

wherein performing the symbolic simulation further comprises:

tracking the most conservative gate-level state that has been observed for each conditional branch encountered during the simulation; and

in response to re-encountering a conditional branch while simulating on a control flow path;

terminating simulation down the control flow path in response to the symbolic state being simulated being a substate of the most conservative gate-level state previously observed at the conditional branch; and

in response to the symbolic state being simulated not being a substate of the most conservative gate-level state previously observed at the conditional branch, merging the symbolic state being simulated with the most conservative gate-level state previously observed at the conditional branch to an updated most conservative gate-level state for the conditional branch, and continuing simulation from the updated most conservative gate-level state.

2. The method of claim 1 , further comprising:

recording the constant values of each unexercisable gate.

3. A system comprising:

a machine readable storage medium storing instructions; and

a processor to execute the instructions to:

receive a gate-level netlist of a processor;

receive an application binary for an application to be executed by the processor; and

simulate the execution of the application on the processor for all possible executions of the application for any possible inputs to the application by performing symbolic simulation, where unknown input values are represented by symbolic values, based on the gate-level netlist and the application binary to identify unexercisable gates of the processor,

wherein the processor executes the instructions to perform the symbolic simulation to:

initialize a list of unexercisable gates as all gates of the gate-level netlist;

initialize all inputs to the simulation to Xs, where each X represents an unknown logic value;

simulate the application based on the gate-level netlist and the application binary; and

remove each gate that toggles and each gate through which an X propagates during the simulation from the list of unexercisable gates, and

wherein the processor executes the instructions to perform symbolic simulation to further;

track the most conservative gate-level state that has been observed for each conditional branch encountered during the simulation; and

in response to re-encountering a conditional branch while simulating on a control flow path;

terminate simulation down the control flow path in response to the symbolic state being simulated being a substate of the most conservative gate-level state previously observed at the conditional branch; and

in response to the symbolic state being simulated not being a substate of the most conservative gate-level state previously observed at the conditional branch, merge the symbolic state being simulated with the most conservative gate-level state previously observed at the conditional branch to create an updated most conservative gate-level state for the conditional branch, and continue simulation from the updated most conservative gate-level state.

4. The system of claim 3 , wherein the processor executes the instructions to further:

record the constant values of each unexercisable gate.

5. A method for analyzing a processor design, the method comprising:

receiving, via a processing system, a gate-level netlist of a processor;

receiving, via the processing system, an application binary for an application to be executed by the processor;

initializing a list of unexercisable gates as all gates of the gate-level netlist;

initializing all inputs to the simulation to Xs, where each X represents an unknown logic value;

simulating the application based on the gate-level netlist and the application binary;

removing each gate that toggles and each gate through which an X propagates during the simulation from the list of unexercisable gates;

tracking the most conservative gate-level state that has been observed for each conditional branch encountered during the simulation; and

in response to re-encountering a conditional branch while simulating on a control flow path:

terminating simulation down the control flow path in response to the symbolic state being simulated being a substate of the most conservative gate-level state previously observed at the conditional branch; and

in response to the symbolic state being simulated not being a substate of the most conservative gate-level state previously observed at the conditional branch, merging the symbolic state being simulated with the most conservative gate-level state previously observed at the conditional branch to create an updated most conservative gate-level state for the conditional branch, and continuing simulation from the updated most conservative gate-level state.

6. The method of claim 5 , further comprising:

recording the constant values of each unexercisable gate.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2020
From: CHERUPALLI, HARI; SARTORI, JOHN
To: REGENTS OF THE UNIVERSITY OF MINNESOTA
Reel/Frame 052892/0312 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 6, 2019
From: KUMAR, RAKESH
To: THE BOARD OF TRUSTEES OF THE UNIVERSITY OF ILLINOIS
Reel/Frame 049968/0586 →
Continuity (2)
Provisional Application 62518240 · Jun 12, 2017
Related Publication 20180357344A1 · Dec 13, 2018
Cited By (1)
US 12,437,133