«автоматический» на самом деле означает «повторный вход». Сам термин украден из языков программирования - например, C имеет ключевое слово «auto» для объявления переменных как выделенных в стеке, когда область, в которой он находится, выполняется и освобождается впоследствии, так что несколько вызовов одной и той же области действия не видеть постоянные значения этой переменной. Причина, по которой вы, возможно, не слышали об этом ключевом слове в C, это то, что это класс хранения по умолчанию для всех типов :-) Альтернативы являются «статическими», что означает «распределить эту переменную статически (в одно глобальное местоположение в памяти) и ссылаться на эту же ячейку памяти во время выполнения программы, независимо от того, сколько раз функция вызывается »и« volatile », что означает« это регистр в другом месте моего SoC или что-то еще на другом устройстве, которое у меня нет компилятор, пожалуйста, не оптимизируйте чтение для меня, даже если вы думаете, что знаете мою ценность из предыдущих чтений без промежуточных записей в коде ».
«автоматический» предназначен для рекурсивных функций, но также для одновременной работы одной и той же функции в разных потоках исполнения. Например, если вы «разблокируете» N разных блоков (используя оператор Verilog fork-> join), и все они одновременно вызовут одну и ту же функцию, те же проблемы возникают как функция, вызывающая себя рекурсивно.
Во многих случаях ваш код будет в порядке, не объявляя задачу или функцию «автоматическим», но это хорошая практика, чтобы поместить ее туда, если вам не нужно, чтобы это было иначе.