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 127850

Article: 127850
Subject: Re: Real examples of metastability causing bugs
From: "KJ" <kkjennings@sbcglobal.net>
Date: Wed, 09 Jan 2008 12:49:48 GMT
Links: << >>  << T >>  << A >>

"Allan Herriman" <allanherriman@hotmail.com> wrote in message 
news:gdf9o3dsdk8l2p9954gnfga9bcsp5to7ki@4ax.com...
<snip>
> What you may find surprising is that 0% of the clock domain crossing
> bugs had anything to do with metastability.  Glitches and races were
> the cause.
>
> My interpretation:
> I think that most designers have heard of metastability, so they put
> retiming flip flops everywhere.  Consequently, metastability related
> problems don't occur often.
>

Your last paragraph directly contradicts the previous one.  If designers 
actually were properly putting in retiming flip flops then they wouldn't be 
having clock domain crossing issues.  Even if the signal under consideration 
is an input pin of the device, it still either exists in some clock domain 
(to which the device may have access to) or it is completely asynchronous to 
any clock.  In either case, sampling of some signal with a clock implies a 
clock domain crossing into the new clock domain.

A metastable output is always caused by violating setup or hold timing 
requirements.  This is a necessary condition.  However violating setup or 
hold time requirements does not necessarily cause an output to be 
metastable.  This implies that violating setup and hold is not a sufficient 
condition to cause metastability.

Since the only knob you have to turn to try to create a metastable output is 
the timing of one signal relative to another this means that there is no way 
you can create an experiment that will always cause a flip flop to go 
metastable.  So the only thing you can do is repeat an experiment over and 
over in the hope that eventually it will go metastable.  Having done this 
though you will still only be able to conclude that violating timing can 
cause metastability (note:  'can cause' not 'will cause').

KJ 



Article: 127851
Subject: Re: Real examples of metastability causing bugs
From: Allan Herriman <allanherriman@hotmail.com>
Date: Thu, 10 Jan 2008 00:32:26 +1100
Links: << >>  << T >>  << A >>
On Wed, 09 Jan 2008 12:49:48 GMT, "KJ" <kkjennings@sbcglobal.net>
wrote:

>
>"Allan Herriman" <allanherriman@hotmail.com> wrote in message 
>news:gdf9o3dsdk8l2p9954gnfga9bcsp5to7ki@4ax.com...
><snip>
>> What you may find surprising is that 0% of the clock domain crossing
>> bugs had anything to do with metastability.  Glitches and races were
>> the cause.
>>
>> My interpretation:
>> I think that most designers have heard of metastability, so they put
>> retiming flip flops everywhere.  Consequently, metastability related
>> problems don't occur often.
>>
>
>Your last paragraph directly contradicts the previous one.

Quite the contrary.  Please make the distinction between actual
metastability and other clock domain crossing issues, such as sampling
the same async signal with two different flip flops.

In the rest of your post (snipped) you didn't even seem to acknowledge
that there are other types of clock domain crossing issues that aren't
related to metastability.


The first point of my post was that metastability is easy to deal with
- just add another flip flop and leave enough timing slack to get
whatever MTBF you want.  (I know from some of my designs that unless
you have clock rates of more than a few hundred MHz, it isn't hard to
get failure rates of < 1 metastability-related failure in the lifetime
of the product.)

The other point of my post was that because everyone has heard of
metastability and that it's usually easy to deal with - just add flip
flops and some timing slack - it gets taken into account in designs
and doesn't actually cause a lot of bugs.  Instead, actual bugs
related to clock domain crossings are mostly caused by things not
related to metastability.  (I'm sure you could list a few.  I'll see
if I can dig up a copy of the training material I wrote which
describes the most common errors.)


Also, please bear in mind that I was quoting the results of actual
research on fielded product designs.

Regards,
Allan

Article: 127852
Subject: Re: Real examples of metastability causing bugs
From: Mike Treseler <mike_treseler@comcast.net>
Date: Wed, 09 Jan 2008 05:47:51 -0800
Links: << >>  << T >>  << A >>

> "Allan Herriman" <allanherriman@hotmail.com> wrote in message 
> news:gdf9o3dsdk8l2p9954gnfga9bcsp5to7ki@4ax.com...
> <snip>
>> What you may find surprising is that 0% of the clock domain crossing
>> bugs had anything to do with metastability.  Glitches and races were
>> the cause.
>>
>> My interpretation:
>> I think that most designers have heard of metastability, so they put
>> retiming flip flops everywhere.  Consequently, metastability related
>> problems don't occur often.

KJ wrote:
> Your last paragraph directly contradicts the previous one.

Maybe Allan's point is that
lack of proper synchronization is a much more
common problem than metastable events are
in properly synchronized designs.

   -- Mike Treseler

Article: 127853
Subject: Re: Spartan3 vs cyclone
From: John_H <newsgroup@johnhandwork.com>
Date: Wed, 09 Jan 2008 06:12:54 -0800
Links: << >>  << T >>  << A >>
michel.talon@gmail.com wrote:
> Hi,
> 
> I've a basic question about spartan3. I'm used to work with altera's
> FPGA with size unit in logic cells.
> I've to use a spartan 3 FPGA, and its size is in gates.
> My question : how can I compare the two FPGA ( just for having an
> estimation in logic cells ) ?
> 
> Thanks by advance,
> 
> Best regards, Michel.

You're used to working with Altera's Logic Elements (LEs) and you don't 
know how to compare this with the Spartan3 because these chips are 
specified by gate count?

Look at the darned data sheet!  I've a feeling you'l find the data you 
need in the first pages.  The "system gates" column is followed 
"Equivalent Logic Cells."  As a seasoned Xilinx data sheet reader 
myself, I've learned to ignore this column and look at "Slices" and 
multiply by 2 instead since the "equivalent" means multiplying by a 
rude, evasive, misleading marketing factor.

Article: 127854
Subject: Re: Real examples of metastability causing bugs
From: "KJ" <kkjennings@sbcglobal.net>
Date: Wed, 09 Jan 2008 14:22:05 GMT
Links: << >>  << T >>  << A >>

"Allan Herriman" <allanherriman@hotmail.com> wrote in message 
news:veh9o3t1s270peip0bqvatsa9g2mc99ql3@4ax.com...
> On Wed, 09 Jan 2008 12:49:48 GMT, "KJ" <kkjennings@sbcglobal.net>
> wrote:
>
>>
>>"Allan Herriman" <allanherriman@hotmail.com> wrote in message
>>news:gdf9o3dsdk8l2p9954gnfga9bcsp5to7ki@4ax.com...
>><snip>
>>> What you may find surprising is that 0% of the clock domain crossing
>>> bugs had anything to do with metastability.  Glitches and races were
>>> the cause.
>>>
>>> My interpretation:
>>> I think that most designers have heard of metastability, so they put
>>> retiming flip flops everywhere.  Consequently, metastability related
>>> problems don't occur often.
>>>
>>
>>Your last paragraph directly contradicts the previous one.
>
> Quite the contrary.  Please make the distinction between actual
> metastability and other clock domain crossing issues, such as sampling
> the same async signal with two different flip flops.
>
Yes, but sampling an async signal with two different flip flops would not be 
an example of properly adding retiming flip flops.

> In the rest of your post (snipped) you didn't even seem to acknowledge
> that there are other types of clock domain crossing issues that aren't
> related to metastability.
>
Actually I do agree with most of what you said (although re-reading my post 
I can see it probably didn't come across that way...sorry).

I certainly agree that darn near every timing problem that I've investigated 
as well has to do with moving a signal either from a completely asynchronous 
domain or some other clock domain.  Whether or not there was actual 
metastability or not was irrelevant since the solution to the design error 
was to properly move the signal into the sampling clock domain.

Fundamentally the design error was violation of setup/hold requirements 
and/or sampling that signal in more than one place.  Whether or not that 
caused actual metastability or not I didn't investigate.

My only disagreement was when you said "...so they put retiming flip flops 
everywhere.  Consequently, metastability related problems don't occur 
often.".  But if they properly put in the retiming flops, then they wouldn't 
have any timing issues, let alone a low probability (but not non-existent) 
one such as metastability.  But my point probably hinges on the work 
'properly' as well.

>
> The first point of my post was that metastability is easy to deal with
> - just add another flip flop and leave enough timing slack to get
> whatever MTBF you want.  (I know from some of my designs that unless
> you have clock rates of more than a few hundred MHz, it isn't hard to
> get failure rates of < 1 metastability-related failure in the lifetime
> of the product.)
I agree as long as that signal from async or other domain goes only into 
exactly one flip flop than it has been properly taken care of.  I'll also 
add that even when apparently coded properly, I've found that synthesis 
tools can sometimes defeat this by replicating a flop to improve its result 
which means you have to add vendor specific attributes to try to guard 
against this.

>
> The other point of my post was that because everyone has heard of
> metastability and that it's usually easy to deal with - just add flip
> flops and some timing slack - it gets taken into account in designs
> and doesn't actually cause a lot of bugs.
I think you're overestimating new designers ability to properly add these 
flops based on postings in this and other newsgroups even when the poster 
seems to have knowledge of metastability.

> Instead, actual bugs
> related to clock domain crossings are mostly caused by things not
> related to metastability.  (I'm sure you could list a few.  I'll see
> if I can dig up a copy of the training material I wrote which
> describes the most common errors.)
>
Violating setup and/or hold time requirements covers darn near everything. 
Sampling with only one flip flop into the new domain covers most other 
cases.  Never combinatorially generate a signal that will be used to sample 
another signal covers the only other things that I can recall at the moment.

> Also, please bear in mind that I was quoting the results of actual
> research on fielded product designs.
>
And posting those results is appreciated...like I said, I think we're 
solidly in agreement about the solution although I might not have come 
across as such in my earlier posting.

Kevin Jennings 



Article: 127855
Subject: Re: Real examples of metastability causing bugs
From: John_H <newsgroup@johnhandwork.com>
Date: Wed, 09 Jan 2008 06:26:01 -0800
Links: << >>  << T >>  << A >>
Eli Bendersky wrote:
>>> 2) If such an input is sampled by two different FFs for different
>>> purposes, they may end up with different results.
>> This is the case of the *missing* synchronizer.
>> This is often confused with metastability,
>> but it is really a design error.
>> I don't have to wait nearly as long to
>> observe an error in this case.
>>
> 
> Yes, and my question was about the "missing synchronizer", which is a
> design error as you said.
> 
> I just wanted an example of real code from real life doing something
> useful that is susceptible to this design error.
> 
> Eli

A real life situation for a missing synchronizer would be the "duh" 
moment I had in one of my first processor interfaced designs.  I wrote a 
value to the FPGA but the register write wasn't related to the system 
clock.  Occasionally some of my logic got one part of the word on one 
cycle before all the logic got the full register value on the second 
cycle.  This schism where values were *supposed* to change 
simultaneously but didn't caused me problems.

Just adding a synchronizing flop DOES NOT get rid of metastability 
troubles.  Just adding two consecutive synchronizing flops DOES NOT get 
rid of metastability.  Luckily most of the time the path between the two 
flops ends up being short but too often the designer DOES NOT properly 
constrain the path between those two flops.

The effect of hitting the metastability window is that the logic takes a 
moment longer to decide if it's high or low.  While the static timing 
analyzer will guarantee your results if you meet setup and hold, the 
synchronizing flop specifically violates the setup and hold in order to 
rarely hit that metastability window.  In this case, the constraints 
MUST be changed to guarantee the metastability related errors will be in 
the 1k or 1M year kind of range.

The timing constraint from a synchronizing flop to the next flop in the 
sequence MUST be constrained to a time that's shorter than the 
prevailing system clock period.  If the signal takes up to 2 ns longer 
to decide what signal level it is, the following logic (or second 
synchronizing flop) must have that additional headroom built-in through 
timing constraints.

- John_H

Article: 127856
Subject: Re: Real examples of metastability causing bugs
From: Allan Herriman <allanherriman@hotmail.com>
Date: Thu, 10 Jan 2008 01:38:32 +1100
Links: << >>  << T >>  << A >>
On Wed, 09 Jan 2008 05:47:51 -0800, Mike Treseler
<mike_treseler@comcast.net> wrote:

>
>> "Allan Herriman" <allanherriman@hotmail.com> wrote in message 
>> news:gdf9o3dsdk8l2p9954gnfga9bcsp5to7ki@4ax.com...
>> <snip>
>>> What you may find surprising is that 0% of the clock domain crossing
>>> bugs had anything to do with metastability.  Glitches and races were
>>> the cause.
>>>
>>> My interpretation:
>>> I think that most designers have heard of metastability, so they put
>>> retiming flip flops everywhere.  Consequently, metastability related
>>> problems don't occur often.
>
>KJ wrote:
>> Your last paragraph directly contradicts the previous one.
>
>Maybe Allan's point is that
>lack of proper synchronization is a much more
>common problem than metastable events are
>in properly synchronized designs.

Yes!  Thanks Mike.

I couldn't find the actual figures I wanted, but from memory it went
something like this (most commonly encountered clock domain crossing
or async logic bug listed first):

- (race) Passing vectors (i.e. multiple signals) from clock domain A
to clock domain B and expecting all the bits to arrive on the same B
clock.

- (race) As above, but adding multiple banks of retiming flip flops in
the B clock domain, which fixed the (non-existent) metastability issue
but did nothing about the race.

- (race) Passing a signal in clock domain A to multiple flip flops in
clock domain B, and expecting the B flip flops to get the same value
on the same clock.

- (race) As above, but created when the tools replicate the B logic to
manage fanout.

- (glitch) Multiple signals in clock domain A hit some combinatorial
logic producing a single signal which is sampled by a flip flop in
clock domain B.  Sometimes there may be a glitch which gets sampled by
the B flip flop.
It can be difficult to design combinatorial logic with good glitch
coverage (and if you do, the tools will often remove it).  (See XAPP
024, btw.)

- (glitch) Clock multiplexers made out of combinatorial logic with
inadequate glitch coverage (or adequate glitch coverage removed by the
tools).



I think the significant thing about that list is that even if flip
flops were infinitely fast and had 0 chance of ever entering a
metastable state, all of those bugs would still exist.


Regards,
Allan

Article: 127857
Subject: Re: Using DDR SDRAM as single data rate ..?
From: Gabor <gabor@alacron.com>
Date: Wed, 9 Jan 2008 06:49:39 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 9, 3:03 am, posedg...@yahoo.com wrote:
> On Jan 9, 7:57 am, quark.flav...@gmail.com wrote:
>
> > On Jan 9, 7:43 am, posedg...@yahoo.com wrote:
>
> > > Is it possible to use DDR SDRAM as single data rate SDRAM and thus
> > > eliminate the need for DCM's and tight clock frequency
> > > specifications ..?
>
> > You still have to feed the DDR with appropriate clock signals, because it'll
> > always work with differential clock. If you're working with the Spartan 3E
> > starter kit this means that the clock frequency should be in the range of
> > 75-133 MHz, the DCM is handy because it easily synthesizes these
> > frequencies starting from the 50 MHz soldered clock.
>
> But does the clock frequency have to be within 75-133 MHz range when
> the data provided by the DLL on the second flank is ignored?, plain
> SDRAM can be clocked down to a few kHz according to Micron (a dram
> manufacturer).
> It would at least save some DCMs and pcb layout headache.

All DDR memories spec a minimum clock frequency.  Whether this is due
to the internal DLL or other dynamic structures may be vendor
dependent.
Usually they have the ability to turn off the DLL using a mode
register
bit, but you'll be doing a lot of experimenting to see if that works.
Also note that while you can send the same data twice to emulate
single
data rate, you still need to meet more stringent timing if you want
the chip to see the same write data on both clock edges.  If you only
meet timing for the second edge, then you'll have to live with tighter
timing when you read, because the RAM will send data that changes
mid-cycle.

You also can't just use some existing SDR IP, since at least the
start-up and mode register settings are different, and you'll
need to drive the DQS pins on writes, even if you don't use them
for reads.

I'm assuming you have a board that already has DDR memory on it and
you just want to use it more easily?  If you're designing a new board
you should really look into using the SDR chips instead.

Article: 127858
Subject: Re: Bad micro blaze behaviour during power off
From: Alan Nishioka <alan@nishioka.com>
Date: Wed, 9 Jan 2008 07:04:20 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 8, 1:58 am, jeroen.cl...@gemidis.be wrote:
> root cause:
> Power down of the FPGA is not correct accoarding to the spec. The fall
> time of the power supply is to long. this results in a bad behaviour
> of the micro Blaze(uB). During power down the pointer of the uB is
> jumping to a random place in the uB code. From this point the uB
> executes several actions depending on the fall time of the power
> supply. It happens that the pointer jumps to the "write_spi_flash"
> function in the code.

are you absolutely certain this is what is happening?
that is, have you tried wiring in a power monitor to reset microblaze
and the problem goes away?

it seems unlikely to me.  you are saying it randomly jumps and then
runs correctly for a bit.  all the other registers are randomly
changing and the code still works?

but if you are sure this is what is happening...

how about writing some hardware that holds microblaze reset if it
tries to access an invalid address. in a 32bit address space, a jump
to a random location is likely to be invalid.

alan nishioka
alan@nishioka.com

Article: 127859
Subject: Re: Real examples of metastability causing bugs
From: Allan Herriman <allanherriman@hotmail.com>
Date: Thu, 10 Jan 2008 02:06:00 +1100
Links: << >>  << T >>  << A >>
On Thu, 10 Jan 2008 01:38:32 +1100, Allan Herriman
<allanherriman@hotmail.com> wrote:

>On Wed, 09 Jan 2008 05:47:51 -0800, Mike Treseler
><mike_treseler@comcast.net> wrote:
>
>>
>>> "Allan Herriman" <allanherriman@hotmail.com> wrote in message 
>>> news:gdf9o3dsdk8l2p9954gnfga9bcsp5to7ki@4ax.com...
>>> <snip>
>>>> What you may find surprising is that 0% of the clock domain crossing
>>>> bugs had anything to do with metastability.  Glitches and races were
>>>> the cause.
>>>>
>>>> My interpretation:
>>>> I think that most designers have heard of metastability, so they put
>>>> retiming flip flops everywhere.  Consequently, metastability related
>>>> problems don't occur often.
>>
>>KJ wrote:
>>> Your last paragraph directly contradicts the previous one.
>>
>>Maybe Allan's point is that
>>lack of proper synchronization is a much more
>>common problem than metastable events are
>>in properly synchronized designs.
>
>Yes!  Thanks Mike.
>
>I couldn't find the actual figures I wanted, but from memory it went
>something like this (most commonly encountered clock domain crossing
>or async logic bug listed first):
>
>- (race) Passing vectors (i.e. multiple signals) from clock domain A
>to clock domain B and expecting all the bits to arrive on the same B
>clock.
>
>- (race) As above, but adding multiple banks of retiming flip flops in
>the B clock domain, which fixed the (non-existent) metastability issue
>but did nothing about the race.
>
>- (race) Passing a signal in clock domain A to multiple flip flops in
>clock domain B, and expecting the B flip flops to get the same value
>on the same clock.
>
>- (race) As above, but created when the tools replicate the B logic to
>manage fanout.
>
>- (glitch) Multiple signals in clock domain A hit some combinatorial
>logic producing a single signal which is sampled by a flip flop in
>clock domain B.  Sometimes there may be a glitch which gets sampled by
>the B flip flop.
>It can be difficult to design combinatorial logic with good glitch
>coverage (and if you do, the tools will often remove it).  (See XAPP
>024, btw.)
>
>- (glitch) Clock multiplexers made out of combinatorial logic with
>inadequate glitch coverage (or adequate glitch coverage removed by the
>tools).
>
>
>
>I think the significant thing about that list is that even if flip
>flops were infinitely fast and had 0 chance of ever entering a
>metastable state, all of those bugs would still exist.


A few more.  These are still async logic, but not related to clock
domain crossings.

- Using async reset or set inputs on flip flops to implement a logic
function (rather than just using them for initialisation).  I can
remember a case where a design would fail even when we could prove
mathematically that it couldn't fail.  Rewriting it to avoid the use
of async resets fixed the problem.

- Gating clocks to create a logic function.  I know this sort of thing
is done in ASICs to save power, but it just doesn't seem to work too
well in FPGAs sometimes.


Article: 127860
Subject: Re: Camera connection on XUPV2P
From: Gabor <gabor@alacron.com>
Date: Wed, 9 Jan 2008 07:06:51 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 8, 8:03 am, "MJ Pearson" <mjp...@york.ac.uk> wrote:
> >Hi,
>
> >Gabor is right, As an addendum to his comment, I think that some
> >cameras from "Basler" use DVAL as pixel framing signal. It is used
> >when the user want to output some selected region from CCD of camera.
> >If you are getting two pulses of DVAL, check your camera whether it is
> >operating in single or dual tap mode and what is the region of
> >interest in camera setting.
>
> >Hope this helps,
>
> >/MH
>
> Thanks,
>
> My camera operates in 2-taps interleaved mode. It operates as a line scan
> camera, a single row value for each column of the sensor array is
> calculated and read out. Therefore I don't think the ROI will come into
> it, but I'm not sure what the taps refer to or their definition, and
> haven't had any luck in finding out...?

The term "taps" come from the CCD world, where video comes out as
a serial analog stream from the sensor.  In larger sensors, the
array was read out with more than one analog shift register or CCD
where a CCD might read out a quadrant or half of the sensor array.
Each of these output streams is called a "tap" and would be digitized
independently to provide the necessary readout bandwidth.

In some older cameras, the framegrabber would need to re-assemble
the multiple taps into an image, possibly getting data in a different
order for each tap.  One example of this is a four quadrant CCD read
out at the four corners of the array.  When shifting out the data,
you would get the four corner pixels first and scan through in
raster fashion toward the final central pixels.  In this case you
have all combinations of left-to-right, right-to-left, top-to-bottom,
and bottom-to-top scanning.  Modern cameras might use similar CCD
devices, but generally re-order the data within the camera electronics
so the output looks like a simple raster.

Interleaved tap order usually refers to odd / even pixels coming
out of two taps of the camera.  In this case each tap services
every other pixel of the entire image, so the resultant image
is formed by merging (interleaving) the two taps to form a
single raster.

For Camera Link, the number of "taps" usually refers to the number
of digitized pixels sent on each Camera Link pixel clock, regardless
of the organization of the sensor.  The same camera may operate
in 1, 2, or 4 tap modes for example using Medium camera link and
8, 16, or 32 bits per clock.

You may find more information in the technical manual of your camera.
These are usually available from the vendor's website and have more
detailed information that the user manual that ships with the camera.

HTH,
Gabor

Article: 127861
Subject: Re: Real examples of metastability causing bugs
From: "Symon" <symon_brewer@hotmail.com>
Date: Wed, 9 Jan 2008 15:33:03 -0000
Links: << >>  << T >>  << A >>
"Allan Herriman" <allanherriman@hotmail.com> wrote in message 
news:t7o9o3tvvs7jn0gpa56uf2cjng1239729u@4ax.com...
>
> - Using async reset or set inputs on flip flops to implement a logic
> function (rather than just using them for initialisation).  I can
> remember a case where a design would fail even when we could prove
> mathematically that it couldn't fail.  Rewriting it to avoid the use
> of async resets fixed the problem.
>
Hi Allan,
Can you remember what that was? I'm fairly sure synthesis tools use this 
type of trick, and I've never seen a problem with it, providing timing is 
met.
>
> - Gating clocks to create a logic function.  I know this sort of thing
> is done in ASICs to save power, but it just doesn't seem to work too
> well in FPGAs sometimes.
>
Right, you get runts or glitches on the clock which might clock some FFs but 
not others. Very bad!
Cheers, Syms. 



Article: 127862
Subject: Re: Spartan3 vs cyclone
From: michel.talon@gmail.com
Date: Wed, 9 Jan 2008 07:38:16 -0800 (PST)
Links: << >>  << T >>  << A >>
On 9 jan, 15:12, John_H <newsgr...@johnhandwork.com> wrote:
> michel.ta...@gmail.com wrote:
> > Hi,
>
> > I've a basic question about spartan3. I'm used to work with altera's
> > FPGA with size unit in logic cells.
> > I've to use a spartan 3 FPGA, and its size is in gates.
> > My question : how can I compare the two FPGA ( just for having an
> > estimation in logic cells ) ?
>
> > Thanks by advance,
>
> > Best regards, Michel.
>
> You're used to working with Altera's Logic Elements (LEs) and you don't
> know how to compare this with the Spartan3 because these chips are
> specified by gate count?
>
> Look at the darned data sheet!  I've a feeling you'l find the data you
> need in the first pages.  The "system gates" column is followed
> "Equivalent Logic Cells."  As a seasoned Xilinx data sheet reader
> myself, I've learned to ignore this column and look at "Slices" and
> multiply by 2 instead since the "equivalent" means multiplying by a
> rude, evasive, misleading marketing factor.

Thanks for your answers, I wasn't sure that Xilinx logic cells and
altera logic elements were equivalent, but it seems to be.. So thank
you.

Best regards, Michel.

Article: 127863
Subject: Re: Real examples of metastability causing bugs
From: Peter Alfke <alfke@sbcglobal.net>
Date: Wed, 9 Jan 2008 07:54:14 -0800 (PST)
Links: << >>  << T >>  << A >>
I do not see how metastability could ever be a "useful" feature. My
app note is an analysis tool that measures the statistical probability
of the metastable delay by random testing.
As such it is useful, and I think it shows the only practical way to
really get quantitative data.
Peter Alfke, Xilinx Applications


On Jan 8, 10:22=A0pm, Eli Bendersky <eli...@gmail.com> wrote:
> On Jan 8, 9:41=A0pm, Peter Alfke <pe...@xilinx.com> wrote:
>
> > On Jan 8, 6:20=A0am, Eli Bendersky <eli...@gmail.com> wrote:> Hello,
>
> > > Suppose that I'm sampling an asynchronous signal with a FF, without
> > > using any synchronizers before it. This FF will become metastable from=

> > > time to time with a MTBF depending on the device's parameters, the
> > > clock rate and the input signal change rate.
>
> > Eli, Look at XAPP094 (you can easily google it) It shows the circuit I
> > have used to quantify metastable delay.
> > The delay is short, so you have to be quick to catch it...
> > Peter Alfke
>
> Hi Peter,
> I downloaded this application note a couple of weeks ago and went
> through it. Would you say that your metastability-catching circuit
> could be useful for some real application ?


Article: 127864
Subject: Re: Bad micro blaze behaviour during power off
From: jeroen.claes@gemidis.be
Date: Wed, 9 Jan 2008 08:02:45 -0800 (PST)
Links: << >>  << T >>  << A >>
On 9 jan, 16:04, Alan Nishioka <a...@nishioka.com> wrote:
> On Jan 8, 1:58 am, jeroen.cl...@gemidis.be wrote:
>
> > root cause:
> > Power down of the FPGA is not correct accoarding to the spec. The fall
> > time of the power supply is to long. this results in a bad behaviour
> > of the micro Blaze(uB). During power down the pointer of the uB is
> > jumping to a random place in the uB code. From this point the uB
> > executes several actions depending on the fall time of the power
> > supply. It happens that the pointer jumps to the "write_spi_flash"
> > function in the code.
>
> are you absolutely certain this is what is happening?
> that is, have you tried wiring in a power monitor to reset microblaze
> and the problem goes away?
>
I am not absolutly certain because I can not look inside the uB during
Shut down.
But it explains what I tried this far:
1) I have made the spi pins of the fpga tri-state. Only if the uB puts
0xBABE in a 16bit register the spi pins leave the high impedant state
and normal spi communication between flash and fpga is possible.  ->
spi commands are logged during power down.
2) I removed the opb_spi core from the design. -> only spi bootloader
has access to the flash -> no spi commands are logged during power
down.
3) opb_spi core enabled and disabled spi subroutines in the uB code. -
> no spi commands are logged during power down.
4) Driving the uB reset to ground before shutting down the power of
the bord (initial design -> opb_core and spi_subroutines enabled) ->
no spi commands are logged during power down.


>it seems unlikely to me.  you are saying it randomly jumps and then
>runs correctly for a bit.  all the other registers are randomly
>changing and the code still works?

I think I need some explenation with the following sentence "all the
other registers are randomly changing" which registers do you mean?


>how about writing some hardware that holds microblaze reset if it
>tries to access an invalid address. in a 32bit address space, a jump
>to a random location is likely to be invalid.

Seems a nice solution to me but can you explain it more in detail
please?
How can I trigger my hardware on a jump to an invalid location of the
microblaze pointer?

thanks!



Article: 127865
Subject: Re: Real examples of metastability causing bugs
From: John McCaskill <jhmccaskill@gmail.com>
Date: Wed, 9 Jan 2008 08:25:16 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 9, 9:33 am, "Symon" <symon_bre...@hotmail.com> wrote:
> "Allan Herriman" <allanherri...@hotmail.com> wrote in message
>
> news:t7o9o3tvvs7jn0gpa56uf2cjng1239729u@4ax.com...
>
> > - Using async reset or set inputs on flip flops to implement a logic
> > function (rather than just using them for initialisation).  I can
> > remember a case where a design would fail even when we could prove
> > mathematically that it couldn't fail.  Rewriting it to avoid the use
> > of async resets fixed the problem.
>
> Hi Allan,
> Can you remember what that was? I'm fairly sure synthesis tools use this
> type of trick, and I've never seen a problem with it, providing timing is
> met.

<snip>


I know that at least XST will use these inputs to implement logic
functions.  They have comparatively long setup times, and I see them
frequently when looking at static timing analysis reports.

Regards,

John McCaskill
www.FasterTechnology.com

Article: 127866
Subject: Re: Real examples of metastability causing bugs
From: John_H <newsgroup@johnhandwork.com>
Date: Wed, 9 Jan 2008 08:46:08 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 9, 8:25=A0am, John McCaskill <jhmccask...@gmail.com> wrote:
> On Jan 9, 9:33 am, "Symon" <symon_bre...@hotmail.com> wrote:
>
> > "Allan Herriman" <allanherri...@hotmail.com> wrote in message
>
> >news:t7o9o3tvvs7jn0gpa56uf2cjng1239729u@4ax.com...
>
> > > - Using async reset or set inputs on flip flops to implement a logic
> > > function (rather than just using them for initialisation). =A0I can
> > > remember a case where a design would fail even when we could prove
> > > mathematically that it couldn't fail. =A0Rewriting it to avoid the use=

> > > of async resets fixed the problem.
>
> > Hi Allan,
> > Can you remember what that was? I'm fairly sure synthesis tools use this=

> > type of trick, and I've never seen a problem with it, providing timing i=
s
> > met.
>
> <snip>
>
> I know that at least XST will use these inputs to implement logic
> functions. =A0They have comparatively long setup times, and I see them
> frequently when looking at static timing analysis reports.
>
> Regards,
>
> John McCaskillwww.FasterTechnology.com

While XST may use the inputs in implementing the logic, it uses the
synchronous set/reset rather than the asynchronous clear/preset
equivalent.  Any synchronous implementation should be covered by the
timing analysis.

Article: 127867
Subject: Re: Real examples of metastability causing bugs
From: "Symon" <symon_brewer@hotmail.com>
Date: Wed, 9 Jan 2008 16:48:10 -0000
Links: << >>  << T >>  << A >>
"John_H" <newsgroup@johnhandwork.com> wrote in message 
news:209b6b6e-a2eb-4ece-b4ac-3e5488271f4f@v67g2000hse.googlegroups.com...

> While XST may use the inputs in implementing the logic, it uses the
> synchronous set/reset rather than the asynchronous clear/preset
> equivalent.  Any synchronous implementation should be covered by the
> timing analysis.

OK, of course. Thanks, John_H! 



Article: 127868
Subject: Identification of FPGA Development Board
From: koltes@fmi.uni-passau.de
Date: Wed, 9 Jan 2008 09:23:37 -0800 (PST)
Links: << >>  << T >>  << A >>
Hi together,

recently, I acquired an old FPGA development board out of the
remainder of stock of a company. The board has quite powerful FPGAs on
it, however, I can't find any information about it. It might be a
custom development board, but I'm not sure about this.

I uploaded some photos at http://www.fim.uni-passau.de/~koltes/fpgaboard/.

If anyone of you has any information about this board or even
documentation, I would be very glad, if you could contact me.

Best regards,

Andreas Koltes

Article: 127869
Subject: Re: Identification of FPGA Development Board
From: posedge52@yahoo.com
Date: Wed, 9 Jan 2008 09:42:40 -0800 (PST)
Links: << >>  << T >>  << A >>
> remainder of stock of a company. The board has quite powerful FPGAs on
> it, however, I can't find any information about it. It might be a
> custom development board, but I'm not sure about this.
>
> I uploaded some photos athttp://www.fim.uni-passau.de/~koltes/fpgaboard/.
>
> If anyone of you has any information about this board or even
> documentation, I would be very glad, if you could contact me.

Do you want information about the board, or  the chips?
Xilinx Virtex-II can be programmed by Xilinx Webpack I assume.
Maybe you could use the chips to decode the board connections.

Article: 127870
Subject: Re: Spartan3 vs cyclone
From: nico@puntnl.niks (Nico Coesel)
Date: Wed, 09 Jan 2008 17:50:31 GMT
Links: << >>  << T >>  << A >>
michel.talon@gmail.com wrote:

>On 9 jan, 15:12, John_H <newsgr...@johnhandwork.com> wrote:
>> michel.ta...@gmail.com wrote:
>> > Hi,
>>
>> > I've a basic question about spartan3. I'm used to work with altera's
>> > FPGA with size unit in logic cells.
>> > I've to use a spartan 3 FPGA, and its size is in gates.
>> > My question : how can I compare the two FPGA ( just for having an
>> > estimation in logic cells ) ?
>>
>> > Thanks by advance,
>>
>> > Best regards, Michel.
>>
>> You're used to working with Altera's Logic Elements (LEs) and you don't
>> know how to compare this with the Spartan3 because these chips are
>> specified by gate count?
>>
>> Look at the darned data sheet!  I've a feeling you'l find the data you
>> need in the first pages.  The "system gates" column is followed
>> "Equivalent Logic Cells."  As a seasoned Xilinx data sheet reader
>> myself, I've learned to ignore this column and look at "Slices" and
>> multiply by 2 instead since the "equivalent" means multiplying by a
>> rude, evasive, misleading marketing factor.
>
>Thanks for your answers, I wasn't sure that Xilinx logic cells and
>altera logic elements were equivalent, but it seems to be.. So thank
>you.

They are equivalent. Mostly... The LUTs in a Xilinx device can be used
as a 16x1 bit memory or a variable length (up to 16 bit) shift
register. This gives you a total of 18 flipflops per slice in a Xilinx
device versus 2 in an Altera device.

Using the LUTs as memory is a very efficient way to create small
memories. Because such a memory is built from multiple elements which
can be place freely, it is likely the routing is less constrained than
in an Altera device.

Using the LUTs as a shift register allows to create very efficient
clock dividers and FIFO's.

An efficient way of using LUT rams can be in designs in which multiple
channels are processed in sequence. By using LUT memory as registers
instead of flipflops to keep intermediate results the savings can be
enourmous. Almost the same amount of logic for 1 channel can deal with
up 16 channels.

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

Article: 127871
Subject: Re: Identification of FPGA Development Board
From: koltes@fmi.uni-passau.de
Date: Wed, 9 Jan 2008 09:50:37 -0800 (PST)
Links: << >>  << T >>  << A >>
> Do you want information about the board, or  the chips?
> Xilinx Virtex-II can be programmed by Xilinx Webpack I assume.
> Maybe you could use the chips to decode the board connections.

I'm primarly looking for information about the board. I guess, the
FPGAs are part of a JTAG chain, but I'm not even sure how to access
the JTAG subsystem, since there are lots of connectors and jumper
banks on the board. There is also a single small push button device on
the board, maybe some sort of reset?

Despite this I have no idea what the two large chips are supposed to
do which can be seen at the bottom of the page.

I was told, that this board might have been used in the development of
some sort of tape drives, but this information is unconfirmed.

Andreas

Article: 127872
Subject: How to program FPGA permanently?
From: Vagant <vladimir.v.korostelev@rambler.ru>
Date: Wed, 9 Jan 2008 10:01:06 -0800 (PST)
Links: << >>  << T >>  << A >>
Hello,

I have downloaded my program to FPGA and it works as it supposed to
do. However, I need to download it every time after I switch power
off. Hence I wonder - how to save program on FPGA permanently so that
it would work even after power was switched off and on again?

Article: 127873
Subject: Re: How to program FPGA permanently?
From: Kris Vorwerk <kris.vorwerk@gmail.com>
Date: Wed, 9 Jan 2008 10:24:28 -0800 (PST)
Links: << >>  << T >>  << A >>
> I have downloaded my program to FPGA and it works as it supposed to
> do. However, I need to download it every time after I switch power
> off. Hence I wonder - how to save program on FPGA permanently so that
> it would work even after power was switched off and on again?

Some vendors sell FPGAs which are SRAM-based; these devices lose their
configuration when the power goes out.  They need to have a separate
EEPROM connected to the FPGA.  This is usually well-documented in
application notes for your particular vendor.

Some vendors sell FPGAs which are SRAM-based but have nonvolatile
storage built into the FPGA, so that when the power goes out, they
reload the configuration from the onboard NVRAM.  These devices are
also offered by most vendors.

Actel ships FPGAs which are entirely flash-based; all configuration
bits are non-volatile, so they retain their configuration when the
power goes out.  Actel also ships antifuse-based FPGAs, which are one-
time programmable, but won't lose their configuration.

K.

Article: 127874
Subject: Re: Real examples of metastability causing bugs
From: glen herrmannsfeldt <gah@ugcs.caltech.edu>
Date: Wed, 09 Jan 2008 10:35:06 -0800
Links: << >>  << T >>  << A >>
John_H wrote:
(snip)

> A real life situation for a missing synchronizer would be the "duh" 
> moment I had in one of my first processor interfaced designs.  I wrote a 
> value to the FPGA but the register write wasn't related to the system 
> clock.  Occasionally some of my logic got one part of the word on one 
> cycle before all the logic got the full register value on the second 
> cycle.  This schism where values were *supposed* to change 
> simultaneously but didn't caused me problems.

Again, I wouldn't call this metastability.  It can be made worse
by metastability, but the problem is that the propagation delay
to the different parts of the register is (always) slightly
different, and if you get close enough to the clock edge some will
get one value, and some the other.  That will still be true even
for perfect FFs.

> Just adding a synchronizing flop DOES NOT get rid of metastability 
> troubles.  Just adding two consecutive synchronizing flops DOES NOT get 
> rid of metastability.  Luckily most of the time the path between the two 
> flops ends up being short but too often the designer DOES NOT properly 
> constrain the path between those two flops.

Synchronizing FFs don't get rid of it, but if the probability is low
enough that is good enough.  Two synchronizing FFs will square the
probability of metastability on each clock cycle (assuming statistical
independence).

> The effect of hitting the metastability window is that the logic takes a 
> moment longer to decide if it's high or low.  While the static timing 
> analyzer will guarantee your results if you meet setup and hold, the 
> synchronizing flop specifically violates the setup and hold in order to 
> rarely hit that metastability window.  In this case, the constraints 
> MUST be changed to guarantee the metastability related errors will be in 
> the 1k or 1M year kind of range.

First the logic must be designed to avoid the multiple register
clocking problem.  In the case of FIFOs this is done by using gray
code such that only one bit changes on any cycle.  You get one or
the other, where both are valid.

The metastability problem comes not while crossing clock domains,
but after crossing clock domains.  It is normal for the output of
a register to go through other logic before the next register.
The delay of that logic, in addition to the possible metastability
delay, causes the metastability problem.  Efficient logic design
maximizes the logic between register stages, and so gets closer
to failure due to metastability caused delay.  A synchronizing
register allows the maximum time for metastability to be
resolved before entering the next FF.

> The timing constraint from a synchronizing flop to the next flop in the 
> sequence MUST be constrained to a time that's shorter than the 
> prevailing system clock period.  If the signal takes up to 2 ns longer 
> to decide what signal level it is, the following logic (or second 
> synchronizing flop) must have that additional headroom built-in through 
> timing constraints.

Yes.

-- glen




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