Я читал эту страницу http://www.asic-world.com/verilog/verilog_one_day3.html, когда наткнулся на следующее:
Обычно мы должны сбрасывать триггеры, поэтому каждый раз, когда часы переходят от 0 к 1 (позиция), мы проверяем, установлен ли сброс (синхронный сброс), затем мы продолжаем с нормальной логикой. Если мы посмотрим внимательнее, то увидим, что в случае комбинационной логики у нас было «=» для присваивания, а для последовательного блока у нас был оператор «<=». Ну, «=» - это блокирующее назначение, а «<=» - это неблокирующее назначение. «=» выполняет код последовательно внутри начала / конца, тогда как неблокирующая «<=» выполняется параллельно.
Я был совершенно уверен, что неблокирующие назначения были последовательными, в то время как блокирующие назначения были параллельными. В конце концов, вы можете делать блокирующие присваивания с помощью операторов присваивания вне блоков всегда, и все они выполняются параллельно. Это ошибка, или поведение внутри блока всегда отличается? И, если поведение внутри блока всегда отличается, могут ли быть сделаны неблокирующие назначения вне блока всегда?