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

author-image

기준

이 예 절차는 레지스터 은행에 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 설정하십시오.
스크립트가 여기에 도착하면 오류가 없습니다.

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