1
0
mirror of https://github.com/myhdl/myhdl.git synced 2024-12-14 07:44:38 +08:00
myhdl/doc/whatsnew03/whatsnew03.tex
2003-07-18 09:21:40 +00:00

71 lines
2.4 KiB
TeX

\documentclass{howto}
\usepackage{distutils}
\usepackage{graphicx}
% $Id$
\title{What's New in MyHDL 0.3}
\release{0.3}
\author{Jan Decaluwe}
\authoraddress{\email{jan@jandecaluwe.com}}
\begin{document}
\maketitle
\tableofcontents
\section{VCD output for waveform viewing\label{section-wave}}
\ifpdf
\includegraphics{tbfsm.png}
\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 in a waveform viewer tool.
The user interface of this feature consists of a single function,
\function{trace_sigs()}. To explain how it works, recall that in
MyHDL, instances are created by calling a function that returns a
sequence of generators. For example:
\begin{verbatim}
tb_fsm = testbench()
\end{verbatim}
The \code{tb_fsm} variable is subsequently passed
as an argument to a \class{Simulation} object constructor
for simulation. To enable VCD tracing, the instance should
be created as follows instead:
\begin{verbatim}
tb_fsm = trace_sigs(testbench)
\end{verbatim}
As a result, all signals in the hierarchy of the instance will be
traced in an output VCD file called \file{tb_fsm.vcd}. Note that the
argument of \function{trace_sigs()} consists of the uncalled
function. By calling the function under its control,
\function{trace_sigs()} gathers information about the hierarchy and
the signals to be traced. In addition to a function argument,
\function{trace_sigs()} accepts an arbitrary number of non-keyword and
keyword arguments that will be passed to the function call.
The restrictions on VCD tracing are as follows. First, only
\class{Signal} objects can be traced. Second, only a hierarchy of
instances returned by a pre-simulation top level function call can be
traced. Also, all instances to be traced should have a name: this is
done by assigning the result of an instantiating function call to a
local variable (instead of using it directly.)
Signals are dumped in a suitable format. This format is inferred at
the \class{Signal} construction time, from the type of the initial
value. In particular, \class{bool} signals are dumped as single
bits. (This only works starting with Python2.3, when \class{bool} has
become a separate type). Likewise, \class{intbv} signals with a
defined bit width are dumped as bit vectors. To support the general
case, other types of signals are dumped as a string representation, as
returned by the standard \function{str()} function.
\end{document}