ISSUE 71

Number 71
Category errata
Synopsis 26.6.26: Indexed part-selects (+: and -:) do not have
State lrmdraft
Class errata-ptf
Arrival-DateJul 07 2002
Originator Dennis Marsa (drm@xilinx.com)
Release 2001b: 26.6.26
Environment
Description
Indexed part-selects (+: and -:) do not seem to have
a representation in VPI.

Is the vpiConstantSelect property of vpiPartSelect objects
relevant? That is,

vpiConstantSelect == false ==> indexed part-select
vpiConstantSelect == true ==> regular part-select

But, how does one distinguish +: from -:?

============================================================

Steven Sharp wrote:

Fix
Modify the section 26.6.26 as per the diagram
http://www.verilog-2001.com/pli_errata/
See vpi_expressions1.pdf

Also add the following to annex G:

1) Immediately after the define for vpiNamedEventArray (line 177):

#define vpiIndexedPartSelect 130 /* Indexed part-select object */

2) Immediately after the define for vpiTaskFunc (line 239):

#define vpiBaseExpr 131 /* Indexed Part Select's base expression */
#define vpiWidthExpr 132 /* Indexed Part Select's width expression */

3) Immediately after the define for vpiModPathHasIfNone (line 482):

#define vpiIndexedPartSelectType 72 /* Index part-select type */
#define vpiPosIndexed 1 /* +: */
#define vpiNegIndexed 2 /* -: */


Audit-Trail

From: Shalom Bresticker <Shalom.Bresticker@motorola.com>
To: ptf-bugs@boyd.com
Cc:
Subject: Re: errata/71: PROPOSAL - 26.6.26: Indexed part-selects (+: and -:) do
not have
Date: Tue, 17 Jun 2003 16:29:53 +0300

I am not very familiar with the conventions of section 26.6,
but shouldn't 26.6.26 contain an explanation of the meaning of
vpiIndexedPartSelectType ?

Shalom


> Modify the section 26.6.26 as per the diagram
> http://www.verilog-2001.com/pli_errata/
> See vpi_expressions1.pdf
>
> Also add the following to annex G:
>
> 1) Immediately after the define for vpiNamedEventArray (line 177):
>
> #define vpiIndexedPartSelect 130 /* Indexed part-select object */
>
> 2) Immediately after the define for vpiTaskFunc (line 239):
>
> #define vpiBaseExpr 131 /* Indexed Part Select's base expression */
> #define vpiWidthExpr 132 /* Indexed Part Select's width expression */
>
> 3) Immediately after the define for vpiModPathHasIfNone (line 482):
>
> #define vpiIndexedPartSelectType 72 /* Index part-select type */
> #define vpiPosIndexed 1 /* +: */
> #define vpiNegIndexed 2 /* -: */
>
> http://boydtechinc.com/cgi-bin/issueproposal.pl?cmd=view&pr=71

From: Shalom.Bresticker@motorola.com
To: ptf-bugs@boyd.com
Cc: 1364@accellera.org
Subject: Re: errata/71: PROPOSAL - 26.6.26: Indexed part-selects (+: and -:)
do not have VPI representation
Date: Wed, 26 Nov 2003 16:18:50 +0200 (IST)

With respect to the diagram, the arrow from "operation" to "expr" and
tagged "vpiOperand" has a multiple tip in the original (-->>), but only
a single tip in the proposal (-->). This looks like a typo?

Similarly, "expr" in the original are italicized, but non-italicized
in the proposal.

What is correct?

Thanks,
Shalom


On Mon, 16 Jun 2003 etf@boyd.com wrote:

> Modify the section 26.6.26 as per the diagram
> http://www.verilog-2001.com/pli_errata/
> See vpi_expressions1.pdf
>
> http://boydtechinc.com/cgi-bin/issueproposal.pl?cmd=view&pr=71

--
Shalom Bresticker Shalom.Bresticker@motorola.com
Design & Reuse Methodology Tel: +972 9 9522268
Motorola Semiconductor Israel, Ltd. Fax: +972 9 9522890
POB 2208, Herzlia 46120, ISRAEL Cell: +972 50 441478

Unformatted







a representation in VPI
From: Shalom.Bresticker@motorola.com
Reply-To: Shalom.Bresticker@motorola.com
X-Send-Pr-Version: gnatsweb-2.5 (1.2)
X-GNATS-Notify:

a representation in VPI
>Is the vpiConstantSelect property of vpiPartSelect objects
>relevant? That is,
>
> vpiConstantSelect == false ==> indexed part-select
> vpiConstantSelect == true ==> regular part-select

Apparently this is the case.

>But, how does one distinguish +: from -:?

Well, it shouldn't have mattered the way I thought it was supposed to work,
but somebody added extra flexibility that causes problems. I thought
that the base expression was always supposed to be the left index, since
it appears at the left position. Then the direction would be determined
by the direction of the declaration, and the choice of +: or -: would have
to be consistent with that. However, it looks like the spec allows the
base to be either the left or right index, based on the direction of the
select versus the direction of the declaration. So now you can't tell what
is going on from VPI unless you can determine the direction of the select.

So we need to either eliminate this extra flexibility (which isn't really
needed), or add another attribute to part selects in VPI.

============================================================

Dennis Marsa wrote:

> >Is the vpiConstantSelect property of vpiPartSelect objects
> >relevant? That is,
> >
> > vpiConstantSelect == false ==> indexed part-select
> > vpiConstantSelect == true ==> regular part-select
>
> Apparently this is the case.

Actually, this doesn't seem sufficient when the base expression
is actually constant, i.e.

reg [31:0] vector;

vector[31-:8] // both base and width are constant, thus vpiConstantSelect == true,
// but this is not a regular part-select

> >But, how does one distinguish +: from -:?
>
> Well, it shouldn't have mattered the way I thought it was supposed to work,
> but somebody added extra flexibility that causes problems. I thought
> that the base expression was always supposed to be the left index, since
> it appears at the left position. Then the direction would be determined
> by the direction of the declaration, and the choice of +: or -: would have
> to be consistent with that.

That makes sense to me.

> However, it looks like the spec allows the
> base to be either the left or right index, based on the direction of the
> select versus the direction of the declaration. So now you can't tell what
> is going on from VPI unless you can determine the direction of the select.
>
> So we need to either eliminate this extra flexibility (which isn't really
> needed), or add another attribute to part selects in VPI.

Given the counterexample above, it would seem a new property (properties??)
of part selects is needed at the very least to determine whether a part select
is an index part select, and which type of indexed part-select.

Or, alternatively, entirely new VPI objects to represent +: and -: could be
defined.

============================================================

Michael McNamara (mac@verisity.com) wrote:

I suggest that we add an errata that 'corrects' the specification of
vpiConstantSelect to be an integer, and the possible values of
vpiConstantSelect to be from the set:
{
VPI_POSITIVE_INDEXED_PARTSELECT,
VPI_NEGATIVE_INDEXED_PARTSELECT,
VPI_CONSTANT_PARTSELECT
};

============================================================

Steven Sharp (sharp@cadence.com) wrote:

>Actually, this doesn't seem sufficient when the base expression
>is actually constant, i.e.
>
> reg [31:0] vector;
>
> vector[31-:8] // both base and width are constant, thus vpiConstantSelect
== true,
> // but this is not a regular part-select

I think it is time to let Charles answer this, instead of me trying
to recall what he said. Either vpiConstantSelect was supposed to be
false in this case (making it a poor choice of names for the property),
or VPI was supposed to convert the constant case into an equivalent
non-indexed part select and return the range values for that, or
something else that I didn't understand at the time.

>Given the counterexample above, it would seem a new property (properties??)
>of part selects is needed at the very least to determine whether a part select
>is an index part select, and which type of indexed part-select.
>
>Or, alternatively, entirely new VPI objects to represent +: and -: could be
>defined.

This may have been another situation where the extension was changed after
the PLI task force had dealt with it, and they didn't compensate for the
change. The original proposal didn't have two variations (though it had
other more serious problems).

Hosted by Boyd Technology