IP Library Granted Patent US 7,594,201
Granted Patent B2
US 7,594,201 · App. 11/460,680 · Granted Sep 22, 2009

Enhanced method of optimizing multiplex structures and multiplex control structures in RTL code

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 7,594,201
App. No.
11/460,680
Granted
Sep 22, 2009
Kind
B2
Abstract

A method and computer program are disclosed for optimizing RTL code for an integrated circuit design that include steps of method of optimizing register transfer level code for an integrated circuit design comprising steps of receiving as input a first register transfer level code for the integrated circuit design and receiving as input criteria defining a critical multiplex structure. The first register transfer level code is analyzed to identify multiplex structures in the first register transfer level code. Each of the multiplex structures identified in the first register transfer level code is compared to the criteria defining a critical multiplex structure. Each of the multiplex structures identified in the first register transfer level code that satisfy the criteria defining a critical multiplex structure is entered in a list of critical multiplex structures. The list of critical multiplex structures is generated as output.

Claims (52)

1. A method of optimizing register transfer level code for an integrated circuit design by a computer system comprising steps of:

(a) receiving as input of the computer system a first register transfer level code for the integrated circuit design;

(b) receiving as input criteria defining a critical multiplex structure;

(c) analyzing the first register transfer level code to identify multiplex structures in the first register transfer level code;

(d) comparing each of the multiplex structures identified in the first register transfer level code to the criteria defining a critical multiplex structure;

(e) including each of the multiplex structures identified in the first register transfer level code that satisfy the criteria defining a critical multiplex structure in a list of critical multiplex structures; and

(f) generating as output the list of critical multiplex structures.

2. The method of claim 1 further comprising a step of manually entering a multiplex structure in the list of critical multiplex structures.

3. The method of claim 1 further comprising a step of replacing each of the multiplex structures in the list of critical multiplex structures with corresponding noncritical multiplex structures.

4. The method of claim 3 further comprising a step of generating as output a second register transfer level code for the integrated circuit design with the corresponding non-critical multiplex structures.

5. The method of claim 1 further comprising including a variable and a threshold value for each variable in the criteria defining a critical multiplex structure.

6. The method of claim 5 further comprising including a variable in the criteria defining a critical multiplex structure for at least one of a number of buses, a number of signals per bus, a total number of signals, a number of register bank sources, a number of memory sources, a number of flip-flops, a number of start points, and a number of endpoints.

7. The method of claim 5 further comprising weighting the variable by a variable function of a priority value assigned to the variable.

8. A method of optimizing register transfer level code for an integrated circuit design by a computer system comprising steps of:

(a) receiving as input of the computer system a first register transfer level code for the integrated circuit design;

(b) receiving as input criteria defining a critical multiplex control structure;

(c) analyzing the first register transfer level code to identify multiplex control structures in the first register transfer level code;

(d) comparing each of the multiplex control structures identified in the first register transfer level code to the criteria defining a critical multiplex control structure;

(e) entering each of the multiplex control structures identified in the first register transfer level code that satisfy the criteria defining a critical multiplex control structure in a list of critical multiplex control structures; and

(f) generating as output the list of critical multiplex control structures.

9. The method of claim 8 further comprising a step of manually entering a multiplex control structure in the list of critical multiplex control structures.

10. The method of claim 8 further comprising a step of replacing each of the multiplex control structures in the list of critical multiplex control structures with corresponding non-critical multiplex control structures.

11. The method of claim 10 further comprising a step of generating as output a second register transfer level code for the integrated circuit design with the corresponding non-critical multiplex control structures.

12. The method of claim 8 further comprising including a variable and a threshold value for each variable in the criteria defining a critical multiplex control structure.

13. The method of claim 12 further comprising including a variable in the criteria defining a critical multiplex control structure for at least one of a number of buses, a number of signals per bus, a total number of signals, a number of register bank sources, a number of memory sources, a number of flip-flops, a number of start points, and a number of endpoints.

14. The method of claim 12 further comprising weighting the variable by a variable function of a priority value assigned to the variable.

15. A computer program product for optimizing register transfer level code for an integrated circuit design comprising a medium for embodying a computer program for input to a computer and a computer program embodied in the medium for causing the computer to perform steps of:

(a) receiving as input a first register transfer level code for the integrated circuit design;

(b) receiving as input criteria defining a critical multiplex structure;

(c) analyzing the first register transfer level code to identify all multiplex structures in the first register transfer level code;

(d) comparing each of the multiplex structures identified in the first register transfer level code to the criteria defining a critical multiplex structure;

(e) entering each of the multiplex structures identified in the first register transfer level code that satisfy the criteria defining a critical multiplex structure in a list of critical multiplex structures; and

(f) generating as output the list of critical multiplex structures.

16. The computer program product of claim 15 further comprising a step of manually entering a multiplex structure in the list of critical multiplex structures.

17. The computer program product of claim 15 further comprising a step of replacing each of the multiplex structures in the list of critical multiplex structures with corresponding non-critical multiplex structures.

18. The computer program product of claim 17 further comprising a step of generating as output a second register transfer level code for the integrated circuit design with the corresponding non-critical multiplex structures.

19. The computer program product of claim 15 further comprising including a variable and a threshold value for each variable in the criteria defining a critical multiplex structure.

20. The computer program product of claim 19 further comprising including a variable in the criteria defining a critical multiplex structure for at least one of a number of buses, a number of signals per bus, a total number of signals, a number of register bank sources, a number of memory sources, a number of flip-flops, a number of start points, and a number of endpoints.

21. The computer program product of claim 19 further comprising weighting the variable by a variable function of a priority value assigned to the variable.

22. A computer program product for optimizing register transfer level code for an integrated circuit design comprising a medium for embodying a computer program for input to a computer and a computer program embodied in the medium for causing the computer to perform steps of:

(a) receiving as input a first register transfer level code for the integrated circuit design;

(b) receiving as input criteria defining a critical multiplex control structure;

(c) analyzing the first register transfer level code to identify multiplex control structures in the first register transfer level code;

(d) comparing each of the multiplex control structures identified in the first register transfer level code to the criteria defining a critical multiplex control structure;

(e) entering each of the multiplex control structures identified in the first register transfer level code that satisfy the criteria defining a critical multiplex control structure in a list of critical multiplex control structures; and

(f) generating as output the list of critical multiplex control structures.

23. The computer program product of claim 22 further comprising a step of manually entering a multiplex control structure in the list of critical multiplex control structures.

24. The computer program product of claim 22 further comprising a step of replacing each of the multiplex control structures in the list of critical multiplex control structures with corresponding non-critical multiplex control structures.

25. The computer program product of claim 24 further comprising a step of generating as output a second register transfer level code for the integrated circuit design with the corresponding non-critical multiplex control structures.

26. The computer program product of claim 22 further comprising including a variable and a threshold value for each variable in the criteria defining a critical multiplex control structure.

27. The computer program product of claim 26 further comprising including a variable in the criteria defining a critical multiplex control structure for at least one of a number of buses, a number of signals per bus, a total number of signals, a number of register bank sources, a number of memory sources, a number of flip-flops, a number of start points, and a number of endpoints.

28. The computer program product of claim 26 further comprising weighting the variable by a variable function of a priority value.

Assignments (11)
RELEASE OF SECURITY INTEREST Recorded Apr 15, 2022
From: CORTLAND CAPITAL MARKET SERVICES LLC
To: HILCO PATENT ACQUISITION 56, LLC; BELL SEMICONDUCTOR, LLC; BELL NORTHERN RESEARCH, LLC
Reel/Frame 059720/0223 →
SECURITY INTEREST Recorded Feb 1, 2018
From: HILCO PATENT ACQUISITION 56, LLC; BELL SEMICONDUCTOR, LLC; BELL NORTHERN RESEARCH, LLC
To: CORTLAND CAPITAL MARKET SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 045216/0020 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 17, 2017
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.; BROADCOM CORPORATION
To: BELL SEMICONDUCTOR, LLC
Reel/Frame 044887/0109 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2015
From: LSI CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035390/0388 →
CHANGE OF NAME Recorded Jun 6, 2014
From: LSI LOGIC CORPORATION
To: LSI CORPORATION
Reel/Frame 033102/0270 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
MERGER Recorded Feb 19, 2008
From: LSI SUBSIDIARY CORP.
To: LSI CORPORATION
Reel/Frame 020548/0977 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2006
From: LAHNER, JUERGEN; ATMAKURI, KIRAN; CHATURVEDULA, KAVITHA
To: LSI LOGIC CORPORATION
Reel/Frame 018197/0200 →