Python Command Reference#
資訊
本參考文件說明了用於在嵌入式 Python 解釋器中設計、模擬及建構VisualApplets 設計的 Python 函式。此處記載的所有 Python 函式均區分大小寫。請使用正斜線 (/) 用於檔案路徑,以及在設計元素中指定層級路徑。
圖表中的位置參數 每當函式在設計視窗中需要一個位置時,都會使用一個 Python 元組 (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")
儲存設計#
| 指令語法 |
|---|
儲存設計 (file_name: str, overwrite: bool = False) |
將設計儲存至...的指令 file_name. 請在 file_name 檔案的路徑及檔案名稱本身。請使用斜線來標示設計檔案的路徑。
請別忘了在檔案名稱後加上檔案副檔名。
- 若您指定檔案副檔名為*.va或*.vad,您的設計將以標準的「VisualApplets 」設計格式儲存。檔案中的所有內容都會被儲存。請將*.vad檔案格式用作您的「VisualApplets 」設計的主要資料格式。
若要覆寫現有檔案,請設定此可選參數 overwrite 至 True.
範例
SaveDesign("c:/VA_Python/Project1.va")
變更平台#
| 指令語法 |
|---|
變更平台 (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")
關閉設計#
| 指令語法 |
|---|
關閉設計 (discard: bool = False) |
用於關閉目前開啟的設計的指令。
若您設定此可選參數 discard 至 True, 即使該設計中包含您尚未儲存的變更,系統仍會關閉該設計。未儲存的變更將會被捨棄。
如果該參數 discard 已設定為 False,且設計中包含您尚未儲存的變更時,該指令將會中止,並顯示相應的錯誤訊息。
範例
CloseDesign(discard=True)
SetDesignProperty#
| 指令語法 |
|---|
SetDesignProperty (key: DesignProperty | str, value: str) |
請使用此指令,為目前載入的設計輸入設計屬性。
您可以使用以下四個按鍵:
ProjectName(您希望該專案所使用的名稱)Version(設計版本)Description(專案說明)。-
TargetRuntime(請在此處指定將在運行此小程式的幀擷取卡主機電腦上使用的作業系統。)允許的值如下:
- 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: 元組[int, int] = (0, 0)) |
用於建立運算子實例(模組)的指令 OperatorType,以及在設計視窗中定位該模組。
此指令有兩個必填參數和兩個可選參數:
operator: 運算子的名稱(例如,"BRANCH","NOP","Add"(等等)。full_module_name: 該 層級路徑 再加上模組的預期名稱,例如:"Process0/MyModule".mult(可選參數):使用此參數來指定埠的多重性。
例如:{"O": 3}在一個名為 的輸出多埠運算子上建立 3 個輸出埠"O". 請參閱以下說明。pos(可選參數):一個元組(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:
許多運算子在實例化時會設定固定數量的連接埠。另一方面,也有連接埠數量可變的運算子。在實例化連接埠數量可變的運算子時,您可以定義該模組將擁有多少個連接埠。
例如,在實例化運算子時 BRANCH, 您可以定義該實例將擁有多少個輸出埠:

因此,輸出埠 O 的數量是可變的。我們將具有可變埠數的埠稱為多埠。
多埠是透過其基礎名稱來識別的。在 BRANCH例如,輸出埠的基本名稱是 O. 透過在基礎名稱後附加一個索引,即可識別並指定特定埠號:

使用指令時 CreateModule, 您可以使用這個可選參數 mult 使用字典來指定模組的向量輸入與向量輸出的多重性,其中字典的鍵為埠的基礎名稱,其值則為埠的數量。透過這種方式,您可以定義具有可變埠數的運算子實例(模組)中的埠數,例如以下這些運算子: 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: 元組[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: 元組[int, int] = (0, 0)) |
用於實例化自訂函式庫元素的指令。請透過參數指定使用者函式庫 library, 透過參數取得函式庫中元素(運算子)的名稱 operator, 您希望在設計中為該模組命名的名稱,以及您希望透過該參數將模組放置在層級結構中的位置 full_module_name,以及透過可選參數所指定的模組在設計視窗中的位置 pos.
範例
InstCustomLibOperator("MyCustomLib", "MyOperator", "Process0/MyModule", (100,100))
刪除模組#
| 指令語法 |
|---|
刪除模組 (full_module_name: str) |
刪除模組的指令 full_module_name.
無法透過此指令刪除模擬模組。若要刪除模擬模組,請使用以下指令: DeleteSimModule.
範例
DeleteModule("Process0/Branch1")
ConnectModules#
| 指令語法 |
|---|
ConnectModules (from_port: 元組[str,str], to_port: 元組[str,str], x1: int|None = None, y2: int|None = None, x3: int|None = None) |
用於連接模組埠的指令。
參數 from_port 進行明確的生命週期管理即呼叫 to_port 是語法如下所示的元組: (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)
斷開模組#
| 指令語法 |
|---|
斷開模組 (port: 元組[字串, 字串]) |
用於刪除連接至該埠口的連結的指令 port.
範例
DisconnectModules(("Process0/cam1", "O"))
建立留言#
| 指令語法 |
|---|
建立留言 (full_box_name: str, text: str, pos: 元組[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 (包含留言框名稱在內的完整層級路徑)。
刪除留言#
| 指令語法 |
|---|
刪除留言 (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: 字串|整數|浮點數|整數列表|浮點數列表, index: int = -1) |
用於設定模組參數的指令。
資訊
此命令僅用於將現有參數設定為特定值。您無法使用此命令建立元資料參數。若要建立新的元資料參數,請使用以下命令: SetParamString 而是。
範例
SetModuleParam("Process0/module6", "XLength", 512)
SetModuleParam("Process0/LUT1", "LUTcontent", [12, 13, 14, 15], 4)
欄位參數:要設定欄位參數,請 index 必須提供此參數。
編輯欄位參數的範例:
在輸入指令之前,「輸入值」對話方塊的外觀如下:

輸入指令
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]) |
用於變更模組參數屬性的指令,例如使其 dynamic 或 static. 此指令可能會取代 SetModuleParamType. 單一屬性名稱可能有多個值。您可以變更以下屬性: prop:
-
access: 一個或多個類似以下的標誌:write: 如果該參數可以朝這個方向切換的話(例如在運算子中LinkParamTranslator),它便會成為寫入參數。read: 如果該參數可以朝這個方向切換的話(例如在運算子中LinkParamTranslator),它便會成為一個讀取參數。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) |
請使用此指令為特定模組定義元資料參數。
範例
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: 元組[str,str], param_dict: dict[LinkParam|str, int|<enum>|str]) |
用於設定連結格式的指令,例如位元寬度、算術模式、顏色格式等。連結參數可透過以下方式識別: LinkParam 枚舉(例如: LinkParam.BitWidth),可透過枚舉名稱(例如「BitWidth」)或 GUI 中的名稱(例如「Bit Width」)來進行設定。
link: 用於透過已連接的模組連接埠識別該連結的元組 `(, ) param_dict: 一個指定參數值對的字典。連結格式參數的名稱與VisualApplets 圖形化使用者介面中的名稱相同。範例鍵值:LinkParam.BitWidth,"Arithmetic",等等。
範例
SetLinkParams(
("Process0/CreateBlankImage","O"),
{
"Parallelism": 4,
"ImageProtocol": "VALT_LINE1D",
"MaxImageWidth": "2048"
}
)
資訊
當您手動撰寫 Python 腳本時,此指令僅適用於可變更的參數。若您嘗試設定一個不可變更的連結參數,將會收到相應的錯誤訊息:

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: 元組[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 |
此指令用於擷取設計屬性。您可以使用以下值來 key:
ProjectName:專案名稱FileName: 目前載入的設計檔案的完整路徑HardwarePlatform: 目標硬體平台的函式庫名稱,例如iF-CXP12-QVersion: 設計版本Description: 專案說明TargetRuntime: 指定將在運行此小程式之幀擷取卡的主機電腦上使用的作業系統Loaded: 設計已載入;傳回一個布林值 (True/False)
設計屬性 Loaded 在完全未載入任何設計的情況下,仍可查詢此屬性。此操作不會觸發錯誤訊息。但在未載入任何設計的情況下查詢其他設計屬性時,則會觸發錯誤訊息。
範例
val = GetDesignProperty("ProjectName")
print(val) # e.g., "MyProject"
GetDesignClock#
| 指令語法 |
|---|
| GetDesignClock( ) → float |
此指令會以 MHz 為單位,回傳 FPGA 的基本時脈頻率,即 float.
GetProcesses#
| 指令語法 |
|---|
| GetProcesses( ) → list[str] |
此指令會傳回一個 list[str] 並列出該設計中所有流程的名稱。
範例
processes = GetProcesses()
# e.g. ["Process0","Process1"]
GetSubModules#
| 指令語法 |
|---|
GetSubModules (hierarchy_name: str) → list[str] |
此指令會傳回一個 list[str] 包含位於所請求層級結構中的模組名稱 hierarchy_name.
針對每個子模組,皆列出其完整的層級名稱。
範例
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要定義一個排序「模式」。您有以下選項:"path": 模組是根據其在設計圖中的位置進行排序(即,按照資料流在模擬過程中流經各模組的順序)。"name": 模組是根據其名稱按字母順序排序的full_module_name.
"OperatorType": 使用specifier用以定義您要尋找的模組的運算子類型(「O」、「M」、「P」、「O+P」、「M+P」、「未知」)。"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: 元組[str,str], prop: PortProperty | str) |
此指令用以擷取模組連接埠的屬性。以下為 prop 可用的選項包括:
"IsConnected": Returns 會傳回一個布林值 (True/False)."Position": 返回指定埠在圖表(設計視窗)中的位置,並以元組形式呈現 (xPos,yPos). 若port指定一個內層的分層框節點,例如,例如,("Process0/HBox","INBOUND#I000"), 會回傳此節點在階層式方塊設計視窗中的位置。
GetModuleProperty#
| 指令語法 |
|---|
GetModuleProperty (full_module_name: str, prop: ModuleProperty | str) → varies |
此指令會回傳模組的屬性。
以下是 prop 可用的選項包括:
"Status": 傳回一個整數:若模組未處於錯誤狀態,則傳回 0;否則傳回錯誤代碼。"Operator": 返回該模組所實作的運算子名稱,例如BRANCH."OperatorType": 回傳運算子類型(O、P、M、未知)。對於階層式框和使用者函式庫模組,則回傳「未知」。"LibraryType": 回傳該運算子所源自的函式庫類型。回傳值為以下其中一個:operator,user,custom."Version": 回傳該模組所實作之運算子的版本。"Type": 回傳模組類型。回傳的值為以下其中之一:process,hierBox,operator,user,custom."IsHierModule": 退貨True若所述模組能夠包含子模組,則回傳False如果所述模組無法擁有子模組。"IsProtected": 退貨True如果該模組是受保護的函式庫元素的實例。"Library": 回傳該運算子所屬的函式庫名稱。"Position": 將設計視窗中的位置以清單形式傳回 (xPos,yPos)."Resources": 傳回一個由元組 (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) |
用於擷取參數屬性的指令。
關於該參數 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: 元組[str,str], select: list[LinkParam|str]|None = None) → dict[LinkParam, (各種)] |
回傳一個字典,其中鍵為 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: (字串, 字串), param: LinkParam | str, prop: ParamProperty | str) → varies |
此指令用於擷取特定連結參數的屬性。
該參數的以下數值 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: 元組[str,str], prop: LinkProperty|str) → varies |
此指令會回傳特定連結的特定屬性。若您使用參數指定階層式設備的埠號, link, 只要在層級框內存在指向此埠或來自此埠的連結,該指令即可正常運作。
該參數的選項如下: prop 有以下幾種,其中回傳類型取決於參數:
Status: 傳回一個整數:若模組未處於錯誤狀態(即連結來源與連結目標的參數設定相符,且 DRC 未偵測到錯誤),則傳回 0;否則傳回錯誤代碼。From: 返回連結的起始點。起始點可以是前一個模組的輸出埠,也可以是層級結構中的內部方塊節點(INBOUND#...) 該連結所指向的位置。此指令會傳回一個包含這兩個值的元組<FullModulenname>進行明確的生命週期管理即呼叫<PortName>.To: 返回連結的終點。該終點可以是後續模組的輸入埠,或是層級結構中的內部方塊節點(OUTBOUND#...) 該連結所指向的位置。此指令會傳回一個包含這兩個值的元組<FullModulenname>進行明確的生命週期管理即呼叫<PortName>.Source: 返回一個元組,其中包含由link針對所有前述連結,直至該連結的來源為止。連結鏈會透過層級結構向後追溯,從您在<FullModulenname>回到起點。回傳清單中元素的順序與查詢的逆向路徑相對應(來源模組是清單中的最後一項)。Dest: 返回一個包含由link對於所有後續連結,直至該連結的目標模組為止。連結鏈會依序穿梭於各層級結構之中,從您在<FullModulenname>直到結尾(sink)。回傳清單中元素的順序與查詢的正向流程相對應——目標模組(目的地)是清單中的最後一項。HasConnectedSimModule: 退貨True若模擬模組已連接到該鏈路,則返回False若未連接任何模擬模組。ConnectedSimModule: 返回已連接模擬模組的層級名稱。
範例
src = GetLinkProperty(("Process0/MyModule","O"), "To")
GetSimModules#
| 指令語法 |
|---|
GetSimModules (sim_type: SimModuleType|str, scope: SearchScope|str, specifier: str) → list[str] |
回傳符合指定類型/篩選條件的模擬模組之完整名稱。
sim_type可以是"Source"或"Probe".scope可以是"Hierarchy"或""Pattern"".specifier是篩選器或層級結構的字串。
範例
simProbes = GetSimModules("Probe",""Pattern"","*")
取得評論框#
| 指令語法 |
|---|
取得評論框 (scope: SearchScope|str, specifier: str) → list[str] |
此指令用於擷取設計中的註解方塊。該指令會回傳一個清單,其中包含所有符合您透過參數所指定特徵的註解方塊 scope 進行明確的生命週期管理即呼叫 specifier. 該清單包含 FullElmentNames (包含框名的層級名稱)。
scope: 可以是"Hierarchy"或""Pattern"".specifier: 該字串是「Pattern」還是層級名稱。
GetCommentProperty#
| 指令語法 |
|---|
GetCommentProperty (full_box_name: str, prop: CommentProperty | str) → str | 元組 |
此指令用於取得註解方塊的屬性。
full_box_name 其語法如下: <HierLevelPath>/<BoxName>.
<HierLevelPath>指定設計中註解方塊所在的層級路徑。請從流程層級開始。請使用正斜線。<BoxName>指定留言框的個別名稱。
prop 具有以下選項:
Content: 評論框中的內容將以字串形式傳回。Position:設計視窗中評論框左上角的 X 和 Y 座標將以元組形式回傳。
編輯設計 – 其他指令#
移動#
| 指令語法 |
|---|
移動 (item: 元組[字串, 字串]|字串, pos: 元組[整數, 整數]) |
用於將模組、階層式方塊節點、註解方塊或模擬模組重新定位至設計視窗內新位置的指令。
item可以是:- 一個字串
"<FullModuleName>"用於識別模組、註解框或模擬模組。 - 元組
(<FullModuleName>, <HierNodeName>)用於移動階層式節點,例如:("Process0/Box1","INBOUND#I000"). pos是(x, y).
範例
Move("Process0/MyModule", (100, 200))
選擇#
| 指令語法 |
|---|
選擇 (項目:`str|tuple[str, str])` |
用於選取模組、模擬模組、註解方塊或連結的指令。
item可以是以下任一種:- 一個字串
"<FullModuleName>"根據名稱選取模組、模擬模組或註解方塊。 - 元組
(<FullModuleName>, <PortName>)點選一個連結。
範例
Select("Process0/MyModule")
Select(("Process0/Branch1", "O"))
清除選取項目#
| 指令語法 |
|---|
清除選取項目 (parent_hierarchy: str) |
用於刪除選取項目(模組、階層式方塊節點、連結、註解方塊或模擬模組)的指令。
使用此可選參數 parent_hierarchy 取消選取該層級下的所有元素 parent_hierarchy.
如果您不使用 parent_hierarchy, 元素選取將被全面取消,且執行該指令後,設計中將不再有任何元素被選取。
複製選取內容#
| 指令語法 |
|---|
複製選取內容 (parent_hierarchy: str) |
用於複製層級層級上所選元素的指令 parent_hierarchy. 若未使用此選配參數 parent_hierarchy, 系統會複製目前處於活動狀態的設計視窗中,位於該層級的選取元素。
刪除選取項目#
| 指令語法 |
|---|
刪除選取項目 (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) → 清單 |
回傳該層級中已選取元素的清單 parent_hierarchy. 來源: scope 請您決定是否要取得已選取模組的清單("Modules"),精選連結 ("Links"),選定的模擬模組("SimModules"),或選定的留言框("CommentBoxes").
若未使用此選配參數 parent_hierarchy, 系統將回傳目前處於活動狀態的設計視窗中,位於該階層級別所選取的元素。
如果您使用 scope = SelectionScope.Modules/SimModules/CommentBoxes, 會回傳一份層級元素路徑清單。
如果您使用 scope = Links 您將獲得一組用於識別連結的元組清單。
範例
selectedModules = GetSelected("Modules")
selectedLinks = GetSelected("Links")
貼上#
| 指令語法 |
|---|
貼上 (parent_hierarchy: str, pos: 元組[整數, 整數] = (0, 0)) |
將剪貼簿中的元素貼上至該層級的指令 parent_hierarchy。(即貼上先前已複製或剪下來的元素)。
若未使用此選配參數 parent_hierarchy, 這些元素將被貼至目前處於活動狀態的設計視窗的層級位置。
使用可選的位置參數 pos 用於定義插入內容在設計視窗中的左上角位置。
InsertModulePort#
| 指令語法 |
|---|
InsertModulePort (port: 元組[str,str], where: InsertPosition|str) |
用於在埠旁插入新模組埠的指令 port.
資訊
您只能在命令中插入那些可以指定多重性的連接埠 CreateModule.
where 提供以下選項:
before或above: 新的連接埠將直接插入在參數中指定的連接埠之前port.after或below: 新的連接埠將直接插入在參數中指定的連接埠之後port(預設)。
若未使用此選配參數 where, 新的連接埠會直接插入在連接埠之後 port.
RemoveModulePort#
| 指令語法 |
|---|
RemoveModulePort (port: 元組[字串, 字串]) |
用於刪除模組埠的指令。
範例
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")
重新命名#
| 指令語法 |
|---|
重新命名 (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))
建立模擬探針#
| 指令語法 |
|---|
建立模擬探針 (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 新模擬探針模組(包含模組名稱在內的完整層級路徑)。
刪除模擬模組#
| 指令語法 |
|---|
刪除模擬模組 (full_sim_module_name: str) |
用於刪除模擬模組(模擬來源或模擬探針)的指令。
ConnectSimModule#
| 指令語法 |
|---|
ConnectSimModule (full_sim_module_name: str, link: 元組[str,str], pos: 元組[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]) |
用於定義模擬模組屬性的指令。
- 常見的道具(以整數作為
value): "PixelAlignmentOffset","ImageFileSubPixels","ImageFilePixelBits","CurrentImage"- 常見的道具(以布林值作為
value): "ImageFileNormalize"可設定為True或False- 常用道具(以字典形式)
value): "CropRect": 傳入一個包含以下鍵的字典:{"index", "x", "y", "width", "height"}用於在來源影像中指定感興趣區域(ROI)。
使用 prop 以識別您要設定的屬性。請依照下方所述的格式設定各屬性。可用的屬性及其對應的數值格式如下:
pixelAlignmentOffset BITS
請使用此參數以整數值指定對齊偏移量 BITS.
imageFileSubPixels NUMBER
使用此參數,以整數值指定分配給連結像素的檔案像素數量 NUMBER.
來源: NUMBER 多個像素被合併為一個像素。
探針:一個像素被分割成 NUMBER 檔案中的像素。
imageFilePixelBits bits
請使用此參數,以整數值指定影像檔案中的位元寬度 bits. 允許的值為 1、8 和 16。
imageFileNormalize choice
請使用此屬性來設定模擬結果影像的儲存方式。
若要將 1 位元模擬結果儲存為 8 位元檔案格式,請設定 imageFileNormalize 關於第 1 點:在此語境中,「歸一化」是指將 0 映射為 0(黑色),將 1 映射為 255(白色)。
以下是 choice 以下情況皆有可能: choice = "1" | "0"
cropRect [imageNr] x y width height
此屬性僅適用於模擬光源。指定影像索引 [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})
新增圖片#
| 指令語法 |
|---|
新增圖片 (full_sim_module_name: str, image_file_name: str|list[str], image_lib: ImageLibrary|str) |
用於將影像新增至模擬來源模組的指令。若模擬來源所連接之連結的核心元素數大於 1,則必須指定與核心元素數相等的影像數量。
若需要,您可以指定要使用的圖像庫( image_lib = "Native" | "ImageMagick")。
範例
AddImage("Process0/MySimSource", "c:/VA_Python/testimage.tif")
移除圖片#
| 指令語法 |
|---|
移除圖片 (full_sim_module_name: str, image_index: int = -1) |
用於從模擬中刪除一張或所有影像的指令 來源 模組。請使用此可選參數 image_index 以指定您要刪除的圖片。如果您設定 image_index 設為 -1,或者若您不使用 image_index 無論如何,模擬模組中的所有影像都會被刪除。
模擬#
| 指令語法 |
|---|
模擬 (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( ) |
用於重置模擬引擎的指令。執行此指令後,設計中的所有模擬探針將被清除。
GetSimModuleProperty#
| 指令語法 |
|---|
GetSimModuleProperty (full_sim_module_name: str, prop: SimModuleProperty|str , image_index: int = -1) → 不定 |
用於擷取模擬模組屬性的指令。回傳類型取決於所查詢的屬性。可用的屬性如下:
IsConnected→ bool:回傳True, 若模擬模組已連接到某個鏈結;否則返回False.ConnectedLink→(FullModuleName, PortName): 返回一個元組,用以識別模擬模組所連接的連結。該回傳值總是透過實數模組埠來描述該連結,也就是說,它絕不會指定內部的 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:以整數值返回影像檔案中的位元寬度設定。可能的值為 1、8 及 16。ImageFileNormalize→ bool:回傳True或False根據儲存模擬結果影像的設定。若設定為 1,則在將 1 位元模擬結果儲存至 8 位元檔案時 *format: 0 對應於 0(黑色),1 對應於 255(白色),也就是說,模擬影像的格式是「歸一化」的。CropRect→ 包含{"x","y","width","height"}: 此屬性僅適用於模擬光源。使用參數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]) |
用於在記憶體中的模擬模組(來源或探針)內,覆寫影像中一個像素或多個相鄰像素的指令。此指令對於在執行模擬或儲存模擬之前進行測試修改非常有用。
您可以使用以下指令:
- 在 SimSources 中,用於修改模擬所需的圖像。
-
在 SimProbes 中,用於在影像內視覺化結果。
-
image_index: 要修改哪張圖片,從 0 開始計數。 x,y: 要寫入的左上角像素座標。kernel_row,kernel_col: 若該影像具有核心,請指明您正在修改的核心元素。component: 對於彩色影像,應設定哪個色彩通道。width: 要設定的連續像素行數。附加資料位於data可能會溢出到後面的行。data: 一個位於 十六進制字串 形式,例如:["0A","0B","FF"].
範例
SetSimImageData("Process0/SimSource1", 0, 10, 10, component=0, width=3,
data=["12","13","14"])
影像的修改是暫存的。一旦您選取同一模擬模組中的另一張影像,或重新選取已修改的影像,系統便會從硬碟重新載入該影像,而您的修改內容將被捨棄。若您輸入一項針對新影像的指令,即表示您已選取另一張影像 image_index (同一個模擬模組)在 Python 控制台中,或者在「VisualApplets 」圖形使用者介面(GUI)的檢視器中點擊該模擬模組的另一張圖片。
不過,只要該圖片仍處於活動狀態,您便可將修改後的圖片以新檔名儲存,藉此使修改永久生效。
您可以使用暫存修改過的影像進行模擬。然而,每個 SimSource 模組在修改狀態下僅能使用一張影像進行模擬,因為若在同一個 SimSource 中修改另一張影像,將會重置您先前修改過的影像的像素值。只要每個模擬模組僅使用一張暫存修改過的影像,您便可以隨意使用任意數量的暫存修改過的影像進行模擬。
每個像素一個數值: 指令 SetSimImageData 允許您針對每個像素寫入恰好一個值。因此,在灰階像素中,您必須執行 SetSimImageData 只需執行一次此指令,即可寫入每個像素的完整色彩資訊。在彩色像素中,您每次只能寫入每個像素的三個色彩成分之一。因此,若要變更彩色像素的所有三個色彩成分,您必須執行 SetSimImageData 執行該指令三次。
利用內核進行圖像書寫: 當您對具有核心的影像進行寫入時,使用該指令時,必須指定要覆寫該像素(或多個像素)的核心中的哪個元素 SetSimImageData 除了您要覆寫的(第一個)像素的確切位置之外。若要覆寫所有核元素,您必須執行 SetSimImageData 精確地執行該指令 kernel_row * kernel_col 次。
要使用此命令:
在使用該指令之前,請先關閉模擬模組中包含您要變更之影像的影像檢視器。
請使用索引指定您要修改的圖片 image_index. 注意: image_index 從 0 開始,而VisualApplets 圖形使用者介面(GUI)中模擬模組的圖片編號則從 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. 這樣一來,您就可以定義一個寬度為 width.
指定個別像素的數值 data 以十六進位形式表示,且不需在前面加上「0x」。負數請以二補碼表示法標示。請在 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 執行該指令三次。
使用核函數進行影像讀取: 當您從具有核函數的影像中讀取資料時,使用該指令時,必須指定要讀取該像素(或多個像素)的哪個核函數元素 GetSimImageData 除了您要讀取的(第一個)像素的確切位置之外。若要讀取所有核元素,您必須執行 GetSimImageData精確地執行該指令 kernel_row * kernel_col 次。
要使用此命令:
透過索引號指定圖片 image_index.
請注意: image_index 從 0 開始,而VisualApplets 圖形使用者介面(GUI)中模擬模組的圖片編號則從 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 以指定您要讀取的內核元素。
您可透過模擬模組所連接之連結的「連結屬性」中,查看該模擬影像的核心大小。若某連結的核心大小大於 1 個元素,該連結前必定會出現一個可指定核心的操作子實例(例如,操作子 FIRkernelNxM).
計算核的列數和行數時,起始值為 0。因此,若您有一個僅含一個元素的核,請將這兩項值皆設為 0。

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

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

使用參數 component 用來指定要讀取該像素的哪個色彩成分。在灰階影像中,請設定 component 設為 0。在多組分影像(彩色)中,請透過其在色彩模型中的位置來指定要讀取的組分。範例:設定 component 若要讀取 RGB 影像中的紅色通道,請將其設定為 0,設定 component 若要讀取 RGB 影像中的綠色成分,請將其設為 1,或設定 component 若要讀取 RGB 影像中的藍色成分,請將數值設為 2。
設定位置 (x,y) 以定義您在圖片中讀取的起始點(第一個像素)。
若不使用參數 Width, 會回傳精確一個像素的數值。若您僅指定 width, width 行中的數值 y 將被傳回。若您指定 width 進行明確的生命週期管理即呼叫 height, width * height 會傳回數值。使用 width 進行明確的生命週期管理即呼叫 height 可讓您定義一個感興趣區域(ROI),以讀取該區域的像素值(灰階)或像素成分的值(色彩)。
個別像素的數值以十六進位形式回傳,且不加前綴「0x」。負數則以二進位補碼形式回傳。
範例
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: 元組[整數,整數] = (-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 |
用於建立 VisualApples 影像記憶體的指令,該記憶體可透過類型為 SharedImageMemory.
-
format_dict: 透過字典指定記憶體格式,這相當於指定連結格式(使用諸如LinkParam.MaxImageWidth,LinkParam.MaxImageHeight,LinkParam.ColorFormat, 等)。若未指定,則採用以下預設值:LinkParam.MaxImageHeight:1024LinkParam.MaxImageWidth:1024LinkParam.ColorFormat:VAF_GRAYLinkParam.BitWidth:8
該參數 format_dict 此項為可選。若要透過呼叫來設定影像記憶體, CopySimImageData, 請勿指定任何格式。該格式將由模擬模組覆寫。
當執行以下任一項操作時,系統會首次分配記憶體:
- 《呼喚》
CopySimImageData()用於從模擬元件複製資料 - 方法呼叫
data()用於從SharedImageMemory.
此函式會傳回一個 SharedImageMemory 可與……一同使用的物件 CopySimImageData.
歸來者 SharedImageMemory 該物件提供以下類別方法:
data(): 取得一個memoryview物件,它透過 Python 緩衝區協定提供記憶體存取功能,且無需進行複製。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
複製 SimImageData#
| 指令語法 |
|---|
複製 SimImageData (full_sim_module_name: str, image_index: int, image_memory: SharedImageMemory, copy_to_sim_module: bool = False) |
複製資料的指令 往或來自 一個從或至的模擬模組 SharedImageMemory 緩衝區。預設情況下,資料會從模擬模組複製到影像記憶體中。
- 如果
copy_to_sim_module=False(預設值),資料會從模擬模組流向image_memory. - 如果
copy_to_sim_module=True, 資料在image_memory被寫入模擬模組的映像中。
範例
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)的指令。
若要產生日誌輸出,您可以選擇性地在 save_log_file_name 參數。
Drc2#
| 指令語法 |
|---|
Drc2 (save_log_file_name: str = " ") |
用於啟動第二級設計規則檢查(DRC 2)的指令。
若要產生日誌輸出,您可以選擇性地在 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
處理檔案、路徑、程式執行個體與訊息#
來源#
| 指令語法 |
|---|
來源 (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.
此指令會自動將與指令相同的別名(佔位符)替換為 MakeDirectoryPath.
您可以引用以下內容: path 指向一個不存在的目錄或檔案,以致於最終的路徑名稱所指的目錄或檔案並不存在。
請稍等#
| 指令語法 |
|---|
請稍等 (time_in_milli_sec: int) |
用於等待指定時間的指令 time_in_milli_sec. 在等待期間,VisualApplets 的圖形使用者介面仍保持活躍狀態。
若您設定 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。為避免與 VisualAppets 的現行及/或未來版本發生衝突,請僅使用此範圍內的數值。
使用 text 以輸入訊息。輸入句點後,系統會自動補全該訊息。
範例
Message("Info", 100, "Starting build steps...")
FlushConsole#
| 指令語法 |
|---|
| FlushConsole( ) |
將 Python 的累積輸出傳遞至 stdout/stderr 立即顯示在VisualApplets 控制台中。
退出#
| 指令語法 |
|---|
退出 (discard: bool = False) |
用於結束當前VisualApplets 會話的指令。您可以使用 Exit 即使您目前仍有設計稿開啟。不過,請別忘了先儲存您的變更。
如果您仍有未關閉的設計,且該設計中包含未儲存的變更:
- 若您設定此可選參數
discard至True, 即使該開啟的文件中包含您尚未儲存的變更,系統仍會將其關閉。未儲存的變更將會被捨棄。 - 若您設定此可選參數
discard至False若存在未儲存的變更,該指令將會失敗。 - 如果您使用
Exit在不使用discard參數:即使開啟的檔案中含有未儲存的變更,該指令仍會終止執行,並顯示相應的錯誤訊息。