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