我有一條大約4層深的電線,我真的不想讓它在層次結構中傳播的麻煩。有什麼方法可以使用某種引用來分配導線?我知道我可以通過鍵入訪問線:在一組嵌套模塊中深度分配電線
cca.cpu0.cca3_cpu.nc1_cp_checkpoint
但
assign cca.cpu0.cca3_cpu.nc1_cp_checkpoint = checkpoint;
不起作用
人知道任何方式做到這一點?
我有一條大約4層深的電線,我真的不想讓它在層次結構中傳播的麻煩。有什麼方法可以使用某種引用來分配導線?我知道我可以通過鍵入訪問線:在一組嵌套模塊中深度分配電線
cca.cpu0.cca3_cpu.nc1_cp_checkpoint
但
assign cca.cpu0.cca3_cpu.nc1_cp_checkpoint = checkpoint;
不起作用
人知道任何方式做到這一點?
既然你沒有顯示足夠的代碼讓任何人重現你的問題,也沒有透露你的問題的任何細節,我們所能做的只是猜測。
我的猜測是nc1_cp_checkpoint
在您的cca3_cpu
實例中聲明爲reg
。您無法使用連續賦值將值分配給reg
。嘗試使用一個程序分配(一initial
或always
塊內),例如:
initial begin
cca.cpu0.cca3_cpu.nc1_cp_checkpoint = checkpoint;
end
如果這不能解決您的問題:
更新:另一個潛在的問題出現,如果nc1_cp_checkpoint
是連續驅動wire
您cca3_cpu
實例內。在這種情況下,您的第二個assign
可能會導致爭用,這會導致值不明(x
)。您可以使用force
和release
來避免該問題。
謝謝!我查了一下,意識到自從我模擬我需要使用武力和釋放。 nc1_cp_checkpoint是一個連線,它在我的測試平臺中的一個初始塊內,抱歉我應該更加清楚。 – Adam 2010-02-02 13:13:02
從您的標籤,您似乎表明您正在使用VCS。你會得到一個:
Error-[XMRE] Cross-module reference resolution error
Cross module resolution failed, token BLAH'.
Originating module 'foo'. "foo.v", 666:
這將表明您的路徑不正確。
跨模塊引用可以工作,但如果您將設計限制爲可合成結構,則可能無法啓用它們。在VCS用戶指南中查找「跨模塊參考」。
雖然這不是問題,但我沒有不知道這個,所以謝謝你指出! – Adam 2010-02-02 13:12:35
相關的和潛在的興趣:可以通過利用函數中的靜態變量來傳播連接,使用可合成的構造來實現這一點https://github.com/chiggs/hidden_wires – Chiggs 2013-12-16 17:09:15