Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > VHDL > warning: vcom-1186

Reply
Thread Tools

warning: vcom-1186

 
 
JK
Guest
Posts: n/a
 
      05-29-2007
Hi,

I was trying example of Peter Ashenden VHDL book:

library IEEE;
use IEEE.std_logic_1164.ALL;
use IEEE.numeric_std.ALL;

entity full_adder is
port (
a, b, c_in : in bit;
c_out, sum : out bit
);
end entity full_adder;

architecture truth_table of full_adder is
begin

with bit_vector'(a, b, c_in) select
(c_out, sum) <= bit_vector'("00") when "000",
bit_vector'("01") when "001",
bit_vector'("01") when "010",
bit_vector'("10") when "011",
bit_vector'("01") when "100",
bit_vector'("10") when "101",
bit_vector'("10") when "110",
bit_vector'("11") when "111";

end architecture truth_table;

vcom -2002 -explicit -work practice full_adder.vhd
#Model Technology Modelsim SE vcom 6.3 Compiler 2007.05 May 4 2007
# -- Loading package standard
# -- Loading package std_logic_1164
# -- Loading package numeric_std
# -- Compiling entity full_adder
# -- Compiling architecture truth_table of full_adder
# ** Warning: full_adder.vhd(15): (vcom-1186) Array type selected
signal assignment expression must be of a locally static subtype.


Why warning??? What does this locally static subtype mean??

Regards,
JK

 
Reply With Quote
 
 
 
 
Alan Fitch
Guest
Posts: n/a
 
      05-29-2007
JK wrote:
> Hi,
>
> I was trying example of Peter Ashenden VHDL book:
>
> library IEEE;
> use IEEE.std_logic_1164.ALL;
> use IEEE.numeric_std.ALL;
>
> entity full_adder is
> port (
> a, b, c_in : in bit;
> c_out, sum : out bit
> );
> end entity full_adder;
>
> architecture truth_table of full_adder is
> begin
>
> with bit_vector'(a, b, c_in) select
> (c_out, sum) <= bit_vector'("00") when "000",
> bit_vector'("01") when "001",
> bit_vector'("01") when "010",
> bit_vector'("10") when "011",
> bit_vector'("01") when "100",
> bit_vector'("10") when "101",
> bit_vector'("10") when "110",
> bit_vector'("11") when "111";
>
> end architecture truth_table;
>
> vcom -2002 -explicit -work practice full_adder.vhd
> #Model Technology Modelsim SE vcom 6.3 Compiler 2007.05 May 4 2007
> # -- Loading package standard
> # -- Loading package std_logic_1164
> # -- Loading package numeric_std
> # -- Compiling entity full_adder
> # -- Compiling architecture truth_table of full_adder
> # ** Warning: full_adder.vhd(15): (vcom-1186) Array type selected
> signal assignment expression must be of a locally static subtype.
>
>
> Why warning??? What does this locally static subtype mean??
>
> Regards,
> JK
>


It means that the line

with bit_vector'(a, b, c_in) select

needs a subtype, not a type.

For instance

architecture truth_table of full_adder is
subtype bv3 is bit_vector(2 downto 0);
begin

with bv3''(a, b, c_in) select

should work

regards
Alan
 
Reply With Quote
 
 
 
 
JK
Guest
Posts: n/a
 
      05-29-2007
On May 29, 5:58 pm, Alan Fitch <alan.fi...@spamtrap.com> wrote:
>
> It means that the line
>
> with bit_vector'(a, b, c_in) select
>
> needs a subtype, not a type.
>
> For instance
>
> architecture truth_table of full_adder is
> subtype bv3 is bit_vector(2 downto 0);
> begin
>
> with bv3''(a, b, c_in) select
>
> should work
>
> regards
> Alan- Hide quoted text -
>


Thanx Alan, got the point. This is working.
architecture truth_table of full_adder is
subtype bv3 is bit_vector(2 downto 0);
begin

with bv3'(a, b, c_in) select

Regards,
JK

 
Reply With Quote
 
HT-Lab
Guest
Posts: n/a
 
      05-29-2007
...snip.

> vcom -2002 -explicit -work practice full_adder.vhd
> #Model Technology Modelsim SE vcom 6.3 Compiler 2007.05 May 4 2007
> # -- Loading package standard
> # -- Loading package std_logic_1164
> # -- Loading package numeric_std
> # -- Compiling entity full_adder
> # -- Compiling architecture truth_table of full_adder
> # ** Warning: full_adder.vhd(15): (vcom-1186) Array type selected
> signal assignment expression must be of a locally static subtype.
>
>
> Why warning??? What does this locally static subtype mean??


Modelsim's verror command sometimes provides additional information:

$ verror 1186

vcom Message # 1186:
When the expression is of an array type, the length of the array must
be known at compile time. The simulator is less restrictive than the
LRM requires as long as the array length of the expression can be
determined in the compiler.
IEEE Std 1076-1993, 8.8 Case statement:

If the expression is of a one-dimensional character array type, then
the expression must be one of the following:
-- The name of an object whose subtype is locally static
-- An indexed name whose prefix is one of the members of this list
and whose indexing expressions are locally static expressions
-- A slice name whose prefix is one of the members of this list and
whose discrete range is a locally static discrete range
-- A function call whose return type mark denotes a locally static
subtype
-- A qualified expression or type conversion whose type mark
denotes a locally static subtype

It is an error if the element subtype of the one-dimensional character
array type is not a locally static subtype.

Hans
www.ht-lab.com



>
> Regards,
> JK
>



 
Reply With Quote
 
JK
Guest
Posts: n/a
 
      05-30-2007
On May 29, 7:08 pm, "HT-Lab" <han...@ht-lab.com> wrote:
> Modelsim's verror command sometimes provides additional information:
>
> $ verror 1186



Thank you Hans.

Regards,
JK

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off




Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57