Hardware Acceleration
Use the following links to browse through the frequently asked questions relevant to this area of soft design.
- What is hardware acceleration?
- How can I use Altium's C-to-Hardware Compilation Technology?
- When using C Code Symbols to implement custom logic, can the C-to-Hardware Compiler generate Verilog from the C source code?
- Can Altium's C-to-Hardware Compiler convert any C source function into a hardware circuit?
- Can a global variable that has been allocated in hardware be accessed by a software-based function?
- I'm using hardware acceleration in my design – what interaction is possible between the hardware and software-based functions?
- When using an ASP component in a design, how are the Generate ASP and Use ASP from Software options best used?
What is hardware acceleration?
How can I use Altium's C-to-Hardware Compilation Technology?
In terms of FPGA design within Altium Designer, there are two ways in which the CHC technology can be used:
- To design custom FPGA logic using C. In this case the CHC technology is used to translate a single C source function – referenced using a C Code Symbol – into a hardware function. The end result is an independent module of FPGA logic which connects, through defined IO ports, to other areas of the circuit design.
- To accelerate processor systems. In this case, the CHC technology is used to translate specified software functions in the C source code into hardware functions, which can be called by the embedded software running on a 'soft' processor in the design.
- The C-to-Hardware Compiler is used in conjunction with Altium Designer's traditional embedded software compilers to build a system in which an embedded processor can offload critical functions to hardware. Access to, and control over, the generated hardware functions, is made possible through use of an appropriately-configured Application Specific Processor peripheral component (ASP).
When using C Code Symbols to implement custom logic, can the C-to-Hardware Compiler generate Verilog from the C source code?
The C-to-Hardware Compiler can generate VHDL or Verilog from the C code. By default, VHDL will be generated. Change this as required using the corresponding options available in the Compiler Netlist region, on the FPGA - General page of the Preferences dialog (DXP » Preferences).
Can Altium's C-to-Hardware Compiler convert any C source function into a hardware circuit?
It is important to understand that while virtually all C programs can be converted to an electronic circuit by the C-to-Hardware Compiler, it is the characteristics of a source function that ultimately determines whether the Compiler can create an efficient hardware component, or whether it is better to execute that function on a processor core. The Compiler can only create a small and fast electronic circuit if the C source code is parallelizable.
Can a global variable that has been allocated in hardware be accessed by a software-based function?
A global variable that is allocated in hardware can only be accessed by a function that has also been implemented in hardware. Such a variable can not be called from a software-based function running on the host processor.
I'm using hardware acceleration in my design – what interaction is possible between the hardware and software-based functions?
- A hardware function can call another hardware function.
- A hardware function can not call a software function.
- A software function running on the host processor can call a hardware function, provided that hardware function has been exported to software.
- A hardware-only function (not exported to software) can call a hardware function that has been exported to software. Conversely, a hardware function that has been exported to software can call a hardware-only function.
When using an ASP component in a design, how are the Generate ASP and Use ASP from Software options best used?