91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

怎么才能寫(xiě)出高覆蓋率的Verilog代碼?

電子工程師 ? 來(lái)源:硅農(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ì)的角度上來(lái)討論,如何寫(xiě)出高覆蓋率的Verilog代碼。assign慎用按位運(yùn)算邏輯,& | ^ ^~和三目運(yùn)算符,慎用。使用這樣的描述方式本身功能并沒(méi)有什么問(wèn)題,而且寫(xiě)起來(lái)很爽,但是在很多情況下覆蓋率是真的不好收。

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

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

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

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

這樣寫(xiě)覆蓋率只會(huì)檢查行覆蓋率,基本上哪一行沒(méi)跑到一目了然,也并不需要多余的體力勞動(dòng)。代碼可讀性也很高。第二種可能會(huì)消耗更多的邏輯,但是對(duì)于整體的系統(tǒng)而言,也是不值一提的。換句話(huà)說(shuō),扣這一毛兩毛的,要抓大頭。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)然最開(kāi)始的時(shí)候肯定不是這樣的設(shè)計(jì),造成如此冗長(zhǎng)的邏輯,大概率是后期調(diào)試打的補(bǔ)丁,可以把一些條件拿出來(lái)專(zhuān)門(mén)做一個(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))

這樣的寫(xiě)法目的是在狀態(tài)跳轉(zhuǎn)時(shí)產(chǎn)生一個(gè)脈沖信號(hào),不過(guò)在條件覆蓋率中會(huì)檢查這兩個(gè)選擇條件,cur_state != STATE_A為0與cur_state != STATE_B為0同時(shí)滿(mǎn)足的情況。仔細(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)呢。這樣的情況要么就拆開(kāi)寫(xiě)要么就別寫(xiě)。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ǔ)句不寫(xiě)default分支會(huì)產(chǎn)生鎖存器,如果case中的所有情況都達(dá)到,就可以不用寫(xiě)default分支,但在ASIC設(shè)計(jì)中可能工具會(huì)報(bào)lint,所以這樣的寫(xiě)法是最完美的。這樣的寫(xiě)法對(duì)于in這個(gè)變量如果有規(guī)定取值范圍,哪一個(gè)值沒(méi)取到也一目了然。教科書(shū)式的反面教材

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

這樣的寫(xiě)法我愿稱(chēng)之為教科書(shū)式的反面教材。首先,計(jì)數(shù)器的常規(guī)套路是給一個(gè)使能進(jìn)行計(jì)數(shù),記到一個(gè)值然后給清零,上面這樣的寫(xiě)法是直接給一個(gè)使能信號(hào)清零,然后用未記到想要的最大值來(lái)做使能。第二點(diǎn)是,這樣的寫(xiě)法和上面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è)值,必不可能滿(mǎn)足同時(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è)典型的情況。換一種寫(xiě)法。最后很多的代碼寫(xiě)法,工具有smart exclude也會(huì)自動(dòng)waive一些分支,不過(guò)工具也沒(méi)那么smart,還是需要自己在編碼的時(shí)候注意,盡量避免很多體力活。評(píng)論區(qū)支持互動(dòng)回復(fù)蓋樓了,關(guān)于這個(gè)問(wèn)題你還有什么想法,歡迎評(píng)論區(qū)留言交流。

編輯:jq

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

    關(guān)注

    463

    文章

    54017

    瀏覽量

    466330
  • asic
    +關(guān)注

    關(guān)注

    34

    文章

    1274

    瀏覽量

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

    關(guān)注

    8

    文章

    956

    瀏覽量

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

    關(guān)注

    0

    文章

    111

    瀏覽量

    15131

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    半導(dǎo)體嵌入式單元測(cè)試的核心技術(shù)、工具選型與落地全流程

    2.2.1 全面的覆蓋率測(cè)試winAMS支持多種覆蓋率測(cè)試類(lèi)型,包括語(yǔ)句覆蓋、分支覆蓋、條件覆蓋、MC/DC
    發(fā)表于 03-06 14:55

    嵌入式軟件單元測(cè)試必要性與專(zhuān)業(yè)工具重要性的系統(tǒng)性專(zhuān)業(yè)研究報(bào)告

    強(qiáng)制覆蓋率要求 報(bào)告審計(jì)要求 ?ISO 26262?(ASIL D) 汽車(chē)電子 ?100% MC/DC?(修正條件/判定覆蓋) 必須由自動(dòng)化工具生成?可追溯矩陣?(需求→代碼→測(cè)試用例) ?IEC
    發(fā)表于 03-05 10:41

    海爾智家借助MATLAB技術(shù)提高測(cè)試覆蓋率

    20,000 行。這會(huì)增加錯(cuò)誤出現(xiàn)的概率。此外,它還會(huì)導(dǎo)致調(diào)試周期長(zhǎng)、測(cè)試覆蓋率低和效率低下等問(wèn)題,從而影響項(xiàng)目期限。
    的頭像 發(fā)表于 02-25 11:14 ?394次閱讀
    海爾智家借助MATLAB技術(shù)提高測(cè)試<b class='flag-5'>覆蓋率</b>

    芯片測(cè)試覆蓋率99%就夠了嗎?給DFT設(shè)計(jì)提個(gè)醒

    字邏輯的此項(xiàng)覆蓋率要求通常高于99%。但覆蓋率數(shù)字并不等同于高質(zhì)量。故障模型本身有局限,無(wú)法覆蓋所有實(shí)際物理缺陷,如跨電源域的泄漏、少數(shù)晶體管單元的潛在性能衰退等。 模擬/混合信號(hào)測(cè)
    發(fā)表于 02-06 11:06

    汽車(chē)軟件質(zhì)量躍遷的系統(tǒng)性路徑:基于ISO 26262標(biāo)準(zhǔn)的單元測(cè)試體系重構(gòu)與中日實(shí)踐深度對(duì)比(2026學(xué)術(shù)研究報(bào)告)

    單元測(cè)試 集成后補(bǔ)測(cè),30%模塊無(wú)覆蓋 覆蓋率目標(biāo) ASIL-D: ≥95%(2025年平均93.5%) ASIL-D:平均38%(頭部企業(yè)≤50%) 管理認(rèn)知 質(zhì)量總監(jiān)具代碼否決權(quán) 項(xiàng)目經(jīng)理以交付
    發(fā)表于 01-05 14:58

    嵌入式軟件單元測(cè)試中AI自動(dòng)化與人工檢查的協(xié)同機(jī)制研究:基于專(zhuān)業(yè)工具的實(shí)證分析

    ? ?摘要****? 本文系統(tǒng)探討嵌入式軟件相較于通用軟件在單元測(cè)試層面的特殊性,分析其對(duì)覆蓋率、可追溯性與實(shí)時(shí)性驗(yàn)證的嚴(yán)苛需求,并以專(zhuān)業(yè)工具winAMS為技術(shù)載體,深入研究AI驅(qū)動(dòng)的自動(dòng)化測(cè)試在
    發(fā)表于 12-31 11:22

    C語(yǔ)言單元測(cè)試在嵌入式軟件開(kāi)發(fā)中的作用及專(zhuān)業(yè)工具的應(yīng)用

    編譯器生成的中間代碼(如GCC/LLVM的IR層) 實(shí)現(xiàn)代碼結(jié)構(gòu)與硬件行為的精準(zhǔn)映射 可檢測(cè)寄存器位操作異常、中斷服務(wù)程序(ISR)時(shí)序沖突等深層缺陷 ?目標(biāo)代碼級(jí)覆蓋率驗(yàn)證****
    發(fā)表于 12-18 11:46

    光譜成像用于草地可燃物含水估測(cè)的研究進(jìn)展

    、空間覆蓋有限等問(wèn)題。光譜成像技術(shù)(Hyperspectral Imaging, HSI)通過(guò)捕捉地物在可見(jiàn)光至短波紅外波段(400–1700 nm)的連續(xù)光譜信息,結(jié)合光譜特征與含水的物理關(guān)聯(lián),為草地可燃物含水
    的頭像 發(fā)表于 10-20 11:44 ?276次閱讀

    嵌入式軟件測(cè)試與專(zhuān)業(yè)測(cè)試工具的必要性深度解析

    系統(tǒng)化解決方案,其必要性體現(xiàn)在多個(gè)維度:滿(mǎn)足行業(yè)合規(guī)要求汽車(chē)電子ISO 26262、航空DO-178C等標(biāo)準(zhǔn)強(qiáng)制要求代碼覆蓋率指標(biāo)達(dá)到C1(分支覆蓋)≥100%、MC/DC(修正條件判定覆蓋
    發(fā)表于 09-28 17:42

    HarmonyOSAI編程單元測(cè)試用例

    根據(jù)選中的ArkTS方法名稱(chēng),CodeGenie支持自動(dòng)生成對(duì)應(yīng)單元測(cè)試用例,提升測(cè)試覆蓋率。 在ArkTS文檔中,光標(biāo)放置于方法名稱(chēng)上或框選完整的待測(cè)試方法代碼塊,右鍵選擇CodeGenie
    發(fā)表于 08-27 14:33

    AI的未來(lái),屬于那些既能寫(xiě)代碼,又能焊電路的“雙棲人才”

    AI的未來(lái),屬于那些既能寫(xiě)代碼,又能焊電路的“雙棲人才”——來(lái)自WAIC 2025的一線(xiàn)觀察2025年7月,上海世博中心,**第七屆世界人工智能大會(huì)(WAIC 2025)**上,我們看到一個(gè)格外清晰
    發(fā)表于 07-30 16:15

    太陽(yáng)光模擬器關(guān)鍵參數(shù) | 光譜匹配度、光譜覆蓋率及光譜偏離

    太陽(yáng)光模擬器作為模擬太陽(yáng)輻射環(huán)境的核心設(shè)備,其性能直接關(guān)系到諸多領(lǐng)域?qū)嶒?yàn)數(shù)據(jù)的可靠性。光譜匹配度(SMD)、光譜覆蓋率(SPC)和光譜偏離(SPD)作為評(píng)估其性能的關(guān)鍵指標(biāo),從不同維度決定了模擬
    的頭像 發(fā)表于 07-24 11:26 ?1132次閱讀
    太陽(yáng)光模擬器關(guān)鍵參數(shù) | 光譜匹配度、光譜<b class='flag-5'>覆蓋率</b>及光譜偏離<b class='flag-5'>率</b>

    太陽(yáng)光模擬器性能的影響參數(shù):光譜匹配度、光譜覆蓋率及光譜偏離

    (SPC)用于評(píng)估太陽(yáng)光模擬器對(duì) AM1.5G 標(biāo)準(zhǔn)光譜的覆蓋程度,重點(diǎn)關(guān)注模擬器是否能完整復(fù)現(xiàn)標(biāo)準(zhǔn)光譜的各個(gè)波段,不同材料對(duì)光譜覆蓋的需求存在顯著差異。 光譜覆蓋率對(duì)太陽(yáng)光模擬器性能的影響
    發(fā)表于 07-21 15:35

    HarmonyOS AI輔助編程工具(CodeGenie)代碼測(cè)試

    本功能從DevEco Studio 5.1.0 Release版本開(kāi)始支持。 根據(jù)選中的ArkTS方法名稱(chēng),CodeGenie支持自動(dòng)生成對(duì)應(yīng)單元測(cè)試用例,提升測(cè)試覆蓋率。 在ArkTS文檔中,光標(biāo)
    發(fā)表于 07-14 17:33

    智行者蝸小白SC80地庫(kù)版開(kāi)啟地下空間清潔新紀(jì)元

    在流動(dòng)的車(chē)位與交錯(cuò)的車(chē)道間,傳統(tǒng)清潔總在追逐"覆蓋率"與"安全性"的平衡。如今,智行者用算法給出了新答案。
    的頭像 發(fā)表于 04-09 15:47 ?1069次閱讀