проблема с `uvm_do_with: не может генерировать больше данных - PullRequest
0 голосов
/ 26 февраля 2020

Я столкнулся с проблемой ограничения данных в UVM `uvm_do_with. У меня есть такой фрагмент кода:

а) сначала я определил элемент данных:

class eth_item_data extends uvm_sequence_item;
    ...
    rand int              tx_len;
    rand logic [7:0]      txd[0:1500];
    ...

    constraint txd_range_c { foreach (txd[i]) txd[i] <=255;
                             foreach (txd[i]) txd[i] >=0;
                            } 
endclass

б) затем я сгенерировал данные в последовательности:

class base_seq extends uvm_sequence #(eth_item_data);
    ...
    virtual task body();
      ...
      data_obj = eth_item_data::type_id::create("data_obj");
      `uvm_do_with (data_obj, {...
                               txd[0][7:0]==8'h11;
                               txd[1][7:0]==8'h22;
                               txd[2][7:0]==8'h33;
                               txd[3][7:0]==8'h44;
                               ...
                               txd[109][7:0]==8'hff;
                              }
                   )
    endtask
endclass

Очень странно, что: Q1): с кодом выше он показывает, что вызов метода randomize не удался. Симулятор подразумевает, что ограничение uvm_do_with конфликтует с этими:

Эти переменные участвуют в наборе конфликтующих ограничений: переменные rand: txd [1501] ......

Q2): если я генерирую данные только с небольшим числом, например, могут быть сгенерированы данные

      `uvm_do_with (data_obj, {...
                               txd[0][7:0]==8'h11;
                               txd[1][7:0]==8'h22;
                               txd[2][7:0]==8'h33;
                               txd[3][7:0]==8'h44;
                               txd[4][7:0]==8'h55;
                               txd[5][7:0]==8'h66;
                               txd[6][7:0]==8'h77;
                               txd[7][7:0]==8'h88;
                               }
                    )

. Это смутило меня. Кто-нибудь может помочь мне понять, почему я не могу генерировать данные с большим количеством данных? спасибо.

1 Ответ

0 голосов
/ 26 февраля 2020

Я переписываю тестовое слово за словом, а затем перекомпилирую код. На этот раз проблем нет. Я предполагаю, что эта проблема вызвана некоторой «скрытой опечаткой» в источнике, которая не отображается, такой как некоторые управляющие символы. Спасибо за те комментарии, которые дают мне напоминание.

...