А не должно ли быть здесь
Код
process(clk)
begin
if rising_edge(clk) then
Q1 <= Q0;
Q2 <= Q1;
end if;
end process;
ce <= Q2 xor Q1;
в место rising_edge -> falling_edge?
Если использовать rising_edge то в функциональной симуляции показывает не верно, вернее не то что я хочу, но после роутинга все замечательно. А если использовать falling_edge и RUN завести на тригер, то везде показывает правильно.
А где вы видите метастабильность трегеров в схеме от oval?
Сравнил две схемы после размещения и роутинга
Oval:
SLICEs - 2
Max. freq. - 113 MHz
Makc с rising_edge:
SLICEs - 4
Max. freq. - 454 MHz
Makc с falling_edge:
SLICEs - 4
Max. freq. - 607 MHz
забавно.