Engee 文档

工程中的代码生成器

通过图形界面生成代码

子系统的代码生成

要通过图形界面*Engee*生成代码,请右键单击子系统(块 子系统):

codegen subsystem ui cn

这样,您可以从模型中的任何选定子系统生成代码。

生成的代码位于模型所在的同一目录中名为’modelname_Subsystem_code’的目录中(如果模型尚未保存到磁盘,则位于当前目录中)。 这里,'modelname`是模型的名称,`Subsystem`是子系统的名称,`code’是用生成的代码添加到目录名称中的后缀。 例如,对于newmodel_1模型中名为Subsystem的块:

subsystem generated 1 cn

在窗口中生成完成后 模型诊断 model diagnosis main 将出现有关代码生成成功的通知。

模型顶层的代码生成

要在图形界面*Engee*中创建整个模型的代码,请单击 生成代码 codegen icon 1 位于工作区工具栏上。

在生成按钮旁边的下拉菜单中,应该选择目标平台*Engee*(默认情况下选择)。

生成顶级模型代码按钮

生成的代码位于模型所在的同一目录中名为`modelname_code`的目录中(如果模型尚未保存到磁盘,则位于当前目录中)。 这里,'modelname’是模型的名称,`code`是用生成的代码添加到目录名称中的后缀。 例如,对于newmodel_1模型(未选择子系统):

model generated 1 cn

通过命令行或交互式脚本生成代码

要在*Engee*中生成代码,请使用命令 恩吉。generate_code命令行 img 41 1 2脚本编辑器 interactive script icon.

子系统的代码生成

要生成子系统代码,请使用"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':生成代码的模型的绝对或相对路径。 参数可以是模型对象(由`engee获得的模型类型对象。gcm’功能)。

  • 'path/to/output_dir::String`:保存生成代码的目录的绝对或相对路径。 如果’output_dir’目录不存在,它将自动创建。

  • 'subsystem_name=path/to/subsystem::String':生成代码的原子子系统的完整路径。

  • 'subsystem_id=subsystem_id::String':生成代码的原子子系统的唯一标识符。

  • 'target::String`:指定代码生成的语言。 支持的语言是’c'(默认)或’Verilog'。

  • 'template_path::String`:用户的路径。代码生成中使用的jl模板(例如,具有main函数)。 如果省略,则使用默认模板。

如果指定了参数’subsystem_name’或’subsystem_id',则执行子系统的代码生成。 如果没有指定它们,则为整个模型执行生成。

例子:

# 为子系统生成C代码
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*中打开,那么您可以通过使用函数获得的模型对象 恩吉。gcm)。

功能签名:

engee.generate_code(
    path/to/modelname.engee::String,
    path/to/output_dir::String;
    target::String
)

论点:

  • 'path/to/modelname.engee::String':生成代码的模型的绝对或相对路径。 参数可以是模型对象(由`engee获得的模型类型对象。gcm’功能)。

  • 'path/to/output_dir::String`:保存生成代码的目录的绝对或相对路径。 如果’output_dir’目录不存在,它将自动创建。

  • 'target::String`:指定代码生成的语言。 支持的语言是’c'(默认)或’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")