#system-verilog
Вопрос:
bit[2:0] size; bit[2:0] num; bit[59:0] data; data = 60'h12345; num = 3'h1; size = 3'h1; data = {(num 1){data[(size 1)*10-1:0]}};
////Ошибка-[IRIPS] Недопустимый диапазон в части выбора
////Предупреждение-[WUIMCM] Неизвестно в множителе multiconcat
Как мне это исправить?
Ответ №1:
SystemVerilog не допускает переменной ширины в операндах. Вам нужно создать маску для выбора части data
переменной и использовать for
цикл aa для репликации.
bit [59:0] data_select = data; data_select amp;= (61'b1 lt;lt; (size 1)*10) - 1; for(int i=0;ilt;num 1;i ) begin data lt;lt;= (size 1)*10; data |= data_select; end