我想有一個out simple_port綁定到多個VHDL std_logic_vectors
。 更具體地說,我想連接一個10位簡單的端口到兩個5位總線,以便它們都構造一個10位向量,我可以從Specman寫入這個向量。如何將simple_port連接到VHDL信號的串聯?
我試圖在hdl_path()
中這樣做,但編譯VHDL存根時發生VHDL編譯器錯誤。
keep port.hdl_path="A & B"
其中A和B是5位std_logic_vectors
。
我想有一個out simple_port綁定到多個VHDL std_logic_vectors
。 更具體地說,我想連接一個10位簡單的端口到兩個5位總線,以便它們都構造一個10位向量,我可以從Specman寫入這個向量。如何將simple_port連接到VHDL信號的串聯?
我試圖在hdl_path()
中這樣做,但編譯VHDL存根時發生VHDL編譯器錯誤。
keep port.hdl_path="A & B"
其中A和B是5位std_logic_vectors
。
當使用verilog時,使用hdl_expression()端口屬性支持將simple_port連接到HDL信號串聯的能力。 這甚至出現hdl_expression()文檔中:
然而,hdl_expression()端口屬性未在具有VHDL劑端口所支持。 一個解決此方法是通過定義適當的矢量大小每兩個簡單的端口如本例所示:
p0: out simple_port of uint(bits:5) is instance;
p1: out simple_port of uint(bits:5) is instance;
keep p0.hdl_path()=="bus1";
keep p1.hdl_path()=="bus2";
p_top:uint(bits:10);
event write_to_p_top is change(p_top)@sys.any;
on write_to_p_top {
p1$=p_top[4:0];
p2$=p_top[9:5]
};
在你的代碼,你需要做的是賦值頂端變量「 p_top」。 這將觸發具有適當值的實際端口的寫入序列。
注意:這可以推廣到使用simple_port列表
在VHDL中的端口實際是包括命名信號或切片及其,靜態表達或從單一信號參數轉換函數而得到的值的任何數量的端口的。本質上它必須與信號類的單個命名對象相關聯。 VHDL分析器(編譯器)的輸入將告訴你。 – user1155120