VHDL代码中的TimeQuest中没有“报告路径”

时间:2014-10-30 13:32:48

标签: vhdl fpga

我正在Altera Quartus 13.1中编写一些代码,我无法在TimeQuest中检查我的实体的Fmax。我得到'没有报道的路径'。代码如下:

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
use IEEE.std_logic_unsigned.all;

library NTRU;
use NTRU.NTRU.all;

entity ModuloAdder is
    port(
        FirstHalf   : in Int32 := 0;
        SecondHalf  : in Int32 := 0;    
        Start           : in std_logic := '0';
        clk             : in std_logic;
        Result      : out Int32 := 0;
        ReadyOut        : out std_logic
        );
end ModuloAdder;

architecture a1 of ModuloAdder is
begin
process(clk, Start, FirstHalf, SecondHalf)
variable sum: integer range 63 downto -63:=0;
begin
    if clk'event and clk ='1' then
        if Start = '1' then 
            sum := (FirstHalf + SecondHalf) mod 32;
            if sum > 32 then
                Result <= sum mod 32;
            elsif sum < -3 then
                Result <= sum+32;
            else 
                Result <= sum;
            end if;
            ReadyOut <= '1';
        else 
            ReadyOut <= '0';
            Result <= 0;
        end if;
    end if;
end process;
end a1;

我的问题是为什么会出现这个问题。当我将变量sum更改为signal时,一切正常,但我希望在一个时钟周期内完成。这段代码在ModelSim中运行良好,并且效果很好。

1 个答案:

答案 0 :(得分:1)

看起来您的设计中没有注册路径来注册路径,因此TimeQuest无法报告Fmax。要报告Fmax,您必须告诉它I / O信号和clk之间的关系(使用set_input_delay和set_output_delay)。或者,如果您首先注册输入(例如,通过添加FirstHalfReg <= FirstHalf),您应该看到注册寄存器,路径,并且应该获得这些内部路径的Fmax。