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 106075

Article: 106075
Subject: Re: How do I treat "default" case which is useless?
From: "rickman" <spamgoeshere4@yahoo.com>
Date: 7 Aug 2006 07:44:34 -0700
Links: << >>  << T >>  << A >>
Martin Schoeberl wrote:
> >I need to use only 5 out of the 8 cases, but for completeness's sake,
> > a default case is needed in order to avoid unwanted latches. This default
> > case isn't covered by simulation. As a result, it will bring the coverage
> > down
> > from 100% to 99%. It's kinda annoying to explain this 1% to customer.
> >
> > How do I treat this situation?
> >
> What about taking the 5th case as the default case. That means
> having 4 selects and the default covers the 5th case and
> 6th to 8th.

I like that idea!  I wish I had thought of it...

To the OP, I am curious, what tool are you using to analyze your
simulation coverage of your code?  I'm also curious if having 100%
coverage of the HDL does anything other than saying there are no
statements that were not tested?  I don't think it actually verifies
that they code will work will it?  For example, if the statements in
case 2 and 3 were swapped, it would still be covered, but produce a
wrong result.  Is there a way to verify that the wrong result will be
caught?


Article: 106076
Subject: Re: verilog versus vhdl
From: nospam <nospam@please.invalid>
Date: Mon, 07 Aug 2006 15:51:30 +0100
Links: << >>  << T >>  << A >>
David R Brooks <davebXXX@iinet.net.au> wrote:

>It certainly is a religious war :-)
>FWIW, VHDL derives more from Ada, while Verilog derives from C.
>This means that VHDL is strongly typed, while (classic) Verilog is not. 
>That may be a plus or a minus, according to your viewpoint.

Heh, a hardware engineer once told me the only thing you need to remember
with VHDL is to only ever use one type.....

-- 

Article: 106077
Subject: XC3SPROG, was: Re: 100m JTAG cable
From: Uwe Bonnes <bon@hertz.ikp.physik.tu-darmstadt.de>
Date: Mon, 7 Aug 2006 14:57:21 +0000 (UTC)
Links: << >>  << T >>  << A >>
Daniel O'Connor <darius@dons.net.au> wrote:
> Uwe Bonnes wrote:
> > End of June Eric(?) told that he had not had time yet to put something
> > into
> > the project he  put on sourceforeg. Hopefully things change.

> There's code there now.
> (I checked it out from SVN and submitted a patch to get it to build under
> FreeBSD)

I also submitted some patches, with the user visible ones:
- try do detect cable type
- Reconfigure after Flash programming
More to come if patches are applied.

-- 
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------

Article: 106078
Subject: Re: virtex ppclinux files
From: "Antti" <Antti.Lukats@xilant.com>
Date: 7 Aug 2006 08:00:55 -0700
Links: << >>  << T >>  << A >>
Guru schrieb:

> Thank Antti for uploading them to your site.
> What is the difference between the uploaded PPClinux and Hydra PPlinux?
>
> Guru
>
> Antti wrote:
> > Hi
> >
> > I have uploaded the files once available from Pauls website at the
> > university in Australia
> >
> > http://hydraxc.xilant.com/CMS/index.php?option=com_remository&Itemid=41&func=select&id=11
> >
> > the archive contains all that I fetched from the web when it was
> > available. I do not know exact reasons why the original pages are
> > vanished, but for me the files from there have been a big help to get
> > ppc linux working on Virtex-4
> >
> > Antti

no difference, except we do not call it hydra PPClinux :)

ok, seriously the support-DVD for hydraXC includes (amongst other
goodies)
1) a PPC-linux capable EDK reference design
2) VMware image with pre-installed ppclinux (from Pauls website)
configured for ref design
3) small bootloader that pulls the image.bin from the mini-SD card into
SDRAM

so if you say "update bitstream" in EDK you get download.bit
and if you type "make" in the VMWare then you get image.bin

and as result inserting a miniSD with download.bit and image.bin will
load the PPC-hardware
and then eventually the ppclinux. it boots to console prompt and has
basic networking
capabilities.

this getting started is also visualized as the welcome image here
http://hydraxc.xilant.com/
:)


There are some other drivers what either are or will be available for
the linux
- sd card driver is due to be released (bitbang sw, native mode not
spi) - it has some issues with automtatic partition support
- ISP1761 host drivers, they are now released by Philips as open-source
(search sourceforge for ISP167x!) unfortunatly for linux 2.6 only
(previous under-NDA driver was for linux 2.4.x but its too buggs
anyway)

Antti


Article: 106079
Subject: Re: 3.3V configuration of Spartan-3?
From: Austin Lesea <austin@xilinx.com>
Date: Mon, 07 Aug 2006 08:10:10 -0700
Links: << >>  << T >>  << A >>
Evan,

Yes, you are being paranoid.

Unlike others, our app notes have been tested, and reviewed by senior 
engineers...

Austin

Evan Lavelle wrote:

> I've got a Spartan-3 which is configured (in master serial mode) from
> an XCF04S, and which is also in a JTAG chain which looks like this:
> 
> connector -> Serial PROM/XCF04S -> XC3S1000 -> 3.3V device ->-
> connector <---------------------------------------------------|
> 
> The problem is that bank 4 on the Spartan-3 must have a VCCIO of 3.3V,
> and the dedicated JTAG and configuration pins on the Spartan-3 are
> powered on VCCAUX, at 2.5V. The last device in the chain is also a
> 3.3V-only device.
> 
> I've read Kim Goldblatt's appnote on this (XAPP453), and the obvious
> answer is to use a 3.3V JTAG/programming connector, and to set the I/O
> voltage on the PROM to 3.3V. There are 4 inputs on the Spartan-3 which
> are overdriven (PROG_B, TMS, TCK, TMI) so they need limiting resistors
> on them.
> 
> The problem is, I don't really like this. There are 4 (or maybe just
> 3) input-protection diodes in the Spartan-3 which are almost
> permanently on, at about 9.5mA each. The Spartan-3 data sheet says
> that the inputs won't be damaged if the input voltage is kept below
> about 3.1V, but the last thing I want is a 676-pin package with blown
> inputs which can't be configured. Am I just being paranoid? The other
> problem is that my VCCAUX regulator now has to potentially supply
> ~120mA instead of ~80mA.
> 
> So, my plan B is to run JTAG and configuration at 2.5V instead. This
> means that VCCJ and VCCO on the XCFO4S are at 2.5V instead of 3.3V,
> and:
> 
> 1 - the DIN input on the Spartan-3 has reduced noise immunity (2.5V
> input, 3.3V buffer), but this should be Ok
> 
> 2 - the 4 JTAG inputs on the other 3.3V device in the chain also have
> reduced noise immunity; again, should be Ok
> 
> 3 - the TDO from the 3.3V device gets back to the programming
> connector as 3.3V, instead of 2.5V. I can handle this with a 74AHC14
> buffer (a spare from the JTAG drivers at the connector)
> 
> 4 - INIT_B at the Spartan has an internal pullup to 3.3V, but the
> XCF04S has a 2.5V INIT_B input. However, the XCF04S data sheet says
> that the inputs are at least 3.6V-tolerant for VCCO at a nominal 2.5V.
> So, I can just pull up INIT_B to 3.3V anyway.
> 
> At first sight, it seems to me that plan B is much better than plan A.
> Any thoughts?
> 
> Thanks -
> 
> Evan

Article: 106080
Subject: Re: verilog versus vhdl
From: Ralf Hildebrandt <Ralf-Hildebrandt@gmx.de>
Date: Mon, 07 Aug 2006 17:23:08 +0200
Links: << >>  << T >>  << A >>
Markus Zingg wrote:


> I have to implement a design which requires an FPGA, but to do so
> among other things I obviousely first have to learn one of the two
> mentioned languages.

Take a book, that teaches both languages and learn that language, that 
your employer requires first. Learn the other language as you need it.

"HDL Chip Design" by Douglas Smith was the book I took.


> I have a strong background in C programming
> (should that matter anyhow) ...

Verilog looks like C. This can be an advantage while learning the syntax 
and a big disadvantage, because modeling hardware not is the same as 
writing software.


VHDL needs more characters to type (the code becomes bigger) but a lot 
of parts of the syntax is self-explaining. But because you have strong C 
background this is not so important.

VHDL is strongly typed. A lot of people complain, because that forces 
them to write want they want but on the other hand a lot of typing 
errors are trapped by the syntax check. Verilog is the opposite: Less to 
type, but with a lot of pitfalls for errors.
There is a award-winning paper by Clifford E. Cummings: "Nonblocking 
Assignments in Verilog Synthesis, Coding Styles That Kill!" A lot of 
pitfalls and none of them would have happened if VHDL would have been 
chosen.

I personally prefer VHDL but the boss and the costumer decide what I 
have to do.

Ralf

Article: 106081
Subject: Re: WHAT SITUATION I NEED A BUFFER
From: "ZHI" <threeinchnail@gmail.com>
Date: 7 Aug 2006 08:25:30 -0700
Links: << >>  << T >>  << A >>
Thanks Mike Treseler
 I am not reading a vhdl netlist.  I am reading a uart application
codes. For example, the input signal (RXD signal) of FPGA  firstly
go through a IBUF then a BUFG. What's the uses of them respectively?
Why need use these buffers? When need use them?
Or we actually don't need to care these buffers at all.

Mike Treseler wrote:
> ZHI wrote:
> > I am a newer for FPGA. I am reading some vhdl codes of others. I find
> > they often use some buffers in design, such as IBUF, OBUF, FDCE,
> > FDCE_1,etc.I have checked these buffer function but still not very sure
> > the reason why these buffers put there.
>
> Maybe you are looking at a vhdl netlist.
> Creating a netlist of buffers registers
> and luts from vhdl source code is the
> job of synthesis.
> 
>      -- Mike Treseler


Article: 106082
Subject: Re: How do I treat "default" case which is useless?
From: "KJ" <Kevin.Jennings@Unisys.com>
Date: 7 Aug 2006 08:27:17 -0700
Links: << >>  << T >>  << A >>
> I'm also curious if having 100%
> coverage of the HDL does anything other than saying there are no
> statements that were not tested?

Typically when people refer to 100% coverage all they actually mean is
that every statement has been hit.  What it 'should' mean is that every
statement has been hit under every possible condition as well.  That
kind of info is also available (at least Modelsim's code coverage tool
has it, I'm guessing that other simulators do as well).  Even though
most people only mean that the code has at least been hit, and not the
more inclusive 'under all conditions' the statement that they at least
hit every line is at least a big step up from not knowing whether or
not you've actually hit every line of code in your testing.

> I don't think it actually verifies
> that they code will work will it?

No

> For example, if the statements in
> case 2 and 3 were swapped, it would still be covered, but produce a
> wrong result.  Is there a way to verify that the wrong result will be
> caught?

Make use of the 'assert' statement liberally throughout both the design
code and the testbench code.  Using asserts make the simulation
testbench self-verifying to the extent that you've coded an assert for
every functional point.  In the particular case that you've described
of swapping cases, presumably 'some' output will misbehave and cause
the design to 'not work' at some level.  If there is an assert
statement checking that the design is working correctly it should catch
it.  If it doesn't, then this implies that either there was no 'assert'
to check that the design was working under those conditions or that the
testbench didn't exercise things adequately to uncover the inadvertant
'case swap' or (somewhat unlikely) that cases 2 and 3 really are not
distinct and really are the same thing to the extent that they cause no
observable misbehaviour of the design.

Liberal use of assertions is a 'best practice' (in my opinion and I've
been using them for years).  VHDL has had it since day 1, Verilog has
recently added it.  There are now even special languages about to help
ease the task of writing the design assertions (google for PSL).

KJ


Article: 106083
Subject: Re: FPGA : PCI-Xilinx Core, PC not booting
From: "Brannon" <brannonking@yahoo.com>
Date: 7 Aug 2006 08:29:43 -0700
Links: << >>  << T >>  << A >>
> We have made a PCI board using Xilinx PCI core. with master and target capabilities. It works well with intel PCs, but with AMD PCs if i plug the card the PC will not boot.
>
> Does any one had similar expereince ? Any pointers for the cause will be helpful for me
>
> Thank you bijoy

Do you have the "enable 66" pins connected correctly? How about the
PDE? Are you forcing a certain PCI mode or speed? And does the BIOS
have some bus speed setting contrary to that?

Are you sure you're decoding the address right? You could have some
devices on this PCI bus whereas the one on your intel board could be
dedicated. I saw that issue before where it worked fine when it was the
only device on the bus but not otherwise.

Is your PCI clock going in on a clock pin or do you need to manually
adjust the skew on each compile?


Article: 106084
Subject: Re: How do I treat "default" case which is useless?
From: "Andy" <jonesandy@comcast.net>
Date: 7 Aug 2006 08:29:51 -0700
Links: << >>  << T >>  << A >>
I took some ada software courses to learn some of the "software
engineering" approaches to design and coding in the similar VHDL
language.

One of the tenets they used was to never code anything but null in a
'when others' clause.  'When others' was strictly for language issues,
and was not to be used for functional code. Anything that could happen
was to be handled explicitly, and anything that could not happen was
not to be handled, because it could not be tested anyway.

Now, in certain HW applications, things like SEUs, reset values, etc.
can make "impossible" things suddenly become very probable.  But it
usually takes far more than adding "others" clauses to handle them
correctly, since most synthesis tools perform a reachability analysis,
and optimize out anything that is "impossible" anyway.

So, if the synthesis tool thinks that input values 6 through 8 are not
possible, it will optimize out any logic that distinguishes between
them and any possible other value. To reach 100% coverage, you'd be
testing code that is going to get optimized out anyway, and your "100%"
code coverage metric would be no more meaningful than "99%".

BTW, I believe Synplicity has stated that they will start honoring
initial values (either explicit or implicit) in their FPL synthesis
tools, so booleans and integers will have proper initial values, even
if they are not explicitly reset. Now, transitioning out of the
reset/config value on the first clock edge after reset/config can be
problematic, but that's not an initialization problem (and not one that
would be caught simply by using slv data types), it is a reset/config
synchronization problem, and a whole other topic altogether.

Andy


Article: 106085
Subject: Re: Newbie question about SDRAM usage
From: drs39@cornell.edu
Date: Mon, 07 Aug 2006 11:31:56 -0400
Links: << >>  << T >>  << A >>
Hello Tommy,

Thanks for the advice and terminology correction. 50 MHz is the rate that I
would like be able to retrieve bit patterns stored in the SDRAM. So I
should have put my specification at 1 GB/s (I need to get 20 Bit patterns
at 50 MHz).

I'll focus on trying to implement the connection over the PLB bus. I
understand that this is not the ideal way to start out with FPGAs.
Unfortunately though I need the FPGA, and in particular this memory link
for my research work so I can't choose an easier project. By now though, as
a grad student, I am very used to frustrating learning curves. Thanks again
though for helping me choose the easier route to deal with this problem.

cheers,
-Dan

Tommy Thorn wrote:

> D. Schuette wrote:
>> I'm relatively new to FPGA programming and looking for some advice. I
>> have an application that needs reliable, high bandwidth (+50 MHz),
> 
> Bandwidth is measured in bits/s or bytes/s.  How much are you storing
> each cycle?
> 
>> The three
>> possible ways I have come up with for implementing this part of my
>> project are:
> ....
>> 2. As before I could use the EDK memory controller core as a separate
>> peripheral on the PLB however this time I could implement my peripheral
>> as a master on the PLB bus. I believe that this would allow my peripheral
>> to directly access the SDRAM controller without interference of/with the
>> processor. However I do not know how difficult it is to write a PLB bus
>> master and I do not know how to predict how detrimental other traffic on
>> the PLB bus will be to the available bandwidth for my application.
> ..
> 
> To me this is the "obvious" right way to go unless you're really
> pushing things to the edge (which will require special tricks with
> DDR).  Rest assured, writing a PLB master is way way easier than
> writing a DDR SDRAM controller (admitted I have no experience with PLB,
> but otherwise there would be something very wrong with the PLB
> design!).
> 
>> As I mentioned I am a relative beginner with FPGA programming and am
>> looking for advice on how to proceed. I would also greatly appreciate any
>> links to example projects or documentation that might be relevant to this
>> project.
> 
> Methinks that this is not likely to be the best way to get started with
> FPGAs.  You may start with a few simpler projects first, followed by a
> few simple PLB peripherals.  Otherwise you'll spend a lot of time in
> frustration.
> 
> Tommy


Article: 106086
Subject: Re: FPGA : PCI-Xilinx Core, PC not booting
From: nico@puntnl.niks (Nico Coesel)
Date: Mon, 07 Aug 2006 15:51:26 GMT
Links: << >>  << T >>  << A >>
bijoy <pbijoy@rediffmail.com> wrote:

>Hello all,
>
>We have made a PCI board using Xilinx PCI core. with master and target capabilities. It works well with intel PCs, but with AMD PCs if i plug the card the PC will not boot.
>
>Does any one had similar expereince ? Any pointers for the cause will be helpful for me
>

Did you use the latest core version? A few years ago I had similar
problems. The first occurance was solved by using the latest core, the
second time certain DELL pcs had a flaw in the bios which didn't allow
the card enough time to load the fpga. Try to get a logic analyzer and
measure the time between reset and the first configuration access
cycle. There should be at least 1 second in between.

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

Article: 106087
Subject: Re: verilog versus vhdl
From: Nicolas Matringe <nicolas.matringe@fre.fre>
Date: Mon, 07 Aug 2006 17:53:50 +0200
Links: << >>  << T >>  << A >>
I can't remember who in this newsgroup who knows both and, whichever 
he's using at any given moment, always regrets he doesn't use the other 
language.

Nicolas

Article: 106088
Subject: Re: Counter status flags don't stay asserted not sure why?
From: "Andy" <jonesandy@comcast.net>
Date: 7 Aug 2006 08:57:07 -0700
Links: << >>  << T >>  << A >>

Frank Buss wrote:
> pinod01@sympatico.ca wrote:
>
> > The section that is not functioning according to my description is the
> > section in the VHDL code that has the IF statement that compares
> > "updated_addr = comp_addr".   Can someone correct the piece of VHDL
> > code below?
>
> I didn't analyze your code in detail, but if you change a signal in a
> process, it will be not changed until the end of the process. Use
> variables, if you need some sequential order.
>
> --
> Frank Buss, fb@frank-buss.de
> http://www.frank-buss.de, http://www.it4-systems.de

What Frank said, but with some additional info:

Signal updates are postponed until the assigning process suspends,
either at an explicit wait statement, or at the bottom of the process.
Any signal assigned inside the clock-edge if/then clause in a clocked
process infers a register. Any reference to that signal is a reference
to the output of the inferred register, no matter when/where it occurs
relative to any assignment.

Variables update immediately upon assigment. A variable reference
infers storage (i.e. a register in a clocked process) if the variable
is read before it is written in a given execution of the process, in
which case it must "remember" the state from the previous execution. If
a reference to a variable executes after an assignment to it, then that
reference infers a combinatorial path instead of a registered one.

Andy


Article: 106089
Subject: Re: How do I treat "default" case which is useless?
From: "KJ" <Kevin.Jennings@Unisys.com>
Date: 7 Aug 2006 09:14:02 -0700
Links: << >>  << T >>  << A >>

Andy wrote:
> One of the tenets they used was to never code anything but null in a
> 'when others' clause.  'When others' was strictly for language issues,
> and was not to be used for functional code. Anything that could happen
> was to be handled explicitly, and anything that could not happen was
> not to be handled, because it could not be tested anyway.

Just out of curiousity, was another one of the tenets to not use 'else'
(or equivalently only use 'else null;')?  Seems like the same rationale
would apply to the if/elsif/...else/endif statement as well.

> So, if the synthesis tool thinks that input values 6 through 8 are not
> possible, it will optimize out any logic that distinguishes between
> them and any possible other value.

You're assuming that all tools will do this.  It's better practice to
have the 'when others' code for those that might not do such "in depth"
analysis.  In fact, one could also say that those tools that disregard
the 'when others' statements because the result of their optomization
analysis has decided that such states could not possibly occur should
be used with suspicion.  As you also pointed out, when such things
really do matter (i.e. critical designs) the techniques that are then
required go far beyond just 'woops I'm in the wrong state, go back to
'Idle' response.  For most other applications though the 'woops I'm in
the wrong state, go back to 'Idle' response is perfectly appropriate
and yet if optomized away it will mean that the synthesized design does
not match the source...which is almost always bad.

> To reach 100% coverage, you'd be
> testing code that is going to get optimized out anyway, and your "100%"
> code coverage metric would be no more meaningful than "99%".

Depends.  Not knowing any more about the design I was simply suggesting
that the tools were pointing to a possible design issue that should be
looked into.  In that spirit, the fact that the tool did not give the
desired 100% should be looked at as a 'good thing' in that maybe things
like simple power up oddities not being considered is something that
should be looked at in the design.

KJ


Article: 106090
Subject: Re: Xilinx USB Blaster FX2 firmware and CPLD replacement under GPL released
From: "Antti" <Antti.Lukats@xilant.com>
Date: 7 Aug 2006 09:27:05 -0700
Links: << >>  << T >>  << A >>
Daniel O'Connor schrieb:

> Antti wrote:
>
> > http://inisyn.org/src/xup/
> >
> > its already done! I was kind of hoping someone does it,
> > and voila, done...
>
> Have you (or anyone else) tried it with the Platform USB cable? I'd imagine
> it would be almost identical to the stuff that's on the S3E starter board
> but you never know how bloody minded some hardware companies can be ;)
>
> --
> Daniel O'Connor software and network engineer
> for Genesis Software - http://www.gsoft.com.au
> "The nice thing about standards is that there
> are so many of them to choose from."
>   -- Andrew Tanenbaum
> GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C

as long as the platform usb and s3e starte use the same FX2 firmware
and same CPLD file they should be fairly compatible.

the difference could be in additional control outputs of the CPLD as
the platform cable has tri-state busdrivers not present in the
starterkit. so control outputs for them may have to be tied to some
level in the CPLD.

well thats a guess I have not checked or tried it yet.

Antti


Article: 106091
Subject: Re: verilog versus vhdl
From: "Andy" <jonesandy@comcast.net>
Date: 7 Aug 2006 10:54:26 -0700
Links: << >>  << T >>  << A >>
Prior to a few years ago, my design style would have been pretty much
applicable to either language with little impact, even though I use
vhdl.

However, in the last few years, I have started using variables instead
of signals in vhdl, the former being akin to blocking assignments in
verilog, but without the accompanying race-condition risks associated
with verilog.  The resulting descriptions are much more like SW, in
that when a variable is assigned, it is immediately updated, and
subsequent references to it are to the updated value.  With VHDL
signals, or Verilog non-blocking assignments (the most commonly used
kind), the code looks like SW, but does not read or execute like it
because of the magical postponement of the updates.

I now tend to use single, clocked processes within an architecture
(akin to a module in verilog), with variables for everything,
registered or combinatorial, except the IO. Granted, Verilog would also
work if I used the same style, but it is way too easy in Verilog to use
the wrong type of assignment when you are using both kinds, and there
are no protections against doing so.  In VHDL you cannot do a blocking
assignment to a signal, and you cannot do a non-blocking assignment to
a variable. Since a variable cannot be read by another process, there
is no chance of a race condition.

Both languages are completely capable of describing virtually any
digital logic system that is possible to build (and quite a few that
are not!), but it boils down to a particular style, and the pros and
cons of that style for a particular user, customer, or organization.

Andy


Article: 106092
Subject: Re: verilog versus vhdl
From: "Xesium" <amirhossein.gholamipour@gmail.com>
Date: 7 Aug 2006 11:00:33 -0700
Links: << >>  << T >>  << A >>
Hi,

All this information is very interesting. I didn't want to make a new
thread for my question but I was wondering which of these languages can
be used more error-freely while using Xilinx CAD tools ISE and EDK.
Because I already know some Verilog however thinking that VHDL is a
more widely used language!!, I didn't actually dare to use Verilog for
my designs to do simulation or other things that I had to deal with low
level HDL in the tools. I really prefer to use Verilog as I'm more
comfortable with it and I don't want to spend much time learning VHDL
at this time. But I'm afraid  that I have to deal with some errors in
EDK or ISE or in my simulation because Verilog is not strongly
supported by Xilinx tools. Do you have any idea about that?
Will I probably face problems just because I'm using Verilog.

Thanks,

Amir

Nicolas Matringe wrote:
> I can't remember who in this newsgroup who knows both and, whichever
> he's using at any given moment, always regrets he doesn't use the other
> language.
> 
> Nicolas


Article: 106093
Subject: Re: DDR2 SRAM Stratix II questions
From: "KJ" <Kevin.Jennings@Unisys.com>
Date: 7 Aug 2006 11:06:51 -0700
Links: << >>  << T >>  << A >>
> Yes but the link is for SDRAM (Synchronous Dynamic RAM) while the O.P.
> asked about
> SRAM (Static RAM)
>
>
<snip from the original post>

We would really like to use a DDR2 SRAM (for reasons I don't
want to go into), but Mega-core doesn't support it

<end snip>

There is no such thing as DDR2 SRAM which implies that the original
post had a typo.  Given that the most likely explanation is that the
original poster meant to type 'DDR2 SDRAM' and not 'SRAM' as you have
surmised.

KJ


Article: 106094
Subject: Re: How do I treat "default" case which is useless?
From: "rickman" <spamgoeshere4@yahoo.com>
Date: 7 Aug 2006 11:33:41 -0700
Links: << >>  << T >>  << A >>
KJ wrote:
> > For example, if the statements in
> > case 2 and 3 were swapped, it would still be covered, but produce a
> > wrong result.  Is there a way to verify that the wrong result will be
> > caught?
>
> If it doesn't, then this implies that either there was no 'assert'
> to check that the design was working under those conditions or that the
> testbench didn't exercise things adequately to uncover the inadvertant
> 'case swap' or (somewhat unlikely) that cases 2 and 3 really are not
> distinct and really are the same thing to the extent that they cause no
> observable misbehaviour of the design.

That is what I am referring to.  The fact that the statements were
"exercised" is not the same thing as saying they were "tested" to work
correctly.  If a tool can tell you if a statement was exercised under
"all conditions", what exactly does that mean, "all conditions"?  I
would assume it means all combinations of the signals that are inputs
to the statement.

I think it is still up to the test designer to determine if the test
distinguishes failures in the code from working code.  I guess you
could compare it to a spell checker.  It will certainly be useful to
catch errors and omissions, but it will not substitute for a pair of
eyes going over the code just lick as pell checker kin miss at least
too different kinds of mistakes.  ;^)


Article: 106095
Subject: Re: DDR2 SRAM Stratix II questions
From: "Thomas Entner" <aon.912710880@aon.at>
Date: Mon, 7 Aug 2006 20:37:42 +0200
Links: << >>  << T >>  << A >>
> There is no such thing as DDR2 SRAM which implies that the original
> post had a typo.

Look at this: http://www.necel.com/memory/en/products/sram/ddr-18m.html ;-)

Thomas 



Article: 106096
Subject: Re: How do I treat "default" case which is useless?
From: "rickman" <spamgoeshere4@yahoo.com>
Date: 7 Aug 2006 12:01:08 -0700
Links: << >>  << T >>  << A >>
Andy wrote:
> I took some ada software courses to learn some of the "software
> engineering" approaches to design and coding in the similar VHDL
> language.
>
> One of the tenets they used was to never code anything but null in a
> 'when others' clause.  'When others' was strictly for language issues,
> and was not to be used for functional code. Anything that could happen
> was to be handled explicitly, and anything that could not happen was
> not to be handled, because it could not be tested anyway.

I don't follow this at all.  I am pretty sure that putting NULL in a
when others clause will create a latch, no?  NULL is saying to do
nothing which means hold your present state, ergo a latch.

> Now, in certain HW applications, things like SEUs, reset values, etc.
> can make "impossible" things suddenly become very probable.  But it
> usually takes far more than adding "others" clauses to handle them
> correctly, since most synthesis tools perform a reachability analysis,
> and optimize out anything that is "impossible" anyway.

Only if the tool can determine that the condition is not "possible".
Often the condition is a function of how a design is used rather than
how it is built.  Given the constraints on the inputs, a condition may
be "impossible" with no way for the tool to know that.

> So, if the synthesis tool thinks that input values 6 through 8 are not
> possible, it will optimize out any logic that distinguishes between
> them and any possible other value. To reach 100% coverage, you'd be
> testing code that is going to get optimized out anyway, and your "100%"
> code coverage metric would be no more meaningful than "99%".
>
> BTW, I believe Synplicity has stated that they will start honoring
> initial values (either explicit or implicit) in their FPL synthesis
> tools, so booleans and integers will have proper initial values, even
> if they are not explicitly reset. Now, transitioning out of the
> reset/config value on the first clock edge after reset/config can be
> problematic, but that's not an initialization problem (and not one that
> would be caught simply by using slv data types), it is a reset/config
> synchronization problem, and a whole other topic altogether.


Article: 106097
Subject: Re: How do I treat "default" case which is useless?
From: "Andy" <jonesandy@comcast.net>
Date: 7 Aug 2006 12:10:11 -0700
Links: << >>  << T >>  << A >>
KJ wrote:
> Andy wrote:
> > One of the tenets they used was to never code anything but null in a
> > 'when others' clause.  'When others' was strictly for language issues,
> > and was not to be used for functional code. Anything that could happen
> > was to be handled explicitly, and anything that could not happen was
> > not to be handled, because it could not be tested anyway.
>
> Just out of curiousity, was another one of the tenets to not use 'else'
> (or equivalently only use 'else null;')?  Seems like the same rationale
> would apply to the if/elsif/...else/endif statement as well.
>
> > So, if the synthesis tool thinks that input values 6 through 8 are not
> > possible, it will optimize out any logic that distinguishes between
> > them and any possible other value.
>
> You're assuming that all tools will do this.  It's better practice to
> have the 'when others' code for those that might not do such "in depth"
> analysis.  In fact, one could also say that those tools that disregard
> the 'when others' statements because the result of their optomization
> analysis has decided that such states could not possibly occur should
> be used with suspicion.  As you also pointed out, when such things
> really do matter (i.e. critical designs) the techniques that are then
> required go far beyond just 'woops I'm in the wrong state, go back to
> 'Idle' response.  For most other applications though the 'woops I'm in
> the wrong state, go back to 'Idle' response is perfectly appropriate
> and yet if optomized away it will mean that the synthesized design does
> not match the source...which is almost always bad.
>
> > To reach 100% coverage, you'd be
> > testing code that is going to get optimized out anyway, and your "100%"
> > code coverage metric would be no more meaningful than "99%".
>
> Depends.  Not knowing any more about the design I was simply suggesting
> that the tools were pointing to a possible design issue that should be
> looked into.  In that spirit, the fact that the tool did not give the
> desired 100% should be looked at as a 'good thing' in that maybe things
> like simple power up oddities not being considered is something that
> should be looked at in the design.
>
> KJ

No, they did not go that far, though you are right, at least when
dealing with conditions having more than two possible values.  I'm not
even saying it is a great idea for hardware, just an interesting way to
think about it.  In the example above where someone spoke of combining
the last legal condition with all the remaining, illegal conditions by
using "when others", I would problably prefer something like "when 5 |
others", even though it would be identical in operation, it would be a
little more self documenting.

It is certainly hard to "argue excellence" against covering all the
bases, but where does one stop?  If the conditions really are
unreachable (excluding SEU, invalid synchronization, etc.), regardless
of whether the synthesis tool recognizes it or not, how are you going
to test it (the rtl)?   How do you know that you made the right choice
of what to do in that case?

In many cases, "when others" is only required because of metavalues in
the logic system (x, u, -, etc.)  If I'm using enumerated types that
only define a subset of the hardware representable states, I've already
made a tradeoff. If I want to handle the remaining states, I have to
tell the synthesis tool that they even exist (which in itself is based
on what representation they use, binary or one hot, etc.) before I can
tell it what to do with them.

My point about 100% vs 99% coverage was more a stab at blindly thinking
(even on the part of the customer, whom we know is always right!) that
100% coverage is good, and 99% coverage is bad. 'Tain't necessarily so,
though you are right that uncovered code is a good alert to "go check
it out". Perhaps the SW practice came about strictly because of
coverage tool issues in the first place (i.e. all uncovered statements
had to be null statements?)!

Andy


Article: 106098
Subject: Re: verilog versus vhdl
From: "johnp" <johnp3+nospam@probo.com>
Date: 7 Aug 2006 12:27:18 -0700
Links: << >>  << T >>  << A >>
If your concern is how well Xilinx XST supports Verilog,
I'd have to say it's pretty good.  I've been using the
Xilinx tools with Verilog for a number of years now and
it works fine.

I'd say that picking VHDL or Verilog is not dependant
on the tool support.  The tools usually will work fine
with either language.  The choice should be made on
which language will work best for YOU, not based
on the Xilinx tools.

John Providenza

Xesium wrote:
> Hi,
>
> All this information is very interesting. I didn't want to make a new
> thread for my question but I was wondering which of these languages can
> be used more error-freely while using Xilinx CAD tools ISE and EDK.
> Because I already know some Verilog however thinking that VHDL is a
> more widely used language!!, I didn't actually dare to use Verilog for
> my designs to do simulation or other things that I had to deal with low
> level HDL in the tools. I really prefer to use Verilog as I'm more
> comfortable with it and I don't want to spend much time learning VHDL
> at this time. But I'm afraid  that I have to deal with some errors in
> EDK or ISE or in my simulation because Verilog is not strongly
> supported by Xilinx tools. Do you have any idea about that?
> Will I probably face problems just because I'm using Verilog.
>
> Thanks,
>
> Amir
>
> Nicolas Matringe wrote:
> > I can't remember who in this newsgroup who knows both and, whichever
> > he's using at any given moment, always regrets he doesn't use the other
> > language.
> > 
> > Nicolas


Article: 106099
Subject: Re: verilog versus vhdl
From: Mike Treseler <mike_treseler@comcast.net>
Date: Mon, 07 Aug 2006 12:31:27 -0700
Links: << >>  << T >>  << A >>
Andy wrote:

> Granted, Verilog would also
> work if I used the same style, but it is way too easy in Verilog to use
> the wrong type of assignment when you are using both kinds, and there
> are no protections against doing so. 

True. Design rule checking is critical
for variable-style regs but it can done
when vhdl is not available or well supported.

1. Top module is all wires and instances.
2. Sub-modules are built from single, named, clocked blocks.
3. All regs are declared and used only in the single block.
4. All "<=" assignments are to local ports.
5. All "="  assignments are to local regs.

simple example:
http://home.comcast.net/~mike_treseler/single_block.v
http://home.comcast.net/~mike_treseler/single_block.pdf

     -- Mike Treseler

PS: yes, I have read Cliff Cummings' Award-Winning Verilog Papers:)




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