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

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

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

3天內不再提示

continue和break跳轉語句介紹

OpenFPGA ? 來源:OpenFPGA ? 作者:碎碎思 ? 2022-11-09 09:23 ? 次閱讀

跳轉語句允許程序代碼跳過一個或多個編程語句,SystemVerilog的jump語句是continue、break和disable。

continue 和 break跳轉語句

continue和break-跳轉語句在循環中用于控制循環中語句的執行。這些跳轉語句只能用于for循環、while循環和foreach循環。它們不能在循環之外使用。

continue語句跳轉到循環的結尾,并計算循環的結束表達式(end expression),以確定循環是否應繼續進行另一次迭代。

下面的代碼段使用for循環遍歷一個小查找表的地址,該表被建模為16-bit的一維數組。使用continue語句跳過表中值為0的位置。對于非零位置,調用函數對該值進行某種操作(函數未顯示)。

f8758ab0-5fc6-11ed-8abf-dac502259ad0.png

break語句立即終止循環的執行。循環退出,任何循環控制語句(如for循環步驟分配)都不會執行。

示例6-10說明了如何使用continue和break來查找在一個位范圍內設置為1的第一位。圖6-10顯示了該示例的綜合結果。

示例6-10:使用continue和break控制循環執行

//`begin_keywords"1800-2012"http://useSystemVerilog-2012keywords
modulefind_bit_in_range
#(parameterN=4)//bussize
(inputlogic[N-1:0]data,
inputlogic[$clog2(N)-1:0]start_range,end_range,
outputlogic[$clog2(N)-1:0]low_bit
);
timeunit1ns;timeprecision1ns;

always_combbegin
low_bit='0;
for(inti=0;iend_range)break;//exitloop
if(data[i])begin
low_bit=i;
break;//exitloop
end
end//endoftheloop
//...//processdatabasedonlowestbitset
end

endmodule:find_bit_in_range
//`end_keywords

f899e748-5fc6-11ed-8abf-dac502259ad0.png 圖6-10:示例6-10的綜合結果

disable跳轉語句

SystemVerilog 的disable語句類似于其他編程語言中的go-to語句。disable跳轉到一組命名語句的末尾或任務的末尾。disable跳轉語句的一般用法是:

f9cb2f00-5fc6-11ed-8abf-dac502259ad0.png

在這個代碼片段中,begin-end語句組被命名為search_loop。disable語句指示仿真立即跳到名為begin-end 語句組的末尾。

最初的Verilog語言沒有continue和break-跳轉語句。相反,disable語句與通用go-to行為一樣用于跳轉到循環的末尾,但會繼續執行循環的下一個過程。

disable語句通過跳過循環的末端,過早地跳出循環。要跳過循環中的語句,繼續執行循環時,命名的begin-end語句組必須包含在循環中。要跳出循環,命名的begin-end語句組必須包含整個循環。

下面的示例顯示了與示例6-10相同的功能,除了使用disable 跳轉語句而不是continue和break語句,

f9ec9b22-5fc6-11ed-8abf-dac502259ad0.png

最佳實踐指南6-6
使用continue和break-跳轉語句控制循環迭代。不要使用disable跳轉語句.

disable 跳轉語句提供與break和continue 跳轉語句相同的功能,如上所示。然而,disable 跳轉語句使代碼更難讀懂和維護,使用continue和break是一種更簡單、更直觀的編碼方式。

disable跳轉語句是一個通用的go-to語句,可以在驗證中使用。綜合編譯器通常不支持使用disable的其他方法。

No-op聲明

SystemVerilog編程語句以分號;(分號本身被視為完整的編程語句)表示沒有要執行的功能。單獨的分號執行空操作,通常被稱為無操作語句(no-op語句)。

下面的代碼片段表示存儲數據變量的寄存器(使用觸發器)。由case語句表示的多路輸入確定要存儲在數據寄存器中的值。

fa1f0b7a-5fc6-11ed-8abf-dac502259ad0.png

此代碼段中的case語句不會對mode的2’b11值進行解碼。雖然在本例中功能上是正確的,但不完整的case語句不是完美的,并且可能會在代碼驗證期間引發問題,或者其他工程師在維護或重用代碼時引入歧義(解碼模式值2’b11是不是故意的?還是模型中的疏忽(錯誤))。

在這個例子中,沒有任何東西可以說明這種或那種方式。添加關于未使用的2’b11值的注釋可能會很有幫助,但不是所有人都會用心的注釋代碼。

使用無操作語句有助于使RTL模型更加自我記錄和可讀。下面的代碼片段在功能上與前面的示例相同,但是,即使沒有注釋,很明顯,也很方便人們理解代碼。

fa5abd96-5fc6-11ed-8abf-dac502259ad0.png

時序邏輯中的無操作語句將被綜合編譯器忽略。沒有要實現的功能,因此寄存器將保留其初始值。然而,綜合編譯器不能忽略組合邏輯中的no-op語句。

當沒有為變量賦值時,它將保留以前的值。綜合時可能會添加一個鎖存器,以便邏輯可以保存以前的值。

最佳實踐指南6-7
不要將no-op語句用于RTL建模,

盡管綜合編譯器支持no-op,但它在RTL功能中沒有任何用途,并且可能導致組合邏輯中出現意外的鎖存器。為了完整性,我們討論了no-op語句,但不建議在RTL代碼中使用。





審核編輯:劉清

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

    關注

    8

    文章

    906

    瀏覽量

    41496
  • 編程語言
    +關注

    關注

    10

    文章

    1942

    瀏覽量

    34707
  • Verilog語言
    +關注

    關注

    0

    文章

    113

    瀏覽量

    8224

原文標題:SystemVerilog-跳轉語句

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

收藏 人收藏

    評論

    相關推薦

    嵌入式C語言中的goto語句詳解

    goto語句被稱為C語言中的跳轉語句。用于無條件跳轉到其他標簽。它將控制權轉移到程序的其他部分。
    發表于 07-19 16:08 ?3373次閱讀
    嵌入式C語言中的goto<b class='flag-5'>語句</b>詳解

    C語言中break語句的語法和基本應用

    在C語言中,break語句是一種控制流語句,它用于終止當前所在的循環結構(for、while、do-while)或者switch語句,從而跳出循環或者結束switch
    發表于 08-17 15:35 ?1715次閱讀

    C語言的break轉移語句講解

    C語言的break轉移語句是一種用于跳出循環或者switch語句的控制結構。它的作用是提前結束循環或者switch語句,從而避免不必要的計算或者執行。
    的頭像 發表于 11-22 15:34 ?682次閱讀
    C語言的<b class='flag-5'>break</b>轉移<b class='flag-5'>語句</b>講解

    breakcontinue語句#硬聲創作季

    Conbreak
    學習電子
    發布于 :2022年10月27日 07:32:40

    在C語言中什么是goto語句

    什么是goto語句goto語句被稱為C語言中的跳轉語句,用于無條件跳轉到其他標簽,它將控制權轉移到程序的其他部分。goto語句一般很少使用,
    發表于 07-14 08:17

    continuebreak和return的區別

    嵌入式工程師綜合筆試題之C語言基礎(含部分答案)continuebreak和return的區別?continue:跳過本次循環.Break:只能在循環體內部或者switch開關
    發表于 12-15 06:08

    KEIL環境下華大芯片執行跳轉語句會進入硬件中斷,關閉全部中斷后,為什么跳轉后會停下來而不是自動繼續跑下去?

    我在APP工程中使用attribute語句在0x8008的位置放置了一個入口函數,用于跳轉到0x8200的APP工程。在BOOT工程下增加了跳轉語句跳轉到0x8008這個入口函數( (
    發表于 11-08 08:48

    芯靈思SinlinxA33開發板安卓開發-java語言基礎(五)

    )。?(3)結束while語句的執行.breakcontinue語句breakcontinue
    發表于 12-24 10:45 ?248次閱讀

    C語言程序設計教程之循環結構程序設計資料概述

    本文檔的主要內容詳細介紹的是C語言程序設計教程之循環結構程序設計資料概述主要內容包括了:1.循環語句,2.breakcontinue 語句
    發表于 12-29 17:17 ?16次下載
    C語言程序設計教程之循環結構程序設計資料概述

    C51語言的基礎知識資料說明

    :for語句、while語句和do…while語句。 轉移控制語句break語句
    發表于 06-06 17:49 ?1次下載
    C51語言的基礎知識資料說明

    c語言中的SCL-CONTIUNE語句

    CONTIUNE語句 CONTIUNE語句用來終止循環語句(FOR, WHILE或REPEAT)的當前重復的執行。 語法(Syntax) CONTINUE
    的頭像 發表于 04-16 11:19 ?2391次閱讀
    c語言中的SCL-CONTIUNE<b class='flag-5'>語句</b>

    決策語句允許程序塊的執行流程

    SystemVerilog case語句與C switch語句類似,但有重要區別。SystemVerilog不能使用break語句(C使用break
    的頭像 發表于 10-27 08:57 ?904次閱讀

    SCL用GOTO語句執行程序跳轉

    用GOTO語句能夠執行程序跳轉。此引起立即跳轉到指定標號,為此而到同塊中不同的語句
    的頭像 發表于 02-01 09:22 ?2618次閱讀

    什么是python break語句-終止循環

    在循環的過程中如果要退出循環,我們可以用break語句continue語句
    的頭像 發表于 02-23 11:17 ?2503次閱讀

    深入探討嵌入式C編程的goto語句

    什么是goto語句? goto 語句被稱為 C 語言中的跳轉語句。 用于無條件跳轉到其他標簽。它將控制權轉移到程序的其他部分。 goto
    發表于 01-21 10:41 ?596次閱讀
    深入探討嵌入式C編程的goto<b class='flag-5'>語句</b>
    主站蜘蛛池模板: CHINSEFUCKGAY无套| 杨幂视频在线观看1分30秒 | 狠日狠干日曰射| 好男人在线视频| 开心久久激情| 女人色极品影院| 射死你天天日| 亚洲精品入口一区二区乱麻豆精品 | 777午夜精品久久AV蜜臀| 99久久久精品免费观看国产| 成 人 片 免费播放| 国产喷水1区2区3区咪咪爱AV| 好硬好湿好爽再深一点视频| 久青草影院| 人妻激情综合久久久久蜜桃| 校花被扒衣吸乳羞羞漫画| 在线观看中文| 成人免费视频在线观看| 果冻传媒完整免费网站在线观看 | 欧美末成年videos在线| 神马电影院午 夜理论| 思思久99久女女精品| 先锋影音 av| 最近免费中文字幕大全免费| 成年人深夜福利| 韩国精品韩国专区久久| 牛牛在线(正)精品视频| 午夜免费体验30分| 99re10久久热| 国产嫩草在线观看| 免费韩国伦理2017最新| 性派对xxxhd| 99热6精品视频6| 国产亚洲欧洲日韩在线三区 | 久久人妻熟女中文字幕AV蜜芽| 日本韩国欧美一区| 一二三区乱码不卡手机版| vivoe另类| 久久精品麻豆国产天美传媒果冻| 日韩免费视频一区| 一色屋精品亚洲香蕉网站|