[sv-bc] Two new issues (problem with SV-BC73 and sequential function blo ck)


Subject: [sv-bc] Two new issues (problem with SV-BC73 and sequential function blo ck)
From: Jacobi, Dan (dan.jacobi@intel.com)
Date: Thu Mar 20 2003 - 00:50:27 PST


Hello All,

I’m editing the BNF update that will be sent to Stefen. During this process
I found two new issues.

1. The issue labeled as SV-BC73
(http://www.eda.org/sv-bc/hm/0508.html)
that was accepted on the 17th of March is problematic

The proposal was :
                Under A.8.7
                
                ADD
                    implicit_base_binary_number ::= '0 | '1 | 'X | 'x | 'Z |
'z
                
                REPLACE
                    binary_number ::= [ size ] binary_base binary_value
                WITH
                    binary_number ::= [ size ] binary_base binary_value
                                    | implicit_base_binary_number
                
However The BNF (under A.8.4) already parses the ‘0 , ‘1 , ‘x , ‘z auto-fill
literals under the primary and constatnt_primary productions

constant_primary ::=

number

| ’0 | ’1 | ’z | ’Z | ’x | ’X

primary ::=
number

| ’0 | ’1 | ’z | ’Z | ’x | ’X

The BNF also adds the following production under A.8.7

number ::=

| binary_number

This means that there are two ways to parse the auto fill literals for
example the following statement can be parsed in two ways :
                
        My_struct = ‘0;

Also the following cast can now be parsed
‘1 ‘ (a[10:0])

I suggest we cancel SV-BC73

2. function begin – end blocks
Section 8.7 in draft 3 reads:
 “SystemVerilog allows a matching block name to be specified after the block
end”
The BNF A.6.3 Reads
par_block ::=
fork [ : block_identifier ] { block_item_declaration } { statement } join
join_keyword [ : block_identifier ]
seq_block ::=
begin [ : block_identifier ] { block_item_declaration } { statement } end [
: block_identifier ]

However function sequential blocks can not add a matching name
function_seq_block ::=
begin [ : block_identifier { block_item_declaration } ] { function_statement
} end

My suggestion (might be pushed to 3.2)
Under A.6.3

REPLACE
function_seq_block ::=
begin [ : block_identifier { block_item_declaration } ] { function_statement
} end

function_seq_block ::=
‘begin’ [ ‘:’ block_identifier { block_item_declaration } ] {
function_statement }
                ‘end’ [ ‘:’ block_identifier ]



This archive was generated by hypermail 2b28 : Thu Mar 20 2003 - 00:51:06 PST