UVM 배경지식-1

김기찬·2024년 7월 16일

upcasting, downcasting
upcasting: 자식 class를 부모 class로 변환하는 것. 자식 class는 부모 class의 모든 것을 포함하므로 변환 가능
downcasting: 부모 class를 자식 class로 변환하는 것. 부모 class는 자식 class의 모든 것을 포함하지 않을 수도 있음 -> error 발생.
해결 방안: $cast(자식class, 부모class) 를 이용하여 두 class type이 일치하는지 확인

class bad_packet extends packet; //이런 경우일 때

task transmit(packet pkt); endtask //packet type을 입력으로 받는 task


packet pkt = new();
transmit(pkt); //입력으로 packet type을 넣음

bad_packet bad_pkt = new();
transmit(bad_pkt); //입력으로 bad_packet type을 넣었지만 가능. upcasting

반대로 task 입력이 bad_packet type이라면 입력으로 packet type을 넣을 때 에러 발생(downcasting)

UVM MACRO
uvm_fatal("message ID","message 내용")
uvm_error()
uvm_warning()
uvm_info("message ID","message 내용", 위험도 표시)

profile
SoC개발자

0개의 댓글