Site Home   Archive Home   FAQ Home   How to search the Archive   How to Navigate the Archive   
Compare FPGA features and resources   

Threads starting:
1994JulAugSepOctNovDec1994
1995JanFebMarAprMayJunJulAugSepOctNovDec1995
1996JanFebMarAprMayJunJulAugSepOctNovDec1996
1997JanFebMarAprMayJunJulAugSepOctNovDec1997
1998JanFebMarAprMayJunJulAugSepOctNovDec1998
1999JanFebMarAprMayJunJulAugSepOctNovDec1999
2000JanFebMarAprMayJunJulAugSepOctNovDec2000
2001JanFebMarAprMayJunJulAugSepOctNovDec2001
2002JanFebMarAprMayJunJulAugSepOctNovDec2002
2003JanFebMarAprMayJunJulAugSepOctNovDec2003
2004JanFebMarAprMayJunJulAugSepOctNovDec2004
2005JanFebMarAprMayJunJulAugSepOctNovDec2005
2006JanFebMarAprMayJunJulAugSepOctNovDec2006
2007JanFebMarAprMayJunJulAugSepOctNovDec2007
2008JanFebMarAprMayJunJulAugSepOctNovDec2008
2009JanFebMarAprMayJunJulAugSepOctNovDec2009
2010JanFebMarAprMayJunJulAugSepOctNovDec2010
2011JanFebMarAprMayJunJulAugSepOctNovDec2011
2012JanFebMarAprMayJunJulAugSepOctNovDec2012
2013JanFebMarAprMayJunJulAugSepOctNovDec2013
2014JanFebMarAprMayJunJulAugSepOctNovDec2014
2015JanFebMarAprMayJunJulAugSepOctNovDec2015
2016JanFebMarAprMayJunJulAugSepOctNovDec2016
2017JanFebMarAprMayJunJulAugSepOctNovDec2017
2018JanFebMarAprMayJunJulAugSepOctNovDec2018
2019JanFebMarAprMayJunJulAugSepOctNovDec2019
2020JanFebMarAprMay2020

Authors:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Custom Search

Messages from 123175

Article: 123175
Subject: Re: Xilinx Constraints Question
From: "Symon" <symon_brewer@hotmail.com>
Date: Sat, 18 Aug 2007 13:52:45 +0100
Links: << >>  << T >>  << A >>

<moogyd@yahoo.co.uk> wrote in message 
news:1187414658.093964.216970@k79g2000hse.googlegroups.com...
> Hello group,
>
> The question is : How do I constrain the frequency f/2, f/4 etc. The
> synthesis tool optimizes nets clk_div2, clk_div4 so that only one net
> exists (clk), so I have no where to put the constraints (or do select
> all endpoints).
>
> (I currently add constraints via the UCF).
>
> Any suggestions or pointers grreatly appreciated.
>
> Thanks,
>
> Steven
>
Hi Steven,
OK, your system sounds like you have one clock, witth clock enables for the 
slower bits. That's a good thing.

So, you constraints should be something like this.

NET "clock_div_2_enable*" TNM="slow_ffs";
TIMESPEC TS1 = FROM : slow_ffs : TO : slow_ffs : 20ns;

I added a wildcard at the end of the clock enable signal because often the 
synthesis tool will duplicate nets that go to a lot of desitinations. This 
will hopefully catch that situation. Also, be careful not to generate the 
enable signal by feeding it back to itself, or the tool will include the FF 
used to make the enable in the timegroup. You don't want that as the enable 
has to get to every destination in the time determined by the clock period, 
not the relaxed multi-path delay. For example, have a counter and use it to 
generate the enables.

HTH., Syms.

p.s. Here's a freebie puzzle I remembered while typing this.
What's the only word that's an anagram of itself?




Article: 123176
Subject: help on camera ports
From: sriman <srimankk@gmail.com>
Date: Sat, 18 Aug 2007 14:01:53 -0000
Links: << >>  << T >>  << A >>
i have a posted for a camera and i was suggesed the following. it is
1/3 Color Camera Mod C3188A-6018 Digital output.i am attaching its
datasheet.(http://www.electronics123.net/amazon/datasheet/c3188a.pdf).
i have a problem in knowing what its ports are from its data sheet.can
anyone help me out in telling me what the ports
1.1~8 Y0~Y7 Digital output Y Bus
23~30 UV0-UV7 Digital output UV bus.
 are. the description in the datasheet is too vague for me to program
them. can anyone altest send me a link for their description.


Article: 123177
Subject: Re: help on camera ports
From: Donald <Donald@dontdoithere.com>
Date: Sat, 18 Aug 2007 10:37:36 -0600
Links: << >>  << T >>  << A >>
sriman wrote:
> i have a posted for a camera and i was suggesed the following. it is
> 1/3 Color Camera Mod C3188A-6018 Digital output.i am attaching its
> datasheet.(http://www.electronics123.net/amazon/datasheet/c3188a.pdf).
> i have a problem in knowing what its ports are from its data sheet.can
> anyone help me out in telling me what the ports
> 1.1~8 Y0~Y7 Digital output Y Bus
> 23~30 UV0-UV7 Digital output UV bus.
>  are. the description in the datasheet is too vague for me to program
> them. can anyone altest send me a link for their description.
> 
Sometimes I find it amazing.

Google is your friend. ( for the 1,000,000th time )

You would have a real data sheet if you even tried.
( first hit on a google search)

http://mxhaard.free.fr/spca50x/Doc/Omnivision/OV7620.pdf

Good luck

You'll need it.

donald

Article: 123178
Subject: Re: Xilinx MIG DDR2 initialization problems
From: "Carson He" <CHuanheus@gmail.com>
Date: Sat, 18 Aug 2007 11:04:41 -0700
Links: << >>  << T >>  << A >>
Hello Ben,

I'm trying to build a standalone DDR2 SODIMM interface for ML505 evaluation board. I noticed that you've done a similar work recently and wonder if you could share your experiences with me. As you know, the current release of MIG 1.73 does not support DDR2 SODIMM for Virtex-5 yet. So what is your approach to build the memory interface for your ML501 board? Could you give me some suggestions on possible issues I'm going to encounter in this design? Thanks a lot!

Best regards Carson

Article: 123179
Subject: DDR controller - best device to perform
From: pgw <"SwietyMikolaj["@]poczta.onet.pl>
Date: Sat, 18 Aug 2007 20:10:50 +0200
Links: << >>  << T >>  << A >>
Hello

I decided to make my own DDR controller. I want to do this on CycloneII or
Spartan-3 I'm not decided yet. That's way I want to ask the quastion:

Which of this device familly has better features to design a DDR controller
core. 

That what I know now:

Altera Cyclone2:

- PLL
- Clock Delay Control Circuitry for DQS signal  -  it's look interesting
- altdq and altdqs megafunctions to implement output and input logic
- Series On-Chip Termination

Xilinx Spartan3:

- DCM
- Programmable Delay on each input pin.  -   How it's work? How to use it?
- IFDDRxxx and OFDDRxxx components implement output and input logic
- Digitally Controlled Impedance (DCI)  -  but require some pins: VREN,
VREP

Which features more could be helpful?

PGW

Article: 123180
Subject: Re: EDK 9.1.02i warnings flood
From: JD Newcomb <the.jd.in.space@gmail.com>
Date: Sat, 18 Aug 2007 18:37:48 -0000
Links: << >>  << T >>  << A >>
On Jul 29, 5:43 am, charon <mega_me...@gmx.de> wrote:
> Well, my mother tongue is "de_DE.UTF-8@euro", at least this is what
> $LANGUAGE is set to. I get warnings in all Xilinx tools because of
> that.
> The problem is that the EDK generates a Makefile that sets LANGUAGE to
> vhdl. The other tools seem to rely on this.
> When I modify it and set the LANGUAGE to an empty string I don't get
> these warnings anymore. When I do not touch LANGUAGE I get thousands
> of warnings with de_DE.UTF-8@euro not supported.
> BTW the Makefile says it is generated each time so it makes no sense
> to edit it. So this really isn't a solution. Even if I would  set my
> $LANGUAGE to usenglish the Makefile would override it with vhdl.....
> If the language in the project preferences is set to verilog it is the
> same. Arfff...
>
> Matthias
>
> On 29 Jul., 09:08, Antti <Antti.Luk...@googlemail.com> wrote:
>
> > On 28 Jul., 21:55, charon <mega_me...@gmx.de> wrote:
>
> > > Hi!
>
> > > I recently installed EDK 9,1.02i. When I synthesize a project I get
> > > thousand of warnings, which is really annoying:
>
> > > WARNING: vhdl is not supported as a language.  Using usenglish.
>
> > > Reading the real information becomes almost impossible. What can I do
> > > to circumvent this?
>
> > > Thanks!
> > > Matthias
>
> > this is hilarious - is your mother tonque really VHDL ?
> > it looks like ISE wants you to use US English instead of VHDL?
> > maybe you speak oxford english, and that upsets it..
>
> > sorry, no idea whats wrong, but its just another example of how xilinx
> > understand
> > "software testing..." (lets leave it to our customers...)
>
> > Antti


I've experienced the same problem on my lab machine running Debian
Linux 2.6.15 and EDK 9.1.02i. When I ssh into another lab machine
running 2.6.18 Linux, the number of usenglish warnings is reduced to
normal. Could be that some other settings on that machine affect how
EDK runs, though. Hopefully that might help in some way.

----JD----


Article: 123181
Subject: Re: DDR controller - best device to perform
From: nico@puntnl.niks (Nico Coesel)
Date: Sat, 18 Aug 2007 19:55:52 GMT
Links: << >>  << T >>  << A >>
pgw <"SwietyMikolaj["@]poczta.onet.pl> wrote:

>Hello
>
>I decided to make my own DDR controller. I want to do this on CycloneII or
>Spartan-3 I'm not decided yet. That's way I want to ask the quastion:
>
>Which of this device familly has better features to design a DDR controller
>core. 
>
>That what I know now:
>
>Altera Cyclone2:
>
>- PLL
>- Clock Delay Control Circuitry for DQS signal  -  it's look interesting
>- altdq and altdqs megafunctions to implement output and input logic
>- Series On-Chip Termination
>
>Xilinx Spartan3:
>
>- DCM

A normal and 90 degrees phase shifted clock are all that is required
to clock a DDR controller.

>- Programmable Delay on each input pin.  -   How it's work? How to use it?

Not necessary for DDR (should be left disabled)

>- IFDDRxxx and OFDDRxxx components implement output and input logic

Yes, These are very necessary. Clock the signals as close to the IO
pin as possible. The setup and hold times will vary more as the amount
of logic increases which is something you don't want.

>- Digitally Controlled Impedance (DCI)  -  but require some pins: VREN,
>VREP

Useless. It will make the chip run very hot especially with many lines
connected. Use series resistors on the board.

-- 
Reply to nico@nctdevpuntnl (punt=.)
Bedrijven en winkels vindt U op www.adresboekje.nl

Article: 123182
Subject: Re: DDR controller - best device to perform
From: Peter Alfke <alfke@sbcglobal.net>
Date: Sat, 18 Aug 2007 17:05:09 -0700
Links: << >>  << T >>  << A >>
On Aug 18, 12:55 pm, n...@puntnl.niks (Nico Coesel) wrote:
> pgw <"SwietyMikolaj["@]poczta.onet.pl> wrote:
> >Hello
>
> >I decided to make my own DDR controller. I want to do this on CycloneII or
> >Spartan-3 I'm not decided yet. That's way I want to ask the quastion:
>
> >Which of this device familly has better features to design a DDR controller
> >core.
>
> >That what I know now:
>
> >Altera Cyclone2:
>
> >- PLL
> >- Clock Delay Control Circuitry for DQS signal  -  it's look interesting
> >- altdq and altdqs megafunctions to implement output and input logic
> >- Series On-Chip Termination
>
> >Xilinx Spartan3:
>
> >- DCM
>
> A normal and 90 degrees phase shifted clock are all that is required
> to clock a DDR controller.
>
> >- Programmable Delay on each input pin.  -   How it's work? How to use it?
>
> Not necessary for DDR (should be left disabled)
>
> >- IFDDRxxx and OFDDRxxx components implement output and input logic
>
It is a common misconception that DCI (on-chip termination) causes the
chip to run hot.
When used as serial (output) termination, the on-chip heat generated
by DCI is insignificant.
When used as parallel (input) Thevenin termination, the heat indeed is
substantial.
But an external series resistor is not the alternative to the parallel
case...
Peter Alfke

> Yes, These are very necessary. Clock the signals as close to the IO
> pin as possible. The setup and hold times will vary more as the amount
> of logic increases which is something you don't want.
>
> >- Digitally Controlled Impedance (DCI)  -  but require some pins: VREN,
> >VREP
>
> Useless. It will make the chip run very hot especially with many lines
> connected. Use series resistors on the board.
>
> --
> Reply to nico@nctdevpuntnl (punt=.)
> Bedrijven en winkels vindt U opwww.adresboekje.nl



Article: 123183
Subject: Re: DDR controller - best device to perform
From: pgw <"SwietyMikolaj["@]poczta.onet.pl>
Date: Sun, 19 Aug 2007 11:25:03 +0200
Links: << >>  << T >>  << A >>
Peter Alfke wrote:

>>>- Digitally Controlled Impedance (DCI)  -  but require some pins: VREN,
>>>VREP
>>
>> Useless. It will make the chip run very hot especially with many lines
>> connected. Use series resistors on the board.

> It is a common misconception that DCI (on-chip termination) causes the
> chip to run hot.
> When used as serial (output) termination, the on-chip heat generated
> by DCI is insignificant.
> When used as parallel (input) Thevenin termination, the heat indeed is
> substantial.
> But an external series resistor is not the alternative to the parallel
> case...
> Peter Alfke

Also the best way is to use a SSTL2_II (without DCI) iostandard with output
driver impedance 25Ohm and external parallel resistor?

PGW

Article: 123184
Subject: Re: DDR controller - best device to perform
From: nico@puntnl.niks (Nico Coesel)
Date: Sun, 19 Aug 2007 10:19:56 GMT
Links: << >>  << T >>  << A >>
Peter Alfke <alfke@sbcglobal.net> wrote:

>On Aug 18, 12:55 pm, n...@puntnl.niks (Nico Coesel) wrote:
>> pgw <"SwietyMikolaj["@]poczta.onet.pl> wrote:
>> >Hello
>>
>> >I decided to make my own DDR controller. I want to do this on CycloneII or
>> >Spartan-3 I'm not decided yet. That's way I want to ask the quastion:
>>
>> >Which of this device familly has better features to design a DDR controller
>> >core.
>>
>> >That what I know now:
>>
>> >Altera Cyclone2:
>>
>> >- PLL
>> >- Clock Delay Control Circuitry for DQS signal  -  it's look interesting
>> >- altdq and altdqs megafunctions to implement output and input logic
>> >- Series On-Chip Termination
>>
>> >Xilinx Spartan3:
>>
>> >- DCM
>>
>> A normal and 90 degrees phase shifted clock are all that is required
>> to clock a DDR controller.
>>
>> >- Programmable Delay on each input pin.  -   How it's work? How to use it?
>>
>> Not necessary for DDR (should be left disabled)
>>
>> >- IFDDRxxx and OFDDRxxx components implement output and input logic
>>
>It is a common misconception that DCI (on-chip termination) causes the
>chip to run hot.
>When used as serial (output) termination, the on-chip heat generated
>by DCI is insignificant.
>When used as parallel (input) Thevenin termination, the heat indeed is
>substantial.

I agree, but parallel termination is the only option for SSTL-II
outputs. So if you want to connect a 32 bit wide DDR memory to a
Spartan 3 device (like I did), DCI is not going to work.

>But an external series resistor is not the alternative to the parallel
>case...

The Spartan 3 ain't that fast. I know the I/O pins are specified to be
able to run at 300MHz or so, but the internal logic won't allow that
speed anyway in practical situations. I estimate the real life upper
limit is about 150MHz.

-- 
Reply to nico@nctdevpuntnl (punt=.)
Bedrijven en winkels vindt U op www.adresboekje.nl

Article: 123185
Subject: Re: DDR controller - best device to perform
From: pgw <"SwietyMikolaj["@]poczta.onet.pl>
Date: Sun, 19 Aug 2007 13:56:38 +0200
Links: << >>  << T >>  << A >>
Nico Coesel wrote:

>>- Digitally Controlled Impedance (DCI)  -  but require some pins: VREN,
>>VREP
> 
> Useless. It will make the chip run very hot especially with many lines
> connected. Use series resistors on the board.

Output pin in SSTL2_II IOSTANDARD has output driver impedance 25 Ohms is
that not suffiecient?
Additionally an external parallel 50 Ohms resistor connect to Vtt and
output and input termination is done, I think.

-- 
PGW

Article: 123186
Subject: Xilinx / ISE multi-cycle path constraint pitfall
From: eli.billauer@gmail.com
Date: Sun, 19 Aug 2007 07:10:11 -0700
Links: << >>  << T >>  << A >>
Hello,

To summarize the issue briefly: I have a group of flip-flops which
toggle every 4 clocks by using an "clock enable" signal, but I can't
define a multipath constraint according to this signal. That is, I can
do it, but I silently create timing violations.

The following bare-bone example illustrates the problem:

module top(clk, cnt);

   input clk;
   output [15:0] cnt;

   reg [15:0] 	 cnt;
   reg [1:0] 	 en_counter;
   reg 		 en;

   always @(posedge clk)
     begin
        en_counter <= en_counter + 1;
        en <= (en_counter == 0);
     end

   always @(posedge clk)
     if (en) // This is the "clock enable"
       begin
          // This runs only once in four clocks
           if (cnt != 16'hffff)
           cnt <= cnt + 1;
       end

endmodule

So here we have "en" high every 4 clocks. We use it as the "clock
enable" in the second "always" clause. I don't think I can hint the
synthesizer more clearly that I want a clock enable.

So this is what my UCF would look like (bare-bone again):

NET "clk" TNM_NET = "clk";
TIMESPEC "ts_clk" = PERIOD "clk" 10 ns HIGH 50 %;
NET "en" TNM = "tgrp_en";
TIMESPEC "ts_multipath" = FROM "tgrp_en" TO "tgrp_en" "TS_clk" * 4;

The "ts_multipath" says that any path going from "tgrp_en" to
"tgrp_en" can be relaxed to 4 clocks. "tgrp_en" is effectively all
flip-flops to which the signal reaches. In our case, it's cnt[15:0].

And here comes the catch: The synthesizer recognized that cnt[15:0]
should be incremented if and only if two conditions are met: "en" is
high and (cnt != 16'hffff). So it picked the simplest solution: 16 D-
flip-flops, whose inputs are (cnt+1), and their clock enable (CE) is
the increment condition just described.

This is all nice, but now we have a path from cnt[15:0] (a.k.a.
"tgrp_en") to itself, which has to be finished in one single clock:
>From the values of cnt[15:0], through the logic which does cnt!
=16'hffff, and back to the flip-flops' CE. After all, the CE must meet
timing for every clock. On the other hand, the multi-path constraint
allows 4 clocks for this path.

So by making this multi-path constraint, we've actually allowed a
timing violation. The core of the problem is the assumption that "en"
reaches its flip-flops only as clock enable. The reality is that NET/
TNM grouping constraints (and NET/TNM_NET as well) starts at the given
net ("en" in our case) and includes any flip-flop which is driven by
it, even if it's trough some logic.

So now what? How can I find a rule for grouping multi-path flip-flops?
Is there any way to group the flip-flops to which "en" is connected
directly? Or even better, can I require that the net reaches a certain
pin (CE, in our case)?

Or, is there any way to tell the synthesizer (XST in particular) that
"en" should be used as clock enable only, and not make any logic
tricks with it?

Thanks in advance,
    Eli


Article: 123187
Subject: Re: Reconfiguring a Virtex4 DCM_ADV.
From: "Symon" <symon_brewer@hotmail.com>
Date: Sun, 19 Aug 2007 17:36:58 +0100
Links: << >>  << T >>  << A >>
"davide" <davide@xilinx.com> wrote in message 
news:fa2j1c$g1r2@cnn.xilinx.com...
> Symon,
>
> I believe that DRP can only change the attributes for phase shift, M and D 
> values of the DCM.  Not CLKDV values.
>
> -David
>
Hi David,
Yeah, looks like you're right. I might try some addresses when I get chance, 
if I find anythign I'll report back...
Cheers, Syms. 



Article: 123188
Subject: Re: DDR controller - best device to perform
From: PeteS <axkz70@dsl.pipex.com>
Date: Sun, 19 Aug 2007 14:15:30 -0400
Links: << >>  << T >>  << A >>
Nico Coesel wrote:
> pgw <"SwietyMikolaj["@]poczta.onet.pl> wrote:
> 
>> Hello
>>
>> I decided to make my own DDR controller. I want to do this on CycloneII or
>> Spartan-3 I'm not decided yet. That's way I want to ask the quastion:
>>
>> Which of this device familly has better features to design a DDR controller
>> core. 
>>
>> That what I know now:
>>
>> Altera Cyclone2:
>>
>> - PLL
>> - Clock Delay Control Circuitry for DQS signal  -  it's look interesting
>> - altdq and altdqs megafunctions to implement output and input logic
>> - Series On-Chip Termination
>>
>> Xilinx Spartan3:
>>
>> - DCM
> 
> A normal and 90 degrees phase shifted clock are all that is required
> to clock a DDR controller.

For the perfect (or close to it) case. A practical DDR controller 
running at 200/400 or greater benefits greatly from having the ability 
to add/subtract a small delay around the 90 degrees. Whether the delay 
is useful depends on the application.

> 
>> - Programmable Delay on each input pin.  -   How it's work? How to use it?
> 
> Not necessary for DDR (should be left disabled)
See above.
> 
>> - IFDDRxxx and OFDDRxxx components implement output and input logic
> 
> Yes, These are very necessary. Clock the signals as close to the IO
> pin as possible. The setup and hold times will vary more as the amount
> of logic increases which is something you don't want.
> 
>> - Digitally Controlled Impedance (DCI)  -  but require some pins: VREN,
>> VREP
> 
> Useless. It will make the chip run very hot especially with many lines
> connected. Use series resistors on the board.
Agreed, but DDR should have a known impedance at the driver and 
receiver, which I believe the SSTL (II) IO standard provides.

> 

Article: 123189
Subject: Re: DDR controller - best device to perform
From: PeteS <axkz70@dsl.pipex.com>
Date: Sun, 19 Aug 2007 14:17:28 -0400
Links: << >>  << T >>  << A >>
Peter Alfke wrote:
> On Aug 18, 12:55 pm, n...@puntnl.niks (Nico Coesel) wrote:
>> pgw <"SwietyMikolaj["@]poczta.onet.pl> wrote:
>>> Hello
>>> I decided to make my own DDR controller. I want to do this on CycloneII or
>>> Spartan-3 I'm not decided yet. That's way I want to ask the quastion:
>>> Which of this device familly has better features to design a DDR controller
>>> core.
>>> That what I know now:
>>> Altera Cyclone2:
>>> - PLL
>>> - Clock Delay Control Circuitry for DQS signal  -  it's look interesting
>>> - altdq and altdqs megafunctions to implement output and input logic
>>> - Series On-Chip Termination
>>> Xilinx Spartan3:
>>> - DCM
>> A normal and 90 degrees phase shifted clock are all that is required
>> to clock a DDR controller.
>>
>>> - Programmable Delay on each input pin.  -   How it's work? How to use it?
>> Not necessary for DDR (should be left disabled)
>>
>>> - IFDDRxxx and OFDDRxxx components implement output and input logic
> It is a common misconception that DCI (on-chip termination) causes the
> chip to run hot.
> When used as serial (output) termination, the on-chip heat generated
> by DCI is insignificant.
> When used as parallel (input) Thevenin termination, the heat indeed is
> substantial.
> But an external series resistor is not the alternative to the parallel
> case...

It is not always necessary to parallel terminate data lines in DDR. If 
the system is point to point (only one bank physically) it's perfectly 
possible to series terminate the line with a little homework. Parallel 
termination is not an option for address and control, however.

Cheers

PeteS


> Peter Alfke
> 
>> Yes, These are very necessary. Clock the signals as close to the IO
>> pin as possible. The setup and hold times will vary more as the amount
>> of logic increases which is something you don't want.
>>
>>> - Digitally Controlled Impedance (DCI)  -  but require some pins: VREN,
>>> VREP
>> Useless. It will make the chip run very hot especially with many lines
>> connected. Use series resistors on the board.
>>
>> --
>> Reply to nico@nctdevpuntnl (punt=.)
>> Bedrijven en winkels vindt U opwww.adresboekje.nl
> 
> 

Article: 123190
Subject: Re: Xilinx / ISE multi-cycle path constraint pitfall
From: Mike Treseler <mike_treseler@comcast.net>
Date: Sun, 19 Aug 2007 11:49:53 -0700
Links: << >>  << T >>  << A >>
eli.billauer@gmail.com wrote:

> To summarize the issue briefly: I have a group of flip-flops which
> toggle every 4 clocks by using an "clock enable" signal, but I can't
> define a multipath constraint according to this signal. 

The "en" signal is a synchronous input
to the second block. It is not a clock
and does not need any constraint other
than the Fmax for "clk".

Here's a related example using a single block:
http://home.comcast.net/~mike_treseler/count_enable.v

        -- Mike Treseler

Article: 123191
Subject: Re: Xilinx / ISE multi-cycle path constraint pitfall
From: "John Retta" <jretta@rtc-inc.com>
Date: Sun, 19 Aug 2007 12:52:49 -0600
Links: << >>  << T >>  << A >>
[1] There are lots of ways to define a Time group, and yours is too 
inclusive.

Here are some multipath constraints I use for similar problem :

INST "u_tcg_sys_timers/tcg_year_*" TNM="SYSTIMER_1_PER_SEC";
INST "u_tcg_sys_timers/tcg_doy_*"  TNM="SYSTIMER_1_PER_SEC";
INST "u_tcg_sys_timers/tcg_hrs_*"  TNM="SYSTIMER_1_PER_SEC";
INST "u_tcg_sys_timers/tcg_min_*"  TNM="SYSTIMER_1_PER_SEC";
INST "u_tcg_sys_timers/tcg_sec_*"  TNM="SYSTIMER_1_PER_SEC";

TIMESPEC "TS_IGNORE_1_PER_SEC" = FROM "SYSTIMER_1_PER_SEC" TO 
"SYSTIMER_1_PER_SEC" 18.0;

[2] In future, if you have a prefix on signal names that you
know will be a multipath source/destination, it will be easier,
in large designs to use wildcards for inclusion in group.

[3] Take a look at
xilinx/doc/usenglish/docs/cgd/cgd.pdf for good reference
on constraint usage.  Or open the constraint editor, and
experiment with applying constraints ... check the results
in .ucf file for syntax.  I personally don't use constraint editor
for final changes, because I don't like the tools mucking with
my .ucf file.

-- 
Regards,
John Retta
Owner and Designer
Retta Technical Consulting Inc.

Colorado Based Xilinx Consultant

email : jretta@rtc-inc.com
web :  www.rtc-inc.com


<eli.billauer@gmail.com> wrote in message 
news:1187532611.606163.221620@o80g2000hse.googlegroups.com...
> Hello,
>
> To summarize the issue briefly: I have a group of flip-flops which
> toggle every 4 clocks by using an "clock enable" signal, but I can't
> define a multipath constraint according to this signal. That is, I can
> do it, but I silently create timing violations.
>
> The following bare-bone example illustrates the problem:
>
> module top(clk, cnt);
>
>   input clk;
>   output [15:0] cnt;
>
>   reg [15:0] cnt;
>   reg [1:0] en_counter;
>   reg en;
>
>   always @(posedge clk)
>     begin
>        en_counter <= en_counter + 1;
>        en <= (en_counter == 0);
>     end
>
>   always @(posedge clk)
>     if (en) // This is the "clock enable"
>       begin
>          // This runs only once in four clocks
>           if (cnt != 16'hffff)
>           cnt <= cnt + 1;
>       end
>
> endmodule
>
> So here we have "en" high every 4 clocks. We use it as the "clock
> enable" in the second "always" clause. I don't think I can hint the
> synthesizer more clearly that I want a clock enable.
>
> So this is what my UCF would look like (bare-bone again):
>
> NET "clk" TNM_NET = "clk";
> TIMESPEC "ts_clk" = PERIOD "clk" 10 ns HIGH 50 %;
> NET "en" TNM = "tgrp_en";
> TIMESPEC "ts_multipath" = FROM "tgrp_en" TO "tgrp_en" "TS_clk" * 4;
>
> The "ts_multipath" says that any path going from "tgrp_en" to
> "tgrp_en" can be relaxed to 4 clocks. "tgrp_en" is effectively all
> flip-flops to which the signal reaches. In our case, it's cnt[15:0].
>
> And here comes the catch: The synthesizer recognized that cnt[15:0]
> should be incremented if and only if two conditions are met: "en" is
> high and (cnt != 16'hffff). So it picked the simplest solution: 16 D-
> flip-flops, whose inputs are (cnt+1), and their clock enable (CE) is
> the increment condition just described.
>
> This is all nice, but now we have a path from cnt[15:0] (a.k.a.
> "tgrp_en") to itself, which has to be finished in one single clock:
>>From the values of cnt[15:0], through the logic which does cnt!
> =16'hffff, and back to the flip-flops' CE. After all, the CE must meet
> timing for every clock. On the other hand, the multi-path constraint
> allows 4 clocks for this path.
>
> So by making this multi-path constraint, we've actually allowed a
> timing violation. The core of the problem is the assumption that "en"
> reaches its flip-flops only as clock enable. The reality is that NET/
> TNM grouping constraints (and NET/TNM_NET as well) starts at the given
> net ("en" in our case) and includes any flip-flop which is driven by
> it, even if it's trough some logic.
>
> So now what? How can I find a rule for grouping multi-path flip-flops?
> Is there any way to group the flip-flops to which "en" is connected
> directly? Or even better, can I require that the net reaches a certain
> pin (CE, in our case)?
>
> Or, is there any way to tell the synthesizer (XST in particular) that
> "en" should be used as clock enable only, and not make any logic
> tricks with it?
>
> Thanks in advance,
>    Eli
> 



Article: 123192
Subject: Re: DDR controller - best device to perform
From: fpgabuilder <fpgabuilder-groups@yahoo.com>
Date: Sun, 19 Aug 2007 18:53:18 -0000
Links: << >>  << T >>  << A >>
On Aug 19, 11:15 am, PeteS <axk...@dsl.pipex.com> wrote:
> Nico Coesel wrote:
> > pgw <"SwietyMikolaj["@]poczta.onet.pl> wrote:
>
> >> Hello
>
> >> I decided to make my own DDR controller. I want to do this on CycloneII or
> >> Spartan-3 I'm not decided yet. That's way I want to ask the quastion:
>
> >> Which of this device familly has better features to design a DDR controller
> >> core.
>
> >> That what I know now:
>
> >> Altera Cyclone2:
>
> >> - PLL
> >> - Clock Delay Control Circuitry for DQS signal  -  it's look interesting
> >> - altdq and altdqs megafunctions to implement output and input logic
> >> - Series On-Chip Termination
>
> >> Xilinx Spartan3:
>
> >> - DCM
>
> > A normal and 90 degrees phase shifted clock are all that is required
> > to clock a DDR controller.
>
> For the perfect (or close to it) case. A practical DDR controller
> running at 200/400 or greater benefits greatly from having the ability
> to add/subtract a small delay around the 90 degrees. Whether the delay
> is useful depends on the application.
>
>
>
>
>
> >> - Programmable Delay on each input pin.  -   How it's work? How to use it?
>
> > Not necessary for DDR (should be left disabled)
> See above.
>
> >> - IFDDRxxx and OFDDRxxx components implement output and input logic
>
> > Yes, These are very necessary. Clock the signals as close to the IO
> > pin as possible. The setup and hold times will vary more as the amount
> > of logic increases which is something you don't want.
>
> >> - Digitally Controlled Impedance (DCI)  -  but require some pins: VREN,
> >> VREP
>
> > Useless. It will make the chip run very hot especially with many lines
> > connected. Use series resistors on the board.
>
> Agreed, but DDR should have a known impedance at the driver and
> receiver, which I believe the SSTL (II) IO standard provides.
>
>

I recently removed the series and parallel terminations from a Cyclone
3 dev board and ran the ddr interface at 133MHz.  The interface worked
overnight without a problem.

I think the trace length on the ddr signals is about 2-3 inches.  They
are point-to-point signals.  The data bus is 16bits wide and is
implemented using Altera's ALTMEMPHY megafunction.  Further, I
momentarily cooled down the memory and altera chips to -40degC and
then heated them up to 125degC without any errors.

I see that without the series terminations there is a problem on the
overshoot and undershoot.  But it does not violate the specs of the
fpga.  On the memory side, the problem goes away when I use onchip
series termination.



Article: 123193
Subject: Re: Synthesizing fixed_pkg in ISE 9.2
From: David Bishop <dbishop@vhdl.org>
Date: Sun, 19 Aug 2007 15:27:39 -0400
Links: << >>  << T >>  << A >>
Andreas Schwarz wrote:
> On 14 Aug., 03:52, David Bishop <dbis...@vhdl.org> wrote:
>> Xilinx said that they were going to fix this in 9.3.  I have not had a
>> chance to check it out yet, but I would try that first.
> 
> Thanks for the info. 9.3 isn't released yet, do you have any idea when
> it will be?

I'd use Synplicity.  I've been using 8.803 with these packages.

Article: 123194
Subject: Re: Xilinx / ISE multi-cycle path constraint pitfall
From: mk <kal*@dspia.*comdelete>
Date: Sun, 19 Aug 2007 12:34:09 -0700
Links: << >>  << T >>  << A >>
On Sun, 19 Aug 2007 07:10:11 -0700, eli.billauer@gmail.com wrote:

>Hello,
>
>To summarize the issue briefly: I have a group of flip-flops which
>toggle every 4 clocks by using an "clock enable" signal, but I can't
>define a multipath constraint according to this signal. That is, I can
>do it, but I silently create timing violations.
>
>The following bare-bone example illustrates the problem:
>
>module top(clk, cnt);
>
>   input clk;
>   output [15:0] cnt;
>
>   reg [15:0] 	 cnt;
>   reg [1:0] 	 en_counter;
>   reg 		 en;
>
>   always @(posedge clk)
>     begin
>        en_counter <= en_counter + 1;
>        en <= (en_counter == 0);
>     end
>
>   always @(posedge clk)
>     if (en) // This is the "clock enable"
>       begin
>          // This runs only once in four clocks
>           if (cnt != 16'hffff)
>           cnt <= cnt + 1;
>       end
>
>endmodule
>
>So here we have "en" high every 4 clocks. We use it as the "clock
>enable" in the second "always" clause. I don't think I can hint the
>synthesizer more clearly that I want a clock enable.
>
>So this is what my UCF would look like (bare-bone again):
>
>NET "clk" TNM_NET = "clk";
>TIMESPEC "ts_clk" = PERIOD "clk" 10 ns HIGH 50 %;
>NET "en" TNM = "tgrp_en";
>TIMESPEC "ts_multipath" = FROM "tgrp_en" TO "tgrp_en" "TS_clk" * 4;

I think you need to change the way you're setting up the MCP
constraint. What you want is for every flop which is controlled by EN,
the REG.Q to REG.D path is 4 cycles. EN.Q to CNT.D is actually a
single cycle path. It's easier to see if you draw the waveform; EN
controls a MUX one end of which is connected CNT.Q and the other is
connected to the output of the incrementer logic (including the
CNT!=16'hFFFF check) (only logically not what the synthesizer
necessarily implements) EN is high only a single clock so the path of
the MUX which is short has to work in a single cycle. The other path
which has the conditional incrementer can take 4 cycles to settle.

Article: 123195
Subject: Re: Xilinx / ISE multi-cycle path constraint pitfall
From: eli.billauer@gmail.com
Date: Sun, 19 Aug 2007 14:23:19 -0700
Links: << >>  << T >>  << A >>
First, thanks all for responding.

Now to business:

On Aug 19, 8:52 pm, "John Retta" <jre...@rtc-inc.com> wrote:
> [1] There are lots of ways to define a Time group, and yours is too
> inclusive.

Of course it is. Otherwise there wouldn't be a problem. ;)

(...)

> [2] In future, if you have a prefix on signal names that you
> know will be a multipath source/destination, it will be easier,
> in large designs to use wildcards for inclusion in group.

That won't solve the problem, I'm afraid. What I showed in my example
above, is that some paths between registers which change only every 4
clocks still can't be allowed for multipath constraint relaxation. So
hand-picking those registers according to their expected BEHAVIOUR
won't do the job. I mean, wouldn't you (manually) pick "cnt" as a
candidate for a multi-cycle path from itself to itself? (which would
be correct, if there wasn't any extra "if" to mess up the real CE
path)

>
> [3] Take a look at
> xilinx/doc/usenglish/docs/cgd/cgd.pdf for good reference
> on constraint usage.

Ah, the Constraint Guide is my friend. And in section 4->FPGA Timing
Constraint Strategies->Specific Timing Assignments I it says:

<< SNIP >>

Identifying groups by connectivity allows you to group elements by
specifying nets that eventually drive synchronous elements and pads.
This method is a good way to identify multi-cycle paths elements that
are controlled by a clock enable. This method uses TNM_NET on a net.

The TNM_NET syntax for identifying groups by connectivity is:

NET "net_name" TNM_NET = qualifier "tnm_name";

<< SNIP >>

... and then they go on more or less like I did. (I chose TNM instead
of TNM_NET but that's not relevant here).

So the problem remains. Any ideas?

     Eli


Article: 123196
Subject: Re: DDR controller - best device to perform
From: nico@puntnl.niks (Nico Coesel)
Date: Sun, 19 Aug 2007 22:03:19 GMT
Links: << >>  << T >>  << A >>
PeteS <axkz70@dsl.pipex.com> wrote:

>fpgabuilder wrote:
>> On Aug 19, 11:15 am, PeteS <axk...@dsl.pipex.com> wrote:
>>> Nico Coesel wrote:
>>>> pgw <"SwietyMikolaj["@]poczta.onet.pl> wrote:
>>>>> Hello
>>>>> I decided to make my own DDR controller. I want to do this on CycloneII or
>>>>> Spartan-3 I'm not decided yet. That's way I want to ask the quastion:
>>>>> Which of this device familly has better features to design a DDR controller
>>>>> core.
>>>>> That what I know now:
>>>>> Altera Cyclone2:
>>>>> - PLL
>>>>> - Clock Delay Control Circuitry for DQS signal  -  it's look interesting
>>>>> - altdq and altdqs megafunctions to implement output and input logic
>>>>> - Series On-Chip Termination
>>>>> Xilinx Spartan3:
>>>>> - DCM
>>>> A normal and 90 degrees phase shifted clock are all that is required
>>>> to clock a DDR controller.
>>> For the perfect (or close to it) case. A practical DDR controller
>>> running at 200/400 or greater benefits greatly from having the ability
>>> to add/subtract a small delay around the 90 degrees. Whether the delay
>>> is useful depends on the application.
>>>
>>>>> - Programmable Delay on each input pin.  -   How it's work? How to use it?
>>>> Not necessary for DDR (should be left disabled)
>>> See above.
>>>
>>>>> - IFDDRxxx and OFDDRxxx components implement output and input logic
>>>> Yes, These are very necessary. Clock the signals as close to the IO
>>>> pin as possible. The setup and hold times will vary more as the amount
>>>> of logic increases which is something you don't want.
>>>>> - Digitally Controlled Impedance (DCI)  -  but require some pins: VREN,
>>>>> VREP
>>>> Useless. It will make the chip run very hot especially with many lines
>>>> connected. Use series resistors on the board.
>>> Agreed, but DDR should have a known impedance at the driver and
>>> receiver, which I believe the SSTL (II) IO standard provides.
>>>
>>>
>> 
>> I recently removed the series and parallel terminations from a Cyclone
>> 3 dev board and ran the ddr interface at 133MHz.  The interface worked
>> overnight without a problem.
>> 
>> I think the trace length on the ddr signals is about 2-3 inches.  They
>> are point-to-point signals.  The data bus is 16bits wide and is
>> implemented using Altera's ALTMEMPHY megafunction.  Further, I
>> momentarily cooled down the memory and altera chips to -40degC and
>> then heated them up to 125degC without any errors.
>> 
>> I see that without the series terminations there is a problem on the
>> overshoot and undershoot.  But it does not violate the specs of the
>> fpga.  On the memory side, the problem goes away when I use onchip
>> series termination.
>> 
>> 
>The decision as to whether to parallel terminate is based on a number of 
>things, as is the decision to simply series terminate. It depends on the 
>application. Generally, if the data lines are point to point (2 
>connections only) you can get away with series termination (but it's not 
>that simple - some thought needs to be given to the termination value) - 
>if you have more than one endpoint, series termination is not possible 
>for guaranteed operation, which is why series termination of 
>address/control is generally not possible for guaranteed operation.

Almost all the address and control lines can be run at half the memory
clock frequency so drive strength and termination can be relaxed.

-- 
Reply to nico@nctdevpuntnl (punt=.)
Bedrijven en winkels vindt U op www.adresboekje.nl

Article: 123197
Subject: Re: Xilinx / ISE multi-cycle path constraint pitfall
From: "John Retta" <jretta@rtc-inc.com>
Date: Sun, 19 Aug 2007 16:22:29 -0600
Links: << >>  << T >>  << A >>
[1] Try this.
NET "clk" TNM_NET = "clk";
TIMESPEC "ts_clk" = PERIOD "clk" 10 ns HIGH 50 %;

INST "cnt*"                                       TNM="JUST_CNT_FF";

TIMESPEC "TS_JUST_CNT_FF" = FROM "JUST_CNT_FF TO "JUST_CNT_FF"   "TS_clk" * 
4;

[2] My only point was that there were more specific techniques for 
identifying
paths.  The level of specificity though is limited.  For instance, suppose 
FF1 had
two paths to FF2, one a multicycle path, the second a single clk path.
It is not clear how to distinguish the two paths.  This might seem like an 
arcane
example, but I suspect your "simple" example might be more illustrative
of a common problem

-- 
Regards,
John Retta
Owner and Designer
Retta Technical Consulting Inc.

email : jretta@rtc-inc.com
web :  www.rtc-inc.com


<eli.billauer@gmail.com> wrote in message 
news:1187558599.351844.214710@w3g2000hsg.googlegroups.com...
> First, thanks all for responding.
>
> Now to business:
>
> On Aug 19, 8:52 pm, "John Retta" <jre...@rtc-inc.com> wrote:
>> [1] There are lots of ways to define a Time group, and yours is too
>> inclusive.
>
> Of course it is. Otherwise there wouldn't be a problem. ;)
>
> (...)
>
>> [2] In future, if you have a prefix on signal names that you
>> know will be a multipath source/destination, it will be easier,
>> in large designs to use wildcards for inclusion in group.
>
> That won't solve the problem, I'm afraid. What I showed in my example
> above, is that some paths between registers which change only every 4
> clocks still can't be allowed for multipath constraint relaxation. So
> hand-picking those registers according to their expected BEHAVIOUR
> won't do the job. I mean, wouldn't you (manually) pick "cnt" as a
> candidate for a multi-cycle path from itself to itself? (which would
> be correct, if there wasn't any extra "if" to mess up the real CE
> path)
>
>>
>> [3] Take a look at
>> xilinx/doc/usenglish/docs/cgd/cgd.pdf for good reference
>> on constraint usage.
>
> Ah, the Constraint Guide is my friend. And in section 4->FPGA Timing
> Constraint Strategies->Specific Timing Assignments I it says:
>
> << SNIP >>
>
> Identifying groups by connectivity allows you to group elements by
> specifying nets that eventually drive synchronous elements and pads.
> This method is a good way to identify multi-cycle paths elements that
> are controlled by a clock enable. This method uses TNM_NET on a net.
>
> The TNM_NET syntax for identifying groups by connectivity is:
>
> NET "net_name" TNM_NET = qualifier "tnm_name";
>
> << SNIP >>
>
> ... and then they go on more or less like I did. (I chose TNM instead
> of TNM_NET but that's not relevant here).
>
> So the problem remains. Any ideas?
>
>     Eli
> 



Article: 123198
Subject: Globally Asynchronous in FPGA
From: Pasacco <pasacco@gmail.com>
Date: Sun, 19 Aug 2007 16:26:29 -0700
Links: << >>  << T >>  << A >>
Hello

Let me ask one question.

>From my small experience, I find that FPGA is good for synchronous
design, because
(1) There are enough registers,
(2) There are fat clock trees for entire chip,
(3) There are IPs for different clock synchronization management (for
example, DCM).

Question is that

If we design very complex systems that contains many IPs that
(1) different IPs need different clock domains,
(2) different communication buses (for example, PLB, OPB) need
different clocks,
(3) single clock has too many loads,

Then how can current FPGA handle?

I think that following will be good in FPGA
(1) Each IP has its own clock,
(2) IPs communicate with "asynchronous handshaking"  each other.


Article: 123199
Subject: Re: Globally Asynchronous in FPGA
From: "Symon" <symon_brewer@hotmail.com>
Date: Mon, 20 Aug 2007 00:53:43 +0100
Links: << >>  << T >>  << A >>
"Pasacco" <pasacco@gmail.com> wrote in message 
news:1187565989.685058.128660@57g2000hsv.googlegroups.com...
> Hello
>
> Let me ask one question.
>  Then how can current FPGA handle?
>
> I think that following will be good in FPGA
> (1) Each IP has its own clock,
> (2) IPs communicate with "asynchronous handshaking"  each other.
>
Dear P.,
Let me answer your question. IP should have a clock port and a clock enable 
port. So, if you need to integrate several bits of IP, you can use one clock 
with different enables.
HTH., Syms. 





Site Home   Archive Home   FAQ Home   How to search the Archive   How to Navigate the Archive   
Compare FPGA features and resources   

Threads starting:
1994JulAugSepOctNovDec1994
1995JanFebMarAprMayJunJulAugSepOctNovDec1995
1996JanFebMarAprMayJunJulAugSepOctNovDec1996
1997JanFebMarAprMayJunJulAugSepOctNovDec1997
1998JanFebMarAprMayJunJulAugSepOctNovDec1998
1999JanFebMarAprMayJunJulAugSepOctNovDec1999
2000JanFebMarAprMayJunJulAugSepOctNovDec2000
2001JanFebMarAprMayJunJulAugSepOctNovDec2001
2002JanFebMarAprMayJunJulAugSepOctNovDec2002
2003JanFebMarAprMayJunJulAugSepOctNovDec2003
2004JanFebMarAprMayJunJulAugSepOctNovDec2004
2005JanFebMarAprMayJunJulAugSepOctNovDec2005
2006JanFebMarAprMayJunJulAugSepOctNovDec2006
2007JanFebMarAprMayJunJulAugSepOctNovDec2007
2008JanFebMarAprMayJunJulAugSepOctNovDec2008
2009JanFebMarAprMayJunJulAugSepOctNovDec2009
2010JanFebMarAprMayJunJulAugSepOctNovDec2010
2011JanFebMarAprMayJunJulAugSepOctNovDec2011
2012JanFebMarAprMayJunJulAugSepOctNovDec2012
2013JanFebMarAprMayJunJulAugSepOctNovDec2013
2014JanFebMarAprMayJunJulAugSepOctNovDec2014
2015JanFebMarAprMayJunJulAugSepOctNovDec2015
2016JanFebMarAprMayJunJulAugSepOctNovDec2016
2017JanFebMarAprMayJunJulAugSepOctNovDec2017
2018JanFebMarAprMayJunJulAugSepOctNovDec2018
2019JanFebMarAprMayJunJulAugSepOctNovDec2019
2020JanFebMarAprMay2020

Authors:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Custom Search