Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
16594 Discussions

Complier Error, Quartus Prime Fitter was unsuccessful

Altera_Forum
Honored Contributor II
11,149 Views

Hi,  

I tried to compile a compution.cl file with aoc command to generate computation.aocx.  

(The command line is aoc -v computation.cl -o computation.aocx) 

But It failed to generate .aocx file and only .aoco file was generated. 

With the -v , it showed the stage of compiling on the screen and the information is : 

 

------screen------- 

aoc: environment checks are completed successfully. 

you are now compiling the full flow!! 

aoc: selected default target board a10gx 

aoc: running opencl parser.... 

aoc: opencl parser completed successfully. 

aoc: compiling.... 

aoc: linking with ip library ... 

warning: kernel 'fullylayer' has unused argument 'inputdatasize' 

aoc: first stage compilation completed successfully. 

error: compiler error, not able to generate hardware 

--------------------- 

 

Then I checked computation.log in the computation floder. It showed no error occured : 

 

-------computation.log--------- 

info: quartus prime shell was successful. 0 errors, 0 warnings 

info: peak virtual memory: 581 megabytes 

info: processing ended: fri jun 16 09:08:55 2017 

info: elapsed time: 00:00:34 

info: total cpu time (on all processors): 00:00:00 

---------------------------------- 

 

Then I checked top.fit.rpt for more information and the usage of resource in this file showed the resource was enough

 

+--------------------------------------------------------------------------+ 

; fitter summary ; 

+-----------------------------+--------------------------------------------+ 

; fitter status ; failed - fri jun 16 13:32:10 2017 ; 

; quartus prime version ; 16.1.1 build 200 11/30/2016 sj pro edition ; 

; revision name ; top ; 

; top-level entity name ; top ; 

; family ; arria 10 ; 

; device ; 10ax066n3f40e2sg ; 

; timing models ; final ; 

; logic utilization (in alms) ; 30,540 / 251,680 ( 12 % ) ; 

; total registers ; 302754 ; 

; total pins ; 290 / 812 ( 36 % ) ; 

; total virtual pins ; 0 ; 

; total block memory bits ; 22,860,776 / 43,642,880 ( 52 % ) ; 

; total ram blocks ; 218 / 2,131 ( 10 % ) ; 

; total dsp blocks ; 234 / 1,687 ( 14 % ) ; 

; total hssi rx channels ; 8 / 48 ( 17 % ) ; 

; total hssi tx channels ; 8 / 48 ( 17 % ) ; 

; total plls ; 57 / 96 ( 59 % ) ; 

+-----------------------------+--------------------------------------------+ 

 

but at the end of top.fit.rpt, it reported some errors :  

 

----------top.fit.rpt----------error (18999): placement cannot find a legal solution. 

error (18999): placement cannot find a legal solution. 

error (18999): placement cannot find a legal solution. 

error (18999): placement cannot find a legal solution. 

info (170191): fitter placement operations beginning 

info (170192): fitter placement operations ending: elapsed time is 00:01:11 

info (11888): total time spent on timing analysis during placement is 572.60 seconds. 

error: an error occurred during placement 

info (144001): generated suppressed messages file c:/users/xinzhou/desktop/dnn_1.1.1.1/bin_profile/fully_layer/top.fit.smsg 

error: quartus prime fitter was unsuccessful. 5 errors, 1014 warnings 

error: peak virtual memory: 24521 megabytes 

error: processing ended: fri jun 16 13:32:25 2017 

error: elapsed time: 03:02:03 

error: total cpu time (on all processors): 08:17:02 

 

+----------------------------+ 

; fitter suppressed messages ; 

+----------------------------+ 

the suppressed messages can be found in c:/users/... 

-------------- 

 

What's more, my OS is Windows 10 Professional , Quartus version is 16.1.1, AOC version is 16.1.0, and It generated .aocx file successfully Before with other OpenCL kernel file. 

Why it failed to generate .aocx file? And what should I do to shoot this trouble? 

I am waiting for your reply. Thank you.
0 Kudos
11 Replies
Altera_Forum
Honored Contributor II
7,357 Views

Multiple things to note: 

 

1. The "Warning: Kernel 'fullyLayer' has unused argument 'inputDataSize'" is not normal; make sure you haven't made any mistakes in the design of your kernel that something is being optimized out by the compiler. If the argument is really not used, just remove it. 

 

2. "Total block memory bits ; 22,860,776 / 43,642,880 ( 52 % )" and "Total RAM Blocks ; 218 / 2,131 ( 10 % ) ;" does not make any sense; you are probably overutilizing the Block RAMs and the Block RAM number is "overflowing" in the report. I have seen this multiple times before. Actual utilization is probably 110% and not 10%. 

 

3. Compilation is failing during placement, most likely due to Block RAMs overutilization. Please attach the "quartus_sh_compile.log" file so that I can take a closer look. 

 

4. Never mix different versions of AOC and Quartus; always use a version x.y.z with biggest y and z for both. In your case, make sure to update both Quartus and AOC to 16.1.2.
0 Kudos
Altera_Forum
Honored Contributor II
7,357 Views

Thanks for ur help! 

 

I followed ur advise and removed the argument which is useless in the kernel code, Now, I'm trying to update Quartus and AOC to 16.1.2.  

Attachment is the file "quartus_sh_compile.log", at the end of log it shows some errors that " Error (18999): Placement cannot find a legal solution. ". What does it mean? 

It seems the log file is too big to update, so I packaging it. Im sorry about additional work you have to do with the .zip file. If it is not convenient, I ll attach the file with bottom lines in the log file. 

Again, Thanks for your help! 

 

 

--- Quote Start ---  

Multiple things to note: 

 

1. The "Warning: Kernel 'fullyLayer' has unused argument 'inputDataSize'" is not normal; make sure you haven't made any mistakes in the design of your kernel that something is being optimized out by the compiler. If the argument is really not used, just remove it. 

 

2. "Total block memory bits ; 22,860,776 / 43,642,880 ( 52 % )" and "Total RAM Blocks ; 218 / 2,131 ( 10 % ) ;" does not make any sense; you are probably overutilizing the Block RAMs and the Block RAM number is "overflowing" in the report. I have seen this multiple times before. Actual utilization is probably 110% and not 10%. 

 

3. Compilation is failing during placement, most likely due to Block RAMs overutilization. Please attach the "quartus_sh_compile.log" file so that I can take a closer look. 

 

4. Never mix different versions of AOC and Quartus; always use a version x.y.z with biggest y and z for both. In your case, make sure to update both Quartus and AOC to 16.1.2. 

--- Quote End ---  

0 Kudos
Altera_Forum
Honored Contributor II
7,357 Views

"Placement cannot find a legal solution" usually means that you need some resource (RAM, DSP, etc.) on the FPGA, but that resource has been fully used and there is nothing else left. 

 

The closest thing I could find to a meaningful error message in the log was this: 

 

Error (17937): The inputs to the LAB at location (68,69) exceed the number of legal inputs. This LAB may be locked or have other LAB-level input restrictions. Refer to the submessage(s) for the specific input nodes that do not fit in the LAB. Remove some inputs to this LAB so the number of inputs does not exceed the legal limit. File: c:/intelfpga_pro/16.1/quartus/libraries/megafunctions/altera_counter.sv Line: 59 

 

But I had personally never seen such message before; the message that is printed in the log when you overutilize the Block RAMs is different. Can you please retry the compilation after updating to 16.1.2 and see what happens? 

 

Also please add --report to your compilation log and post the area estimation that you receive in stdout after adding that switch.
0 Kudos
Altera_Forum
Honored Contributor II
7,357 Views

--------------------Update-------------------- 

My DSP package do not support 16.1.2 and higher version, this is the reason that the strange errors occured. 

Now I rollback both Quartus and AOC to 16.1.1, the problem has been solved. 

i ll update the result of this compilation later. Thanks for ur help!. 

 

following questions have been solved. 

============ 

Hi, 

I updated quartus and aoc/aocl to 16.1.2, but there were some strange errors...... 

I try to compile a simple OpenCL kernel code with aoc -v --report xxx.cl -o xxx.aocx 

But the compilation was failed and the quartus_sh_compile showed:Error (15653): The Fitter cannot find a legal configuration for the following atoms. Update any outdated transceiver PHY IP cores, correct any illegal pin assignments, and then recompile your design. Error (15744): In atom 'board_inst|pcie|pcie|altpcie_a10_hip_pipen1b|g_xcvr.altpcie_a10_hip_pllnphy|g_xcvr.g_phy_g3x8.phy_g3x8|phy_g3x8|g_xcvr_native_insts.twentynm_xcvr_native_inst|twentynm_xcvr_native_inst|inst_twentynm_pma|gen_twentynm_hssi_pma_rx_sd.inst_twentynm_hssi_pma_rx_sd' Error (15744): The settings must match one or more of these conditions: Error (15744): ( sup_mode == ENGINEERING_MODE ) OR ( prot_mode != PCIE_GEN3_RX ) OR ( sd_output_off == CLK_DIVRX_14 ) Error (15744): But the following assignments violate the above conditions: Error (15744): sup_mode = USER_MODE Error (15744): prot_mode = PCIE_GEN3_RX Error (15744): sd_output_off = CLK_DIVRX_6 Error (18590): The imported netlist contains settings that are not supported by the current version of the software. Import using the --timing_analysis_mode option, which ignores the errors and allows Timing Analysis to be run. Error: design::import_design -file base.qdb -overwrite failed! Error (23031): Evaluation of Tcl script d:/intelfpga_pro/quartus/common/tcl/internal/qatm_import_design.tcl unsuccessful Error: Quartus Prime Compiler Database Interface was unsuccessful. 11 errors, 0 warnings Error: Peak virtual memory: 3998 megabytes Error: Processing ended: Thu Jun 29 17:53:43 2017 Error: Elapsed time: 00:19:03 Error: Total CPU time (on all processors): 00:19:03 Info: ******************************************************************* Info: Running Quartus Prime Compiler Database Interface Info: Version 16.1.2 Build 203 01/18/2017 SJ Pro Edition Info: Copyright (C) 2017 Intel Corporation. All rights reserved. Info: Your use of Intel Corporation's design tools, logic functions Info: and other software and tools, and its AMPP partner logic Info: functions, and any output files from any of the foregoing Info: (including device programming or simulation files), and any Info: associated documentation or information are expressly subject Info: to the terms and conditions of the Intel Program License Info: Subscription Agreement, the Intel Quartus Prime License Agreement, Info: the Intel MegaCore Function License Agreement, or other Info: applicable license agreement, including, without limitation, Info: that your use is for the sole purpose of programming logic Info: devices manufactured by Intel and sold by Intel or its Info: authorized distributors. Please refer to the applicable Info: agreement for further details. Info: Processing started: Thu Jun 29 17:34:40 2017 Info: Command: quartus_cdb -t import_compile.tcl Info: Using INI file c:/Users/xinzhou/altera/test_version_hello/test_result/quartus.ini Error (23031): Evaluation of Tcl script import_compile.tcl unsuccessful Error: Quartus Prime Compiler Database Interface was unsuccessful. 1 error, 0 warnings Error: Peak virtual memory: 509 megabytes Error: Processing ended: Thu Jun 29 17:53:45 2017 Error: Elapsed time: 00:19:05 Error: Total CPU time (on all processors): 00:00:00 

But I have already used customized bsp package. What's more, aocl diagnose also failed and the screen showed: 

Using platform: Intel(R) FPGA SDK for OpenCL(TM) Using Device with name: a10gx : Arria 10 Reference Platform (acla10_ref0) Using Device from vendor: Intel(R) Corporation clGetDeviceInfo CL_DEVICE_GLOBAL_MEM_SIZE = 4294967296 clGetDeviceInfo CL_DEVICE_MAX_MEM_ALLOC_SIZE = 4293918720 Memory consumed for internal use = 1048576 Actual maximum buffer size = 4293918720 bytes Writing 4095 MB to global memory ... Allocated 1073741824 Bytes host buffer for large transfers Write speed: 3232.35 MB/s Reading and verifying 4095 MB from global memory ... Verification failure at element 280, expected 118 but read back 15e First failure at address 1008c0 Verification failure at element 281, expected 119 but read back 189 Verification failure at element 282, expected 11a but read back 199 ...... Suppressing error output, counting# of errors ... Read speed: 3232.59 MB/s Failed write/readback test with 104652 errors Error: Global memory test failed Error code: 0 aocl diagnose: failed.  

I am totally confused now...... 

Thanks for your help! 

 

--- Quote Start ---  

"Placement cannot find a legal solution" usually means that you need some resource (RAM, DSP, etc.) on the FPGA, but that resource has been fully used and there is nothing else left. 

 

The closest thing I could find to a meaningful error message in the log was this: 

 

Error (17937): The inputs to the LAB at location (68,69) exceed the number of legal inputs. This LAB may be locked or have other LAB-level input restrictions. Refer to the submessage(s) for the specific input nodes that do not fit in the LAB. Remove some inputs to this LAB so the number of inputs does not exceed the legal limit. File: c:/intelfpga_pro/16.1/quartus/libraries/megafunctions/altera_counter.sv Line: 59 

 

But I had personally never seen such message before; the message that is printed in the log when you overutilize the Block RAMs is different. Can you please retry the compilation after updating to 16.1.2 and see what happens? 

 

Also please add --report to your compilation log and post the area estimation that you receive in stdout after adding that switch. 

--- Quote End ---  

0 Kudos
Altera_Forum
Honored Contributor II
7,357 Views

 

--- Quote Start ---  

--------------------Update-------------------- 

My DSP package do not support 16.1.2 and higher version, this is the reason that the strange errors occured. 

--- Quote End ---  

 

 

DSP or BSP? It seems you are using Altera's Arria 10 devkit; the BSP for that board is updated with every version of Quartus and is included in the package itself. There should be no need to use an older version of Quartus/AOC.
0 Kudos
Altera_Forum
Honored Contributor II
7,356 Views

I am using Speed-clouds hardware acceleration platform with arria10. According to the manual, I have to replace a10gx\hardware folder with another folder that Speed-Clouds provided, or the .aocx do not fit my board. 

But the errors occured again:  

1. Sometimes the diagnosis passed, and sometimes failed with the mismatch of writing and readback. 

2. I try to ignore diagnosis and program with host code, There is still a mmd error: can't load the windriver library. and the procedure still executed with the error. Sometimes it fails to create program with binary, it shows "error: cl_invalid_binary". But sometimes the board works well with the mmd error. 

The result of diagnosis and jobs is random, reboot seems do not solve any problems. 

I am wondering if there are some hardware fault occured? 

Thanks for ur help !  

 

--- Quote Start ---  

DSP or BSP? It seems you are using Altera's Arria 10 devkit; the BSP for that board is updated with every version of Quartus and is included in the package itself. There should be no need to use an older version of Quartus/AOC. 

--- Quote End ---  

0 Kudos
Altera_Forum
Honored Contributor II
7,357 Views

Only the hardware folder? That sound strange. I think they should also correct timing settings in the PCI-E driver and provide their own driver. 

 

What you describe can have two explanations: 

 

- There is something wrong with the BSP or the PCI-E driver. 

- The FPGA board's memory is problematic. 

 

Based on what you describe, I see the former as the more likely reason.
0 Kudos
Altera_Forum
Honored Contributor II
7,357 Views

I try to find where the windriver library is but failed. Do u have any idea about this issue? 

Many thanks.
0 Kudos
Altera_Forum
Honored Contributor II
7,357 Views

"windriver" sounds like the OS is windows. I have never used Windows for this particular work. If the OS is NOT Windows, then there must be something seriously wrong with the BSP they have provided you with.

0 Kudos
Altera_Forum
Honored Contributor II
7,357 Views

I've solved this problem with the Intel FPGA SDK for OpenCL Custom Platform Toolkit User Guide, section 1.4.4. I checked register key named HKEY_LOCAL_MACHINE\SOFTWARE\Altera\OpenCL\Board and deleted the redundant item that added by another version of Quartus. The MMD ERROR disappeared. 

--- Quote Start ---  

"windriver" sounds like the OS is windows. I have never used Windows for this particular work. If the OS is NOT Windows, then there must be something seriously wrong with the BSP they have provided you with. 

--- Quote End ---  

0 Kudos
Altera_Forum
Honored Contributor II
7,357 Views

The FPGA board's memory is problematic.

0 Kudos
Reply