0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SystemVerilog:處理信號(hào)雙驅(qū)動(dòng)問題解析

sanyue7758 ? 來源:處芯積律 ? 2023-10-13 14:53 ? 次閱讀

1.前言

最近幫朋友搞定一個(gè)小問題,記錄一下。不啰嗦,直接上結(jié)論:當(dāng)某個(gè)信號(hào)出現(xiàn)多于一個(gè)驅(qū)動(dòng)源的時(shí)候,或者某個(gè)信號(hào)是雙向(inout)的時(shí)候,都需要使用wire來完成線網(wǎng)連接。具體用法就是聲明某個(gè)信號(hào)為wire sigal_a;或者wire logic signal_a;就可以了。注意直接聲明為logic signal_a;是不行的,會(huì)報(bào)類似如下的錯(cuò)誤:xmelab: *E,ICDCBA: Illegal combination of driver and output clockvar to variable 'signal_a' detected (output clockvar found in ......).

2. 實(shí)例代碼

776401b4-6910-11ee-939d-92fbcf53809c.png

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 *.log
4.仿真結(jié)果

77841e18-6910-11ee-939d-92fbcf53809c.png

5.報(bào)錯(cuò)信息查詢

如下圖所示,查詢報(bào)錯(cuò)信息的含義,xrun甚至還給出了解決方案,通過添加工具提供的選項(xiàng)-warn_multiple_driver的確可以將這個(gè)*E的Error降為Warning,但是這不是問題的根源。

77a0912e-6910-11ee-939d-92fbcf53809c.png

6. 問題的根源

如下圖所示,第4行和第5行的用法都是對(duì)的,第2行和第3行的用法都是錯(cuò)誤的。

77b7907c-6910-11ee-939d-92fbcf53809c.png

7. Summary& Conclusion

在SystemVerilog中,類型可以分為線網(wǎng)(net)和變量(variable)。線網(wǎng)的賦值設(shè)定與Verilog的要求相同,即線網(wǎng)賦值需要使用連續(xù)賦值語句(assign),而不應(yīng)該出現(xiàn)在過程塊(initial/always)中;相比于線網(wǎng)驅(qū)動(dòng)的限制,變量(var)類型的驅(qū)動(dòng)要求就沒有那么多了,如logic [15:0] signal_b,該變量默認(rèn)類型是var(變量),對(duì)它可以使用連續(xù)賦值或過程賦值。

簡(jiǎn)言之,可以在module中的數(shù)值存儲(chǔ)和線網(wǎng)連接,多數(shù)情況下使用logic類型變量,而很少有只能使用wire的情況。那么什么時(shí)候需要使用wire類型呢?就是本文的這種scenario:當(dāng)某個(gè)信號(hào)出現(xiàn)多于一個(gè)驅(qū)動(dòng)源的時(shí)候,或者某個(gè)信號(hào)是雙向(inout)的時(shí)候,都需要使用wire來完成線網(wǎng)連接。具體用法就是聲明某個(gè)信號(hào)為wire sigal_a;或者wire logic signal_a;就可以了。

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 信號(hào)處理
    +關(guān)注

    關(guān)注

    48

    文章

    1030

    瀏覽量

    103292
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1351

    瀏覽量

    110124
  • Makefile
    +關(guān)注

    關(guān)注

    1

    文章

    125

    瀏覽量

    19189

原文標(biāo)題:SystemVerilog中如何處理信號(hào)的雙驅(qū)動(dòng)問題

文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RCC電路原理與設(shè)計(jì)及問題解析

    RCC電路原理與設(shè)計(jì)及問題解析 RCC電路,單端反激式的一種,結(jié)構(gòu)簡(jiǎn)單,主要應(yīng)用在1~200W,首先變壓器設(shè)計(jì)最為重要,RCC電路結(jié)構(gòu)主要包括: 1.
    發(fā)表于 12-14 10:31 ?2.6w次閱讀

    C語言習(xí)題解析

    C語言習(xí)題解析
    發(fā)表于 03-11 15:20

    round robin 的 systemverilog 代碼

    大家好,我對(duì)一個(gè) round robin 的 systemverilog 代碼有疑惑。https://www.edaplayground.com/x/2TzD代碼第49和54行是怎么解析呢 ?
    發(fā)表于 03-14 19:16

    UART串口與LWIP以太網(wǎng)問題解析

    技術(shù)三千問:【技術(shù)三千問】之《玩轉(zhuǎn)ART-Pi》,看這篇就夠了!干貨匯總【技術(shù)三千問】之《AT組件問題匯總與解析》,干貨匯總!【技術(shù)三千問】之《UART串口問題解析》,干貨匯總!【技術(shù)三千問】之
    發(fā)表于 08-05 06:54

    電子設(shè)計(jì)競(jìng)賽賽題解析

    電子設(shè)計(jì)競(jìng)賽賽題解析 東西是非常不錯(cuò)的,可供參考.
    發(fā)表于 12-17 12:43 ?0次下載

    電視卡常見問題解決方法(驅(qū)動(dòng)問題等)

    電視卡常見問題解決方法(驅(qū)動(dòng)問題等) 比如有時(shí)發(fā)現(xiàn)裝不上驅(qū)動(dòng),請(qǐng)查看自已的系統(tǒng)是否已經(jīng)裝了DirectX9.0C,如果沒有,可以到
    發(fā)表于 12-06 08:37 ?2624次閱讀

    運(yùn)算放大器容性負(fù)載驅(qū)動(dòng)問

    運(yùn)算放大器容性負(fù)載驅(qū)動(dòng)問題 Grayson King,Analog Devices Inc. 問:為什么我要考慮驅(qū)動(dòng)容性負(fù)載問題?
    發(fā)表于 01-04 17:42 ?3795次閱讀
    運(yùn)算放大器容性負(fù)載<b class='flag-5'>驅(qū)動(dòng)問</b>題

    蘇泊爾微電腦電磁爐故障問題解析

    蘇泊爾微電腦電磁爐故障問題解析,本內(nèi)容介紹了蘇泊爾電磁爐故障問題的分析
    發(fā)表于 05-11 15:14 ?6802次閱讀
    蘇泊爾微電腦電磁爐故障問<b class='flag-5'>題解析</b>

    自動(dòng)控制原理習(xí)題解析

    自動(dòng)控制原理習(xí)題解析,有需要的下來看看。
    發(fā)表于 05-05 14:06 ?0次下載

    風(fēng)力擺控制系統(tǒng)賽題解析

    風(fēng)力擺控制系統(tǒng)賽題解析
    發(fā)表于 12-09 23:00 ?31次下載

    電工學(xué)知識(shí)要點(diǎn)與習(xí)題解析

     《高等學(xué)校優(yōu)秀教材?電工學(xué)知識(shí)要點(diǎn)與習(xí)題解析》為配合秦曾煌教授主編的《電工學(xué)》(第六版)而編寫的輔導(dǎo)書。《電工學(xué)知識(shí)要點(diǎn)與習(xí)題解析/高等學(xué)校優(yōu)秀教材輔導(dǎo)叢書》主要包括知識(shí)要點(diǎn)、書后思考題解答、書后
    發(fā)表于 01-10 11:48 ?57次下載
    電工學(xué)知識(shí)要點(diǎn)與習(xí)<b class='flag-5'>題解析</b>

    解決高頻MEMS測(cè)試驅(qū)動(dòng)問題的方案是什么

    ,驅(qū)動(dòng)電壓需要達(dá)到150Vpp,目前市面上的標(biāo)準(zhǔn)信號(hào)發(fā)生器輸出電壓低、電壓小于10Vpp帶負(fù)載能力弱,輸出電流是mA級(jí)別。無法解決高壓大功率驅(qū)動(dòng)問題。 如何解決高頻MEMS測(cè)試驅(qū)動(dòng)問
    發(fā)表于 12-08 11:32 ?823次閱讀

    樊昌信《通信原理》真題解析及講義電子版

    樊昌信《通信原理》真題解析及講義電子版
    發(fā)表于 09-06 14:40 ?0次下載

    光耦失效的幾種常見問題解析

    光耦失效的幾種常見問題解析? 光耦失效是一個(gè)常見的問題,特別是在電子設(shè)備中經(jīng)常使用光耦進(jìn)行隔離和信號(hào)傳輸?shù)那闆r下。下面將詳細(xì)介紹一些光耦失效的常見問題以及解析。 1. 輸出信號(hào)弱或無輸
    的頭像 發(fā)表于 12-25 14:30 ?6519次閱讀

    USB驅(qū)動(dòng)問題:設(shè)備無法識(shí)別的全面指南!

    今天我把USB驅(qū)動(dòng)問題,關(guān)于設(shè)備無法識(shí)別方面做一個(gè)全面指南供大家參考。連接USB無法識(shí)別模組設(shè)備,是不是驅(qū)動(dòng)問題?今天就一起來聊聊如何排查解決。
    的頭像 發(fā)表于 11-26 12:35 ?393次閱讀
    USB<b class='flag-5'>驅(qū)動(dòng)問</b>題:設(shè)備無法識(shí)別的全面指南!