Quartus® II Tcl 예: 프로젝트 열기

author-image

기준

거의 모든 Quartus II Tcl 스크립트가 프로젝트를 엽니다. 프로젝트를 여는 방법에는 여러 가지 방법이 있으며, 이 페이지에는 프로젝트 열기를 위한 코드 샘플이 포함되어 있습니다.

프로젝트 및 개정 이름이 런타임에 스크립트에 명령줄 인수로 전달되도록 스크립트를 작성하는 것이 유용합니다. 이렇게 하면 다양한 프로젝트에서 스크립트를 쉽게 재사용할 수 있습니다. Quartus II 소프트웨어에 포함된 cmdline Tcl 패키지를 사용하면 명령줄 인수를 스크립트에 쉽게 전달할 수 있습니다.

다음은 명령줄 인수로 지정한 프로젝트 및 개정 이름으로 프로젝트를 여는 코드 예입니다.

패키지에는 cmdline
세트 옵션 {\
    { "project.arg" "" "프로젝트 이름" } \
    {"revision.arg" "개정 이름"
} } 배열 세트 선택
[::cmdline:::getoptions quartus(args) $options]

project_open $opts(프로젝트) -개정 $opts(개정)

DOS 또는 쉘 프롬프트에서 다음과 같이 해당 코드가 포함된 스크립트를 실행할 수 있습니다.

quartus_sh -t script.tcl -project top -개정 먼저

샘플 코드 개선

예시 코드를 수정하여 검사 및 개선 사항을 추가할 수 있는 다양한 방법이 있습니다.

간단한 오류 검사

project_open 명령은 지정된 프로젝트가 없는 경우 오류를 생성합니다. 이 예와 같이 project_exists 명령을 사용하여 열기 전에 해당 명령이 존재하는지 확인합니다.

패키지에는 cmdline
세트 옵션 {\
    { "project.arg" "프로젝트 이름" } \
    { "revision.arg" "" "개정 이름"
} } 배열
세트가 필요합니다 [::cmdline::getoptions quartus(args) $options]

{![ project_exists $opts(project)] } {
    post_message -type 오류 "Project $opts(project)가 존재하지 않습니다"
    exit }

project_open $opts(project) -개정 $opts(개정)

지정되지 않은 개정 이름 처리

개정 이름이 명령줄 인수로 지정되지 않은 경우 사례를 처리하기 위해 예제 코드를 수정할 수도 있습니다. 아래 코드 예의 일부에서는 프로젝트에 두 개 이상의 개정이 있는 경우에만 개정 이름을 지정해야 합니다. 다른 사용자와 함께, 프로젝트에 두 개 이상의 개정이 있더라도 코드가 자동으로 특정 기본 개정을 열 수 있습니다.

Quartus II Tcl 명령은 -revision 옵션으로 개정 이름이 지정되지 않은 경우 지정된 프로젝트와 동일한 이름으로 개정을 여는 기본값을 project_open. 이 예에서는 project_open 명령의 기본 기능을 보여줍니다.

패키지에는 cmdline
세트 옵션 {\
    { "project.arg" "" "프로젝트 이름" } \
    { "revision.arg" "개정 이름"
} } 배열 세트
옵트 [::cmdline::getoptions quartus(a)

{[문자열 $options이 ""$opts(개정)] }
    {project_open $opts(project) -개정 $opts(project)
} 기타
    {project_open $opts(project) -개정 $opts(개정)
}

다음 코드 예제를 사용하여 스크립트를 실행할 때 시간을 절약하는 다양한 방법으로 해당 동작을 수정할 수 있습니다. 이러한 예는 개정 이름이 명령줄 인수로 지정되지 않은 경우를 결정하고 다른 방법을 사용하여 project_open 명령에 대한 개정 옵션과 함께 사용할 개정 이름을 결정합니다.

개정 이름 기본값

다음 코드를 사용하여 개정 이름이 명령줄 인수로 지정되지 않은 경우 한 번의 개정만으로 프로젝트를 열 수 있습니다. 단일 개정이 있는 프로젝트는 일반적으로 개정 및 프로젝트 이름이 동일하지만 필요하지는 않습니다. -개정 옵션 없이 project_open 명령을 사용하면 프로젝트의 개정 이름이 프로젝트 이름과 일치하지 않을 때 오류가 발생합니다.

이 예에서는 get_project_revisions 명령을 사용하여 지정된 프로젝트의 모든 개정 사항 목록을 검색합니다. 개정판이 하나뿐인 경우(목록 길이는 1) 스크립트는 해당 개정 이름을 사용하여 프로젝트를 엽니다. 개정 이름 목록을 사용하면 수정 이름이 프로젝트 이름과 다른 경우에도 프로젝트가 올바르게 열립니다.

패키지에는 cmdline
세트 옵션 {\
    { "project.arg" "프로젝트 이름" } \
    { "revision.arg" "" "개정 이름"
} } 배열
세트가 [:cmdline:::getoptions quartus(args) $options]

경우 {[문자열이 동일"$opts post_message (개정)] }
    {1 == [llength get_project_revisions $opts $revisions] }
        {set opts(개정) }
    {$revisions post_message
        -type error \
            "프로젝트에서 두 개 이상의 개정판 \
            $opts(project)"
        exit
    }
}

project_open $opts(프로젝트) -개정 $opts(개정)

현재 개정에 대한 기본값

명령줄 인수로 개정 이름을 지정하지 않으면 다음 코드를 사용하여 프로젝트를 열고 현재 개정에 대한 기본값을 열 수 있습니다. 현재 개정은 프로젝트를 종료하기 전에 마지막으로 작업한 개정판입니다. 하나의 개정이 있는 프로젝트에서 해당 개정은 항상 현재 개정입니다. 이 예에서는 get_current_revision 명령을 사용하여 지정된 프로젝트의 현재 개정 이름을 검색합니다.

패키지에는 cmdline
세트 옵션 {\
    { "project.arg" "" "프로젝트 이름" } \
    {"revision.arg" "개정 이름"
} } 배열
세트가 필요합니다[::cmdline::getoptions quartus(()) args) $options]

{[문자열이 "" $opts(개정)] } {
    set opts(개정) [get_current_revision $opts(project)]
}

project_open $opts(project) -개정 $opts(개정)

인쇄 개정 이름

경우에 따라 프로젝트에 두 개 이상의 개정이 있는 경우 개정 이름을 요구할 수 있으며, 수정 이름이 제공되지 않으면 개정 이름 목록을 참조하십시오. 다음 코드를 사용하여 개정 이름이 명령줄 인수로 지정되지 않고 프로젝트에 두 개 이상의 개정이 있을 때 모든 개정을 인쇄할 수 있습니다. 이 예에서는 get_project_revisions 명령을 사용하여 프로젝트의 모든 개정 사항 목록을 검색합니다.

패키지에는 cmdline
세트 옵션 {\
    { "project.arg" "프로젝트 이름" } {
    {"revision.arg" "" "개정 이름"
} } 배열
세트가 선택됩니다 [::cmdline:::getoptions quartus(args) $options]

{[문자열 같음" $opts(개정)] }
    {post_message "개정 이름을 지정하지 않았습니다.
    설정 개정 [get_project_revisions $opts(프로젝트)]
    {1 == [llength $revisions] } {
        set opts(개정) [lindex $revisions 0]
        post_message "개정 $opts(개정)
    )" }
        {post_message "이 개정은 프로젝트에 존재합니다:"
        개정판 $revisions
            {post_message "$revision" } exit }
        }

project_open $opts(project) -개정 $opts(개정)

결합된 예

이러한 예는 위에서 설명한 개선 사항 중 일부를 결합하는 방법을 보여줍니다.

예 1

다음 간단한 예에서는 지정된 프로젝트가 있는지 확인합니다. 명령줄 인수로 지정된 개정 이름이 없으면 현재 개정판이 열립니다. 그렇지 않으면 명령줄 인수로 지정된 개정 이름으로 프로젝트를 엽니다.

패키지에는 cmdline
세트 옵션 {\
    { "project.arg" "프로젝트 이름" } \
    { "revision.arg" "" "개정 이름"
} } 배열
세트가 [::cmdline::getoptions quartus(args) $options]

경우 {[project_exists $opts $options(project)]}
    {[문자열이 "" $opts(개정)]} {
        {project_open $opts(프로젝트) -revision \
            [get_current_revision $opts(project)]
    }
        {project_open $opts(프로젝트) -개정 $opts(개정)
    } 다른
    {post_message -type 오류 "프로젝트 $opts(프로젝트)가 존재하지 않음"
    종료
}

Quartus II 소프트웨어의 버전 4.1(:quartus::p roject 패키지의 버전 3.0)을 시작으로 project_open 명령은current_revision 옵션을 지원합니다. Quartus II 소프트웨어의 버전 4.1 이상을 사용하는 경우 위 스크립트에서 다음 명령을 교체할 수 있습니다.

project_open $opts(프로젝트) -개정 \
            [get_current_revision $opts(프로젝트)]

이 명령으로

project_open $opts(프로젝트) -current_revision

예 2

다음 예에서는 위에 설명된 여러 가지 개선 사항을 결합합니다. 지정된 프로젝트가 존재하는지 확인하고 개정이 하나뿐인 경우 해당 프로젝트가 열립니다. 두 개 이상의 개정이 있는 경우 개정 및 종료 목록을 인쇄합니다.

패키지에는 cmdline
세트 옵션 {\
    { "project.arg" "프로젝트 이름" } \
    { "revision.arg" "" "개정 이름"
} } 배열
세트가 필요합니다 [::cmdline::getoptions quartus(args) $options]

{![ project_exists $opts(project)] } }
    {post_message -type 오류 "Project $opts(project)가 존재하지 않습니다"
종료}

{[문자열이 "같음" $opts(개정)] }
    {post_message "개정 이름을 지정하지 않았습니다.
    세트 개정 [get_project_revisions $opts(프로젝트)]
    {1 == [llength $revisions] }
        {set opts(개정) [lindex $revisions 0]
        post_message "개정 $opts 한 개 있습니다((). 개정)"
    }
        {post_message "이 개정은 프로젝트에 존재합니다:" 개정 $revisions
            {post_message "$revision"
        } exit } }

project_open $opts(project) -개정 $opts(개정)

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