Decoder Simulation Results are incorrect
Adding a to the sensitivity list and removing the if statement makes this code works perfectly.
Once again thanks for your time.
process(ena,a)
begin

b &lt;= (others =&gt; '0');

b(to_integer(unsigned(a))) &lt;= '1';



end process;