записывать значение и подставлять в следующей итерации
Хорошая, годная мысль.
Расположение блоков в редакторе произвольно и значит возможны ошибки
Логика работы, конечно, не должна зависеть от расположения блоков на экране. Блоки вызывают друг друга рекурсивно, чтобы определить состояния своих входов. Каждый блок должен помнить состояния своих входов и выходов для текущего момента времени и, возможно, для предыдущего момента. Отдельно каждый блок имеет флаг, показывающий, было ли уже вычислено состояние выхода на текущий момент. Флаг гарантирует конечность рекурсивных вызовов, т.к. если выход уже вычислен, то сразу возвращаемся из рекурсии.
(Делал очень-очень давно подобную штуку, только не для логических элементов, а для аналоговых СВЧ-блоков, сам удивляюсь, что ещё что-то помню о том проекте).