有導入的SystemVerilog包作爲另一個名字的機制,類似於在Python可用?導入SystemVerilog的包作爲另一名
我有一個包,我需要進口,而包的名稱是top_pkg
。我想導入爲subsystem_pkg
有導入的SystemVerilog包作爲另一個名字的機制,類似於在Python可用?導入SystemVerilog的包作爲另一名
我有一個包,我需要進口,而包的名稱是top_pkg
。我想導入爲subsystem_pkg
有一個機制,但它是不容易達到此目的。你可以做的是創建一個subsystem_pkg
,導入top_pkg
。然後你就可以export
全部來自top_pkg
導入的符號,使他們看起來好像他們內部subsystem_pkg
通常直接宣佈,只有一個包內聲明的那些符號可用於導入什麼,而不是什麼包已經進口的(有時稱爲的鏈接進口)。 export
命令鏈接導入。
是什麼讓這個困難這個目的是通配符適用於進口和出口的方式。你想鏈接的每個符號都必須顯式出現在鏈接包中。例如
package top_pkg;
int a,b,c,d;
endpackage
package subsystem;
import top_pkg::*;
import top_pkg::b;
export top_pkg::*;
export top_pkg::c;
int e = d;
endpackage
第一import
聲明說,使top_pkg所有符號候選人的進口;它並不實際導入任何東西。第二條進口聲明明確導入b
。第一條export
聲明表示導出從top_pkg
導入的任何符號,此時符號僅爲b
。第二個export
語句隱式導入,然後明確導出c
。最後一條語句會導致隱含導入d
以及隱式導出'd'。
所以當你導入subsystem_pkg
時,你可以從top_pkg
得到符號b,c和d以及本地聲明的e。
謝謝戴夫。我決定使用一個獨立的包文件,其中包含我需要的文件 – noobuntu
只要沒有人導入這兩個包,並且兩個包之間沒有通信,就可以工作。請參閱http://go.mentor.com/package-import-versus-include –