이 스크립트는 최대 및 최소 타이밍 분석 중에 Quartus® II 소프트웨어에서 생성한 두 개의 SDO 파일의 타이밍 매개변수가 결합된 SDO 파일을 만듭니다.
Quartus II 소프트웨어는 각 트리플릿의 3개의 지연 값에 대해 최소 또는 최대 지연 값을 사용하는 별도의 SDO 파일을 생성합니다. SDO 파일의 트리플릿은 다음과 같은 최소, 일반 및 최대 지연 값을 지원합니다(min:typ:max). 최대 타이밍 분석을 위해 Quartus II 소프트웨어에서 생성한 SDO 파일에는 최대 지연 값(최대:max:max)만 포함된 지연 세 쌍둥이가 있습니다. 최소 타이밍 분석 중에 생성된 SDO 파일에는 다음과 같은 최소 지연 값만 포함된 지연 트리플릿이 포함되어 있습니다(최소:min:min).
이 스크립트는 SDO 파일과 최소 및 최대 값을 결합하여 최소 및 최대 숫자(min:max:max)가 모두 있는 트리플릿으로 하나의 파일을 만듭니다. 일반적인 지연 값에 대해 최대 지연 값도 중복됩니다. 이 스크립트에서 생성한 파일은 Altera 최소/최대 혼합 분석을 위해 작동하도록 보장되지 않습니다.
다음과 같은 스크립트를 실행합니다: quartus_sh -t combine_sdo.tcl -min_sdo <min sdo 파일> -max_sdo <max sdo 파일> -new_sdo <새진 sdo 파일>
패키지에는 cmdline 변수가 필요합니다::argv0 $::quartus(args) 설정 옵션 { { {"min_sdo.arg" ""최소 타이밍이 있는 SDO의 파일 이름" } { {"max_sdo.arg" "최대 타이밍이 있는 SDO의 파일 이름" } { {"new_sdo.arg" "파일 이름" 최소/최대 타이밍의 SDO"} } \ } 배열 세트 옵트 [:::cmdline::getoptions::argv0 $options "Bad option"] 설정 최소 [open $opts(min_sdo)] 세트 최대 [open $opts(max_sdo)] 설정 [open $opts(new_sdo) w] # 파일 세트의 줄 번호를 추적 line_num 1 { 1 } { # [$min min_line 가져옵니다] more_max more_min 설정된 최대 sdo 파일 집합에서 다음 줄 읽기 [$max max_line 가져옵니다. {$more_min < 0 || $more_max < 0 } { 한 파일에 다른 파일보다 더 많은 줄 #이 있을 수 있습니다. 여기에 대해 경고하십시오. {$more_min >= 0 } {post_message -type warning \ "$opts(min_sdo)에서 줄 $line_num으로 시작하는 건너뛰기 선" } {$more_max > post_message 0 } { post_message -type warning \ "$opts(max_sdo)에서 줄 $line_num으로 시작하는 건너뛰기 선" } # 파일 중 하나 이상이 더 이상 데이터가 없기 때문에 루프를 중지해야 합니다. 중단 } {[regexp {\(\d+:\d+:\d+:\\)} $min_line] } { # 줄에 지연 트리플릿이 있는 경우 # 값을 결합해야 합니다 # new_line 인쇄할 텍스트를 축적합니다. #line_differences 지연 트리플릿 외에 # 줄에 차이가 있을 경우 설정됩니다. new_line "" 세트 line_differences 0 # 줄에 지연 트리플릿이 있는 동안... {동안 {[regexp {\(\d+:\d+:\d+:\\)} $min_line] } { # 지연 트리플릿, #지연 값 자체까지 모든 것을 추출합니다. #delay triplet regexp {^(.*?\())(\d+):\d+:\d+(\).*$)} $min_line \ min_start min_value min_line regexp {^(.)와 일치합니다. *?\()\d+:\d+:(\d+)(\).*)} $max_line \ 일치 max_start max_value max_line # 지연 트리플릿 외에 줄 #에 차이가 있는 경우 플래그 설정 { 경우 { ! [문자열 동일 $min_시작 $max_start] } { line_differences 1 } # 결합된 지연 트리플릿을 새 줄 부록 new_line $min_start \ $min_value : $max_value : $max_value } # 줄에 남은 텍스트에 #차이를 확인합니다. { 경우 { ! [문자열 동일 $min_line $max_line] } { line_differences 1 }를 설정하면 { $line_difference } { post_message -type warning \ [조인 [목록 \ "이 줄 $line_num의 이 부분은 다릅니다." \ "$opts(min_sdo): $min_line" \ "$opts(max_sdo): $max_line"] \ "\n"] } 나머지 줄의 나머지 부분을 놓습니다. 마지막 지연 트리플릿 후 새 줄에 함께 new_line $min_line } 기타 {# 줄에 지연 트리플릿이 없는 경우, 최소 파일과 최대 파일의 줄은 #같아야 합니다(예: 파일에 날짜 스탬프가 있는 경우 제외). 빠른 검사를 통해 줄 번호가 동일한지 확인하고 다른 경우 경고를 인쇄하십시오. { 경우 { ! [문자열 동일 $min_line $max_line] } { post_message -type warning \ [조인 [목록 \ "Line $line_num이 다릅니다." \ "새 파일에는 아래 첫 번째 줄이 포함되어 있습니다." \ "$opts(min_sdo): $min_line" \ "$opts max_sdo(max_sdo): $max_line"] \ "\n"] } 세트 new_line $min_line} # $new $new_line incr line_num } # 파일을 통해 루핑 완료. 닫기 $min 닫기 $max 닫기 $new post_message "파일을 $opts(new_sdo)로 결합했습니다"