변수의 제약 조건을 한 번 한 번 설정하고 Specman에서 몇 번 생성 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/343126

  •  19-08-2019
  •  | 
  •  

문제

동일한 제약 세트로 매번 같은 함수로 몇 번 생성하려는 변수가 있습니다. 제약 조건을 한 번 그리고 정의를 설정할 수 있습니다 gen 여러 번? 즉, 이것 대신 :

var a:uint;
gen a keeping {it in [100..120];};
// some code that uses a
.
.
.
gen a keeping {it in [100..120];};
// some code that uses a
.
.
.
gen a keeping {it in [100..120];};
// some code that uses a
// etc...

나는 이것을하고 싶다 :

var a:uint;
keep a in [100..120];
.
.
.
gen a;
// some code that uses a
.
.
.
gen a;
// some code that uses a
.
.
.
gen a;
// some code that uses a
// etc...

그렇게하고 싶다면 그렇게하고 있습니다 aS 제약 조건 나는 한 번만해야합니다.

도움이 되었습니까?

해결책

변수를 Enclosing Object의 인스턴스 멤버로 만들어이를 수행 할 수 있습니다.

a : uint;
keep a in [100..120];
my_method()@qualified_clk_rise_e is {

    gen a;
    ...
    gen a;
    ...
    gen a; 
};

Multiple My_Method ()가 동시에 동일한 개체에서 실행중인 경우이 구현은 스레드 안전이 아닙니다. 생성 된 'A'를 방법의 범위 :

var my_a : uint;
gen a;
my_a = a;

또는 'a'를 생성하는 메소드를 작성할 수 있습니다.

gen_a(): uint is {
    gen result keeping { it in [100..120] };
};

my_method()@qualified_clock_rise_e is {
    var a : uint;
    ...
    a = gen_a();
    ...
    a = gen_a();
    ...
    a = gen_a();
    ...
};
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top