Quartus® II Tcl 예: VHDL 레지스터 뱅크의 버전 번호

이 예 절차는 레지스터 은행에 16진수 값이 저장된 VHDL 파일을 생성합니다. 이 절차를 사용하여 디자인의 등록 은행에 소량의 데이터(예: 개정 번호)를 자동으로 작성할 수 있습니다.

생성된 VHDL 파일의 이름은 version_reg.vhd. 등록 은행에 저장하려는 16진수 번호로 절차를 호출합니다. 이 페이지 하단에 프로시저를 호출하는 방법에 대한 예가 있습니다.

Tcl 스크립트에서 프로시저를 호출할 때 VHDL 파일을 만드는 데 문제가 있는 경우 프로시저가 오류를 반환하기 때문에 프로시저 콜을 catch 문으로 감싸야 합니다. 오류를 파악하여 표시할 수 있습니다.

proc generate_vhdl { hex_value } {세트 num_digits [문자열 길이 $hex_value] 세트 bit_width [expr { 4 * $num_digits } ] 세트 high_index [expr { $bit_너비 - 1 } ] reset_value 설정 [문자열 반복 "0" $num_digits] {[catch { set fh [open "version_reg.vhd" w] $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 "VERSION_REG IS의 아키텍처 rtl"은 "BEGIN"$fh "PROCESS(clock,Reset)"$fh 넣습니다$fh "시작"은 "IF(reset='0')"가 $fh "data_out < 넣습니다" $fh 넣습니다. $fh "ELSIF reset_value rising_edge(클럭)"을 $fh "DATA_OUT <= X\$fh"${hex_value}\"$fh "END IF"를 넣습니다. $fh "END PROCESS;"를 넣습니다. $fh "END rtl;"을 넣습니다. 닫기 $fh } res] } { 반품 -코드 오류 $res } 기타 { 반품 1 } }

Catch 문 사용

다음은 위의 절차를 호출하고 오류를 파악하는 방법의 예입니다.

{[catch { generate_vhdl $my_hex_number } res] } { post_message -type 오류 "VHDL 파일\n$res"}를 my_hex_number 설정하십시오. 스크립트가 여기에 도착하면 오류가 없습니다.

이 페이지의 콘텐츠는 원본 영어 콘텐츠에 대한 사람 번역 및 컴퓨터 번역의 조합으로 완성되었습니다. 이 콘텐츠는 편의와 일반적인 정보 제공을 위해서만 제공되었으며, 완전하거나 정확한 것으로 간주되어선 안 됩니다. 이 페이지의 영어 버전과 번역 간 모순이 있는 경우, 영어 버전이 우선적으로 적용됩니다. 이 페이지의 영어 버전을 확인하십시오.