ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • automatic
    카테고리 없음 2023. 8. 8. 22:33

    일반적으로 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번 출력이 되는 결과를 보여 줍니다

     

    출처: https://leehc257.tistory.com/39

Designed by Tistory.