03 SV過程語句和子程式

2022-06-20 01:33:09 字數 2292 閱讀 5963

1、過程語句

for語句、do-while語句、while語句

1

initial

begin

2string

cmd;

3int

file,c;

4 $display("

**********= continue break **********");

5//bit [127:0] cmd;

6 file=$fopen("

command.txt

","r");

7while(!$feof(file)) begin

8 c = $fscanf(file,"%s"

,cmd);

9case

(cmd)10"

continue":

11begin

12continue;

13end

1415

"done":

16begin

17 $display("

done row");

18break;

19end

2021

default:22

begin

23$display(cmd);

24end

25endcase

26end

27$fclose(file);

28end

2、任務、函式以及void函式

verilog:任務可以耗時,函式不能;任務可以呼叫函式,函式不能呼叫任務;函式必須有返回值,且返回值必須被使用

systemverilog:允許函式呼叫任務,不消耗時間的sv任務應該定義成void函式

(1)使用ref和const傳遞陣列

好處:ref宣告在進行引數傳遞時無需複製到堆疊區,const宣告則使得子程式不能修改陣列的值,避免誤修改。ref的第2個好處是在任務裡可以修改變數而且修改結果對呼叫它的函式隨時可見。

這為併發執行執行緒之間的資訊傳遞提供了機會。

1

//ref const

2function

automatic void print_checksum(const ref bit [31:0

] a);

3 bit [31:0

] checksum;

4for(int i=0;ibegin

5 checksum^=a[i];

6end

7 $display("

the array checksum is %b

",checksum);89

endfunction

1011 bit [31:0

] a;

12initial

begin

13 a = new[3

];14 a[0] = 32

'd0;

15 a[1] = 32

'd1;

16 a[2] = 32

'd3;

17//

bit [31:0] a[2] = ','};

18 $display("

********** automatic ref const **********=

"); //

# the array checksum is 00000000000000000000000000000010

19print_checksum(a);

20end

(2)從函式中返回乙個陣列

1

//從函式中返回乙個陣列

2function

automatic void init(ref int f[5], input

intstart);

3foreach(f[i])

4 f[i] = i +start;

5endfunction67

int fa[5];8

initial

begin

9 init(fa,5

);10

foreach(fa[i])

11 $display("

fa[%0d]=%0d

",i,fa[i]);

12end

Python with語句和過程抽取思想

python中的with語句使用於對資源進行訪問的場合,保證不管處理過程中是否發生錯誤或者異常都會執行規定的 exit 清理 操作,釋放被訪問的資源,比如有檔案讀寫後自動關閉 執行緒中鎖的自動獲取和釋放等。與python中with語句有關的概念有 上下文管理協議 上下文管理器 執行時上下文 上下文表...

EF Core 執行SQL語句和儲存過程

無論orm有多麼強大,總會出現一些特殊的情況,它無法滿足我們的要求。在這篇文章中,我們介紹幾種執行sql的方法。在具體內容開始之前,我們先簡單說明一下要使用的表結構。public class category public string categoryname 在category定義了兩個字段 c...

03 IIC裝置和驅動的匹配過程分析

2.裝置端 上一節分析了 平台裝置和驅動的匹配過程,即 probe 函式的自動呼叫過程,本節來分析 iic 匯流排上裝置和驅動的匹配過程。struct i2c driver struct i2c device id mpu6050 id struct i2c driver mpu6050 drive...