J
Jan Decaluwe
Guest
Andy wrote:
in semantics between signals and variables.
There are things you can do with variables that you cannot easily
accomplish with signals. So they add another dimension to the game.
In particular, in a clocked process the same variable can be used
both "combinatorially" and "as a register". Once you get that,
the opportunities for elegant HDL solutions for real problems
pop up everywhere.
I consider register inference from variables the most powerful
tool in the RTL toolbox - however it is poorly understood and
probably banned in a majority of design teams.
http://myhdl.jandecaluwe.com/doku.php/cookbook:jc2
Jan
--
Jan Decaluwe - Resources bvba - http://www.jandecaluwe.com
Kaboutermansstraat 97, B-3000 Leuven, Belgium
From Python to silicon:
http://myhdl.jandecaluwe.com
All true, but I'm missing the most important point: the difference"We" have already given several examples that are compelling to many
of us:
Ease of discerning cycle based behavior from the code
Decoupling, etc. without resorting to separate files/entities/
architectures
Proximity of the variable definition to where it is used
Simulation efficiency
in semantics between signals and variables.
There are things you can do with variables that you cannot easily
accomplish with signals. So they add another dimension to the game.
In particular, in a clocked process the same variable can be used
both "combinatorially" and "as a register". Once you get that,
the opportunities for elegant HDL solutions for real problems
pop up everywhere.
I consider register inference from variables the most powerful
tool in the RTL toolbox - however it is poorly understood and
probably banned in a majority of design teams.
http://myhdl.jandecaluwe.com/doku.php/cookbook:jc2
Jan
--
Jan Decaluwe - Resources bvba - http://www.jandecaluwe.com
Kaboutermansstraat 97, B-3000 Leuven, Belgium
From Python to silicon:
http://myhdl.jandecaluwe.com