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

Quartus II Synthesis Error with Leonardo

Altera_Forum
Honored Contributor II
1,471 Views

Hi all, 

I am trying to synthesize a design using Leonardo Spectrum. In settings, I have ticked the "Run this tool automatically to synthesize the current design" check box, to run Leonardo from within Quartus. The 'EDA Synthesis Tool' completes succesfully, but Quartus reports an error in the 'Analysis and Synthesis' phase. (When I compile teh project using the Quartus synthesizer, I do not obtain any errors) 

 

In my design, I have instantiated the LPM_MUX megafunction, a 64 input, 8 bit wide mux. The error report by Quartus is: 

 

Error: Port "data_0_0" does not exist in macrofunction "regmux_inst_1_lpm_mux_component" 

 

It produces an error for each of the 8 bits of each input channel. (512 in total) 

 

I did a bit of browsing and came accross this site http://www.gulf-stream.net/patandsteve/eda.html where in the 2nd last paragraph a similar problem is described as show below 

 

"Basically, most of the LPM functions were broken. After a lot of twisting. It turned out that it was necessary to not put the associated VHDL files for the LPM functions in the Leonardo project at all so that they would do a complete black box, then edit the LPM VHDL files and restore any files that had been modified to run correctly in ModelSim (as above), to their original condition, and put those files in the Quartus project for the final compile/synthesis/fit. After that the files would compile/synthesize/fit correctly." 

 

The difference here is that I believe he is synthesizing the design in Leonardo and then using the edif in Quartus later. 

 

Does anybody have any ideas as to how I can overcome this problem? or has anybody seen anything like this before? 

 

I´m sure there is a simple solution, but I have been fiddling with so many things in Quartus without success so I thought it was better to ask here. 

 

Thanks for any help.
0 Kudos
7 Replies
Altera_Forum
Honored Contributor II
653 Views

Hi, 

 

I did some playing with Leonardo/quartus ages ago...and faced problems. 

I don't remember my situation exactly but I do remember that I overcome a problem by wrapping up any naked ahdl with vhdl wrapper i.e. just make connections of your ahdl module to the outside world through the wrapper to fool Leonardo 

 

kaz
0 Kudos
Altera_Forum
Honored Contributor II
653 Views

Hi Kaz, 

Thanks for the reply. I´m not too familiar with what you have described. Could you please elaborate a little on what the problem may be and how you got around it in your case.  

 

Thanks a lot for your time.
0 Kudos
Altera_Forum
Honored Contributor II
653 Views

Hi, 

 

unfortunately my memory is vague on the issue but I am sure about an issue of that nature with my old versions(in 2001 !). Basically Leonardo will not compile any AHDL based modules as it only compiles vhdl or verilog. Any AHDL module need to be passed back to quartus when it takes over from Leonardo. However Leonardo should not see any AHDL interface i.e. treat it as black box (in the add project files don't add any module woth AHDL based interface). Even if you have one called up by higher level VHDL then Leonardo will open through and connect it and then quartus will go wrong...the remedy is this wrapper, add wrapper to project files instead of AHDL. 

 

By the way, if much of your work is lpm based then Leonardo will only do the glue logic and then I wouldn't recommend this tool. It is not supposed to compile lpm modules. 

 

kaz
0 Kudos
Altera_Forum
Honored Contributor II
653 Views

Hi 

 

let rephrase to correct myself. 

 

If you add any file to "add project files" and then run Leonardo it will open up the module. If it sees ahdl then things go wrong at quartus later. 

 

To avoid that: get a wrapper around ahdl but don't add wrapper to project, add the higher level only. 

 

kaz
0 Kudos
Altera_Forum
Honored Contributor II
653 Views

Hi Ardni 

 

I used to use Leonardo for Synthesis but I always used it as a separate tool - i.e. I'd set up the Leonardo project manually, run the synthesis without touching Quartus (or necessarily having the Quartus project set up). Then I would create the Quartus project (if it hadn't already been done) with the edif from Leonardo. 

 

Like you, I never put the LPM files into Leonardo - it leaves them as a black box. The Quartus project should include the edif and any LPM files that you use. 

 

Obviously I see that you're trying to have everything run in one click. Basically I did this with a tcl script - i.e. I wrote a script that would run leonardo and then quartus in succession. You could perhaps write a script that you run from Quartus if you want. 

 

Sorry I can't fix the exact problem you've got but I hope that this gives you some ideas.
0 Kudos
Altera_Forum
Honored Contributor II
653 Views

Also I'm not sure it's fair for the chap in your link to accuse the LPM functions of being broken. Going back at least nine years (as long as I've been using Leonardo and Altera), it's always been necessary to exclude them from Leonardo. I had always understood this to be because Leonardo doesn't have the necessary libraries to implement the logic for them; not because the files themselves are buggered.

0 Kudos
Altera_Forum
Honored Contributor II
653 Views

Kaz and Batfink thank you for the replies. 

I am going to create a project and run Leonardo manually and then use the edif in Quartus as recommended. It seems to be the more common way of doing it anyway from what I´ve been reading elsewhere also. Hopefully it won´t produce any problems. 

 

Thanks again for the help
0 Kudos
Reply