色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

高覆蓋率的Verilog代碼的編寫技巧

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-05-26 17:30 ? 次閱讀

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

assign mult_a[3:0] = ({4{mult0_vld}} & mult_a0)       
     | ({4{mult1_vld}} & mult_a1)    
        | ({4{mult2_vld}} & mult_a2)
用或門和與門實現的一個選擇器的功能,前提是vld不能同時有效,相對于下面第二種寫法可能會節省一點門。 但是問題我們在收集Expression時需要分析每一個條件是否跑到0/1,上面一共有六個信號,所以0、1隨機組合的情況就有2的6次方種,mult_a0作為數據端,如果沒有出現過全0的情況,通過定向case可以覆蓋到,但如果是參數作為選擇器的輸入端,那么參數本身就是有永遠不為0的情況,定向case也無法通過。 所以這個時候就只能把它waive(放棄)/exclude(排除)掉,并解釋原因。如果只有幾條這樣的寫法還好,如果有成百上千條,那么就需要重復上面的操作上千次。單純的體力活,沒有任何技術含量。但是直接換一種寫法。
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
這樣寫覆蓋率只會檢查行覆蓋率,基本上哪一行沒跑到一目了然,也并不需要多余的體力勞動。代碼可讀性也很高。第二種可能會消耗更多的邏輯,但是對于整體的系統而言,也是不值一提的。換句話說,扣這一毛兩毛的,要抓大頭。 if-else括號中的條件不要太多
always @(*)begin  if(data_vld && mode_sel && enable_flag && (data_num[3:0] > 4'd7) && (ram_addr[4:0] > 4'd15) && ...)end  else ...
當然最開始的時候肯定不是這樣的設計,造成如此冗長的邏輯,大概率是后期調試打的補丁,可以把一些條件拿出來專門做一個信號,會讓條件覆蓋率分析容易很多,不然這么長的選擇,真不是給人看的。 cur_state不可能同時出現在兩個狀態上 在控制上用狀態機中,假如有這樣的邏輯。
assign enable = ((cur_state != STATE_A) && (next_state == STATE_A)) 
   || ((cur_state != STATE_B) && (next_state == STATE_B))
這樣的寫法目的是在狀態跳轉時產生一個脈沖信號,不過在條件覆蓋率中會檢查這兩個選擇條件,cur_state != STATE_A為0與cur_state != STATE_B為0同時滿足的情況。 仔細想一下,cur_state != STATE_A為0就代表cur_state現在就是STATE_A狀態,cur_state != STATE_B為0就是代表cur_state現在就是STATE_B狀態,那么,cur_state怎么可能同時為兩個狀態呢。 這樣的情況要么就拆開寫要么就別寫。 case語句的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語句不寫default分支會產生鎖存器,如果case中的所有情況都達到,就可以不用寫default分支,但在ASIC設計中可能工具會報lint,所以這樣的寫法是最完美的。 這樣的寫法對于in這個變量如果有規定取值范圍,哪一個值沒取到也一目了然。 教科書式的反面教材
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
這樣的寫法我愿稱之為教科書式的反面教材。首先,計數器的常規套路是給一個使能進行計數,記到一個值然后給清零,上面這樣的寫法是直接給一個使能信號清零,然后用未記到想要的最大值來做使能。 第二點是,這樣的寫法和上面cur_state同時出現在兩個狀態上,是一樣的。else if里面的條件進行條件覆蓋率檢查,會出現cnt != 3 cnt != 7 cnt != 15 cnt != 31 兩兩之間或者及以上同時為0的隨機組合,那么cnt一個時刻只能是一個值,必不可能滿足同時等于多個值的情況。 參數的取值范圍 一個參數的取值范圍是0,1,2三個值,你做了一個這樣的vld
assign data_vld = (param == 0) || (param == 1) || (param == 2);
條件覆蓋率檢查會出現,上面三個條件都為0的情況,但是這個參數配置只有這三個值,不可能去其他值,也是一個典型的情況。換一種寫法。
編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Verilog
    +關注

    關注

    29

    文章

    1366

    瀏覽量

    111987

原文標題:如何寫出高覆蓋率的Verilog代碼?

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    一文詳解Modelsim代碼覆蓋率功能使用

    作者:默宸? Modelsim代碼覆蓋率功能Code coverage,能報告出statement(語句)、branch(分支)、condition(條件)、expression(表達
    的頭像 發表于 12-09 11:45 ?6412次閱讀

    怎么用Vivado做覆蓋率分析

    在做仿真的時候往往會去做代碼覆蓋率和功能覆蓋率的分析,來保證仿真是做的比較充分完備的。
    的頭像 發表于 01-03 12:34 ?2351次閱讀
    怎么用Vivado做<b class='flag-5'>覆蓋率</b>分析

    如何改善5G覆蓋率

    改善5G覆蓋率的方法
    發表于 12-15 07:52

    嵌入式仿真平臺SkyEye的覆蓋率分析相關資料下載

    代碼執娜行覆蓋情況的功能,來檢測代碼中未執行覆蓋情況。在覆蓋率分析時需要分析嵌入式軟件的指令覆蓋率
    發表于 12-17 07:27

    關于SpinalHDL中的驗證覆蓋率收集簡單說明

    在做RTL仿真驗證時,覆蓋率收集往往是我們在驗證中需要注意的地方,本篇就SpinalHDL中的驗證覆蓋率收集做一個簡單說明。sbt配置在SpinalHDL里進行仿真驗證時,我們的待測試代碼會生
    發表于 06-24 15:56

    重點厘清覆蓋率相關的概念以及在芯片開發流程中跟覆蓋率相關的事項

    全盤考量。而覆蓋率,就是芯片工程中,評審體系需要重點參考的一項技術指標,但也只是驗證相關的其中一項。目前被業界廣泛采用的覆蓋率指標有功能覆蓋率(Function Coverage)和代碼
    發表于 09-14 11:57

    Verilog代碼覆蓋率檢查

    Verilog代碼覆蓋率檢查是檢查驗證工作是否完全的重要方法,代碼覆蓋率(codecoverge)可以指示
    發表于 04-29 12:35 ?8720次閱讀

    嵌入式代碼覆蓋率統計方法和經驗

    代碼覆蓋率是衡量軟件測試完成情況的指標,通常基于測試過程中已檢查的程序源代碼比例計算得出。代碼覆蓋率可以有效避免包含未測試
    的頭像 發表于 01-06 15:06 ?3405次閱讀
    嵌入式<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>統計方法和經驗

    嵌入式代碼覆蓋率如何進行統計有哪些方法和經驗

    代碼覆蓋率是衡量軟件測試完成情況的指標,通常基于測試過程中已檢查的程序源代碼比例 計算得出。代碼覆蓋率可以有效避免包含未測試
    的頭像 發表于 01-09 11:12 ?3341次閱讀
    嵌入式<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>如何進行統計有哪些方法和經驗

    統計嵌入式代碼覆蓋率的方法和經驗

    代碼覆蓋率是衡量軟件測試完成情況的指標,通常基于測試過程中已檢查的程序源代碼比例計算得出。代碼覆蓋率可以有效避免包含未測試
    的頭像 發表于 03-29 11:58 ?2232次閱讀
    統計嵌入式<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>的方法和經驗

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

    設計的角度上來討論,如何寫出覆蓋率Verilog代碼。assign慎用按位運算邏輯, | ^ ^~和三目運算符,慎用。使用這樣的描述方式本身功能并沒有什么問題,而且寫起來很爽,但是
    的頭像 發表于 06-01 10:13 ?2927次閱讀

    更好地測量代碼覆蓋率的 9 個技巧

    測量代碼覆蓋率對于嵌入式系統來說越來越重要,但需要一些經驗。這是因為有一些障礙需要克服,尤其是小目標。但是,使用正確的方法和合適的工具,無需過多努力即可測量測試覆蓋率。九個實用技巧可幫助您入門
    的頭像 發表于 07-14 15:58 ?3288次閱讀
    更好地測量<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>的 9 個技巧

    代碼覆蓋率工具的重要性

    測試覆蓋率是軟件質量的重要指標,也是軟件維護的重要組成部分。它通過提供不同承保項目的數據來幫助評估測試的有效性。這種洞察力允許通過為未經測試的代碼定義新的測試用例來改進測試,從而提高代碼質量,最終增加
    的頭像 發表于 12-08 15:13 ?1717次閱讀
    <b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>工具的重要性

    Vivado仿真器和代碼覆蓋率簡析

    編寫 HDL 通常是 FPGA 開發中耗時最少的部分,最具挑戰性和最耗時的部分可能是驗證。根據最終應用程序,驗證可能非常簡單,也可能非常復雜,簡單的話只需對大多數功能進行檢查或執行完全獨立開發的測試平臺來演示功能和代碼覆蓋率
    的頭像 發表于 08-03 09:23 ?2491次閱讀
    Vivado仿真器和<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>簡析

    代碼覆蓋率記錄

    為確保具體的產品(例如,醫療或航空電子市場)質量合格, 通常需要提供語句覆蓋與判定覆蓋認證證明。對于各種嵌 入式系統,規范要求高度優化的代碼需要實時測試。禁止 代碼插裝和運行時篡
    發表于 11-03 11:02 ?0次下載
    <b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>記錄
    主站蜘蛛池模板: 午夜婷婷一夜七次郎 | 我强进了老师身体在线观看 | 边摸边吃奶边做下面视频 | 神马电影我不卡国语版 | 久久青草费线频观看国产 | 十八禁啪啦啪漫画 | 69日本人xxxx16—18 | 最近韩国日本免费观看mv免费版 | 日韩午夜影院 | 九九久久久| 日韩午夜欧美精品一二三四区 | 亚洲成人黄色片 | 国模大胆一区二区三区 | 美女xx00 | 羽月希被黑人吃奶dasd585 | 国产精品成人无码久免费 | 欧美性爱-第1页 | 黑兽在线观看高清在线播放樱花 | 免费夜里18款禁用软粉色 | 亚欧免费观看在线观看更新 | 久久久久久久电影 | 精品无码久久久久久动漫 | 男人吃奶摸下弄进去好爽 | 国产老肥熟xxxx | 国产精品高清视频在线 | 法国剧丝袜情版h级在线电影 | 国产欧美日韩综合精品一区二区 | 肉奴隷 赤坂丽在线播放 | 青青草原国产在线观看 | ppypp午夜限制不卡影院私人 | 夜夜女人国产香蕉久久精品 | 国产精品白浆精子流水合集 | 午夜亚洲国产理论片二级港台二级 | 国产老师开裆丝袜喷水漫画 | 精品一二三区久久AAA片 | 青青草久久伊人 | good神马电影伦理午夜 | 黑人娇小BBW | 中文中幕无码亚洲视频 | 日本视频一区二区免费观看 | 在线观看成人免费视频 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品