class Base
rand bit b;
// constraint c1 { every 5th randomization should have b =0;}
endclass
정적 변수를 만들고 그 변수를 업데이트 한 다음 제약 조건에서 % 5 %가 0인지 확인한 다음 b = 0으로 만들 수 있음을 알고 있습니다. 그것을 할 수있는 더 좋은 방법이 있습니까? 감사.SystemVerilog Constraint, n 번째 반복마다 값 고정
class Base
rand bit b;
// constraint c1 { every 5th randomization should have b =0;}
endclass
정적 변수를 만들고 그 변수를 업데이트 한 다음 제약 조건에서 % 5 %가 0인지 확인한 다음 b = 0으로 만들 수 있음을 알고 있습니다. 그것을 할 수있는 더 좋은 방법이 있습니까? 감사.SystemVerilog Constraint, n 번째 반복마다 값 고정
카운트를 정적으로 만들 필요가 없습니다. 단지 랜덤하지 않아도됩니다.
class Base;
rand bit b;
int count;
constraint c1 { count%5 -> b==0;}
function post_randomize();
count++;
endfunction
endclass
감사합니다. @ dave_59. 비 정적 멤버가 클래스의 모든 인스턴스에서 공유되는 방식을 알려주십시오. 미리 감사드립니다. –
하나의 객체를 반복적으로 랜덤 화하거나 한 번 무작위로 많은 객체를 생성하려는 경우 원래 질문에서 지정하지 않았습니다. 예, 그렇습니다. 카운트는 정적 일 필요가 있습니다. –
감사합니다. @ dave_59. –
최대 한도 인 b
을 알고 있다면 다음과 같은 제약 조건을 쓸 수 있습니다.
constraint abc
{
b dist {0:=20, 1:=80}
}
이 80
에, 1
의 무게를 20
에 0
의 무게를 만들 것입니다. 따라서이 방법으로 5 회 임의화할 때마다 0이 한 번 발생합니다.
올바르지 않습니다. 5 분의 1의 확률을 갖는 것은 매 5 회 발생시 한 번과 같은 것이 아닙니다. –
위의 제약 조건으로 매 5 번의 랜덤 화에서 도구가 0을 생성한다는 보장은 아닙니까? –
수정. 확률은 보장 할 수 없습니다. –
실제 사용할 코드를 게시하십시오. 그런 다음 사람들이 더 좋은 방법을 제공 할 수 있습니다. – toolic
방금 인터뷰에서 질문을 받았습니다. –