mirror of
https://github.com/myhdl/myhdl.git
synced 2024-12-14 07:44:38 +08:00
71 lines
2.4 KiB
TeX
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}
|