Phone Conference P1450.1 Working Doc Subgroup

Thurs Feb 13, 10:00 am PST

 

Attendees:

Bruce Kaufmann
Peter Wohl
Tony Taylor (chair)
Greg Maston (scribe)
Daniel Fan
Jim Teisher
Doug Sprague
Jason Doege

 

Documents

http://grouper.ieee.org/groups/1450/private/p1450.1-D15.pdf (Jan 16, 2003)
http://grouper.ieee.org/groups/1450/dot1/minutes-2003-01-30.html
http://grouper.ieee.org/groups/1450/private/1450.3-D07.pdf

 

 

Agenda

- continuation of items from last meeting:

        p24 - clause 10 - variables usage (final decision on this issue)

        p69 - comparing signal variables to wfcs

        p72 - using integer variables with hex data

        p73 - example of chaining scan chains

 

- new issue

        Pragma block - move from STIL.3 to STIL.1

        Justification is to define operation of UserFunctions

        See STIL.3 for Pragma syntax (link above)

Example:

        UserFunction foo;      

        Pragma Tcl {* foo ....... *}

        Pattern P { Loop 'foo(x)' {} }

 


Meeting discussion

 

pg 24 - Variables -

Greg recapped last weeks discussions. Tony voiced a concern about this

behavior, in that variables local to a pattern need to propagate

'down', probably to the pattern reference, in an integration flow that

adds additional patterns into a PatternBurst. This can be a

maintenance issue for pattern development. Also there's an issue that

variables are instantiated at the 'use' level rather than as part of

the block itself, which makes the instantiation process less clear.

 

At this point, due to some other interruptions, a process change

request was made to Tony: add the stil website password into the

meeting announcements, so phone numbers and passwords are all in one

place; [AI1] to Tony.

 

The Working Group accepted to remove the AllowAcrossPatterns attribute

in favor of this proposal to support variable scoping in conjunction

with Variable block naming and referencing scopes. [AI2] to Tony to

remove AllowAcrossPatterns and to add words in support of

scoping-by-block-references.


 

issue 2 from last weeks minutes -

As part of covering Variables issues, Issue 2 at the end of last

meeting's minutes was discussed. In that issue, Greg raised a concern

about assigning values to variables and signalvariables mixed with

signal references to those variables, in the same Vector or Condition

statement. The issue is that currently there is no stated evaluation

order on statements in the V{} or C{}, nor does evaluation order

affect the expression EXCEPT in this situation where variables are

both l-val and r-val (on the left side of an assignment, and on the

right side of an assignment) in the same set of statements.

 

The Working Group agreed to make it an error to use variable

references in multiple assignment statements, where there are separate

left-hand and right-hand applications of that variable, in a single

Vector or Condition, or any other context where order of evaluation

has not been defined. [AI3] to Tony to add this restriction.

 

The unambigious solution to this problem is to always put the

assignments in separate Condition statements.

 

BUT NOTE (Greg added this while typing the minutes): it is not an

error to have the same variable on both sides in a SINGLE statement,

for example:

 

C { 'var = var+1'; }


 

Signals and WFCs comparisions - pg 69

Question is: can we compare a signal against a WFC? Currently the

definition of boolean expression would tend to lean toward

interpreting that this was not allowed, and Greg indicated that that

was his original motivation in order to limit the needed definitions

of "what was equal". Greg identified several issues here:

(a) WFC references can look like alot of different things, and are

easily mis-parsed to be integer values, STIL keywords, or other things

of the wrong type. This is an issue today in the pattern area, but due

to limitations of where things can appear it can be addressed. Moving

WFC-lists into the expression arena opens a can of parse worms.

(b) are we comparing against WFCs, or comparing against the waveform

functionality defined by a WFC? For example, if WFC "1" and "2"

define identical waveforms, and a signal is currently assigned WFC

"1", is 'sig == 2' True or False?

(c) signals and signalgroups can be assigned mult-bit data values. How

do we compare in these contexts?

 

It was also identified that any scenario that needs to compare WFCs,

can do an equivalent operation by maintaining a parallel variable

value and performing the comparison against that value. The

disadvantage of this solution is that it requires redundant constructs

to be maintained for the purpose of comparison.

 

After some additional discussion, with no definitive resolution, the

proposal was made for all members of the Working Group to go out and

generate applications to demonstrate the need for this

capability. [AI4] to all.

 

 

Hex data - pg 72 -

The example on this page featured an assignment of 'FF' to an integer

variable. The Working Group agreed that this was permissable but only

with the addition of a \h to identify the following value to be

hexadecimal. Tony took [AI5] to add the capability to support \h in

integer variable assignments.


 

Scan chain chaining - pg 73 -

The current example features two Shift blocks in the macro definitions

of each of the cores after integration into a bigger design, to

consume the scan-bits of the other core as appropriate. Problem with

this example is that the behavior of a Shift block with no argument

values is not really defined.

 

Several alternate proposals were made, in particular, using a Loop

construct with either a constant or variable (data-dependent) number

of loops; problem with data-dependency here is that the data is

actually coming from a parallel pattern context and isn't part of the

data present in this pattern context. Another proposal was the use of

the BreakPoint to facilitate maintaining synchronization (which Greg

identified still needs semantic definition in the LockStep section to

be used this way).

 

After some discussion, a proposal was made to augment the semantics of

a Shift in the context of parallel-patterns in lockstep, to support no

arguments in that Shift as having the semantic interpretation that the

Shift is dictated by data being present on some other Shift data in

parallel to this.

 

Both the Loop-count proposal and the Shift-semantic proposal seem

to have merit. The group agreed to ponder these alternatives and make

a decision at the next meeting.

 

 

Pragma movement proposal

Tony presented the issue of moving the Pragma block from .3 into .1,

in order to support a mechanism to define UserFunction bodies, as

shown in the Agenda above. The current requirement satisified by

moving the Pragma to this spec is to provide a mechanism to define

UserFunctions. The current requirements in .3 for Pragma capability is

unchanged, and since .3 references .1 it would have the Pragma

definitions available.

 

General concern was raised about the potential for over-use of a

Pragma block, and a proposal to have a strongly-worded recommendation

that users limit occurance of these blocks was made. There was

tentative acceptance by the Working Group of supporting the Pragma

block here pending the addition of this definition into the working

draft by Tony for review next time; [AI6] to Tony.

 

Meeting adjourned at 11:20 PST.

Next meeting

next phone meeting Feb. 13.

 

AIs

[AI1] Tony - add stil website pswd-info to meeting calls.

[AI2] Tony - remove AllowAcrossPatterns and add new scoping rules

[AI3] Tony - add wording to disallow variables on both sides of =

[AI4] Working Group - generate examples that require WFC-comparisons

[AI5] Tony - add support of \h in integer-variable contexts.

[AI6] Tony - add Pragma to this spec for review next time.