Patent ID: 8443344

Claim:
A processor-implemented method for generating a hardware definition from a program specified in a high-level language, the method comprising: identifying a first set of blocks of instructions in the high-level language program, each block in the first set bounded by a respective loop designation in the high-level language; for each block in the first set, identifying an associated respective second set of one or more blocks of the program, each block in the second set being outside the block in the first set; wherein identifying the first set of blocks and identifying the associated respective second sets of one or more blocks include: generating a data flow graph of the program; traversing the data flow graph in search of respective start and end nodes identifying loops; and for each identified loop, marking the respective start and end nodes and each node therebetween as representative of a block in the first set, and leaving each node outside of the loop unmarked and representative of the one or more blocks of the associated second set; generating a hardware definition of the program, wherein for each block in the first set the hardware definition specifies power-reducing circuitry for one or more blocks in the associated second set, the power-reducing circuitry controlled based on a status indication from the hardware definition of the block in the first set; wherein generating the hardware definition includes specifying clock gating for hardware definition of the one or more blocks in the associated second set represented by the unmarked nodes; wherein the hardware definition of the status indication from at least one block in the first set specifies maintaining power for circuitry that implements the one or more blocks in the associated second set for a period of time while circuitry that implements the at least one block is operating, and specifies reducing power for circuitry that implements the one or more blocks in the associated second set after expiration of the period of time and until the circuitry that implements the at least one block completes operation; and storing the hardware definition.