2015-01-22 4 views
0

UVM 요리 책에서 클래스 개체 인스턴스화가 런타임에 완료된다고 기록됩니다. 그러나 실행 시간 전에 컴파일/정교 작업 중에 우리는 클래스에 대한 모든 세부 사항을 가질 수 있습니다.UVM 클래스 개체 인스턴스화

아래 이미지 (UVM Cookbook에서 가져옴)에서 볼 수 있듯이 정교화 단계에서 모듈 및 인터페이스 인스턴트 생성이 수행되지만 런타임에 클래스 객체 생성이 완료되었음을 알 수 있습니다.

enter image description here

이 샘플 예를 생각해 보자. 우리가 다른 모듈 또는 인터페이스 세부 사항과 같은 컴파일/동화 시간에서 사용할 수있는 클래스의 모든 세부 사항을 가지고
// Inside any .sv file 
class A; 
    int a; 
endclass 

A x; 

initial 
    x=new(); 

지금이 경우, 런타임에 클래스를 만들 필요가 없습니다.

그렇다면 Systemverilog에서는 런타임에 클래스 인스턴스화 만 수행됩니다.

C++에서도 런타임에 개체 생성이 수행되지 않습니다.

참고 : 질문에서 저는 런타임 생성이 필수가 될 수도있는 상속을 사용하지 않는 간단한 클래스에 대해 이야기합니다. 창조 (Creation)에 의해 나는 모든 것 (모듈, 인터페이스, 클래스)을위한 메모리가 시뮬레이션 동안에 만 할당 될 것이기 때문에 나는 메모리 할당을 언급하지 않는다. 나는 단지 이미지의 맥락을 취하고있다.

+0

너무 거슬려서 미안하지만 당신이 무슨 말을하고 있는지 전혀 모를 것 같습니다. 객체 생성은 C++에서도 항상 런타임에 수행됩니다. "객체 인스턴스화"라는 코드를 컴파일했기 때문에 컴파일 타임에 해당 객체가 생성된다는 의미는 아닙니다. –

+0

@ 튜더 : 편집 된 질문을 친절히 확인하고 내 이해 또는 질문 자체에 실수를 발견하면 알려주십시오. –

답변

0

@Tudor가 지적했듯이 모든 개체 인스턴스는 런타임에 만들어집니다. 모든 객체가 생성자를 실행해야하기 때문입니다. 이것은 C++과 동일합니다.

1

모든 개체는 런타임에 만들어집니다.

아마도 런타임과 런타임이 혼동을 일으킬 수 있습니까? 실행 단계는 시뮬레이션에서 여러 기간을 분리 할 수있는 uvm의 단계적 매커니즘의 일부입니다. 따라서 모든 uvm 구성 요소는 단계별로 동기화 할 수 있습니다.

여기서 개체를 만드는 작업은 런타임의 일부인 build_phase에서 수행됩니다.

관련 문제