Altera_Forum
Honored Contributor
18 years agoWarning: Removed fan-in from always-disabled I/O buffer
Hello Forum! This is my first post/question...
I built a 16 bit register that connects to a tristate bus, but when I try and write to the register I can't. I get a quartus (compiler?) warning that says: Warning: Removed fan-in from always-disabled I/O buffer controlReg16:inst14|comb~31 to tri-state bus AD~0 Here is my vhdl code: library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity controlReg16 is port( nRegRE: in std_logic; nRegWE: in std_logic; nClr: in std_logic; dataBus: inout std_logic_vector(15 downto 0); cntrl: out std_logic_vector(15 downto 0); debug: out std_logic_vector(3 downto 0) ); end controlReg16 ; architecture controlReg16_arch of controlReg16 is signal register16: std_logic_vector(15 downto 0); begin -- controlReg16_arch reg16: process (nRegWE, nClr, dataBus) begin if (nClr = '0') then register16 <= X"0000"; -- register is used for active high signals elsif (nRegWE'event and nRegWE = '0') then --if this is a register write register16 <= dataBus; -- latch bus contents in register end if; end process reg16; dataBus <= register16 when (nRegRE = '0') else "ZZZZZZZZZZZZZZZZ"; cntrl <= register16; debug(0) <= nRegWE; debug(1) <= dataBus(0); debug(2) <= register16(0); end controlReg16_arch; the funny thing is that if I remove the event requirement from the register write, i.e. "elsif ( nRegWE = '0') then" then it does work! but I still get the compiler warning! So what's going on here? Why does the compiler think the buffer is always disabled? And why does it work if I remove the requirement for a clock edge? thanks in advance for your help!