Forum Discussion
You may follow the link provided https://www.intel.com/content/www/us/en/programmable/support/support-resources/support-centers/opencl-bsp-support.html for instructions as to how you can create/modify an OpenCL BSP.
Note that you cannot connect an OpenCL kernel to an HDL module that needs I/O access since an OpenCL kernel has to be compiled against, and will automatically connect to, the interfaces provided by an existing BSP, and only the BSP can access I/O. You can, however, add your HDL module and associated I/O access to the BSP, and maybe even provide I/O channels to access said I/O inside of the OpenCL kernel.
Your other option, per mention by HRZ is to convert your OpenCL kernel to an HLS kernel and compile it to an HDL module with your own chosen interfaces using the HLS compiler and then connect the generated HDL module to your existing HDL and interfaces. You can find the documents for the HLS compiler here:
@KennyTan_Altera Is there any way to use chip plan/design partition on OpenCL project/aocx file? I have to kernels and I want to enforce their chip location.
- HRZ5 years ago
Frequent Contributor
@anaza3 The point of the Quartus project is to be used by the OpenCL compiler's automatically-generated scripts for placement and routing, it is not supposed to be modified in any way by the users. Theoretically you can read through the numerous TCL scripts generated and used by the OpenCL compiler to figure out the details of the process and potentially modify it; however, this is something that is neither supported nor encouraged by Intel. You can probably achieve your goal much faster using the HLS compiler.
- anaza35 years ago
New Contributor
@HRZ I am not sure how HLS compiler solves my problem. I have a program written for Intel OpenCL SDK, I don't think HLS can compile it unless I write the program all over again and not use the OpenCL.
As I said before, I need to use chip planner and partition planner. There should be an easier way than writing the whole program again and retargeting it for HLS.
- HRZ5 years ago
Frequent Contributor
If your OpenCL kernel is Single Work-item, it can be converted to HLS without too much trouble since it is basically some sequential C code plus some pragmas, all of which have an equivalent in HLS. If your kernel is NDRange, however, then yes, you will have to rewrite it completely. The HLS flow is designed for FPGA programmers who are more used to traditional RTL programming and is completely different from the OpenCL flow. I am afraid I don't think there is a straightforward method to achieve what you want.