2012-11-08 51 views
0

我一直在嘗試使用icarus verilog從xilinx提供的unisim庫中編譯ICAP_SPARTAN6.v。無法在iverilog中編譯unisim代碼

我得到下面的編譯錯誤:

/opt/Xilinx/14.3/ISE_DS/ISE/verilog/src/unisims/ICAP_SPARTAN6.v:79: syntax error 
/opt/Xilinx/14.3/ISE_DS/ISE/verilog/src/unisims/ICAP_SPARTAN6.v:79: error: invalid module item. 

行代碼中提到的培訓相關低於:

tri (weak1, strong0) done_o = p_up;//line 78 
    tri (pull1, supply0) [15:0] di_t = (icap_idone == 1 && WRITE == 1)? 16'bz : dix; //line 79 

我也想指出,我不是很清楚如何三作品究竟。我認爲它類似於一個電線,除了有3個狀態,但其後面的缺陷對我沒有意義,這使得調試有點困難:) 任何幫助,將不勝感激。 - 感謝

回答

2

triwire是等同的。

括號中的關鍵字決定了驅動強度,它允許開關和門級建模。規則有些複雜,但基本上較強的信號可以覆蓋較弱的信號,因此在同一信號上驅動pull1strong0可能會導致0狀態,而不是XZ

錯誤看起來像iverilog中的錯誤或缺失的功能。刪除矢量範圍允許成功編譯。

+0

謝謝。解釋這個問題對我來說更容易。我更改了代碼,爲每個驅動程序製作兩條電線。然後我製作了一條導線來解決兩個驅動程序的問題 - 因爲如果任一驅動程序有0,解析信號將爲0,則supply0是更強的信號。如果任一驅動程序爲z或XI,則驅動已解析信號爲另一個信號的值。我還沒有運行我的改變,看它是否會導致任何模擬問題,但它現在編譯:) –