Forum Discussion
Intel HLS 17.1 verilog code generation error.
If I have such a declaration of function:
"hls_avalon_slave_component component
void hls_aes256(hls_avalon_slave_memory_argument(1) uint8_t *control,
hls_avalon_slave_memory_argument(32) uint8_t *key,
hls_avalon_slave_memory_argument(16) uint8_t *in_data,
hls_avalon_slave_memory_argument(16) uint8_t *out_data)"
why it generates verilog in the code:
"module hls_aes256_internal
(
input logic clock,
input logic resetn,
input logic clock2x,
output logic done_irq,
// AVS avs_control
input logic avs_control_enable,
input logic avs_control_read,
input logic avs_control_write,
input logic avs_control_address,
input logic [7:0] avs_control_writedata,
input logic avs_control_byteenable,
output logic [7:0] avs_control_readdata,
output logic avs_control_readdatavalid,
// AVS avs_cra
input logic avs_cra_enable,
input logic avs_cra_read,
input logic avs_cra_write,
input logic [1:0] avs_cra_address,
input logic [63:0] avs_cra_writedata,
input logic [7:0] avs_cra_byteenable,
output logic [63:0] avs_cra_readdata,
output logic avs_cra_readdatavalid,
// AVS avs_in_data
input logic avs_in_data_enable,
input logic avs_in_data_read,
input logic avs_in_data_write,
input logic avs_in_data_address,
input logic [127:0] avs_in_data_writedata,
input logic [15:0] avs_in_data_byteenable,
output logic [127:0] avs_in_data_readdata,
output logic avs_in_data_readdatavalid,
// AVS avs_key
input logic avs_key_enable,
input logic avs_key_read,
input logic avs_key_write,
input logic [2:0] avs_key_address,
input logic [31:0] avs_key_writedata,
input logic [3:0] avs_key_byteenable,
output logic [31:0] avs_key_readdata,
output logic avs_key_readdatavalid,
// AVS avs_out_data
input logic avs_out_data_enable,
input logic avs_out_data_read,
input logic avs_out_data_write,
input logic [2:0] avs_out_data_address,
input logic [15:0] avs_out_data_writedata,
input logic [1:0] avs_out_data_byteenable,
output logic [15:0] avs_out_data_readdata,
output logic avs_out_data_readdatavalid
);"
12 Replies
- MuhammadAr_U_Intel
Contributor
Hi,
I am looking at this thread, I am not sure if I understand you correctly.
Are you asking why HLS generate Verilog code ? or is there any problem in generated code ? Please specify.
HLS is intended to generate the HDL code (Verilog) in this case, that can be used later in Quartus to generate programming file or to integrate with rest of your design.
You might want to take a look at our HLS web page.
https://www.intel.com/content/www/us/en/software/programmable/quartus-prime/hls-compiler.html
Thanks,
Arslan
- LKwia
New Contributor
If I have a port declaration "hls_avalon_slave_memory_argument(16) uint8_t *in_data" then I should get a:
// AVS avs_in_data
input logic avs_in_data_enable,
input logic avs_in_data_read,
input logic avs_in_data_write,
input logic [3:0] avs_in_data_address,
input logic [7:0] avs_in_data_writedata,
input logic avs_in_data_byteenable,
output logic [7:0] avs_in_data_readdata,
output logic avs_in_data_readdatavalid.
- MuhammadAr_U_Intel
Contributor
Hi,
Can you confirm the version of HLS you are using ?
Also which OS Windows / Linux ?
Thanks,
Arslan
- LKwia
New Contributor
Quartus Prime 17.1.0 Build 590 Standard Edition, Windows 10 64bit.
- LKwia
New Contributor
I wrote aes in opencl, but in program "Intel® FPGA SDK for OpenCL 17.1 (aoc)" also generates errors.
set AOCL_BOARD_PACKAGE_ROOT=C:\intelFPGA\17.1\hld\board\c5soc
aoc -g0 -board=c5soc_sharedonly aes256.cl -o aes256
I will not upgrade to newer software (Quartus v18.0) because it has an unstable synthesis.
And now a very important question will appear:
Is it in your company, in addition to marketing, something does it still normally works ?
- HRZ
Frequent Contributor
I cannot comment on your HLS problem but the OpenCL compilation is not working because of this error:
C:/Users/user/Desktop/OpenCL_AES/aes256/system/synthesis/submodules/acl_fifo_stall_valid_lookahead.sv Line: 25
Error (10759): Verilog HDL error at aes256_system.v(311): object aes256Encrypt_finish declared in a list of port declarations cannot be redeclared within the module body File: C:/Users/user/Desktop/OpenCL_AES/aes256/system/synthesis/submodules/aes256_system.v Line: 311
Are you using an HDL library in the OpenCL code? I don't see why you would get such error with a standard OpenCL design.
- LKwia
New Contributor
I'm not using additional HDL library, "aoc" generates errors.
- MuhammadAr_U_Intel
Contributor
Hi @LKwia
Indeed what you quoted as HLS output is incorrect.
I have tried to create a similar component on my HLS 18.1 Standard Edition Windows 10, I got the correct output (dsee code snippets below).
My suggestion to you will be to update to latest version.
C++ Component Definition:
component void hls_aes256( hls_avalon_slave_memory_argument(1) uint8_t *control, hls_avalon_slave_memory_argument(32) uint8_t *key, hls_avalon_slave_memory_argument(16) uint8_t *in_data, hls_avalon_slave_memory_argument(16) uint8_t *out_data, int N )Verilog Output:
// Generated by Intel(R) HLS Compiler, Version 18.1.0 Build 625 ///////////////////////////////////////////////////////////////// // MODULE hls_aes256_internal ///////////////////////////////////////////////////////////////// module hls_aes256_internal ( input logic clock, input logic resetn, input logic [31:0] N, input logic start, output logic busy, output logic done, input logic stall, // AVS avs_control input logic avs_control_enable, input logic avs_control_read, input logic avs_control_write, input logic avs_control_address, input logic [7:0] avs_control_writedata, input logic avs_control_byteenable, output logic [7:0] avs_control_readdata, output logic avs_control_readdatavalid, // AVS avs_in_data input logic avs_in_data_enable, input logic avs_in_data_read, input logic avs_in_data_write, input logic [3:0] avs_in_data_address, input logic [7:0] avs_in_data_writedata, input logic avs_in_data_byteenable, output logic [7:0] avs_in_data_readdata, output logic avs_in_data_readdatavalid, // AVS avs_key input logic avs_key_enable, input logic avs_key_read, input logic avs_key_write, input logic [4:0] avs_key_address, input logic [7:0] avs_key_writedata, input logic avs_key_byteenable, output logic [7:0] avs_key_readdata, output logic avs_key_readdatavalid, // AVS avs_out_data input logic avs_out_data_enable, input logic avs_out_data_read, input logic avs_out_data_write, input logic [3:0] avs_out_data_address, input logic [7:0] avs_out_data_writedata, input logic avs_out_data_byteenable, output logic [7:0] avs_out_data_readdata, output logic avs_out_data_readdatavalid );Thanks,
Arslan
- LKwia
New Contributor
I do not know what you did, that it works well.
But with me it works the same way.
// Generated by Intel(R) HLS Compiler, Version 18.1.0 Build 625
/////////////////////////////////////////////////////////////////
// MODULE hls_aes256_internal
/////////////////////////////////////////////////////////////////
module hls_aes256_internal
(
input logic clock,
input logic resetn,
input logic clock2x,
output logic done_irq,
// AVS avs_control
input logic avs_control_enable,
input logic avs_control_read,
input logic avs_control_write,
input logic avs_control_address,
input logic [7:0] avs_control_writedata,
input logic avs_control_byteenable,
output logic [7:0] avs_control_readdata,
output logic avs_control_readdatavalid,
// AVS avs_cra
input logic avs_cra_enable,
input logic avs_cra_read,
input logic avs_cra_write,
input logic [1:0] avs_cra_address,
input logic [63:0] avs_cra_writedata,
input logic [7:0] avs_cra_byteenable,
output logic [63:0] avs_cra_readdata,
output logic avs_cra_readdatavalid,
// AVS avs_in_data
input logic avs_in_data_enable,
input logic avs_in_data_read,
input logic avs_in_data_write,
input logic avs_in_data_address,
input logic [127:0] avs_in_data_writedata,
input logic [15:0] avs_in_data_byteenable,
output logic [127:0] avs_in_data_readdata,
output logic avs_in_data_readdatavalid,
// AVS avs_key
input logic avs_key_enable,
input logic avs_key_read,
input logic avs_key_write,
input logic [2:0] avs_key_address,
input logic [31:0] avs_key_writedata,
input logic [3:0] avs_key_byteenable,
output logic [31:0] avs_key_readdata,
output logic avs_key_readdatavalid,
// AVS avs_out_data
input logic avs_out_data_enable,
input logic avs_out_data_read,
input logic avs_out_data_write,
input logic [2:0] avs_out_data_address,
input logic [15:0] avs_out_data_writedata,
input logic [1:0] avs_out_data_byteenable,
output logic [15:0] avs_out_data_readdata,
output logic avs_out_data_readdatavalid
);
- MuhammadAr_U_Intel
Contributor
How about sharing your .cpp file ?