FPGA Central - World's 1st FPGA / CPLD Portal

FPGA Central

World's 1st FPGA Portal

 

Go Back   FPGA Groups > NewsGroup > FPGA

FPGA comp.arch.fpga newsgroup (usenet)

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 07-08-2005, 08:49 PM
Paul Boven
Guest
 
Posts: n/a
Default Timespec for DCM outputs (Spartan 3) ?

Hi everyone,

I'm using all the four phase-out signals from a DCM (0, 90, 180 and 270
degrees offset) to each clock a single D-Flipflop.
I want these flip-flops to be placed and routed as close (delay-wise) to
the DCM outputs as possible.
But I can't figure out how to set up a constraint for that: timing
constraints only seem to work on pins, flipflops, pads and latches. Can
anyone suggest how to get PAR to put the FFs as close to the DCM, with
the delays for these 4 nets as close to each other as possible ?

Regards, Paul Boven.
Reply With Quote
  #2 (permalink)  
Old 07-08-2005, 09:14 PM
Falk Brunner
Guest
 
Posts: n/a
Default Re: Timespec for DCM outputs (Spartan 3) ?


"Paul Boven" <[email protected]> schrieb im Newsbeitrag
news:[email protected]
> Hi everyone,
>
> I'm using all the four phase-out signals from a DCM (0, 90, 180 and 270
> degrees offset) to each clock a single D-Flipflop.
> I want these flip-flops to be placed and routed as close (delay-wise) to
> the DCM outputs as possible.


Just use a LOC constraint. Gives you maximum control with minimum trouble.
But you can define a timing group for these four clocks and define a max.
delay. Also a max skew constraint is probably a good idea.
Have a look at the xapps, there a several ones discussing clock/data
recovery at very high data rate by doing exactly what you want to do.

Regards
Falk



Reply With Quote
  #3 (permalink)  
Old 07-08-2005, 10:54 PM
Vladislav Muravin
Guest
 
Posts: n/a
Default Re: Timespec for DCM outputs (Spartan 3) ?

Paul,

One alternative is:
Lock each clock output to a pre-defined BUFGMUX location.
Then, describing each FFs in a different block (per different clock domain),
assign area constraints as to place it as close as possible.

Another:
After you define a TNM group, specify the maximum delay (never tried this
one, but it should be ok in terms of contraints)

And another:
Application-dependent, i.e. if you are trying to implement a QDR or somth.
like this, then there is some very nice xapp for that.

But what exactly is your application?

Vladislav


"Paul Boven" <[email protected]> wrote in message
news:[email protected]
> Hi everyone,
>
> I'm using all the four phase-out signals from a DCM (0, 90, 180 and 270
> degrees offset) to each clock a single D-Flipflop.
> I want these flip-flops to be placed and routed as close (delay-wise) to
> the DCM outputs as possible.
> But I can't figure out how to set up a constraint for that: timing
> constraints only seem to work on pins, flipflops, pads and latches. Can
> anyone suggest how to get PAR to put the FFs as close to the DCM, with the
> delays for these 4 nets as close to each other as possible ?
>
> Regards, Paul Boven.



Reply With Quote
  #4 (permalink)  
Old 07-08-2005, 11:41 PM
Paul Boven
Guest
 
Posts: n/a
Default Re: Timespec for DCM outputs (Spartan 3) ?

Hi Falk,

Falk Brunner wrote:
> "Paul Boven" <[email protected]> schrieb im Newsbeitrag


>>I'm using all the four phase-out signals from a DCM (0, 90, 180 and 270
>>degrees offset) to each clock a single D-Flipflop.
>>I want these flip-flops to be placed and routed as close (delay-wise) to
>>the DCM outputs as possible.


> Just use a LOC constraint. Gives you maximum control with minimum trouble.


I've been doing LOC so far. But there are 4 FFs to place around the DCM,
probably 10 or more locations that might qualify depending on what
routing resources are available from DCM to CLBs. The number of
permutations gets a bit big, especially when scaling up to 4 DCMs and 16
flipflops. So, being lazy, I was hoping to use the software to figure
out the best placement for me.

> But you can define a timing group for these four clocks and define a max.
> delay. Also a max skew constraint is probably a good idea.


Yes, that's what I'm trying to do. Just don't know the proper
syntax/commands yet.

> Have a look at the xapps, there a several ones discussing clock/data
> recovery at very high data rate by doing exactly what you want to do.


Ah, good one that I should have thought of myself. Xapp 225 seems a good
place to start.

Regards, Paul Boven.
Reply With Quote
  #5 (permalink)  
Old 07-09-2005, 02:06 AM
Paul Boven
Guest
 
Posts: n/a
Default Re: Timespec for DCM outputs (Spartan 3) ?

Hi Vladislav, everyone,

Vladislav Muravin wrote:

> One alternative is:
> Lock each clock output to a pre-defined BUFGMUX location.


That wouldn't work: I have 4 DCMs with 4 outputs each, which would
require 16 BUFGMUX, but there are only 8 of them. And using a BUFGMUX
seems a bit overkill for a net that only connects to one flipflop.

> Then, describing each FFs in a different block (per different clock domain),
> assign area constraints as to place it as close as possible.
>
> Another:
> After you define a TNM group, specify the maximum delay (never tried this
> one, but it should be ok in terms of contraints)


I've figured out how to define TNM or TIMEGRP entities, but not how to
apply constraints like maxdelay or maxskew to them. Any hints?

> But what exactly is your application?


My application is a reciprocal frequency counter. There will be two
input signals: a 100MHz reference clock, and an unknown input. I want to
measure the time between two rising edges of the input signal as
accurately as possible. The input signal is used as the data input to 16
D-flipflops. Each flip flop is clocked from a different DCM. The first
DCM provides 0, 90, 180 and 270 degrees of my original 100MHz reference.
Hence, it quadruples my resolution. The second DCM has a fixed phase
offset of 32 (45 degrees) and produces clock signals at 45, 135, 225 and
315 degrees, doubling my resolution once more: Using all four DCMs gives
me the ability to determine where the rising edge of the input signal
falls in relationship to the 100MHz input with a resolution of 22.5
degrees or 1/16th of a full phase. This corresponds to a resolution of
625ps, or an equivalent reference of 1.6 GHz.

For this to work, I need to make sure that the delay from the DCM
outputs to all the clock inputs on the flipflops are as equal and as low
as possible.

All the (single wire) nets that connect a DCM output to its flipflop,
I've named "net_DCMx_y" where x = the number of the DCM (0 - 3) and Y
the phase-shift of the signal.
I've tried setting "net net_DCM* maxdelay=1ns;" in my UCF. I'm not sure
whether it does very much: Mostly it just happily reports that it
violated 6 out of 8 timing constraints.

Maxskew is related to a single net, and is without meaning on nets that
consist of a single wire. If I could somehow constrain the differences
in delay of all the net_DCM* to be small, that would be very helpfull.
Perhaps this should be possible with TNM or TIMEGRP, but I haven't been
able to figure out how to use those.

Any suggestions are very much appreciated.

Regards, Paul Boven.
Reply With Quote
  #6 (permalink)  
Old 07-09-2005, 06:57 AM
Philip Freidin
Guest
 
Posts: n/a
Default Re: Timespec for DCM outputs (Spartan 3) ?

On Sat, 09 Jul 2005 02:06:23 +0200, Paul Boven <[email protected]> wrote:
>For this to work, I need to make sure that the delay from the DCM
>outputs to all the clock inputs on the flipflops are as equal and as low
>as possible.
>
>All the (single wire) nets that connect a DCM output to its flipflop,
>I've named "net_DCMx_y" where x = the number of the DCM (0 - 3) and Y
>the phase-shift of the signal.
>I've tried setting "net net_DCM* maxdelay=1ns;" in my UCF. I'm not sure
>whether it does very much: Mostly it just happily reports that it
>violated 6 out of 8 timing constraints.
>
>Maxskew is related to a single net, and is without meaning on nets that
>consist of a single wire. If I could somehow constrain the differences
>in delay of all the net_DCM* to be small, that would be very helpfull.
>Perhaps this should be possible with TNM or TIMEGRP, but I haven't been
>able to figure out how to use those.
>
>Any suggestions are very much appreciated.
>
>Regards, Paul Boven.


I have no idea how reliably the software handles this, but there
is an attribute that tags a net's source as the starting point for
time specs, TPSYNC . Maybe with this (documented in Xilinx's Constraints
guide) you can spec a path that starts at the DCM, and ends at each FF.
You may want to assign each FF to its own group, and have 16 separate
time specs, to help you isolate problems.

Regards,
Philip




Philip Freidin
Fliptronics
Reply With Quote
  #7 (permalink)  
Old 07-09-2005, 06:02 PM
Dave
Guest
 
Posts: n/a
Default Re: Timespec for DCM outputs (Spartan 3) ?

Hi Paul -

This is a very interesting application. I've done something similar with an
Actel Axcelerator and 4 clock phases. Each phase was skewed by 1ns from the
next phase. I ran the internal PLLs with a 62.5MHz input and set the PLLs
up for a 4X operation and an output of 250MHz. This gave an overall system
of 4 clock phases at 250MHz with 1ns between phases. With 4 phases, the
programmed precision of delays was adequate. The Actel devices had a
resolution of 130ps step sizes for programmed delay. This application wound
up being very successful, though.

One thing to watch, though, is the jitter on the clock input line. If
multiple modules are driven from the same clock, each module may have a
slightly different jitter value. Since you're depending on pretty precise
alignments between phases, these values may affect overall precision.

I would be very interested in hearing of your progress. I am looking at
implementing an enhanced version of our current design using more clock
phases.

Dave

"Paul Boven" <[email protected]> wrote in message
news:[email protected]
> Hi Vladislav, everyone,
>
> Vladislav Muravin wrote:
>
>> One alternative is:
>> Lock each clock output to a pre-defined BUFGMUX location.

>
> That wouldn't work: I have 4 DCMs with 4 outputs each, which would require
> 16 BUFGMUX, but there are only 8 of them. And using a BUFGMUX seems a bit
> overkill for a net that only connects to one flipflop.
>
>> Then, describing each FFs in a different block (per different clock
>> domain),
>> assign area constraints as to place it as close as possible.
>>
>> Another:
>> After you define a TNM group, specify the maximum delay (never tried this
>> one, but it should be ok in terms of contraints)

>
> I've figured out how to define TNM or TIMEGRP entities, but not how to
> apply constraints like maxdelay or maxskew to them. Any hints?
>
>> But what exactly is your application?

>
> My application is a reciprocal frequency counter. There will be two input
> signals: a 100MHz reference clock, and an unknown input. I want to measure
> the time between two rising edges of the input signal as accurately as
> possible. The input signal is used as the data input to 16 D-flipflops.
> Each flip flop is clocked from a different DCM. The first DCM provides 0,
> 90, 180 and 270 degrees of my original 100MHz reference. Hence, it
> quadruples my resolution. The second DCM has a fixed phase offset of 32
> (45 degrees) and produces clock signals at 45, 135, 225 and 315 degrees,
> doubling my resolution once more: Using all four DCMs gives me the ability
> to determine where the rising edge of the input signal falls in
> relationship to the 100MHz input with a resolution of 22.5 degrees or
> 1/16th of a full phase. This corresponds to a resolution of 625ps, or an
> equivalent reference of 1.6 GHz.
>
> For this to work, I need to make sure that the delay from the DCM outputs
> to all the clock inputs on the flipflops are as equal and as low as
> possible.
>
> All the (single wire) nets that connect a DCM output to its flipflop, I've
> named "net_DCMx_y" where x = the number of the DCM (0 - 3) and Y the
> phase-shift of the signal.
> I've tried setting "net net_DCM* maxdelay=1ns;" in my UCF. I'm not sure
> whether it does very much: Mostly it just happily reports that it violated
> 6 out of 8 timing constraints.
>
> Maxskew is related to a single net, and is without meaning on nets that
> consist of a single wire. If I could somehow constrain the differences in
> delay of all the net_DCM* to be small, that would be very helpfull.
> Perhaps this should be possible with TNM or TIMEGRP, but I haven't been
> able to figure out how to use those.
>
> Any suggestions are very much appreciated.
>
> Regards, Paul Boven.



Reply With Quote
  #8 (permalink)  
Old 07-11-2005, 11:47 AM
Symon
Guest
 
Posts: n/a
Default Re: Timespec for DCM outputs (Spartan 3) ?

Hi Paul,
You might want to look into directed routing for your application. With this
you use FPGA editor to manually route the signals and place the FFs and DCMs
exactly where you want them. You then use Tools->Directed Routing (or
something like that!) to generate constraints that you add to your UCF file.
This makes the P&R tool route the signals the same way every time. (Or at
least it should do!)
Once you get the hang of it, it's just about bearable! You'll also impress
your colleagues with reams of gobbledygook in your UCF file. I recently
spent a week or two doing this, and, although my monitor now has several
dents, I just about remained sane. Just. YMMV, but be aware that the
Synplify/ISE combination that I use has a bad habit of changing the net
names, seemingly depending on the day of the week. This screws up your UCF
constraints, of course. A friend of mine said he only does directed routing
on Mondays, for this very reason! ;-)
Cheers, Syms.



Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Simultaneously Switching Outputs in Spartan-II Christian E. Boehme FPGA 2 10-22-2004 04:50 AM
OD/OC outputs with Xilinx Spartan II Christian E. Boehme FPGA 4 09-09-2004 10:29 AM
timing constraint question (period/timespec) Yttrium FPGA 0 04-28-2004 07:18 PM
regs outputs Bluedoze Verilog 1 01-26-2004 08:15 PM


All times are GMT +1. The time now is 01:01 PM.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright 2008 @ FPGA Central. All rights reserved