一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

Static變量和Local變量的區(qū)別

芯片驗(yàn)證工程師 ? 來源:芯片驗(yàn)證工程師 ? 作者:芯片驗(yàn)證工程師 ? 2022-10-12 09:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

變量可以分為3類,即Static、Automatic、和Local。如下表所示。
ec224162-497e-11ed-a3b6-dac502259ad0.png

Static vs. Local Variables

下面的這個例子可以看出Static變量和Local變量的區(qū)別:

static int n; // Static variable – outside ‘module’ – 
// globally declared
//visible to all modules/scopes that follow.
module vars;
int n; 
//Local variable - Module level - visible to all 
scopes below
initial begin 
   n = 2;
   $display("module level ‘n’ = %0d",n);
end
initial begin : init2
   int n; //Local - Block level 
   n = 3;
   $display("block level ‘n’ = %0d",n); 
   $unit::n = 4; //Static Global
   $display("Statically declared ‘n’ = %0d",$unit::n); 
end 
initial begin //hierarchical reference to local variable
   $display("init2.n = %0d", init2.n);
end
endmodule

module next; 
//Static variable 'n' is visible in the module 'next'
initial begin
   $display("Statically declared 'n' in module 'next' = 
%0d",$unit::n); 
end
endmodule

Simulation log:

module level ‘n’ = 2
block level ‘n’ = 3
Statically declared ‘n’ = 4
init2.n = 3
Statically declared 'n' in module 'next' = 4
 V C S S i m u l a t i o n R e p o r t

首先,我們在module ' vars '外面聲明一個靜態(tài)變量" int n "。使得這個靜態(tài)變量n對后面的所有模塊都可見。

或者說這個靜態(tài)變量的作用域不在某個module內(nèi),而在整個編譯域$unit內(nèi)。

然后,在module“vars”中聲明另一個變量“int n”并賦值2,所以這個n是一個module-level的變量,僅對module vars可見。

然后在過程塊init2中聲明另一個變量int n
,并賦值為3,使得n只對指定的語句塊init2可見。

為了給靜態(tài)聲明的變量“n”賦值,我們需要使用

$unit::n = 4;

block-level “init2.n”可以從其他過程塊中訪問。

initial begin //hierarchical reference to local variable
    $display("init2.n = %0d", init2.n);
end

Automatic變量 vs. Static 變量

Automatic變量在每次進(jìn)入語句塊時(shí)被重新分配內(nèi)存空間和初始化。相比之下,靜態(tài)變量只被分配內(nèi)存空間和初始化一次。
下面是Automatic變量和Static 變量比較的一個示例:

module autovars;
 initial begin
    for (int i=0; i<2; i++) begin
        automatic int loop3 = 0; // executes every loop
        for (int j=0; j<2; j++) begin
            loop3++;
            $display("loop3=%0d",loop3);
        end
    end // loop3 = 1 2 1 2
    for (int i=0; i<2; i++) begin
        static int loop2 = 0; // executes once at time zero
        for (int j=0; j<2; j++) begin
            loop2++;
            $display("loop2=%0d",loop2);
        end
    end // loop2 = 1 2 3 4 
 end
endmodule : autovars

在本例中,有兩個for循環(huán)。第一個for循環(huán)聲明了一個名為“l(fā)oop3”的“automatic”變量,初始值為0。

第二個for循環(huán)聲明了一個名為loop2的靜態(tài)變量,初始化為0。
simulation log:

loop3=1
loop3=2
loop3=1
loop3=2
loop2=1
loop2=2
loop2=3
loop2=4

在第一個for循環(huán)中,automatic變量每次循環(huán)時(shí)重新初始化。

simulation log:

loop3=1
loop3=2
loop3=1
loop3=2

相比之下,第二個for循環(huán)的靜態(tài)變量只會初始化一次。
simulation log:

loop2=1
loop2=2
loop2=3
loop2=4

審核編輯:湯梓紅

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

    關(guān)注

    0

    文章

    614

    瀏覽量

    28951
  • static
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    10714
  • locale
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    1294

原文標(biāo)題:SystemVerilog中的Static變量, Automatic變量和Local變量

文章出處:【微信號:芯片驗(yàn)證工程師,微信公眾號:芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    變量的聲明和定義有什么區(qū)別和聯(lián)系

    變量的聲明和定義是編程中的兩個重要概念,它們在語法和語義上有一些區(qū)別和聯(lián)系。在本文中,我將詳細(xì)介紹變量的聲明和定義之間的區(qū)別和聯(lián)系。 首先,讓我們從
    的頭像 發(fā)表于 12-07 16:14 ?1514次閱讀

    static的全局變量與局部變量的使用,看完你就懂了

    不能被其它文件所用;其它文件中可以定義相同名字的變量,不會發(fā)生沖突。 (1)全局變量和全局靜態(tài)變量區(qū)別 1)全局變量是不顯式用
    發(fā)表于 06-27 08:54

    static作用(修飾函數(shù)、局部變量、全局變量

    詳細(xì)介紹了static作用(修飾函數(shù)、局部變量、全局變量)的用法
    發(fā)表于 11-17 10:30 ?4次下載

    C語言register變量和extern及static等知識總結(jié)

    register變量必須是一個單個的值,并且其長度應(yīng)小于或等于整型的長度。但是,有些機(jī)器的寄存器也能存放浮點(diǎn)數(shù)。 register變量可能不存放在內(nèi)存中,所以不能用取址符運(yùn)算符 。 只有局部變量和形參可以作為register
    發(fā)表于 11-21 10:20 ?5次下載

    全局變量和局部變量有什么區(qū)別

    全局變量是編程術(shù)語中的一種,源自于變量之分。變量分為局部與全局,局部變量又可稱之為內(nèi)部變量。局部變量
    發(fā)表于 12-11 11:58 ?3.3w次閱讀
    全局<b class='flag-5'>變量</b>和局部<b class='flag-5'>變量</b>有什么<b class='flag-5'>區(qū)別</b>

    全局變量和成員變量區(qū)別分析

    成員變量是指定維度的成員變量,用于標(biāo)識某個維度成員。簡介由 Analysis Services 內(nèi)部使用的值,以標(biāo)識某個維度成員。MemberKeyColumn 屬性指定維度的成員變量。例如,1到12之間的某個數(shù)字可以是相應(yīng)于年
    發(fā)表于 12-11 13:50 ?7097次閱讀
    全局<b class='flag-5'>變量</b>和成員<b class='flag-5'>變量</b>的<b class='flag-5'>區(qū)別</b>分析

    基于static變量來實(shí)現(xiàn)一個模塊的封裝

    static變量的一個顯著的作用就是可以實(shí)現(xiàn)一個模塊的封裝。 static存儲類別的特性決定了static聲明的全局變量只能被本源文件
    的頭像 發(fā)表于 01-05 10:54 ?5762次閱讀
    基于<b class='flag-5'>static</b><b class='flag-5'>變量</b>來實(shí)現(xiàn)一個模塊的封裝

    寄存器變量的存儲類別

    對于局部變量來說,static變量和auto變量是相對而言的。在語句塊執(zhí)行期間,static變量
    發(fā)表于 06-03 11:07 ?2349次閱讀
    寄存器<b class='flag-5'>變量</b>的存儲類別

    什么是PLC變量

    都通過變量來操作。 為指令分配變量后,即會使用指定變量的值來執(zhí)行該指令。 變量在 TIA Portal 中集中管理。 在程序編輯器中創(chuàng)建 PLC
    的頭像 發(fā)表于 10-11 11:53 ?1.9w次閱讀
    什么是PLC<b class='flag-5'>變量</b>

    西門子PLC變量表中定義變量

    。 程序中多數(shù)指令都通過變量來操作。? 為指令分配變量后,即會使用指定變量的值來執(zhí)行該指令。 變量在 TIA Portal 中集中管理。? 在程序編輯器中創(chuàng)建 PLC ?
    的頭像 發(fā)表于 12-23 16:25 ?2.1w次閱讀
    西門子PLC<b class='flag-5'>變量</b>表中定義<b class='flag-5'>變量</b>

    linux內(nèi)核中percpu變量的實(shí)現(xiàn)

    我們在使用各種編程語言進(jìn)行多線程編程時(shí),經(jīng)常會用到thread local變量。 所謂thread local變量,就是對于同一個變量,每個
    的頭像 發(fā)表于 01-04 13:39 ?2221次閱讀

    C語言中變量的作用域

    作用域局部變量--local variable全局變量--global variable修飾符--storage description局部變量l
    發(fā)表于 01-13 14:58 ?0次下載
    C語言中<b class='flag-5'>變量</b>的作用域

    為什么C++單例模式不能直接全部使用static變量static函數(shù)呢?

    通過getInstance()函數(shù)獲取單例對象,這種模式的關(guān)鍵之處不是在于強(qiáng)迫你用函數(shù)來獲取對象。關(guān)鍵之處是讓static對象定義在函數(shù)內(nèi)部,變成局部static變量??聪逻@種實(shí)現(xiàn)方式的經(jīng)典demo:
    的頭像 發(fā)表于 06-05 14:14 ?1775次閱讀

    Java中對static關(guān)鍵詞的介紹

    可以說是該關(guān)鍵字最常用的一個功能,通常將用 static 修飾的成員變量稱為類成員或者靜態(tài)成員,那么靜態(tài)成員和不用 static 修飾的非靜態(tài)成員有什么區(qū)別呢? 我們先看看不用
    的頭像 發(fā)表于 10-11 15:26 ?733次閱讀
    Java中對<b class='flag-5'>static</b>關(guān)鍵詞的介紹

    什么是變量?PLC變量哪些部分組成?

    變量在 TIA Portal 中集中管理。 在程序編輯器中創(chuàng)建 PLC 變量與在 PLC 變量表中創(chuàng)建 PLC 變量沒什么區(qū)別。 如
    發(fā)表于 10-15 11:31 ?6549次閱讀
    什么是<b class='flag-5'>變量</b>?PLC<b class='flag-5'>變量</b>哪些部分組成?