J
Jan Decaluwe
Since I started with RTL design in 1991, my goal has been to raise the
abstraction level as much as possible. Two key characteristics of my
design style are:
* using a single clocked process for both control and data operations
* using variables, including register inference from them
Since the early days I am convinced that this is a superior coding
style. Therefore, I always expected it would become the mainstream
style anytime soon. On this I have been dead wrong. In the past two
decades, the mainstream style has moved in the opposite direction. The
absolute low point was Cliff Cummings' guideline not to use blocking
assignments in a clocked process, which effectively bans variable
semantics for RTL designers.
However, now there may a new fact. For the first time, a high-profile
publication is in the making with a different message. It is
appropriately called "The Art of Good Design". Interestingly, it is
being written by Mike Keating, the co-author of the Reuse Methodology
Manual (RMM). I believe the RMM is partially responsible for the
"unstructured chaos" we are in (Mr. Keatings' words). So it's good to
see that he is changing his mind. I have the impression that the
change comes after a careful study and rewriting of real designs. Good
that someone takes the time to do this.
In a recent post on his blog, Mr. Keating announced a preview of
Chapter 3 of The Art of Good Design:
http://synopsysoc.org/futureofdesign/?p=35
In this chapter (after a false start on perl hacking stuff) he
acknowledges the superiority of the single clocked process to describe
an FSM with embedded data operations. Moreover, he discards the
guideline not to mix blocking and non-blocking assignments. He does
this implicitly, as all blocking assignments are encapsulated in
functions, but this doesn't fundamentally alter the conclusion.
He has yet to endorse variable semantics (blocking assignments) as a
generally valuable coding technique, including register inference. But
still, it's a good start. The idea to encapsulate logic systematically
in functions is interesting. Add variables and procedures to the mix,
and what you end up with is the purest form of abstract RTL design -
a.k.a. Mike Treseler's style!
Mike Keatings' blog is called "the future of design". I'd rather call
it "back to the future of design"
Jan
--
Jan Decaluwe - Resources bvba - http://www.jandecaluwe.com
Python as a HDL: http://www.myhdl.org
VHDL development, the modern way: http://www.sigasi.com
Analog design automation: http://www.mephisto-da.com
World-class digital design: http://www.easics.com
abstraction level as much as possible. Two key characteristics of my
design style are:
* using a single clocked process for both control and data operations
* using variables, including register inference from them
Since the early days I am convinced that this is a superior coding
style. Therefore, I always expected it would become the mainstream
style anytime soon. On this I have been dead wrong. In the past two
decades, the mainstream style has moved in the opposite direction. The
absolute low point was Cliff Cummings' guideline not to use blocking
assignments in a clocked process, which effectively bans variable
semantics for RTL designers.
However, now there may a new fact. For the first time, a high-profile
publication is in the making with a different message. It is
appropriately called "The Art of Good Design". Interestingly, it is
being written by Mike Keating, the co-author of the Reuse Methodology
Manual (RMM). I believe the RMM is partially responsible for the
"unstructured chaos" we are in (Mr. Keatings' words). So it's good to
see that he is changing his mind. I have the impression that the
change comes after a careful study and rewriting of real designs. Good
that someone takes the time to do this.
In a recent post on his blog, Mr. Keating announced a preview of
Chapter 3 of The Art of Good Design:
http://synopsysoc.org/futureofdesign/?p=35
In this chapter (after a false start on perl hacking stuff) he
acknowledges the superiority of the single clocked process to describe
an FSM with embedded data operations. Moreover, he discards the
guideline not to mix blocking and non-blocking assignments. He does
this implicitly, as all blocking assignments are encapsulated in
functions, but this doesn't fundamentally alter the conclusion.
He has yet to endorse variable semantics (blocking assignments) as a
generally valuable coding technique, including register inference. But
still, it's a good start. The idea to encapsulate logic systematically
in functions is interesting. Add variables and procedures to the mix,
and what you end up with is the purest form of abstract RTL design -
a.k.a. Mike Treseler's style!
Mike Keatings' blog is called "the future of design". I'd rather call
it "back to the future of design"
Jan
--
Jan Decaluwe - Resources bvba - http://www.jandecaluwe.com
Python as a HDL: http://www.myhdl.org
VHDL development, the modern way: http://www.sigasi.com
Analog design automation: http://www.mephisto-da.com
World-class digital design: http://www.easics.com