I agree.
A bad assignment to a null vector will cause other errors. A null vector declaration alone is innocuous.
If one bit is 0 to 0 then no bits must be 0 to -1
Let's see:
-------------------
entity null_string is end null_string;
architecture sim of null_string is constant null_vec : std_logic_vector := ""; constant one_vec : std_logic_vector := "0"; constant two_vec : std_logic_vector := "00";
begin
what : process is begin report "null_vec is "& integer'image(null_vec'left) & " to "& integer'image(null_vec'right); report " one_vec is "& integer'image( one_vec'left) & " to "& integer'image( one_vec'right); report " two_vec is "& integer'image( two_vec'left) & " to "& integer'image( two_vec'right); wait; end process what;
end sim;
--VSIM 1> run
--# ** Note: null_vec is 0 to -1
--# ** Note: one_vec is 0 to 0
--# ** Note: two_vec is 0 to 1
------------------------
I suppose that null vectors are rare as signals but null vector constants and variables are necessary to make clean vector functions.
--Mike Treseler