Velocity Reviews > VHDL > Locally static?!

Locally static?!

Taras_96
Guest
Posts: n/a

 05-02-2005
Ok, can anyone tell me why:

constant B4 : unsigned := "010";
constant CONST : unsigned := B4 + "001"; --is NOT locally static

constant B4 : integer := 2;
constant CONST : integer := B4 + 1; -- is locally static

Taras

Alan Peter Fitch
Guest
Posts: n/a

 05-02-2005
Taras_96 wrote:
> Ok, can anyone tell me why:
>
> constant B4 : unsigned := "010";
> constant CONST : unsigned := B4 + "001"; --is NOT locally static
>
> constant B4 : integer := 2;
> constant CONST : integer := B4 + 1; -- is locally static
>
> Taras
>

I seem to remember that the process of slicing a vector is considered
non-static, so perhaps the creation of the anonymous subtype of the
unsigned vector makes it non-static. I shall look it up in the standard
when at work.

In the case of the integer, there is no anonymous subtype created as no
subtype of integer if implied.

In the case of unsigned, the vector will deduce its width from the size
of B4.

regards
Alan

--
Alan Fitch (at home)
reverse: org dot ieee dot apfitch

Duane Clark
Guest
Posts: n/a

 05-02-2005
Taras_96 wrote:
> Ok, can anyone tell me why:
>
> constant B4 : unsigned := "010";
> constant CONST : unsigned := B4 + "001"; --is NOT locally static

I think because CONST is an unconstrained array. Try
constant CONST : unsigned(2 downto 0) := B4 + "001";
or some such.

>
> constant B4 : integer := 2;
> constant CONST : integer := B4 + 1; -- is locally static
>
> Taras
>

Jim Lewis
Guest
Posts: n/a

 05-16-2005
Taras,
> constant B4 : unsigned := "010";
> constant CONST : unsigned := B4 + "001"; --is NOT locally static
>
> constant B4 : integer := 2;
> constant CONST : integer := B4 + 1; -- is locally static

From the LRM:
7.4.1 Locally static primaries
An expression is said to be locally static if and only if every
operator in the expression denotes an implicitly deﬁned operator
whose operands and result are scalar and if every primary in the
expression is a locally static primary, where a locally static
primary is deﬁned to be one of the following: ...

Integers are scalar, arrays are not.

The VHDL-200X effort has proposals that modify this.
Two important changes:
1) Strike the requirement for the operand and result to be scalar. (FT22)
2) Include operators defined in std_logic_1164 and numeric_std along
with implicitly defined operators in consideration for being
locally static. (FT23)

The VHDL-200X working group is looking for corporate support
to fund the LRM editing effort. Funding will determine the
question as to when the features will be available.
myself (VASG vice-chair) or Stephen Bailey (VASG chair).

Best Regards,
Jim Lewis

>
> Taras
>

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~
Jim Lewis
Director of Training (E-Mail Removed)
1-503-590-4787

Expert VHDL Training for Hardware Design and Verification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~