UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Teacher muzaffer
Teacher
11,496 Views
Registered: ‎03-31-2012

2014.1 Vivado Synthesis - ERROR: [Synth 8-3380] loop condition does not converge after 2000 iterations

Jump to solution

will this bug be fixed in 2014.2 ?

 

http://www.xilinx.com/support/answers/60073.html

 

 

- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.
0 Kudos
1 Solution

Accepted Solutions
Teacher muzaffer
Teacher
18,425 Views
Registered: ‎03-31-2012

Re: 2014.1 Vivado Synthesis - ERROR: [Synth 8-3380] loop condition does not converge after 2000 iterations

Jump to solution
apparently it is due 2014.3
- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.

View solution in original post

0 Kudos
10 Replies
Teacher muzaffer
Teacher
18,426 Views
Registered: ‎03-31-2012

Re: 2014.1 Vivado Synthesis - ERROR: [Synth 8-3380] loop condition does not converge after 2000 iterations

Jump to solution
apparently it is due 2014.3
- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.

View solution in original post

0 Kudos
10,625 Views
Registered: ‎03-21-2015

Re: 2014.1 Vivado Synthesis - ERROR: [Synth 8-3380] loop condition does not converge after 2000 iterations

Jump to solution

This is still existing in 2014.4. Can we know when this will be fixed? This is quite painful as it was supported in ISE.

0 Kudos
Xilinx Employee
Xilinx Employee
10,606 Views
Registered: ‎10-24-2013

Re: 2014.1 Vivado Synthesis - ERROR: [Synth 8-3380] loop condition does not converge after 2000 iterations

Jump to solution
Hi,
This is moved to 2015.x release. The timeline is not known at this point of time though..
Thanks,Vijay
--------------------------------------------------------------------------------------------
Please mark the post as an answer "Accept as solution" in case it helped resolve your query.
Give kudos in case a post in case it guided to the solution.
0 Kudos
10,602 Views
Registered: ‎03-21-2015

Re: 2014.1 Vivado Synthesis - ERROR: [Synth 8-3380] loop condition does not converge after 2000 iterations

Jump to solution

Thank you! I hope it will be 2015.1!

0 Kudos
Teacher muzaffer
Teacher
10,596 Views
Registered: ‎03-31-2012

Re: 2014.1 Vivado Synthesis - ERROR: [Synth 8-3380] loop condition does not converge after 2000 iterations

Jump to solution

2015.1 is supposed to be released in less than a month. It's quite unlikely that it will be in it.

- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.
0 Kudos
Xilinx Employee
Xilinx Employee
10,591 Views
Registered: ‎10-24-2013

Re: 2014.1 Vivado Synthesis - ERROR: [Synth 8-3380] loop condition does not converge after 2000 iterations

Jump to solution
Hi,
Yes, definitely not in 2015.1. The tentative plan is in later versions of 2015.x
Thanks,Vijay
--------------------------------------------------------------------------------------------
Please mark the post as an answer "Accept as solution" in case it helped resolve your query.
Give kudos in case a post in case it guided to the solution.
0 Kudos
10,583 Views
Registered: ‎03-21-2015

Re: 2014.1 Vivado Synthesis - ERROR: [Synth 8-3380] loop condition does not converge after 2000 iterations

Jump to solution

Thanks for the clarification!

0 Kudos
Highlighted
Contributor
Contributor
10,408 Views
Registered: ‎09-15-2008

Re: 2014.1 Vivado Synthesis - ERROR: [Synth 8-3380] loop condition does not converge after 2000 iterations

Jump to solution

This problem is affecting me too - designs that synthesize fine in ISE are now broken in Vivado.

 

Is there an ETA on getting proper loop constructs back into the synthesizer? XST handles them fine, as do other vendors' synthesizers.

 

It's kind of crazy that Vivado doesn't even have feature parity with ISE's synthesizer.

 

 

 

 

0 Kudos
9,872 Views
Registered: ‎03-21-2015

Re: 2014.1 Vivado Synthesis - ERROR: [Synth 8-3380] loop condition does not converge after 2000 iterations

Jump to solution

Does anybody has a workaround for this, at least an idea?

0 Kudos
Participant ahjeff
Participant
5,655 Views
Registered: ‎10-17-2014

Re: 2014.1 Vivado Synthesis - ERROR: [Synth 8-3380] loop condition does not converge after 2000 iterations

Jump to solution

I ran into this issue porting a design that worked fine with ISE. In my case the number of iterations in a while loop in a function depended on the length of an std_logic_vector passed into it. My solution was to have two end conditions for the loop; the 'real' end condition, and a 'maximum iterations' end condition, with the maximum set somewhere below the 2000 that Vivado seems to use. See below:

 

	function grey2bin (v : std_logic_vector) return std_logic_vector is
		constant MAX_VECTOR_WIDTH : integer := 1024;
		variable rv : std_logic_vector(v'range) := v;
		variable mask : std_logic_vector(v'range) := std_logic_vector(shift_right(unsigned(v), 1));
		variable i : integer := 0;
	begin
		-- From wikipedia. Added iteration limit to avoid Vivado error Synth 8-3380.
		while (to_integer(unsigned(mask)) /= 0 and i < MAX_VECTOR_WIDTH) loop
			rv := rv xor mask;
			mask := std_logic_vector(shift_right(unsigned(mask), 1));
			i := i + 1;
		end loop;
		return rv;
	end function;

The one issue with this is that the elaborated design contains logic for 'maximum iterations', however, it was optimised down to the correct logic during synthesis.

 

There's another thread about the issue here http://forums.xilinx.com/xlnx/board/crawl_message?board.id=zaps&message.id=7131  with a few comments, which I think miss the point, along the lines of "you shouldn't have big loops in your functions"; the iteration limit is not reached because of the actual number of iterations, but because of how many iterations there could be, given an unconstrained input. ISE seems to be smart enough to use the actual input when the function is called.

0 Kudos