From: Casey Smith on
I'm troubleshooting a design that uses a XC3S50 as a way to take a
125Mhz clock and, using 2
DCMs, output 4 copies of it shifted 45deg from one another. The 1st
DCM CLK0/90 ports give you the 0 and 90deg output clocks and the
second
DCM has a fixed phase offset so it's CLK0/90 ports give you the 45 and
135deg clks. However, the client didn't provide any external feedback
of
the clocks to the DCMs on the PCB and internal routing/gate delays are
screwing up
the phase relationship at the output pins of the FPGA. I'm having a
hell of a time
trying to constrain path delays to compensate. Has anyone done
anything
like this before? I have a post PAR simulation so I know what deltas
I'm looking for. My thought was that there must be some way to
request a particular routing delay via a constraint. So far I've not
had much luck. It's the only thing the device is doing so I have
routing resources to burn.... the difference in routing delay I need
to compensate for is ~1ns. If I
could match the internal DCM to PAD paths for the 0/90 outputs of each
DCM I could use the phase offset of one of the DCMs to set the phase
relationship between the two output clock groups and save a re-spin of
the board. Thoughts?

Thanks,
Casey
From: John McCaskill on
On Jul 7, 4:10 pm, Casey Smith <cjs1...(a)gmail.com> wrote:
> I'm troubleshooting a design that uses a XC3S50 as a way to take a
> 125Mhz clock and, using 2
> DCMs, output 4 copies of it shifted 45deg from one another.  The 1st
> DCM CLK0/90 ports give you the 0 and 90deg output clocks and the
> second
> DCM has a fixed phase offset so it's CLK0/90 ports give you the 45 and
> 135deg clks.  However, the client didn't provide any external feedback
> of
> the clocks to the DCMs on the PCB and internal routing/gate delays are
> screwing up
> the phase relationship at the output pins of the FPGA. I'm having a
> hell of a time
> trying to constrain path delays to compensate.  Has anyone done
> anything
> like this before?  I have a post PAR simulation so I know what deltas
> I'm looking for.  My thought was that there must be some way to
> request a particular routing delay via a constraint. So far I've not
> had much luck. It's the only thing the device is doing so I have
> routing resources to burn.... the difference in routing delay I need
> to compensate for is ~1ns.  If I
> could match the internal DCM to PAD paths for the 0/90 outputs of each
> DCM I could use the phase offset of one of the DCMs to set the phase
> relationship between the two output clock groups and save a re-spin of
> the board. Thoughts?
>
> Thanks,
> Casey

Hello Casey,

It sounds like you are trying to take the clock signals and drive them
directly out IO pins. That requires that the clocks leave the
dedicated clock routing an use the general purpose routing. That will
introduce skew to their phase relationship that is difficult to
control.

There is a better way to do this. Use the DDR registers in the IOBs to
mirror the clock that is driving them by tying one of the inputs high,
and the other low. By doing this, the clocks will stay on the
dedicated clock routing, and you can more precisely control their
phase relationship with the DCMs.

While that is the approach that I would take, it is interesting to
note that you can also hand route a net in the FPGA editor, and then
have it saved as a directed routing constraint that you can put into
the UCF file so that it will be repeatable. I have done that once, but
only as a last resort.

Regards,

John McCaskill
www.FasterTechnology.com
From: Casey Smith on
On Jul 7, 5:07 pm, John McCaskill <jhmccask...(a)gmail.com> wrote:
> On Jul 7, 4:10 pm, Casey Smith <cjs1...(a)gmail.com> wrote:
>
>
>
>
>
> > I'm troubleshooting a design that uses a XC3S50 as a way to take a
> > 125Mhz clock and, using 2
> > DCMs, output 4 copies of it shifted 45deg from one another.  The 1st
> > DCM CLK0/90 ports give you the 0 and 90deg output clocks and the
> > second
> > DCM has a fixed phase offset so it's CLK0/90 ports give you the 45 and
> > 135deg clks.  However, the client didn't provide any external feedback
> > of
> > the clocks to the DCMs on the PCB and internal routing/gate delays are
> > screwing up
> > the phase relationship at the output pins of the FPGA. I'm having a
> > hell of a time
> > trying to constrain path delays to compensate.  Has anyone done
> > anything
> > like this before?  I have a post PAR simulation so I know what deltas
> > I'm looking for.  My thought was that there must be some way to
> > request a particular routing delay via a constraint. So far I've not
> > had much luck. It's the only thing the device is doing so I have
> > routing resources to burn.... the difference in routing delay I need
> > to compensate for is ~1ns.  If I
> > could match the internal DCM to PAD paths for the 0/90 outputs of each
> > DCM I could use the phase offset of one of the DCMs to set the phase
> > relationship between the two output clock groups and save a re-spin of
> > the board. Thoughts?
>
> > Thanks,
> > Casey
>
> Hello Casey,
>
> It sounds like you are trying to take the clock signals and drive them
> directly out IO pins. That requires that the clocks leave the
> dedicated clock routing an use the general purpose routing. That will
> introduce skew to their phase relationship that is difficult to
> control.
>
> There is a better way to do this. Use the DDR registers in the IOBs to
> mirror the clock that is driving them by tying one of the inputs high,
> and the other low.  By doing this, the clocks will stay on the
> dedicated clock routing, and you can more precisely control their
> phase relationship with the DCMs.
>
> While that is the approach that I would take, it is interesting to
> note that you can also hand route a net in the FPGA editor, and then
> have it saved as a directed routing constraint that you can put into
> the UCF file so that it will be repeatable. I have done that once, but
> only as a last resort.
>
> Regards,
>
> John McCaskillwww.FasterTechnology.com

Thanks John,

I've used the DDR forwarding trick before with success but it's not
cutting it in this case. I have been exploring the FPGA editor but was
hoping there might be an easier way. I'll give the hand route option
another look. This problem might be the perfect opportunity to learn.

Casey