Phone Conference P1450.1 Working Doc Subgroup

Thurs Feb 27, 10:00 am PST

 

Attendees:

Bruce Kaufmann
Greg Maston (chair & scribe)
Doug Sprague
Jason Doege

 

Documents

http://grouper.ieee.org/groups/1450/private/p1450.1-D15.pdf (Feb 13, 2003)

http://grouper.ieee.org/groups/1450/dot1/changes-2003-02-13.pdf

 

Agenda

Review separate PDF of issues (see link above to file: changes-2003-02-13.pdf)

 


Meeting discussion

First, the Working Group wants to thank Tony for the EXCELLENT email

meeting reminder/meeting call notice. All information and numbers and

references to working docs were in one location. Thank you, Tony!

 

Second, the members of the Working Group are aware of no patents or

proprietary infringments on constructs being defined in the working

document at this time.

 

clause 6.7

The Working Group accepts this section as currently written.

 

clause 10.1

The Working Group accepts to eliminate the Length attribute as

proposed here. This was after much subsequent discussion presented

later.

 

The changes to lines 51-57 to reflect elimination of the Length

attribute were also accepted.

 

clause 10.3

The Working Group accepts this section as currently written, with the

following additions:

 

1. There was subsequent discussion about 'persistence' and 'accessing

variables out-of-explicit scope', and Greg provides the following

additional paragraphs to be placed under the first paragraph of this

section, for review at the next meeting:

 

  Variables declared in an unnamed Variables block are global in scope

  and may be accessed from any Pattern context unless that variable is

  hidden by a declaration of the same name from a named Variables

  block referenced from a PatternBurst context. Global variables are

  assigned an InitialValue (if defined) at the start of a PatternExec

  and maintain the last-assigned value throughout the execution of the

  PatternExec.

 

  Variables declared in named Variable blocks are local to the

  PatternBurst context where that named Variable block is

  referenced. Local variables are assigned their InitialValue (if

  defined) when the first Pattern that contains that Variables block

  reference starts to execute, and the value of that variable only

  persists while the PatternBurst context that contains that Variables

  reference is executing. Each reference of a Variables block in a

  PatternBurst context defines separate and unique instances of local

  variables for that context.

 

2. Questions were raised about the access of variables for procedure

blocks. In particular, lines 70 and 71 start a procedure definition

but are incomplete. Procedure examples need to be fleshed out as well.

 

This raised a discussion about facilitating reuse. It is desireable to

reuse as much definition as possible, in particular to reuse the same

Procedure definitions across multiple Patterns. There was some

discussion about how to FACILITATE this desired behavior. Jason

identified that the quantity of constructs causing separate

instantiation of procedures is difficult to process, and Bruce

identified that variables issues adds to this complexity.

 

Jason identified that the ability to identify Variables blocks under

the Procedures block (rather than inferred from the context of the

PatternBurst) would probably facilitate addressing reuse. Greg

identified that this would be contrary to the current resolution

techniques for SignalGroups.

 

A separate meeting or discussion opportunity was postulated to

consider how to address this, for instance, the definition of usage

models which would facilitate reuse and simplify identification when

reuse was not appropriate.

 

Greg proposes the following additions to fill-in around lines 70,71

and present variable access in procedure contexts as well. THIS IS A

STRAWMAN PROPOSAL FOR REVIEW.

 

70: Procedures {

    // This procedure can only be used in PAT2 or PAT3 because it

    // contains a reference to LOCAL_VAR that is defined only for

    // those pattern contexts.

71: PROC1 {

       If 'GLOBAL_VAR==1' {} // true

       If 'SHARED_VAR==0' {} // only true before PAT2, PAT3 execute

       If 'LOCAL_VAR==3' {} //  only true in PAT2

      }

    }

 

clause 21 Pragma

The Working Group accepts this section as currently written.

 

There was discussion here about the potential separation of Pragma

"definitions" from Pragma "applications". Conceptually "definitions"

would be found in Pragmas at a top-level block location, and

"application" of those definitions would be found inside other

blocks. Greg identified that the current constructs do not prohibit

this interpretation, and that the interpretation of Pragma usage is

entirely in the context of the application anyways. Bruce is going to

think more about this.

 

clause 100 - 'length'

The general sentiment of the group is that the 'Length' attribute is

troublesome and should be eliminated. The consensus of the Working

Group is that a strong definition centered around the use of arrayed

constructs for SignalVariables would provide sufficient capability

without burdensome overhead.

 

Greg identified that the Length attribute was (in his consideration)

more of a 'depth' value rather than a 'width' value, allowing multiple

WFCs to be assigned to a single index. Jason identified that this

could be supported (if necessary) by a second bracketed construct and

2-D array, which could be a direct extension to the current constructs

if truly needed.

 

Greg identified that for the bracketed construct to be functional, the

ability to *implicitly* apply values to all indexes of a SignalVariable

needs to occur as shown on line 115. This is different than current

dot-zero behavior but isn't a problem to be supported for

SignalVariables.

 

The Working Group requests that clause 100 be regenerated with the

agreed changes to eliminate the examples here that use Length, and

present a cohesive example of assigning values to an arrayed

SignalVariable only.

 

Greg recommends that the following paragraph be added someplace in the

SignalVariables definitions as well:

 

  SignalVariables may be declared as either a single entity, or

  consist of a bracketed declaration. It is an error to access a

  bracketed index that is outside the declared range of a bracketed

  SignalVariable. A SignalVariable consumes one WFC for each index

  when assigned a wfc-list. When declared as a bracketed

  SignalVariable, a reference to that SignalVariable without brackets

  is equivalent to a reference of that SignalVariable across the

  declared bracketed range of that SignalVariable.

 

clause 101

There was not disagreement here, but the request was made to complete

the context of this example and identify exactly when there was a

conflict with variable and group names, and when there wasn't.

 

Greg recommends adding the following for discussion next time:

 

117: Signals { FOO In; }

     SignalGroups { FEE = 'A+C'; }  // unnamed SignalGroup block

118: SignalGroups G { FOO = 'A+B+C'; }

119: Variables V { SignalVariable FOO[1..3]; SignalVariable FEE; }

 

     PatternBurst A {

        SignalGroups G; // FOO is a SignalGroup; Signal FOO is hidden

                        // FEE is a SignalGroup

     }

     PatternBurst B {

        Variables V; // FOO is a SignalVariable; Signal FOO is hidden

                     // FEE is a SignalVariable; SignalGroup FEE is hidden

     }

     PatternBurst C {

        SignalGroups G;

        Variables V; // ERROR: FOO is in conflict between these named blocks

     }

 

Jason opened the discussion here about the ability to reference across

namespaces, for example to reference a variable in a named Variables

block using a construct like "V:FOO". This is when the discussion of

persistence of value started. Greg identified that local variables (in

named Variable blocks) do not exist except under a PatternBurst

context. It was identified that given this behavior, the only context

where it might be useful to access a 'hidden' variable is where that

variable is global and has been hidden locally (perhaps even by a

SignalGroup reference in that local context). It may be useful to

define a construct to support accessing the global reference, for

instance, GLOBALSIGNAL:FOO, or GLOBALSIGNALVARIABLE:FOO, when that

reference has been masked by a local declaration. However, it was

identified that this issue can be addressed by careful naming

considerations as well and may not need a constructural

solution. Yet.

 

clause 102

The Working Group accepted this behavior, with the additional

elaboration that comparisons of Signals, SignalGroups, and

SignalVariables are performed against WaveformCharacters only and are

purely textual comparisons. This means (a) that these comparisons are

not performed against 'state' values even if the reference has a

current state value that matches, and (b) these comparisons pass only

when the last-assigned WFC is the same text as the WFC being compared

- a comparison doesn't pass even if the waveforms defined by two

different WFCs are identical.

 

After presentation of the second example here (the Substitute

comparison), the Working Group requested that in ADDITION TO passing

the 'interpreted WFC' condition, this test should also pass if the

comparison is made to the current WFC assigned (in this case, the 'S'

wfc). The following additional line was requested:

 

139: If 'SIG==H' {} // test for the substitute value returned

140: If 'SIG==S' {} // test for the current WFC value too

 

Both of these tests are considered valid -- one tests against the

mapped value returned and the other tests against the current WFC

assigned.

Meeting adjourned at 11:35 PST.


Next meeting

next phone meeting Mar 13.

 

AIs

[AI1] Tony update issues doc with changes above.