我希望获得包含真实动态和静态功耗的精确功率报告。我正在开发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
答案 0 :(得分:1)
正如Brian在his comment中指出的那样,原始功率估算没有动态功耗的原因是,当最初模拟设计时,它是在静态模拟的。也就是说,你的设计中没有任何元素在翻转。设计中没有任何元素切换的原因是因为设计的所有元素仅对时钟的变化敏感;如果时钟没有上升沿,则不会消耗动态功率。
当您将时钟频率约束应用于时钟网络时,这为模拟器提供了有关您计划在实际硬件中运行设计的速度的信息。如果您愿意,可以调整约束(25,50,100,... 200MHz)以查看动态功率的影响。