在线观看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)不再提示

分享一些SystemVerilog的coding guideline

sanyue7758 ? 來(lái)源:數(shù)字芯片實(shí)驗(yàn)室 ? 2023-11-22 09:17 ? 次閱讀

本文分享一些SystemVerilog的coding guideline。

1fc67d88-8882-11ee-939d-92fbcf53809c.png

1、Use a descriptive typedef for variables

數(shù)字電路中,萬(wàn)物皆為二進(jìn)制,甚至在Systemverilog的演進(jìn)過(guò)程中連wire和reg都不做區(qū)分,統(tǒng)一成logic。有利也有弊,因?yàn)樵诮y(tǒng)一的過(guò)程其實(shí)也丟失了一些信息。也許可以在注釋中進(jìn)行增補(bǔ)描述,但總是不夠直接,而且變量聲明出錯(cuò)的話,也無(wú)法進(jìn)行檢查。

有以下兩種情況容易出現(xiàn)編碼錯(cuò)誤:

1、例如地址變量,地址的位寬變化時(shí)可能需要大面積的修改(或者用宏代替)

2、相同位寬的信號(hào),可能意義完全不同。例如,logic [4:0] cnt,fsm;

對(duì)此,引入自定義類型語(yǔ)法typedef

基本格式為:

typedef 已有類型 新類型;

一般自定義類型后面添加一個(gè)_t,方便區(qū)分。

typedeflogic[31:0]word_t;//32位data
typedeflogic[15:0]addr_t;//16位addr

2、Use an end label for methods, classes and packages

task local_task();
  $display("Insidetask");
endtask:local_task

在systemverilog中應(yīng)該在方法的聲明開始和結(jié)束加上label,方便代碼review時(shí)清晰地看出來(lái)task聲明的語(yǔ)句塊范圍

3、Use `includes to compile classes into packages

4、Define classes within packages

5、Only `include a file in one package

6、Import packages to reference their contents

7、Avoid `including the same class in multiple locations

在systemverilog驗(yàn)證環(huán)境中如果使用到一些公共組件,建議采用下面這個(gè)形式,即package+`include,將同一個(gè)組件內(nèi)的多個(gè)class都編譯進(jìn)一個(gè)package。

避免在多個(gè)地方去include 一個(gè)class的定義,不然很容易導(dǎo)致類型重復(fù)定義的問(wèn)題。

package A;
`include "A_driver.sv";
`include "A_monitor.sv";
...
endpackage : A


importA::A_driver;
A_drivera_driver;

8、Define one class per file

顯而易見,一個(gè)文件只定義一個(gè)class會(huì)更加清晰。例如我們經(jīng)常定位uvm源碼問(wèn)題時(shí)很難通過(guò)vcs.log里面的編譯文件名稱直接找到相應(yīng)的class定義位置。


9、Check that $cast() calls complete successfully

當(dāng)我們使用類的多態(tài)特性時(shí),需要始終使用$cast()。判斷返回值,以確定是否確實(shí)是其子類。類似:

if(!$cast(color,c))     
  $display("cast failedforc=%0d",c);

10、Check that randomize() calls complete succesfully。

在使用class的randomize()方式隨機(jī)變量時(shí),建議始終檢查隨機(jī)的結(jié)果。不然就只能依賴仿真工具報(bào)Warning。

if(p.randomize() == 0);
$display("Randomize fail!!!!");

11、Use if rather than assert to check the status of method calls。

在判斷方法執(zhí)行結(jié)果時(shí),建議使用if-else,而不是使用assert。一般對(duì)于assert fail時(shí),工具只是上報(bào)warning,而不是error。

12、Wrap covergroups in class objects

在class里面構(gòu)造功能覆蓋率,因?yàn)槿绻苯映槿TL信號(hào)的話,那么后仿真時(shí)這個(gè)信號(hào)可能就會(huì)丟失了。而且功能覆蓋率的構(gòu)造會(huì)被設(shè)計(jì)的RTL信號(hào)牽引

13、Only samplecovergroups using the sample() method

對(duì)于cover group的采樣要非常精細(xì)地控制采樣時(shí)刻,不然會(huì)覆蓋很多非關(guān)鍵時(shí)刻點(diǎn)的數(shù)據(jù)值,也會(huì)誤導(dǎo)覆蓋率分析

14、Label covergroup coverpoints and crosses

和前面的class加上label一樣,coverpoint也要手動(dòng)加上label,方便verdi打開vdb文件時(shí)清晰地看出未覆蓋的場(chǎng)景。

classtest;
logic[3:0]port_a;
  covergroup demo_cg with function sample(bit[3:0] i);
    label:coverpoint i;
  endgroup
  ...
port_a=1;
  demo_cg.sample(port_a);
endclass

15、Don't rely on static initialization order

SV或者UVM中某些代碼執(zhí)行時(shí)刻是同一個(gè)step,但是執(zhí)行順序仍然是確定性的。但是建議盡量不要依賴這樣工具行為。







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    803

    瀏覽量

    42154
  • Verilog
    +關(guān)注

    關(guān)注

    29

    文章

    1366

    瀏覽量

    111832
  • 數(shù)字電路
    +關(guān)注

    關(guān)注

    193

    文章

    1637

    瀏覽量

    81587
  • UVM
    UVM
    +關(guān)注

    關(guān)注

    0

    文章

    182

    瀏覽量

    19431

原文標(biāo)題:SystemVerilog的coding guideline

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

收藏 人收藏

    評(píng)論

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

    關(guān)于一些對(duì)OpenMP優(yōu)化的方式

    本文調(diào)研了一些對(duì)OpenMP優(yōu)化的方式。
    發(fā)表于 11-22 09:36 ?1247次閱讀

    systemverilog學(xué)習(xí)教程

    systemverilog一些基本語(yǔ)法以及和verilog語(yǔ)言之間的區(qū)別。
    發(fā)表于 04-01 14:24

    CAM 350一些基本操作

    CAM 350一些基本操作 G
    發(fā)表于 01-25 11:26 ?2372次閱讀

    一些電子公司的簡(jiǎn)稱

    一些電子公司的簡(jiǎn)稱
    發(fā)表于 07-10 14:21 ?20次下載

    Autium_designer的一些經(jīng)驗(yàn)

    Autium_designer的一些經(jīng)驗(yàn)
    發(fā)表于 02-28 21:16 ?0次下載

    一些制作1969的分享經(jīng)驗(yàn)

    一些制作1969的分享經(jīng)驗(yàn)
    發(fā)表于 03-04 18:25 ?37次下載

    VICOR模塊的一些基本應(yīng)用

      VICOR模塊的一些基本應(yīng)用
    發(fā)表于 11-24 11:42 ?17次下載

    一些能夠解決生活中一些具體問(wèn)題的常用算法的整理集合

    這是篇八千字的長(zhǎng)文,是一些算法筆記的整理集合,希望能給你幫助。
    的頭像 發(fā)表于 06-18 11:41 ?1.8w次閱讀

    一些簡(jiǎn)單趣味小電子制作教程

    一些簡(jiǎn)單趣味小電子制作教程
    發(fā)表于 09-26 14:05 ?31次下載

    SystemVerilog中枚舉類型的使用建議

    SystemVerilog中枚舉類型雖然屬于種“強(qiáng)類型”,但是枚舉類型還是提供了一些“不正經(jīng)”的用法可以實(shí)現(xiàn)一些很常見的功能,本文將示例一些
    的頭像 發(fā)表于 09-01 14:20 ?2040次閱讀

    get與post的請(qǐng)求一些區(qū)別

    今天再次看到這個(gè)問(wèn)題,我也有了一些新的理解和感觸,臨時(shí)回顧了下 get 與 post 的請(qǐng)求的一些區(qū)別。
    的頭像 發(fā)表于 09-07 10:00 ?1583次閱讀

    INCA的一些用法

    INCA的一些用法
    的頭像 發(fā)表于 11-10 15:32 ?1.1w次閱讀

    一些有趣的數(shù)組相關(guān)的SystemVerilog約束

    我們?cè)诠ぷ髦谐3?huì)針對(duì)數(shù)組施加各式的約束,下面列舉下有趣的Systemverilog數(shù)組約束示例。
    的頭像 發(fā)表于 03-08 13:12 ?1213次閱讀

    開始使用AXI VIP,對(duì)UVM有一些基本的了解

    Synopsys 的 VIP 以 SystemVerilog 包的形式提供。這些包為 VIP 定義唯的命名空間,但為了使 VIP 更易于使用,可以將 VIP 命名空間導(dǎo)入到全局命名空間中。除了
    的頭像 發(fā)表于 05-25 14:44 ?8769次閱讀

    一些有趣的數(shù)組相關(guān)的SystemVerilog約束

    我們?cè)诠ぷ髦谐3?huì)針對(duì)數(shù)組施加各式的約束,下面列舉下有趣的**Systemverilog數(shù)組約束**示例
    的頭像 發(fā)表于 05-30 11:13 ?1013次閱讀
    主站蜘蛛池模板: 麦克斯奥特曼在线观看 | haodiaose在线精品免费观看 | 欧美一级特黄aa大片 | 最新精品 | 一级片免费在线 | 色播.com| 午夜小视频在线观看 | 浓厚な接吻と肉体の交在线观看 | 欧美性黑人极品1819hd | 天天舔天天射天天操 | 久久久久国产精品免费免费不卡 | 噜噜噜 综合 亚洲 | 伊人色综合久久天天爱 | 天天做天天爱夜夜想毛片 | 韩国三级hd中文字幕好大 | 久久精品成人免费网站 | 久久精品国产免费观看99 | 欧美日韩在线成人免费 | 国产成人综合日韩精品婷婷九月 | 四虎在线最新地址公告 | 欧洲性freefree大白屁股 | 国产精品永久免费 | 美女张开腿露尿口给男人亲 | 2022国产情侣真实露脸在线 | 日韩手机看片 | 天堂a免费视频在线观看 | 一本大道加勒比久久综合 | 性免费网站 | 天天干夜啪 | 久久99免费 | 天堂网一区 | 欧美激情在线 | 男女交性视频免费视频 | 性欧美护士18xxxxhd视频 | 久久99久久99精品免观看 | 亚洲a成人 | 热re久久精品国产99热 | 久青草国产在线视频_久青草免 | 女人被免费网站视频在线 | 大桥未久加勒比女热大陆在线 | 日韩1级片 |