Как определить ограничение для одной битовой случайной величины? - PullRequest
0 голосов
/ 10 февраля 2019

В моем случае, если значение бита равно «1», тогда мое ограничение будет иметь больший вес для «1», если бит «0», тогда мое ограничение будет иметь больший вес для «0».Как это ограничить?

Я получаю синтаксическую ошибку для этого куска кода

rand bit value;
bit x; // Has either 1 or 0 depending on external signal
constraint constraint_c { value dist { x := 3, ~x := 1};};

Пожалуйста, помогите мне в этом.Спасибо:)

1 Ответ

0 голосов
/ 10 февраля 2019

Вы можете поместить if-else в ограничение

rand bit value;
bit x;
constraint c {
    if(x)
       value dist {1 := 3, 0 := 1};
    else
       value dist {1 := 1, 0 := 3};
}

Ваши веса также могут быть переменными

int weight0, weight1;
 constraint c {
       value dist {1 := weight1, 0 := weight0};

// set before calling randomize
if (x) begin
    weight1 = 3; weight0 =1;
end else begin
    weight1 = 1; weight0 =3;
end

Или выражениями

 constraint c {
           value dist {1 := x?3:1, 0 := x?1:3};
...