Due to an issue in Quartus® Prime software versions 16.0.2 and earlier an I/O configured as bidirectional and open drain in Arria® 10 devices may not go Hi-Z but will drive high when ENABLE =’0', when implemented using the following construct :
INOUT < = ‘0’ when ENABLE =’1’ else ‘Z’;
You may use one of the following work arounds to avoid this behaviour.
1. Declare I/O as OUT rather than INOUT or
2. User Altera GPIO IO to instantiate an I/O buffer in open-drain mode
3. Use the Keep Attribute as shown below:
signal zero_sig : std_logic:='0';
attribute keep : boolean;
attribute keep of zero_sig : signal is true;
user_pin_name <= zero_sig when ENABLE='1' else 'Z';
(Note: user_pin_name is declared as INOUT)
This issue is scheduled to be fixed in a future version of Quartus Prime software.