Документация Engee

Генератор кода в Engee

Генерация кода через графический интерфейс

Генерация кода для подсистемы

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

codegen subsystem ui

Таким образом можно сгенерировать код из любой выбранной подсистемы в модели.

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

subsystem generated 1

После завершения генерации в окне диагностики модели model diagnosis main появится уведомление об успешной генерации кода:

correct generation 1

Генерация кода для верхнего уровня модели

Для создания кода всей модели в графическом интерфейсе Engee нажмите кнопку «Сгенерировать код» codegen icon 1, расположенную на панели инструментов рабочего пространства.

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

Кнопка генерации кода для вернего уровня модели

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

model generated 1

Генерация кода через командную строку или интерактивный скрипт

Для генерации кода в Engee используется команда engee.generate_code в командной строке img 41 1 2 или редакторе скриптов interactive script icon.

Генерация кода для подсистемы

Для генерации кода подсистемы укажите полный путь к подсистеме с помощью аргумента subsystem_name. Полный путь к подсистеме включает ее имя в модели.

Сигнатура функции:

engee.generate_code(
    path/to/modelname.engee::String,
    path/to/output_dir::String;
    subsystem_name=subsystem_path::String,
    subsystem_id = subsystem_id::String,
    target::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.

Если не указан путь к генерируемой подсистеме, то код генерируется из верхнего уровня модели.

Пример:

engee.generate_code("/user/newmodel_1.engee", "/user/newmodel_1/Subsystem") # генерация кода для подсистемы

engee.generate_code("/user/newmodel_1.engee", "/user/newmodel_1/Subsystem"; subsystem_id = "88275e0b-a049-4bb5-b8c7-057badd1b536") # генерация кода для атомарной подсистемы по ее id

Генерация кода для модели

Для генерации кода из всей модели укажите путь к модели и директорию для сохранения сгенерированного кода. Если модель уже открыта в 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/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")