2014-10-30 27 views
2

我在Altera Quartus 13.1中寫了一些代碼,並且我無法在TimeQuest中檢查我的實體的Fmax。我得到'沒有路徑來報告'。代碼如下:在TimeQuest上沒有VHDL代碼的'沒有路徑報告'

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; 

我的問題是爲什麼會出現此問題。當我將可變總和更改爲信號時,一切正常,但我希望在一個時鐘週期內完成。這段代碼在ModelSim中工作正常,並且給出了很好的結果。

+0

綜合報告中是否有任何線索?另外,請仔細檢查處理敏感度列表... – 2014-10-30 13:36:04

+0

我將clk添加到敏感度列表中,結果相同。合成報告僅顯示「Info(332142)」信息:在設計中找不到用戶受限制的基本時鐘。調用「derive_clocks -period 1.0」 '。 ,但在'時鐘'選項卡的TimeQuest中有我的時鐘。 – TheJeronimek 2014-10-30 13:53:09

+0

現在「clk」在靈敏度列表中,其他應該是不必要的。我認爲Synth消息是說你需要給「clk」添加一個時間約束。 – 2014-10-30 14:33:51

回答

1

看起來您的設計中沒有註冊路徑來註冊路徑,因此TimeQuest無法報告Fmax。要報告Fmax,你必須告訴它I/O信號和clk之間的關係(使用set_input_delay和set_output_delay)。或者,如果您第一次註冊您的輸入(例如通過添加FirstHalfReg <= FirstHalf),您應該看到註冊寄存器,路徑,並且應該獲得這些內部路徑的Fmax。