I have that message. I believe it appears when a signal is driven by more than one process... But I cant seem to find where. What are the most common cases in which this kind of errors appear?
In my case it appears while handling a couple of std_logic_vectors, to be exact, in the I/O of a file register, and a couple of 16 bit registers.
Any information about this error would be gladly apreciated.
Here is a snipet of the code:
SIGNAL MEMORIA1: MEMORIA:=("00000000","00000001","00000010","00000011",
"00000100","00000101","00000110","00000111",
"00001000","00001001","00001010","00001011",
"00001100","00001101","00001110","00001111"
;
BEGIN
PROCESS(ADDR_B, ADDR_A,CLK,RE,RST,MEMORIA1)
VARIABLE CELDA: INTEGER;
BEGIN
IF RISING_EDGE(CLK) THEN
IF (WE='1') THEN
CELDA:=conv_integer(ADDR_I);
-- MEMORIA1(CELDA)<=DATO_I;
END IF;
END IF;
IF(RE='1') THEN
DATO_A<=MEMORIA1(conv_integer(ADDR_A));
DATO_B<=MEMORIA1(conv_integer(ADDR_B));
END IF;
IF(RST='1') THEN
MEMORIA1<=("00000000","00000001","00000010","00000011",
"00000100","00000101","00000110","00000111",
"00001000","00001001","00001010","00001011",
"00001100","00001101","00001110","00001111"
;
END IF;
Curiously, commenting the line shown solves the problem for the memoria1 vector. Why is that?
I hope I gave enough info about this. Im using Cypress Warp.
Thanks in advance
In my case it appears while handling a couple of std_logic_vectors, to be exact, in the I/O of a file register, and a couple of 16 bit registers.
Any information about this error would be gladly apreciated.
Here is a snipet of the code:
SIGNAL MEMORIA1: MEMORIA:=("00000000","00000001","00000010","00000011",
"00000100","00000101","00000110","00000111",
"00001000","00001001","00001010","00001011",
"00001100","00001101","00001110","00001111"
BEGIN
PROCESS(ADDR_B, ADDR_A,CLK,RE,RST,MEMORIA1)
VARIABLE CELDA: INTEGER;
BEGIN
IF RISING_EDGE(CLK) THEN
IF (WE='1') THEN
CELDA:=conv_integer(ADDR_I);
-- MEMORIA1(CELDA)<=DATO_I;
END IF;
END IF;
IF(RE='1') THEN
DATO_A<=MEMORIA1(conv_integer(ADDR_A));
DATO_B<=MEMORIA1(conv_integer(ADDR_B));
END IF;
IF(RST='1') THEN
MEMORIA1<=("00000000","00000001","00000010","00000011",
"00000100","00000101","00000110","00000111",
"00001000","00001001","00001010","00001011",
"00001100","00001101","00001110","00001111"
END IF;
Curiously, commenting the line shown solves the problem for the memoria1 vector. Why is that?
I hope I gave enough info about this. Im using Cypress Warp.
Thanks in advance