跳转到内容

Tcl 命令参考#

大小写敏感性和斜杠

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

信息

下方用于描述各个命令参数的符号基于 Wirth 语法符号 (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 上使用的操作系统。)

    允许使用以下值:

    • 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 用于定义设计中特定层级路径。从 process 级别开始。使用正斜杠。
  • ModuleName 用于指定您希望该模块拥有的名称。或者,您可以将 ModuleName 留空。在这种情况下,您必须结束 FullModuleName ;该模块将被自动命名。

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

示例:

CreateModule CxpCamera Process0/cam 123 163

函数的返回值 CreateModule 是 FullModuleName (即包括模块名称在内的到该模块的完整层级路径)。

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

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

例如,当实例化算子 BRANCH时,您可以定义该实例将拥有的输出端口数量:

CreateModule 命令:输入输出

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

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

CreateModule 命令:多端口

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

示例:

CreateModule BRANCH Process0/branchz 1 3 43 123

Command CreateModule:带有 3 个 Output Ports 的 BRANCH 示例

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

例如:

CreateModule BRANCH Process0/branch 43 123

Command CreateModule:带有 2 个 Output Ports 的 BRANCH 示例

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

CreateModule BRANCH Process0/branch3 0 3 43 123

Command CreateModule:带有 3 个 Output Ports 的 BRANCH 示例

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

CreateModule BRANCH Process0/branch3 3 3 43 123

Command CreateModule:带有 3 个 Output Ports 的 BRANCH 示例

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

CreateModule BRANCH Process0/branch4 0 4 43 123

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

可选参数 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 命令:输入参数

此处的多端口基本名称为 I.

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

命令 CreateModule:多端口鼠标悬停

此处的多端口基础名称为 I(后跟用于识别多端口各个实例的索引 I 在模块上)。

InstUserLibOperator#

命令语法
InstUserLibOperator LibName OperatorName FullModuleName xPos yPos

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

InstCustomLibOperator#

命令语法
InstCustomLibOperator LibName OperatorName FullModuleName xPos yPos

命令语法 InstUserLibOperator ( 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:连接多边形几何形状示例 2

DisconnectModules#

命令语法
DisconnectModules FullModuleName ModulePort

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

示例:

DisconnectModules Process0/Cam1 O

CreateComment#

命令语法
CreateComment FullBoxName Text xPos yPos

用于创建注释框的命令。

的语法 FullBoxName 是 <HierLevelPath>/<BoxName>.

  • HierLevelPath 用于定义设计中特定层级路径。从 process 级别开始。使用正斜杠。
  • 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 用于指定设计中注释框所在的层级路径。从处理层开始。使用正斜杠。
  • 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.

编辑字段参数的示例:

之后指定其他值

Command 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),它将变为一个只读 Property。
  • 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

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

在 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}

用于更改 Property 类型的命令。可用类型标志如下:

  • 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)

设计 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 模块(类似于模式)。将不返回层级框(Hierarchical boxes)。
  • ordered:返回设计的所有模块。使用 Specifier 来定义排序模式。您有以下选项:
    • 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

此命令用于获取模块端口的 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、未知)。对于层次化框和用户库模块,将返回“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.

示例:

Command 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。对于 enum 参数,它返回由 enum 名称和 enum 值组成的对的列表。
  • size:返回域的大小。仅适用于 IntField 和 FloatField 参数。
  • isDynamic:如果请求的参数是动态的,则返回 1;否则返回 0。
  • isStatic:如果请求的参数是静态的,则返回 1;否则返回 0。
  • isEditable:如果请求的参数可编辑,则返回 1;否则返回 0。

GetLinkParams#

命令语法
GetLinkParams FullModuleName PortName {ParameterNames}

返回特定链路的链路参数名称列表及当前设置的值。该链路通过模块的连接节点(端口)进行识别。返回的列表中包含值对 <ParameterName><Value> ,这些值对对应于您通过 SetLinkParam.

设置链路参数时所使用的值对。 GetLinkParams 仅适用于参数 FullModuleName 和 PortName.

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

示例:

Tcl 命令 GetLinkParams:示例

GetLinkParamProperty#

命令语法
GetLinkParamProperty FullModuleName PortName ParameterName 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

此命令返回特定链路的特定 Property。如果在 FullModuleName 和 PortName中寻址分层盒(hierarchical box)的端口,只要分层盒内存在连接到该端口或从该端口出发的链路,该命令就能正常工作。

该参数的以下选项 Property 值为:

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

此命令检索设计中的注释框(comment box)。该命令返回一个列表,其中包含您通过参数指定的具有相应特征的所有注释框 Scope 和 Specifier列表包含以下内容: FullElementNames (包含方框名称的分层名称)。

Scope 提供以下选项:

  • hierarchy: 定义特定的层级 (通过 HierLevelPath) 在 Specifier.
  • pattern:使用 Specifier 作为通配符表达式,用于 FullElementName 的注释框中。如果您将“*”指定为说明符,则将返回设计中的所有注释框。

GetCommentProperty#

命令语法
GetCommentProperty FullBoxName Property

此命令检索注释方框的 Property。

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

  • HierLevelPath 用于指定设计中注释框所在的层级路径。从处理层开始。使用正斜杠。
  • 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 仅用于选择链接 (该链接通过将链接与寻址模块连接的端口进行标识)。

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)的列表、所选链路(Links)的列表、所选仿真模块(SimModules)的列表,还是所选注释框(CommentBoxes)。

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

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

如果您使用 Scope = Links 您将获得由以下内容组成的链路识别元组列表: FullModuleName 和 PortName (链路连接到的端子)。

Paste#

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

用于将剪贴板中的元素粘贴到层级中的命令 ParentHierarchy(即粘贴先前已复制或剪切的元素)。

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

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

InsertModulePort#

命令语法
InsertModulePort FullModuleName PortName [Where]

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

信息

只能插入可在命令中为其指定多重性的端子 CreateModule.

Where 提供以下选项:

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

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

RemoveModulePort#

命令语法
RemoveModulePort FullModuleName PortName

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

信息

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

Command RemoveModulePort

AppendModulePort#

命令语法
AppendModulePort FullHierBoxName Direction

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

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

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

Direction=output:创建一个输出端子。

Rename#

命令语法
Rename FullModuleName NewName

用于重命名模块或仿真框的命令。在 NewName 中,您无需分层路径即可指定实例新的自定义名称。

示例:

Rename Process0/module1 DMA

设置活动窗口#

命令语法
设置活动窗口 Hierarchy

用于打开(并激活)VisualApplets 中 Hierarchy 层级的设计窗口的命令。

获取活动窗口#

命令语法
获取活动窗口

返回有关当前在 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 用于指定仿真探针模块所需的名称。或者,您可以将其留空 SimModuleName 留空。在这种情况下,您必须结束 FullSimModuleName ;该模块将被自动命名。

函数的返回值 CreateSimProbe 是 FullModuleName 新仿真探针模块的完整层级路径(包括模块名称)。

DeleteSimModule#

命令语法
DeleteSimModule FullSimModuleName

用于删除仿真模块(仿真源或仿真探针)的命令。

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

ConnectSimModule#

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

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

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

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

或者,您可以通过以下方式定义连线上连接点的位置 xPos 和 yPos.

DisconnectSimModule#

命令语法
DisconnectSimModule FullSimModuleName

用于从链路中分离仿真模块的命令。

SetSimModuleProperty#

命令语法
SetSimModuleProperty FullSimModuleName Key Value {OtherValue}

用于定义仿真模块 Property 的命令。

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

pixelAlignmentOffset BITS

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

imageFileSubPixels NUMBER

使用此参数将分配给一个链路像素的文件像素数指定为整数值 NUMBER.

来源: NUMBER 个像素合并为一个像素。

探针:一个像素被拆分为 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]

用于向模拟源模块添加图像的命令。如果模拟源所连接的链路的核元素数量大于 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:如果仿真模块已连接到链路,则返回 1;否则返回 0。
  • connectedLink:返回一个列表,其中包含 FullModuleName (链路连接到的模块)以及链路连接到的模块的端口。返回值总是通过真实的模块端口来描述链路,即它从不说明内部 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:以整数形式返回分配给链路像素的文件像素数 NUMBER.
  • imageFilePixelBits:以整数形式返回图像文件中的 Bit Width 设置 BITS。允许的值为 1、8 和 16。
  • imageFileNormalize:根据保存仿真结果图像的设置返回 1 或 0。如果设置为 1,则在将 1-bit 仿真结果保存到 8-bit 的文件时* 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 中用于在图像中可视化结果。

图像的修改是临时的。一旦选择同一仿真模块的其他图像或重新选择被修改的图像,该图像将从硬盘重新加载,并且你的修改将被丢弃。(如果你在 TCL 控制台中输入针对新图像的命令,或者如果你在 VisualApplets GUI 的查看器中点击同一仿真模块的其他图像,则表示你选择了其他图像。) ImageIndex (同一仿真模块的)

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

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

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

写入带有 kernel 的图像当您向包含内核的图像写入数据时,除了要覆盖的第一个像素的确切位置之外,您还必须指定要覆盖的相应像素的哪个内核元素。 SetSimImageData。如果要覆盖所有 Kernel 元素,则必须执行命令 SetSimImageData 精确 KernelRow * KernelCol 次。

要使用该命令:

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

使用索引指定要修改的图像 ImageIndex.

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

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

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

ImageIndex = 2 对应图像 3

依此类推。

信息:关于 GUI VisualApplets下一个模拟周期中使用的图像索引显示在方括号中,并以“sim”开头标记(例如, sim[2] )。

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

您可以在仿真模块所连接的 Link 的 Link 属性中查看仿真图像的 Kernel 大小。Kernel 大小大于 1 个像素的 Link 前面总是带有一个允许指定 Kernel 的 Operator 实例(例如,Operator FIRkernelNxM)。

Kernel Columns 和 Kernel Rows 的计数从 0 开始。因此,如果您只有一个元素的卷积核,请将这两个值(KernelRow 和 KernelCol) 设置为 0:

SetSimImageData 命令:计算 Kernel Columns 和 Kernel Rows

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

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

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

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

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

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

使用 Width 用于指定每行要覆盖的相邻像素数量。如果您指定的数量 Values 大于您在一行中写入的像素数(Width),则写入操作将在下一行的位置 X继续。通过这种方式,您可以写入宽度为 Width.

指定各个像素值 Value {OtherValues} 采用十六进制书写,不带前导“0x”。负值应以补码表示法指定。您在 Value {OtherValues} 决定了图像中将有多少像素被修改。

GetSimImageData#

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

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

每个像素一个值:命令 GetSimImageData 准确返回每个像素的一个值。因此,对于灰度像素,您必须执行命令 GetSimImageData 仅一次即可检索每个像素的完整颜色信息。对于彩色像素,您将只能检索三个颜色分量中的一个。因此,如果要读取彩色像素的所有三个颜色分量,则必须执行命令 GetSimImageData 三次。

读取带有 kernel 的图像当您从包含内核的图像中读取数据时,除了要读取的第一个像素的确切位置之外,您还必须指定要读取的相应像素的内核元素。 GetSimImageData。如果要读取所有 Kernel 元素,则必须执行命令 GetSimImageData 精确 KernelRow * KernelCol 次。

要使用该命令:

指定具有索引的图像 ImageIndex.

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

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

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

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

依此类推。

信息:关于 GUI VisualApplets下一个模拟周期中使用的图像索引显示在方括号中,并以“sim”开头标记(例如, sim[2] )。

使用 KernelRow 和 KernelCol 以指定要从中读取的算子元素。

您的仿真图像算子的大小可以在与仿真模块连接的链接的链接属性中查看。算子大小大于 1 个元素的链接前面总是带有允许指定算子的算子实例(例如,算子 FIRkernelNxM)。

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

GetSimImageData 命令:计算 Kernel Columns 和 Kernel Rows

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

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

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

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

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

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

使用可选参数 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

Building the Design#

Drc#

命令语法
Drc [SaveLogfileName]

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

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

Drc2#

命令语法
Drc2 Name Platform

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

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

SelectBuildConfiguration#

命令语法
SelectBuildConfiguration ConfigurationName

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

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

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

示例:

命令 SelectBuildConfiguration

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

示例:

命令 SelectBuildConfiguration 输出

构建#

命令语法
构建 [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%:开始日期和时间VisualApplets 根据 ISO 8601(基本格式),例如“20170530T134350”

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

MakeDirectoryPath#

命令语法
MakeDirectoryPath FullPath

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

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

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

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

%VaInstallDir%: VisualApplets 的安装目录

%UserLibDir%: 用户库的目录。

%CustomLibDir%: 自定义库的目录。

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

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

%DateTime%:开始日期和时间VisualApplets 根据 ISO 8601(基本格式),例如“20170530T134350”

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

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

GetAbsolutePath#

命令语法
GetAbsolutePath Path

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

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

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

Wait#

命令语法
Wait TimeInMilliseconds

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

如果将 TimeInMilliseconds 当值为 0 时,至少会执行一次 GUI 的事件循环更新。 VisualApplets您可以利用此功能确保图形用户界面显示先前命令的结果。

消息#

命令语法
消息 Type Code Text

用于发出

  • 错误消息的命令 (Type=error),
  • 一条警告(Type=warning),或者
  • 一条信息性消息(Type=info)

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

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

Exit#

命令语法
Exit [Mode]

用于终止当前 VisualApplets 会话的命令。您可以使用 Exit ,即使您仍打开着设计。但是,请别忘了在此之前保存您的更改。

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

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