Paulo Valentim
2005-02-23 18:32:26 UTC
The following line compiles ok in my synthesis tool:
OXU2_BEI_INS_DATA <= (ODU2TaBEI(4 downto 1) &
ODU2TaBDI(conv_integer(OXU2_TCM_NR))) when
PATH_A = 1 else "00000";
But when I change that line to the following then it gives me the
error "Expecting Constant Expression" in the first line:
ODU2TaBEI_TCM <= ODU2TaBEI((conv_integer(OXU2_TCM_NR)*4+3) downto
conv_integer(OXU2_TCM_NR)*4);
OXU2_BEI_INS_DATA <= (ODU2TaBEI_TCM &
ODU2TaBDI(conv_integer(OXU2_TCM_NR))) when
PATH_A = 1 else "00000";
Honestly I don't understand why the first example compiles but the
second doesn't. The first one the bit slice is constant but then I
have a reference to non-constant bit. In the 2nd example the bitslice
is not constant.
So why can't I point to a non-constant bitslice when I can point to a
non-constant bit? It doesn't make sense.
- Paulo Valentim
OXU2_BEI_INS_DATA <= (ODU2TaBEI(4 downto 1) &
ODU2TaBDI(conv_integer(OXU2_TCM_NR))) when
PATH_A = 1 else "00000";
But when I change that line to the following then it gives me the
error "Expecting Constant Expression" in the first line:
ODU2TaBEI_TCM <= ODU2TaBEI((conv_integer(OXU2_TCM_NR)*4+3) downto
conv_integer(OXU2_TCM_NR)*4);
OXU2_BEI_INS_DATA <= (ODU2TaBEI_TCM &
ODU2TaBDI(conv_integer(OXU2_TCM_NR))) when
PATH_A = 1 else "00000";
Honestly I don't understand why the first example compiles but the
second doesn't. The first one the bit slice is constant but then I
have a reference to non-constant bit. In the 2nd example the bitslice
is not constant.
So why can't I point to a non-constant bitslice when I can point to a
non-constant bit? It doesn't make sense.
- Paulo Valentim