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 내용", 위험도 표시)