iverilog/tgt-vvp
Cary R ec809c9137 Fix constant CA delays to support two/three values.
This patch fixes the code generator to correctly create three value
constant delays. It also fixes a bug in the compiler related to the
precalculation of the high-Z delay when only two delays are given.
Previously if was using a pointer not a value comparison to find
the minimum value.

Variable delays should work when one or three values are given.
For the two value case we need to do a comparison at run time and
that will require changing the compiler/run time interface so that
can only go into the V0.10 branch. This patch can be applied to
both development and V0.9. I have added a sorry message and an
assert for this case. I will add the variable two delay case at a
later time. We also do not support mixing constant and variable
delays on a single statement. That is a much bigger change and
can wait until someone asks for it.
(cherry picked from commit b1cb80b32e)
2009-04-05 13:58:22 -07:00
..
Makefile.in Update mkinstalldirs to handle paths with spaces. 2009-02-04 08:44:22 -08:00
README.txt tgt-vvp generates code that skips nets as inputs. 2001-08-10 00:40:45 +00:00
draw_mux.c Fix constant CA delays to support two/three values. 2009-04-05 13:58:22 -07:00
draw_net_input.c Fix constant CA delays to support two/three values. 2009-04-05 13:58:22 -07:00
draw_switch.c Content-free portability fixes. 2008-09-29 18:06:47 -07:00
draw_ufunc.c Content-free portability fixes. 2008-09-29 18:06:47 -07:00
draw_vpi.c When determining if a signal is an array use array_dimensions_ 2009-03-31 07:54:27 -07:00
eval_bool.c Add support for 64 bit delays in procedural non-blocking assignments. 2009-02-17 10:32:11 -08:00
eval_expr.c Spelling fixes 2009-03-09 14:44:07 -07:00
eval_real.c Keep parameters as a parameters reference for vpi calls. 2009-01-16 18:21:50 -08:00
modpath.c Content-free portability fixes. 2008-09-29 18:06:47 -07:00
vector.c Remove most of the lingering CVS droppings. 2008-12-05 21:48:28 -08:00
vvp-s.conf.in Remove redundant back-end selections. 2008-09-07 16:43:54 -07:00
vvp.c Update copyright in files changed in 2009 2009-01-08 20:03:34 -08:00
vvp.conf.in Remove redundant back-end selections. 2008-09-07 16:43:54 -07:00
vvp_config.h.in Remove most of the lingering CVS droppings. 2008-12-05 21:48:28 -08:00
vvp_priv.h Allow constant delay literals to be handled as 64bits. 2009-02-24 13:50:18 -08:00
vvp_process.c Add support for 64 bit delays in procedural non-blocking assignments. 2009-02-17 10:32:11 -08:00
vvp_scope.c Fix constant CA delays to support two/three values. 2009-04-05 13:58:22 -07:00

README.txt

THE VVP TARGET

SYMBOL NAME CONVENTIONS

There are some naming conventions that the vp target uses for
generating symbol names.

* wires and regs

Nets and variables are named V_<full-name> where <full-name> is the
full hierarchical name of the signal.

* Logic devices

Logic devices (and, or, buf, bufz, etc.) are named L_<full_name>. In
this case the symbol is attached to a functor that is the output of
the logic device.


GENERAL FUNCTOR WEB STRUCTURE

The net of gates, signals and resolvers is formed from the input
design. The basic structure is wrapped around the nexus, which is
represented by the ivl_nexus_t.

Each nexus represents a resolved value. The input of the nexus is fed
by a single driver. If the nexus in the design has multiple drivers,
the drivers are first fed into a resolver (or a tree of resolvers) to
form a single output that is the nexus.

The nexus, then, feeds its output to the inputs of other gates, or to
the .net objects in the design.