這個範例程式會產生一個 VHDL 檔案,其六重價值儲存在一銀行的收銀機中。您可以使用此程式將少量資料 (例如修訂版編號) 自動寫入設計中的註冊銀行。
所產生的 VHDL 檔案名為 version_reg.vhd。請使用您想要儲存在收銀機中的六倍號碼來呼叫程式。在此頁面底部有一個如何呼叫程式的範例。
當您在 Tcl 腳本中呼叫程式時,您應該在擷取聲明中結束程式通話,因為如果建立 VHDL 檔案有問題,程式會退回錯誤。您可以揑取錯誤並顯示。
proc generate_vhdl { hex_value \ 設定 num_digits [字串長度 $hex_value] 集 bit_width [expr { 4 * $num_位數 ] ] 設定為 high_index [expr { $bit_寬度 - 1 ] 設定reset_value [字串重複「0」$num_位數 ],如果 { [catch { set fh [開啟「version_reg.vhd」w ] $fh「LIBRARY ieee;\nUSE ieee.std_logic_1164.ALL;」 將$fh「實體version_reg IS」 放入$fh「 埠 (」,$fh「 頻率:IN STD_LOGIC;」 將$fh「 重設:IN STD_LOGIC;」 將 $fh「data_out:OUT STD_LOGIC_VECTOR(${high_index\ downto 0)」 放 $fh「);」 將$fh「END version_reg;」 將$fh「ARCHITECTURE rtl of version_reg IS」 放$fh「BEGIN」, 將$fh「流程(頻率,重設)」 放 $fh「開始 」,$fh「IF( 重設='0')」放入 $fh」 data_out <=X\"${reset_value\\"」 將 $fh「ELSIF rising_edge(時鐘)」 放$fh「data_out <= X\"${hex_value\\", 讓$fh「END IF;」 將$fh「END PROCESS;」 放$fh「END rtl;」 關閉$fh [ res ] \ 回程代碼錯誤 $res { 其他 { 退回 1 =
使用捕捉聲明
以下是如何將上述程式稱為並摽取任何錯誤的範例。
設定my_hex_number「A5」,如果 {[捕捉 { generate_vhdl $my_hex_number [ res] { { post_message -類型錯誤「無法產生 VHDL 檔案\n$res」。