2017-01-24 8 views
2

나는이 방법으로 제한 할 필요가이 여러 필드를위한 세대 :Specman을 온 -가 - 비행 여러 제약 항목

struct my_struct { 
    a : uint; 
    b : uint; 
    c : uint; 
    d : uint; 
    keep 3*a + 4*b + 5*c + 6*d == 206 and a + b + c + d == 50; 

    my_method() @clk_event is { 
     while (TRUE) { 
      if (ctr == 0) { 
       gen a; 
       gen b; 
       gen c; 
       gen d; 
      }; 
      if (ctr == 50) { 
       ctr = 0; 
      } else { 
       ctr += 1; 
      }; 
      wait cycle; 
     }; 
    }; 
}; 
나는 기본적으로 a, b 값의 새로운 세트를 생성 할

, cd이 주기적으로 표시됩니다. 위의 코드는 시뮬레이션에서 값이 변경되지 않았기 때문에 작동하지 않습니다. 어떤 생각을하는 방법?

답변

2

하나의 필드를 생성 할 때 다른 필드는 값을 변경할 수 없으며 제약 조건의 입력입니다. 귀하의 제약 조건을 감안할 때, 다른 세 가지가 바뀔 수없는 경우 한 필드에 대해 올바른 값이 하나만있을 수 있습니다.

아마도 디자인을 수정하고 구조체 아래에 제약 조건이있는 필드를 넣고이 구조체 형식의 필드가 필요할 수 있습니다. 따라서 4 개의 분리 된 보너스 대신 1 개의 보너스를 받게됩니다.

+0

이것은 확실히 문제를 해결했습니다. 이제 구조체 항목을 생성 할 때마다 새로운 값 집합을 얻는 것을 볼 수 있습니다. 고맙습니다! – renvill