Reply by February 12, 20122012-02-12
nico@puntnl.niks (Nico Coesel) writes:

>>be the case in more recent versions. Also you'll miss the compile >>static check of only one driving the signal. > > The synthesizer will most likely complain about that.
I was thinking about simulator compile checks. Which typically can be checked quickly, e.g. can be done from the editor and prior to revision control commits etc. Synthesis usually takes longer. //Petter -- .sig removed by request.
Reply by Nico Coesel February 12, 20122012-02-12
Petter Gustad <newsmailcomp6@gustad.com> wrote:

>nico@puntnl.niks (Nico Coesel) writes: > >> Petter Gustad <newsmailcomp6@gustad.com> wrote: >> >>>nico@puntnl.niks (Nico Coesel) writes: >>> >>>>>There are several nice features like interfaces (which are >>>>>bi-directional unlike record bundles in VHDL). There's also enum's, >>>> >>>> Record bundles can be bi-directional in VHDL! >>> >>>That's great news as I've always used one record type as input and >>>another one as output. >> >> Just declare the port as inout. Its simple as that. > >be the case in more recent versions. Also you'll miss the compile >static check of only one driving the signal.
The synthesizer will most likely complain about that. -- Failure does not prove something is impossible, failure simply indicates you are not using the right tools... nico@nctdevpuntnl (punt=.) --------------------------------------------------------------
Reply by February 12, 20122012-02-12
nico@puntnl.niks (Nico Coesel) writes:

> Petter Gustad <newsmailcomp6@gustad.com> wrote: > >>nico@puntnl.niks (Nico Coesel) writes: >> >>>>There are several nice features like interfaces (which are >>>>bi-directional unlike record bundles in VHDL). There's also enum's, >>> >>> Record bundles can be bi-directional in VHDL! >> >>That's great news as I've always used one record type as input and >>another one as output. > > Just declare the port as inout. Its simple as that.
That might cause some problems. I've seen some tool which did not like inouts other than at the top level (can't remember which, it might have been some LSI or IBM tool). This is many years ago and might not be the case in more recent versions. Also you'll miss the compile static check of only one driving the signal. //Petter -- .sig removed by request.
Reply by Andy February 10, 20122012-02-10
On Feb 9, 3:32=A0pm, n...@puntnl.niks (Nico Coesel) wrote:
> Andy <jonesa...@comcast.net> wrote: > >On Feb 7, 3:14=3DA0pm, n...@puntnl.niks (Nico Coesel) wrote: > >> I never had that problem when synthesizing for Xilinx devices. > > >Did you simulate your RTL using bidirectional ports? That's where the > >default driver problem arises, on inout ports that are only read (from > >the inside). > > I didn't simulate that particular code. It was back in the days that > simulation software wasn't available if you wanted to keep your arms > and legs. > > >Synthesis can take a lot of liberty with your RTL description because > >of the static nature of the analysis of the code, and the fact that > >unknowns are don't cares in synthesis, which means the synthesis tool > >can do as it pleases, which is usually what pleases the most customers > >most of the time. > > AFAIK: for RTL to synthesize each signal needs one driver. Even if it > would drive the signal tristate. It probably depends on the tools. My > experience is limited to Xilinx. > > -- > Failure does not prove something is impossible, failure simply > indicates you are not using the right tools... > nico@nctdevpuntnl (punt=3D.) > --------------------------------------------------------------
Most synthesis tools will convert multiple tri-state drivers on a signal into multiplexers, since most FPGAs do not support internal tri- state busses any more. They assume that the various tri-state enables are mutually exlusive (how else would the tri-state bus have worked?), so a prioritlyless multiplexer is constructed. This can be a handy way of specifying a distributed priorityless mux. Most synthesis tools will convert default 'U' drivers to "undriven" (nothing), which is different behavior from the SL resolution function in simulation (they issue a warning about that). Andy
Reply by Nico Coesel February 9, 20122012-02-09
Andy <jonesandy@comcast.net> wrote:

>On Feb 7, 3:14=A0pm, n...@puntnl.niks (Nico Coesel) wrote: >> I never had that problem when synthesizing for Xilinx devices. > >Did you simulate your RTL using bidirectional ports? That's where the >default driver problem arises, on inout ports that are only read (from >the inside).
I didn't simulate that particular code. It was back in the days that simulation software wasn't available if you wanted to keep your arms and legs.
>Synthesis can take a lot of liberty with your RTL description because >of the static nature of the analysis of the code, and the fact that >unknowns are don't cares in synthesis, which means the synthesis tool >can do as it pleases, which is usually what pleases the most customers >most of the time.
AFAIK: for RTL to synthesize each signal needs one driver. Even if it would drive the signal tristate. It probably depends on the tools. My experience is limited to Xilinx. -- Failure does not prove something is impossible, failure simply indicates you are not using the right tools... nico@nctdevpuntnl (punt=.) --------------------------------------------------------------
Reply by Andy February 9, 20122012-02-09
On Feb 7, 3:14=A0pm, n...@puntnl.niks (Nico Coesel) wrote:
> I never had that problem when synthesizing for Xilinx devices.
Did you simulate your RTL using bidirectional ports? That's where the default driver problem arises, on inout ports that are only read (from the inside). Synthesis can take a lot of liberty with your RTL description because of the static nature of the analysis of the code, and the fact that unknowns are don't cares in synthesis, which means the synthesis tool can do as it pleases, which is usually what pleases the most customers most of the time. Andy
Reply by Nico Coesel February 7, 20122012-02-07
Andy <jonesandy@comcast.net> wrote:

>On Feb 3, 5:43=A0am, n...@puntnl.niks (Nico Coesel) wrote: >> Record bundles can be bi-directional in VHDL! > >That's the problem; every element of a VHDL bidirectional record port >is bidirectional. You have to use resolved types for each element, and >remember to assign benign driven values to elements you want to be >input only. It can be done, but it gets ugly.
I never had that problem when synthesizing for Xilinx devices. -- Failure does not prove something is impossible, failure simply indicates you are not using the right tools... nico@nctdevpuntnl (punt=.) --------------------------------------------------------------
Reply by Andy February 7, 20122012-02-07
On Feb 3, 4:37=A0am, Petter Gustad <newsmailco...@gustad.com> wrote:
> Andy <jonesa...@comcast.net> writes: > > For verification, SV is indeed really nice. However, a new open source > > VHDL Verification Methodology (VVM) library of VHDL packages has > > emerged that provides VHDL with some of the capabilities of SV with > > OVM/UVM. > > I took a link at some of the links posted here previously, it looks > nice and it's an improvement. But as far as I could tell it lacked > polymorphism and inheritance.
Actually, being built around VHDL protected types, it has some amount of both. Not nearly as clean or capable as SV though. Andy
Reply by Andy February 7, 20122012-02-07
On Feb 3, 5:43=A0am, n...@puntnl.niks (Nico Coesel) wrote:
> Record bundles can be bi-directional in VHDL!
That's the problem; every element of a VHDL bidirectional record port is bidirectional. You have to use resolved types for each element, and remember to assign benign driven values to elements you want to be input only. It can be done, but it gets ugly. Sometimes (especially testbenches) it is worth the work, but it would be worth even more to be able to define custom record modes for record port types (e.g. master, slave, observer, etc modes for a record port representing a bus interface, each defining different individual in/ out/inout/etc modes on individual record elements). Andy
Reply by Gabor February 3, 20122012-02-03
glen herrmannsfeldt wrote:
[snip]
> As far as I know, currently if something can be done either with > an FPGA or a small microcontroller, or even DSP processor, > the choice is often for the processor. With the price of smaller > FPGAs coming down, that might change, but also there are more > people who know how to program such processors than HDL design. > > Given that, I would expect some overlap between FPGA/HDL > applications and processor/software applications, depending > on the speed required at the time. Some applications might > initially be developed in software, debugged and tested, before > moving to an FPGA/HDL implementation. > > Maybe the question isn't whether scaled fixed point is useful > in HDL, but why isn't it useful, enough that people ask for > it in an HLL, in software! Why no scaled fixed point datatype > in C or Java?
You may as well ask why we're not using slide rules instead of calculators. Once you have floating point arithmetic with reasonable performance, fixed-point becomes of little value. If you really want to keep track of your binary point instead of letting the floating point package do it for you, you can always use integer types. Anyone who has worked on fixed point FFT logic knows just what a pain it can be to keep track of scaling. I don't know many C or Java programmers willing to take on that task. At my company, the only person who ever wrote fixed point code for processing had a background in microcoding and his whole job was just to create accellerated image processing libraries. Obviously for hardware floating point is a huge resource hog, but when you're using a microprocessor that already has it built in there's no big incentive not to use it. -- Gabor