代码之家  ›  专栏  ›  技术社区  ›  Mrchacha

设计编译期间未满足时间要求

  •  1
  • Mrchacha  · 技术社区  · 7 年前

    我已经创建了一个设计,并希望编译该设计,以便为复杂可编程逻辑器件创建一个二进制文件。然而,当我尝试编译设计时,它会输出一条警告,表示未满足计时要求。它似乎在抱怨以下VHDL组件,其中外部时钟被划分为较低的时钟频率,该频率由设计中的其他VHDL组件使用:

    entity clk_divider is
        generic (COUNTER_MAX : integer := 256000);
        port(
                clk_in  : in std_logic;
                reset   : in std_logic;
                clk_out : out std_logic
            );
    end clk_divider;    
    
    architecture Behavioral of clk_divider is
    
        signal signal_level : std_logic := '0';
        signal counter : integer range 0 to COUNTER_MAX := 0;
    
    begin
        clk_divider : process (clk_in, reset)
            begin
    
            if (reset = '1') then
                signal_level <= '0';
                counter <= 0;
            elsif rising_edge(clk_in) then
                if (counter = COUNTER_MAX) then
                    signal_level <= not(signal_level);
                    counter <= 0;
                else
                    counter <= counter + 1;
                end if;
            end if;
        end process;
    
        clk_out <= signal_level;
    end Behavioral;
    

    设计编译期间显示的关键警告消息如下所示:

    Critical Warning (332012): Synopsys Design Constraints File file not found: 'monitor.sdc'. 
    A Synopsys Design Constraints File is required by the TimeQuest Timing Analyzer to get proper timing constraints. 
    Without it, the Compiler will not properly optimize the design.
    Info (332142): No user constrained base clocks found in the design. Calling "derive_clocks -period 1.0"
    Info (332105): Deriving Clocks
        Info (332105): create_clock -period 1.000 -name clk clk
        Info (332105): create_clock -period 1.000 -name clk_divider:clk_module|signal_level clk_divider:clk_module|signal_level
    Info: Found TIMEQUEST_REPORT_SCRIPT_INCLUDE_DEFAULT_ANALYSIS = ON
    Info: Can't run Report Timing Closure Recommendations. The current device family is not supported.
    Critical Warning (332148): Timing requirements not met
    Info (332146): Worst-case setup slack is -7.891
        Info (332119):     Slack       End Point TNS Clock 
        Info (332119): ========= =================== =====================
        Info (332119):    -7.891            -123.541 clk 
        Info (332119):    -1.602              -5.110 clk_divider:clk_module|signal_level 
    Info (332146): Worst-case hold slack is -0.816
        Info (332119):     Slack       End Point TNS Clock 
        Info (332119): ========= =================== =====================
        Info (332119):    -0.816              -0.816 clk 
        Info (332119):     1.732               0.000 clk_divider:clk_module|signal_level 
    Info (332146): Worst-case recovery slack is -4.190
        Info (332119):     Slack       End Point TNS Clock 
        Info (332119): ========= =================== =====================
        Info (332119):    -4.190             -20.950 clk_divider:clk_module|signal_level 
        Info (332119):    -3.654             -76.734 clk 
    Info (332146): Worst-case removal slack is 4.320
        Info (332119):     Slack       End Point TNS Clock 
        Info (332119): ========= =================== =====================
        Info (332119):     4.320               0.000 clk 
        Info (332119):     4.856               0.000 clk_divider:clk_module|signal_level 
    Info (332146): Worst-case minimum pulse width slack is -2.289
        Info (332119):     Slack       End Point TNS Clock 
        Info (332119): ========= =================== =====================
        Info (332119):    -2.289              -2.289 clk 
        Info (332119):     0.247               0.000 clk_divider:clk_module|signal_level 
    Info (332001): The selected device family is not supported by the report_metastability command.
    Info (332102): Design is not fully constrained for setup requirements
    Info (332102): Design is not fully constrained for hold requirements
    

    出现此警告消息的原因是什么?如何解决?还有,松弛数对我的设计有什么影响?

    1 回复  |  直到 7 年前
        1
  •  1
  •   user3885596 user3885596    7 年前

    自从 班长sdc公司 无法找到,Quartus试图在1GHz(周期=1ns)下合成电路,因为日志显示了以下约束。

    create_clock -period 1.000 -name clk clk
    create_clock -period 1.000 -name clk_divider:clk_module|signal_level clk_divider:clk_module|signal_level
    

    第一行用于 clk 端口(必须在顶级模块/实体中),第二行用于 signal_level 信号您可以适当地修改时段,并将约束放入 班长sdc公司 . 然后您应该将该文件添加到项目中。

    松弛值告诉您目标和实际之间的差异。如果路径满足计时要求,则具有正松弛。如果不满足,则松弛为负。

    actual period = target period - setup slack = 1.000 - (-7.891) = 8.891ns
    

    根据上述结果,8.9ns可能是 . 我也会尝试较小的值,但如果您的实际输入时钟( clk公司 )不超过100MHz。

    信号_电平 取决于的最小值 COUNTER_MAX clk_divider 模块,因为 信号_电平 更好。您可以使用 clk公司 .