Генератор кода в Engee
Генерация кода через графический интерфейс
Генерация кода для подсистемы
Для генерации кода через графический интерфейс Engee нажмите правой кнопкой мыши по подсистеме (блок Subsystem):

Таким образом можно сгенерировать код из любой выбранной подсистемы в модели.
Сгенерированный код находится в директории с именем modelname_Subsystem_code в той же директории, где находится модель (либо в текущей директории, если модель еще не сохранялась на диск). Здесь modelname — это имя модели, Subsystem — имя подсистемы, а code — суффикс, добавляемый к имени директории со сгенерированным кодом. Например, для блока с именем Subsystem в модели newmodel_1:

После завершения генерации в окне диагностики модели
появится уведомление об успешной генерации кода.
Генерация кода для верхнего уровня модели
Для создания кода всей модели в графическом интерфейсе Engee нажмите кнопку Сгенерировать код
, расположенную на панели инструментов рабочего пространства.
В выпадающем меню рядом с кнопкой генерации должна быть выбрана целевая платформа Engee (выбрана по умолчанию).

Сгенерированный код находится в директории с именем modelname_code в той же директории, где находится модель (либо в текущей директории, если модель еще не сохранялась на диск). Здесь modelname — это имя модели, а code — суффикс, добавляемый к имени директории со сгенерированным кодом. Например, для модели newmodel_1 (подсистема не выбрана):

Генерация кода через командную строку или интерактивный скрипт
Для генерации кода в Engee используется команда engee.generate_code в командной строке
или редакторе скриптов
.
Генерация кода для подсистемы
Для генерации кода подсистемы укажите полный путь к подсистеме с помощью аргумента subsystem_name. Полный путь к подсистеме включает ее имя в модели.
Сигнатура функции:
engee.generate_code(
model_path::String,
output_dir::String;
subsystem_name::String = nothing,
subsystem_id::String = nothing,
target::String = "c",
template_path::String = ""
)
Аргументы:
-
path/to/modelname.engee::String: абсолютный или относительный путь к модели из которой генерируется код. В качестве аргумента может выступать объект модели (объект типа model, полученный функциейengee.gcm). -
path/to/output_dir::String: абсолютный или относительный путь к директории, в которую сохранится сгенерированный код. Если директорииoutput_dirне существует — она будет создана автоматически. -
subsystem_name=path/to/subsystem::String: полный путь к атомарной подсистеме из которой генерируется код. -
subsystem_id = subsystem_id::String: уникальный идентификатор атомарной подсистемы из которой генерируется код. -
target::String: указание языка для генерации кода. Поддерживаемые языки —Си(по умолчанию) илиVerilog. -
template_path::String: путь к пользовательскому .jl-шаблону (например, с функцией main), используемому при генерации кода. Если не указан, то используется шаблон по умолчанию.
Если указаны параметры subsystem_name или subsystem_id, то выполняется генерация кода для подсистемы. Если ни один из них не указан — генерация выполняется для всей модели.
Пример:
# Генерация Си кода для подсистемы
engee.generate_code("/user/newmodel_1.engee", "/user/newmodel_1/Subsystem")
# Генерация кода для атомарной подсистемы по ее id
engee.generate_code(
"/user/newmodel_1.engee",
"/user/newmodel_1/Subsystem";
subsystem_name = "Subsystem",
subsystem_id = "88275e0b-a049-4bb5-b8c7-057badd1b536"
)
Если указан неверный subsystem_id, то генерация завершится с ошибкой, даже если subsystem_name указан правильно. В таких случаях Engee не сможет найти подсистему, и код не будет сгенерирован. Поэтому надежнее использовать только subsystem_name (если он уникален в модели).
Генерация кода для модели
Для генерации кода из всей модели укажите путь к модели и директорию для сохранения сгенерированного кода. Если модель уже открыта в Engee, то можно передать объект модели, полученный с помощью функции engee.gcm).
Сигнатура функции:
engee.generate_code(
path/to/modelname.engee::String,
path/to/output_dir::String;
target::String
)
Аргументы:
-
path/to/modelname.engee::String: абсолютный или относительный путь к модели из которой генерируется код. В качестве аргумента может выступать объект модели (объект типа model, полученный функциейengee.gcm). -
path/to/output_dir::String: абсолютный или относительный путь к директории, в которую сохранится сгенерированный код. Если директорииoutput_dirне существует — она будет создана автоматически. -
target::String: указание языка для генерации кода. Поддерживаемые языки —Си(по умолчанию) илиVerilog.
Пример:
# Абсолютный путь к модели
engee.generate_code("/user/newmodel_1.engee", "/user/newmodel_1/codegen_output")
# Относительный путь к модели
engee.generate_code("newmodel_1.engee", "newmodel_1/codegen_output")
# Получение текущей открытой модели и генерация кода из нее
m = engee.gcm()
engee.generate_code(m, "/user/newmodel_1/codegen_output")