通过Time Quest分析器进行FMAX分析

问题描述 投票:-1回答:1

我是VHDL的新手,这是我在StackOverFlow上的第一篇文章。我已经用VHDL编写了这段代码。除了TimingQuest Analyzer之外,其他所有东西都运行良好。我不知道为什么,但是如果我尝试将TimingQuest Analyzer用于返回“无路径报告”的实体“ register8_bit”,则顺便说一句,如果我将TimingQuest Analyzer用于实体“ FLIP_FLOP_D”,则一切正常。如果这个问题不合适或太长,我将提供删除。

----------------REGISTER A 8 BIT------------------
LIBRARY ieee;
use ieee.std_logic_1164.all;
---------------------------------------------------
entity register8_bit is
    port (din:                      in std_logic_vector(7 downto 0);
            c, reset, en:           in std_logic;
            dout:                       out std_logic_vector(7 downto 0));
end register8_bit;

architecture datablow of register8_bit is
---------AGGIUNGO I SEGUENTI COMPONENTS-----------
component FLIP_FLOP_D is
    port (
    e,r,i,c :in std_logic;
    o         :out std_logic );
end component;

begin
    RO  : FLIP_FLOP_D       port map (en,reset,din(0),c,dout(0));
    R1  : FLIP_FLOP_D       port map (en,reset,din(1),c,dout(1));
    R2  : FLIP_FLOP_D       port map (en,reset,din(2),c,dout(2));
    R3  : FLIP_FLOP_D       port map (en,reset,din(3),c,dout(3));
    R4  : FLIP_FLOP_D       port map (en,reset,din(4),c,dout(4));
    R5  : FLIP_FLOP_D       port map (en,reset,din(5),c,dout(5));
    R6  : FLIP_FLOP_D       port map (en,reset,din(6),c,dout(6));
    R7  : FLIP_FLOP_D       port map (en,reset,din(7),c,dout(7));
end datablow;



entity FLIP_FLOP_D is port (
    e,r,i,c :in std_logic;
    o         :out std_logic );

end FLIP_FLOP_D;

architecture datablow of FLIP_FLOP_D is 

begin   
    process(e,r,c)
        begin
            if (r = '0') then
                o <= '0';
            elsif (rising_edge(c)) then
                if (e = '1') then
                    o <= i;
                end if;
            end if;
    end process;
end datablow;
vhdl fpga quartus
1个回答
0
投票

首先:Quartus TimeQuest II做什么?

它评估信号在时钟设计元素之间通过组合路径的传输时间,并检查该组合路径是否足够快以使信号在到达时钟设计元素之前足够长的时间到达目标时钟设计元素。接收时钟沿。

此“足够长的时间”称为松弛

如果松弛度为负,则这些信号到来太迟,您的设计不太可能按预期运行。如果为正,则松弛显示接收设计元素将需要多少时间来捕获信号,或者换句话说,您可能需要多少裕度才能以更快的时钟驱动整个设计。

第二:要让TimeQuest II能够工作,我需要做什么?

[基本上,上面提到的所有内容:(a)具有“发送”和“接收”时钟元素的设计,以及(b)为这些元素提供时钟的时钟速率。

对于(a),您将需要一个“ Synopsys设计约束”(或.sdc)文件,该文件至少需要告知Quartus Time Quest II关于(外部)时钟驱动设计的速度。没有它,它将无法显示合理的结果。您的.sdc文件至少需要有一行定义该时钟:

create_clock -period <clock period> -name <clock name> [get_ports {<clock port>}]

对于(b),您的设计需要至少提供上述元素:计时的“发送”元素和计时的“接收”元素,其间具有组合路径。

通常仅将其包含在设计HDL中是不够的,在合成后所有这些仍然存在,这一点也很重要。 Quartus综合将优化您确定未使用的所有设计元素。要确保所有这些都存在,请咨询RTL查看器。

© www.soinside.com 2019 - 2024. All rights reserved.