跳转到内容

Tcl 命令参考#

区分大小写和斜杠

以下命令区分大小写。请使用正斜杠来表示路径。

信息

下面用于描述各个命令参数的符号基于沃思语法符号(WSN):

  • 大括号中的参数名称表示您可以在命令行中为此参数指定零个值、一个值或多个值。
  • 方括号中的参数名称表示可选参数。

创建、加载和保存设计#

LoadDesign#

命令语法
LoadDesign FileName

用于加载设计的命令 FileName。在 FileName 即文件系统中的文件路径以及文件名本身。请不要忘记指明文件扩展名(*.va 或 *.tcl)。请使用斜杠来表示设计文件的路径。

示例: LoadDesign c:/VA_TCL/BaseAreaGray8.va

如果已加载设计:通过命令关闭当前加载的设计 CloseDesign 在使用命令之前 LoadDesign.

CreateDesign#

命令语法
CreateDesign Name Platform

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

  • 该平台的 VisualApplets 库名称(例如 "iF-CXP12-Q"),或者
  • 平台的完整名称(例如“imaFlex CXP-12 Quad”)。根据包含空格的参数的 Tcl 语法要求,请不要忘记将完整名称放在引号中。

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

SaveDesign#

命令语法
SaveDesign FileName [SaveOption]

用于将设计另存为的命令 FileName。在 FileName 文件的路径以及文件名本身。使用斜杠来指示设计文件的路径。

不要忘记在文件名中添加文件扩展名。

  • 如果您指定了文件扩展名“.va”,您的设计将以标准的 VisualApplets 设计格式保存。文件的所有内容都将被保存。请使用 *.va 文件格式作为 VisualApplets 设计的主数据格式。
  • 如果您在 FileName中指定了文件扩展名“.tcl”,则将导出 Tcl 脚本。设计中的某些内容无法被导出。

如果要覆盖现有文件,请设置可选参数 SaveOption 更改为 overwrite.

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

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

ChangePlatform#

命令语法
ChangePlatform Platform FileName [SaveOption]

用于将当前设计转换为另一个硬件平台的命令 Platform 并将转换后的设计保存为 FileName.

若要获取所有可用硬件平台的概述,请输入 ChangePlatform ? - 将返回所有可用硬件平台的名称列表。当前选定的硬件平台显示在列表的第一项中。

在参数中指定所需硬件平台的名称 Platform。若要指定设计的目标平台,您可以使用

  • 该平台的 VisualApplets 库名称(例如 "iF-CXP12-Q"),或者
  • 平台的全名(例如 "imaFlex CXP-12 Quad")。

名称中的大小写字母没有区别。请在 FileName 中指定文件路径(使用正斜杠)、文件名本身以及文件扩展名。如果要覆盖现有文件,请设置可选参数 SaveOption 更改为 overwrite.

CloseDesign#

命令语法
CloseDesign [Mode]

用于关闭当前打开的设计的命令。

如果设置可选参数 Mode 更改为 Discard,即使设计包含尚未保存的更改,该设计也会被关闭。未保存的更改将被丢弃。

如果您使用 CloseDesign 中指定,且不使用参数 Mode 尽管设计包含您尚未保存的更改,该命令仍将终止,并且您会收到相应的错误消息。

SetDesignProperty#

命令语法
SetDesignProperty Key Value

使用此命令可为当前加载的设计输入设计 Property。

您可以使用四个键:

  • ProjectName (您希望赋予该项目的名称)
  • Version (设计的版本)
  • Description (项目的描述)。
  • TargetRuntime (在此指定将在运行该 applet 的主机 PC 上使用的操作系统,该 applet 运行在 frame grabber 上。)

    允许以下值:

    • Win64
    • Win32
    • Linux64
    • Linux32

示例:

SetDesignProperty TargetRuntime Win64

SetDesignClock#

命令语法
SetDesignClock NewFrequency

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

开发设计#

CreateProcess#

命令语法
CreateProcess

用于创建新进程的命令。VisualApplets 会自动为新进程编号。

DeleteProcess#

命令语法
DeleteProcess ProcName

用于删除指定名称进程的命令 ProcName.

示例: DeleteProcess Process1

CreateModule#

命令语法
CreateModule OperatorType FullModuleName [InPortMultiplicity [OutPortMultiplicity {NamedPortMultiplicity}]]xPos yPos

用于创建算子实例(模块)的命令 OperatorType,以及用于在设计窗口中定位该模块。

在 OperatorType,只需说明您要为其创建实例的具体算子的名称。您不必指定算子所属的库。

使用 FullModuleName 您可以在设计中定义模块的层级位置。

FullModuleName 具有以下语法:

<HierLevelPath>/<ModuleName>

  • HierLevelPath 用于定义设计中特定层级路径。从进程层级开始。使用正斜杠。
  • ModuleName 用于指定您希望模块拥有的名称。或者,您可以留空 ModuleName 。在这种情况下,您必须终止 FullModuleName ;该模块将自动命名。

您通过参数定义模块在设计窗口中的位置 xPos 和 yPos.

示例:

CreateModule CxpCamera Process0/cam 123 163

函数的返回值 CreateModule 的值为 FullModuleName (即包含模块名称的模块完整层级路径)。

通过使用可选参数 InPortMultiplicity 和 OutPortMultiplicity:

许多算子实例化时具有固定的端口数。另一方面,也存在端口数可变的算子。在对具有可变端口数的算子进行实例化时,您可以定义该模块将拥有的端口数量。

例如,在实例化算子 BRANCH时,您可以定义该实例将具有多少个输出端口:

Command CreateModule: Enter Outputs

因此,输出端口 O 的数量是可变的。我们将具有可变数量的端口称为多端口(multiports)。

多端口通过其基本名称进行识别。例如,在 BRANCH中,输出端口的基本名称是 O。通过附加到基本名称的索引,可以识别并寻址特定的端口:

Command CreateModule: Multiports

当使用命令 CreateModule,您可以使用可选的值对 InPortMultiplicity 和 OutPortMultiplicity 来指定模块的向量输入和向量输出的多重性。通过这种方式,您可以为具有可变端口数量的算子实例(模块)定义端口数量,例如算子 BRANCH 或 ADD.

示例:

CreateModule BRANCH Process0/branchz 1 3 43 123

Command CreateModule: Example BRANCH with 3 Output Ports

默认值:如果您不使用 InPortMultiplicity 和 OutPortMultiplicity,或者如果将它们设置为 0,则模块将使用默认的输入和输出端口数量创建(即,将两个值中的一个或两个设置为 0 不会导致零输入端口或零输出端口)。默认创建多少个端口取决于算子类型。

示例:

CreateModule BRANCH Process0/branch 43 123

Command CreateModule: Example BRANCH with 2 Output Ports

将创建默认数量的端口,即 1 个输入端口和 2 个输出端口。

CreateModule BRANCH Process0/branch3 0 3 43 123

Command CreateModule: Example BRANCH with 3 Output Ports

创建 1 个输入端口(默认)和 3 个输出端口。

CreateModule BRANCH Process0/branch3 3 3 43 123

Command CreateModule: Example BRANCH with 3 Output Ports

创建 1 个输入端口和 3 个输出端口。3 个输入端口的定义将被忽略,因为该算子类型仅允许 1 个输入。

CreateModule BRANCH Process0/branch4 0 4 43 123

CreateModule 命令:带有 4 个输出端口的 BRANCH 示例

可选参数 NamedPortMultiplicity:对于具有各种多端口的算子(即具有除输入 I 或输出 O 之外的其他多端口的算子),您可以使用参数 NamedPortMultiplicity 来指定您希望在模块上拥有的多端口的基本名称,并指定该多端口的多重性(数量)。其格式为 NamedPortMultiplicity 的值为 MultiportBaseName:Number。您可以在一个命令行中多次使用 NamedPortMultiplicity 。使用 NamedPortMultiplicity 将覆盖您在参数中声明的任何内容 InPortMultiplicity 或 OutPortMultiplicity.

示例:

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

示例命令的翻译如下:创建算子的实例(模块) BRANCH将其放置在顶层的进程 0 中,并命名为 branch。提供三个输出端口(多端口基本名称 O 代表输出),并将模块在设计窗口中的位置定位在 y=100 像素和 x=100 像素处。

对于 MultiportBaseName,使用您在 VA GUI 上找到的多端口基本名称。该 MultiportBaseName 名称显示在实例化具有可变端口数量的算子时出现的对话框中。多端口基本名称是多端口的简称(在 GUI 的括号中显示)。

CreateModule 命令:输入参数

此处的 Multiport 基准名称为 I.

您还可以在端口的悬停提示信息中找到 Multiport 基准名称:

CreateModule 命令:多端口鼠标悬停

此处的 Multiport 基准名称为 I(后跟用于标识 multiport I 在模块上的各个实例的索引)。

InstUserLibOperator#

命令语法
InstUserLibOperator LibName OperatorName FullModuleName xPos yPos

用于实例化用户库元素的命令。通过参数 LibName指定用户库,通过参数 OperatorName指定库中的元素(算子)名称,通过参数 FullModuleName以及通过参数确定的模块在设计窗口中的位置 xPos和 YPos.

InstCustomLibOperator#

命令语法
InstCustomLibOperator LibName OperatorName FullModuleName xPos yPos

用于实例化自定义库元素的命令。通过参数指定用户库 LibName指定用户库,通过参数 OperatorName指定库中的元素(算子)名称,通过参数 FullModuleName以及通过参数确定的模块在设计窗口中的位置 xPos和 YPos.

DeleteModule#

命令语法
DeleteModule FullModuleName

用于删除模块的命令 FullModuleName.

FullModuleName 具有以下语法: <HierLevelPath>/<ModuleName>.

  • HierLevelPath 用于指定设计中模块所在的分层级路径。从进程级开始。使用正斜杠。
  • ModuleName 用于指定要删除的模块的名称。

无法通过此命令删除仿真模块。若要删除仿真模块,请使用命令 DeleteSimModule.

ConnectModules#

命令语法
ConnectModules FromModule FromModuleOutputPort ToModule ToModulePort [x1 [y2 x3]]

用于连接模块端口的命令。

参数 FromModule 和 ToModule 是采用以下语法的分层名称: <HierLevelPath>/<ModuleName>.

内部层级框节点(即用于连接层级框端口的内部节点)通过前缀来识别 INBOUND# 或 OUTBOUND#.

示例:下图中的分层框的两个传入节点必须通过以下方式进行寻址 INBOUND#I000 和 INBOUND#I001.

ConnectModules 命令:传入连接

通过可选参数 x1, y2和 x3 可以定义连接多边形的几何形状:水平线从 FromModuleOutputPort 到 X 位置 x1,到 Y 位置的垂直线 y2,到 X 位置的水平线 x3,垂直线到高度 ToModulePort,水平线到 ToModulePort.

ConnectModules 命令:连接多边形几何形状示例 1

示例:

ConnectModules Process0/CxpCamera O Process0/FrameBufferMultiRoi I 90 500 120

Command ConnectModules: Geometry of the Connecting Polygon Example 2

DisconnectModules#

命令语法
DisconnectModules FullModuleName ModulePort

用于删除连接到端口的链路的命令 ModulePort 的模块 FullModuleName.

示例:

DisconnectModules Process0/Cam1 O

CreateComment#

命令语法
CreateComment FullBoxName Text xPos yPos

用于创建注释框的命令。

的语法 FullBoxName 的值为 <HierLevelPath>/<BoxName>.

  • HierLevelPath 用于定义设计中特定层级路径。从进程层级开始。使用正斜杠。
  • BoxName 用于指定您希望注释框具有的名称。或者,您可以保留 BoxName 。在这种情况下,您必须终止 FullBoxName ;该模块将自动命名。

示例:

CreateComment Process0/MyComment "This is my comment." 400 400

对于注释框内容 Text 您可以使用 Unicode 字符。不要忘记将注释放在引号中。如果您使用的字符不属于 ASCII,请使用相应的 TCL 语法来表示 Unicode,例如:

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

您通过参数定义注释框在设计窗口中的位置 xPos 和 yPos.

函数的返回值 CreateComment 的值为 FullBoxName (注释框的完整分层路径,包含注释框的名称)。

DeleteComment#

命令语法
DeleteComment FullBoxName

用于删除注释框的命令 FullBoxName.

的语法 FullBoxName 的值为 <HierLevelPath>/<BoxName>.

  • HierLevelPath 用于指定设计中注释框所在的层级路径。从 process 层级开始。使用正斜杠。
  • BoxName 用于指定要删除的注释框的名称。

示例:

DeleteComment Process0/MyComment

框名称信息:要获取要删除的注释框的名称,可以使用 TCL 查询设计中放置了哪些框,请参阅 VisualApplets 安装文件夹中的 TCL 示例 QueryDesign.tcl,路径为 <VA installation directory>\Examples\AdvancedVAFunctions\Tcl Scripting\QueryDesign.tcl.

SetModuleParam#

命令语法
SetModuleParam FullModuleName ParameterName [FieldIndex] Value {OtherValues}

用于设置模块参数的命令。

信息

只能将此命令用于将现有参数设置为特定值。不能将此命令用于创建元数据参数。(若要创建新的元数据参数,请改用命令 SetParamString 。)

示例:

SetModuleParam Process0/HierchBox1/module6 XLength 512

字段参数:如果引用字段参数,则必须在指定 FieldIndex 之前指定参数 Value。只有在引用字段参数时,才能在 Value.

编辑字段参数的示例:

之后指定其他值

SetModuleParam 命令:编辑参数示例

输入命令

SetModuleParam Process0/module3 LUTcontent 4 12 13 14

产生以下结果:

SetModuleParam 命令:输入值示例

命令 SetModuleParam 具有与(取决于所使用的参数)命令相同的功用 SetParamInt, SetParamFloat, SetParamEnum, SetParamString, SetParamIntField和 SetParamFloatField。但是,这些命令仅用于导出。

使用 SetModuleParam 在手动编写脚本时。

异常:如果要添加新的元数据参数,则在手动编写脚本时必须使用 SetParamString 。请参阅命令的定义 SetParamString.

SetModuleParamProperty#

命令语法
SetModuleParamProperty FullModuleName ParameterName PropertyName PropertyValue {OtherPropertyValue}

用于更改模块参数属性的命令。此命令可以替换 SetModuleParamType。单个属性名称可以有多个值。您可以更改以下属性:

access:您可以在此处列出多个标志作为值:

  • write:如果参数可以在此方向上切换(例如在运算符 LinkParamTranslator中),它将变为写入参数。
  • read:如果参数可以在此方向上切换(例如在运算符 LinkParamTranslator中),它将变为读取参数。
  • dynamic:如果参数可以是动态的或静态的,它将在此处变为动态参数(这会替换命令 SetParamDynamic)。
  • static:如果参数可以是动态的或静态的,它将在此处变为静态参数(这会替换命令 SetParamStatic)。

position:为参数定义整数值 PropertyValue,该命令定义了参数在分层框的参数列表中的位置。

SetParamInt#

命令语法
SetParamInt FullModuleName ParameterName Value

仅用于 TCL 导出。用于设置整型 Property 的命令。

信息

该命令用于从 VisualApplets 导出 TCL 到 *.tcl 文件中。

请勿在您手动编写的脚本中使用此命令。请使用命令 SetModuleParam 代替。

SetParamFloat#

命令语法
SetParamFloat FullModuleName ParameterName Value

仅用于 TCL 导出。用于设置浮点型 Property 的命令。

信息

该命令用于从 VisualApplets 导出 TCL 到 *.tcl 文件中。

请勿在您手动编写的脚本中使用此命令。请使用命令 SetModuleParam 代替。

SetParamEnum#

命令语法
SetParamEnum FullModuleName ParameterName Value

仅用于 TCL 导出。用于设置寻址枚举 Property 的命令。 Value 是枚举值的字符串。

示例(针对 operator 的实例 SetSignalStatus 放置在级别 Process0 且名称为 SetSigSt):

SetParamEnum Process0/SetSigSt Mode High

设置 Property Mode 该 operator SetSigSt 位于 Process0 更改为 High.

信息

该命令用于从 VisualApplets 导出 TCL 到 *.tcl 文件中。

请勿在您手动编写的脚本中使用此命令。请使用命令 SetModuleParam 代替。

SetParamString#

命令语法
SetParamString FullModuleName ParameterName Value

使用此命令可为特定模块定义元数据参数。

在 TCL 导出文件中,命令 SetParamString 用于设置任何字符串 Property,即使它是现有的模块 Property。但是,这在您手动编写的脚本中并不切实际。

信息

在编写您自己的脚本时,请勿使用此命令将现有模块 Property 设置为新值,即使该模块 Property 的类型为字符串。

要将现有模块 Property 设置为新值,请始终使用命令 SetModuleParam 。

SetParamIntField#

命令语法
SetParamIntField FullModuleName ParameterName Index Value {OtherValues}

仅用于 TCL 导出。用于设置整型字段 Property 的命令。设置字段 Index 更改为 Value1,以下字段将按给定的顺序填充相应的值。

信息

该命令用于从 VisualApplets 导出 TCL 到 *.tcl 文件中。

请勿在您手动编写的脚本中使用此命令。请使用命令 SetModuleParam 代替。

SetParamFloatField#

命令语法
SetParamFloatField FullModuleName ParameterName Index Value {OtherValues}

仅用于 TCL 导出。用于设置浮点型字段 Property 的命令。设置字段 Index 更改为 Value1,以下字段将按给定的顺序填充相应的值。

信息

该命令用于从 VisualApplets 导出 TCL 到 *.tcl 文件中。

请勿在您手动编写的脚本中使用此命令。请使用命令 SetModuleParam 代替。

SetParamStatic#

命令语法
SetParamStatic FullModuleName ParameterName

仅用于 TCL 导出。用于将参数设为静态的命令。如果某个参数既可以为静态也可以为动态,则在大多数情况下,默认会将该参数设为动态。使用此命令可将此类参数设为静态。

信息

该命令用于从 VisualApplets 导出 TCL 到 *.tcl 文件中。

请勿在您手动编写的脚本中使用此命令。请使用命令 SetModuleParamType 代替。

SetParamDynamic#

命令语法
SetParamDynamic FullModuleName ParameterName

仅用于 TCL 导出。用于将参数设为动态的命令。仅当该参数本身支持动态时才有效。

信息

该命令用于从 VisualApplets 导出 TCL 到 *.tcl 文件中。

请勿在您手动编写的脚本中使用此命令。请使用命令 SetModuleParamType 代替。

SetModuleParamType#

命令语法
SetModuleParamType FullModuleName ParameterName TypeFlag {OtherTypeFlags}

用于更改参数类型的命令。可用以下类型标志:

  • Dynamic:如果参数可以为动态或静态,此标志可将参数设为动态参数(替代命令 SetParamStatic)。
  • Static:如果参数可以为动态或静态,此标志可将参数设为静态参数(替代命令 SetParamStatic)。

Dynamic 和 Static 彼此互斥。

当使用类型标志 Dynamic 或 Static时,此命令具有与命令相同的功能 SetParamStatic 和 SetParamDynamic。但是,请使用 SetModuleParamType 在手动编写脚本时。

SetLinkParam#

命令语法
SetLinkParam FullModuleName PortName ParameterName Value {OtherParameterName OtherParameterValue}

用于配置链路格式的命令。通过模块的连接节点(端口)来识别链路。链路格式参数的名称与 VisualApplets GUI 中的名称相同。

信息

当手动编写 TCL 脚本时,该命令仅适用于可更改的参数。如果您尝试设置无法更改的链路参数,将收到相应的错误消息:

SetLinkParam 命令:示例

SetResourceMapping#

命令语法
SetResourceMapping FullModuleName ResourceName [Index] NewMapping

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

命令语法
SplitLink FullModuleName PortName [Number]

用于创建模块的命令 BRANCH。新的分支模块插入在从模块流出的链路上 FullModuleName 在端口 NodeName。新的分支模块有 Number 个出端口。如果您不使用可选参数 Number,则新分支模块有两个出端口。

函数的返回值 SplitLink 是 FullModuleName 新分支模块的(指向该模块的完整分层路径,包括模块名称)。

查询设计结构和设计详细信息#

GetDesignProperty#

命令语法
GetDesignProperty PropertyName

此命令用于检索设计 Property。您可以为以下项使用这些值 PropertyName:

  • ProjectName:项目名称
  • FileName:当前加载的设计文件 *.va 的路径和名称
  • HardwarePlatform:目标硬件平台的库名称,例如 iF-CXP12-Q
  • Version:设计版本
  • Description:项目描述
  • Loaded:设计已加载(1 或 0)

Design Property Loaded 可以在未加载任何设计时进行请求。这不会导致错误消息。如果在未加载设计时请求任何其他 Design Property,则会导致错误消息。

GetDesignClock#

命令语法
GetDesignClock

此命令返回 FPGA 的基本时钟频率(以 MHz 为单位)。

GetProcesses#

命令语法
GetProcesses

此命令返回包含设计中所有进程名称的列表。

GetSubModules#

命令语法
GetSubModules HierarchyName

此命令返回包含位于所请求层级中的模块名称的列表 HierarchyName.

对于每个子模块,将列出完整的层次结构名称。

GetParentHier#

命令语法
GetParentHier FullElementName

此命令返回指定元素的父级层次结构名称(FullModuleName) FullElementName,即 FullModuleName 包含元素 FullElementName 的层次结构元素的。

FullElementName 可以是模块、仿真模块或注释框。

GetModules#

命令语法
GetModules Scope Specifier {ModuleList}

此命令用于过滤设计中的特定模块。该命令返回一个包含符合您通过以下方式指定的特征的模块的列表: Scope 和 Specifier. 该列表包含 FullModuleName 对于所有找到的模块(包括模块路径及各个模块名称)。如果您不想在整个设计范围内搜索,而只想在特定的模块集中搜索,则可以在以下位置指定这些模块: ModuleList (通过其 FullModuleName)。

Scope 可以具有以下值:

  • pattern:使用 Specifier 作为 FullModuleName的通配符表达式。如果您将“*”指定为说明符,则将返回设计中的所有模块。
  • flat:使用 Specifier 作为 FullModuleName 模块(类似于 pattern)。将不返回层级框。
  • ordered:返回设计的所有模块。使用 Specifier 以定义排序 pattern。您有以下选项:
    • path:根据模块在设计图中的位置对模块进行排序(即按照模拟期间数据流流经模块的顺序)。
    • name:按 FullModuleName.
  • operatorType:使用 Specifier 来定义您要寻找的模块的算子类型(“O”、“M”、“P”、“O+P”、“M+P”、“unknown”)。
  • operator:用于获取特定算子的所有实例。使用 Specifier 来指定算子名称(例如“NOP”)。
  • libraryType:使用 Specifier 来定义特定的库类型。将返回设计中其实例属于此类型库中算子的所有模块。允许以下值:operator、user 和 custom(另请参见 GetModuleProperty)。
  • library:使用 Specifier 来定义特定的库。将返回其实例属于此库算子的所有模块。
  • version:使用 Specifier 来定义特定的算子版本。将返回其实例属于此版本算子的所有模块。

GetModulePorts#

命令语法
GetModulePorts FullModuleName [Scope]

此命令返回包含指定模块所有端口名称的列表。您可以使用可选参数 Scope 来筛选特定端口:

  • inputs: 仅返回输入端口
  • outputs: 仅返回输出端口
  • all: 返回模块的所有端口(默认)

GetModulePortProperty#

命令语法
GetModulePortProperty FullModuleName PortName Property

该命令用于检索模块 Port 的 Property。以下可用的 Property 值为:

  • isConnected:如果端口已连接,则返回 1;否则返回 0。
  • position:以列表形式返回指定端口在图表(设计窗口)中的位置(xPos, yPos)。如果 PortName 指定一个内部层级框节点(例如, INBOUND#I000),将返回该节点在层级框设计窗口内的位置。

GetModuleProperty#

命令语法
GetModuleProperty FullModuleName Property

此命令返回模块的 Property。

以下可用的 Property 值为:

  • status:如果模块未处于错误状态,则返回 0;否则返回错误代码。
  • operator:返回该模块作为实例的 Operator 的名称,例如 BRANCH.
  • operatorType:返回 Operator 类型(O、P、M、未知)。对于层次化 Box 和用户库模块,将返回“Unknown”。
  • libraryType:返回 Operator 来源的库类型。将返回以下值之一: operator, user, custom.
  • version:返回该模块作为实例的 Operator 的版本。
  • type:返回模块类型。将返回以下值之一: process, hierBox, operator, user, custom.
  • isHierModule:如果所述模块能够包含子模块,则返回 1;如果所述模块不能包含子模块,则返回 0。
  • isProtected:如果该模块是受保护库元素的实例,则返回 1。
  • library:返回 Operator 来源的库名称。
  • position:以列表形式返回设计窗口中的位置 (xPos, yPos)。
  • resources:返回成对出现的列表(ResourceName,ResourceMapping)
  • name:返回模块名称。

GetModuleParams#

命令语法
GetModuleParams FullModuleName {ParameterNames}

返回模块参数及其当前值的列表。

如果您想获取模块的所有参数以及当前设置的值,请使用命令 GetModuleParams 仅带参数 FullModuleName.

示例:

GetModuleParams 命令:示例

如果您只想获取特定参数的值,可以视需要将输出限制为以下参数: {ParameterNames}。输出的顺序与您在其中指定的参数名称顺序相对应。 {ParameterNames}.

示例:

Tcl Command GetModuleParams: Example with {ParameterNames}

puts [GetModuleParams Process0/FrameBufferMultiRoi RamDataWidth MaxFrameCount]

GetModuleParamProperty#

命令语法
GetModuleParamProperty FullModuleName ParameterName Property

用于检索参数 Property 的命令。

对于参数 Property,提供以下值:

  • status:如果参数未处于错误状态,则返回 0;否则返回错误代码。
  • type:返回参数类型: int, intField, float, floatField, enum或 string.
  • access:返回访问方向: write 或 read)。
  • unit:返回参数的单位。
  • range:对于整型和浮点型数据类型,该命令将值范围返回为包含三个条目的列表 Min, Max, Step。对于枚举参数,它返回由枚举名称和枚举值组成的配对列表。
  • size:返回字段的大小。仅针对 IntField 和 FloatField Property。
  • isDynamic:如果请求的参数是动态的,则返回 1;否则返回 0。
  • isStatic:如果请求的参数是静态的,则返回 1;否则返回 0。
  • isEditable:如果请求的参数可编辑,则返回 1;否则返回 0。

GetLinkParams#

命令语法
GetLinkParams FullModuleName PortName {ParameterNames}

返回特定 link 的 link 参数名称列表以及当前设置的值。通过模块的连接节点(port)来标识该 link。返回的列表指明了值对 <ParameterName><Value> 这些值对对应于您通过以下方式设置 link 参数时所使用的对 SetLinkParam.

如果您想获取 link 的所有参数以及当前设置的值,请使用命令 GetLinkParams 仅适用于参数 FullModuleName 和 PortName.

如果您只想获取特定参数的值,可以视需要将输出限制为以下参数: {ParameterNames}。输出的顺序与您在其中指定的参数名称顺序相对应。 {ParameterNames}.

示例:

Tcl 命令 GetLinkParams:示例

GetLinkParamProperty#

命令语法
GetLinkParamProperty FullModuleName PortName ParameterName Property

此命令检索特定 link parameter 的 Property。

参数的以下值 Property 是可能的:

  • status:如果参数未处于错误状况,则返回 0;否则返回错误代码。
  • isEditable:如果可以更改参数值,则返回 1;否则返回 0。
  • range:
    • For integer data types, the command returns the value range either as a list containing three elements (Min, Max, Step), or as a list containing all allowed values. You distinguish the two kinds of lists as follows: The Min-Max-Step list contains 3 list elements; the third list element is smaller or equal to the second list element. A list stating all allowed values starts with the smalles value and ends with the highest value. If only one value is allowed, the value is returned in format {Value Value 1}, for example, { 4 4 1} for min=4, max=4, step=1.
    • 对于枚举参数,该命令会返回由枚举名称和枚举值组成的对列表。

GetLinkProperty#

命令语法
GetLinkProperty FullModuleName PortName Property

此命令返回特定 link 的特定 Property。如果在 FullModuleName 和 PortName中寻址了分层框的 port,只要分层框内存在连接到此 port 或从此 port 发出的 link,该命令就能正常运行。

对于参数 Property 值为:

  • status:如果一切正常(即 link 源和 link 目标的参数设置匹配,且 DRC 未发现错误),则返回 0;否则返回错误代码。
  • from:返回 link 的起点。起点可以是前置模块的 out 端口,也可以是内部的分层盒节点(INBOUND#...) 连接到的 link。该命令返回一个包含这两个值的列表 FullModuleName 和 PortName.
  • to:返回 link 的终点。终点可以是后续模块的 in 端口,也可以是内部的分层盒节点(OUTBOUND#...) 连接到的 link。该命令返回一个包含这两个值的列表 FullModuleName 和 PortName.
  • source:返回一个包含值对的列表 FullModuleName 和 PortName ,该元组适用于直至 link 源的所有前置 link。系统会沿着各层级从您在以下项中指定的模块开始向后追踪 link 链 FullModuleName ,一直回溯到起点。返回列表中各元素的顺序与查找的逆向过程相对应(源模块是列表中的最后一项)。
  • dest:返回一个包含值对的列表 FullModuleName 和 PortName ,该元组适用于直至 link 目标模块的所有后续 link。系统会沿着各层级从您在以下项中指定的模块开始向前推进 link 链 FullModuleName ,一直延伸到终点(汇)。返回列表中各元素的顺序与查找的正向过程相对应 —— 目标模块(目的地)是列表中的最后一项。
  • hasConnectedSimModule:如果仿真模块已连接到该 link,则返回 1;如果没有连接仿真模块,则返回 0。
  • connectedSimModule:返回已连接仿真模块的分层名称。

GetSimModules#

命令语法
GetSimModules Type Scope Specifier

此命令检索 FullModuleName 仿真源(Type = source)或仿真探针(Type = probe)。该命令返回一个仿真模块列表,这些模块具有您通过参数指定的特征 Scope 和 Specifier. 该列表包含 FullModuleNames (各个仿真模块的层次路径,包括各个路径)。

Scope 提供以下选项:

  • hierarchy: 在参数中定义特定的层次结构 Specifier.
  • pattern: 使用参数 Specifier 作为 FullModuleNames 仿真模块。如果您将“*”指定为说明符,则返回设计中的所有源或探针仿真模块。

GetCommentBoxes#

命令语法
GetCommentBoxes Scope Specifier

此命令用于获取设计中的注释框。该命令会返回一个包含所有符合您通过参数指定的特征的注释框的列表 Scope 和 Specifier. 该列表包含 FullElementNames (包括包含框名称的分层名称)。

Scope 提供以下选项:

  • hierarchy: 定义特定的层次结构(通过 HierLevelPath) 在 Specifier.
  • pattern:使用 Specifier 作为 FullElementName 注释框。如果您使用“*”作为指定符,则会返回设计中的所有注释框。

GetCommentProperty#

命令语法
GetCommentProperty FullBoxName Property

此命令用于获取注释框的 Property。

FullBoxName 具有以下语法: <HierLevelPath>/<BoxName>.

  • HierLevelPath 用于指定设计中注释框所在的层级路径。从 process 层级开始。使用正斜杠。
  • BoxName 您用来指定注释框的各个名称。

Property 具有以下选项:

  • content: 返回注释框的内容。
  • position: 返回注释框左上角在设计窗口中的 X 和 Y 位置。

框名称信息:要获取您想要了解详细信息的注释框名称,您可以使用 TCL 查询哪些框放置在设计中,参见 TCL 示例 QueryDesign.tcl 在您的 VisualApplets 安装文件夹中(例如,<YourVisualAppletsInstallationDirectory>\Examples\AdvancedVAFunctions\Tcl Scripting\QueryDesign.tcl)

编辑设计 – 其他命令#

Move#

命令语法
Move FullModuleName [HierNodeName] PosX PosY

用于将模块、分层框节点、注释框或仿真模块重新定位到设计窗口内新位置的命令。

使用参数 [HierNodeName] 仅用于选择分层框节点。分层框内的节点通过前缀进行识别 INBOUND# 或 OUTBOUND#(类似于使用命令时所做的那样 ConnectModules),例如, INBOUND#I000.

Select#

命令语法
Select FullModuleName [PortName]

用于选择模块、仿真模块、注释框或链接的命令。使用参数 PortName 仅用于选择一个 link(该 link 通过将 link 连接至所寻址模块的 port 来标识)。

ClearSelection#

命令语法
ClearSelection [ParentHierarchy]

用于删除所选元素(模块、分层框节点、连线、注释框或仿真模块)的命令。

使用可选参数 ParentHierarchy 来取消选中分层级上的所有元素 ParentHierarchy.

如果不使用 ParentHierarchy,将全局删除元素选择,执行该命令后,设计中的所有元素都将取消选中。

CopySelected#

命令语法
CopySelected [ParentHierarchy]

用于在分层级别复制所选元素的命令 ParentHierarchy。如果不使用可选参数 ParentHierarchy,则会复制当前活动设计窗口的分层级上所选的元素。

DeleteSelected#

命令语法
DeleteSelected [ParentHierarchy]

用于删除分层级上所选元素的命令 ParentHierarchy。仅删除您在下文指定的层级中所选的模块 ParentHierarchy ,其他层级上所选的模块保持不变。如果不使用可选参数 ParentHierarchy,则会删除当前活动设计窗口的分层级上所选的元素。

CutSelected#

命令语法
CutSelected [ParentHierarchy]

用于剪切分层级上所选元素的命令 ParentHierarchy。如果不使用可选参数 ParentHierarchy,将剪切当前活动设计窗口的分层级上所选的元素。

GetSelected#

命令语法
GetSelected Scope [ParentHierarchy]

返回分层级上所选元素的列表 ParentHierarchy。通过 Scope,您可以定义是要获取所选模块(Modules)的列表、所选 link(Links)的列表、所选仿真模块(SimModules)的列表,还是所选注释框(CommentBoxes)。

如果您不使用可选参数 ParentHierarchy,则返回当前活动设计窗口的层级结构级别上所选的元素。

如果您使用 Scope = Modules/SimModules/CommentBoxes)的列表, FullModuleNames (包含模块名称的各模块分层路径)将被返回。

如果您使用 Scope = Links 您将获得一个由以下部分组成的标识 link 的元组列表: FullModuleName 和 PortName (link 连接到的 port)。

Paste#

命令语法
Paste [ParentHierarchy] [xPos yPos]

用于将剪贴板中的元素粘贴到层级结构级别的命令 ParentHierarchy。(即,粘贴以前复制或剪切的元素。)

如果您不使用可选参数 ParentHierarchy,这些元素将被粘贴到当前活动设计窗口的层级结构级别。

使用可选参数 xPos 和 yPos 用于定义插入内容在设计窗口中的左上角位置。

InsertModulePort#

命令语法
InsertModulePort FullModuleName PortName [Where]

用于在端口旁边插入新模块端口的命令 PortName.

信息

您只能插入那些可以在命令中指定多重性的 port CreateModule.

其中 Where 提供以下选项:

  • before 或 above:新 port 直接插入在 port 之前 PortName.
  • after 或 below:新 port 直接插入在 port 之后 PortName (默认)。

如果您不使用可选参数 Where,新端口直接插入到端口 PortName.

RemoveModulePort#

命令语法
RemoveModulePort FullModuleName PortName

用于删除模块端口的命令。

信息

您只能删除那些可以在命令中指定多重性的端口 CreateModule. 给定类型的端口的最小数量将始终保留。如果您试图进一步减少到低于最小值,将会收到相应的错误消息。例如:虽然您可以删除 Branch 算子的第三个输出端口(端口名称:O002),但两个最小输出端口(O001 和 O000)无法删除:

Command RemoveModulePort

AppendModulePort#

命令语法
AppendModulePort FullHierBoxName Direction

用于向分层框添加输入端口或输出端口的命令。

FullHierBoxName 具有与以下相同的语法 FullModuleName.

Direction=input:创建一个输入端口。

Direction=output:创建一个输出 port。

Rename#

命令语法
Rename FullModuleName NewName

用于重命名模块或仿真框的命令。在 NewName 中,您指定实例的新个性化名称,但不包含分层路径。

示例:

Rename Process0/module1 DMA

SetActiveWindow#

命令语法
SetActiveWindow Hierarchy

用于打开(并设置为活动状态)层次结构设计窗口的命令 Hierarchy 在VisualApplets 。

GetActiveWindow#

命令语法
GetActiveWindow

返回有关当前在 VisualApplets 中打开并处于活动状态的设计窗口分层级别的信息。

仿真设计#

CreateSimSource#

命令语法
CreateSimSource FullSimModuleName xPos yPos

用于创建仿真源模块并在设计窗口中定位该模块的命令。

FullSimModuleName 具有以下语法: <HierLevelPath>/<SimModuleName>

  • HierLevelPath 用于定义设计中特定分层级别的路径。
  • SimModuleName 您可以用它来指定仿真源模块的单独名称。或者,您可以留空。 SimModuleName 。在这种情况下,您必须终止 FullSimModuleName ;该模块将自动命名。

函数的返回值 CreateSimSource 是 FullModuleName 新仿真源模块的(包含模块名称的仿真源模块完整分层路径)。

CreateSimProbe#

命令语法
CreateSimProbe FullSimModuleName xPos yPos

用于创建仿真探测模块并在设计窗口中定位该模块的命令。

FullSimModuleName 具有以下语法: <HierLevelPath>/<SimModuleName>

  • HierLevelPath 用于定义设计中特定分层级别的路径。
  • SimModuleName 您可用于指定要为 simulation probe 模块设置的名称。或者,您可以留空 SimModuleName 。在这种情况下,您必须终止 FullSimModuleName ;该模块将自动命名。

函数的返回值 CreateSimProbe 是 FullModuleName 新 simulation probe 模块的路径(指向 simulation probe 模块的完整分层路径,包含模块名称)。

DeleteSimModule#

命令语法
DeleteSimModule FullSimModuleName

用于删除 simulation 模块(simulation source 或 simulation probe)的命令。

的语法 FullSimModuleName 与以下语法相同: FullModuleName.

ConnectSimModule#

命令语法
ConnectSimModule FullSimModuleName TargetModuleName TargetModulePortName [xPos yPos]

用于将仿真模块连接到链路的命令。您可以通过链路所连接的模块端口来识别链路。

的语法 FullSimModuleName 和 TargetModuleName 与以下语法相同: FullModuleName语法 TargetModulePortName 与以下语法相同: PortName.

模块 TargetModuleName 以及仿真模块 FullSimModuleName 必须位于同一层级结构中才能将它们相互连接。

您还可以通过以下方式定义连接点在连杆上的位置: xPos 和 yPos.

DisconnectSimModule#

命令语法
DisconnectSimModule FullSimModuleName

用于将 simulation 模块从 link 断开的命令。

SetSimModuleProperty#

命令语法
SetSimModuleProperty FullSimModuleName Key Value {OtherValue}

用于定义 simulation 模块的 Property 的命令。

使用 Key 来标识您要设置的 Property。请按下方指定的格式设置各个 Property。可用 Property 及其对应的值格式如下:

pixelAlignmentOffset BITS

使用此参数将对齐偏移量指定为整数值 BITS.

imageFileSubPixels NUMBER

使用此参数将分配给 link 像素的文件像素数量指定为整数值 NUMBER.

Source: NUMBER 像素合并为一个像素。

Probe:一个像素拆分为 NUMBER 个文件像素。

imageFilePixelBits BITS

使用此参数将图像文件中的 Bit Width 指定为整数值 BITS. 允许的值为 1、8 和 16。

imageFileNormalize CHOICE

使用此 Property 来配置保存仿真结果图像的方式。

如果要以 8 位文件格式保存 1 位仿真结果,请设置 imageFileNormalize 为 1。在此语境中,“归一化”意味着将 0 映射为 0(黑色),将 1 映射为 255(白色)。

以下可用的 CHOICE 是可能的: CHOICE = "1" | "0"

cropRect [imageNr] X Y WIDTH HEIGHT

此 Property 仅适用于仿真源。指定图像索引 [imageNr] 是必需的。使用此参数可裁剪图像并指定要用于仿真的图像区域 (ROI)。通过 X 和 Y 可以定义 ROI 的左上角。

currentImage INDEX

使用此参数可选择仿真模块内的图像。请将 INDEX 指定为整数值。

AddImage#

命令语法
AddImage FullSimModuleName ImageFileName1 {OtherImageFileName} [ImageLibrary]

用于向仿真源模块添加图像的命令。如果仿真源连接到的 link 的内核元素数量 > 1,则必须指定与内核元素数量相等的图像。

(可选)您可以声明要使用的图像库( ImageLibrary = "Native" | "ImageMagick")。

RemoveImage#

命令语法
RemoveImage FullSimSourceName {ImageIndex}

用于从仿真源模块删除一个或所有图像的命令。使用可选参数 ImageIndex 来指定要删除的图像。如果将 ImageIndex 设置为 -1,或者根本不使用 ImageIndex ,则会删除仿真模块中的所有图像。

Simulate#

命令语法
Simulate ProcessingCycles [SaveLogfilename]

用于模拟设计的命令。使用参数 ProcessingCycles 用于定义要使用该命令执行多少个处理周期。

使用可选参数 SaveLogfilename 以便将执行周期的日志保存到文件。请在 SaveLogfilename 中指定文件路径和文件名本身。由于日志是以 HTML 格式写入的,因此请使用 *.html 文件扩展名。路径请使用正斜杠表示。

示例:

Simulate 1 c:/temp/simlog.html

ResetSimulation#

命令语法
ResetSimulation

用于重置仿真引擎的命令。执行后,设计中的所有仿真探针将被清除。

GetSimModuleProperty#

命令语法
GetSimModuleProperty FullSimModuleName Property [ImageIndex [LineIndex [LineCount] ] ]

用于获取仿真模块 Property 的命令。可用 Property 如下:

  • isConnected:如果仿真模块已连接至 link,则返回 1;否则返回 0。
  • connectedLink:返回一个列表,其中包含 FullModuleName link 连接到的模块的名称,以及 link 连接到的模块的端口。返回值始终通过真实的模块端口来描述 link,也就是说,它绝不会指代内部的 H 盒节点(例如, INBOUND#I000 或 OUTBOUND#O000)。
  • isSource:如果仿真模块是 SimulationSource,则返回 1;否则返回 0。
  • isProbe:如果仿真模块是 SimulationProbe,则返回 1;否则返回 0。
  • position:以列表形式返回仿真模块在程序窗口中的位置(xPos, yPos)。
  • imageCount:返回仿真模块中的图像数量(等于 IMAGECOUNT)。
  • imageSize:使用参数 ImageIndex 是强制性的。以列表形式返回您在 ImageIndex 中指定的图像大小 {Width <WIDTH> Height <HEIGHT>}.
  • pixelAligmentOffset:作为整数值返回对齐偏移量 BITS.
  • imageFileSubPixels:作为整数值返回分配给 link 像素的文件像素数 NUMBER.
  • imageFilePixelBits:作为整数值返回图像文件中的 Bit Width 设置 BITS. 允许的值为 1、8 和 16。
  • imageFileNormalize:根据保存仿真结果图像的设置返回 1 或 0。如果设置为 1,则在将 1 位仿真结果保存到 8 位的 * 文件中时, format: 0 映射到 0(黑色),1 映射到 255(白色),即仿真图像的格式为“归一化”格式。
  • cropRect: 此 Property 仅适用于仿真源。使用参数 ImageIndex 是强制性的。返回包含以下条目的列表: {X Y WIDTH HEIGHT}.
  • currentImage:作为整数值返回当前选定的图像 INDEX.

SetSimImageData#

命令语法
SetSimImageData FullSimModuleName ImageIndex KernelRow KernelCol Component X Y Width Value {OtherValues}

用于覆盖仿真模块(源或探针)内图像中的一个像素或多个相邻像素的命令。

您可以使用此命令_

  • 在 SimSources 中用于修改用于仿真的图像。
  • 在 SimProbes 中用于在图像内可视化结果。

图像的更改是易失的。一旦您选择同一仿真模块的其他图像或重新选择已更改的图像,该更改后的图像将从硬盘重新加载,并且您的更改将被丢弃。(如果您输入新图像的命令,即会选择其他图像 ImageIndex (同一仿真模块的)在 TCL 控制台中,或者如果在 VisualApplets GUI 的查看器中点击了同一仿真模块的另一幅图像。)

但是,只要修改后的图像处于活动状态,您就可以将其以新文件名保存,从而使修改永久生效。

您可以将临时修改的图像用于仿真。但是,在修改状态下,每个 SimSource 模块只能用于仿真一幅图像 (因为在同一 SimSource 中修改另一幅图像会重置您之前修改过的图像的像素值)。只要每个仿真模块只有一个临时修改的图像,您就可以将任意数量的临时修改图像用于仿真。

每个 Pixel 一个值:命令 SetSimImageData 允许您每个像素准确写入一个值。因此,在灰度像素中,您必须执行 Command SetSimImageData 仅一次即可写入每个像素的完整颜色信息。在彩色像素中,您只能写入每个像素的三个颜色分量之一。因此,如果您想更改彩色像素的所有三个颜色分量,您必须执行 Command SetSimImageData 三次。

写入带内核的图像:当写入带有 kernel 的图像时,除了指定要覆盖的(第一个)pixel 的确切位置外,在使用命令时还必须指定要覆盖的相应 pixel(s) 的哪个 kernel 元素 SetSimImageData。如果您想覆盖所有 kernel 元素,您必须执行 Command SetSimImageData 正好 KernelRow * KernelCol 次。

若要使用该命令:

使用该命令之前,请关闭要修改的图像所在的仿真模块图像查看器。

通过索引指定要修改的图像 ImageIndex.

ImageIndex 从 0 开始计数,而 VisualApplets GUI 中仿真模块里的图像编号从 1 开始。其值映射关系如下:

ImageIndex = 0 对应 VisualApplets GUI 查看器中的图像 1。

ImageIndex = 1 对应 VisualApplets GUI 查看器中的图像 2。

ImageIndex = 2 对应图像 3

依此类推。

信息:在 VisualApplets 的 GUI 上,下一个仿真周期中使用的图像索引显示在方括号中,并带有前置“sim”标记(例如 sim[2])。

使用 KernelRow 和 KernelCol 用于指定要更改其像素值的卷积核元素。

您可以在仿真模块连接到的 link 的 link properties 中查看仿真图像的 kernel 大小。kernel 大小大于 1 个像素的 link 始终在其前面带有允许指定 kernel 的算子实例 (例如,算子 FIRkernelNxM)。

卷积核列和卷积核行的计数从 0 开始。因此,如果您使用的是只有单个元素的卷积核,请将这两个值(KernelRow 和 KernelCol)都设置为 0:

SetSimImageData 命令:计算 Kernel Columns 和 Kernel Rows

对于包含 4 个元素的卷积核,您可以按如下方式识别各个卷积核元素:

SetSimImageData 命令:在 4 个元素中识别内核元素

对于包含 9 个元素的卷积核,您可以按如下方式识别各个卷积核 element:

SetSimImageData 命令:在 9 个元素中识别内核元素

使用参数 Component 来指定要设置的像素的颜色分量。在灰度图像中,设置 Component 设置为 0。对于多通道图像(彩色),通过其在色彩模型中的位置指定要写入的分量。示例:如果要寻址 RGB 图像中的红色分量,请将 Component 设置为 0;如果要寻址 RGB 图像中的绿色分量,请将 Component 设置为 1;如果要寻址 RGB 图像中的蓝色分量,请将 Component 设置为 2。

设置位置(X,Y)以定义图像内写入操作的起点(第一个像素)。

使用 Width 用于指定每行要覆盖的相邻像素数量。如果您指定的 Values 大于在单行中写入的像素数(Width),则写入操作将在下一行的指定位置继续 X. 这样,您就可以写入一个具有相应宽度的感兴趣区域 (ROI) Width.

指定各个像素值 Value {OtherValues} 采用十六进制书写,不带前导 "0x"。请以二进制补码表示法指定负数。您在 Value {OtherValues} 中指定的数值数量决定了图像中将更改多少个像素。

GetSimImageData#

命令语法
GetSimImageData FullSimModuleName ImageIndex KernelRow KernelCol Component X Y [Width [Height]]

用于读取仿真模块 (源或探针) 中图像内一个或多个相邻像素值的 Command。

每个 Pixel 一个值:命令 GetSimImageData 每个像素返回正好一个值。因此,在灰度像素中,您必须执行 Command GetSimImageData 仅一次即可检索每个像素的完整颜色信息。在彩色像素中,您将只能检索每个像素的三个颜色分量之一。因此,如果您想读取彩色像素的所有三个颜色分量,您必须执行 Command GetSimImageData 三次。

读取带内核的图像:当从带有 kernel 的图像中读取时,除了指定要读取的(第一个)pixel 的确切位置外,在使用命令时还必须指定要读取的相应 pixel(s) 的哪个 kernel 元素 GetSimImageData。如果您想读取所有 kernel 元素,您必须执行 Command GetSimImageData 正好 KernelRow * KernelCol 次。

若要使用该命令:

指定索引为 ImageIndex.

ImageIndex 从 0 开始计数,而 VisualApplets GUI 中仿真模块里的图像编号从 1 开始。其值映射关系如下:

ImageIndex = 0 对应 VisualApplets GUI 查看器中的图像 1。

ImageIndex = 1 对应 VisualApplets GUI 查看器中的图像 2。

ImageIndex = 2 指 VisualApplets GUI 查看器中的图像 3,

依此类推。

信息:在 VisualApplets 的 GUI 上,下一个仿真周期中使用的图像索引显示在方括号中,并带有前置“sim”标记(例如 sim[2])。

使用 KernelRow 和 KernelCol 以指定要读取的 Kernel 元素。

仿真图像的 Kernel 大小可以在仿真模块所连接的 Link 的 link properties 中查看。Kernel 大小超过 1 个元素的 Link 前面总是会有一个允许指定 Kernel 的算子实例(例如算子 FIRkernelNxM)。

Kernel 的行列计数从 0 开始。因此,如果您只有一个元素的 Kernel,请将这两个值都设为 0。

GetSimImageData 命令:计算 Kernel Columns 和 Kernel Rows

对于包含 4 个元素的卷积核,您可以按如下方式识别各个卷积核元素:

GetSimImageData 命令:在 4 个元素中识别内核元素

对于包含 9 个元素的卷积核,您可以按如下方式识别各个卷积核 element:

GetSimImageData 命令:在 9 个元素中识别内核元素

使用参数 Component 来指定要读取的像素颜色分量。在灰度图像中,将 Component 设为 0。在多通道图像(彩色)中,通过其在色彩模型中的位置来指定要读取的分量。例如:如果要读取 RGB 图像中的红色分量,请将 Component 设为 0;如果要读取 RGB 图像中的绿色分量,请将 Component 设为 1;或者如果要读取 RGB 图像中的蓝色分量,请将 Component 设为 2。

设置位置(X,Y)以定义图像中读取起点(第一个像素)。

如果不使用参数 Width,则返回恰好一个像素的值。如果仅指定 Width, Width 将返回行 Y 中的值。如果指定 Width 和 Height, Width * Height 将返回值。使用 Width 和 Height 允许您定义一个感兴趣区 (ROI),以便读取该区域的像素值(灰度)/像素分量值(彩色)。

各个像素值以十六进制形式返回,不带前导 "0x"。负数以二进制补码形式返回。

GetSimImageProperty#

命令语法
GetSimImageProperty FullSimModuleName Property ImageIndex [LineIndex [LineCount] ]

用于检索仿真图像属性(在源模块或探测模块中)的命令。

以下针对 Property 的值可用:

LineWidth:通过定义 LineIndex 您想获取关于哪一行的宽度信息。如果您使用 LineCount,您可以获取多个宽度值(以列表形式)。第一个值将是该行的宽度 LineIndex.

SaveImage#

命令语法
SaveImage FullSimProbeName {ImageIndex} ImageBaseName

用于保存来自仿真探针的一个或所有结果图像的命令。

使用可选参数 ImageIndex 如果您想从结果图像中保存特定的图像。请勿使用 ImageIndex 或者将其设置为 -1(如果您想保存探针的所有图像)。

使用 ImageBaseName 以指定文件系统中用于保存图像的目录路径,并指定图像文件的文件名。请确保您指定的目录已存在于您的文件系统中。否则,您可以使用命令 MakeDirectoryPath (参见此处)。

例如:“c:/images/testimage”。在保存过程中,文件名字扩展名(例如 *.tif)将自动添加到名称中。

如果保存探针的所有图像,图像索引将自动添加到文件名中。

示例 1:

输入

SaveImage Process0/mySimProbe c:/images/testimage

以获取以下文件:

c:/images/testimage_0001.tif

c:/images/testimage_0002.tif

c:/images/testimage_0003.tif

…

示例 2:

输入

SaveImage Process0/mySimProbe 4 c:/images/testimage

以获取以下文件:

c:/images/testimage.tif

构建设计#

Drc#

命令语法
Drc [SaveLogfileName]

用于启动第一级设计规则检查(DRC 1)的命令。

若要获取日志输出,您可以选择在参数中指定 HTML 日志文件(*.html)的路径和文件名 [SaveLogfileName].

Drc2#

命令语法
Drc2 Name Platform

用于启动第二级设计规则检查(DRC 2)的命令。

若要获取日志输出,您可以选择在参数中指定 HTML 日志文件(*.html)的路径和文件名 [SaveLogfileName].

SelectBuildConfiguration#

命令语法
SelectBuildConfiguration ConfigurationName

用于选择已保存的构建配置作为活动构建配置的命令。

在参数中指定所需构建配置的名称 ConfigurationName.

若要获取所有可用构建配置的概览,请输入 SelectBuildConfiguration ? - 返回所有可用构建配置的名称列表。当前选定的构建配置显示在列表的第一项中。

示例:

Command SelectBuildConfiguration

该命令返回当前选定的构建配置的名称。通过此返回值,您可以检查重新设置构建配置是否成功。

示例:

Command SelectBuildConfiguration Output

Build#

命令语法
Build [SaveLogfilename [MaxTime] ]

用于启动构建流程的命令。

若要获取日志输出,您可以选择在参数中指定 HTML 日志文件(*.html)的路径和文件名 [SaveLogfileName].

若要为构建过程设置时间限制,您可以在参数中选择性地指定最大构建时间 [MaxTime] (以小时为单位)。参数 [MaxTime] 的类型为浮点数。这样,您就可以指定小时的小数部分。的默认设置为 [MaxTime] 24 小时。

创建日志文件的命令示例 build_log.html 并指定最大构建时间为半小时:

Build build_log.html 0.5

处理文件、路径、程序实例和消息#

Source#

命令语法
Source FilePath

用于从文件中执行 TCL 脚本的命令。请使用正斜杠来指定路径。该命令的工作方式类似于 TCL 命令 source,但会自动替换以下占位符(如命令 MakeDirectoryPath):

%UserDir%:当前用户的数据目录(例如 c:/Users/Smith)

%AppDataDir%:VisualApplets 的应用程序数据目录

%VaInstallDir%:VisualApplets 的安装目录

%UserLibDir%:用户库目录。

%CustomLibDir%:自定义库目录。

%VaVersion%:VisualApplets 程序版本,例如“3.1”

%CurrDateTime%:符合 ISO 8601 标准(基本格式)的当前日期和时间,例如“20170530T134522”

%DateTime%:符合 ISO 8601 标准(基本格式)的 VisualApplets 启动时的日期和时间,例如“20170530T134350”

%CurrDesignDir%: 当前加载的设计所在的目录。

MakeDirectoryPath#

命令语法
MakeDirectoryPath FullPath

用于创建任意所需深度的路径(及其目录)的命令。

该命令会自动替换以下占位符:

%UserDir%:当前用户的数据目录(例如 c:/Users/Smith)

%AppDataDir%:VisualApplets 的应用程序数据目录

%VaInstallDir%:VisualApplets 的安装目录

%UserLibDir%:用户库目录。

%CustomLibDir%:自定义库目录。

%VaVersion%:VisualApplets 程序版本,例如“3.1”

%CurrDateTime%:符合 ISO 8601 标准(基本格式)的当前日期和时间,例如“20170530T134522”

%DateTime%:符合 ISO 8601 标准(基本格式)的 VisualApplets 启动时的日期和时间,例如“20170530T134350”

%CurrDesignDir%: 当前加载的设计所在的目录。

如果命令执行成功,将返回绝对路径。

GetAbsolutePath#

命令语法
GetAbsolutePath Path

返回您在参数中指定的路径的绝对路径 Path.

该命令会自动替换与命令相同的别名(占位符) MakeDirectoryPath.

您可以在 Path 中引用不存在的目录或文件,以便生成的路径名指向不存在的目录或文件。

Wait#

命令语法
Wait TimeInMilliseconds

用于等待指定时间的命令 TimeInMilliseconds。在等待期间,VisualApplets GUI 保持活动状态。

如果将 TimeInMilliseconds 设为 0 时,VisualApplets 会对 GUI 至少执行一次事件循环更新。您可利用此功能确保 GUI 显示早期命令的结果。

消息#

命令语法
消息 Type Code Text

用于发出

  • 错误消息 (Type=error)、
  • 警告 (Type=warning),或者是
  • 提示信息 (Type=info)

在 Code,为您的消息定义消息代码。 Code 的值范围为 -999 到 +999。请仅使用此范围内的值,以避免与当前和/或未来版本的 VisualApplets 产生冲突。

使用 Text 以输入消息。消息会自动以点号结束。

Exit#

命令语法
Exit [Mode]

用于终止当前 VisualApplets 会话的命令。您可以使用 Exit 即使您仍有打开的设计。不过,请不要忘记在此之前保存您的更改。

如果您仍有打开的设计且该设计包含未保存的更改:

  • 如果设置可选参数 Mode 更改为 Discard, 打开的设计将关闭,即使它包含您尚未保存的更改。未保存的更改将被丢弃。
  • 如果您使用 Exit 中指定,且不使用参数 Mode 尽管打开的设计包含未保存的更改,该命令仍将终止,并且您会收到相应的错误消息。