[comp.lang.vhdl] resolved/guarded signals

jab0396@cec2.wustl.edu (John A. Breen) (03/07/91)

I've always had trouble understanding some of the distinctions between
resolved signals and guarded signals, particularly when they cross entity
boundaries.  Suppose I have an entity/architecture as follows:

    Entity E1 Is
        Port( X: Out T Bus);
    End E1;

    Architecture A1 of E1 Is
        ...
    End A1;

where T is a type that does NOT specify a bus resolution function (BRF). 
Suppose I instantiate E1 in an architecture A2, and for the actual of X I
specify a signal Y of type RT, where RT is a subtype of T that specifies a
BRF. Suppose that, in a process in A1, I explicitly assign NULL to X (and
assume this process is the only driver of X).  Now the questions:

    o   Is X's driver turned off? Since there is no BRF, this doesn't seem
to be correct; however, what does happen to the driver?

    o   In A2, is the driver of Y from E1 turned off, or does it take on
some value?  What value?

    o   How would the answers to the above questions change if X was of
type RT?

Any comments or discussion would be appreciated.
-----
John A. Breen 				|  johnb@hobbes.mdc.com
McDonnell Douglas Missile Systems Co.	|  jab0396@cec1.wustl.edu (forwarded ^)
Tel: (314)234-4341

jab0396@cec2.wustl.edu (John A. Breen) (03/14/91)

My thanks to those of you who responded to my question concerning
resolved/guarded signals.  As most of you pointed out, a guarded
signal must be a resolved signal, so my example was illegal (although
I know of one analyzer that let it get by :-) (yes, I had tried it
before I asked the question)).  However, I do have one other question
on this subject:

Why are only guarded signals allowed to be assigned NULL explicitly
(as opposed to resolved signals in general)?

Anyway, thanks again.
-----
John A. Breen 				|  johnb@hobbes.mdc.com
McDonnell Douglas Missile Systems Co.	|  jab0396@cec1.wustl.edu (forwarded ^)
Tel: (314)234-4341

davidb@inmet.inmet.com (03/14/91)

/* Written  5:37 pm  Mar 13, 1991 by jab0396@cec2.wustl.edu */

>Why are only guarded signals allowed to be assigned NULL explicitly
>(as opposed to resolved signals in general)?

The normal answer to any "Why?" question concerning the LRM is,
"Because!".  This one has a more rational answer; the use of the null
waveform directs that the driver contining that null waveform not
provide a value to the resolution function used in determining the
value of the signal.  Some indication must be given concerning what to
do when all drivers "turn off".  This is provided by the two keywords,
"register" and "bus" that identify the signal as a guarded signal.
When "register" is used, the resolution function is not called with
zero drivers, and the signal retains its value.  When "bus" is used,
the resolution function is called with an empty array (i.e., an array
with no values).

						Dave Barton
						barton@i2wash.com