这听起来很幼稚,但我想请您对以下伪代码进行专家评论。以下两种方法中的哪一种可以实现最小的位置和在硬件中实现的路由时序。
方法:1
control_proc: process(clk)
begin
if(clk'event and clk=='1') then
if sig_delay == 1 then
sig_ctrl <= '1';
else
sig_ctrl <= '0';
end if;
end if;
end process
delay_proc: process(clk)
begin
if(clk'event and clk=='1') then
if <some-condition> then
sig_delay <= '1';
else
sig_delay <= '0';
end if;
end if;
end process
方法:2
control_single_proc: process(clk)
begin
if(clk'event and clk=='1') then
if <some-condition> then
sig_delay <= '1';
else
sig_delay <= '0';
end if;
if sig_delay == 1 then
sig_ctrl <= '1';
else
sig_ctrl <= '0';
end if;
end if;
end process
注意: sig_ctrl用作层次结构中另一个组件的CE(芯片启用),这是一种位串行器。
答案 0 :(得分:0)
你的两种方法是等价的。任何好的综合工具都能够在两种情况下执行相同的优化。
可能阻止综合工具优化逻辑等效硬件的各种事物是实体层次结构/设计分区边界,但是大多数工具无论如何都会在优化之前弄平网表。
方法2 可能会在模拟中略微提高,因为要安排的流程较少。