시간 그룹은 타이밍 할당을 효율적으로 수행하는 방법입니다. 그룹의 패턴과 일치하는 노드를 포함하는 와일드카드를 지정하고 그룹에서 패턴과 일치하는 노드를 제외하는 와일드카드를 지정할 수 있습니다. 올바른 와일드카드 패턴을 지정했는지 확인하려면 시간 그룹에 있는 모든 노드 목록을 확인해야 할 수도 있습니다.
이 스크립트는 설계의 시간 그룹에 있는 노드를 정교하게 설명합니다. 스크립트는 설계의 모든 타이밍 노드를 반복하여 타이밍 노드의 이름을 각 시간 그룹 포함 패턴과 비교한 다음 각 시간 그룹 제외 패턴을 비교합니다.
이 스크립트에는 제한이 있습니다. 중첩된 시간 그룹을 처리하지 않습니다. 시간 그룹을 다른 시간 그룹의 요소로 포함 또는 제외하는 것은 유효하지만 이 스크립트에서 지원하지는 않습니다.
시간 그룹에 버스의 모든 비트를 포함하려면 Quartus II 소프트웨어의 버전 4.2 이하의 버스 이름 뒤에 별표 를 사용하십시오. 버전 5.0부터 별표 없이 버스 이름을 지정할 수 있습니다. 스크립트에는 소프트웨어 버전 번호를 기준으로 이 동작에 대한 확인이 포함되어 있습니다.
전역 quartus load_package advanced_timing load_package 프로젝트 # 스크립트가 4.2 및 이전, #또는 5.0 이상에서 실행되는지 여부를 결정합니다. 5.0 이상은 <bus 이름> 유효한 시간 그룹 항목으로 인식하고 4.2 및 그 전에는 #<bus 이름>*을 타임그룹 항목으로 인식합니다. regexp {^Version(\d)} $quartus(버전) 일치 qver($qver < 5} {need_asterisk 1} 기타 {설정 need_asterisk 0 } project_open [lindex $quartus(args) 0] create_timing_netlist 세트 tg_name [lind]ex $quartus(args) 1] post_message "다음 노드는 시간 그룹 $tg_name:" 세트 tg_name [escape_brackets $tg_name] 세트 tg_members [timegroup -get_members $tg_name] 세트 tg_exceptions [timegroup-get_exceptions $tg_ 이름] # 이 루프는 설계 foreach_in_collection node_id 모든 타이밍 노드를 통과합니다[get_timing_nodes -type all] { 세트 node_name [get_timing_node_info -info name $node_id] # 노드 이름이 버스에 없는 경우 bus_name 지웁니다. #그렇지 않으면 설정합니다. { 경우 { ! [regexp {(.*?) \[\d+\]} $node_name match bus_name] } { bus_name "" } # 이제 노드 이름이 있습니다. {[문자열 일치 $esc_name $node_name] } {세트 일치 1 } elseif { 경우 지정된 시간 그룹 세트의 패턴이 0 foreach_in_collection 멤버 $tg_Members {esc_name [escape_brackets [lindex $member 2]와 일치하는지 확인하십시오. { 세트 일치 1 } elseif { ! $need_asterisk & \ [문자열 일치 $esc_name $bus_name] } { 세트는 1 } } # $matches 여기에 1인 경우 시간 그룹에서 멤버 이름 #을 일치 했습니다. 그러나 여전히 예외와 일치할 수 있습니다. # 여기에서 확인하십시오. {$matches } {foreach_in_collection 예외 $tg_exception {esc_name [escape_brackets [lindex $exception 2]] {[문자열 일치 $esc_name $node_name] } { 세트 일치 일치 0 } elseif { $need_asterisk && \ [문자열 일치 $esc_name $bus_name] } { 세트 일치 0 } } } } # 모든 예외를 살펴보았습니다. $matches 여전히 1인 경우 노드 이름은 멤버 패턴과 일치하며 예외 패턴과 일치하지 않으므로 노드 이름을 인쇄하십시오. {$matches } {post_message $node_name} } project_close