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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

如何遍歷force多位寬信號的每一比特?

sanyue7758 ? 來源:硅芯思見 ? 2023-07-12 09:35 ? 次閱讀

大家在構(gòu)建測試激勵時,經(jīng)常會遇到需要使某個信號強制變成某個值,此時我們經(jīng)常會用到Verilog和SystemVerilog中的force實現(xiàn)這樣的功能。但是有時候在對多位寬的信號進行force時有時會出現(xiàn)編譯錯誤,這是為什么呢?本文將對此類情況進行示例說明。

【示例】

ebc0038a-1ffc-11ee-962d-dac502259ad0.png

仿真結(jié)果】

ebe4a1c2-1ffc-11ee-962d-dac502259ad0.png

示例中,通過三種方式對sig中的部分位選進行了force。通過force將sig中的第0位force為了1,從顯示信息可以看到sig[0]已經(jīng)被修改;通過force將sig中的第0位和第1位force為了00,從顯示信息可以看到sig[1:0]已經(jīng)被修改;通過force將sig整體force為了0111,從顯示信息可以看到sig[1:0]已經(jīng)被修改;

可以看到,我們可以通過force對于變量、變量中的某一位或者某一個片段進行改變,那么可能有些人覺得這么一位一位的進行force太麻煩了,是否可以使用for循環(huán)對sig中所有位遍歷進行force呢?請看下例。

【示例】

ebf79fca-1ffc-11ee-962d-dac502259ad0.png

【仿真結(jié)果】

ec34e006-1ffc-11ee-962d-dac502259ad0.png

編譯錯誤!這是為什么呢?對比該示例和上一示例,可以發(fā)現(xiàn)當信號的索引為常值時,可以進行force,但是當索引為變量時,此時編譯不通過。

也就是說在對信號進行force的時候,如果要對其中的某一位或者一個片段進行force時,其中的索引只能是常數(shù)不能是變量,否則將會導致便以失敗。

那么如果想實現(xiàn)通過變量實現(xiàn)對于多位寬信號中每一位進行force還有什么辦法嗎?下面我們通過示例介紹幾種。

【示例】使用generate結(jié)構(gòu)

ec46877a-1ffc-11ee-962d-dac502259ad0.png

【仿真結(jié)果】

ec5d28d6-1ffc-11ee-962d-dac502259ad0.png

示例中,使用generate結(jié)構(gòu)實現(xiàn)了對于sig中每一位的遍歷。這其實借助了generate是在仿真前的析構(gòu)(elaboration)階段完成的特性,即在仿真開始之前,相當于已經(jīng)將sig被force的每一位的initial結(jié)構(gòu)都已經(jīng)生成好了,這樣在仿真開始執(zhí)行時(生成好的initial塊開始被執(zhí)行時),其中“force sig[i]”中的i都已經(jīng)是確定的值了,因此就可以避免force信號中某一位時,索引為變量的情況。

除了這種在析構(gòu)(elaboration)階段就生成好語句結(jié)構(gòu)的方式外,還可以想如下方式操作。

【示例】

ec719d84-1ffc-11ee-962d-dac502259ad0.png

【仿真結(jié)果】

ec8f34de-1ffc-11ee-962d-dac502259ad0.png

示例中,實際上是將要force的信號每一位都單獨寫了出來,即保證了被force信號的索引都是常量,缺點是,如果這個信號比較寬,那么寫起來比較枯燥,沒有上一種使用generate結(jié)構(gòu)方便。但是實際上兩者之所有都沒有問題,其實都是保證了被force信號的索引是個常值。

所以,如果在實際使用時,需要對多位寬信號的每一位或者某一個片段進行force,那么需要保證被force的那一位或者那一個片段的索引值在仿真運行開始時是常值。






審核編輯:劉清

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

    關注

    14

    文章

    1014

    瀏覽量

    83591
  • Verilog語言
    +關注

    關注

    0

    文章

    113

    瀏覽量

    8206

原文標題:如何遍歷force多位寬信號的每一比特

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

收藏 人收藏

    評論

    相關推薦

    多位數(shù)據(jù)通過握手方式跨時鐘域

    對于多位數(shù)據(jù),我們可以采用握手方式實現(xiàn)跨時鐘域操作。該方式可直接使用xpm_cdc_handshake實現(xiàn),如下圖所示。
    的頭像 發(fā)表于 05-06 09:22 ?1075次閱讀
    <b class='flag-5'>多位</b><b class='flag-5'>寬</b>數(shù)據(jù)通過握手方式跨時鐘域

    求教縱線有有窄的怎么知道條線對應的數(shù)值呢?

    求大神告知這種圖要怎么看?。?、縱線有有窄的怎么知道條線對應的數(shù)值呢?
    發(fā)表于 08-09 14:44

    同步從個時鐘域到另個時鐘域的多位信號怎么實現(xiàn)?

    你好,我在Viv 2016.4上使用AC701板。我需要同步從個時鐘域到另個時鐘域的多位信號(33位)。對我來說,這個多位
    發(fā)表于 08-17 07:48

    I-Force410無鐵芯直線電機

    I-Force 410 無鐵芯直線電機峰值推力可達 3928N, 卓越的加速度和緊湊的體積. 50.8mm 的無鐵芯設計具有零齒槽效應力,同時工字型骨架繞組提供很高的推力/體積密度比和優(yōu)越的散熱
    發(fā)表于 09-01 08:54

    LS1046 SDRAM多位錯誤注入怎么處理?

    ) 來注入 ECC 多位錯誤,但它崩潰了。但它通過使用上述寄存器 DATA_ERR_INJECT_HI(設置為 0x01 用于位 0 反轉(zhuǎn))來進行單比特錯誤注入,單比特錯誤由 ERR_DETECT 檢測。有什么想法可以防止崩潰或
    發(fā)表于 03-28 07:19

    Design of Crimp force Monitor

    Crimp Force Monitor is a product using highly sensitive force sensors to detectdefective crimping.
    發(fā)表于 08-25 15:05 ?21次下載

    存儲百倍提升! IBM納米技術(shù)1比特12原子

    提到存儲,比特(bit)是最小的單位,然而一比特需要多少個原子呢?最近IBM的研究人員用納米技術(shù)詮釋了這概念,存儲一比特信息僅需12個原子。
    發(fā)表于 01-16 09:30 ?4461次閱讀

    二叉樹的前序遍歷、中序遍歷、后續(xù)遍歷的非遞歸實現(xiàn)

    前序遍歷:先訪問該節(jié)點,然后訪問該節(jié)點的左子樹和右子樹; 中序遍歷:先訪問該節(jié)點的左子樹,然后訪問該節(jié)點,再訪問該節(jié)點的右子樹; 后序遍歷:想訪問該節(jié)點的左子樹和右子樹,然后訪問該節(jié)點。
    發(fā)表于 11-27 11:24 ?1119次閱讀

    jquery的each遍歷方法

    本文為大家介紹Jquery中each的三種遍歷方法,有興趣的伙伴可以參考下。
    發(fā)表于 12-03 10:19 ?2532次閱讀

    螺旋遍歷二維數(shù)組漫畫講解

    來自公眾號:程序員小灰 第二天 什么意思呢?我們來舉個例子,給定下面這樣個二維數(shù)組: 我們需要從左上角的元素1開始,按照順時針進行螺旋遍歷遍歷完所有的元素,
    的頭像 發(fā)表于 11-26 14:01 ?1719次閱讀

    總結(jié)下OpenCV遍歷圖像的幾種方法

    在圖形處理中,遍歷每個像素點是最基本的功能,是做算法的基礎,這篇文章來總結(jié)下OpenCV遍歷圖像的幾種方法。
    的頭像 發(fā)表于 01-18 15:08 ?1670次閱讀

    HashMap遍歷操作為什么不能遍歷遍刪除呢?

    上面出現(xiàn)這樣的原因是在使用 foreach 對 HashMap 進行遍歷時,同時進行 put 賦值操作會有問題,異常 ConcurrentModificationException。
    的頭像 發(fā)表于 02-10 11:25 ?534次閱讀

    跨時鐘域電路設計:多位數(shù)據(jù)通過FIFO跨時鐘域

    FIFO是實現(xiàn)多位數(shù)據(jù)的異步跨時鐘域操作的常用方法,相比于握手方式,F(xiàn)IFO方面允許發(fā)送端在每個時鐘周期都發(fā)送數(shù)據(jù),另方面還可以對數(shù)據(jù)進行緩存。需要注意的是對FIFO控制
    的頭像 發(fā)表于 05-11 14:01 ?2879次閱讀
    跨時鐘域電路設計:<b class='flag-5'>多位</b><b class='flag-5'>寬</b>數(shù)據(jù)通過FIFO跨時鐘域

    對于多位的異步信號如何進行同步呢?

    對于多位的異步信號如何進行同步呢? 異步信號(Asynchronous Signals)是指系統(tǒng)中發(fā)生的事件或者信號,它們的發(fā)生時間不可預測、不可控制,與其他的進程、線程以及系統(tǒng)中的各
    的頭像 發(fā)表于 09-12 11:18 ?1363次閱讀

    python如何遍歷列表并提取

    遍歷列表是Python中非常常見的操作之,可以使用for循環(huán)或者while循環(huán)來實現(xiàn)。下面我將詳細介紹如何使用for循環(huán)遍歷列表并提取元素。 首先,讓我們簡單了解下Python中的
    的頭像 發(fā)表于 11-23 15:55 ?1242次閱讀