Tcl 导出

VisualApplets 允许您将 VisualApplets 设计导出为 Tcl 脚本(*.tcl)。

您可以将该脚本格式用于以下目的:

  • 版本控制

  • 自动比较版本(通过创建“diffs”)

但是,在导出为 Tcl 脚本的过程中会丢失某些信息。 因此,您应始终将设计保存在 *.va 格式中。 Tcl 文件不适合用作主要数据格式。

[警告] 将设计保存为 *.va Format

使用 *.va 文件格式作为 VisualApplets 设计的主要数据格式。

Tcl 脚本不包含完整的设计信息。

导出为 Tcl

导出为 Tcl 脚本期间将丢失以下信息:

  • 您在用户库元素实例中所做的本地修改(用于使该实例适应周围的设计)将会 丢失。 如果您将 Tcl 脚本重新导入到 VisualApplets 中,该实例将作为用户库元素的全新副本插入。 您设计中实例的内容未保存在 Tcl 中。

  • 信息框的内容会保留在 Tcl 格式中。但是,信息框的格式会丢失。

您还应该始终将设计保存在 *.va 格式中。 Tcl 文件不适合用作主要数据格式。

要将设计导出为 Tcl 文件(*.tcl):

  1. 从菜单中选择 File → Export → Design to Script...。

    导出设计

    图 175. 导出设计


  2. 选择用于保存 *.tcl 包含您设计的文件的位置,然后单击 保存.

现在,您可以将 Tcl 文件检入到您的版本控制系统中,或者使用“diff”工具查找设计不同版本之间的差异。

从 Tcl 导入

要将您的 *.tcl 设计文件导入到 VisualApplets 中:

  1. 从菜单中选择 File → Import → Design from Script...。

    导入设计

    图 176. 导入设计


  2. 浏览至 *.tcl 文件的位置,该文件包含您的设计,并选择 *.tcl 文件。

  3. 点击 Open。

现在,您的设计已在 VisualApplets 中打开,您可以

  • 在 VisualApplets 中继续编辑您的设计,

  • 将您的设计文件保存为 *.va 文件。

[警告] 始终使用 *.va File Format as Primary Data Format

始终使用 *.va 文件格式作为 VisualApplets 设计的主要数据格式。

切勿将 Tcl 脚本格式用作主数据格式,因为 Tcl 脚本不包含完整的设计信息。

Tcl 导入/导出命令参考

在生成的 Tcl 源文件中,使用了以下 VisualApplets 专用命令。

[重要] 语法

可选参数:可选参数的符号表示遵循维尔特语法符号(括号)。

Parameter FullModuleName:从进程级别开始的分层路径。层级之间用斜杠分隔。

命令

参数

描述

创建、加载和保存设计

CreateDesign

名称

Platform

用于为硬件平台“Platform”创建一个名为“Name”的新设计的命令。 若要指定设计的目标平台,您可以使用

  • 该平台的 VisualApplets 库名称(例如“mE4VQ4-GE”),或者

  • 平台的完整名称(例如“microEnable IV VQ4-GE”)。

名称中的大小写字母没有区别。

SetDesignProperty

Key Value

使用此命令输入设计 Property。您可以将以下三个值用作 key:

  • ProjectName(您希望赋予该项目的名称)

  • Version(设计的版本)

  • >Description(项目的描述)。

SetDesignClock

NewFrequency

用于设置 FPGA 基本时钟频率(以 MHz 为单位)的命令。

设置 Design

CreateProcess

-

创建一个新的 process

CreateModule

OperatorType

FullModuleName

[ InPortMultiplicity

[ OutPortMultiplicity

{NamedPortMultiplicity}

] ]

xPos

yPos

创建算子(OperatorType)的一个实例(Module)。

您通过参数 xPos 和 yPos 来定义 module 在 design 窗口中的位置。

通过 FullModuleName,您可以定义 module 在设计内的分层位置及其实例化后的名称(例如 Process0/branch)。

或者,您可以使用值对 InPortMultiplicity 和 OutPortMultiplicity 来指定 module 的向量输入和向量输出的多重性。

如果使用此值对,则可以为 module(作为算子的特定实例)定义端口数量(适用于具有可变端口数量的算子,例如 BRANCH)。

此外,您还可以指定各个向量端口的多重性(NamedPortMultiplicity)。您可以在一个命令行中多次使用 NamedPortMultiplicity。

格式为 PortGroup:Number。

示例:CreateModule BRANCH Process0/branch 0 0 O:3 100 100

ConnectModules

FromModule

FromModulePort

ToModule

ToModulePort

[ x1 [y2 x3] ]

用于连接模块的命令。对于 FromModule 和 ToModule,请使用分层名称 (包含模块在设计中的分层位置以及实际模块名称的名称,例如 Process0/branch)。

Nodes within hierarchical boxes are identified via the prefix "INBOUND#" or "OUTBOUND#". Example: "OUTBOUND#O001".

可选参数 x1、y2 和 x3 用于定义连接多边形的几何形状 (从 FromModuleOutputPort 到 x1 的水平线, 到 y2 的垂直线, 到 x3 的水平线, 向上延伸至 ToModulePort 高度的垂直线, 到 ToModulePort 的水平线)。

CreateComment

FullModuleName

Text

xPos

yPos

Text 的内容可以包含 Unicode 字符。如果您使用的字符不属于 ASCII,请使用相应的 Tcl 语法来表示 Unicode,例如:

[encoding convert from utf-8 "A-Umlaut: \xc3\x84"]

SetParamInt

FullModuleName

ParameterName

值

用于设置整数 Property 的命令。

SetParamFloat

FullModuleName

ParameterName

值

用于设置浮点数 Property 的命令。

SetParamEnum

FullModuleName

ParameterName

值

用于设置寻址枚举 Property 的命令。Value 为枚举值的字符串。

示例:Process0/module1 (SetSignalStatus),"SetParamEnum Process0/module1 Mode High" 将 Mode Property 设置为 High。

SetParamString

FullModuleName

ParameterName

值

用于设置字符串 Property 的命令。

SetParamIntField

FullModuleName

ParameterName

索引

Value1

{OtherValues}

Command for setting integer field entries starting with index "Index" for the following values.

SetParamFloatField

FullModuleName

ParameterName

索引

值

{OtherValues}

用于将以索引 "Index" 开始的浮点数字段条目设置为以下值的命令。

SetParamStatic

FullModuleName

ParameterName

如果参数既可以是静态的也可以是动态的,绝大多数情况下该参数默认设置为动态。使用此命令可将此类参数设置为静态。

SetParamDynamic

FullModuleName

ParameterName

您可以使用此功能将参数设置为动态(如果该参数本身支持动态)。

SetLinkParam

FullModuleName

PortName

ParameterName

值

{ OtherParameterName

OtherParameterValue }

用于配置链接的命令。连接通过模块的连接节点进行识别。

SetResourceMapping

FullModuleName

ResourceName

[Index]

NewMapping

用于更改资源到模块的映射的命令。资源 ResourceName 将被映射到新索引 NewMapping。 如果模块分配了多个同类型的资源,请使用可选参数 Index 来选择资源。

更多编辑命令

Move

FullModuleName

[HierNodeName]

PosX

PosY

Command for re-positioning a module, a H-Box node, a comment box, or a simulation module to a new position within the design window.

仅当选择 H-Box 节点时才使用参数 [HierNodeName]。 分层框内的节点通过前缀 "INBOUND#" 或 "OUTBOUND#" 进行识别(就像使用 ConnectModules 命令时一样),例如 "INBOUND#I000"。

CreateSimSource

FullSimModuleName

xPos

yPos

用于在指定位置创建仿真源的命令。

CreateSimProbe

FullSimModuleName

xPos

yPos

用于在指定位置创建仿真探测点的命令。

ConnectSimModule

FullSimModuleName

TargetModuleName

TargetModulePortName

[ xPos yPos ]

用于通过 Link 连接仿真模块的命令。 该连接通过指定的模块 (TargetModuleName) 和端口 (TargetModulePortName) 进行识别。 TargetModuleName 必须位于与 FullSimModuleName 相同的层级中。 您可以选择通过参数 xPos 和 yPos 在 Link 上定义连接的位置。

SetSimModuleProperty

FullSimModuleName

键

值

{OtherValue}

用于配置仿真模块的命令。可以设置以下参数(在下方的列表中,关键字 Key 后面是参数值 Value):

PixelAligmentOffset BITS

ImageFileSubPixels NUMBER

ImageFilePixelBits BITS

ImageFileNormalize CHOICE

其中 CHOICE = "1" | "0" | "yes" | "no" | "on" | "off" | "true" | "false"

CropRect [imageNr] X Y WIDTH HEIGHT

CurrentImage INDEX

AddImage

FullSimSourceName

ImageFileName1

{OtherImageFileName}

[ImageLibrary]

用于将图像添加到仿真源的命令。 如果 Link 上的内核元素数量 > 1,则需要指定与 Link 上的内核元素数量相等的图像。 您可以选择指定要使用的图像库(ImageLibrary = "Native" | "ImageMagick")。

User Libraries

InstUserLibOperator

LibName

OperatorName

FullModuleName

XPos

YPos

用于实例化用户库元素的命令。

自定义库处理

InstCustomLibOperator

LibName

OperatorName

FullModuleName

XPos

YPos

用于实例化自定义库元素的命令。

表 13. 在 Tcl 中创建和编辑 VA 设计的命令