I tried your design and it works fine for me in activehdl, I changed the instantiations back to component rather than entity, i.e.
u1: fa port map( i1, i2, ci, s, co );
instead of
u1: entity work.fa port map( i1, i2, ci, s, co );
You have a component declaration so you don't need the second one, the second one is if you remove the component declaration
So there is nothing really wrong with your code. Not sure what else?