mirror of
https://github.com/myhdl/myhdl.git
synced 2024-12-14 07:44:38 +08:00
review
This commit is contained in:
parent
9fdb249185
commit
58d0fe9106
@ -24,13 +24,13 @@
|
||||
\fi
|
||||
|
||||
\myhdl\ now has support for waveform viewing. During simulation, signal
|
||||
changes can be written to a VCD output file. The VCD file can then be
|
||||
loaded and viewed in a waveform viewer tool such as \program{gtkwave}.
|
||||
changes can be written to a VCD output file that can be loaded
|
||||
into a waveform viewer tool such as \program{gtkwave}.
|
||||
|
||||
The user interface of this feature consists of a single function,
|
||||
\function{traceSignals()}. To explain how it works, recall that in
|
||||
\myhdl{}, an instance is created by a function call and by assigning
|
||||
the result to an instance name. For example:
|
||||
\myhdl{}, an instance is created by assigning
|
||||
the result of a function call to an instance name. For example:
|
||||
|
||||
\begin{verbatim}
|
||||
tb_fsm = testbench()
|
||||
@ -43,7 +43,7 @@ instead:
|
||||
tb_fsm = traceSignals(testbench)
|
||||
\end{verbatim}
|
||||
|
||||
All signals in the instance hierarchy will be traced in an output VCD
|
||||
All signals in the instance hierarchy will be traced in a VCD
|
||||
file called \file{tb_fsm.vcd}. Note that first the argument of
|
||||
\function{traceSignals()} consists of the uncalled function. By
|
||||
calling the function under its control, \function{traceSignals()}
|
||||
@ -131,12 +131,11 @@ semantics.
|
||||
|
||||
\myhdl\ 0.3 provides a function called \function{always_comb()} which
|
||||
is named and modeled after the SystemVerilog counterpart.
|
||||
\function{always_comb()} takes a single classic function as its
|
||||
argument. This function should be a locally defined function that
|
||||
specifies what should happen when one of its input signals
|
||||
changes. \function{always_comb()} returns a generator that is
|
||||
sensitive to all inputs, and that will run the function whenever an
|
||||
input changes.
|
||||
\function{always_comb()} takes a classic local function as its
|
||||
argument. This function should specify the combinatorial logic behavior.
|
||||
\function{always_comb()} returns a generator
|
||||
that is sensitive to all inputs, and that will run the function
|
||||
whenever an input changes.
|
||||
|
||||
For example, suppose that we have a mux module described as follows:
|
||||
|
||||
@ -191,10 +190,10 @@ the generator function code. This is traditionally done in
|
||||
synthesizable RTL style modeling. However, the semantics of this style
|
||||
are not entirely correct: at the start of the simulation, the
|
||||
combinatorial output will not reflect the initial state of the
|
||||
inputs. \function{always_comb} solves this by putting the sensitivity
|
||||
inputs. \function{always_comb()} solves this by putting the sensitivity
|
||||
list at the end of the code.
|
||||
|
||||
\section{Inferring the list of all instances\label{section-instances}}
|
||||
\section{Inferring the list of instances\label{section-instances}}
|
||||
|
||||
In \myhdl{}, the instances defined in a top level function
|
||||
need to be returned explicitly. The following is a schematic
|
||||
@ -213,7 +212,7 @@ def top(...):
|
||||
|
||||
|
||||
It may be convenient to assemble the list of instances automatically,
|
||||
especially if there are a large number of instances. For this purpose,
|
||||
especially if there are many instances. For this purpose,
|
||||
\myhdl\ 0.3 provides the function \function{instances()}.
|
||||
It is used as follows:
|
||||
|
||||
@ -235,7 +234,7 @@ of the local variables defined by the calling function. All variables
|
||||
that comply with the definition of an instance are assembled in
|
||||
a list, and that list is returned.
|
||||
|
||||
\section{Inferring the list of all processes\label{section-processes}}
|
||||
\section{Inferring the list of processes\label{section-processes}}
|
||||
|
||||
In addition to instances, a top level function may
|
||||
also define local generators functions, which I will
|
||||
@ -374,8 +373,8 @@ better to the nature of the operation.
|
||||
|
||||
In previous versions, the \class{intbv} class provided a
|
||||
\method{concat()} method. This method is no longer
|
||||
available. Instead, there is now a \function{concat()} function in
|
||||
\myhdl{}, which supports a much broader range of objects.
|
||||
available. Instead, there is now a \function{concat()} function
|
||||
that supports a much broader range of objects.
|
||||
|
||||
A function is more natural because \myhdl\ objects of various types
|
||||
can be concatenated: \class{intbv} objects with a defined bit width,
|
||||
@ -423,9 +422,9 @@ the small burden of a straightforward upgrade.
|
||||
|
||||
Python is a very stable language, so upgrading to Python 2.3 is
|
||||
virtually risk free. Given the additional benefits, I recommend
|
||||
\myhdl\ users to do so as soon as possible. For the next major
|
||||
release, the new features will become crucial and only Python 2.3 (and
|
||||
higher) will be supported.
|
||||
\myhdl\ users to do so as soon as possible. For the next major \myhdl\
|
||||
release, the new features will become required and only Python 2.3
|
||||
(and higher) will be supported.
|
||||
|
||||
|
||||
\end{document}
|
||||
|
Loading…
x
Reference in New Issue
Block a user