Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
21099 Discussions

Some questions about intel HLS RTL design.

Altera_Forum
Honored Contributor II
2,178 Views

Hello.  

 

 

I am currently testing RTL design using Intel HLS. There are a number of errors that occur during HLS compilation and RTL conversion, but the error seems to lack work around or guide. 

I'd like to ask you a few questions about this difficulty. This includes questions about HLS optimization errors and their own concepts. 

 

 

- Is the intel HLS software for creating one independent RTL IP?  

- Does a verilog top design with multiple sub-modules(instances) need to be designed manually? (I don't need to use SOPC or SOC. So, I also don't consider Qsys to design)  

- Is it possible to obtain a generic sequential RTL design with HLS that does not include an Avalon interface? What is the exact purpose of the hls_always_run_component? 

- The user manual says that the HLS/matrix_mult.h library for matrix multiplication is provided, but where is it located? Not found in Quaruts 17.1 standard and lite in use. 

- Where can I find the meaning of error messages generated when converting the FPGA? 

I got an error : Call parameter type does not match function signature! What does this mean?  

Here's a code structure I've created. Please give me a lot of advice. 

 

code: main.cpp 

 

float (*function1(x,x,x))[3] {} 

float (*function2(x,x,x))[3] {} 

float (*function3(x,x,x))[3] {} 

 

component float (*aaa())[2] { 

float (*y1)[3] = function1(x,x,x); 

float (*y2)[3] = function1(y1,x,x); 

.... 

return y9; 

 

int main() { 

float (*aaa_out)[2] = aaa(); 

printf("%f\n", aaa_out[0][0]); 

... 

return 0; 

}
0 Kudos
4 Replies
Altera_Forum
Honored Contributor II
1,075 Views

Hi, 

 

The error may be because: 

A component cannot include virtual functions, function pointers, or bit fields. 

 

--- Quote Start ---  

- Is it possible to obtain a generic sequential RTL design with HLS that does not include an Avalon interface? What is the exact purpose of the hls_always_run_component? 

--- Quote End ---  

 

Yes you can create, check the 4.1.1 Scalar parameter of linkhttps://www.altera.com/en_us/pdfs/literature/hb/hls/mnl-hls-reference.pdf 

All pointers share a single Avalon Memory-Mapped (MM) master interface that the component uses to access system memory. 

 

--- Quote Start ---  

- The user manual says that the HLS/matrix_mult.h library for matrix multiplication is provided, but where is it located? Not found in Quartus 17.1 standard and lite in use. 

--- Quote End ---  

 

Check-in Quartus version 18. 

 

--- Quote Start ---  

- Is the intel HLS software for creating one independent RTL IP?  

--- Quote End ---  

 

Yes, Generates reusable intellectual property (IP) for system integration using the Platform Designer (formerly Qsys). 

 

Let me know if this has helped resolve the issue you are facing or if you need any further assistance. 

 

Best Regards, 

Anand Raj Shankar 

(This message was posted on behalf of Intel Corporation)
0 Kudos
Altera_Forum
Honored Contributor II
1,075 Views

Hi, 

 

Thank you very much. Excuse me, but I have one more question.  

When can I use hls_always_run_component option? What is happening If I use this option? User manual is not enough to understand for me.
0 Kudos
Altera_Forum
Honored Contributor II
1,075 Views

Hi, 

 

1. HLS generates handshaking logic to interface with the rest of your system. In addition to the parameters you specify, it generates a component invocation interface containing the start/busy and done/stall signals.  

2. You can use the hls_always_run_component attribute to disable the handshaking logic (Can check in RTL viewer): 

hls_always_run_component component float add_fp_tiger(float a, float b) { float p; p = a + b; return p; } // test the scalar addition within hard-FP 

Note that with the handshaking logic disabled, you cannot use the co-simulation flow to validate your component (like Xilinx). 

 

 

Best Regards, 

Anand Raj Shankar 

(This message was posted on behalf of Intel Corporation)
0 Kudos
NSuku1
Beginner
1,075 Views

Hi!

 

I am using Quartus Prime Standard 18.1. Still, I could not find the matrix_mult.h header file.

 

Please let me know.

 

Thanks,

Nivetha

0 Kudos
Reply