Python Command Reference#
資訊
本參考指南說明了用於在內嵌 Python 直譯器中設計、模擬與建構 VisualApplets 設計的 Python 函數。此處記載的所有 Python 函數皆區分大小寫。檔案路徑以及指定設計元素中的階層路徑時,請使用正斜線(/)。
圖表中的位置參數 每當函數需要設計視窗中的位置時,會使用 Python tuple (x, y) 。
連接埠/連線識別 連線與模組連接埠是透過多元組來識別 (full_module_name, port_name). full_module_name 具有以下語法: <HierLevelPath>/<ModuleName>.
<HierLevelPath>指定設計中模組所在階層架構的路徑。從處理程序層級開始。請使用正斜線。<ModuleName>指定模組的名稱。
傳回值 除非另有說明,否則函式會傳回 None (如果沒有特別需要傳回的內容)。有些函數在執行查詢時確實會傳回特定資料(例如清單、字串)。
列舉型別參數 在某些函式呼叫中,特定參數可以是列舉型別(例如 LinkParam.Arithmetic, LinkParam.ColorFlavor等)或該成員的字串名稱。例如, SetLinkParams 可以接受列舉成員(例如 Arithmetic.UNSIGNED)或字串(例如 "UNSIGNED")。
檔案覆寫行為 寫入檔案的函式(例如 SaveDesign, ChangePlatform)可能會包含一個布林值參數,例如 overwrite=False。如果 False,嘗試覆寫現有檔案可能會引發例外狀況。
建立、載入與儲存設計#
LoadDesign#
| 指令語法 |
|---|
LoadDesign (file_name: str) |
範例
LoadDesign("c:/VA_Python/BaseAreaGray8.va")
如果已經載入了一個設計:請在使用指令 CloseDesign 之前,透過指令 LoadDesign.
CreateDesign#
| 指令語法 |
|---|
CreateDesign (design_name: str, platform_name: str) |
用於建立具有硬體平台名稱之新設計的指令。若要指定設計的目標平台,您可以選擇使用
- 該平台的 VisualApplets 庫名稱(例如 "iF-CXP12-Q"),或者
- 平台的完整名稱(例如 "imaFlex CXP-12 Quad")。
範例
CreateDesign("MyNewProject", "iF-CXP12-Q")
SaveDesign#
| 指令語法 |
|---|
SaveDesign (file_name: str, overwrite: bool = False) |
用於在以下位置儲存設計的指令 file_name。請在 file_name 檔案路徑與檔案名稱本身。請使用斜線來表示設計檔案的路徑。
別忘了在檔案名稱中加上副檔名。
- 如果您指定副檔名 *.va 或 *.vad,您的設計將會以標準的 VisualApplets 設計格式儲存。檔案的所有內容都會被儲存。請使用 *.vad 檔案格式作為 VisualApplets 設計的主要資料格式。
如果您想要覆寫現有的檔案,請設定選用參數 overwrite 設定為 True.
範例
SaveDesign("c:/VA_Python/Project1.va")
ChangePlatform#
| 指令語法 |
|---|
ChangePlatform (platform_name: str, file_name: str, overwrite: bool = False) |
用於將當前設計轉換為另一個硬體平台的指令 platform_name 並將轉換後的設計儲存為 file_name.
在參數中指定所需硬體平台的名稱 platform_name。若要指定設計的目標平台,您可以使用
- 該平台的 VisualApplets 庫名稱(例如 "iF-CXP12-Q"),或者
- 平台的完整名稱(例如 "imaFlex CXP-12 Quad")。
在以下項目中指定 file_name 檔案路徑(使用正斜線)、檔案名稱本身以及副檔名。如果您想要覆寫現有的檔案,請設定選用參數 overwrite 設定為 True.
範例
ChangePlatform("iF-CXP12-Q", "c:/VA_Python/ConvertedDesign.va")
CloseDesign#
| 指令語法 |
|---|
CloseDesign (discard: bool = False) |
用於關閉目前開啟的設計的指令。
如果您設定選用參數 discard 設定為 True,即使設計包含尚未儲存的變更,該設計也會被關閉。未儲存的變更將會遺失。
如果參數 discard 且 False,且設計包含尚未儲存的變更,指令將會終止,並且您會收到相應的錯誤訊息。
範例
CloseDesign(discard=True)
SetDesignProperty#
| 指令語法 |
|---|
SetDesignProperty (key: DesignProperty | str, value: str) |
使用此指令可輸入目前載入之設計的 Design Properties。
您可以使用四個鍵:
ProjectName(您要給予專案的名稱)Version(設計版本)Description(專案描述)。-
TargetRuntime(請在此指定將在主機 PC 上執行此 Applet 的作業系統,該主機 PC 運行於擷取卡上。)允許以下值:
- Win64
- Win32
- Linux64
- Linux32
的其他列舉 DesignProperty (例如 Loaded) 無法進行設定,僅能透過以下方式讀取 GetDesignProperty().
範例
SetDesignProperty("TargetRuntime", "Win64")
SetDesignProperty(DesignProperty.ProjectName, "MyProject")
SetDesignClock#
| 指令語法 |
|---|
SetDesignClock (freq_in_MHz: float) |
用於設定 FPGA 基本時脈頻率(單位:MHz)的指令。
範例
SetDesignClock(320.0)
開發設計#
CreateProcess#
| 指令語法 |
|---|
| CreateProcess ( ) |
用於建立新程序的指令。VisualApplets 會自動為新程序編號。
範例
CreateProcess()
DeleteProcess#
| 指令語法 |
|---|
DeleteProcess (process_name: str) |
用於刪除指定名稱程序的指令 process_name.
範例
DeleteProcess("Process1")
CreateModule#
| 指令語法 |
|---|
CreateModule (operator: str, full_module_name: str, mult:None | dict[str,int] = None, pos:tuple[int,int] = (0,0)) |
用於建立運算子執行個體(模組)的指令 OperatorType,並用於在設計視窗中定位該模組。
此指令具有兩個必填引數和兩個選填引數:
operator: 運算子的名稱(例如"BRANCH","NOP","Add"等)。full_module_name之後: 階層路徑 加上所需的模組名稱,例如"Process0/MyModule".mult(選用引數):使用此引數來指定連接埠的多重性。
例如:{"O": 3}在具有名為以下的輸出多重連接埠的運算子上建立 3 個輸出連接埠"O"。請參閱下文說明。pos(選用引數):一個元組(tuple)(x, y),用於指定此新模組在設計視窗中的放置位置。
範例
# A BRANCH operator with 3 output ports, placed at (43, 123)
CreateModule("BRANCH", "Process0/branchz", {"O": 3}, (43, 123))
# A simple NOP operator at position (83, 163)
CreateModule("NOP", "Process0/myNop", pos=(83,163))
使用選配參數 mult:
許多運算子在具現化(instantiated)時具有固定的連接埠數量。另一方面,也有運算子具有可變的連接埠數量。在具現化具有可變連接埠數量的運算子時,您可以定義模組將擁有的連接埠數量。
例如,在實例化運算子時 BRANCH時,您可以定義執行個體將擁有的輸出連接埠數量:

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

當使用命令 CreateModule時,您可以使用選用引數 mult 使用字典來指定模組之向量輸入與向量輸出個數的多重性,其中鍵(key)為連接埠的基本名稱,其值(value)則為連接埠的數量。透過這種方式,您可以定義具有可變連接埠數量之算子實例(模組)中的連接埠數量,例如算子 BRANCH 或 ADD.
範例
CreateModule("BRANCH", "Process0/branchz", {"O": 3}, (43, 123))

預設值:如果您不使用 mult,則建立的模組將具有預設的輸入和輸出連接埠數量。預設建立多少個連接埠取決於運算子類型。
範例
CreateModule("BRANCH", "Process0/branch", {}, (43, 123))

將建立預設數量的連接埠,即 1 個輸入和 2 個輸出連接埠。
範例
CreateModule("HierarchicalBox", "Process0/hier", {"I": 2,"O":3}, (123, 163))

InstUserLibOperator#
| 指令語法 |
|---|
InstUserLibOperator (library: str, operator: str, full_module_name: str, pos:tuple[int,int] = (0,0)) |
用於具現化使用者函式庫元素的命令。透過參數指定使用者函式庫 library,透過參數指定函式庫中的元素(運算子)名稱 operator,即您想要在設計中賦予模組的名稱,以及透過參數指定您想要將模組放置在階層架構中的位置 full_module_name,以及透過選用參數指定模組在設計視窗中的位置 pos.
範例
InstUserLibOperator("MyUserLib", "MyOperator", "Process0/MyModule", (100,100))
InstCustomLibOperator#
| 指令語法 |
|---|
InstCustomLibOperator (library: str, operator: str, full_module_name: str, pos:tuple[int,int] = (0,0)) |
用於實例化自訂程式庫元素的指令。透過參數指定使用者程式庫 library,透過參數指定函式庫中的元素(運算子)名稱 operator,即您想要在設計中賦予模組的名稱,以及透過參數指定您想要將模組放置在階層架構中的位置 full_module_name,以及透過選用參數指定模組在設計視窗中的位置 pos.
範例
InstCustomLibOperator("MyCustomLib", "MyOperator", "Process0/MyModule", (100,100))
DeleteModule#
| 指令語法 |
|---|
DeleteModule (full_module_name: str) |
用於刪除模組的指令 full_module_name.
無法透過此指令刪除模擬模組。若要刪除模擬模組,請使用指令 DeleteSimModule.
範例
DeleteModule("Process0/Branch1")
ConnectModules#
| 指令語法 |
|---|
ConnectModules (from_port: tuple[str,str], to_port: tuple[str,str], x1: int|None = None, y2: int|None = None, x3: int|None = None) |
用於連接模組連接埠的指令。
參數 from_port 和 to_port 是不定元(tuple),其語法為: (full_module_name, port_name).
full_module_name 具有以下語法: <HierLevelPath>/<ModuleName>.
範例
ConnectModules(("Process0/CxpCamera", "O"),("Process0/FrameBufferMultiRoi", "I"))

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

範例
ConnectModules(("Process0/CxpCamera", "O"),("Process0/FrameBufferMultiRoi", "I"), x1=90, y2=300, x3=120)
DisconnectModules#
| 指令語法 |
|---|
DisconnectModules (port: tuple[str,str]) |
用於刪除連接至連接埠的連結的指令 port.
範例
DisconnectModules(("Process0/cam1", "O"))
CreateComment#
| 指令語法 |
|---|
CreateComment (full_box_name: str, text: str, pos:tuple[int,int] = (0,0)) |
用於建立備忘註解方塊的指令。
的語法為 full_box_name 為 <HierLevelPath>/<BoxName>.
<HierLevelPath>定義設計中特定階層架構的路徑。從處理程序層級開始。請使用正斜線。<BoxName>指定您要賦予備忘註解方塊的名稱。
範例
CreateComment("Process0/MyComment", "This is my comment.", (400,400))
對於備忘註解方塊的內容 text 您可以使用 Unicode 字元。
您透過參數來定義備忘註解方塊在設計視窗中的位置 pos.
函數的傳回值 CreateComment 為 full_box_name (包含備忘註解方塊名稱在內的備忘註解方塊完整階層路徑)。
DeleteComment#
| 指令語法 |
|---|
DeleteComment (full_box_name: str) |
用於刪除備忘註解方塊的指令 full_box_name.
的語法為 full_box_name 為 <HierLevelPath>/<BoxName>.
<HierLevelPath>指定備忘註解方塊所在的設計階層路徑。從處理程序層級開始。請使用正斜線。<BoxName>指定您要刪除的備忘註解方塊名稱。
範例
DeleteComment("Process0/MyComment")
設定運算子和連線的參數#
SetModuleParam#
| 指令語法 |
|---|
SetModuleParam (full_module_name: str, param_name: str, value: str|int|float|list[int]|list[float], index: int = -1) |
用於設定模組參數的指令。
資訊
請僅使用此指令將現有參數設定為特定值。您無法使用此指令來建立中繼資料參數。若要建立新的中繼資料參數,請改用指令 SetParamString 。
範例
SetModuleParam("Process0/module6", "XLength", 512)
SetModuleParam("Process0/LUT1", "LUTcontent", [12, 13, 14, 15], 4)
欄位參數:若要設定欄位參數,必須提供 index 參數。
編輯欄位參數的範例:
輸入指令前,Enter values 對話方塊顯示如下:

輸入指令
SetModuleParam("Process0/module3", "LUTcontent", [12, 13, 14], 4)
會產生以下結果:

SetModuleParamProperty#
| 指令語法 |
|---|
SetModuleParamProperty (full_module_name: str, param_name: str, prop: ParamProperty|str, value: ParamTypeFlag|str|int|list[ParamTypeFlag]|list[str]) |
用於變更模組 Property 的指令,例如將其設為 dynamic 或 static。此指令可能會取代 SetModuleParamType。單一 Property 名稱可以有多個值。您可以變更以下 prop:
-
access的 Property:一個或多個旗標,例如:write:如果可以在此方向切換參數(例如在 operatorLinkParamTranslator中),它會變成寫入參數。read:如果可以在此方向切換參數(例如在 operatorLinkParamTranslator),它會變成讀取參數。dynamic:如果參數可以是動態或靜態,它在此會變成動態參數。static:如果參數可以是動態或靜態,它在此會變成靜態參數。
-
position:定義參數在多個參數中位置的整數。
範例
# Make a parameter dynamic (if supported).
SetModuleParamProperty("Process0/LinkParamTranslator1", "MyParam", "access", ["dynamic", "write"])
# Reposition a parameter in a hierarchical box
SetModuleParamProperty("Process0/hierBox", "ParamA", "position", 3)
SetParamString#
| 指令語法 |
|---|
SetParamString (full_module_name: str, param_name: str, value: str) |
使用此指令為特定模組定義 metadata 參數。
範例
SetParamString("Process0/MyModule", "MyNewMeta", "Some custom meta info.")
SetModuleParamType#
| 指令語法 |
|---|
SetModuleParamType (full_module_name: str, param_name: str, type_flag: ParamTypeFlag|str|list[ParamTypeFlag]|list[str]) |
用於變更參數類型的指令。可使用下列類型旗標:
Dynamic:如果參數可以是動態或靜態,此旗標會將參數設為動態參數。Static:如果參數可以是動態或靜態,此旗標會將參數設為靜態參數。
Dynamic 和 Static 互斥。
範例
SetModuleParamType("Process0/MyOperator", "Threshold", "Dynamic")
SetLinkParams#
| 指令語法 |
|---|
SetLinkParams(link: tuple[str,str], param_dict: dict[LinkParam|str, int|<enum>|str]) |
用於設定連結格式的指令,例如 Bit Width、Arithmetic 模式、Color Format 等。連結參數可以透過 LinkParam 列舉(例如 LinkParam.BitWidth)、透過列舉名稱(例如「BitWidth」)或透過 GUI 中的名稱(例如「Bit Width」)來識別。
link:透過已連接的模組連接埠識別 link 的不定元 `(, ) param_dict: 指定參數值對應關係的字典。連結格式參數的名稱與 VisualApplets GUI 中的名稱相同。範例金鑰:LinkParam.BitWidth,"Arithmetic"等。
範例
SetLinkParams(
("Process0/CreateBlankImage","O"),
{
"Parallelism": 4,
"ImageProtocol": "VALT_LINE1D",
"MaxImageWidth": "2048"
}
)
資訊
當您手動撰寫 Python Script 時,該指令僅適用於可變更的參數。如果您嘗試設定無法變更的連結參數,將會收到對應的錯誤訊息:

SetResourceMapping#
| 指令語法 |
|---|
SetResourceMapping (full_module_name: str, resource_name: str, new_mapping: int, index: int = -1) |
用於變更資源對模組對應關係的指令,例如「RAM」。資源 resource_name 將對應至新的索引 new_mapping。如果模組配置多個相同類型的資源,請使用選用參數 index 來選取資源。
範例
SetResourceMapping("Process0/ImageBuffer", "RAM", 1)
SplitLink#
| 指令語法 |
|---|
SplitLink (link: tuple[str,str], number: int = 2) |
用於建立模組的指令 BRANCH。新的分支模組會插入至由 link識別的連結上。新的分支模組具有 number 個輸出連接埠。如果您未使用選用參數 number,則新的分支模組將具有兩個輸出連接埠。
函數的傳回值 SplitLink 是 full_module_name 新分支模組的(通往模組的完整階層式路徑,包含模組名稱)。
範例
branchName = SplitLink(("Process0/MyModule","O"), 3)
# branchName might be "Process0/BRANCH_1"
查詢設計結構與設計細節#
GetDesignProperty#
| 指令語法 |
|---|
GetDesignProperty (key: DesignProperty|str) → str | bool |
此命令會檢索設計 Property。您可以針對以下內容使用這些數值: key:
ProjectName:專案名稱FileName:目前載入之設計檔案的完整路徑HardwarePlatform:目標硬體平台的 library 名稱,例如iF-CXP12-QVersion:設計版本Description:專案說明TargetRuntime:指定將在執行此 Applet 之主機 PC 上執行的作業系統(針對 frame grabber)Loaded:設計已載入;傳回布林值 (True/False)
Design property Loaded 可以在完全未載入設計的情況下進行要求。這不會導致錯誤訊息。在未載入設計的情況下要求任何其他 Design property 將會導致錯誤訊息。
範例
val = GetDesignProperty("ProjectName")
print(val) # e.g., "MyProject"
GetDesignClock#
| 指令語法 |
|---|
| GetDesignClock ( ) → float |
此命令會以 MHz 為單位傳回 FPGA 的基本時脈頻率,作為 float.
GetProcesses#
| 指令語法 |
|---|
| GetProcesses ( ) → list[str] |
此命令會傳回一個 list[str] ,其中包含該設計所有 process 的名稱。
範例
processes = GetProcesses()
# e.g. ["Process0","Process1"]
GetSubModules#
| 指令語法 |
|---|
GetSubModules (hierarchy_name: str) → list[str] |
此命令會傳回一個 list[str] 其中包含位於所要求階層中的 module 名稱 hierarchy_name.
對於每個 sub-module,都會列出完整的階層名稱。
範例
mods = GetSubModules("Process0")
GetParentHier#
| 指令語法 |
|---|
GetParentHier (full_element_name: str) → str |
此命令會傳回指定元素的母元素的階層名稱 (full_module_name) full_element_name亦即 full_module_name 該階層元素的名稱,其中包含元素 full_element_name 所在的位置。
full_element_name 可以是模組、模擬模組或註解方塊。
範例
parent = GetParentHier("Process0/MyModule")
GetModules#
| 指令語法 |
|---|
GetModules (scope: SearchScope|ModuleScope|str, specifier: str, module_list: list[str]|None = None) → list[str] |
此指令會根據特定條件篩選模組。該指令會回傳一個清單,其中包含符合您透過以下方式指定的特徵的模組: scope 和 specifier指定的特徵之模組。該清單包含所有找到的模組的 full_module_name (包含個別模組名稱的模組路徑)。如果您不想在整個設計中搜尋,而只想在特定的模組集合中搜尋,您可以在選用引數 module_list (透過其 full_module_name)。
scope 可以有下列值:
"Pattern": 使用specifier作為full_module_name的萬用字元運算式。如果您將 "*" 指定為識別符,則會傳回設計的所有模組。"Flat": 使用specifier作為模組full_module_name的萬用字元運算式(類似於 "Pattern")。階層式方塊將不會被傳回。"Ordered"進行字母排序:傳回設計的所有模組。使用specifier來定義排序 "Pattern"。您有以下選項:"path": 模組會根據其在設計圖中的位置進行排序(即按照資料流在模擬期間流經模組的順序)。"name": 模組會按其full_module_name.
"OperatorType": 使用specifier來定義您正在尋找的模組運算子類型("O"、"M"、"P"、"O+P"、"M+P"、"unknown")。"Operator": 用於取得特定運算子的所有執行個體。使用specifier來指定運算子名稱(例如 "NOP")。"LibraryType": 使用specifier來定義特定的函式庫類型。將傳回設計中所有屬於此類型函式庫所含運算子執行個體的模組。允許下列值:operator、user 和 custom(另請參閱GetModuleProperty)。"Library": 使用specifier來定義特定的函式庫。將傳回所有屬於此函式庫運算子執行個體的模組。"Version": 使用specifier來定義特定的運算子版本。將傳回所有屬於此版本運算子執行個體的模組。
範例
allModules = GetModules("Pattern", "*") # all modules
GetModulePorts#
| 指令語法 |
|---|
GetModulePorts (full_module_name: str, scope: PortScope|str) → list[str] |
此命令會傳回一個 list[str] 會傳回指定模組的所有連接埠名稱。您可以使用選用參數 scope 來篩選特定連接埠:
"Inputs":僅傳回輸入連接埠"Outputs":僅傳回輸出連接埠"All":傳回模組的所有連接埠(預設值)
範例
inPorts = GetModulePorts("Process0/Branch1", "inputs")
GetModulePortProperty#
| 指令語法 |
|---|
GetModulePortProperty (port: tuple[str,str], prop:PortProperty | str) |
此指令會擷取模組連接埠的 Property。下列的 prop 值可供使用:
"IsConnected":傳回布林值(True/False)。"Position":以 tuple 形式傳回指定連接埠在圖表(設計視窗)中的位置(xPos,yPos)。如果port指定了內部的階層式方塊節點,例如("Process0/HBox","INBOUND#I000"),則會傳回此節點在階層式方塊設計視窗中的位置。
GetModuleProperty#
| 指令語法 |
|---|
GetModuleProperty (full_module_name: str, prop: ModuleProperty | str) → varies |
此指令會傳回模組的 Property。
下列的 prop 值可供使用:
"Status":傳回一個整數:如果模組未處於錯誤狀態則傳回 0;否則傳回錯誤代碼。"Operator":傳回該模組所屬之運算子實例的名稱,例如BRANCH."OperatorType":傳回運算子類型(O、P、M、unknown)。階層式方塊和使用者程式庫模組會傳回 "Unknown"。"LibraryType":傳回運算子來源程式庫的程式庫類型。會傳回下列其中一個值:operator,user,custom."Version":傳回該模組所屬之運算子實例的版本。"Type":傳回模組類型。會傳回下列其中一個值:process,hierBox,operator,user,custom."IsHierModule":如果指定的模組能夠包含子模組,則傳回True;如果指定的模組無法包含子模組,則傳回False"IsProtected":如果指定的模組能夠包含子模組,則傳回True:如果該模組是受保護程式庫元素的實例,則傳回"Library":傳回運算子來源程式庫的名稱。"Position":以 list 形式傳回設計視窗中的位置(xPos,yPos)。"Resources":傳回 tuple 列表(ResourceName, ResourceMapping)"Name":傳回模組名稱。
範例
operatorName = GetModuleProperty("Process0/MyModule", "Operator")
pos = GetModuleProperty("Process0/MyModule", "Position")
GetModuleParams#
| 指令語法 |
|---|
GetModuleParams (full_module_name: str, select: list[str] | None = None) → dict |
傳回一個字典,其中鍵是參數名稱,而值則根據值類型的不同而採用相應的格式:
整數參數:int 浮點數參數:float 列舉參數:str 整數欄位:list[int] 浮點數參數欄位:list[float] 字串參數:str
如果您想取得模組的所有參數以及目前設定的值,請使用命令 GetModuleParams 僅使用參數 full_module_name.
範例:

如果您只想取得特定參數的值,您可以選擇使用選用參數來限制輸出 select.
範例:

範例
allParams = GetModuleParams("Process0/MyModule")
someParams = GetModuleParams("Process0/MyLUT", ["LUTcontent","ImplementationType"])
GetModuleParamProperty#
| 指令語法 |
|---|
GetModuleParamProperty (full_module_name: str, param_name: str, prop: ParamProperty | str) |
用於擷取參數 Property 的命令。
對於參數 prop,可提供以下值:
"Status":傳回一個整數:如果模組未處於錯誤狀態則傳回 0;否則傳回錯誤代碼。"Type": 傳回參數類型為ParamType,其可能是ParamType.Int,ParamType.Float,ParamType.Enum,ParamType.String,ParamType.IntField或ParamType.FloatField."Access": 傳回該參數是否為唯讀參數:傳回參數存取權限為ParamTypeFlag其可能是ParamTypeFlag.Write或ParamTypeFlag.Read."Unit": 傳回參數的單位。"Range": 對於整數和浮點數資料類型,此命令會傳回包含三個項目的數值範圍清單Min,Max,Step。對於列舉參數,它會傳回由列舉名稱和列舉值組成的配對清單。"Size": 傳回欄位的大小。僅適用於IntField和FloatField參數的狀態。"IsDynamic":如果指定的模組能夠包含子模組,則傳回True如果請求的參數是動態的;否則傳回False."IsStatic":如果指定的模組能夠包含子模組,則傳回True如果請求的參數是靜態的;否則傳回False."IsEditable":如果指定的模組能夠包含子模組,則傳回True如果請求的參數可以編輯;否則傳回False."Position": 以整數形式傳回在參數清單中的位置。
範例
rangeVal = GetModuleParamProperty("Process0/LUT1", "LUTcontent", "Range")
GetLinkParams#
| 指令語法 |
|---|
GetLinkParams (link: tuple[str,str], select: list[LinkParam|str]|None = None) → dict[LinkParam, (various)] |
傳回一個字典,其中鍵為以下成員: LinkParam 而對應的值則會根據鍵採用不同的格式:
BitWidth: intArithmetic: ArithmeticParallelism: intKernelColumns: intKernelRows: intImageProtocol: ImageProtocolColorFormat: ColorFormatColorFlavor: ColorFlavorMaxImageWidth: intMaxImageHeight: int
使用選用的 select 參數來提供特定查詢所需的鏈結參數清單。
範例:

範例
params = GetLinkParams(("Process0/MyModule","O"))
bw = params[LinkParam.BitWidth] # e.g. 8
範例
params = GetLinkParams(("Process0/MyModule","O"), [LinkParam.BitWidth])
bw = params[LinkParam.BitWidth] # e.g. 8
GetLinkParamProperty#
| 指令語法 |
|---|
GetLinkParamProperty (link: (str, str), param: LinkParam | str, prop: ParamProperty | str) → varies |
此指令會擷取特定鏈結參數的 Property。
參數的下列值 prop 是可能的:
Status:傳回一個整數:如果模組未處於錯誤狀態則傳回 0;否則傳回錯誤代碼。IsEditable:如果指定的模組能夠包含子模組,則傳回True如果參數值可以變更;否則傳回False.Range:- For integer data types, the command returns the value range either as a tuple containing three elements (Min, Max, Step), or as a tuple containing all allowed values. You distinguish the two kinds of tuples as follows: The Min-Max-Step tuple contains 3 tuple elements; the third tuple element is smaller or equal to the second tuple element. A tuple 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.
- 對於列舉參數,該指令會傳回由列舉名稱與列舉值組成的配對元組。
Type: 傳回參數類型:傳回ParamType.Enum用於參數LinkParam.Arithmetic,LinkParam.ImageProtocol,LinkParam.ColorFormat或LinkParam.ColorFlavor。對於任何其他鏈結參數,則會傳回ParamType.Int。
GetLinkProperty#
| 指令語法 |
|---|
GetLinkProperty (link: tuple[str,str], prop: LinkProperty|str) → varies |
此指令會傳回特定連線的特定 Property。如果您使用參數來定址階層方塊的連接埠 link,只要階層方塊內有通往或來自此連接埠的連線,此指令就能正常運作。
參數有以下選項 prop 可供使用,其中傳回型別取決於參數:
Status:傳回一個整數:如果模組未處於錯誤狀態(亦即 link 來源與 link 目標的參數設定相符,且 DRC 未發現錯誤),則傳回 0;否則傳回錯誤代碼。From: 傳回連線的起點。起點可以是前置模組的 out 連接埠,或是連線所連接的內部階層方塊節點 (INBOUND#...)。此指令會傳回包含兩個值的 tuple<FullModulenname>和<PortName>.To: 傳回連線的終點。終點可以是後續模組的 in 連接埠,或是內部階層方塊節點 (OUTBOUND#...)。此指令會傳回包含兩個值的 tuple<FullModulenname>和<PortName>.Source: 傳回包含由以下項目指定的連線之 tuplelink,適用於直至連線來源的所有前置連線。系統會從您在以下項目中指定的模組開始,透過階層反向追蹤連線鏈<FullModulenname>返回起點。傳回清單中元素的順序對應於查詢的反向歷程(來源模組為清單中的最後一個項目)。Dest: 傳回包含由以下項目指定的連線之 tuplelink,適用於直至連線目標模組的所有後續連線。系統會從您在以下項目中指定的模組開始,透過階層正向推進連線鏈<FullModulenname>直到終點 (sink)。傳回清單中元素的順序對應於查詢的正向歷程 – 目標模組 (destination) 為清單中的最後一個項目。HasConnectedSimModule:如果指定的模組能夠包含子模組,則傳回True如果模擬模組已連接至連線,則傳回;傳回False如果未連接模擬模組。ConnectedSimModule: 傳回已連接模擬模組的階層名稱。
範例
src = GetLinkProperty(("Process0/MyModule","O"), "To")
GetSimModules#
| 指令語法 |
|---|
GetSimModules (sim_type: SimModuleType|str, scope: SearchScope|str, specifier: str) → list[str] |
傳回符合給定類型/篩選條件之 simulation 模組的完整名稱。
sim_type可以是"Source"或"Probe".scope可以是"Hierarchy"或""Pattern"".specifier是用於篩選條件或階層的字串。
範例
simProbes = GetSimModules("Probe",""Pattern"","*")
GetCommentBoxes#
| 指令語法 |
|---|
GetCommentBoxes (scope: SearchScope|str, specifier: str) → list[str] |
此指令會擷取設計中的註解方塊 (comment boxes)。該指令會傳回包含您透過參數指定之特徵的所有註解方塊列表 scope 和 specifier指定的特徵之模組。該清單包含所有找到的模組的 FullElmentNames (包含方塊名稱的階層式名稱)。
scope:可以是"Hierarchy"或""Pattern"".specifier:為字串 "Pattern" 或階層名稱。
GetCommentProperty#
| 指令語法 |
|---|
GetCommentProperty (full_box_name: str, prop:CommentProperty | str) → str | tuple |
此指令會擷取註解方塊的 Property。
full_box_name 具有以下語法: <HierLevelPath>/<BoxName>.
<HierLevelPath>指定備忘註解方塊所在的設計階層路徑。從處理程序層級開始。請使用正斜線。<BoxName>指定註解方塊的個別名稱。
prop 具有以下選項:
Content:以字串形式傳回註解方塊的內容。Position:以數組 (tuple) 形式傳回註解方塊在設計視窗中左上角的 X 和 Y 位置。
編輯設計 – 其他指令#
Move#
| 指令語法 |
|---|
Move (item:tuple[str, str]|str, pos:tuple[int, int]) |
用於將模組、階層式方塊節點、註解方塊或模擬模組重新定位到設計視窗內新位置的指令。
item可以是:- 一個字串
"<FullModuleName>"用於識別模組、註解方塊或模擬模組。 - 一個數組
(<FullModuleName>, <HierNodeName>)用於移動階層式節點,例如("Process0/Box1","INBOUND#I000"). pos為(x, y).
範例
Move("Process0/MyModule", (100, 200))
Select#
| 指令語法 |
|---|
Select (item`: str|tuple[str, str]) |
用於選取模組、模擬模組、註解方塊或連結的指令。
item可以是下列其中一項:- 一個字串
"<FullModuleName>"透過名稱選取模組、模擬模組或註解方塊。 - 一個數組
(<FullModuleName>, <PortName>)用於選取連結。
範例
Select("Process0/MyModule")
Select(("Process0/Branch1", "O"))
ClearSelection#
| 指令語法 |
|---|
ClearSelection (parent_hierarchy: str) |
用於刪除選定元素(模組、階層式方塊節點、連結、註解方塊或模擬模組)的指令。
使用選用參數 parent_hierarchy 以取消選取階層層級上的所有元素 parent_hierarchy.
若您不使用 parent_hierarchy,將會全域刪除元素選取範圍,且在執行指令後,設計中將不會選取任何元素。
CopySelected#
| 指令語法 |
|---|
CopySelected (parent_hierarchy: str) |
用於複製階層層級上選定元素的指令 parent_hierarchy。如果您不使用選用參數 parent_hierarchy,將會複製目前使用中設計視窗之階層層級上的選定元素。
DeleteSelected#
| 指令語法 |
|---|
DeleteSelected (parent_hierarchy: str) |
用於刪除階層層級上選定元素的指令 parent_hierarchy。只會刪除您在以下項目中指定的階層層級之選定模組 parent_hierarchy ,其他層級上的選定模組則會保留。如果您不使用選用參數 parent_hierarchy,將會刪除目前使用中設計視窗之階層層級上的選定元素。
CutSelected#
| 指令語法 |
|---|
CutSelected (parent_hierarchy: str) |
用於剪下階層層級上選定元素的指令 parent_hierarchy。如果您不使用選用參數 parent_hierarchy,將會剪下目前使用中設計視窗之階層層級上的選定元素。
GetSelected#
| 指令語法 |
|---|
GetSelected (scope: SelectionScope|str, parent_hierarchy: str) → list |
傳回階層層級上選定元素的清單 parent_hierarchy。透過 scope 您可以定義是否要取得選定模組的清單("Modules")、選定連結("Links")、選定模擬模組("SimModules") 或選取的註解方塊 ("CommentBoxes")。
如果您未使用選用參數 parent_hierarchy,則會傳回目前使用中設計視窗階層層級上的選取元素。
如果您使用 scope = SelectionScope.Modules/SimModules/CommentBoxes,將會傳回階層元素路徑清單。
如果您使用 scope = Links 您會取得一個識別連結的元組清單。
範例
selectedModules = GetSelected("Modules")
selectedLinks = GetSelected("Links")
Paste#
| 指令語法 |
|---|
Paste (parent_hierarchy: str, pos: tuple[int, int] = (0,0)) |
用於將剪貼簿中的元素貼到階層層級的指令 parent_hierarchy。(亦即,貼上先前已複製或剪下的元素。)
如果您未使用選用參數 parent_hierarchy,元素將會貼到目前使用中設計視窗的階層層級。
使用選用位置參數 pos 來定義設計視窗中所插入內容的左上角位置。
InsertModulePort#
| 指令語法 |
|---|
InsertModulePort (port: tuple[str,str], where: InsertPosition|str) |
用於在連接埠旁插入新模組連接埠的指令 port.
資訊
您只能插入可以在指令中指定多重性的連接埠 CreateModule.
where 提供下列選項:
before或above:新連接埠會直接插入參數中指定的連接埠之前port.after或below:新連接埠會直接插入參數中指定的連接埠之後port(預設值)。
如果您未使用選用參數 where,新連接埠會直接插入連接埠 port.
RemoveModulePort#
| 指令語法 |
|---|
RemoveModulePort (port: tuple[str,str]) |
用於刪除模組連接埠的命令。
範例
RemoveModulePort(("Process0/BRANCH", "O001"))
資訊
您只能刪除可在命令中指定多重性的連接埠 CreateModule。特定類型的連接埠數量始終會保留最少數量。如果您嘗試進一步低於最小值進行刪除,將會收到相應的錯誤訊息。例如:雖然您可以刪除 Branch 運算子的第三個輸出連接埠(連接埠名稱:O002),但兩個最少輸出的連接埠(O001 和 O000)無法刪除: 
AppendModulePort#
| 指令語法 |
|---|
AppendModulePort (full_hier_box_name: str, direction: PortDirection | str) |
用於向階層方塊新增輸入連接埠或輸出連接埠的命令。
方向可使用以下值:
PortDirection.Input 或 "Input":建立輸入連接埠。
PortDirection.Ouput 或 "Ouput":建立輸出連接埠。
範例
AppendModulePort("Process0/MyHierBox", "Input")
Rename#
| 指令語法 |
|---|
Rename (full_module_name: str, new_name: str) |
用於重新命名模組或模擬方塊的命令。在 new_name 中,您指定實例的新自訂名稱,而不包含階層路徑。
範例
Rename("Process0/module1", "DMA")
SetActiveHierarchy#
| 指令語法 |
|---|
SetActiveHierarchy (hierarchy: str) |
用於在 VisualApplets 中開啟指定的設計階層視窗並使其成為活動視窗的命令。
範例
SetActiveHierarchy("Process0/MyBox")
GetActiveHierarchy#
| 指令語法 |
|---|
| GetActiveHierarchy ( ) → str |
傳回目前在 VisualApplets 中開啟且為活動狀態的設計視窗之階層層級資訊。
範例
print(GetActiveHierarchy())
模擬設計#
CreateSimSource#
| 指令語法 |
|---|
CreateSimSource (full_sim_module_name: str, pos: tuple[int, int] = (0,0)) → str |
用於建立模擬來源模組,並將模組定位在設計視窗中的命令。
full_sim_module_name 具有以下語法: <HierLevelPath>/<SimModuleName>
<HierLevelPath>定義設計中特定階層路徑。<SimModuleName>指定您希望模擬來源模組擁有的自訂名稱。或者,您可以將<SimModuleName>留空。在這種情況下,您需要以full_sim_module_name斜線結尾;該模組將自動命名。
函數的傳回值 CreateSimSource 是 full_module_name 新模擬來源模組的(包含模組名稱的完整階層路徑)。
範例
srcName = CreateSimSource("Process0/MySimSource", (200,200))
CreateSimProbe#
| 指令語法 |
|---|
CreateSimProbe (full_sim_module_name: str, pos: tuple[int, int] = (0,0)) → str |
用於建立模擬探針模組以及在設計視窗中定位該模組的指令。
full_sim_module_name 具有以下語法: <HierLevelPath>/<SimModuleName>
<HierLevelPath>用於定義設計中特定階層路徑的指令。<SimModuleName>用於指定您希望模擬探針模組擁有的名稱。或者,您可以保留<SimModuleName>留空。在這種情況下,您需要以full_sim_module_name斜線結尾;該模組將自動命名。
函數的傳回值 CreateSimProbe 是 full_module_name 新模擬探針模組的(包含模組名稱的完整階層路徑)。
DeleteSimModule#
| 指令語法 |
|---|
DeleteSimModule (full_sim_module_name: str) |
用於刪除模擬模組(模擬來源或模擬探針)的指令。
ConnectSimModule#
| 指令語法 |
|---|
ConnectSimModule (full_sim_module_name: str, link: tuple[str,str], pos:tuple[int,int] = (0,0)) |
用於將模擬模組連接至現有連線的指令。
範例
ConnectSimModule("Process0/MySimProbe", ("Process0/Branch1","O"))
DisconnectSimModule#
| 指令語法 |
|---|
DisconnectSimModule (full_sim_module_name: str) |
用於從連線中斷開模擬模組的指令。
SetSimModuleProperty#
| 指令語法 |
|---|
SetSimModuleProperty (full_sim_module_name: str, prop: SimProperty|str, value: bool|int|dict[str,int]) |
用於定義模擬模組 Property 的指令。
- 通用 Property(具有整數作為
value): "PixelAlignmentOffset","ImageFileSubPixels","ImageFilePixelBits","CurrentImage"- 通用 Property(具有布林值作為
value): "ImageFileNormalize"可以設定為True或False- 通用 Property(具有字典作為
value): "CropRect":傳遞帶有下列鍵值的字典:{"index", "x", "y", "width", "height"}用於指定來源影像中的 ROI。
使用 prop 來識別您要設定的 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 指定為整數值。
範例
SetSimModuleProperty("Process0/SimSource1", "ImageFileNormalize", True)
SetSimModuleProperty("Process0/SimSource1", "CropRect",
{"index": 0, "x":10, "y":20, "width":100, "height":100})
AddImage#
| 指令語法 |
|---|
AddImage (full_sim_module_name: str, image_file_name: str|list[str], image_lib: ImageLibrary|str) |
用於將圖片新增至模擬 source 模組的指令。如果模擬 source 連線之鏈結的核心元素數量大於 1,您必須指定與核心元素數量相同的圖片。
您也可以選擇指定要使用的圖像庫( image_lib = "Native" | "ImageMagick")。
範例
AddImage("Process0/MySimSource", "c:/VA_Python/testimage.tif")
RemoveImage#
| 指令語法 |
|---|
RemoveImage (full_sim_module_name: str, image_index: int = -1) |
用於從模擬中刪除一張或所有圖片的指令 source 模組。使用選用參數 image_index 指定您要刪除的圖像。如果您將 image_index 設為 -1,或者完全不使用 image_index ,則會刪除模擬模組中的所有圖像。
Simulate#
| 指令語法 |
|---|
Simulate (processing_cycles: int, save_log_file_name: str) |
用於模擬設計的指令。使用 processing_cycles 參數來定義您要使用該指令執行的處理週期數。
使用選用參數 save_log_file_name 將執行週期的記錄檔儲存至檔案。在 save_log_file_name 中指定檔案路徑與檔名本身。請使用 *.html 副檔名,因為該記錄檔是以 HTML 格式寫入。請使用正斜線來表示路徑。
範例
Simulate(1, "c:/temp/simlog.html")
ResetSimulation#
| 指令語法 |
|---|
| ResetSimulation ( ) |
用於重設模擬引擎的指令。因此,設計中的所有模擬探測點都會被清除。
GetSimModuleProperty#
| 指令語法 |
|---|
GetSimModuleProperty (full_sim_module_name: str, prop: SimModuleProperty|str , image_index: int = -1) → varies |
用於檢索模擬模組 Property 的指令。傳回類型取決於所查詢的 Property。可用以下 Property:
IsConnected→ bool:傳回True(如果模擬模組已連接至連接;否則傳回)False.ConnectedLink→(FullModuleName, PortName):傳回一個元組 (tuple),用於識別模擬模組所連接的連接。傳回值一律以真實模組連接埠描述該連接,亦即它絕不會說明內部的 H 盒子節點(例如INBOUND#I000或OUTBOUND#O000)。IsSource→ bool:傳回True,如果模擬模組是SimulationSource;否則傳回)False.IsProbe→ bool:傳回True,如果模擬模組是SimulationProbe;否則傳回)False.Position→(x,y):以元組形式傳回模擬模組在程式視窗中的位置。ImageCount→ int:傳回模擬模組中的影像數量。PixelAligmentOffset→ int:傳回對齊偏移量作為整數值。ImageFileSubPixels→ bool:將分配給連接像素的檔案像素數量傳回為整數值。ImageFilePixelBits→ int:傳回影像檔中 Bit Width 的設定作為整數值。可能的值為 1、8 和 16。ImageFileNormalize→ bool:傳回True或False根據儲存模擬結果影像的設定。如果設為 1,則在將 1 位元模擬結果儲存至 8 位元檔案時 *format:0 對應至 0(黑色),1 對應至 255(白色),也就是說,模擬影像的格式是「標準化」的。CropRect→ dict 包含{"x","y","width","height"}:此 Property 僅適用於模擬來源。使用參數image_index是強制性的。傳回裁剪矩形作為包含以下鍵的字典Index,X,Y,Width的狀態,以及Height.CurrentImage→ int:傳回目前選取的影像作為整數值。
SetSimImageData#
| 指令語法 |
|---|
SetSimImageData (full_sim_module_name: str, image_index: int, x: int, y: int, kernel_row: int = 0, kernel_col: int = 0, component: int = 0, width: int 0 1, data: list[str]) |
用於覆寫模擬模組(source 或 probe)內圖片中一個像素或多個相鄰像素的指令 in memory。此指令適用於在執行模擬或儲存模擬之前進行測試修改。
您可以使用此指令:
- 在 SimSources 中修改用於模擬的影像。
-
在 SimProbes 中將影像內部的結果視覺化。
-
image_index:要修改哪一個影像,以 0 為起始索引。 x,y:要寫入的左上角像素座標。kernel_row,kernel_col:如果影像具有核心(kernel),請識別您要修改哪一個核心元素。component:對於彩色影像,要設定哪一個色彩通道。width:要在同一列中設定多少個連續像素。中的其他資料data可能會溢位到後續的列。data:像素值清單,格式為 hex string 格式,例如["0A","0B","FF"].
範例
SetSimImageData("Process0/SimSource1", 0, 10, 10, component=0, width=3,
data=["12","13","14"])
影像的修改是暫時性的。只要您選取同一模擬模組的其他影像,或重新選取已修改的影像,該影像就會從硬碟重新載入,而您的修改將會遺失。如果您在 Python 主控台中輸入新影像的指令(屬於同一模擬模組),或在 VisualApplets GUI 的檢視器中按一下同一模擬模組的其他影像,即表示您選取了其他影像。 image_index (同一個模擬模組)在 Python 控制台中,或者在VisualApplets 圖形使用者介面(GUI)的檢視器中,點擊該模擬模組的另一張圖片。
不過,只要該圖片處於作用中狀態,您就可以將修改後的圖片以新檔名儲存,藉此將修改永久保留。
您可以使用暫時修改過的影像進行模擬。不過,每個 SimSource 模組在模擬時只能使用一個處于修改狀態的影像,因為修改同一 SimSource 中的另一個影像會重設您先前修改過的影像的像素值。只要每個模擬模組只有一個暫時修改過的影像,您就可以根據需要將任意數量的暫時修改過的影像用於模擬。
每個像素一個值: 指令 SetSimImageData 允許您每個像素寫入剛好一個值。因此,對於灰階像素,您必須執行 SetSimImageData 指令一次即可寫入每個像素完整的色彩資訊。對於彩色像素,您將只能寫入每個像素的三個色彩分量之一。因此,如果您想要變更彩色像素的所有三個色彩分量,您必須執行 SetSimImageData 指令三次。
使用 Kernel 寫入影像:當您寫入具有核心的圖片時,使用指令時必須指定要覆寫各別像素的哪一個核心元素 SetSimImageData 時,還必須指定您要覆寫相應像素的哪一個核心元素。如果您想要覆寫所有核心元素,您必須執行 SetSimImageData 指令剛好 kernel_row * kernel_col 次。
要使用此指令:
在使用該指令之前,請先關閉模擬模組中包含您要變更之影像的影像檢視器。
請使用索引指定您要修改的圖片 image_index. 注意: image_index 從 0 開始編號,而VisualApplets 圖形使用者介面中模擬模組的圖片編號則從 1 開始。兩者的對應關係如下:
image_index = 0 指的是VisualApplets 圖形使用者介面(GUI)檢視器中的圖像 1。
image_index = 1 指的是VisualApplets 圖形使用者介面(GUI)檢視器中的圖片 2。
image_index = 2 參見圖 3
等等。
資訊
在 VisualApplets 的 GUI 上,下一個模擬週期中使用的圖片索引會顯示在方括號中,並以前置的 "sim" 標記(例如 sim[2])。
使用 kernel_row 和 kernel_col 用以指定您要變更其像素值的核心元素。
您可以在模擬模組所連接的連結屬性中,查看您的模擬影像核心大小。若連結的核心大小大於 1 像素,該連結前端必定會出現一個可指定核心的運算子實例(例如,運算子 FIRkernelNxM)。
計數核函數的列數和行數時,均從 0 開始。因此,若您有一個僅含一個元素的核函數,請將這兩項值皆設定為 (kernel_row 和 kernel_col) 至 0:

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

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

請使用 component 用此參數指定要設定之像素的色彩成分。在灰階影像中,請設定 component 設為 0。在多組分影像(彩色)中,請透過其在色彩模型中的位置來指定要寫入的組分。範例:設定 component 若要處理 RGB 影像中的紅色成分,請將其設為 0,設定 component 若要處理 RGB 影像中的綠色成分,請將其設為 1,或設定 component 若要處理 RGB 影像中的藍色成分,請將數值設為 2。
設定位置 (x,y) 以設定您在圖片中書寫的起點(第一個像素)。
使用 width 用於指定每行要覆寫的相鄰像素數量。如果您指定的數量大於 values 您在單行中寫入的像素數量(width),寫入作業將在下一行的位置 x繼續。透過這種方式,您可以寫入具有指定寬度的區域(ROI) width.
指定個別像素值 data 以十六進位格式表示,不含前綴「0x」。負值請使用二補數(two's complement)表示法。您在 data 中指定的數量決定了影像中將被修改的像素數量。
GetSimImageData#
| 指令語法 |
|---|
GetSimImageData (full_sim_module_name: str, image_index: int, x: int, y: int, kernel_row: int = 0, kernel_col: int = 0, component: int = 0, width: int = 1, height: int = 1]) |
用於讀取模擬模組(來源或探針)內影像中一個或多個相鄰像素值的指令。傳回一個十六進位字串清單。
每個像素一個值: 指令 GetSimImageData 每個像素剛好傳回一個值。因此,對於灰階像素,您只需執行 GetSimImageData 指令一次即可擷取每個像素的完整色彩資訊。對於彩色像素,您只能擷取每個像素的三個色彩分量之一。因此,如果您想要讀取彩色像素的所有三個色彩分量,您必須執行 GetSimImageData 指令三次。
使用 Kernel 讀取影像:當您從具有核心的圖片中讀取時,使用指令時必須指定要讀取各別像素的哪一個核心元素 GetSimImageData 時,除了要讀取的(第一個)像素的確切位置外,還必須指定您要讀取的相應像素之核心元素。如果您想讀取所有核心元素,則必須執行 GetSimImageData指令剛好 kernel_row * kernel_col 次。
要使用此指令:
指定具有索引 image_index.
注意: image_index 從 0 開始編號,而VisualApplets 圖形使用者介面中模擬模組的圖片編號則從 1 開始。兩者的對應關係如下:
image_index = 0 指的是VisualApplets 圖形使用者介面(GUI)檢視器中的圖像 1。
image_index = 1 指的是VisualApplets 圖形使用者介面(GUI)檢視器中的圖片 2。
image_index = 2 指的是 VisualApplets GUI 檢視器中的影像 3,
等等。
資訊
在 VisualApplets 的 GUI 上,下一個模擬週期中使用的圖片索引會顯示在方括號中,並以前置的 "sim" 標記(例如 sim[2])。
使用 kernel_row 和 kernel_col 以指定您要讀取的核心元素。
您可以在模擬模組所連接之連線的連線 Property 中查看模擬影像的核心大小。核心大小大於 1 個元素的連線,其前方通常會冠以允許指定核心的 operator 實例(例如 operator FIRkernelNxM)。
核心的行與列計算從 0 開始。因此,如果您的核心只有一個元素,請將兩個值都設為 0。

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

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

使用參數 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」。負數則以二補數表示法傳回。
範例
vals = GetSimImageData("Process0/SimProbe1", 0, 100, 200, width=4, height=2)
# E.g., ["00","00","01","02","03","FF","7A","7B"]
CreateSimImage#
| 指令語法 |
|---|
CreateSimImage (full_sim_module_name: str, shape: tuple[int,int] = (-1,-1)) |
用於在模擬模組(通常為來源)中建立/配置具有指定大小的新影像的指令 height 和 width.
如果任一維度為 -1,將會使用該連接的最大維度。
參數 shape 用於定義類似 numpy 陣列的影像形狀。第一個元組項目為 height ,第二個為 width。如果 shape 包含三個項目時,第三個項目將會被忽略(分量數量由連接格式決定)。
範例
CreateSimImage("Process0/MySimSource", (768, 1024))
GetSimImageProperty#
| 指令語法 |
|---|
GetSimImageProperty (full_sim_module_name: str, image_index: int, prop: SimImageProperty|str, line_index: int = -1, line_count: int = 1) → 視情況而定 |
用於擷取模擬影像屬性(在來源或探針模組中)的指令。
prop可以是:"LineWidth": 傳回行寬列表(如果 lineCount > 1)。"ImageSize": 傳回字典{"Width": <width>, "Height": <height>}其中<width>和<height>是影像寬度和高度的整數。
CreateImageMemory#
| 指令語法 |
|---|
CreateImageMemory (format_dict: dict[LinkParam|str, int|<enum>|str] = None ) → SharedImageMemory |
用於建立 VisualApplets 影像 Memory 的指令,該 Memory 可透過以下類型的物件進行存取 SharedImageMemory.
-
format_dict: 使用相當於指定連結格式的字典(使用諸如LinkParam.MaxImageWidth,LinkParam.MaxImageHeight,LinkParam.ColorFormat等的鍵)來指定 Memory 格式。如果省略,則使用以下預設值:LinkParam.MaxImageHeight:1024LinkParam.MaxImageWidth:1024LinkParam.ColorFormat:VAF_GRAYLinkParam.BitWidth:8
參數 format_dict 是選填的。如果您想透過呼叫來設定影像 Memory CopySimImageData,請勿提供任何格式。該格式隨後將被模擬模組覆寫。
Memory 會在首次執行下列其中一項動作時進行配置:
- 呼叫
CopySimImageData()以從模擬元素複製資料 - 呼叫方法
data()以從取得 Python buffer 物件SharedImageMemory.
此函式傳回一個 SharedImageMemory 物件,該物件可與 CopySimImageData.
一起使用。傳回的 SharedImageMemory 物件提供以下類別方法:
data(): 取得一個memoryview物件,該物件透過 Python buffer 協定提供 Memory 存取而不進行複製。shape(): 傳回影像的外形(尺寸),灰階格式為 (Height,Width),或為 (Height,Width,Components)適用於彩色影像。datatype():傳回對應至緩衝區資料的 numpy 資料型別的字串表示。此字串可用作numpy.dtype()函式的引數,以取得 numpy 資料型別。casttype():傳回影像資料的 PEP 3118 緩衝區轉型型別。此字串可用於memoryview.cast().
範例
sharedMem = CreateImageMemory({"Max. Image Width": 100, "Max. Image Height": 100})
resultMem = CreateImageMemory({LinkParam.MaxImageWidth: 2, LinkParam.MaxImageHeight: 1, LinkParam.BitWidth: 16})
# Access the buffer sharedMem via numpy
import numpy as np
arr = np.frombuffer(sharedMem.data(0,0), dtype=np.dtype(sharedMem.datatype()))
arr = arr.reshape(sharedMem.shape())
arr[:] = 0 # initialize buffer with zeros
# Access the buffer resultMem via buffer protocol
resultData = resultMem.data(0,0).cast(resultMem.casttype())
resultData[0] = 0x1234
resultData[1] = 0x5678
CopySimImageData#
| 指令語法 |
|---|
CopySimImageData (full_sim_module_name: str, image_index: int, image_memory:SharedImageMemory, copy_to_sim_module: bool = False) |
用於複製資料的指令 往返於 模擬模組,或往返於 SharedImageMemory 緩衝區的指令。根據預設,資料會從模擬模組複製到影像 Memory。
- 如果
copy_to_sim_module=False(預設值),資料會從 sim 模組流向image_memory. - 如果
copy_to_sim_module=True,則image_memory中的資料會寫入 sim 模組的影像中。
範例
buf = CreateImageMemory()
CopySimImageData("Process0/SimProbe1", 0, buf) # read data from probe
# ... do something in Python ...
CopySimImageData("Process0/SimProbe1", 0, buf, True) # write it back
SaveImage#
| 指令語法 |
|---|
SaveImage (full_sim_module_name: str, image_index: int, image_base_name: str) |
用於儲存來自模擬探針的一個或所有結果影像的指令。
使用強制參數 image_index 從結果影像中儲存特定影像。如果您要儲存探針的所有影像,請設定 image_index 設定為 -1.
使用 image_base_name 以指定檔案系統中要儲存影像的目錄路徑,並指定影像檔案的檔名。請確保您指定的目錄已存在於您的檔案系統中。否則,您可以使用指令建立它們 MakeDirectoryPath.
範例:「C:/images/testimage」。在儲存過程中,副檔名(例如 *.tif)將會自動附加到名稱後方。
如果您儲存探針的所有影像,系統將會自動將影像索引新增至檔名中。
範例 1:
輸入
SaveImage("Process0/mySimProbe", -1, "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 (save_log_file_name: str = " ") |
用於啟動第一層設計規則檢查 (DRC 1) 的指令。
若要取得記錄輸出,您可以在以下項目中選擇性地指定 HTML 記錄檔 (*.html) 的路徑與名稱: save_log_file_name 參數的值。
Drc2#
| 指令語法 |
|---|
Drc2 (save_log_file_name: str = " ") |
用於啟動第二層設計規則檢查 (DRC 2) 的指令。
若要取得記錄輸出,您可以在以下項目中選擇性地指定 HTML 記錄檔 (*.html) 的路徑與名稱: save_log_file_name 參數的值。
SelectBuildConfiguration#
| 指令語法 |
|---|
SelectBuildConfiguration (config_name: str) |
用於將已儲存的建置組態選取為作用中建置組態的指令。
在參數中指定所需建置組態的名稱 config_name.
若要檢視所有可用建置組態的概覽,請輸入 SelectBuildConfiguration("?") - 系統會傳回所有可用建置組態名稱的清單。目前選取的建置組態會顯示在清單的第一個項目中。
範例:

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

建置#
| 指令語法 |
|---|
建置 (save_log_file_name: str = " ", max_time: float | int = 24.0) |
用於啟動建置流程的指令。
若要取得記錄輸出,您可以在參數中選擇性地指定 HTML 記錄檔 (*.html) 的路徑與名稱 save_log_file_name.
若要為建置程序設定時間限制,您可以在參數中選擇性地指定最大建置時間 max_time (以小時為單位)。參數 max_time 的型別為浮點數。透過這種方式,您可以指定小數點小時。預設設定 max_time 為 24 小時。
建立記錄檔的指令範例 build_log.html 並將最大建置時間指定為 ½ 小時:
範例
Build("build_log.html", 0.5) # stop after 30 minutes
處理檔案、路徑、程式實例與訊息#
Source#
| 指令語法 |
|---|
Source (file_path: str, encoding: str = utf-8) |
用於在目前環境中執行另一個 Python 文稿檔案的指令。指定路徑時請使用正斜線。此指令會自動取代下列預留位置(例如 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#
| 指令語法 |
|---|
MakeDirectoryPath (full_path: str) → str |
用於建立任何所需深度的路徑(及其目錄)的指令。
此指令會自動取代下列預留位置:
%UserDir%:目前使用者的使用者資料目錄(例如 c:/Users/Smith)
%AppDataDir%: VisualApplets 的應用程式資料目錄
%VaInstallDir%: VisualApplets 的安裝目錄
%UserLibDir%: 使用者庫目錄。
%CustomLibDir%: 自訂庫目錄。
%VaVersion%: VisualApplets 程式版本,例如 "3.1"
%CurrDateTime%: 依據 ISO 8601(基本格式)的目前日期與時間,例如 "20170530T134522"
%DateTime%: 依據 ISO 8601(基本格式)的 VisualApplets 啟動日期與時間,例如 "20170530T134350"
%CurrDesignDir%: 儲存目前載入設計的目錄。
如果指令成功執行,將會傳回絕對路徑。
範例
absPath = MakeDirectoryPath("c:/temp/myFolder/sub")
GetAbsolutePath#
| 指令語法 |
|---|
GetAbsolutePath (path: str) → str |
傳回您在參數中指定的路徑之絕對路徑 path.
此指令會自動取代與 command 相同的別名(預留位置) MakeDirectoryPath.
您可以參考 path 指向不存在的目錄或檔案,以便產生的路徑名稱指向不存在的目錄或檔案。
Wait#
| 指令語法 |
|---|
Wait (time_in_milli_sec: int) |
用於等待指定時間的指令 time_in_milli_sec. VisualApplets GUI 在等待時間內保持有效。
若您將 time_in_milli_sec 設為 0,VisualApplets 將至少執行一次 GUI 的事件迴圈更新。您可以使用此功能來確保 GUI 顯示早期指令的結果。
訊息#
| 指令語法 |
|---|
訊息 (msg_type: MessageType|str, code: int, text: str) |
用於發出
- 錯誤訊息 (
msg_type=MessageType.Error或msg_type="Error")、 - 警告 (
msg_type=MessageType.Warning或msg_type="Warning") 或 - 資訊訊息 (
msg_type=MessageType.Info或msg_type="Info")
在 code的指令,您可以為訊息定義訊息代碼。 code 的值範圍為 -999 至 +999。為了避免與當前及/或未來版本的 VisualApplets 產生衝突,請僅使用此範圍內的數值。
使用 text 以輸入訊息。該訊息會自動以句點結尾。
範例
Message("Info", 100, "Starting build steps...")
FlushConsole#
| 指令語法 |
|---|
| FlushConsole ( ) |
將 Python stdout/stderr 中累積的輸出立即傳輸至 VisualApplets 主控台。
Exit#
| 指令語法 |
|---|
Exit (discard: bool = False) |
用於終止目前 VisualApplets 作業階段的指令。您甚至可以在 Exit 仍有開啟的設計時使用它。不過,請別忘了在此之前儲存您的變更。
若您仍有開啟的設計且該設計包含未儲存的變更:
- 如果您設定選用參數
discard設定為True,則即使該設計包含您尚未儲存的變更,它仍會被關閉。未儲存的變更將會遺失。 - 如果您設定選用參數
discard設定為False且存在未儲存的變更,指令將會失敗。 - 如果您使用
Exit且未使用discard參數。儘管開啟的設計包含未儲存的變更,此指令仍將終止,並且您會收到相應的錯誤訊息。