1.前言
最近幫朋友搞定一個(gè)小問(wèn)題,記錄一下。不啰嗦,直接上結(jié)論:當(dāng)某個(gè)信號(hào)出現(xiàn)多于一個(gè)驅(qū)動(dòng)源的時(shí)候,或者某個(gè)信號(hào)是雙向(inout)的時(shí)候,都需要使用wire來(lái)完成線(xiàn)網(wǎng)連接。具體用法就是聲明某個(gè)信號(hào)為wire sigal_a;或者wire logic signal_a;就可以了。注意直接聲明為logic signal_a;是不行的,會(huì)報(bào)類(lèi)似如下的錯(cuò)誤:xmelab: *E,ICDCBA: Illegal combination of driver and output clockvar to variable 'signal_a' detected (output clockvar found in ......).
2. 實(shí)例代碼
interface test_if(input clk); //var logic multi_drv_sig;//code bug logic multi_drv_sig;//code bug //wire logic multi_drv_sig;//ok //wire multi_drv_sig;//ok clocking cb @(posedge clk); inout multi_drv_sig; endclocking modport modp_0(output multi_drv_sig); modport modp_1(input multi_drv_sig); endinterface module test(); test_if test_if0(); assign test_if0.modp_1.multi_drv_sig=0; endmodule
3.Makefile腳本
all:clean xrun -sv -64bit -access rwc -top test ./*.sv clean: rm -rf *.d *.history *.log4.仿真結(jié)果
5.報(bào)錯(cuò)信息查詢(xún)
如下圖所示,查詢(xún)報(bào)錯(cuò)信息的含義,xrun甚至還給出了解決方案,通過(guò)添加工具提供的選項(xiàng)-warn_multiple_driver的確可以將這個(gè)*E的Error降為Warning,但是這不是問(wèn)題的根源。
6. 問(wèn)題的根源
如下圖所示,第4行和第5行的用法都是對(duì)的,第2行和第3行的用法都是錯(cuò)誤的。
7. Summary& Conclusion
在SystemVerilog中,類(lèi)型可以分為線(xiàn)網(wǎng)(net)和變量(variable)。線(xiàn)網(wǎng)的賦值設(shè)定與Verilog的要求相同,即線(xiàn)網(wǎng)賦值需要使用連續(xù)賦值語(yǔ)句(assign),而不應(yīng)該出現(xiàn)在過(guò)程塊(initial/always)中;相比于線(xiàn)網(wǎng)驅(qū)動(dòng)的限制,變量(var)類(lèi)型的驅(qū)動(dòng)要求就沒(méi)有那么多了,如logic [15:0] signal_b,該變量默認(rèn)類(lèi)型是var(變量),對(duì)它可以使用連續(xù)賦值或過(guò)程賦值。
簡(jiǎn)言之,可以在module中的數(shù)值存儲(chǔ)和線(xiàn)網(wǎng)連接,多數(shù)情況下使用logic類(lèi)型變量,而很少有只能使用wire的情況。那么什么時(shí)候需要使用wire類(lèi)型呢?就是本文的這種scenario:當(dāng)某個(gè)信號(hào)出現(xiàn)多于一個(gè)驅(qū)動(dòng)源的時(shí)候,或者某個(gè)信號(hào)是雙向(inout)的時(shí)候,都需要使用wire來(lái)完成線(xiàn)網(wǎng)連接。具體用法就是聲明某個(gè)信號(hào)為wire sigal_a;或者wire logic signal_a;就可以了。
編輯:黃飛
-
信號(hào)處理
+關(guān)注
關(guān)注
48文章
1043瀏覽量
103425 -
Verilog
+關(guān)注
關(guān)注
28文章
1352瀏覽量
110449 -
Makefile
+關(guān)注
關(guān)注
1文章
125瀏覽量
19225
原文標(biāo)題:SystemVerilog中如何處理信號(hào)的雙驅(qū)動(dòng)問(wèn)題
文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
RCC電路原理與設(shè)計(jì)及問(wèn)題解析
round robin 的 systemverilog 代碼
UART串口與LWIP以太網(wǎng)問(wèn)題解析
電視卡常見(jiàn)問(wèn)題解決方法(驅(qū)動(dòng)問(wèn)題等)
運(yùn)算放大器容性負(fù)載驅(qū)動(dòng)問(wèn)題
![運(yùn)算放大器容性負(fù)載<b class='flag-5'>驅(qū)動(dòng)問(wèn)</b>題](https://file1.elecfans.com//web2/M00/A5/70/wKgZomUMOHGAWFPRAAJp8xni3jE057.gif)
蘇泊爾微電腦電磁爐故障問(wèn)題解析
![蘇泊爾微電腦電磁爐故障問(wèn)<b class='flag-5'>題解析</b>](https://file1.elecfans.com//web2/M00/A6/35/wKgZomUMPEmABnk6AAAV1sBAioU140.jpg)
電工學(xué)知識(shí)要點(diǎn)與習(xí)題解析
![電工學(xué)知識(shí)要點(diǎn)與習(xí)<b class='flag-5'>題解析</b>](https://file.elecfans.com/web1/M00/B2/F3/o4YBAF4YEniAIH1BAAA5LIDgHWk119.png)
解決高頻MEMS測(cè)試驅(qū)動(dòng)問(wèn)題的方案是什么
光耦失效的幾種常見(jiàn)問(wèn)題解析
USB驅(qū)動(dòng)問(wèn)題:設(shè)備無(wú)法識(shí)別的全面指南!
![USB<b class='flag-5'>驅(qū)動(dòng)問(wèn)</b>題:設(shè)備無(wú)法識(shí)別的全面指南!](https://file1.elecfans.com/web1/M00/F5/D4/wKgZoWdFT06AZweFAAL6vbGBa2E343.png)
評(píng)論