Synthesis issue

K

kb33

Guest
Hi,

Can anyone please tell me why the first FOR loop is being synthesized,
and the second one is not?

Thanks
Kanchan


//Synthesizable...
for (q=0; q < `NUM_RSRC/2; q=q+1)
..
..
..

//Not Synthesizable...
for (q=bsort_index; q < (bsort_index + `NUM_RSRC/2); q=q+1)
..
..
..

Here, q is an integer and bsort_index is a register.
 
"kb33" <kanchan.devarakonda@gmail.com> wrote in message
news:1187042204.984752.88320@k79g2000hse.googlegroups.com...
Hi,

Can anyone please tell me why the first FOR loop is being synthesized,
and the second one is not?

Thanks
Kanchan


//Synthesizable...
for (q=0; q < `NUM_RSRC/2; q=q+1)
.
.
.

//Not Synthesizable...
for (q=bsort_index; q < (bsort_index + `NUM_RSRC/2); q=q+1)
.
.
.

Here, q is an integer and bsort_index is a register.
The problem may be in the item that's the subject of the for loop. Any loop
in and of itself is not synthesizable. It's only when combined with the
companion statement that the looped statement may or may not be
synthesizable.

You'd need to show the vector (or memory or register) declaration and
dimension along with the particular assignment. Is NUM_RSRC a simple number
such as 16'h1234?
 
On Aug 13, 2:56 pm, kb33 <kanchan.devarako...@gmail.com> wrote:
Hi,

Can anyone please tell me why the first FOR loop is being synthesized,
and the second one is not?

Thanks
Kanchan

//Synthesizable...
for (q=0; q < `NUM_RSRC/2; q=q+1)
.
.
.

//Not Synthesizable...
for (q=bsort_index; q < (bsort_index + `NUM_RSRC/2); q=q+1)
.
.
.

Here, q is an integer and bsort_index is a register.
Because the value of bsort_index is not known at compile time.

Loops are completely unwrapped before synthesis.

G.
 
On Aug 14, 5:56 am, kb33 <kanchan.devarako...@gmail.com> wrote:
Hi,

Can anyone please tell me why the first FOR loop is being synthesized,
and the second one is not?

Thanks
Kanchan

//Synthesizable...
for (q=0; q < `NUM_RSRC/2; q=q+1)
.
.
.

//Not Synthesizable...
for (q=bsort_index; q < (bsort_index + `NUM_RSRC/2); q=q+1)
.
.
.

Here, q is an integer and bsort_index is a register.
Do you think you can use the basic logic to implement you TWO FOR
loop?
If you can't do it, I think the tool can not help you to do that
either.
 
kb33 <kanchan.devarakonda@gmail.com> writes:

Hi,

Can anyone please tell me why the first FOR loop is being synthesized,
and the second one is not?

Thanks
Kanchan


//Synthesizable...
for (q=0; q < `NUM_RSRC/2; q=q+1)
.
.
.

//Not Synthesizable...
for (q=bsort_index; q < (bsort_index + `NUM_RSRC/2); q=q+1)
.
.
.

Here, q is an integer and bsort_index is a register.
I suspect the reason the 2nd loop is not sythesizable depends upon
what you are doing with q. Is the following code synthesizable in
your tool?

for (q=0; q < `NUM_RSRC/2; q=q+1)
begin
integer q1;
q1 = q + bsort_index;
...

If the answer is no, then the problem isn't the for loop, but what you
are doing inside the for loop, and to get an answer to why that isn't
synthesizable, we need to see the code.

If the changed code, is syntehsizable while the original code isn't,
then you simply have a synthesizer restriction that you need to code
around (or get a better synthesizer)....
 

Welcome to EDABoard.com

Sponsor

Back
Top