首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在设计编译过程中没有满足计时要求

在设计编译过程中没有满足计时要求
EN

Stack Overflow用户
提问于 2017-10-15 19:38:41
回答 1查看 5.7K关注 0票数 1

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

代码语言:javascript
运行
复制
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;

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

代码语言:javascript
运行
复制
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

这条警告信息的原因是什么?我如何解决它?另外,这些松懈的数字对我的设计有什么影响呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-16 00:02:11

由于无法找到monitor.sdc,Quartus试图在1 1GHz (period=1ns)范围内合成电路,因为日志显示了以下约束条件。

代码语言:javascript
运行
复制
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信号。您可以适当地修改句点并将约束放入monitor.sdc中。然后,您应该将该文件添加到项目中。

松弛值告诉您目标和实际的区别。如果一条路径满足定时要求,则该路径具有正松弛。如果不满足,松懈是消极的。

你的目标时钟周期是1ns,但对于关键(最坏的)路径,你有-7.891ns的空闲时间。实际可实现的期间可按以下方式计算。

代码语言:javascript
运行
复制
actual period = target period - setup slack = 1.000 - (-7.891) = 8.891ns

根据上述结果,8.9ns对于clk来说是一个可实现的周期。我也会尝试较小的值,但如果您的实际输入时钟(clk)不超过100 than,则不需要。

signal_level的周期取决于COUNTER_MAX的最小值。实际上,电路的其余部分似乎已经比clk_divider模块快了,因为signal_level的松弛(-1.602)更好。您可以使用clk设置相同的时间段。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46759207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档