ขั้นตอนตัวอย่างนี้สร้างไฟล์ VHDL ด้วยมูลค่าฐานสิบหกที่จัดเก็บไว้ในการลงทะเบียนของธนาคาร คุณสามารถใช้ขั้นตอนนี้เพื่อเขียนข้อมูลจํานวนน้อยโดยอัตโนมัติ (เช่น หมายเลขการปรับปรุง) ไปยังธนาคารลงทะเบียนในการออกแบบของคุณ
ไฟล์ VHDL ที่สร้างขึ้นมีชื่อ ว่า version_reg.vhd. โทรติดต่อขั้นตอนด้วยหมายเลขฐานสิบหกที่คุณต้องการจัดเก็บไว้ในธนาคารลงทะเบียน มีตัวอย่างวิธีโทรติดต่อขั้นตอนที่ด้านล่างของหน้านี้
เมื่อคุณเรียกใช้กระบวนการในสคริปต์ Tcl คุณควรห่อหุ้มการเรียกขั้นตอนในคําชี้แจงเนื่องจากขั้นตอนส่งคืนข้อผิดพลาดหากมีปัญหาในการสร้างไฟล์ VHDL คุณสามารถเกิดข้อผิดพลาดและแสดงผลได้
ตั้งค่าgenerate_vhdl proc { hex_value } { { set num_digits [ความยาวสตริง $hex_value] bit_width [expr { 4 * $num_digits } ] ตั้งค่าhigh_index [expr { $bit_width - 1 } ] ตั้งค่าreset_value [string repeat "0" $num_digits] หาก { [protected { set fh [open "version_reg.vhd" ] ใส่$fh "LIBRARY ieee;\nUSE ieee.std_logic_1164.ALL;" ใส่$fh "ENTITY version_reg IS" ใส่ $fh " PORT (" ใส่$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 "PROCESS (clock,reset)" ใส่ $fh " BEGIN" ใส่$fh " IF (reset='0') THEN" ใส่$fh " data_out <=X\"${reset_value}\"" ใส่$fh " ELSIF rising_edge (clock) THEN" ใส่ $fh " data_out <= X\"$hex_value}\"" ใส่ $fh " END IF;" ใส่$fh "END PROCESS;" ใส่$fh "END rtl;" ปิด $fh } res ] } { ข้อผิดพลาด return -code $res } อื่นๆ { return 1 }
การใช้งบแสดงความได้เปรียบ
ต่อไปนี้เป็นตัวอย่างวิธีเรียกขั้นตอนข้างต้นและแสดงข้อผิดพลาดใดๆ
ตั้งค่าmy_hex_number "A5" หาก { {generate_vhdl $my_hex_number } res] } { post_message -type error "การให้ข้อมูลไม่ได้สร้างไฟล์ VHDL\n$res" } # หากสคริปต์มาถึงนี่ แสดงว่าไม่มีข้อผิดพลาด