I apologize if almost the same response as this is received. I had typed a response which I thought I posted over an hour ago but it does not seem to appear even on the server I originally had posted it on, so I retype a response and I try a different client and server.
In news: snipped-for-privacy@o80g2000hse.googlegroups.com timestamped Tue, 28 Aug 2007 07:45:18 -0000, "comp.arch.fpga" posted: |----------------------------------------------------------------------------| |"[..] | | | |At least most tools now recognize initialization values for signals." | |----------------------------------------------------------------------------|
Synopsys Presto VHDL does not, according to what is documented on Page C-5 of sold/doc/online/dc/pvhdl/pvhdl_c.pdf for Version Y-2006.06. Which synthesis tools do support initialization of signals?
|----------------------------------------------------------------------------| |"Took them only 20 years to implement that. | | | | | |My frustration comes from work in the EDA software field. I see that | |really hard tasks that are solved successfully during the synthesis | |and implementation process and wonder why topics like those above or | |not handled well, even though they are a lot simpler. | | | |Kolja Sulimma" | |----------------------------------------------------------------------------|
Perhaps because they are too lazy to implement features which customers can easily be led to believe are frills? E.g. Jonathan Bromley posted on 2007 March 5th: "[..]
[..] The majority of hardware platforms do not offer reliable power-up initialisation of internal state. Consequently it is appropriate to code explicitly some reset behaviour. For exactly this reason, the hardware-oriented data types in VHDL (std_logic, etc) have a specific undefined value as the leftmost value of their value-set, so that initialisation oversights are more likely to be detected.
Unfortunately for a purist such as you, there are many occasions in hardware design where it is entirely appropriate to read an uninitialised object. For example, a pipeline or shift register probably does not need the hardware overhead of reset; it will automatically flush itself out over the first few clock cycles - but only if you allow it to run, which of course entails reading uninitialised (or default-initialised) values. Consequently it is appropriate for synthesis tools to do pretty much what they generally do: don't worry about initialisations. For preference, they should issue warnings about attempts to do explicit initialisation, since these cannot be synthesised to hardware on most platforms. However, even then it may be appropriate to let this past, since the explicit initialisation may be useful in order to limit the excessive pessimism that usually occurs when a simulator is confronted with a lot of 'U' or 'X' values. This issue is one of those things that hardware designers are required to be aware of, and failure to attend to it is usually a good identifying mark of a beginner, or a dyed-in-the-wool programmer assuming that hardware design is easy.
[..]"
Regards, Colin Paul Gloster