본문 바로가기
language/Verilog

[systemverilog] automatic keyword

by 파란하늘코더 2021. 1. 31.
반응형

예전 블로그에서 automatic이 뭔지 몰라 정리를 했었던 적이 있습니다

blog.naver.com/ddacksal/222029970829

 

[Day 49] systemverilog 공부 - 8 (automatic, static, initialize, datatype)

새로 산 책에 제목에 있는 부분들이 정리가 어느정도는 되어있어서​나중에 다시 봤을때를 위해 정리를 해...

blog.naver.com

이번에 다시 정리하면서 머리속에 넣어두려고 합니다.

 

해당 keyworkd는 verilog에서도 있었던 것 같은데, 정확히 찾아볼 시간이 없어서 우선 어떻게 사용하는지 정리를 합니다

 

일반적으로 verilog나 systemverilog에서 그냥 task를 사용하면 default static속성을 가지고 있습니다.

 

static으로 선언이 되면 task나 함수가 호출 될 때마다 사용중인 variable을 공유해서 사용하는 특징을 가지고 있습니다.

 

예를들어 아래와 같은 코드를 볼 때 

module tb;
    initial display();
    initial display();
    initial display();
    initial display();

    task display();
        integer i = 0;
        i = i + 1;
       $display("i=%0d", i);
    endtask
endmodule

display라는 task는 호출될 때 특정영역에 i라는 변수를 공유하게 되어

 

아래와 같은 출력 1, 2, 3, 4라는 출력값을 내보내게 됩니다.

 

하지만 automatic을 붙여주게 되면 각 task는 별도의 메모리 공간을 두어 각자의 변수를 관리하게 되므로

 

module tb;
    initial display();
    initial display();
    initial display();
    initial display();

    task automatic display();
        integer i = 0;
        i = i + 1;
       $display("i=%0d", i);
    endtask
endmodule

1이 4번 출력이 되는 결과를 보여 줍니다

 

 

 

'language > Verilog' 카테고리의 다른 글

[verilog] >>, >>>, <<, <<< 연산자  (2) 2021.01.31
[verilog] generate 사용하기  (0) 2021.01.31
[systemverilog] task 와 function  (0) 2021.01.31
[verilog] $signed casting logic count  (0) 2021.01.26
[verilog] $signed casting 사용  (0) 2021.01.26

댓글