IP Library Granted Patent US 12,393,756
Granted Patent B2
US 12,393,756 · App. 18/311,886 · Granted Aug 19, 2025

Methods and apparatus for profile-guided optimization of integrated circuits

Inventors: Byron Sinclair (Toronto, CA); John Freeman (Toronto, CA)
Assignee: Altera Corporation
G06F30/343G06F8/41G06F8/4434G06F30/20G06F30/39G06F8/65G06F2111/04G06F2111/06G06F2117/08
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 12,393,756
App. No.
18/311,886
Granted
Aug 19, 2025
Kind
B2
Abstract

Methods and apparatus for performing profile-guided optimization of integrated circuit hardware are provided. Circuit design tools may receive a source code and compile the source code to generate a hardware description. The hardware description may include profiling blocks configured to measure useful information required for optimization. The hardware description may then be simulated to gather profiling data. The circuit design tools may then analyze the gathered profiling data to identify additional opportunities for hardware optimization. The source code may then be modified based on the analysis of the profiling data to produce a smaller and faster hardware that is better suited to the application.

Claims (84)

1. A method, comprising:

receiving source code to implement a function in a programmable logic device;

compiling the source code to generate a hardware description for the implementation, wherein the hardware description includes profiling blocks to enable profiling of the implementation;

receiving input data;

executing the function using the hardware description and the received input data while capturing profiling data, wherein the profiling data comprises:

monitored usage of device traces using the profiling blocks, wherein the monitored usage of device traces comprises monitored usage of traces of the programmable logic device by analyzing signals to pass through the device traces; and

monitored stall issues; and

providing a suggestion, via a display, to enable a user to approve a suggested hardware optimization to provide a more optimized implementation of the function based at least in part on the profiling data.

2. The method of claim 1 , wherein the source code comprises OpenCL, C, or C++ programming languages.

3. The method of claim 1 , wherein the hardware description comprises a register-transfer-level-based hardware description language.

4. The method of claim 3 , wherein the register-transfer-level-based hardware description language comprises Verilog or Very High Speed Integrated Circuit Hardware Description Language (VHDL).

5. The method of claim 1 , wherein the profiling data comprises dependent execution of loops.

6. The method of claim 1 , wherein the profiling data comprises latency information for the implementation.

7. The method of claim 1 , wherein the profiling data comprises area usage for the implementation.

8. The method of claim 1 , wherein the profiling data comprises power consumption for the implementation.

9. The method of claim 1 , comprising updating the implementation based at least in part on the profiling data to generate a more optimized implementation of the function.

10. The method of claim 9 , wherein updating the implementation comprises updating the source code to include indications of the more optimized implementation.

11. The method of claim 9 , wherein updating the implementation comprises updating the hardware description to include indications of the more optimized implementation.

12. The method of claim 1 , comprising analyzing the profiling data to identify opportunities for hardware optimization in implementing the function, wherein the suggestion is based at least in part on identified opportunities.

13. The method of claim 12 , wherein the identified opportunities comprise increasing optimization for a target clock frequency.

14. The method of claim 12 , wherein the identified opportunities comprise increased throughput performance.

15. The method of claim 1 , wherein the profiling data comprises monitored memory interface behavior.

16. The method of claim 1 , wherein the profiling data comprises monitored communications channel usage.

17. The method of claim 1 , wherein the profiling blocks are inserted for simulation purposes.

18. The method of claim 1 , wherein executing the function comprises simulating the function in software.

19. The method of claim 1 , wherein executing the function comprises simulating the function using in-hardware verification, and the profile blocks comprise profile block circuitry implemented for the in-hardware verification.

20. The method of claim 1 , wherein updating the implementation is based at least in part of received input from a user.

21. The method of claim 1 , wherein the suggestion comprises a suggestion to change a width of at least one of the device traces based in part on the analyzation of the signals showing that some bandwidth is not or will not be used.

22. Non-transitory, computer-readable medium having stored thereon instructions that, when executed by a processors, are to cause the processor to:

receive source code to implement a function in a programmable logic device;

compile the source code to generate a hardware description for the implementation, wherein the hardware description includes profiling blocks to enable profiling of the implementation;

receive input data;

execute the function using the hardware description and the received input data while capturing profiling data, wherein the profiling data comprises:

monitored usage of device traces using the profiling blocks, wherein the monitored usage of device traces comprises monitored usage of traces of the programmable logic device by analyzing signals to pass through the device traces; and

monitored stall issues; and

providing a suggestion, via a display, to enable a user to approve a suggested hardware optimization to provide a more optimized implementation of the function based at least in part on the profiling data.

23. The non-transitory, computer-readable medium of claim 22 , wherein the source code comprises OpenCL, C, or C++ programming languages.

24. The non-transitory, computer-readable medium of claim 22 , wherein the hardware description comprises a register-transfer-level-based hardware description language.

25. The non-transitory, computer-readable medium of claim 24 , wherein the register-transfer-level-based hardware description language comprises Verilog or Very High Speed Integrated Circuit Hardware Description Language (VHDL).

26. The non-transitory, computer-readable medium of claim 22 , wherein the profiling data comprises dependent execution of loops.

27. The non-transitory, computer-readable medium of claim 22 , wherein the profiling data comprises latency information for the implementation.

28. The non-transitory, computer-readable medium of claim 22 , wherein the profiling data comprises area usage for the implementation.

29. The non-transitory, computer-readable medium of claim 22 , wherein the profiling data comprises power consumption for the implementation.

30. The non-transitory, computer-readable medium of claim 22 , wherein the instructions when executed are to cause the processor to update the implementation based at least in part on the profiling data to generate a more optimized implementation of the function.

31. The non-transitory, computer-readable medium of claim 30 , wherein updating the implementation comprises updating the source code to include indications of the more optimized implementation.

32. The non-transitory, computer-readable medium of claim 30 , wherein updating the implementation comprises updating the hardware description to include indications of the more optimized implementation.

33. The non-transitory, computer-readable medium of claim 22 , wherein the suggestion is based at least in part on an opportunity for increasing optimization for a target clock frequency.

34. The non-transitory, computer-readable medium of claim 22 , wherein the suggestion is based at least in part on an opportunity for increased throughput performance.

35. The non-transitory, computer-readable medium of claim 22 , wherein the profiling data comprises monitored memory interface behavior.

36. The non-transitory, computer-readable medium of claim 22 , wherein the profiling data comprises monitored communications channel usage.

37. The non-transitory, computer-readable medium of claim 22 , wherein the profiling blocks are inserted for simulation purposes.

38. The non-transitory, computer-readable medium of claim 22 , wherein executing the function comprises simulating the function in software.

39. The non-transitory, computer-readable medium of claim 22 , wherein executing the function comprises simulating the function using in-hardware verification, and the profile blocks comprise profile block circuitry implemented for the in-hardware verification.

40. The non-transitory, computer-readable medium of claim 22 , wherein the suggestion comprises a suggestion to change a width of at least one of the device traces based in part on the analyzation of the signals showing that some bandwidth is not or will not be used.

41. A system, comprising:

a programmable logic device;

a processor that, when executing instructions, is to:

receive source code to implement a function in the programmable logic device;

compile the source code to generate a hardware description for the implementation, wherein the hardware description includes profiling blocks to enable profiling of the implementation;

receive input data;

execute the function using the hardware description and the received input data while capturing profiling data, wherein the profiling data comprises:

monitored usage of device traces using the profiling blocks, wherein the monitored usage of device traces comprises monitored usage of traces of the programmable logic device by analyzing signals to pass through the device traces; and

monitored stall issues; and

provide a suggestion, via a display, to enable a user to approve a suggested hardware optimization to provide a more optimized implementation of the function based at least in part on the profiling data.

42. The system of claim 41 , wherein the source code comprises OpenCL, C, or C++ programming languages.

43. The system of claim 41 , wherein the hardware description comprises a register-transfer-level-based hardware description language.

44. The system of claim 43 , wherein the register-transfer-level-based hardware description language comprises Verilog or Very High Speed Integrated Circuit Hardware Description Language (VHDL).

45. The system of claim 41 , wherein the profiling data comprises dependent execution of loops.

46. The system of claim 41 , wherein the profiling data comprises latency information for the implementation.

47. The system of claim 41 , wherein the profiling data comprises area usage for the implementation.

48. The system of claim 41 , wherein the profiling data comprises power consumption for the implementation.

49. The system of claim 41 , wherein the processor when executing the instructions is to update the implementation based at least in part on the profiling data to generate a more optimized implementation of the function.

50. The system of claim 49 , wherein updating the implementation comprises updating the source code to include indications of the more optimized implementation.

51. The system of claim 49 , wherein updating the implementation comprises updating the hardware description to include indications of the more optimized implementation.

52. The system of claim 41 , wherein the processor is to analyze the profiling data to identify opportunities for hardware optimization in implementing the function, wherein the suggestion is based at least in part on identified opportunities.

53. The system of claim 52 , wherein the identified opportunities comprise increasing optimization for a target clock frequency.

54. The system of claim 52 , wherein the identified opportunities comprise increased throughput performance.

55. The system of claim 41 , wherein the profiling data comprises monitored memory interface behavior.

56. The system of claim 41 , wherein the profiling data comprises monitored communications channel usage.

57. The system of claim 41 , wherein the profiling blocks are inserted for simulation purposes.

58. The system of claim 41 , wherein executing the function comprises simulating the function in software.

59. The system of claim 41 , wherein executing the function comprises simulating the function using in-hardware verification, and the profile blocks comprise profile block circuitry implemented for the in-hardware verification.

60. The system of claim 41 , wherein updating the implementation is based at least in part of received input from a user.

61. The system of claim 41 , wherein the suggestion comprises a suggestion to change a width of at least one of the device traces based in part on the analyzation of the signals showing that some bandwidth is not or will not be used.

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 Jan 19, 2024
From: INTEL CORPORATION
To: ALTERA CORPORATION
Reel/Frame 066353/0886 →
Continuity (2)
Continuation 15721195 · Sep 29, 2017
Related Publication 20230342531A1 · Oct 26, 2023
References Cited (60)
US 6477683B1 · Killian et al. · 2002 [cited by applicant]
US 7072818B1 · Beardslee et al. · 2006 [cited by applicant]
US 7076415B1 · Demler et al. · 2006 [cited by applicant]
US 7168059B2 · Bowyer et al. · 2007 [cited by applicant]
US 7237214B1 · Pandey · 2007 [cited by examiner]
US 7412369B1 · Gupta · 2008 [cited by applicant]
US 7813912B1 · Sundararajan · 2010 [cited by applicant]
US 8356266B1 · Ou et al. · 2013 [cited by applicant]
US 8640064B1 · Liddell · 2014 [cited by examiner]
US 8694947B1 · Venkataramani · 2014 [cited by examiner]
US 9348566B1 · Moseley et al. · 2016 [cited by applicant]
US 9442696B1 · Koh et al. · 2016 [cited by applicant]
US 9529950B1 · Sadooghi-Alvandi et al. · 2016 [cited by applicant]
US 9569179B1 · Kachmar et al. · 2017 [cited by applicant]
US 10078717B1 · Venkataramani · 2018 [cited by examiner]
US 10152566B1 · Nagarandal et al. · 2018 [cited by applicant]
US 10216254B1 · Rao · 2019 [cited by examiner]
US 10216877B2 · Vijayendra et al. · 2019 [cited by applicant]
US 10380313B1 · Schumacher et al. · 2019 [cited by applicant]
US 10489543B1 · Lysaght · 2019 [cited by examiner]
US 10558437B1 · Denisenko · 2020 [cited by applicant]
US 10650174B1 · Wilmot et al. · 2020 [cited by applicant]
US 20030140337A1 · Aubury · 2003 [cited by applicant]
US 20040015806A1 · Frank · 2004 [cited by examiner]
US 20040019859A1 · Ravi et al. · 2004 [cited by applicant]
US 20040088666A1 · Poznanovic et al. · 2004 [cited by applicant]
US 20040093601A1 · Master et al. · 2004 [cited by applicant]
US 20060259878A1 · Killian et al. · 2006 [cited by applicant]
US 20090249262A1 · Kato et al. · 2009 [cited by applicant]
US 20100268523A1 · Dhanwada et al. · 2010 [cited by applicant]
US 20100324878A1 · Lee et al. · 2010 [cited by applicant]
US 20120144376A1 · Eijdhoven et al. · 2012 [cited by applicant]
US 20120185809A1 · Kadiyala et al. · 2012 [cited by applicant]
US 20120185820A1 · Kadiyala et al. · 2012 [cited by applicant]
US 20120330637A1 · Krautz · 2012 [cited by examiner]
US 20130125097A1 · Ebcioglu et al. · 2013 [cited by applicant]
US 20160321390A1 · Bozman et al. · 2016 [cited by applicant]
US 20180074715A1 · Farmahini-Farahani et al. · 2018 [cited by applicant]
US 20180089352A1 · Vijayendra · 2018 [cited by examiner]
US 20180101624A1 · Dhar et al. · 2018 [cited by applicant]
US 20180146157A1 · Karpinsky · 2018 [cited by examiner]
US 20180225096A1 · Mishra · 2018 [cited by examiner]
US 20190113572A1 · Bose · 2019 [cited by examiner]
JP 2009015867A · 2009 [cited by examiner]
Francis B. Moreira, A dynamic block-level execution profiler, 2016, pp. 1-14. https://web.inf.ufpr.br/mazalves/wp-content/uploads/sites/13/2019/10/parco2016.pdf (Year: 2016). [cited by examiner]
JP (JP 2009015867 A), 2009, pp. 1-56 (Year: 2009). [cited by examiner]
George Kornaros, An Automated Infrastructure for Real-Time Monitoring of Multi-Core Systems-on-Chip, 2012, pp. 1-6. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6219025 (Year: 2012). [cited by examiner]
Jeffrey Goeders, Signal-Tracing Techniques for In-System FPGA Debugging of High-Level Synthesis Circuits, 2017, pp. 83-95. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7466842 (Year: 2017). [cited by examiner]
Felix Friedrich, A Compute Model for Generating High Performance Computing SoCs on Hybrid Systems with FPGAs, 2016, pp. 12-23. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7584276 (Year: 2016). [cited by examiner]
Justin L. Tripp, Trident: From High-Level Language to Hardware Circuitry, 2007, pp. 28-37. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4133993 (Year: 2007). [cited by examiner]
Carsten Gremzow, Compiled Low-Level Virtual Instruction Set Simulation and Profiling for Code Partitioning and ASIP-Synthesis in Hardware/Software Co-Design, 2007, pp. 741-747. https://dl.acm.org/doi/pdf/10.5555/1357910… [cited by examiner]
Heiko Hubert, Profiling-Based Hardware/Software Co-Exploration for the Design of Video Coding Architectures, 2009, pp. 1-12. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5229346 (Year: 2009). [cited by applicant]
Francis B. Moreira, Profiling and Optimizing Micro-Architecture Bottlenecks on the Hardware Level, 2014, pp. 1-8. http://euler.ecs.umass.edu/research/madnk-SBAC-2014.pdf (Year: 2014). [cited by applicant]
Neil E. Johnson, Code size optimization for embedded processors, 2004, pp. 1-159. https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-607.pdf (Year: 2004). [cited by applicant]
Morteza Mohajjel Kafshdooz, A Compile-Time Optimization Method for WCET Reduction in Real-Time Embedded Systems through Block Formation, 2015, pp. 1-25. https://dl.acm.org/doi/pdf/10.1145/2845083 (Year: 2015). [cited by applicant]
Narasinga Rao Miniskar, Fast Cycle-Accurate Compile Based Simulator for Reconfigurable Processor, 2012, pp. 1-4. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8050318 (Year: 2012). [cited by applicant]
Francis B. Moreira, Profiling and Reducing Micro-Architecture Bottlenecks at the Hardware Level, 2014, pp. 1-8. https://ieeexplore.ieee.org/document/6970668 (Year: 2014). [cited by applicant]
Rajendra Patel, A Survey of Embedded Software Profiling Methodologies, 2011, pp. 1-22. https://arxiv.org/ftp/arxiv/papers/1312/1312.2949.pdf (Year: 2011). [cited by applicant]
Carsten Gremzow, Compiled Low-Level Virtual Instruction Set Simulation and Profiling for Code Partitioning and ASIP-Synthesis in Hardware/Software Co-Design, 2007, pp. 741-747. https://llvm.org/pubs/2007-07-SCSC-Simulat… [cited by applicant]
Skyler Windh, High-Level Language Tools for Reconfigurable Computing, 2015, pp. 390-406. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber= 708641 0&isnumber= 7086369 (Year: 2015). [cited by applicant]