Quartus® II Tcl 전복 개정 번호 받기

author-image

기준

이 샘플 스크립트는 프로젝트의 버전 제어 소프트웨어 버전 번호에 액세스하는 방법을 보여줍니다. FPGA 디자인에 컴파일된 디자인 파일에 버전 번호를 쓸 수 있습니다. 추가 설계 논리를 사용하면 버전 번호를 FPGA 보고할 수 있습니다. 이 정보는 디버깅 중에 매우 유용할 수 있으며, 특히 여러 프로그래밍 파일 사이를 전환하는 경우에 유용합니다. FPGA 버전 번호를 기준으로 FPGA 어떤 버전의 디자인이 실행되고 있는지 쉽게 확인할 수 있습니다.

이 예에서는 프로젝트에 대한 전복 개정 번호를 사용합니다. svn 정보 명령을 사용하여 지정된 파일에 대한 정보를 얻습니다. svn 정보 명령은 작업 사본에 있는 항목에 대한 정보를 인쇄하며, 다음 양식에 개정 번호가 있는 줄이 포함되어 있습니다.

개정: <비전 번호>

이 예에서는 두 가지 절차를 사용하여 svn 정보 명령을 실행하고 출력을 구문 분석하여 개정 번호를 얻습니다. get_subversion_revision 절차는 svn 정보 명령을 시작합니다. 파일 이름으로 절차를 호출하여 svn 정보 명령과 함께 사용하십시오. 명령을 실행할 수 없는 경우 프로시저가 오류와 함께 반환됩니다. 그렇지 않으면 절차는 아무것도 반환하지 않고 특정 전역 변수를 설정합니다. svn 정보 명령 시간이 초과된 경우 수행된 전역 변수의 값은 -1입니다. 개정 번호가 발견되면 전역 변수의 값은 1이고 개정 번호는 revision_number 전역 변수에 있습니다. 이 예와 같이 메시지에 개정 번호를 표시하거나 설계 파일에 쓸 수 있습니다.

get_version_info 절차는 명령 출력을 한 번에 구문 분석하는 도우미 절차입니다. 여기에는 개정 번호 줄과 일치하고 개정 번호를 추출하는 정기적인 표현식이 포함됩니다.

proc get_subversion_revision { file_name }

    {전역 완료

    # svn 정보 # 명령이 설정 timeout_seconds 30을 완료할 때까지 기다리는 최대 초
    수 #

    svn 정보 명령
    세트 cmd "svn info ${file_name}"

    # 버전 정보를 얻으려고 시도합니다.
    # 명령을 실행할 수 없는 경우 오류를 반환합니다.
    # 그렇지 않으면 명령 출력을 처리하기 위해 파일 이벤트를 설정합니다.
    {[catch {open "|$cmd"} 입력] } {
        반품 -코드 오류 $input
    }

        {fileevent $input 읽을 수 있는 [목록 get_revision_info $input]

        #
        #저장소가 다운된 경우 프로세스가 중단되지 않도록 시간 초과를 설정합니다.
        설정 시간 제한 [후 [ expr { $timeout_초 * 1000 } \
            \[목록 세트 완료 -1] ]

        # 개정 번호가 발견될 때까지 계속하지 마십시오.
        # 또는 작업 시간이 초과됩니다. 어쨌든 시간 초과를 취소합니다.
        vwait
        $timeout
    }

proc get_revision_info { inp }

    {전역 완료 revision_number

    {[eof $inp] }
        {catch {close $inp}
        세트 완료 1 }
    elseif {$done }
        {$inp
    선을 가져옵니다 } 다른
        {는 $inp 선을 가져옵니다
        #
        #개정 번호와 라인을 일치 하려면 일반 표현을 사용 합니다.
        {[regexp {^Revision:\s+(\d+)\s*$} $line 일치 revision_number] } {
            세트 완료 1 } }
        } 세트 완료

0 세트 revision_number
"" # 파일 이름은

일반적으로 프로젝트 파일입니다.
  
  


.qpf
세트 file_name [lindex $quartus(args) 0]

{[catch { get_subversion_revision $file_name } msg] }
    {post_message -type critical_warning "명령을 실행하여\ 개정 번호를 얻을 수
        없습니다. $msg" }

    {-1 == $done }
        {post_message -type critical_warning "개정 번호를 얻는 시간
    초과"} } elseif {[문자열 동등한 "" $revision_number] }
        {post_message post_message -type critical_warning \
            "svn 정보 $file_name의 출력에서 개정 번호를 찾을 수 없습니다."
    }
        {post_message "$file_name에 대한 개정은 $revision_번호입니다"
    }
}

다음 명령으로 시스템 명령 프롬프트에서 스크립트를 실행할 수 있습니다(스크립트가 svn_revision.tcl이라는파일에 있다고 가정).

quartus_sh -t svn_revision.tcl myproject.qpf

스크립트는 다음과 같은 메시지를 생성하여 개정을 보여줍니다.

정보: myproject.qpf에 대한 개정판은 417입니다.

이 예와 같이 전역 변수 revision_number개정 번호가 있는 메시지를 표시하거나 설계 파일에 쓸 수 있습니다.

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