Minutes of the 01/06/03 SV_BC Meeting

 

This is my list of attendees and voting status. Please submit corrections:

 

(aaaaaa________)                      Johny Srouji (Intel) *

(aaa__aaa_aaaaa)                      Cliff Cummings (Sunburst Design) *

(_a___aaaaaaaaa)                      David Smith (Synopsys)

(aaaaaaaaaaaaaa)                      Karen Pieper (Synopsys) *

(aaaaaaaaaaaa_a)                      Kevin Cameron (NSC) *

(_a_aaaaaaaaa_a)                      Steven Sharp (Cadence) *

(a___aaaaa_aaa_)                      Dennis Brophy (Model Technology) *

(__a__a___aaaa)                       Tom Fitzpatrick (Co_Design)

(aa_aaaaaa____a)                      Gord Vreugdenhil (Synopsys) *

(aaaaaaaaa_____)                      Brad Pierce (Synopsys) *

(aaaaaa_a____aa)                      Francoise Martinolle (Cadence) *

(aaa_aa_______a)                      Don Mills (LCDM Engineering) *

(______aa__aa__)                      Mike McNamara (Verisity)

(________aaaaaa)                      Stefen Boyd (Boyd Technology)

(___a_____aa___)                      Medi Mohtashemi (Synopsys)

(_________aa___)                      Paul Graham (Cadence)

(___a_____aaaaa)                      Peter Flake (Co_Design)

(_________aaaa_)                      Simon Davidmann (Co_Design)

(_________aa__a)                      Heath Chambers (HMC)

(__________aaa_)                      Dave Kelf (Co_Design)

(_a_a_______aaa)                      Vasisilios Gerousis (Seimens)

(aaa_a_________)                      Dan Jacobi (Intel) *

(___a__________)                      Stuart Swan (Cadence)

(___a__________)                      Adam Krolnick

(aaaa__________)                      David Rich (Synopsys) *

(___a__________)                      Yong Xiao (Synopsys)

(aa_a__________)                      Jay Lawrence (Cadence) *

(a__a__________)                      Matt Maidment (Intel)

(___a__________)                      Wolfgang Keil (Synopsys)

(__a___________)                      Alec F. Stanculescu (Fintronic)

 

 

* indicates eligible to vote on consensus issues

 

Minutes

 

  • Johny moves that we have a special tele-call on Jan 15 to discuss BNF specific issues. Karen seconds. No opposed. Decision Passes. Meeting time will be 8:30-10:30 am PST.
  • Johny moves that we accept the minutes of 12/09/02 tele-call:
    • Cliff pointed out two corrections:
      • Replace SV-BC18h, SV-BC19i with sv-bc 18h and sv-bc 18i
      • Cliff sent a proposal on Dec 9th

 

            After these corrections, Karen seconds. No opposed. Minutes Pass.

 

  • Review status of issues that were passed to sv-ec, as was communicated by David Smith:

 

            1. Interface scheduling

            2. Interface Usage

            3. Modports

            4. Reference (opaque pointer) mechanism for use with C interface.

            5. Data alignment

 

The first three items have been placed in a delayed status. SV-EC will need to review these at the next meeting and make a decision as to what to do with them. For now they are not part of 3.1.

Regarding data alignment, it was agreed that its definition is not clear. The question raised was do we have anyone who wants to champion the need for packed arrays of real numbers? No actions were scheduled and we will wait for a champion. The issue is whether real numbers can go into packed arrays. No further actions are required from sv-ec at this stage.

 

On the Opaque Pointer mechanism, Karen moves that Kevin is the main driver will take the ownership to be the champion in the ec committee. Kevin will also figure out what needs to be done.

 

 

  • Regarding Unicode issue: This is based on the entry in Table 3-1 of both the 3.0 LRM and the 3.1 LRM Draft1 describing the char type:

 

2-state C data type, usually an 8 bit signed integer (ASCII) or a short int (Unicode).

 

The issue was documented by Jay Lawrence as follows (the issues were documented with char being an 8-bit (ASCII) or a 16-bit (Unicode) character):

 

3.1) Making char an 8-bit type makes byte redundant.

 

3.2) If char is 8 bits, how does one specify a Unicode string literal?

 

3.3) If the string type is defined as an array of char then the run-time will have to provide two string implementations, an ascii and a unicode.

 

3.4) There is no standard mechanism (in the language) that allows users to specify ascii or unicode.

 

3.5) Can one simulation contain both unicode and ascii char's?  If so how do users specify which, and what are the conversion rules, if any? It seems that leaving the unicode type unspecified closes the door on any such implementation.

 

3.6) There's plenty of legacy code in Verilog that assumes string literals are streams of 8-bit integers.The standard 2001 defines string literals as:

 

"A string is a sequence of characters enclosed by double quotes ("") and contained on a single line. Strings used as operands in expressions and assignments shall be treated as unsigned integer constants represented by a sequence of 8-bit ASCII values, with one 8-bit ASCII value representing one character."

 

3.7) In the SV-CC committee, the C interface proposes support of the string type as a C "char *", but that will break when Unicode is being used.

 

If these issues are not addressed, most vendors are likely to provide char as an 8-bit type, which will de-facto standardize char to be 8 bits.

 

A related issue is that nowhere does it define the encoding except to refer to what seems to be UTF-16 (a character represented by 1 or 2 16 bit words). Most of the OpenSource community have adopted UTF-8 (which can be from 1 to 3 bytes). This is done to provide something that is compatible with ASCII in size but extensible to the full Unicode character set. A possibility for handling this. Another option could be to define char as 8 bits and wchar as UTF-16 or UTF-8. Another option is we decide that Unicode is NOT supported.

 

This topics was summarized by Jay Lawrence. The question raised was whether we want to handle Unicode as ASCII coding set.

Jay moved that all references to Unicode are removed. Wording of char and byte will be identical in table 3-1.

 

The same remark was made at the SV-BC meeting: as we have identical type definition with two new keywords. This is very unfortunate but because the bc guidelines are not to remove anything we may have to leave the System Verilog language like that. Karen will be checking if we can override this rule for this case. We should know by next meeting.

 

The new proposed language is: “2-stace C compatible data type, 8 bit signed integer”.  Jay seconds. Decision passed.

 

 

  • Open Action Items Review:
    • Karen to arrange Logistics of face-to-face on 1/22/03 and BNF meeting:
      • Status: Karen is taking care of this. All will confirm their attendance through email
    • Gord to see if a member of the VCS team will write up VCD descriptions for all types.
      • Status: A commitment for time exists.  Proposal will come in late (1/31/03 at earliest).
    • Dennis (Keith Gover (Model Tech)) to make a proposal on DSM.  With Dave Roberts at Cadence.
      • Status: no update
    • Peter will clarify extern fork/join semantics. In particular: Disabling calls for joined tasks needs to be clarified. Need to document the behavior for modules that do not define interface tasks.   (SV-BC16)
    • Peter will develop language to address issues with time variables and literals. (SV-BC8-5)
    • Peter will propose language for what can and cannot appear in a constant expression. (SV-BC12)
      • Status: (wrt all open actions owned by Peter): a reply was sent by Peter and was attached to the 01/06/03 meeting agenda. Johny moves that we defer discussion on these items to F2F, where Peter will be present. All agreed.
    • Gord will make a proposal to describe the granularity of error checking on logic types in the presence of mixed continuous and procedural assignments. (SV-BC18)
      • Status: Expected out in 1-2 days after this meeting.
    • Dave Rich / Cliff will make a proposal describing port directions and/or collapsing are possible with logic type and the associated restrictions. (SV-BC18g). The proposal is to make strict direction checking for the SystemVerilog Verilog ports.  This raises an open issue for structured wires.
    • Dave / Cliff will propose some language indicating that when a logic type has an initializer, all assignments must be procedural. (SV-BC18h)
    • Dave / Cliff will propose some language indicating that logic types cannot be driven by primitives that pass strength: MOS switches, etc. (SV-BC18i)
    • Johny will check with the EC as to why they need type use before definition.  We will discuss this in our next meeting. (SV-BC8-3)
      • Status: An Email has been sent to David Smith and his reply was discussed. Main requirement was cross reference
    • Gord will develop wording for restricting type use before definition, especially with respect to generate and upward defparams.
    • Dave will develop language to clarify the description of time precision and time scale. (SV-BC2)
    • Steven will develop language to clarify the meaning of type "matching" in structural literals. (SV-BC7c)
    • Stu will implement the global replacement of masked with 4-state and unmasked with 2-state. (SV-BC8-7)
      • Status: Karen got Stu's agreement.
    • Karen will propose language correcting the standards conversion between shortreal and integer.  (SV-BC9-10)
      • Status: Done
    • Gord will propose shortreal equivalents of $bitstoreal and $realtobits (SV-BC9-10) And incorporate Karen's language correcting the shortreal and 32 bit object conversions.
    • Gord will propose language describing the implicit sensitivity list for always_comb, noting that always_comb is equivalent to always <statement> @(sensitivity) (SV-BC21)
    • Karen will develop language for auto-increment. (SV-BC6), Karen will add an example and send out for an email vote.
      • Status: Karen has sent the following proposal:

 

Increment decrement proposal:

 

In Section 7.3:

 

REPLACE: SystemVerilog also includes the C incrementor and decrementor operators ++i, --i, i++ and i-- (provided there is no timing control). These can be used in expressions without parentheses. These increment and decrement operations behave as blocking assignments.

 

WITH: SystemVerilog also includes the C incrementor and decrementor operators ++i, --i, i++ and i-- (provided there is no timing control). These can be used in expressions without parentheses. These increment or decrement operations behave as blocking assignments.

<new paragraph>

The ordering of assignment operations relative to any other operation within an expression is undefined.   An implementation may warn whenever a variable is both written and read-or-written within an integral expression or in other contexts where an implementation cannot guarantee order of evaluation.  For example:

 

      i = 10;

      j  = i++ + i--;

 

    • Karen will notify the guys at eda.org that the Web pages are gobbling the pdf files.

 

 

 

 

è Our next meeting is Jan 15, 2003 - specific for BNF issues