Генератор кода в 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")