05-10-2018 01:07 AM - edited 05-10-2018 01:07 AM
I am developing an IP for a bigger project of my company.
The code is a little huge, so I will attach it as a file instead of just pasting it in a code section.
It should be easy to understand the functionality of the code.
When trying to synthesize this code, just after these messages (as you can see I even tried a "keep" workaround as suggested in other topics) :
INFO: [Synth 8-5534] Detected attribute (* keep = "true" *) [c:/Marconi_vivado/FDR_8192_PeakUnit/FDR_8192_PeakUnit.srcs/sources_1/bd/design_1/ipshared/0038/PeakUnit_v2.v:107]
WARNING: [Synth 8-6014] Unused sequential element PRF_r_reg was removed. [c:/Marconi_vivado/FDR_8192_PeakUnit/FDR_8192_PeakUnit.srcs/sources_1/bd/design_1/ipshared/0038/PeakUnit_v2.v:222]
WARNING: [Synth 8-6014] Unused sequential element shift_reg was removed. [c:/Marconi_vivado/FDR_8192_PeakUnit/FDR_8192_PeakUnit.srcs/sources_1/bd/design_1/ipshared/0038/PeakUnit_v2.v:238]
WARNING: [Synth 8-6014] Unused sequential element PRF_reg was removed. [c:/Marconi_vivado/FDR_8192_PeakUnit/FDR_8192_PeakUnit.srcs/sources_1/bd/design_1/ipshared/0038/PeakUnit_v2.v:245]
WARNING: [Synth 8-6014] Unused sequential element TruePeak_Valore_reg was removed.
WARNING: [Synth 8-6014] Unused sequential element TruePeak_Freq_reg was removed.
the synthesis tool hangs indefinitely.
let me know if there is anything else I have not attached
05-10-2018 06:41 AM - edited 05-10-2018 07:09 AM
Hi @cloudscraper-86, while synthesis does take some time, it eventually completes (see attached log file).
Other synthesis tools generate an error, referring to line 297 of PEAKUNIT_1005.v:
Can't mix blocking and non-blocking assignments to a variable
05-10-2018 06:51 AM
Hello and thanks.
I noticed a very very long synthesis time, so I thought it was getting stuck.
After a tough debug session, we determined that such issue was dependant on the amount of iterations we were actually executing inside the code (linked to some parameters of our vectors).
By shortening a few parameters (RANGE and TRUE_PEAKS) we have had our code synthesize and managed to keep going.
One last thing: is such slowness dependant on memory-related allocations, loop unrolling, or what else?
05-10-2018 08:16 AM
Hi @cloudscraper-86, yes, the slowness would be dependent on a number of factors including memory-related allocations and the RTL.
I wanted to benchmark the runtime against other synthesis tools but they generate errors:
PEAKUNIT_1005.v Line 141: Mix of blocking and non-blocking assignments to variable <s> is not a recommended coding practice.
PEAKUNIT_1005.v: Line 297|Can't mix blocking and non-blocking assignments to a variable
I would initially suggest fixing these errors.
05-10-2018 11:15 PM
Does the "initial" block count, too, for the discrimination between blocking and nonblocking?
As you can see, I tend to keep the same style throughout the code, but inside initial block I am a lot more generic with the way I write down stuff.