當試圖用一個正式的通用包裝(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自己分析任何通用包/實體。但是,有一個簡單的解決方法,就是像在任何實際設計中那樣使用這些組件。無論如何應該這樣做,以便模擬和合成設計。關鍵的信息並不在於這些工具提供什麼,直到代碼的實體作爲實際設計纔有意義。
可能值得描述哪些工具/版本報告了這一點。有些工具可能仍然不支持通用軟件包。 –
我編輯了問題以指示工具/版本信息。另外,我添加了一個可行的例子。 –