Пара вещей, которые я наблюдал из фрагмента кода. Прежде всего, ввод не имеет достаточной ширины. Требуемая ширина 32*5*5=5120
. Поэтому нам нужны входные векторы 5120 бит (input [5119:0] A, input [5119:0] B
). Инструмент для рисования мог бы решить эту проблему.
Во-вторых, start
необходимо инициализировать в ноль в начале вычисления. Это позволит избежать защелок на start
и будет вычислять из нулевого индекса A
и избежать дальнейшего распространения X
.
always @(A or B) begin
//...
start=0;
Я бы посоветовал использовать Always_comb вместо ручной чувствительности, но это совершенно другой топи c.
В качестве примечания, данный фрагмент кода создаст большое комбинационное оборудование, как я понимаю. Возможно, вы захотите проверить результат синтеза на наличие нарушений синхронизации в разных сетях и применить некоторые альтернативные логики c.