Нет, на верилоге все правильно записано. И в схеме все правильно, тесты же процессор проходит. Необходимо расписать побитно на С, чтобы получить корректный результат. Такая параллельная запись, как на верилоге, прямо перенесенная на С в неизменном виде, не отображает функцию правильно.
То есть, на С вычислять надо развернутый вариант, тогда будет правильный результат за один проход и нет обратной зависимости:
Не нужно, cpred лучше вообще сократить, и вместо него использовать вектор {c[14:0], cl}. То есть - в любой момент времени значение cpred[0] равно cl, cpred[1] равно c[0] и так далее. Вместо cpred можно использовать cl и c[14:0] непосредственно.Код:c[0] = (cl & oxy[0]) | (~cl & axy[0] & oxy[0]);
c[1] = (c[0] & oxy[1]) | (~c[0] & axy[1] & oxy[1]);
c[2] = (c[1] & oxy[2]) | (~c[1] & axy[2] & oxy[2]);
...
c[14] = (c[13] & oxy[14]) | (~c[13] & axy[14] & oxy[14]);
c[15] = (c[14] & oxy[15]) | (~c[14] & axy[15] & oxy[15]);

