2016-07-07 10 views
1

當試圖用一個正式的通用包裝(ieee.fixed_generic_pkg)申報的實體:VHDL 2008>通用封裝在一個實體:錯誤期待BASICID或EXTENDEDID

library ieee; 
context ieee.ieee_std_context; 

entity myent is 
    generic (package myfpkg is new ieee.fixed_generic_pkg generic map (<>)); 
end entity; 

我收到以下錯誤:

Syntax error at or near "package", expecting BASICID or EXTENDEDID

我也曾嘗試:

library ieee; 
context ieee.ieee_std_context; 
use ieee.fixed_generic_pkg; 

entity myent is 
    generic (package myfpkg is new ieee.fixed_generic_pkg generic map (<>));  
end entity; 

既不工作也不工作。

但是,如果我宣佈了包的任何虛擬實例,它的工作沒有任何錯誤:

library ieee; 
context ieee.ieee_std_context; 
package fpkg is new ieee.fixed_generic_pkg; 

-- 

library ieee; 
context ieee.ieee_std_context; 

entity myent is 
    generic (package myfpkg is new ieee.fixed_generic_pkg generic map (<>));  
end entity; 

什麼是宣佈一個正式的通用包裝實體的正確方法,而無需事先實例化相同類型的包?

編輯

我使用的工具是HDL設計2015.1b。我認爲通用軟件包是受支持的。事實上,下面的例子中沒有拋出錯誤:

library slfnlib; 
use slfnlib.gen_consts; 
use slfnlib.gen_wb_ctypes; 

package gen_ctypes is 
    generic (package cs is new slfnlib.gen_consts generic map (<>)); 

    package wb is new slfnlib.gen_wb_ctypes generic map (
    g_mo => cs.g_mo, 
    g_bas => cs.g_bas); 

end package; 

EDIT2

雖然與幾個通用包(聲明,實例化,使用...)工作時,我意識到,全項目的正確編譯。在分析其中的一部分時,我也多次得到同樣的錯誤。

然後,我斷定我不能用DesignChecker自己分析任何通用包/實體。但是,有一個簡單的解決方法,就是像在任何實際設計中那樣使用這些組件。無論如何應該這樣做,以便模擬和合成設計。關鍵的信息並不在於這些工具提供什麼,直到代碼的實體作爲實際設計纔有意義。

+1

可能值得描述哪些工具/版本報告了這一點。有些工具可能仍然不支持通用軟件包。 –

+0

我編輯了問題以指示工具/版本信息。另外,我添加了一個可行的例子。 –

回答

2

您的代碼看起來與LRM(「通用映射方面」)的第6.5.7.2節中的示例具有相似的結構,除了頂層是實體,而在它們的示例中它是包。

你原來的代碼在我試過的兩個工具上編譯得很好,所以它在我看來就像是在你使用的任何工具中都存在問題。我建議你和工具供應商合作。

+0

感謝您的嘗試。我正在使用HDL Designer 2015.1b。我可以知道你嘗試過哪些工具嗎? –

+0

對不起,你可能不會。您可能會發現,公開討論您的工具可以做什麼以及不能做什麼違反許可條款。在我的工作中,我非常感謝各個供應商的支持,所以請認真對待這些許可證條款。 –

+1

@MatthewTaylor,而許可證的信件可能會說,實際上,供應商不可能對他們的工具完成這項工作的陳述有任何異議! –

相關問題