Цитата Сообщение от Vslav Посмотреть сообщение
замкнутых петель в коде нет
Вот например, строки 1540-1541:
Код:
assign cpred   = {c[14:0], cl};
assign c       = (cpred & oxy) | (~cpred & axy & oxy);
Кстати, в alwaysе, начинающемся со строки 1014, с комментарием "ACLO edge detectors" нет ошибки? Там висящий блок begin end, который перебивает действие того, что было сделано ранее.
Цитата Сообщение от Vslav Посмотреть сообщение
На HDL модуль скорее соответствует макросу на C
Это я понял, но я хочу сделать его именно функцией, это очень сильно упрощает программирование. Например модуль vm1_vgen у меня выродился в одну линейную функцию из простых присваиваний, alwaysы там оказались не нужны.
Предположим, что модуль - это такая микросхема с ножками, на вход подаётся ТЧ и входные сигналы, и в заданные моменты снимаются выходные сигналы. При этом, предполагаем, что наша модель идеальна (нет переходных состояний) и дискретна, меняет своё состояние только в моменты фронтов ТЧ. Субмоуль - точно также. При этом модулю, в котором вызывается субмодуль совершенно необязательно знать, что происходит внутри субмодуля, достаточно знать что на входе и что на выходе в заданные конкретные моменты времени, соответствующие его, модуля, дискретным состояниям. Поэтому наверняка субмодуль можно описать в виде триггера блоком(ами) always с условиями которые соответствуют условиям always внутри субмодуля.