为什么动态功耗始终为零?

时间:2014-12-09 15:56:33

标签: vhdl fpga xilinx xilinx-ise

我希望获得包含真实动态和静态功耗的精确功率报告。我正在开发Xilinx spartan3板。 我的代码没有错误,但在ISE(Xilinx综合工具)中选择“生成文本功率报告”之后,功率报告总是显示我的设计没有动态功耗。 (为什么?)

电力报告:

Dynamic   =  0.00
Quiescent =  59.84
Total     =  59.84

我的代码:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

ENTITY SRAM IS
  PORT(
    clk  : IN  std_logic;
    wr   : IN  std_logic;
    din  : IN  std_logic_vector(7 DOWNTO 0);
    dout : OUT std_logic_vector(7 DOWNTO 0);
    addr : IN  INTEGER RANGE 0 TO 3
  );
END SRAM;

ARCHITECTURE Behavioral OF SRAM IS
    TYPE matrix IS ARRAY (0 TO 3) OF std_logic_vector(7 DOWNTO 0);
    SIGNAL mem : matrix;
    BEGIN
        PROCESS(clk)
            BEGIN
            IF clk = '1' AND clk'event THEN
                IF wr = '1' THEN
                    mem(addr) <= din;
                END IF;
            END IF;
    END PROCESS;
    dout <= mem(addr);
END Behavioral;

警告列表:

设计负载20%完成设计负载25%完成设计负载30%完成设计负载60%完成设计负载95%完成设计负载100%完成警告:PowerEstimator:270 - 功耗估算被认为是不准确的。看

警告:电源:1337 - 时钟网络“clk_BUFGP”的时钟频率为零。

警告:电源:1337 - 时钟网络的时钟频率“clk_BUFGP / IBUFG”为零。

警告:电源:1369 - 未找到一个或多个时钟的时钟频率


根据“Brian”评论,我编辑了电力报告的结果:

Clocks    = 0.92 mw
Logic     = 0.00 mw
Signals   = 0.09 mw
IOs       = 0.15 mw
Quiescent = 59.85 mw
Total     = 61.01 mw

1 个答案:

答案 0 :(得分:1)

正如Brian在his comment中指出的那样,原始功率估算没有动态功耗的原因是,当最初模拟设计时,它是在静态模拟的。也就是说,你的设计中没有任何元素在翻转。设计中没有任何元素切换的原因是因为设计的所有元素仅对时钟的变化敏感;如果时钟没有上升沿,则不会消耗动态功率。

当您将时钟频率约束应用于时钟网络时,这为模拟器提供了有关您计划在实际硬件中运行设计的速度的信息。如果您愿意,可以调整约束(25,50,100,... 200MHz)以查看动态功率的影响。