BTF: B14 Proposal to review

From: Anders Nordstrom (andersn@nortel.ca)
Date: Tue Jun 02 1998 - 13:14:46 PDT


BAD MSG:
Dear BTF members,
ontent-Length: 3136
X-Lines: 127
X-Status: $$$$
X-UID: 0000000504
Status: RO

Please review the enclosed proposal for Behavioural Enhancement B14
prior to our June 4 conference call.

Thanks,
        Anders

<p><p>+-----------------------------------------------------------------------+
| Anders Nordstrom |
| Senior ASIC Designer |
| |
| Northern Telecom Ltd. Email: andersn@nortel.ca |
| P.O. Box 3511 Station C Phone: 613-763-9186 |
| Ottawa, Ontario K1Y 4H7 Fax: 613-763-2626 |
+-----------------------------------------------------------------------+

<p><p><HTML>
<HEAD>
<TITLE> B20 </TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">

<BR>
<HR SIZE=5 NOSHADE>

<H2> B14 - Initial assignments in register </H2>

<TABLE BORDER COLS=2 WIDTH="75%" >
<TR><TD>
Section: </TD><TD> 6
</TD></TR><TR><TD>
Date Submitted: </TD><TD> 970319
</TD></TR><TR><TD>
Requestor: </TD><TD> adamk@cyrix.com (Adam Krolnik)
</TD></TR><TR><TD>
Status: </TD><TD> Proposal
</TD></TR><TR><TD>
Analyzed by: </TD><TD> Anders Nordstrom
</TD></TR><TR><TD>
Synthesizable: </TD><TD> No
</TD></TR>
</TABLE>

<H3> Details </H3>

Initializers on registers. <BR>
It is tedious and verbose to have to write:
<PRE>
reg[3:0] a;
initial a = 4'h4;
</PRE>
Rather a better combination would be:
<PRE>
reg[3:0] a = 4;

From: mac@silicon-sorcery.com
Date: Wed, 19 Mar 97 14:22:50 PST
</PRE>
        not unreasonable. <BR>
<BR>
I would offer medium support for this proposal, with the note that
since initial blocks already aren't synthesizeable, this simply adds
more cruft for synopsis to ignore. You might want to consider:
<PRE>
reg [31:0] a = 0, b = 1, c = 2;

mac
</PRE>
This feature would not be synthsizable (it is not synthesizable in VHDL,
either) but the feature is nice for testbenches.

VHDL permits initial assignment to registers and I consider it to be a nice
feature. I would support the version that Mac has shown above.
<BR>
Cliff Cummings E-mail: cliffc@europa.com <BR>

<p><H3> Proposal </H3>

Create a new section: Section 6.2.1 "The register declaration assignment"
with the following text: <P>

The register declaration assignment is a special case of procedural
assignment in that it assigns a value to a register. It allows an
initial value to be placed in a register in the same statement that
declares the register. <BR>
The assignment does not have duration; instead, the register holds the
value until the next assignment to that register."

Add the following example after 6.2.1:

Example <BR>
Declare a 4 bit register and assign it the value 4.
<PRE>
reg[3:0] a = 4'h4;
</PRE>
This is equivalent to writing:
<PRE>
reg[3:0] a;
initial a = 4'h4;
</PRE>

Create syntax box: "Syntax 6-2 - Syntax for register declaration assignment"
on page 54 with the BNF listed below.

Change Annex A.2 on page 595 from:

reg_declaration ::= <B>reg</B> [range] list_of_register_identifiers;
<BR> to: <BR>
<PRE>
reg_declaration ::=
                  reg [range] list_of_register_identifiers;
                | reg [range] list_of_reg_decl_assignments;

list_of_reg_decl_assignments ::= reg_decl_assignment { , reg_decl_assignment}

reg_decl_assignment ::= register_name = constant_expression

</PRE>

<HR SIZE=5 NOSHADE>
</BODY>
</HTML>



This archive was generated by hypermail 2.1.4 : Mon Jul 08 2002 - 12:52:54 PDT and
sponsored by Boyd Technology, Inc.