You can implement laches using asynchronous feedback paths in your cobinational logic. Probably you will have problems with time simulations.
Also you need to consider possible metastablilty problems. So don't use latch and inverted latch output at same time.
Setup and hold times are very routing dependant and upredictable.
With synchronuos solutions you can easy predict all timing parameters in your design.
What are the disadvantages of doing the following latch?
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
entity latching is
port
(
signalIn : in std_logic_vector(15 downto 0);
signalOut : out std_logic_vector(15 downto 0);
inEn : in std_logic
);
end latching;
architecture latch_behaviour of latching is
begin
signalOut <= signalIn when inEn = '1' ;
end latch_behaviour ;
It means you are not allowed to implimet something like RS flip-flop, and async design, all of your storage, needs to sync with input clock.
It is not only Altera, it is mostly all FPGA vendors...
Most macro cell architectures only support flip-flops not latches. Without this support you need to implement latches with combinational logic using feeback paths. In this case your design is very timing and routing dependant and inefficient.
So if you really don't need latches use registers. If you use programmable logic array technology you can use leatches and registers without restrictions