J
Jonathan Bromley
Guest
On 19 Jan 2007 18:28:25 -0800, mikegurche@yahoo.com wrote:
OpenMORE coding standard. That doesn't automatically make
the advice correct, though.
Cliff's discussion of the behaviour of NBA and races is spot-on
(and, indeed, I often point my own trainees to that paper), but
please read his section 13.0 rather carefully. He correctly
dismisses his example 25 (mixed blocking and nonblocking assignment
to the same variable) as being non-synthesisable. But he also
dismisses his example 24 without justification, despite correctly
saying that the example synthesises and simulates in exactly the
desired way! On this point (and, note, on only this point)
I disagree strongly with his paper's conclusions. His example
24 is a perfectly sensible use of blocking assignment to local
variables, and represents a coding style that I would strongly
encourage.
I imagine that Cliff's reasoning here is that of a trainer who
wishes to be conservative - note that Jim Lewis uses exactly
the same reasoning when avoiding discussion of variables in
his VHDL training classes. We, similarly, avoid the use of
variables (and locals in Verilog) in our introductory training,
but we slip in the possibility as soon as we are able.
We believe it gives users a powerful additional tool for
expressing their design intent.
of the idea being published as "guidelines".
--
Jonathan Bromley, Consultant
DOULOS - Developing Design Know-how
VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services
Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK
jonathan.bromley@MYCOMPANY.com
http://www.MYCOMPANY.com
The contents of this message may contain personal views which
are not the views of Doulos Ltd., unless specifically stated.
more like VHDL RTL code]Jonathan Bromley wrote:
[a rant about why Verilog RTL code ought to look
You'll find the same guidelines elsewhere too; for example, in theJonathan,
The guidelines I metioned is from
"Nonblocking Assignments in Verilog Synthesis, Coding Styles That Kill"
http://www.sunburst-design.com/papers/CummingsSNUG2000SJ_NBA.pdf
which is voted best paper in SNUG2000.
OpenMORE coding standard. That doesn't automatically make
the advice correct, though.
Cliff's discussion of the behaviour of NBA and races is spot-on
(and, indeed, I often point my own trainees to that paper), but
please read his section 13.0 rather carefully. He correctly
dismisses his example 25 (mixed blocking and nonblocking assignment
to the same variable) as being non-synthesisable. But he also
dismisses his example 24 without justification, despite correctly
saying that the example synthesises and simulates in exactly the
desired way! On this point (and, note, on only this point)
I disagree strongly with his paper's conclusions. His example
24 is a perfectly sensible use of blocking assignment to local
variables, and represents a coding style that I would strongly
encourage.
I imagine that Cliff's reasoning here is that of a trainer who
wishes to be conservative - note that Jim Lewis uses exactly
the same reasoning when avoiding discussion of variables in
his VHDL training classes. We, similarly, avoid the use of
variables (and locals in Verilog) in our introductory training,
but we slip in the possibility as soon as we are able.
We believe it gives users a powerful additional tool for
expressing their design intent.
There is plenty of guidance in this thread. However, I'm not awareIt will be nice if you can provide some links for other guidelines.
of the idea being published as "guidelines".
--
Jonathan Bromley, Consultant
DOULOS - Developing Design Know-how
VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services
Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK
jonathan.bromley@MYCOMPANY.com
http://www.MYCOMPANY.com
The contents of this message may contain personal views which
are not the views of Doulos Ltd., unless specifically stated.