From: Gabor on
On Aug 10, 8:38 am, Benjamin Krill <b...(a)codiert.org> wrote:
> > Many thanks.  I thought all was going well until Translate.  Unfortunately
> > Spartan 3A's don't support the BUFR primitive!
>
> Hm, to bad. Then you have to reduce your clocks and for example use clock
> enables for the slower logic parts.

Some spartan 3A parts have left or right half clock regions. If the
buffer for these is not called a BUFR there should be some other
way to use it.

Also for small regions it is possible to attach a constraint to
the clock net (BUFFER_TYPE = NONE if I remember correctly)
to remove the BUFG. Then you should add a USELOWSKEWNETS
(IIRC) attribute and make sure your timing analysis includes hold
time. If your clock is very slow, you can also play games to avoid
hold time errors like always going from rising edge to falling edge.

Regards,
Gabor
From: Fredxx on
Gabor wrote:
> On Aug 10, 8:38 am, Benjamin Krill <b...(a)codiert.org> wrote:
>>> Many thanks. I thought all was going well until Translate.
>>> Unfortunately Spartan 3A's don't support the BUFR primitive!
>>
>> Hm, to bad. Then you have to reduce your clocks and for example use
>> clock enables for the slower logic parts.
>
> Some spartan 3A parts have left or right half clock regions. If the
> buffer for these is not called a BUFR there should be some other
> way to use it.
>
> Also for small regions it is possible to attach a constraint to
> the clock net (BUFFER_TYPE = NONE if I remember correctly)
> to remove the BUFG. Then you should add a USELOWSKEWNETS
> (IIRC) attribute and make sure your timing analysis includes hold
> time. If your clock is very slow, you can also play games to avoid
> hold time errors like always going from rising edge to falling edge.
>

Many thanks. I used the attribute buffer_type = "none", but it seem to
remove the offending clock altogether from the design. Not quite what I had
intended. I then had a myraid more errors.

In the end I resorted to removing the offending clocks and capture its edge
with a high speed clock. All seemed well until Map when I got:
FATAL_ERROR:3:xstphs.c:71:1.11.10.1 - Physical Synthesis Failed. Process
will
terminate. For technical support on this issue, please open a WebCase
with this project attached at http://www.xilinx.com/support.


From: Chris Maryan on
On Aug 10, 12:00 pm, "Fredxx" <fre...(a)spam.com> wrote:
> Gabor wrote:
> > On Aug 10, 8:38 am, Benjamin Krill <b...(a)codiert.org> wrote:
> >>> Many thanks. I thought all was going well until Translate.
> >>> Unfortunately Spartan 3A's don't support the BUFR primitive!
>
> >> Hm, to bad. Then you have to reduce your clocks and for example use
> >> clock enables for the slower logic parts.
>
> > Some spartan 3A parts have left or right half clock regions.  If the
> > buffer for these is not called a BUFR there should be some other
> > way to use it.
>
> > Also for small regions it is possible to attach a constraint to
> > the clock net (BUFFER_TYPE = NONE if I remember correctly)
> > to remove the BUFG.  Then you should add a USELOWSKEWNETS
> > (IIRC) attribute and make sure your timing analysis includes hold
> > time.  If your clock is very slow, you can also play games to avoid
> > hold time errors like always going from rising edge to falling edge.
>
> Many thanks.  I used the attribute buffer_type = "none", but it seem to
> remove the offending clock altogether from the design.  Not quite what I had
> intended.  I then had a myraid more errors.
>
> In the end I resorted to removing the offending clocks and capture its edge
> with a high speed clock.  All seemed well until Map when I got:
> FATAL_ERROR:3:xstphs.c:71:1.11.10.1 - Physical Synthesis Failed. Process
> will
>    terminate. For technical support on this issue, please open a WebCase
> with   this project attached athttp://www.xilinx.com/support.- Hide quoted text -
>
> - Show quoted text -

I can't comment on the error, but be careful with capturing clocks to
create clock enables. Make sure your sampling clock is fast enough
(Nyquist and then some at an absolute minimum, a couple times more if
possible) - if necessary divide your to-be-sampled clock in a PLL and
regenerate the higher rate once you sample the lower one. Make sure
you run the to-be-sampled clock through a few FFs on the sampling
clock for stability. And then make sure you do a good edge detect on
the sampled clock.

Chris