IP Library Granted Patent US 8,938,705
Granted Patent B1
US 8,938,705 · App. 14/292,933 · Granted Jan 20, 2015

Systems and methods for partial retention synthesis

Inventors: Kai-Hui Chang (North Andover, MA); Yen-Ting Liu (Kaohsiung, TW); Christopher S. Browy (Boston, MA); Chi-Lai Huang (Andover, MA)
Assignee: Avery Design Systems, Inc.
G06F17/5068G06F17/5009
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 8,938,705
App. No.
14/292,933
Granted
Jan 20, 2015
Kind
B1
Abstract

A retention synthesis application provides a means of analyzing a circuit design, functional test sequences, and the associated power specification to identify registers that do not need retention when a block is powered down. Reducing the number of retention registers reduces power consumption and chip area. The retention synthesis application is based, at least in part, upon symbolic simulation. In symbolic simulation, a symbol is used to represent a value that can be either 0 or 1 and the propagation of symbols is traced through the simulation.

Claims (47)

1. A method for identifying retention status of registers of a circuit, the method comprising the steps of:

performing symbolic simulation for one or more simulation cycles starting at the beginning of the one or more simulation cycles;

replacing each register value with a multiplexer, a select of the multiplexer equal to 0 connecting to the register value and another input of the multiplexer connects to a symbol;

collecting a first symbolic trace at an output and building a first miter with a logic value of the first symbolic trace;

collecting a second symbolic trace in design registers and building a second miter with a logic value of each register value;

producing a Boolean function by implementing an OR logic gate, using a processor, that ORs the output of the first miter and the output of the second miter, if the output is 0 the circuit behavior has not changed, thereby identifying a non-retention register, and if the output is 1, the circuit behavior has changed, thereby identifying a retention register; and

determining a set of non-retention registers that allow the output to remain 0.

2. The method of claim 1 wherein the step of determining registers that allow the output to remain 0 comprises the steps of:

creating an empty set of non-retaining registers;

choosing one select line of the multiplexer of the Boolean function to be 1 and solve an output;

adding the select line of the multiplexer to the set of non-retaining registers if the output of the Boolean function is 0;

repeating the step of choosing one select line until all select lines of all multiplexers of the Boolean function have been chosen;

adding select lines not in support of the Boolean function to the set of non-retaining registers;

providing a final list of registers that correspond to the select lines in the set of non-retaining registers at the end of the analysis.

3. The method of claim 1 further comprising a method for determining non-retention candidates for a next interval, through temporal partitioning, comprising the steps of:

verifying that a register has not required retention at previous interval and if it does require retention at the previous interval, it is not a non-retention candidate;

determining, if the register has not required retention at the previous interval, whether the register is over-written yet, and if (a) it is over-written yet, it is not a non-retention candidate for the next interval and if (b) it is not overwritten-yet, it is a non-retention candidate for the next interval.

4. The method of claim 1 further comprising a method for determining non-retention status at an end of a sequence during simulation, as part of temporal partitioning, comprising the steps of:

determining if the register requires retention in any interval, and if (a) yes then the register needs retention, and if (b) no and the register has been over-written, then the register does not need retention, and if (c) no and the register has not been over-written yet, then the register's status is inconclusive; and

determining a retention status of the register at the final state to identify registers that require retention and registers that can be non-retention.

5. The method of claim 1 further comprising a method for determining non-retention status after analyzing all sequences, comprising the steps of:

verifying that a register has not required retention in any sequence and, if the register has required retention in any sequence then the register requires retention;

determining if there is non-retention in any sequence and (a) if there is no-retention in any sequence, then the register potentially does not require retention and (b) if there is not no-retention in any sequence, then the non-retention status is inconclusive and more tests need to be analyzed.

6. The method of claim 1 wherein a processor is configured to carry out the method steps.

7. A system for identifying retention status of registers of a circuit, the system comprising:

means for performing symbolic simulation for one or more simulation cycles starting at the beginning of the one or more simulation cycles;

means for replacing each register value with a multiplexer, a select of the multiplexer equal to 0 connecting to the register value and another input of the multiplexer connects to a symbol;

means for collecting a first symbolic trace at an output and building a first miter with a logic value of the first symbolic trace;

means for collecting a second symbolic trace in design registers and building a second miter with a logic value of each register value;

means for producing a Boolean function by implementing an OR logic gate, using a processor, that ORs the output of the first miter and the output of the second miter, if the output is 0, the circuit behavior has not changed, thereby identifying a non-retention register, and if the output is 1, the circuit behavior has changed thereby identifying a retention register; and

means for determining a set of non-retention registers that allow the output to remain 0.

8. The system of claim 7 wherein the means for determining registers that allow the output to remain 0 comprises:

means for creating an empty set of non-retaining registers;

means for choosing one select line of the multiplexer of the Boolean function to be 1 and solve an output;

means for adding the select line of the multiplexer to the set of non-retaining registers if the output of the Boolean function is 0;

means for repeating the step of choosing one select line until all select lines of all multiplexers of the Boolean function have been chosen;

means for adding select lines not in support of the Boolean function to the set of non-retaining registers;

means for providing a final list of registers that correspond to the select lines in the set of non-retaining registers at the end of the analysis.

9. The system of claim 7 further comprising a system for determining non-retention candidates for a next interval, through temporal partitioning:

means for verifying that a register has not required retention at previous interval and if it does require retention at the previous interval, it is not a non-retention candidate; and

means for determining, if the register has not required retention at the previous interval, whether the register is over-written yet, and if (a) it is over-written yet, it is not a non-retention candidate for the next interval and if (b) it is not overwritten-yet, it is a non-retention candidate for the next interval.

10. The system of claim 7 further comprising a method for determining non-retention status at an end of a sequence during simulation, as part of temporal partitioning, comprising:

means for determining if the register requires retention in any interval, and if (a) yes then the register needs retention, and if (b) no and the register has been over-written, then the register does not need retention, and if (c) no and the register has not been over-written yet, then the register's status is inconclusive; and

means for determining a retention status of the register at the final state to identify registers that require retention and registers that can be non-retention.

11. The system of claim 7 further comprising a system for determining non-retention status after analyzing all sequences, comprising:

means for verifying that a register has not required retention in any sequence and, if the register has required retention in any sequence then the register requires retention; and

means for determining if there is non-retention in any sequence and (a) if there is no-retention in any sequence, then the register potentially does not require retention and (b) if there is not no-retention in any sequence, then the non-retention status is inconclusive and more tests need to be analyzed.

Assignments (3)
MERGER AND CHANGE OF NAME Recorded Jul 21, 2023
From: AVERY DESIGN SYSTEMS, INC-DE; SIEMENS INDUSTRY SOFTWARE INC.
To: SIEMENS INDUSTRY SOFTWARE INC.
Reel/Frame 064340/0230 →
CORRECTIVE ASSIGNMENT TO CORRECT THE RECEIVING PARTY NAME PREVIOUSLY RECORDED AT REEL: 34638 FRAME: 855. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jul 10, 2023
From: CHANG, KAI-HUI; LIU, YEN-TING; BROWY, CHRISTOPHER S.; HUANG, CHILAI
To: AVERY DESIGN SYSTEMS, INC-DE
Reel/Frame 064236/0342 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2014
From: CHANG, KAI-HUI; LIU, YEN-TING; BROWY, CHRISTOPHER S.; HUANG, CHI-LAI
To: AVERY DESIGN SYSTEMS, INC.
Reel/Frame 034638/0855 →
Continuity (2)
Provisional Application 61844979 · Jul 11, 2013
Provisional Application 61908233 · Nov 25, 2013