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

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

    文章

    923

    瀏覽量

    42150
  • 編程語言
    +關注

    關注

    10

    文章

    1955

    瀏覽量

    36190
  • Verilog語言
    +關注

    關注

    0

    文章

    113

    瀏覽量

    8501

原文標題:SystemVerilog-跳轉語句

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

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

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

    C語言的break轉移語句講解

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

    深入理解C語言:C語言循環控制

    在C語言編程中,循環結構是至關重要的,它可以讓程序重復執行特定的代碼塊,從而提高編程效率。然而,為了避免程序進入無限循環,C語言提供了多種循環控制語句,如breakcontinue和goto,用于
    的頭像 發表于 04-29 18:49 ?900次閱讀
    深入理解C語言:C語言循環控制

    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 ?312次閱讀

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

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

    c語言中的SCL-CONTIUNE語句

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

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

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

    SCL用GOTO語句執行程序跳轉

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

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

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

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

    什么是goto語句? goto 語句被稱為 C 語言中的跳轉語句。 用于無條件跳轉到其他標簽。它將控制權轉移到程序的其他部分。 goto
    發表于 01-21 10:41 ?894次閱讀
    深入探討嵌入式C編程的goto<b class='flag-5'>語句</b>
    主站蜘蛛池模板: 欧美一级艳片视频免费观看 | 国产午夜视频高清 | 免费 视频 | 亚洲欧美天堂网 | 最近视频在线播放免费观看 | 黄色大片毛片 | 波多野结衣在线免费视频 | 久久影视精品 | 曰本福利写真片视频在线 | 俺去鲁婷婷六月色综合 | 亚洲一区二区三区精品视频 | 天天躁狠狠躁夜夜躁2021 | 免费一级特黄3大片视频 | 国产毛片一区二区三区精品 | 欲色视频| 寡妇一级a毛片免费播放 | 黄色刺激网站 | 国产美女一级片 | 亚洲成a人片77777潘金莲 | 色综合久久五月 | ww欧洲ww在线视频看ww | 日本v片免费一区二区三区 日本www.色 日本wwwwww | 色多多www视频在线观看免费 | 十三以下岁女子毛片免费播放 | 视频在线色 | 国内精品免费视频自在线 | 亚洲伊人久久在 | 免费在线观看黄色 | 免费观看午夜在线欧差毛片 | 日韩第五页 | 九九热国产在线 | 色香蕉在线视频 | 午夜福利国产一级毛片 | 欧美最猛性xxxx高清 | 中文字幕第11页 | 狠狠躁夜夜躁人人爽天天段 | 男女交性视频免费视频 | 大香交伊人 | 色综合天天综久久久噜噜噜久久〔 | 37pao强力打造免费高速高清 | 色爱区综合激月婷婷激情五月 |