RE: [sv-ac] call to vote on 1549

From: Lisa Piper <piper_at_.....>
Date: Fri Aug 17 2007 - 19:38:48 PDT
Thanks for the comments Bassam. Responses below. I seem to be having
email issues because I wrote this last night.  It seemed to have gotton
stuck in the outbox.

 

Lisa

 

-----Original Message-----
From: owner-sv-ac@eda.org [mailto:owner-sv-ac@eda.org] On Behalf Of
Bassam Tabbara
Sent: Tuesday, August 14, 2007 6:02 PM
To: john.havlicek@freescale.com; sv-ac@eda-stds.org
Subject: RE: [sv-ac] call to vote on 1549

 

I vote yes -- assuming item 4 *** below is just an oversight and will be

effectively stricken.

 

Friendly amendments:

 

1) Actual arguments that consist of expressions are checked at compile

time for compatibility

with the types of the corresponding formal arguments. 

 

>>> What level of compatibility (see 6.22) ? Say *cast compatibility* to

be clear (even if 2nd sentence talks of cast).

[Lisa Piper >>>] Good addition. I also added a reference to the
definition of cast compatible:

 

"Actual arguments that consist of expressions are checked at compile
time for cast compatibility (refer to section 6.22.4) with the types of
the corresponding formal arguments."

 

2) Parentheses are always implicit for passing expressions as arguments.

 

>>> rewrite to: "When passing ..... parentheses ..."

 

[Lisa Piper >>>] Done.

 

3) Argument passing is done by substitution (refer to the section on

formal semantics Refer to [Note to

Editor - I think this is F.2.3] Parentheses are always implicit for

passing expressions as arguments.

 

>>> formal semantics write-up strikes out substitution in favor of

*rewriting*. Use "cast-compatible rewriting/replace" instead

[Lisa Piper >>>] another good comment, but I am keeping the word
substitute for Doron.  How is this

 

Argument passing is done by substituting each argument with the actual
argument cast to the specified type, and using the rewrite algorithm
defined in [Note to Editor - insert reference to the section on the
rewrite rules here - I think this is F.2.3] to flatten property and
sequence instances. When passing expressions as arguments, parentheses
are always implicit.

 

 

4) Also arguments to these sequences shall be static; automatic

variables used as sequence arguments

shall result in an error.

 

>>> which sequences ? Sentence needs re-wording

>>> rewrite to: Arguments .... . Automatic ...

>>> *** Do we really want to have this restriction ? Why ? This is

extreme. If you mean the operand types we have then fine, this is listed

there strike this out -- in its current form it covers waaaay more than

the operand type restrictions in 16.5.1.

[Lisa Piper >>>] I chose to simply strike this. The next paragraph
references the valid data types section so I think that covers what was
intended. But I'm curious what the original statement implied that you
were so against?

 

5) The supported data types for sequence formal arguments are the types

that are allowed for operands

in assertion expressions (see 16.5.1) and the keyword context. ** The

supported data types for

sequence formal arguments are the types that are allowed for operands in

assertion expressions (see **

 

>>> repetition ....

[Lisa Piper >>>] thanks! 

 

6) 16.5.1). In addition, sequence expressions may be typed using the

sequence type and the

event type. A formal type of sequence requires an actual argument that

is either a Boolean

expression or a sequence expression. An actual arg of type property

would cause an error when the

formal type is sequence.

....

A formal argument of property type can accept a Boolean expression,

sequence expression, or

property expression actual argument. The rules for passing arguments to

properties is the same as

those for sequences. Refer to 16.7.1.

 

>>> I suggest we say something to the effect of cast compatible as a

general statement that we can use for other things in future.

[Lisa Piper >>>] I agree with Doron's comment in that I don't want to
define this. I actually changed it and then decided (after seeing
Doron's comment) that I needed to look more closely. This is an example
of what could be an issue:

 

From 6.24:   "If the expression is assignment compatible with the
casting type, then the cast shall

return the value that a variable of the casting type would hold after
being assigned the expression"  

 

If I cast a boolean to a property, what does tnat mean?  Does that mean
that all aspects of a property are defined, such as the disable iff (for
a boolean expression, the disable iff could be defined as false so it
never happens.)  This is an issue since only the top level property can
have a disable iff.

 

I think we are safer not addressing this issue.

 

 

** formal semantics write-up

[Lisa Piper >>>]Doron and John own all of the following. Consider these
additional comments.

 

7) if e is such an expression, then $var(e) behaves like e in all

respects

except that operations allowed on a reference to or instance of a named

item

declared with the same type as e are also allowed on $var(e). ** In

particular,

any operation that is allowed on a reference to a variable declared with

the

same type as e is allowed on $var(e). **

 

>>> repetition

>>> do we want to mention type compatibility here or somewhere else in

formal semantics ?

[Lisa Piper >>>] I noticed this was missing when I fixed this above.
Perhaps we should use consistent wording:

 

Argument passing is done by substituting each argument with the actual
argument cast to the specified type, and using the rewrite algorithm
defined in [Note to Editor - insert reference to the section on the
rewrite rules here - I think this is F.2.3] to flatten property and
sequence instances. When passing expressions as arguments, parentheses
are always implicit.

 

s

 

 

7) $var because opera-

tions that are legal on a reference to a formal argument within the body

of a

declaration might no longer be legal when an actual argument expression

is sub-

stituted for the reference to the formal argument

 

>>> use "replaced (with appropriate casting)" or use "rewritten"

 

8) then

the part select operation cannot be applied when e is substituted for v

because

((logic[0:3])'({a,b}))[1:2] is illegal.

 

>>> use "replaced (with appropriate casting)" or use "rewritten"

 

 

Thx.

-Bassam.

 

-----Original Message-----

From: owner-sv-ac@eda.org [mailto:owner-sv-ac@eda.org] On Behalf Of John

Havlicek

Sent: Monday, August 13, 2007 6:22 AM

To: sv-ac@eda-stds.org

Subject: [sv-ac] call to vote on 1549

 

All:

 

This is the call to vote on the proposal for Mantis 1549.

 

The proposal consists of two documents:

 

  1549_new_types_14.pdf

  formal_semantics_arguments_passing.2007-08-06.pdf

 

Please vote if you are eligible.  See the details below.

 

J.H.

 

------------------------------------------------------------------------

--

 

Ballot on Mantis 1549

 

- Called on 2007-08-13, final ballots due by 23:59 PDT on 2007-08-20.

 

 v[xx-xxxxxxxxxxxxxxxxxxxxxxxx-xx] Doron Bustan (Freescale)

 v[xxxxxxxxxxxxxxxxxxxxxxxxxxxx-x] Eduard Cerny (Synopsys)    

 n[---x-xxx---------x-x-xxx-x---x] Surrendra Dudani (Synopsys)

v[xxxxxx-xx-xxxxx-xxx-xxx-------] Yaniv Fais (Freescale)

t[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] John Havlicek (Freescale - Chair)

v[xxxxxxxxxxxxrxxxxxxxxxxxxx-xxx] Dmitry Korchemny (Intel - Co-Chair)

n[-x--xx--xxxxx----------xx-xxxx] Manisha Kulshrestha (Mentor Graphics)

n[-----------xxxxx-------x-xx-x-] Jiang Long (Mentor Graphics)

n[---x--xxx.....................] Joseph Lu (Altera)

n[--------x--x-xx--xx-xxxxxxx-x-] Hillel Miller (Freescale)

v[xxxxxxxxxxx-xxxxxxxx-xxxxxxxxx] Lisa Piper (Cadence)

v[xx-x-xxxxx-x..................] Erik Seligman (Intel)

n[----xxxx-----xxxx-xx----------] Tej Singh (Mentor Graphics)

v[xxxxxx-xxxxxxxxxxxxxxxxxxxxxxx] Bassam Tabbara (Synopsys)

v[xxxx-xxxxxxxxxx...............] Tom Thatcher (Sun Microsystems)

   |------------------------------ attendance on 2007-08-07

 |-------------------------------- voting eligibility for this ballot

|--------------------------------- email ballots received

 

     Legend:

          x = attended

          - = missed

          r = represented

          . = not yet a member

          v = valid voter (2 out of last 3 or 3/4 overall)

          n = not valid voter

                t = chair eligible to vote only to make or break a tie

 

--

This message has been scanned for viruses and dangerous content by

MailScanner, and is believed to be clean.

 

 

-- 

This message has been scanned for viruses and

dangerous content by MailScanner, and is

believed to be clean.

 

 


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Fri Aug 17 19:39:29 2007

This archive was generated by hypermail 2.1.8 : Fri Aug 17 2007 - 19:40:04 PDT