在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

怎么才能寫出高覆蓋率的Verilog代碼?

電子工程師 ? 來源:硅農(nóng) ? 作者:硅農(nóng) ? 2021-06-01 10:13 ? 次閱讀

芯片前端工程中,測(cè)試驗(yàn)證的核心理念:以提高覆蓋率為核心。設(shè)計(jì)工程師需要關(guān)心的主要有行覆蓋率(Block),條件覆蓋率(Expression),翻轉(zhuǎn)覆蓋率(Toggle),狀態(tài)機(jī)覆蓋率。本文從ASIC設(shè)計(jì)的角度上來討論,如何寫出高覆蓋率的Verilog代碼。assign慎用按位運(yùn)算邏輯,& | ^ ^~和三目運(yùn)算符,慎用。使用這樣的描述方式本身功能并沒有什么問題,而且寫起來很爽,但是在很多情況下覆蓋率是真的不好收。

assign mult_a[3:0] = ({4{mult0_vld}} & mult_a0) | ({4{mult1_vld}} & mult_a1) | ({4{mult2_vld}} & mult_a2)

用或門和與門實(shí)現(xiàn)的一個(gè)選擇器的功能,前提是vld不能同時(shí)有效,相對(duì)于下面第二種寫法可能會(huì)節(jié)省一點(diǎn)門。但是問題我們?cè)谑占疎xpression時(shí)需要分析每一個(gè)條件是否跑到0/1,上面一共有六個(gè)信號(hào),所以0、1隨機(jī)組合的情況就有2的6次方種,mult_a0作為數(shù)據(jù)端,如果沒有出現(xiàn)過全0的情況,通過定向case可以覆蓋到,但如果是參數(shù)作為選擇器的輸入端,那么參數(shù)本身就是有永遠(yuǎn)不為0的情況,定向case也無法通過。

所以這個(gè)時(shí)候就只能把它waive(放棄)/exclude(排除)掉,并解釋原因。如果只有幾條這樣的寫法還好,如果有成百上千條,那么就需要重復(fù)上面的操作上千次。單純的體力活,沒有任何技術(shù)含量。但是直接換一種寫法。

always @(*)begin if(mult0_vld) mult_a[3:0] = mult_a0; else if(mult1_vld) mult_a[3:0] = mult_a1; else // if(mult2_vld) mult_a[3:0] = mult_a2;end

這樣寫覆蓋率只會(huì)檢查行覆蓋率,基本上哪一行沒跑到一目了然,也并不需要多余的體力勞動(dòng)。代碼可讀性也很高。第二種可能會(huì)消耗更多的邏輯,但是對(duì)于整體的系統(tǒng)而言,也是不值一提的。換句話說,扣這一毛兩毛的,要抓大頭。if-else括號(hào)中的條件不要太多

always @(*)begin if(data_vld && mode_sel && enable_flag && (data_num[3:0] 》 4‘d7) && (ram_addr[4:0] 》 4’d15) && 。。。)end else 。。。

當(dāng)然最開始的時(shí)候肯定不是這樣的設(shè)計(jì),造成如此冗長(zhǎng)的邏輯,大概率是后期調(diào)試打的補(bǔ)丁,可以把一些條件拿出來專門做一個(gè)信號(hào),會(huì)讓條件覆蓋率分析容易很多,不然這么長(zhǎng)的選擇,真不是給人看的。cur_state不可能同時(shí)出現(xiàn)在兩個(gè)狀態(tài)上在控制上用狀態(tài)機(jī)中,假如有這樣的邏輯。

assign enable = ((cur_state != STATE_A) && (next_state == STATE_A)) || ((cur_state != STATE_B) && (next_state == STATE_B))

這樣的寫法目的是在狀態(tài)跳轉(zhuǎn)時(shí)產(chǎn)生一個(gè)脈沖信號(hào),不過在條件覆蓋率中會(huì)檢查這兩個(gè)選擇條件,cur_state != STATE_A為0與cur_state != STATE_B為0同時(shí)滿足的情況。仔細(xì)想一下,cur_state != STATE_A為0就代表cur_state現(xiàn)在就是STATE_A狀態(tài),cur_state != STATE_B為0就是代表cur_state現(xiàn)在就是STATE_B狀態(tài),那么,cur_state怎么可能同時(shí)為兩個(gè)狀態(tài)呢。這樣的情況要么就拆開寫要么就別寫。case語(yǔ)句的default分支考慮周全

always @(*)begin case(in[1:0]) 2‘d0 : data[1:0] = 2’d0; 2‘d1 : data[1:0] = 2’d1; 2‘d2 : data[1:0] = 2’d2; default : data[1:0] = 2‘d3; endcase end

case語(yǔ)句不寫default分支會(huì)產(chǎn)生鎖存器,如果case中的所有情況都達(dá)到,就可以不用寫default分支,但在ASIC設(shè)計(jì)中可能工具會(huì)報(bào)lint,所以這樣的寫法是最完美的。這樣的寫法對(duì)于in這個(gè)變量如果有規(guī)定取值范圍,哪一個(gè)值沒取到也一目了然。教科書式的反面教材

always @(*)begin if(start) cnt 《= ’d0; else if(((para == 3) && (cnt != 3)) || ((para == 4) && (cnt != 7)) || ((para == 5) && (cnt != 15)) || ((para == 6) && (cnt != 31))) cnt 《= cnt + 1‘d1;。。.end

這樣的寫法我愿稱之為教科書式的反面教材。首先,計(jì)數(shù)器的常規(guī)套路是給一個(gè)使能進(jìn)行計(jì)數(shù),記到一個(gè)值然后給清零,上面這樣的寫法是直接給一個(gè)使能信號(hào)清零,然后用未記到想要的最大值來做使能。第二點(diǎn)是,這樣的寫法和上面cur_state同時(shí)出現(xiàn)在兩個(gè)狀態(tài)上,是一樣的。else if里面的條件進(jìn)行條件覆蓋率檢查,會(huì)出現(xiàn)cnt != 3 cnt != 7 cnt != 15 cnt != 31 兩兩之間或者及以上同時(shí)為0的隨機(jī)組合,那么cnt一個(gè)時(shí)刻只能是一個(gè)值,必不可能滿足同時(shí)等于多個(gè)值的情況。參數(shù)的取值范圍一個(gè)參數(shù)的取值范圍是0,1,2三個(gè)值,你做了一個(gè)這樣的vld

assign data_vld = (param == 0) || (param == 1) || (param == 2);

條件覆蓋率檢查會(huì)出現(xiàn),上面三個(gè)條件都為0的情況,但是這個(gè)參數(shù)配置只有這三個(gè)值,不可能去其他值,也是一個(gè)典型的情況。換一種寫法。最后很多的代碼寫法,工具有smart exclude也會(huì)自動(dòng)waive一些分支,不過工具也沒那么smart,還是需要自己在編碼的時(shí)候注意,盡量避免很多體力活。評(píng)論區(qū)支持互動(dòng)回復(fù)蓋樓了,關(guān)于這個(gè)問題你還有什么想法,歡迎評(píng)論區(qū)留言交流。

編輯:jq

聲明:本文內(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)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    456

    文章

    51263

    瀏覽量

    427749
  • asic
    +關(guān)注

    關(guān)注

    34

    文章

    1206

    瀏覽量

    120816
  • 鎖存器
    +關(guān)注

    關(guān)注

    8

    文章

    911

    瀏覽量

    41666
  • 選擇器
    +關(guān)注

    關(guān)注

    0

    文章

    109

    瀏覽量

    14591

原文標(biāo)題:如何寫出高覆蓋率的Verilog代碼?

文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Verilog 與 ASIC 設(shè)計(jì)的關(guān)系 Verilog 代碼優(yōu)化技巧

    Verilog與ASIC設(shè)計(jì)的關(guān)系 Verilog作為一種硬件描述語(yǔ)言(HDL),在ASIC設(shè)計(jì)中扮演著至關(guān)重要的角色。ASIC(Application Specific Integrated
    的頭像 發(fā)表于 12-17 09:52 ?279次閱讀

    Verilog 測(cè)試平臺(tái)設(shè)計(jì)方法 Verilog FPGA開發(fā)指南

    Verilog設(shè)計(jì)的仿真需求。 編寫測(cè)試文件 : 編寫Verilog測(cè)試文件,對(duì)設(shè)計(jì)的各個(gè)模塊進(jìn)行測(cè)試。測(cè)試文件應(yīng)覆蓋各種情況,包括正
    的頭像 發(fā)表于 12-17 09:50 ?449次閱讀

    Verilog與VHDL的比較 Verilog HDL編程技巧

    Verilog 與 VHDL 比較 1. 語(yǔ)法和風(fēng)格 VerilogVerilog 的語(yǔ)法更接近于 C 語(yǔ)言,對(duì)于有 C 語(yǔ)言背景的工程師來說,學(xué)習(xí)曲線較平緩。它支持結(jié)構(gòu)化編程,代碼
    的頭像 發(fā)表于 12-17 09:44 ?403次閱讀

    讓單片機(jī)代碼性能起飛的七大技巧

    大廠工程師,也會(huì)有讓人笑掉大牙的代碼。 ? ? ? ? ? 高效的背后,有很多學(xué)問,需要有一定的數(shù)學(xué)功底,對(duì)編譯器有較深的了解,懂匯編。 ? ? ? ? ? 具備這些能力,寫出來的代碼才能
    的頭像 發(fā)表于 11-16 10:21 ?692次閱讀
    讓單片機(jī)<b class='flag-5'>代碼</b>性能起飛的七大技巧

    如何寫出穩(wěn)定的單片機(jī)代碼

    這篇文章分享怎么寫出穩(wěn)定的單片機(jī)代碼。? ?? 我對(duì)優(yōu)秀代碼的理解,大體分為兩個(gè)部分:高效和穩(wěn)定。 ? 兩者都能做到很好的,如果靠自己摸索,沒有刻意去練習(xí),可能需要花10年,甚至更久
    的頭像 發(fā)表于 11-15 16:40 ?488次閱讀
    如何<b class='flag-5'>寫出</b>穩(wěn)定的單片機(jī)<b class='flag-5'>代碼</b>

    如何自動(dòng)生成verilog代碼

    介紹幾種自動(dòng)生成verilog代碼的方法。
    的頭像 發(fā)表于 11-05 11:45 ?457次閱讀
    如何自動(dòng)生成<b class='flag-5'>verilog</b><b class='flag-5'>代碼</b>

    Verilog硬件描述語(yǔ)言參考手冊(cè)

    一. 關(guān)于 IEEE 1364 標(biāo)準(zhǔn)二. Verilog簡(jiǎn)介三. 語(yǔ)法總結(jié)四. 編寫Verilog HDL源代碼的標(biāo)準(zhǔn)五. 設(shè)計(jì)流程
    發(fā)表于 11-04 10:12 ?4次下載

    synopsys 的design ware:DW_fpv_div,浮點(diǎn)數(shù)除法器,默認(rèn)32位下,想提升覆蓋率(TMAX),如果用功能case去提升覆蓋率呢?

    覆蓋率只有微微的提升,請(qǐng)問是否要遍歷很多數(shù)才能提升覆蓋率嗎?一般這種浮點(diǎn)數(shù)有什么方法去跑嗎? 每個(gè)數(shù)都跑豈不是天文數(shù)字,本人剛接觸不久,請(qǐng)大佬指教下,謝謝
    發(fā)表于 10-15 18:38

    怎么樣提高verilog代碼編寫水平?

    ,共同進(jìn)步。 歡迎加入FPGA技術(shù)微信交流群14群! 交流問題(一) Q:怎么樣提高verilog代碼編寫水平?Cpu 從事DFT工作。目前僅限于寫一些簡(jiǎn)單模塊。自學(xué)的話如何提高verilog編寫水平
    發(fā)表于 09-25 20:05

    FPGA Verilog HDL代碼如何debug?

    ,共同進(jìn)步。 歡迎加入FPGA技術(shù)微信交流群14群! 交流問題(一) Q:Verilog代碼如何debug?最近學(xué)習(xí)fpga,寫了不少verilog,開始思考如何debug的問題!c語(yǔ)言是順序執(zhí)行,而
    發(fā)表于 09-24 19:16

    利用靜態(tài)檢查工具完善功能安全中測(cè)試覆蓋率

    在功能安全中測(cè)試覆蓋率是比較重要的概念,也是在驗(yàn)證過程中通常需要花費(fèi)時(shí)間較多的步驟,如果能借助于靜態(tài)檢查工具的死邏輯查找和聲明、測(cè)試用例自動(dòng)補(bǔ)全等功能往往能取得事半功倍的效果。
    的頭像 發(fā)表于 09-05 09:15 ?426次閱讀
    利用靜態(tài)檢查工具完善功能安全中測(cè)試<b class='flag-5'>覆蓋率</b>

    單元測(cè)試工具TESSY 新版本亮點(diǎn)速覽:提供測(cè)試駕駛艙視圖、超級(jí)覆蓋率代碼訪問分析、增強(qiáng)覆蓋率審查

    各種測(cè)試對(duì)象和方法的所有覆蓋率測(cè)量結(jié)果,并記錄在新的測(cè)試總結(jié)報(bào)告中。 了解更多TESSY新版本功能詳情或申請(qǐng)免費(fèi)試用,歡迎咨詢TESSY中國(guó)授權(quán)分銷商——龍智。 新版本功能亮點(diǎn)速覽: 1、超級(jí)覆蓋率 逐行評(píng)估源代碼。 基于標(biāo)準(zhǔn)
    的頭像 發(fā)表于 07-08 16:20 ?502次閱讀
    單元測(cè)試工具TESSY 新版本亮點(diǎn)速覽:提供測(cè)試駕駛艙視圖、超級(jí)<b class='flag-5'>覆蓋率</b>、<b class='flag-5'>代碼</b>訪問分析、增強(qiáng)<b class='flag-5'>覆蓋率</b>審查

    如何將SystemVerilog斷言屬性和覆蓋屬性置于在設(shè)計(jì)上?

    功能覆蓋、激勵(lì)生成和運(yùn)行管理是當(dāng)今功能驗(yàn)證的三大相互關(guān)聯(lián)的任務(wù)。其中,功能覆蓋率可以說是最重要的,主要是因?yàn)?b class='flag-5'>覆蓋率收斂是tape的主要標(biāo)準(zhǔn)。
    的頭像 發(fā)表于 05-28 10:30 ?836次閱讀
    如何將SystemVerilog斷言屬性和<b class='flag-5'>覆蓋</b>屬性置于在設(shè)計(jì)上?

    如何寫出時(shí)序最優(yōu)的HDL代碼?如何寫出時(shí)序裕量足夠的代碼

    你想寫出可以跑出700M以上的代碼嗎,直逼FPGA內(nèi)部PLL的極限。
    的頭像 發(fā)表于 03-12 09:59 ?995次閱讀
    如何<b class='flag-5'>寫出</b>時(shí)序最優(yōu)的HDL<b class='flag-5'>代碼</b>?如何<b class='flag-5'>寫出</b>時(shí)序裕量足夠的<b class='flag-5'>代碼</b>?

    verilog function函數(shù)的用法

    Verilog 是一種硬件描述語(yǔ)言 (HDL),主要用于描述數(shù)字電子電路的行為和結(jié)構(gòu)。在 Verilog 中,函數(shù) (Function) 是一種用于執(zhí)行特定任務(wù)并返回一個(gè)值的可重用代碼塊。函數(shù)在
    的頭像 發(fā)表于 02-22 15:49 ?6092次閱讀
    主站蜘蛛池模板: 国产免费久久精品99 | 久国产精品久久精品国产四虎 | 日韩精品一区二区三区毛片 | 特色一级黄色片 | 成年女人毛片免费观看97 | 欧美性猛交xxxx免费 | 在线免费成人网 | 一级做a爰片久久毛片人呢 一级做a爰片久久毛片图片 | 亚洲三级在线免费观看 | 激情综合五月天丁香婷婷 | 色老头成人免费视频天天综合 | 国产免费高清福利拍拍拍 | 一二三区在线观看 | 成熟妇女毛耸耸性视频 | 国产成人综合久久 | 手机看片自拍自拍自拍 | 91大神免费视频 | 国产精品一区二区三区免费视频 | 色视频色露露永久免费观看 | 亚洲天堂成人在线 | 99热久久精品最新 | 男啪女色黄无遮挡免费观看 | 久久精品大全 | 精品国产免费人成高清 | 亚洲欧美经典 | 久久婷婷六月 | 视频色www永久免费 视频色版 | 丁香月婷婷 | 伊人网站在线 | 国产三级精品三级在线观看 | 国产精品免费久久 | 好吊色7777sao在线视频观看 | 亚洲一区二区三区四区在线观看 | 大黄香蕉 | 啪啪网站免费看 | 午夜视频在线观看视频 | 卡1卡2卡3精品推荐老狼 | 国内在线观看精品免费视频 | 欧美色视频日本片高清在线观看 | 亚洲已满18点击进入在线观看 | 伊人99|