跳至內容

Tcl Command Reference#

大小寫敏感性與斜線

以下指令會區分大小寫。請使用正斜線來標示路徑。

資訊

以下用於描述各命令參數的符號系統,是基於 Wirth 語法符號法(WSN):

  • 大括號中的參數名稱表示,您可在命令列中為此參數指定無值、一個值或多個值。
  • 方括號內的參數名稱表示可選參數。

建立、載入與儲存設計#

LoadDesign#

Command Syntax
LoadDesign FileName

用於載入設計的指令 FileName。請在 FileName 您檔案系統中該檔案的路徑以及檔案名稱本身。請勿忘記註明檔案副檔名(*.va 或 *.tcl)。請使用斜線來標示設計檔案的路徑。

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

如果已載入設計:請透過指令 CloseDesign 關閉目前載入的設計 LoadDesign.

CreateDesign#

Command Syntax
CreateDesign Name Platform

用於為硬體平台 Platform 建立名為 Name 的新設計的指令。若要指定設計的目標平台,您可以使用

  • 該平台的 VisualApplets 程式庫名稱(例如 "iF-CXP12-Q"),或者
  • 平台的完整名稱(例如:「imaFlex CXP-12 Quad」)。請務必依照 Tcl 語法規定,將包含空格的參數名稱以引號括起。

名稱中使用大寫字母並無影響。

SaveDesign#

Command Syntax
SaveDesign FileName [SaveOption]

用於將設計儲存至 FileName。請在 FileName 檔案路徑和檔名本身的指令。請使用斜線來表示設計檔案的路徑。

請勿忘記在檔名中新增副檔名。

  • 若您指定檔案副檔名「.va」,您的設計將以標準的VisualApplets 設計格式儲存。檔案中的所有內容都會被儲存。請將*.va檔案格式用作VisualApplets 設計的主要資料格式。
  • 若您在 FileName,會匯出一個 Tcl 腳本。設計中的部分內容無法匯出。

如果要覆寫現有檔案,請將選用參數 SaveOption 設為 overwrite.

匯出至 Tcl 指令碼期間將遺失以下資訊:

  • 您在使用者函式庫元件實例中進行的本地化修改(旨在使該實例適應周邊設計)已遺失。若您將 Tcl 腳本重新匯入至VisualApplets ,該實例將作為使用者函式庫元件的新副本被插入。您設計中該實例的內容並未儲存於 Tcl 中。
  • 資訊方塊的文字內容以 Tcl 格式儲存。然而,資訊方塊的格式卻已遺失。

ChangePlatform#

Command Syntax
ChangePlatform Platform FileName [SaveOption]

將目前設計轉換至其他硬體平台的命令 Platform 並將轉換後的設計儲存為 FileName.

若要瀏覽所有可用的硬體平台,請輸入 ChangePlatform ? - 系統會回傳所有可用硬體平台的名稱清單。目前選取的硬體平台會顯示在清單的第一項。

在參數中指定所需硬體平台的名稱 Platform。若要指定設計的目標平台,您可以使用

  • 該平台的 VisualApplets 程式庫名稱(例如 "iF-CXP12-Q"),或者
  • 平台的完整名稱(例如 "imaFlex CXP-12 Quad")。

名稱中使用大寫字母並不會產生任何影響。請在 FileName 中指定檔案的路徑(使用正斜線)、檔案名稱本身以及副檔名。如果要覆寫現有檔案,請將選用參數 SaveOption 設為 overwrite.

CloseDesign#

Command Syntax
CloseDesign [Mode]

關閉目前開啟設計的命令。

如果您將選用參數 Mode 設為 Discard設為

如果您使用 CloseDesign 不使用參數 Mode 儘管設計中包含您尚未儲存的變更,該指令仍會終止執行,並顯示相應的錯誤訊息。

SetDesignProperty#

Command Syntax
SetDesignProperty Key Value

使用此命令可輸入目前載入設計的設計屬性。

您可以使用四個鍵:

  • ProjectName (您要給予專案的名稱)
  • Version (設計的版本)
  • Description (專案的描述)。
  • TargetRuntime (在此指定將在影格擷取卡上執行此 applet 的主機 PC 上所使用的作業系統。)

    允許以下值:

    • Win64
    • Win32
    • Linux64
    • Linux32

範例:

SetDesignProperty TargetRuntime Win64

SetDesignClock#

Command Syntax
SetDesignClock NewFrequency

用於設定 FPGA 基本時脈頻率的命令 (單位為 MHz)。

開發設計#

CreateProcess#

Command Syntax
CreateProcess

用於建立新處理程序的命令。VisualApplets 會自動為新的處理程序編號。

DeleteProcess#

Command Syntax
DeleteProcess ProcName

用於刪除指定名稱之處理程序的命令 ProcName.

範例: DeleteProcess Process1

CreateModule#

Command Syntax
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:

許多運算子(operator)在實例化(instantiation)時具有固定的連接埠(port)數量。另一方面,也有連接埠數量可變的運算子。在實例化具有可變連接埠數量的運算子時,您可以定義該模組將擁有多少個連接埠。

例如,當實例化運算子 BRANCH時,您可以定義該實例將擁有多少個輸出連接埠:

Command CreateModule: Enter Outputs

因此,輸出埠 O 的數量是可變的。我們將具有可變埠數的埠稱為多埠。

Multiports 是透過其基本名稱(base name)來識別的。例如在 BRANCH中,輸出連接埠的基本名稱為 O。透過附加到基本名稱的索引(index),可以識別並定址特定的連接埠:

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 個輸出埠。由於運算子類型僅允許 1 個輸入,因此 3 個輸入埠的定義將被忽略。

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

該範例指令的解釋如下:建立 operator 的實例(模組) BRANCH. 將其置於頂層的第 0 個流程中,並命名為「branch」。設定三個輸出埠(多埠基本名稱 O 代表輸出),並將模組在設計視窗中定位於 y=100 像素、x=100 像素處。

關於 MultiportBaseName, 請使用您在 VA GUI 上所見的多埠連接器的基礎名稱。該 MultiportBaseName 當實例化具有可變端口數量的運算子時,其名稱會顯示於彈出的對話方塊中。多端口基名即為該多端口的簡稱(在 GUI 中以括號顯示)。

CreateModule 指令:輸入參數

此處的多埠基名是 I.

您還可以在將滑鼠懸停於某個埠上時顯示的提示資訊中,找到該多埠基座的名稱:

CreateModule 指令:多埠懸停效果

此處的多埠基名是 I(後面接代表各多埠實例的索引) I (在模組上)。

InstUserLibOperator#

Command Syntax
InstUserLibOperator LibName OperatorName FullModuleName xPos yPos

用於實例化使用者庫元素的指令。透過參數指定使用者庫 LibName,透過參數指定庫中的元素(運算子)名稱 OperatorName,透過參數指定您要在設計中給予該模組的名稱以及您希望將模組放置在階層架構中的位置 FullModuleName,以及透過參數設定模組在設計視窗中的位置 xPos以及 YPos.

InstCustomLibOperator#

Command Syntax
InstCustomLibOperator LibName OperatorName FullModuleName xPos yPos

用於實例化自訂庫元素的指令。透過參數指定使用者庫 LibName,透過參數指定庫中的元素(運算子)名稱 OperatorName,透過參數指定您要在設計中給予該模組的名稱以及您希望將模組放置在階層架構中的位置 FullModuleName,以及透過參數設定模組在設計視窗中的位置 xPos以及 YPos.

DeleteModule#

Command Syntax
DeleteModule FullModuleName

用於刪除模組的命令 FullModuleName.

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

  • HierLevelPath 用於指定模組在設計中所在的層級路徑。請從流程層級開始,並使用正斜線。
  • ModuleName 用於指定您要刪除的模組名稱。

無法透過此命令刪除模擬模組。若要刪除模擬模組,請使用命令 DeleteSimModule.

ConnectModules#

Command Syntax
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

ConnectModules 命令:連接多邊形幾何形狀範例 2

DisconnectModules#

Command Syntax
DisconnectModules FullModuleName ModulePort

用於刪除連接至埠的連結的命令 ModulePort 模組的 FullModuleName.

範例:

DisconnectModules Process0/Cam1 O

CreateComment#

Command Syntax
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#

Command Syntax
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#

Command Syntax
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#

Command Syntax
SetModuleParamProperty FullModuleName ParameterName PropertyName PropertyValue {OtherPropertyValue}

用於變更模組參數屬性的指令。此指令可取代 SetModuleParamType. 單一屬性名稱可能有多個值。您可以變更以下屬性:

access: 您可以在這裡將多個旗標列為值:

  • write: 如果參數可以在此方向切換(例如在算子 LinkParamTranslator) 中),它就會變成寫入參數。
  • read: 如果參數可以在此方向切換(例如在算子 LinkParamTranslator) 中),它就會變成讀取參數。
  • dynamic: 若該參數可為動態或靜態,則此處將其設為動態參數(此設定將取代指令 SetParamDynamic)。
  • static: 若該參數可為動態或靜態,則此處將其設為靜態參數(此設定將取代指令 SetParamStatic)。

position: 為該參數定義一個整數值 PropertyValue,用以定義該參數在階層式方塊中的參數清單中所處的位置。

SetParamInt#

Command Syntax
SetParamInt FullModuleName ParameterName Value

僅用於 TCL 匯出。用於設定整數參數的指令。

資訊

此指令用於將VisualApplets 中的內容透過 TCL 匯出至 *.tcl 檔案。

請勿在您手動編寫的腳本中使用此指令。請使用指令 SetModuleParam 。

SetParamFloat#

Command Syntax
SetParamFloat FullModuleName ParameterName Value

僅用於 TCL 匯出。用於設定浮點數參數的指令。

資訊

此指令用於將VisualApplets 中的內容透過 TCL 匯出至 *.tcl 檔案。

請勿在您手動編寫的腳本中使用此指令。請使用指令 SetModuleParam 。

SetParamEnum#

Command Syntax
SetParamEnum FullModuleName ParameterName Value

僅用於 TCL 匯出。用於設定具位址的枚舉參數的指令。 Value 是該枚舉值的字串。

範例(針對運算子 SetSignalStatus 放置在該層的 Process0 且名稱是 SetSigSt):

SetParamEnum Process0/SetSigSt Mode High

設定參數 Mode 運算子的 SetSigSt 位於 Process0 設為 High.

資訊

此指令用於將VisualApplets 中的內容透過 TCL 匯出至 *.tcl 檔案。

請勿在您手動編寫的腳本中使用此指令。請使用指令 SetModuleParam 。

SetParamString#

Command Syntax
SetParamString FullModuleName ParameterName Value

使用此指令為特定模組定義中繼資料參數。

在 TCL 輸出檔案中,指令 SetParamString 用於設定任何字串參數,即使是現有的模組參數也不例外。然而,在您手動編寫的腳本中,這並不可行。

資訊

在撰寫自己的腳本時,請勿使用此指令將現有的模組參數設定為新值,即使該模組參數的類型為字串亦然。

若要將現有模組參數設定為新值,請務必使用指令 SetModuleParam 。

SetParamIntField#

Command Syntax
SetParamIntField FullModuleName ParameterName Index Value {OtherValues}

僅用於 TCL 匯出。用於設定整數型別欄位參數的指令。設定欄位 Index 設為 Value1, 下列欄位將依指定順序填入以下值。

資訊

此指令用於將VisualApplets 中的內容透過 TCL 匯出至 *.tcl 檔案。

請勿在您手動編寫的腳本中使用此指令。請使用指令 SetModuleParam 。

SetParamFloatField#

Command Syntax
SetParamFloatField FullModuleName ParameterName Index Value {OtherValues}

僅用於 TCL 輸出。用於設定浮點數型別欄位參數的指令。設定欄位 Index 設為 Value1, 下列欄位將依指定順序填入以下值。

資訊

此指令用於將VisualApplets 中的內容透過 TCL 匯出至 *.tcl 檔案。

請勿在您手動編寫的腳本中使用此指令。請使用指令 SetModuleParam 。

SetParamStatic#

Command Syntax
SetParamStatic FullModuleName ParameterName

僅用於 TCL 匯出。此命令用於將參數設為靜態。若某個參數可同時設定為靜態或動態,在大多數情況下,該參數預設為動態。請使用此命令將此類參數設為靜態。

資訊

此指令用於將VisualApplets 中的內容透過 TCL 匯出至 *.tcl 檔案。

請勿在您手動編寫的腳本中使用此指令。請使用指令 SetModuleParamType 。

SetParamDynamic#

Command Syntax
SetParamDynamic FullModuleName ParameterName

僅用於 TCL 匯出。此指令用於將參數設為動態。僅當該參數本身可設定為動態時,此指令才有效。

資訊

此指令用於將VisualApplets 中的內容透過 TCL 匯出至 *.tcl 檔案。

請勿在您手動編寫的腳本中使用此指令。請使用指令 SetModuleParamType 。

SetModuleParamType#

Command Syntax
SetModuleParamType FullModuleName ParameterName TypeFlag {OtherTypeFlags}

用於變更參數類型的指令。提供以下類型旗標:

  • Dynamic: 若該參數可設定為動態或靜態,此標誌會將該參數設為動態參數(取代指令 SetParamStatic)。
  • Static: 若該參數可設定為動態或靜態,此標誌會將該參數設為靜態參數(取代指令 SetParamStatic)。

Dynamic 進行明確的生命週期管理即呼叫 Static 互相排斥。

使用類型標誌時 Dynamic or Static, 此指令的功能與下列指令相同: SetParamStatic 進行明確的生命週期管理即呼叫 SetParamDynamic. 不過,請使用 SetModuleParamType 當您手動撰寫腳本時。

SetLinkParam#

Command Syntax
SetLinkParam FullModuleName PortName ParameterName Value {OtherParameterName OtherParameterValue}

用於設定連結格式的指令。連結是透過模組的連接節點(埠)來識別的。連結格式參數的名稱與VisualApplets 圖形化使用者介面中的名稱相同。

資訊

手動撰寫 TCL 腳本時,此指令僅適用於可變更的參數。若嘗試設定一個不可變更的連結參數,系統將顯示相應的錯誤訊息:

SetLinkParam 指令:範例

SetResourceMapping#

Command Syntax
SetResourceMapping FullModuleName ResourceName [Index] NewMapping

用於變更資源與模組之間對應關係的指令。該資源 ResourceName 將被對應至新的索引 NewMapping。若模組配置了多個同類型的資源,請使用選用參數 Index 來選取資源。

Command Syntax
SplitLink FullModuleName PortName [Number]

用於建立模組的指令 BRANCH. 新的分支模組被插入到從該模組延伸出來的連結上 FullModuleName 在港口 NodeName識別的連結上。新的分支模組具有 Number 個輸出連接埠。如果您未使用選用參數 Number,則新的分支模組會有兩個輸出連接埠。

函數的傳回值 SplitLink 為 FullModuleName 新分支模組的(指向該模組的完整階層路徑,包含模組名稱)。

Querying Design Structure and Design Details#

GetDesignProperty#

Command Syntax
GetDesignProperty PropertyName

此指令用於擷取設計屬性。您可以針對 PropertyName:

  • ProjectName使用下列值:專案名稱
  • FileName: 目前載入的設計檔案 *.va 的路徑與名稱
  • HardwarePlatform: 目標硬體平台的函式庫名稱,例如iF-CXP12-Q
  • Version:設計版本
  • Description:專案說明
  • Loaded: 設計已載入(1 或 0)

設計屬性 Loaded 可以在完全未載入任何設計時進行查詢,這不會引發錯誤訊息。若在未載入設計的情況下查詢任何其他設計屬性,則會引發錯誤訊息。

GetDesignClock#

Command Syntax
GetDesignClock

此指令會回傳 FPGA 的基本時脈頻率(單位為 MHz)。

GetProcesses#

Command Syntax
GetProcesses

此指令會回傳一個清單,其中包含該設計中所有程序的名稱。

GetSubModules#

Command Syntax
GetSubModules HierarchyName

此指令會回傳一個清單,其中包含位於所請求層級結構中的模組名稱 HierarchyName.

針對每個子模組,皆會列出完整的階層名稱。

GetParentHier#

Command Syntax
GetParentHier FullElementName

此指令會傳回FullModuleName) 指定元素的母項階層名稱 FullElementName,亦即元素 FullModuleName 所在階層元素的 FullElementName 。

FullElementName 可以是模組、模擬模組或註解方塊。

GetModules#

Command Syntax
GetModules Scope Specifier {ModuleList}

此指令可篩選設計中的特定模組。該指令會回傳一個清單,其中包含具備您透過 Scope 進行明確的生命週期管理即呼叫 Specifier。該列表包含 FullModuleName 針對所有找到的模組(模組路徑包含個別模組名稱)。若您不想在整個設計中搜尋,而僅想在特定的一組模組中搜尋,您可以於 ModuleList (透過他們的 FullModuleName)。

Scope 可以有下列值:

  • pattern: 使用 Specifier 作為萬用字元運算式 FullModuleName。如果您將「*」指定為識別符,則會傳回該設計的所有模組。
  • flat: 使用 Specifier 作為萬用字元運算式 FullModuleName 模組(例如使用 pattern)。不會回傳階層式方塊。
  • 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#

Command Syntax
GetModulePorts FullModuleName [Scope]

此指令會回傳一個清單,其中包含指定模組的所有埠名。您可以使用可選參數 Scope 來篩選特定的連接埠:

  • inputs: 僅傳回輸入連接埠
  • outputs: 僅傳回輸出連接埠
  • all: 傳回模組的所有連接埠(預設值)

GetModulePortProperty#

Command Syntax
GetModulePortProperty FullModuleName PortName Property

此指令會擷取模組連接埠的屬性。以下是 Property 可用的值:

  • isConnected: 若連接埠已連線,則傳回 1;否則傳回 0。
  • position: 返回圖中(設計視窗)指定連接埠的位置,並以清單形式呈現(xPos, yPos)。如果 PortName 指定一個內層的分層框節點(例如, INBOUND#I000),將回傳此節點在階層式方塊設計視窗中的位置。

GetModuleProperty#

Command Syntax
GetModuleProperty FullModuleName Property

此指令會傳回模組的屬性。

以下的值用於 Property 可用的值:

  • status: 若模組未處於錯誤狀態,則返回 0;否則返回錯誤代碼。
  • operator:傳回該模組所屬之 operator 實例的名稱,例如 BRANCH.
  • operatorType:傳回 operator 類型(O、P、M、unknown)。階層式方塊與使用者庫模組會傳回「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#

Command Syntax
GetModuleParams FullModuleName {ParameterNames}

回傳一個包含模組參數及其當前值的清單。

如果您想要取得模組的所有參數以及目前設定的值,請使用指令 GetModuleParams 僅搭配參數 FullModuleName.

範例:

GetModuleParams 指令:範例

若您只想取得特定參數的數值,可選擇將輸出範圍限制在這些參數上 {ParameterNames}. 輸出的順序與您在 {ParameterNames}.

範例:

Tcl Command GetModuleParams: Example with {ParameterNames}

puts [GetModuleParams Process0/FrameBufferMultiRoi RamDataWidth MaxFrameCount]

GetModuleParamProperty#

Command Syntax
GetModuleParamProperty FullModuleName ParameterName 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#

Command Syntax
GetLinkParams FullModuleName PortName {ParameterNames}

回傳特定連結的連結參數名稱及其目前設定值所組成的清單。該連結是透過模組的連線節點(連接埠)來識別的。回傳的清單包含值對 <ParameterName><Value> 這些對應於您會用來透過 SetLinkParam.

若要同時取得連結的所有參數及其目前設定的值,請使用以下指令 GetLinkParams 僅限於帶有參數的情況 FullModuleName 進行明確的生命週期管理即呼叫 PortName.

若您只想取得特定參數的數值,可選擇將輸出範圍限制在這些參數上 {ParameterNames}. 輸出的順序與您在 {ParameterNames}.

範例:

Tcl 指令 GetLinkParams:範例

GetLinkParamProperty#

Command Syntax
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#

Command Syntax
GetLinkProperty FullModuleName PortName Property

此指令會回傳特定連結的特定屬性。若使用 FullModuleName 進行明確的生命週期管理即呼叫 PortName, 當您指定階層式框中的某個埠時,只要該埠與該階層式框內其他埠之間存在連結,此指令即會生效。

參數的下列選項 Property 可用的值:

  • status: 若一切正常(即連結來源與連結目標的參數設定相符,且 DRC 未偵測到錯誤),則傳回 0;否則傳回錯誤代碼。
  • from: 傳回鏈結的起點。起點可以是前面模組的輸出連接埠,或是內部階層方塊節點 (INBOUND#...) 該連結所對應的目標。此指令會回傳一個包含這兩個值的清單 FullModuleName 進行明確的生命週期管理即呼叫 PortName.
  • to: 傳回鏈結的終點。終點可以是後續模組的輸入連接埠,或是內部階層方塊節點 (OUTBOUND#...) 該連結所對應的目標。此指令會回傳一個包含這兩個值的清單 FullModuleName 進行明確的生命週期管理即呼叫 PortName.
  • source: 返回一個包含值對的清單 FullModuleName 進行明確的生命週期管理即呼叫 PortName 針對直至鏈結來源的所有前方鏈結。從您在 中指定的模組開始,沿著階層向後追蹤鏈結鏈 FullModuleName 回到起點。傳回清單中元素的順序對應於查詢的逆向歷程(來源模組是清單中的最後一個項目)。
  • dest: 返回一個包含值對的清單 FullModuleName 進行明確的生命週期管理即呼叫 PortName 適用於從指定 link 的目標模組開始的所有後續 link。link 鏈結會從您在 FullModuleName 中指定的模組開始,沿著階層正向推進至結尾 (sink)。傳回清單中元素的順序對應於尋找的正向過程 — 目標模組 (destination) 是清單中的最後一個項目。
  • hasConnectedSimModule: 若連結上已連接模擬模組,則傳回 1;若未連接任何模擬模組,則傳回 0。
  • connectedSimModule: 傳回已連接 simulation 模組的階層名稱。

GetSimModules#

Command Syntax
GetSimModules Type Scope Specifier

此指令會擷取 FullModuleName 模擬來源(Type = source) 或模擬探針 (Type = probe) 於設計中。此指令會回傳一個清單,其中包含具備您透過參數所指定特性的模擬模組 Scope 進行明確的生命週期管理即呼叫 Specifier。該列表包含 FullModuleNames (通往各模擬模組的層級路徑,包含各模組的個別路徑)。

Scope 提供以下選項:

  • hierarchy: 在參數中定義特定的層級結構 Specifier.
  • pattern: 使用該參數 Specifier 作為萬用字元運算式 FullModuleNames 的模擬模組。若將「*」指定為限定符,則會回傳該設計中的所有源模組或探針模擬模組。

GetCommentBoxes#

Command Syntax
GetCommentBoxes Scope Specifier

此命令會擷取設計中的 comment box。此命令會傳回包含所有 comment box 的清單,這些 comment box 具有您透過參數指定的特徵 Scope 進行明確的生命週期管理即呼叫 Specifier。該列表包含 FullElementNames (包含 box 名稱的階層名稱)。

Scope 提供以下選項:

  • hierarchy: 定義一個特定的層級結構(透過 HierLevelPath) 在 Specifier.
  • pattern: 使用 Specifier 作為萬用字元運算式 FullElementName 註解方塊。若將「*」設為指定符,則會回傳設計中所有註解方塊。

GetCommentProperty#

Command Syntax
GetCommentProperty FullBoxName Property

此命令會擷取 comment box 的屬性。

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

  • HierLevelPath 用於指定設計中註解方塊所在之層級的路徑。請從流程層級開始,並使用正斜線。
  • BoxName 用於指定留言框的個別名稱。

Property 具有以下選項:

  • content: 會回傳評論框中的內容。
  • position: 會傳回設計視窗中註解方塊左上角的 X 和 Y 座標。

方塊名稱資訊:若要取得您想查詢詳細資訊的註解方塊名稱,可使用 TCL 查詢設計中放置了哪些方塊,請參閱 TCL 範例 QueryDesign.tcl 在您的VisualApplets 安裝資料夾中(例如,<YourVisualAppletsInstallationDirectory>\Examples\AdvancedVAFunctions\Tcl Scripting\QueryDesign.tcl)

編輯設計 – 其他指令#

Move#

Command Syntax
Move FullModuleName [HierNodeName] PosX PosY

用於將模組、階層式方塊節點、註解方塊或模擬模組重新定位到設計視窗內新位置的指令。

使用該參數 [HierNodeName] 僅適用於選取階層式方塊節點。階層式方塊內的節點是透過前綴來識別的 INBOUND# 或 OUTBOUND#(就像你使用命令時那樣 ConnectModules),例如, INBOUND#I000.

Select#

Command Syntax
Select FullModuleName [PortName]

用於選取模組、模擬模組、註解方塊或連結的指令。使用參數 PortName 僅用於選取一組鏈路(該鏈路是透過連接該鏈路與目標模組的埠來識別的)。

ClearSelection#

Command Syntax
ClearSelection [ParentHierarchy]

用於刪除所選元素(模組、階層式方塊節點、連線、註解方塊或模擬模組)的指令。

使用選用參數 ParentHierarchy 以取消選取該階層層級上的所有元素 ParentHierarchy.

如果您未使用 ParentHierarchy, 元素選取將被全面取消,且執行該指令後,設計中將不再有任何元素被選取。

CopySelected#

Command Syntax
CopySelected [ParentHierarchy]

用於複製層級層級中選取元素的指令 ParentHierarchy。如果您未使用選用參數 ParentHierarchy,系統將會複製目前作用中設計視窗之階層層級上所選取的元素。

DeleteSelected#

Command Syntax
DeleteSelected [ParentHierarchy]

用於刪除階層層級上選取元素的指令 ParentHierarchy。只會刪除您在以下項目下指定的階層層級所選取模組 ParentHierarchy ,其他層級上所選取的模組則會保留。如果您未使用選用參數 ParentHierarchy,系統將會刪除目前作用中設計視窗之階層層級上所選取的元素。

CutSelected#

Command Syntax
CutSelected [ParentHierarchy]

用於剪下階層層級上選取元素的指令 ParentHierarchy。如果您未使用選用參數 ParentHierarchy,系統將會剪下目前作用中設計視窗之階層層級上所選取的元素。

GetSelected#

Command Syntax
GetSelected Scope [ParentHierarchy]

傳回階層層級上所選取元素的清單 ParentHierarchy. 透過 Scope,您可以設定要取得已選取的模組清單(Modules)、已選取的連結清單(Links),還是已選取的模擬模組清單(SimModules),或特定留言框(CommentBoxes)。

)。如果您未使用選用參數 ParentHierarchy,系統將傳回目前作用中設計視窗之階層層級上所選取的元素。

如果您使用 Scope = Modules/SimModules/CommentBoxes, 一份 FullModuleNames (包含模組名稱在內的各模組層級路徑)將被傳回。

如果您使用 Scope = Links 您會獲得一組由以下內容組成的、用於識別連結的元組清單: FullModuleName 進行明確的生命週期管理即呼叫 PortName (該連結所連接的埠)。

Paste#

Command Syntax
Paste [ParentHierarchy] [xPos yPos]

用於將剪貼簿中的元素貼上至階層層級的指令 ParentHierarchy。(即貼上先前已複製或剪下的元素)。

)。如果您未使用選用參數 ParentHierarchy,元素將被貼到目前作用中設計視窗的階層層級中。

使用可選參數 xPos 進行明確的生命週期管理即呼叫 yPos 來定義插入內容在設計視窗中的左上角位置。

InsertModulePort#

Command Syntax
InsertModulePort FullModuleName PortName [Where]

用於在連接埠旁插入新模組連接埠的指令 PortName.

資訊

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

「Where」提供以下選項:

  • before 或 above: 新的埠號將直接插入在該埠號之前 PortName.
  • after 或 below: 新的連接埠將直接插入在該連接埠之後 PortName (預設)。

)。如果您未使用選用參數 Where,新連接埠將直接插入於連接埠 PortName.

RemoveModulePort#

Command Syntax
RemoveModulePort FullModuleName PortName

用於刪除模組連接埠的指令。

資訊

您只能刪除可以在指令中指定 Multiplicity 的連接埠 CreateModule。特定類型的連接埠將始終保留最少數量。如果嘗試進一步減少至低於最小值,將會收到對應的錯誤訊息。例如:雖然您可以刪除 Branch operator 的第三個輸出連接埠(連接埠名稱:O002),但兩個最少輸出的連接埠(O001 與 O000)無法刪除:

RemoveModulePort 指令

AppendModulePort#

Command Syntax
AppendModulePort FullHierBoxName Direction

用於在階層方塊中新增輸入連接埠或輸出連接埠的指令。

FullHierBoxName 其語法與 FullModuleName.

Direction=input:建立輸入連接埠。

Direction=output:建立了一個輸出埠。

Rename#

Command Syntax
Rename FullModuleName NewName

用於重新命名模組或模擬方塊的指令。在 NewName 中,您指定實例的新自訂名稱,而不包含階層路徑。

範例:

Rename Process0/module1 DMA

SetActiveWindow#

Command Syntax
SetActiveWindow Hierarchy

用於開啟(並設為活躍)層級結構設計視窗的指令 Hierarchy 網址:VisualApplets 。

GetActiveWindow#

Command Syntax
GetActiveWindow

傳回關於目前在 VisualApplets 中開啟並作用中的設計視窗階層層級的資訊。

模擬設計#

CreateSimSource#

Command Syntax
CreateSimSource FullSimModuleName xPos yPos

用於建立模擬來源模組,並將該模組定位在設計視窗中的指令。

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

  • HierLevelPath 您用來定義設計中特定階層層級的路徑。
  • SimModuleName 用於指定您希望模擬來源模組所採用的個別名稱。此外,您也可以保留 SimModuleName 為空。在此情況下,您必須終止 FullSimModuleName 斜線結尾;該模組將會自動命名。

函數的傳回值 CreateSimSource 為 FullModuleName 新模擬來源模組的(包含模組名稱的完整階層路徑)。

CreateSimProbe#

Command Syntax
CreateSimProbe FullSimModuleName xPos yPos

用於建立模擬探針模組,並將該模組定位在設計視窗中的指令。

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

  • HierLevelPath 您用來定義設計中特定階層層級的路徑。
  • SimModuleName 您用來指定希望模擬探針模組擁有的名稱。或者,您可以將 SimModuleName 為空。在此情況下,您必須終止 FullSimModuleName 斜線結尾;該模組將會自動命名。

函數的傳回值 CreateSimProbe 為 FullModuleName 新模擬探針模組的(包含模組名稱的完整階層路徑)。

DeleteSimModule#

Command Syntax
DeleteSimModule FullSimModuleName

用於刪除模擬模組(模擬來源或模擬探針)的指令。

的語法為 FullSimModuleName 與以下語法相同: FullModuleName.

ConnectSimModule#

Command Syntax
ConnectSimModule FullSimModuleName TargetModuleName TargetModulePortName [xPos yPos]

用於將模擬模組連接到鏈路的指令。您可透過該鏈路所連接的模組埠來識別該鏈路。

的語法為 FullSimModuleName 進行明確的生命週期管理即呼叫 TargetModuleName 與以下語法相同: FullModuleName. 的語法為 TargetModulePortName 與以下語法相同: PortName.

Module TargetModuleName 以及模擬模組 FullSimModuleName 必須位於同一層級,才能將它們相互連結。

若需如此,您可以透過以下方式定義連線上的連接點位置: xPos 進行明確的生命週期管理即呼叫 yPos.

DisconnectSimModule#

Command Syntax
DisconnectSimModule FullSimModuleName

用於將模擬模組從 Link 卸離的指令。

SetSimModuleProperty#

Command Syntax
SetSimModuleProperty FullSimModuleName Key Value {OtherValue}

用於定義模擬模組屬性的指令。

使用 Key 以識別您要設定的 Property。請按以下格式設定個別 Property。以下提供可用的 Property 與對應的數值格式:

pixelAlignmentOffset BITS

使用此參數以整數值指定對齊位移 (alignment offset) BITS.

imageFileSubPixels NUMBER

使用此參數以整數值指定指派給 Link Pixel 的檔案像素數量 NUMBER.

來源: NUMBER 像素會合併為一個像素。

探測:一個像素會分割為 NUMBER 檔案中的像素。

imageFilePixelBits BITS

使用此參數以整數值指定圖像檔案中的 Bit Width BITS。允許的值為 1、8 與 16。

imageFileNormalize CHOICE

使用此 Property 來設定儲存模擬結果圖像的方式。

如果您想要將 1-bit 模擬結果儲存為 8-bit 檔案格式,請將 imageFileNormalize 設為 1。在此脈絡下,「正規化」(Normalizing) 是指將 0 對應至 0 (黑色),並將 1 對應至 255 (白色)。

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

cropRect [imageNr] X Y WIDTH HEIGHT

此 Property 僅適用於模擬來源。指定 Image Index [imageNr] 是必要的。使用此參數來裁切圖像,並指定您要用於模擬的 ROI。透過 X 進行明確的生命週期管理即呼叫 Y 您可以定義 ROI 的左上角。

currentImage INDEX

使用此參數來選取模擬模組內的圖像。請將 INDEX 指定為整數值。

AddImage#

Command Syntax
AddImage FullSimModuleName ImageFileName1 {OtherImageFileName} [ImageLibrary]

用於將影像新增至模擬來源模組的指令。若模擬來源所連接之連結的核心元素數 > 1,則必須指定與核心元素數相等的影像數量。

您可以選擇性地指定您想要使用的 Image Library ( ImageLibrary = "Native" | "ImageMagick")。

RemoveImage#

Command Syntax
RemoveImage FullSimSourceName {ImageIndex}

用於從模擬來源模組中刪除一張或所有圖片的指令。請使用此可選參數 ImageIndex 來指定您要刪除的影像。如果您將 ImageIndex 設為 -1,或者完全不使用 ImageIndex ,系統將會刪除模擬模組中的所有影像。

Simulate#

Command Syntax
Simulate ProcessingCycles [SaveLogfilename]

用於模擬設計的指令。請使用參數 ProcessingCycles 用於指定您希望透過該指令執行多少個處理週期。

使用選用參數 SaveLogfilename 將已執行週期的記錄檔儲存至檔案。請在 SaveLogfilename 中指定檔案路徑以及檔案名稱本身。由於記錄檔是以 HTML 格式寫入,因此請使用 *.html 副檔名。請使用正斜線來表示路徑。

範例:

Simulate 1 c:/temp/simlog.html

ResetSimulation#

Command Syntax
ResetSimulation

用於重置模擬引擎的指令。執行此指令後,設計中的所有模擬探針將會被清除。

GetSimModuleProperty#

Command Syntax
GetSimModuleProperty FullSimModuleName Property [ImageIndex [LineIndex [LineCount] ] ]

用於擷取模擬模組屬性的指令。可用的屬性如下:

  • isConnected: 若模擬模組已連接至某條鏈路,則返回 1;否則返回 0。
  • connectedLink: 返回一個包含以下內容的清單: FullModuleName 該連結所連接的模組,以及該連結所連接的模組埠。回傳值總是透過實際的模組埠來描述該連結,也就是說,它絕不會指定一個內部 H 框節點(例如, INBOUND#I000 或 OUTBOUND#O000)。
  • isSource: 若模擬模組為 SimulationSource; 否則返回 0。
  • isProbe: 若模擬模組為 SimulationProbe; 否則返回 0。
  • position: 將程式視窗中模擬模組的位置以清單形式返回 (xPos, yPos)。
  • imageCount: 回傳模擬模組中的影像數量(即 IMAGECOUNT)。
  • imageSize: 使用參數 ImageIndex 此參數為必填。回傳您在 ImageIndex 以清單形式呈現 {Width <WIDTH> Height <HEIGHT>}.
  • pixelAligmentOffset: 傳回對齊偏移量的整數值 BITS.
  • imageFileSubPixels: 返回分配給某個連結像素的檔案像素數量,並以整數值表示 NUMBER.
  • imageFilePixelBits: 將影像檔案中的位元寬度設定以整數值形式回傳 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#

Command Syntax
SetSimImageData FullSimModuleName ImageIndex KernelRow KernelCol Component X Y Width Value {OtherValues}

用於在模擬模組(來源或探針)中覆寫影像中一個像素或多個相鄰像素的指令。

您可以使用這個命令_

  • 在 SimSources 中修改用於模擬的影像。
  • 在 SimProbes 中將影像內 Resultados 視覺化。

影像的修改是暫存的。一旦您選取同一模擬模組的另一張影像,或重新選取已修改的影像,系統便會從硬碟重新載入該影像,而您的修改內容將被捨棄。(若您輸入建立新影像的指令,即表示您選取了另一張影像) ImageIndex (同一模擬模組)在 TCL 控制台中,或者在VisualApplets 圖形使用者介面(GUI)的檢視器中,點擊該模擬模組的另一張圖片時。)

不過,只要將已修改的圖片以新檔名儲存,且該圖片仍處於活躍狀態,即可將修改內容永久保留。

您可以使用暫存修改過的影像進行模擬。不過,每個 SimSource 模組在修改狀態下僅能使用一張影像進行模擬(因為在同一個 SimSource 中修改另一張影像,會重置您先前修改過的影像的像素值)。只要每個模擬模組僅使用一張暫存修改過的影像,您就可以使用任意數量的暫存修改過的影像進行模擬。

每個像素一個數值: Command SetSimImageData 允許您針對每個像素寫入且僅寫入一個值。因此,在灰階像素中,您必須執行指令 SetSimImageData 只需執行一次,即可寫入每個像素的完整色彩資訊。在彩色像素中,您每次只能寫入三個色彩成分中的其中一個。因此,若要變更彩色像素的所有三個色彩成分,您必須執行以下指令: SetSimImageData 三次。

寫入帶有核心 (Kernel) 的影像: 當您對具有核心的圖像進行寫入時,必須指定(除了要覆寫的(第一個)像素的精確位置之外),在使用該指令時,您要覆寫的相關像素所對應的核心元素為何 SetSimImageData. 若要覆寫所有核心元件,必須執行以下指令 SetSimImageData 正是如此 KernelRow * KernelCol 次。

若要使用此指令:

在使用此指令之前,請關閉要變更之影像所在的模擬模組 (Simulation Module) 影像檢視器。

使用索引指定您要修改的影像 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 以指定要變更像素值的核心元素 (Kernel Element)。

您可以在模擬模組所連接之連結的「連結屬性」中,查看該模擬影像的核心大小。若某個連結的核心大小大於 1 像素,該連結前端必定會接有一個可指定核心的運算子實例(例如運算子 FIRkernelNxM)。

核心欄 (Kernel Columns) 與核心列 (Kernel Rows) 的計數從 0 開始。因此,如果您的核心只有一個元素,請將這兩個值 (KernelRow 進行明確的生命週期管理即呼叫 KernelCol) 設為 0:

SetSimImageData 指令:計算核心欄與核心列

對於具有 4 個元素的核心,您識別個別核心元素的方式如下:

Command SetSimImageData:識別 4 個元素中的核心元素

對於具有 9 個元素的核心,您識別個別核心元素的方式如下:

Command SetSimImageData:識別 9 個元素中的核心元素

使用參數 Component 用以指定您要設定的像素之色彩成分。在灰階影像中,請設定 Component 設為 0。在多分量影像(彩色)中,透過其在色彩模型中的位置指定您要寫入的分量。範例:將 Component 設為 0(如果您想定址 RGB 影像中的紅色分量),將 Component 設為 1(如果您想定址 RGB 影像中的綠色分量),或者將 Component 設為 2(如果您想定址 RGB 影像中的藍色分量)。

設定位置 (X,Y) 以定義影像內寫入的起點(第一個像素)。

使用 Width 用於指定每列要覆寫的相鄰像素數量。如果您指定的 Values 大於您在一列中寫入的像素 (Width),寫入將會在下一列的位置 X繼續。透過這種方式,您可以寫入具有寬度的感興趣區域 (ROI) Width.

指定個別像素值 Value {OtherValues} 以十六進位形式表示,且不需在前面加上「0x」。負數請以二補碼表示法表示。您在 Value {OtherValues} 中指定的數值數量決定了影像內有多少像素會被更改。

GetSimImageData#

Command Syntax
GetSimImageData FullSimModuleName ImageIndex KernelRow KernelCol Component X Y [Width [Height]]

用於在模擬模組(來源或探針)中讀取影像中一個或多個相鄰像素數值的指令。

每個像素一個數值: Command GetSimImageData 每一個像素會精確地返回一個值。因此,在灰階像素中,您必須執行指令 GetSimImageData 只需執行一次,即可取得每個畫素的完整色彩資訊。在彩色畫素中,您每次僅能取得每個畫素的三個色彩成分之一。因此,若要讀取彩色畫素的所有三個色彩成分,您必須執行以下指令: GetSimImageData 三次。

讀取具有核心的影像: 當您從具有核函數的影像中讀取資料時,在使用該指令時,除了必須指定要讀取的(第一個)像素的確切位置外,還必須指定您要讀取該像素(或這些像素)的哪個核函數元素 GetSimImageData. 若要讀取所有核心元素,必須執行以下指令 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 元素。

您可以在與模擬模組連接之 Link 的 Link Properties 中查看模擬影像的 Kernel 大小。Kernel 大小大於 1 個元素的 Link 前面總是會加上一個允許指定 Kernel 的 operator 實例(例如 operator FIRkernelNxM)。

Kernel 的欄 (Column) 和列 (Row) 從 0 開始計數。因此,如果您只有一個元素的 Kernel,請將這兩個值都設為 0。

GetSimImageData 指令:計算 Kernel Columns 與 Kernel Rows

對於具有 4 個元素的核心,您識別個別核心元素的方式如下:

GetSimImageData 指令:在 4 個元素中識別 Kernel 元素

對於具有 9 個元素的核心,您識別個別核心元素的方式如下:

GetSimImageData 指令:在 9 個元素中識別 Kernel 元素

使用參數 Component 來指定您要讀取的像素色彩分量。對於灰階影像,請將 Component 設為 0。對於多重分量影像(色彩),請透過其在色彩模型中的位置來指定您要讀取的分量。範例:設定 Component 為 0,如果您想讀取 RGB 影像中的紅色分量;設定 Component 為 1,如果您想讀取 RGB 影像中的綠色分量;或者設定 Component 為 2,如果您想讀取 RGB 影像中的藍色分量。

設定位置 (X,Y) 來定義您在影像中讀取的起點(第一個像素)。

如果您不使用參數 Width,將會傳回正好一個像素的值。如果您只指定 Width, Width 行中的值 Y 將會被傳回。如果您指定 Width 進行明確的生命週期管理即呼叫 Height, Width * Height 將傳回對應的值。使用 Width 進行明確的生命週期管理即呼叫 Height 可讓您定義要讀取其像素值 (gray)/像素分量值 (color) 的感興趣區域 (ROI)。

個別像素的數值會以十六進位制表示,且不加前綴「0x」。負數則以二補碼表示法回傳。

GetSimImageProperty#

Command Syntax
GetSimImageProperty FullSimModuleName Property ImageIndex [LineIndex [LineCount] ]

用於檢索模擬影像屬性(在來源或探針模組中)的指令。

以下是 Property 現已提供:

LineWidth: 透過以下方式定義 LineIndex 您想查詢哪一行寬度的資訊。如果您使用 LineCount, 您可以取得多個寬度值(以清單形式呈現)。第一個值即為該行的寬度 LineIndex.

SaveImage#

Command Syntax
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

Building the Design#

Drc#

Command Syntax
Drc [SaveLogfileName]

用於啟動第一級設計規則檢查 (DRC 1) 的命令。

若要取得記錄輸出,您可以在參數中選擇性指定 HTML 記錄檔 (*.html) 的路徑與名稱 [SaveLogfileName].

Drc2#

Command Syntax
Drc2 Name Platform

用於啟動第二級設計規則檢查 (DRC 2) 的命令。

若要取得記錄輸出,您可以在參數中選擇性指定 HTML 記錄檔 (*.html) 的路徑與名稱 [SaveLogfileName].

SelectBuildConfiguration#

Command Syntax
SelectBuildConfiguration ConfigurationName

用於將已儲存的建置組態選取為作用中建置組態的命令。

在參數中指定所需建置組態的名稱 ConfigurationName.

若要檢視所有可用建置組態的概覽,請輸入 SelectBuildConfiguration ? - 隨即會傳回所有可用建置組態名稱的清單。目前選取的建置組態會顯示在清單的第一個項目中。

範例:

SelectBuildConfiguration 命令

此命令會傳回目前選取的建置組態名稱。透過此傳回值,您可以檢查重新設定建置組態是否成功。

範例:

SelectBuildConfiguration 輸出

Build#

Command Syntax
Build [SaveLogfilename [MaxTime] ]

用於啟動建置流程的指令。

若要取得記錄輸出,您可以在參數中選擇性指定 HTML 記錄檔 (*.html) 的路徑與名稱 [SaveLogfileName].

若要為建置程序設定時間限制,您可以選擇在參數中指定最大建置時間 [MaxTime] (以小時為單位)。參數 [MaxTime] 的型別為浮點數。透過這種方式,您可以指定小數點小時。預設設定為 [MaxTime] 為 24 小時。

建立記錄檔的指令範例 build_log.html 並將最大建置時間指定為 ½ 小時:

Build build_log.html 0.5

處理檔案、路徑、程式執行個體與訊息#

Source#

Command Syntax
Source FilePath

用於從檔案中執行 TCL 腳本的指令。請使用正斜線指定路徑。此指令的運作方式與 TCL 指令相同 source,但會自動替換以下佔位符(例如 command 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#

Command Syntax
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#

Command Syntax
GetAbsolutePath Path

傳回您在參數中指定的路徑之絕對路徑 Path.

此命令會自動替換與命令相同的別名(佔位符)。 MakeDirectoryPath.

您可以參考 Path 指向不存在的目錄或檔案,以便產生的路徑名稱指向不存在的目錄或檔案。

Wait#

Command Syntax
Wait TimeInMilliseconds

用於等待指定時間的命令 TimeInMilliseconds。在等待時間內,VisualApplets GUI 保持作用中狀態。

如果您將 TimeInMilliseconds 若設定為 0,則 GUI 的至少一次事件迴圈更新將由 `VisualApplets` 執行。您可以利用此功能來確保 GUI 會顯示先前指令的結果。

Message#

Command Syntax
Message Type Code Text

用於發出

  • 錯誤訊息(Type=error)、
  • 警告(Type=warning)或
  • 資訊性訊息(Type=info)

在 Code, 請為您的訊息定義訊息代碼。 Code 其數值範圍為 -999 至 +999。請僅使用此範圍內的數值,以避免與 VisualAppets 的現行及/或未來版本發生衝突。

使用 Text 以輸入訊息。系統會自動以句點結束該訊息。

Exit#

Command Syntax
Exit [Mode]

用於終止目前 VisualApplets 工作階段的命令。即使您仍開啟設計,也可以使用 Exit 。不過,在此之前別忘了儲存您的變更。

如果您仍開啟設計且該設計包含未儲存的變更:

  • 如果您將選用參數 Mode 設為 Discard,即使開啟的設計包含尚未儲存的變更,它仍會被關閉。未儲存的變更將會遺失。
  • 如果您使用 Exit 不使用參數 Mode 即使開啟的檔案中尚有未儲存的變更,該指令仍會中止執行,並顯示相應的錯誤訊息。