两种不同vhdl设计的功率和时序报告

时间:2015-06-07 09:57:08

标签: performance report vhdl timing area

假设我有两个电路(在vhdl中描述),第一个在循环中执行以下算法(伪代码):

function httpCall()
{
     var promises=[];
      promises.push(yourhttpCall1())
     return $q.all(promises);
}

$q.all([httpCall]).then(function(result){});

我使用有限状态机(FSM)逻辑来表示该算法。因此:

C<=A+B;
D<=C+F;
RES <= D;

第二种算法也是顺序的,并通过FSM逻辑表示。请记住,CSA是一个带有3个输入(A,B,C)的Carry Save Adder,并立即生成两个结果S和C:

State1:C<=A+B;
       out_ready<='0';--the result is not ready yet
       nextstate<=State2;
State2:D<=C+F;
       nextstate<=S_out;
S_out: RES<=D;
       out_ready<='1';--the result is ready
       nextstate<=State1;

如果我们求和S和C,我们得到总和结果

S <= '0'&(A xor B xor C);
C <= (A and B) or (A and C) or (B and C) & '0';

优点是,在某些情况下,您可以只使用S和C(在一个时钟周期内生成)向量,而无需添加它们。好的,回到我的第二个算法:

RES <= S+C;

这也代表了应用FSM:

(S,C)=(A,B,Carry_in);
(S,C)=(S,C,F);
RES_S=S;
RES_C=C;

因此,如果我进行模拟(我使用的是modelsim),使用一个测试平台文件,每个时钟信号的极性交替0.5 ns,我得到的结果是在3个时钟后生成周期。但很明显,第二种算法要快得多。考虑到我必须写一份关于两个电路之间差异的报告,我有以下问题:

1)我想知道执行这两种算法所需的时间。如果我进行时序分析,例如使用Xilinx ISE,两个电路的性能会有差异吗?或者在这种情况下,时间将由3个时钟周期推断出来?

2)我必须报告时间,功耗和占用的空间(面积)。你推荐哪种软件?因为我没有太多时间,易于使用或记录良好(教程等)。

PS 这两个算法是在我写这篇文章的时候发明的,我正在研究其他无聊的东西。

1 个答案:

答案 0 :(得分:1)

数字电路性能的测量方法包括:吞吐量,最大工作频率,延迟,面积和功率。

您的3个时钟周期是延迟,这很容易从您的VHDL推断,因为您的FSM从输入到输出是3个周期。最大工作频率和面积由综合工具给出。可以使用所有综合工具(ISE具有XPower)估算功率,如果正确输入数据,则可以非常精确。

最后,吞吐量是衡量您可以处理的数据量的指标。在这两种架构中,您的输出可用1/3周期,因此您的吞吐量为1/3。与此描述相比:

process(clk)
    if rising_edge(clk) then
        s_0 <= a + b;
        v_0 <= in_valid;
        f_0 <= f;

        s_1 <= s_0 + f_0;
        v_1 <= v_0;

        res <= s_1;
        out_ready <= v_1;
    end if;
end process;

在我的描述中,延迟也是3,但我可以在每个周期获得一个输出,因此我的吞吐量是1 /周期,是描述的3倍。区域理论上应该比你的电路更多,但可能不是因为开销较少。一个更复杂的例子会看到更多的不同,添加非常简单,特别是在FPGA中。

根据我的经验,延迟很少是一个问题,除了接口和选定的应用程序。我们想要最大的吞吐量和最小的面积,有时是功率(尽管FPGA不是很好)。最大工作频率与吞吐量有关,可以在200MHz运行的1 /时钟周期电路的总吞吐量是100MHz时的两倍。

最后,您似乎对使用CSA感到困惑。它的优点是它的持续延迟。在1024位上执行CSA所花费的时间与4位需要的时间一样长。通过将CSA限制为每个时钟周期运行一次,您可以消除优势,因为更快的时间丢失;无论如何,最终的最大工作频率将由全加器决定。

您还应该知道,Xilinx LUT6的技术(Spartan-6和更新版本)可以以与2输入相同的成本(时序和面积)执行3输入加法。它使用LUT6执行CSA,使用快速进位逻辑进行最终添加。 2输入加法也使用LUT6(作为路由)和快速进位逻辑。因此,在Xilinx上使用3输入加法器没有任何缺点。