RE: [sv-ac] Semantics of "calling subroutines on match of a seque nce" is not well defined.

From: Bassam Tabbara <Bassam_at_.....>
Date: Tue Nov 01 2005 - 12:00:10 PST
Hi All,

Ed: I would not want us to get distracted by terms, of course they are
separate threads that's not the point, if easier my use of "join" here
means a *flow join* i.e. there is a flow point where things are agreed
upon -- I say this *particularly* because I am viewing the $display
issue in light of local var flow, that's the key point, and it makes no
difference when it comes to visibility inside whether I am doing a
disjunctive or a conjunctive join.

Doron: I think the $display in the rest of the sequence should not "see"
the inside. You know a simple argument for this can be made if you add
distinct vars along the branches, the $display outside should not have
access to the individual vars (they get killed at the flow join). If you
agree then that's it, that's the general rule. If you want to see the
values inside, add a $display within.

Again, my take is if we did not have local vars, the question would not
be raised to begin with -- The only difference between commuting the
$display and not, is the internal state and we already have rules
governing which values are visible to the outside, so this is already
specified in LRM.

Thx.
-Bassam.

--
Dr. Bassam Tabbara
Architect, R&D
Novas Software Inc.
(408) 467-7893

-----Original Message-----
From: Eduard Cerny [mailto:Eduard.Cerny@synopsys.com] 
Sent: Tuesday, November 01, 2005 11:11 AM
To: Doron Bustan; Bassam Tabbara
Cc: Bustan Doron-DBUSTAN; vhdlcohen@aol.com; sv-ac@eda.org
Subject: RE: [sv-ac] Semantics of "calling subroutines on match of a
seque nce" is not well defined.

Hi,

I agree, the or-ed sequences are not joined - they form separate
threads.
This is also why the local variables that flow out of them must have the
same names, since both must continue with the same sequence the follows
the or.
Similarly for intervals in ## or [*], they may create separate threads
if more than one situation match.

ed

> -----Original Message-----
> From: owner-sv-ac@eda.org [mailto:owner-sv-ac@eda.org] On Behalf Of 
> Doron Bustan
> Sent: Tuesday, November 01, 2005 1:17 PM
> To: Bassam Tabbara
> Cc: Bustan Doron-DBUSTAN; vhdlcohen@aol.com; sv-ac@eda.org
> Subject: Re: [sv-ac] Semantics of "calling subroutines on match of a 
> seque nce" is not well defined.
> 
> Bassam, Ben,
> 
> 
> I disagree on the fact that the ## operator functions as a join of 
> "ORed" subsequences.
> As far as I understand the LRM, when two sub threads are forked at an 
> "or" operator, they are never joined again.  It is not explicitly 
> written in the LRM, but that is how I understand section 17.8 p252 (in

> the D5 version).
> 
> 
> To make my point stronger, consider the following sequence
> 
>  sequence s3d;
>  logic [2:0] v;
>  (
>  ((a ##1 a), v=1) // A subthread
>  or
>  ((b ##2 b), v=2) // B subthread
>  ) ##1 (c, $display("c, v=%d", v));
>  endsequence,
> 
> if a,b, and c hold at the first 4 cycles, then I will expect two
> displays: one after the third cycle
> and one after the forth. The reason for that is that sub threads that 
> are forked by an "or" operator are not joined. similarly I expect two 
> displays in s3 after the third cycle.
> 
> Thanks
> 
> Doron
> 
> 
> 
> 
> 
Received on Tue Nov 1 12:00:15 2005

This archive was generated by hypermail 2.1.8 : Tue Nov 01 2005 - 12:01:32 PST