Битовая обработка потока в SystemVerilog для массивов и структур не кажется очень безопасной.Как правильно использовать массивы в SystemVerilog?
Например, следующий вопрос отливки будет пойман только во время выполнения (который может быть часы в моделирование):
bit [31:0] bit_queue[$];
logic [31:0] logic_array[5];
for (int i = 0; i < 10; i++) begin
bit_queue[i] = $urandom;
end
if (catch_issue) begin
typedef logic [31:0] logic_array_t [5];
logic_array = logic_array_t'(bit_queue); // <-- ISSUE
end
Существует ли правильная «безопасная» процедура выполнения отливки битового потока? Где любые проблемы могут быть обнаружены во время компиляции или безопасно обработаны во время выполнения? Или язык сломан в этом случае?
Пример кода выше на EDA Playground: http://www.edaplayground.com/x/2tp