跳至內容

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

使用此指令可輸入目前載入之設計的 Design Properties。

您可以使用四個鍵:

  • ProjectName (您要給予專案的名稱)
  • Version (設計版本)
  • Description (專案描述)。
  • TargetRuntime (請在此指定將在主機 PC 上執行此 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,只需明確指出您要從中建立執行個體的特定 operator 名稱。您不必指定 operator 所屬的 library。

使用 FullModuleName 您可以定義模組在設計中的階層位置。

FullModuleName 具有以下語法:

<HierLevelPath>/<ModuleName>

  • HierLevelPath 可用於定義設計中特定階層層級的路徑。從 process 層級開始。請使用正斜線。
  • ModuleName 用於指定您希望模組擁有的名稱。或者,您也可以將 ModuleName 留空。在這種情況下,您必須終止 FullModuleName 斜線結尾;該模組將自動命名。

您透過參數定義模組在設計視窗中的位置 xPos 和 yPos.

範例:

CreateModule CxpCamera Process0/cam 123 163

函數的傳回值 CreateModule 為 FullModuleName (即模組的完整階層路徑,包含模組名稱)。

使用選用參數 InPortMultiplicity 和 OutPortMultiplicity:

許多運算子在具現化(instantiated)時具有固定的連接埠數量。另一方面,也有運算子具有可變的連接埠數量。在具現化具有可變連接埠數量的運算子時,您可以定義模組將擁有的連接埠數量。

例如,在實例化運算子時 BRANCH時,您可以定義執行個體將擁有的輸出連接埠數量:

Command CreateModule: Enter Outputs

因此,輸出連接埠 O 的數量是可變的。我們將具有可變數量的連接埠稱為多重連接埠(multiports)。

多重連接埠是透過其基本名稱(base name)來識別。例如,在 BRANCH中,輸出連接埠的基本名稱為 O。透過新增至基本名稱的索引,可以識別並定址特定的連接埠:

Command CreateModule: Multiports

當使用命令 CreateModule,您可以使用選用值對 InPortMultiplicity 和 OutPortMultiplicity 來指定模組的向量輸入和向量輸出的多重性。透過這種方式,您可以定義具有可變連接埠數量的 operator 執行個體(模組)中的連接埠數量,例如 operator BRANCH 或 ADD.

範例:

CreateModule BRANCH Process0/branchz 1 3 43 123

Command CreateModule: Example BRANCH with 3 Output Ports

預設值:如果您不使用 InPortMultiplicity 和 OutPortMultiplicity,或者如果您將它們設為 0,模組將以預設的輸入和輸出連接埠數量建立(也就是說,將兩個值中的一個或兩個設為 0 並不會導致零輸入連接埠或零輸出連接埠)。預設建立多少個連接埠取決於 operator 類型。

範例:

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 個輸入連接埠的定義會被忽略,因為該 operator 類型只允許 1 個輸入。

CreateModule BRANCH Process0/branch4 0 4 43 123

Command CreateModule: Example BRANCH with 4 Output Ports

選用參數 NamedPortMultiplicity: 對於擁有各類多埠的運算子(即除了輸入 I 或輸出 O 之外還擁有其他多埠的運算子),您可以使用參數 NamedPortMultiplicity 來指定您希望在模組上擁有的多重連接埠的基本名稱,並指定此多重連接埠的多重性(數量)。格式為 NamedPortMultiplicity 為 MultiportBaseName:Number。您可以在 NamedPortMultiplicity 中多次使用同一個命令列。使用 NamedPortMultiplicity 將會覆蓋您在參數中所指定的任何內容 InPortMultiplicity 或 OutPortMultiplicity.

範例:

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

以下範例命令的轉譯結果如下:建立運算子的執行個體(模組) BRANCH。將其置於頂層的 process 0 中,並命名為 branch。提供三個輸出連接埠(多重連接埠基本名稱 O 代表輸出),並將設計視窗中的模組位置設為 y=100 像素、x=100 像素。

對於 MultiportBaseName,請使用您在 VA GUI 上找到的多重連接埠基本名稱。 MultiportBaseName 名稱會顯示在具備可變連接埠數量的運算子執行個體化時所彈出的對話方塊中。多重連接埠基本名稱是多重連接埠的簡短名稱(顯示在 GUI 的括號中)。

Command CreateModule: Enter Inputs

此處的多重連接埠基本名稱為 I.

您也可以在連接埠的滑鼠懸停資訊中找到多重連接埠基本名稱:

Command CreateModule: Multiport Mouseover

此處的多重連接埠基本名稱為 I(後接識別多重連接埠個別執行個體的索引 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 您可用來指定設計中模組所在階層架構層級的路徑。從 process 層級開始。請使用正斜線。
  • ModuleName 您可用來指定要刪除的模組名稱。

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

ConnectModules#

指令語法
ConnectModules FromModule FromModuleOutputPort ToModule ToModulePort [x1 [y2 x3]]

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

參數 FromModule 和 ToModule 是具有以下語法的階層式名稱: <HierLevelPath>/<ModuleName>.

內部階層方塊節點(即用於連接階層方塊連接埠的內部節點)透過以下前綴識別 INBOUND# 或 OUTBOUND#.

範例:下圖中階層方塊的兩個入站節點必須透過 INBOUND#I000 和 INBOUND#I001.

Command ConnectModules: Inbound Connections

透過選用參數 x1, y2的狀態,以及 x3 您可以定義連接多邊形的幾何形狀:從以下位置的水平線 FromModuleOutputPort 至 X 位置 x1,垂直線至 Y 位置 y2,水平線至 X 位置 x3,垂直線至高度 ToModulePort,水平線至 ToModulePort.

Command ConnectModules: Geometry of the Connecting Polygon Example 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 可用於定義設計中特定階層層級的路徑。從 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: Example for Editing Parameters

輸入指令

SetModuleParam Process0/module3 LUTcontent 4 12 13 14

會產生以下結果:

Command SetModuleParam: Example for Entering Values

指令 SetModuleParam 具有與(取決於您使用的參數)指令 SetParamInt, SetParamFloat, SetParamEnum, SetParamString, SetParamIntField的狀態,以及 SetParamFloatField相同的功用。然而,這些指令僅用於匯出。

使用 SetModuleParam 當您手動編寫指令碼時。

例外:如果您想新增新的後設資料參數,您必須使用 SetParamString 手動編寫指令碼時。請參閱以下指令定義 SetParamString.

SetModuleParamProperty#

指令語法
SetModuleParamProperty FullModuleName ParameterName PropertyName PropertyValue {OtherPropertyValue}

用於變更模組 Property 的指令。此指令可能會取代 SetModuleParamType。單一 Property 名稱可能具有多個值。您可以變更下列 Property:

access:您可以在此處列出多個旗標作為值:

  • write:如果可以在此方向切換參數(例如在 operator LinkParamTranslator中),它會變成寫入參數。
  • read:如果可以在此方向切換參數(例如在 operator LinkParamTranslator),它會變成讀取參數。
  • dynamic:如果參數可以是動態或靜態,則它會在此變成動態參數(這會取代指令 SetParamDynamic)。
  • static:如果參數可以是動態或靜態,則它會在此變成靜態參數(這會取代指令 SetParamStatic)。

position:為參數定義整數值 PropertyValue,其定義了參數在階層式方塊中的參數清單中的位置。

SetParamInt#

指令語法
SetParamInt FullModuleName ParameterName Value

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

資訊

此指令用於從 VisualApplets 匯出 TCL 至 *.tcl 檔案。

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

SetParamFloat#

指令語法
SetParamFloat FullModuleName ParameterName Value

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

資訊

此指令用於從 VisualApplets 匯出 TCL 至 *.tcl 檔案。

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

SetParamEnum#

指令語法
SetParamEnum FullModuleName ParameterName Value

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

範例(針對 operator 的實例 SetSignalStatus 其位於層級 Process0 且名稱為 SetSigSt):

SetParamEnum Process0/SetSigSt Mode High

設定參數 Mode 的 operator SetSigSt 其位於 Process0 設定為 High.

資訊

此指令用於從 VisualApplets 匯出 TCL 至 *.tcl 檔案。

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

SetParamString#

指令語法
SetParamString FullModuleName ParameterName Value

使用此指令為特定模組定義 metadata 參數。

在 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 匯出。用於將 Property 設為靜態的指令。如果 Property 可以是靜態或動態,在大多數情況下,該 Property 預設會設為動態。請使用此指令將此類 Property 設為靜態。

資訊

此指令用於從 VisualApplets 匯出 TCL 至 *.tcl 檔案。

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

SetParamDynamic#

指令語法
SetParamDynamic FullModuleName ParameterName

僅用於 TCL 匯出。用於將 Property 設為動態的指令。僅在該 Property 本身可以為動態時才有效。

資訊

此指令用於從 VisualApplets 匯出 TCL 至 *.tcl 檔案。

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

SetModuleParamType#

指令語法
SetModuleParamType FullModuleName ParameterName TypeFlag {OtherTypeFlags}

用於變更參數類型的指令。可使用下列類型旗標:

  • Dynamic:如果 Property 可以是動態或靜態,此旗標會將 Property 設為動態 Property(取代指令 SetParamStatic)。
  • Static:如果 Property 可以是動態或靜態,此旗標會將 Property 設為靜態 Property(取代指令 SetParamStatic)。

Dynamic 和 Static 互斥。

當使用類型旗標 Dynamic 或 Static時,此指令具有與指令相同的 SetParamStatic 和 SetParamDynamic功能。但是,請使用 SetModuleParamType 當您手動編寫指令碼時。

SetLinkParam#

指令語法
SetLinkParam FullModuleName PortName ParameterName Value {OtherParameterName OtherParameterValue}

用於設定連結格式的指令。連結是透過模組的連接節點(連接埠)來識別。連結格式 Property 的名稱與 VisualApplets GUI 中的名稱相同。

資訊

當您手動撰寫 TCL 腳本時,此指令僅適用於可以變更的 Property。如果您嘗試設定無法變更的連結 Property,您將會收到相應的錯誤訊息:

Command SetLinkParam: Example

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.

對於每個 sub-module,都會列出完整的階層名稱。

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 以定義排序模式。您有以下選項:
    • 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:傳回該模組所屬之運算子實例的名稱,例如 BRANCH.
  • operatorType:傳回運算子類型(O、P、M、unknown)。階層式方塊和使用者程式庫模組會傳回 "Unknown"。
  • libraryType:傳回運算子來源程式庫的程式庫類型。會傳回下列其中一個值: operator, user, custom.
  • version:傳回該模組所屬之運算子實例的版本。
  • type:傳回模組類型。會傳回下列其中一個值: process, hierBox, operator, user, custom.
  • isHierModule:若指定的模組能夠包含子模組,則傳回 1;若指定的模組無法包含子模組,則傳回 0。
  • isProtected:若該模組是受保護庫元素的執行個體,則傳回 1。
  • library:傳回運算子來源程式庫的名稱。
  • position:以 list 形式傳回設計視窗中的位置(xPos, yPos)。
  • resources:傳回成對清單(ResourceName,ResourceMapping)
  • name:傳回模組名稱。

GetModuleParams#

指令語法
GetModuleParams FullModuleName {ParameterNames}

傳回模組參數及其目前值的清單。

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

範例:

Command GetModuleParams: Example

若您只想取得特定參數的值,您可以選擇將輸出限制為參數 {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 參數的狀態。
  • isDynamic:若要求的參數是動態的,則傳回 1;否則傳回 0。
  • isStatic:若要求的參數是靜態的,則傳回 1;否則傳回 0。
  • isEditable:若要求的參數可編輯,則傳回 1;否則傳回 0。

GetLinkParams#

指令語法
GetLinkParams FullModuleName PortName {ParameterNames}

傳回特定 Link 的 Link Parameter 名稱及其目前設定值的清單。Link 是透過模組的連接節點(埠)來識別。傳回的清單會列出值對 <ParameterName><Value> ,其對應於您用來透過以下方式設定 Link Parameter 的值對 SetLinkParam.

若您想要取得 Link 的所有參數以及目前設定值,請使用指令 GetLinkParams 僅適用於參數 FullModuleName 和 PortName.

若您只想取得特定參數的值,您可以選擇將輸出限制為參數 {ParameterNames}。輸出順序對應於您在 {ParameterNames}.

範例:

Tcl Command GetLinkParams: Example

GetLinkParamProperty#

指令語法
GetLinkParamProperty FullModuleName PortName ParameterName Property

此指令會擷取特定鏈結參數的 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定址階層方塊的連接埠,只要階層方塊內有通往或來自此連接埠的連線,該指令就能正常運作。

參數有以下選項 Property 值可供使用:

  • status: 如果一切正常(也就是說,連線來源和連線目標的參數設定相符,且 DRC 未發現錯誤),則傳回 0;否則傳回錯誤代碼。
  • from: 傳回連線的起點。起點可以是前置模組的 out 連接埠,或是連線所連接的內部階層方塊節點 (INBOUND#...) 連線所連接的對象。此指令會傳回包含兩個值的清單 FullModuleName 和 PortName.
  • to: 傳回連線的終點。終點可以是後續模組的 in 連接埠,或是內部階層方塊節點 (OUTBOUND#...) 連線所連接的對象。此指令會傳回包含兩個值的清單 FullModuleName 和 PortName.
  • source: 傳回包含值對的清單 FullModuleName 和 PortName ,適用於直至連線來源的所有前置連線。系統會從您在以下項目中指定的模組開始,透過階層反向追蹤連線鏈 FullModuleName 返回起點。傳回清單中元素的順序對應於查詢的反向歷程(來源模組為清單中的最後一個項目)。
  • dest: 傳回包含值對的清單 FullModuleName 和 PortName ,適用於直至連線目標模組的所有後續連線。系統會從您在以下項目中指定的模組開始,透過階層正向推進連線鏈 FullModuleName 直到終點 (sink)。傳回清單中元素的順序對應於查詢的正向歷程 – 目標模組 (destination) 為清單中的最後一個項目。
  • 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 boxes)。該指令會傳回包含您透過參數指定之特徵的所有註解方塊列表 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.

資訊

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

其中提供以下選項:

  • before 或 above:直接在 Port 之前插入新 Port PortName.
  • after 或 below:直接在 Port 之後插入新 Port PortName (預設值)。

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

RemoveModulePort#

指令語法
RemoveModulePort FullModuleName PortName

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

資訊

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

指令 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 您可以用來指定您希望模擬來源 Module 擁有的自訂名稱。或者,您可以保留 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]

用於將模擬 Module 連接到 Link 的命令。您透過 Link 連接到的 Module Port 來識別該 Link。

的語法為 FullSimModuleName 和 TargetModuleName 與以下語法相同 FullModuleName。以下項目的語法 TargetModulePortName 與以下語法相同 PortName.

Module TargetModuleName 與模擬 Module FullSimModuleName 必須位於相同的階層中,才能將它們相互連接。

您也可以透過以下方式定義連結上連接點的位置: xPos 和 yPos.

DisconnectSimModule#

指令語法
DisconnectSimModule FullSimModuleName

用於從連線中斷開模擬模組的指令。

SetSimModuleProperty#

指令語法
SetSimModuleProperty FullSimModuleName Key Value {OtherValue}

用於定義模擬模組 Property 的指令。

使用 Key 來識別您要設定的 Property。請以如下規定的格式設定個別 Property。以下提供可用的 Property 及其對應的值格式:

pixelAlignmentOffset BITS

使用此參數將對齊偏移量指定為整數值 BITS.

imageFileSubPixels NUMBER

使用此參數將指定給連線像素的檔案像素數量指定為整數值 NUMBER.

Source: NUMBER 像素被合併為一個像素。

Probe:一個像素被分割為 NUMBER 檔案中的像素。

imageFilePixelBits BITS

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

imageFileNormalize CHOICE

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

如果您想將 1-bit 模擬結果儲存為 8-bit 檔案格式,請將 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 中的另一個影像會重設您先前變更的影像的像素值)。只要每個模擬模組只有一個暫時變更的影像,您就可以隨心所欲地使用任意數量暫時變更的影像來進行模擬。

每個 Pixel 一個值: 指令 SetSimImageData 允許您為每個像素寫入剛好一個值。因此,對於灰階像素,您必須執行指令 SetSimImageData 剛好一次以寫入每個像素的完整色彩資訊。對於彩色像素,您將只能為每個像素寫入三個色彩分量中的一個。因此,如果您想要變更彩色像素的所有三個色彩分量,您必須執行指令 SetSimImageData 三次。

使用 Kernel 寫入影像:當寫入帶有 Kernel 的影像時,除了指定要覆寫之(第一個)像素的確切位置外,還必須在使用以下指令時指定要覆寫各別像素的哪個 Kernel 元素: SetSimImageData。如果您想要覆寫所有核心元素,您必須執行指令 SetSimImageData 剛好 KernelRow * KernelCol 次。

要使用此指令:

在使用該指令之前,請先關閉模擬模組中包含您要變更之影像的影像檢視器。

請使用索引指定您要修改的圖片 ImageIndex.

ImageIndex 從 0 開始編號,而VisualApplets 圖形使用者介面中模擬模組的圖片編號則從 1 開始。兩者的對應關係如下:

ImageIndex = 0 指的是VisualApplets 圖形使用者介面(GUI)檢視器中的圖像 1。

ImageIndex = 1 指的是VisualApplets 圖形使用者介面(GUI)檢視器中的圖片 2。

ImageIndex = 2 參見圖 3

等等。

資訊:在 VisualApplets 的 GUI 上,下一個模擬循環中所使用影像的索引會顯示在方括號中,並以前置的 "sim" 標記(例如 sim[2])。

使用 KernelRow 和 KernelCol 用以指定您要變更其像素值的核心元素。

您的模擬影像具有什麼大小的核心,您可以從模擬模組連接到的 Link 的 Link Properties 中查看。核心大小大於 1 個像素的 Link 前面總是會加上允許指定核心的運算子實例(例如運算子 FIRkernelNxM)。

計數核函數的列數和行數時,均從 0 開始。因此,若您有一個僅含一個元素的核函數,請將這兩項值皆設定為 (KernelRow 和 KernelCol) 至 0:

SetSimImageData 指令:計算 Kernel Columns 和 Kernel Rows

對於由 4 個元素組成的核,可依下列方式識別個別的核元素:

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

對於一個包含 9 個元素的核,可依下列方式識別個別的核元素:

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

使用參數 Component 以指定您要設定的像素色彩分量。在灰階影像中,設定 Component 設為 0。在多組分影像(彩色)中,請透過其在色彩模型中的位置來指定要寫入的組分。範例:設定 Component 若要處理 RGB 影像中的紅色成分,請將其設為 0,設定 Component 若要處理 RGB 影像中的綠色成分,請將其設為 1,或設定 Component 若要處理 RGB 影像中的藍色成分,請將數值設為 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]]

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

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

使用 Kernel 讀取影像:當從帶有 Kernel 的影像讀取時,除了指定要讀取之(第一個)像素的確切位置外,還必須在使用以下指令時指定要讀取各別像素的哪個 Kernel 元素: GetSimImageData. 若要讀取所有核心元素,必須執行以下指令 GetSimImageData 剛好 KernelRow * KernelCol 次。

要使用此指令:

指定具有索引 ImageIndex.

ImageIndex 從 0 開始編號,而VisualApplets 圖形使用者介面中模擬模組的圖片編號則從 1 開始。兩者的對應關係如下:

ImageIndex = 0 指的是VisualApplets 圖形使用者介面(GUI)檢視器中的圖像 1。

ImageIndex = 1 指的是VisualApplets 圖形使用者介面(GUI)檢視器中的圖片 2。

ImageIndex = 2 指的是 VisualApplets GUI 檢視器中的影像 3,

等等。

資訊:在 VisualApplets 的 GUI 上,下一個模擬循環中所使用影像的索引會顯示在方括號中,並以前置的 "sim" 標記(例如 sim[2])。

使用 KernelRow 和 KernelCol 以指定您要讀取的核心元素。

您可以在模擬模組所連接之連線的連線 Property 中查看模擬影像的核心大小。核心大小大於 1 個元素的連線,其前方通常會冠以允許指定核心的 operator 實例(例如 operator FIRkernelNxM)。

核心的行與列計算從 0 開始。因此,如果您的核心只有一個元素,請將兩個值都設為 0。

GetSimImageData 指令:計算 Kernel Columns 和 Kernel Rows

對於由 4 個元素組成的核,可依下列方式識別個別的核元素:

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

對於一個包含 9 個元素的核,可依下列方式識別個別的核元素:

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

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

設定位置 (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 ? - 系統會傳回所有可用建置組態名稱的清單。目前選取的建置組態會顯示在清單的第一個項目中。

範例:

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%:根據 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.

此指令會自動取代與 command 相同的別名(預留位置) 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 儘管開啟的設計包含未儲存的變更,命令仍會終止,並且您會收到對應的錯誤訊息。