system verilog 문법

김기찬·2024년 7월 17일

modport

constraint

sv의 class 변수들은 rand로 선언 가능.
ex)rand bit a;
random variable의 범위 설정방법 : constraint
class 내부: constraint name {조건}
class 외부: constraint class_name::name {조건}

조건 설정

constraint name {
	a == 12; //a = 12
    a < b; 
    a inside {[1:3], 5, 7}; //a = 1,2,3,5,7
    !(a inside{[1:3]}); //a = 1,2,3 제외
    a dist {[1:3]:=30, 5:=20}; //1,2,3은 가중치 30, 5는 가중치 20(확률)
}

typedef enum {low,mid,high,any} atype;
constraint addr_range{ //case문 처럼 사용가능.
	(atype == low) -> addr inside {[0:15]};
    (atype == mid) -> addr inside {[16:127]};
    (atype == high) -> addr inside {[128:255]};
}

array 형태의 변수들도 정의 가능. (ex. rand bit A[];)

    
profile
SoC개발자

0개의 댓글