IP Library Granted Patent US 9,891,904
Granted Patent B1
US 9,891,904 · App. 12/804,880 · Granted Feb 13, 2018

Method and apparatus for optimizing implementation of a soft processor executing a fixed program on a target device

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 9,891,904
App. No.
12/804,880
Granted
Feb 13, 2018
Kind
B1
Abstract

A method for designing a system on a target device includes identifying a soft processor to implement on the target device. The soft processor is optimized in response to code to be executed on the soft processor. Other embodiments are also disclosed.

Claims (35)

1. A method for designing a system on a target device, comprising:

identifying a soft processor to implement on the target device;

optimizing the soft processor by identifying instructions supported by the soft processor that are unused by code to be executed on the soft processor, representing the unused instructions as observable don't care (ODC) values, and utilizing synthesis procedures to modify the soft processor in response to the ODC values; and

recompiling the system in response to the optimizing by performing subsequent synthesis, placement, and routing procedures on the system, wherein at least one of the optimizing and recompiling is performed by a processor.

2. The method of claim 1 , wherein optimizing the soft processor is performed in response to a designer indicating that the code is finalized.

3. The method of claim 1 , wherein optimizing the soft processor comprises utilizing synthesis procedures on the soft processor without modifying a hardware description language (HDL) description of the soft processor.

4. The method of claim 1 , wherein unused instructions are represented by synthesizable asserts.

5. The method of claim 1 , wherein unused instructions are represented by a filter block.

6. The method of claim 1 , wherein modifying the soft processor comprises reducing control and data paths.

7. The method of claim 1 , wherein optimizing the soft processor comprises:

identifying states to be represented from the code;

generating a finite state machine; and

utilizing synthesis procedures to modify the soft processor in response to using the finite state machine to obtain code to be executed.

8. The method of claim 7 , wherein modifying the soft processor comprises simplifying data paths.

9. The method of claim 1 , further comprising:

compressing the code to reduce a size of an instruction memory on the target device; and

generating hardware to perform decompression of the code on the target device.

10. The method of claim 1 , wherein optimizing the soft processor is performed after initial synthesis, placement, and routing procedures are performed on the system.

11. The method of claim 1 , further comprising developing the code after the soft processor to be implemented on the target device is identified.

12. A non-transitory computer-readable medium having stored thereon sequences of instructions, the sequences of instructions when executed by a processor causes the processor to perform:

identifying a soft processor to implement on the target device;

performing instruction filtering to optimize the soft processor in response to code to be executed on the processor if instruction filtering is determined to be feasible; and

performing instruction compression on the code to be executed on the processor if instruction filtering is determined to be infeasible.

13. The non-transitory computer-readable medium of claim 12 , wherein instruction filtering is determined to be infeasible when a number of instructions that are identified to be unused by the code does not exceed a threshold number.

14. The non-transitory computer-readable medium of claim 12 , wherein instruction filtering is determined to be infeasible when instructions that are identified to be unused by the code do not include a set of predetermined instructions.

15. The non-transitory computer-readable medium of claim 12 , further comprising instructions which when executed causes the processor to further perform:

determining whether performing instruction compression is feasible; and

generating a finite state machine with states to represent lines of the code when it is determined that instruction compression is infeasible.

16. A system designer, comprising:

a system designer manager to identify a soft processor to implement on a target device;

an optimization unit to optimize the soft processor in response to code to be executed on the processor, wherein the optimization unit comprises an instruction filtering unit that identifies instructions supported by the soft processor that are unused by the code, and represents the unused instructions as observable don't care (ODC) values to allow synthesis procedures to reduce control and data paths in response to the ODC values, wherein at least one of the system designer manager and optimization unit is performed by a processor.

17. The system designer of claim 16 , wherein optimizing the soft processor comprises utilizing synthesis procedures on the soft processor without modifying a hardware description language (HDL) description of the soft processor.

18. The system designer of claim 16 , wherein the optimization unit comprises a finite state machine unit that identifies states to be represented from the code, and generates a finite state machine to allow synthesis procedures to modify the soft processor in response to using the finite state machine to obtain code to be executed.

19. The system designer of claim 16 , wherein the optimization unit comprises a finite state machine unit to compress the code to reduce a size of an instruction memory on the target device, and generate hardware to perform decompression of the code on the target device.

20. The non-transitory computer-readable medium of claim 15 , wherein instruction compression is determined to be infeasible when a number of bits saved by compressing instructions in code is less than a number of bits required for instructions for supporting decompression of the code.

Assignments (2)
SECURITY INTEREST Recorded Sep 12, 2025
From: ALTERA CORPORATION
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 073431/0309 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 24, 2010
From: WONG, JASON; CHIU, GORDON RAYMOND; SINGH, DESHANAND; MANOHARARAJAH, VALAVAN
To: ALTERA CORPORATION
Reel/Frame 025187/0089 →