This pertains to the field of power estimation in the field of system-level simulation in engineering.
Today before building many kinds of systems in it is quite important to simulate such a system to determine how much power it will consume.
The faster and earlier the designers simulate a system the better off they are. If possible it would be optimal for designers to see how much power a system produces dynamically as they design it. This is of course impossible, since at the point of design the designers do not know what stimuli the system will experience, and systemic power consumption varies with stimuli.
But the next best thing would be for the designers to determine power consumption dynamically, as a system runs simulation with stimulus vectors. This would provide power consumption data in real time to the designers as they simulate the system.
Current methods to estimate power in systems rely upon a method that requires a simulation to be performed as a first step, which then produces a simulation results database. A power estimation tool then processes this data after the simulation has finished, producing a power consumption profile. Often, the simulations can be very long, and the wait to get all simulation data produced results in an inefficient work flow.
The present invention teaches methods to perform system-level estimation of power consumption through simulation. As the computer simulation of a system progresses methods track how much power different parts of the system consume incrementally. The simulation displays these results graphically to the designers in real-time, and also saves the results. The simulation may also display in real-time how the current results track against one or more sets of historic results.
A software object is a coherent set of software methods and data intended to work on particular input data to perform a particular set of methods which transform those input data in specific ways. Software objects may contain other software objects to form a hierarchical structure. The methods in a software object may be organized as associated with particular input data. The software object may keep persistent data both as user-specified parameters, and as computed data which it derives from input data in some way, one example of this being statistics.
In an embodiment to perform the power analysis on live streaming simulation data, one uses a method which comprises the following steps:
In an embodiment this simulation runs parallel both the existing simulator and a power analysis and estimation block PE. PE is a software object intended to estimate dynamically the power a simulated system consumes.
In an embodiment PE provides to the designers the ability to control it through at least one of the following means:
These means are called the user control interface (UCI).
In some embodiments PE is adapted the simulator's API to perform the following actions:
In some further embodiments PE is adapted to provide the user the capability to invoke these actions through the UCI.
In some embodiments PE reads ID before simulation starts. In some embodiments PE reads ID when simulation starts. In some embodiments PE reads ID as it is needed. In some embodiments PE reads ID all at the same time. In some embodiments PE reads some part of ID at a time.
In an embodiment when the simulation runs the simulator sends live streaming data (LSD) to PE. In some embodiments PE also sends LSD to other processes. In some embodiments the PE block also writes LSD to a file.
In embodiments where PE outputs data to files or other blocks:
In an embodiment PE uses methods to transform ID and the received LSD into real-time or “live” power profile data (PPD). PPD shows how the simulated system consumes power.
In some embodiments PE sends PPD to the GUI, which displays a history of PPD up to the current PPD.
This method then allows users to determine the power consumption of their system in real time, pause or stop simulation at will, change their system design to make improvements, and re-run the simulations to see the effects.
In some embodiments PE provides the designers through the UCI the ability to pause or to stop simulation based on criteria. In some further embodiments these criteria include:
If the designers specify such a limit through the UCI then when this limit is reached the PE uses the simulator's API to pause or to stop simulation, as specified.
This allows users to conveniently pause or stop the fast, live streaming simulation in order to understand a power consumption issue better.
In some embodiments PE provides through the UCI the ability to invoke a method to compare current LSD with one stored previously. In some further embodiments the PE displays this in a GUI. with that of a previously stored simulation result.
To performs this: When PE receives LSD it also saves that LSD to a file, as described above.
In some embodiments PE reads a stored LSD and dynamically compares it to current LSD from the live simulation currently running, comparing them in a GUI.
In some embodiments PE reads two stored LSDs and compares them in a GUI. This is called historical comparison.
In any such case the PE plots power consumption versus time for both LSDs. The user chooses to show the raw values of LSD, or a deviation such as a division of two LSD values.
By plotting these axes in the graph, users can then see ‘deviation’ from their previous iterations when X and Y axes contain power estimation data. The users can also see power analysis or estimation in real time, when X axis contains time units.
The comparison is done to aid real-time or ‘live’ debugging of system power consumption. Using this live streaming analysis mode for power estimation and analysis, the users can perform ‘power debug’ of their systems faster, using less human resources and with more efficiency.
In the embodiment shown in
We show these embodiments of the invention to be exemplary and not in any way limiting. Many other embodiments are possible, without departing from the spirit of the invention or sacrificing its advantages.
The invention presented here will shorten and cheapen the design cycle time for systemic development where power consumption is a consideration, since the designers may view in real time how much power their systems consume, and thus change those designs to eliminate inefficiencies as early as possible. This will save both time and money.
This application claims the priority of PPA 62/220,713.