foreach
를 사용하여 리스트에서 특정 요소들을 하나씩 체크하면서 제거하는 방식은 다음과 같습니다:
# 원래 클록 그룹 리스트
set sync_clock_group {clk1 clk2 clk3}
set elements_to_remove {clk2 clk3}
# 새 리스트 생성
set modified_clock_group {}
# 리스트를 순회하며 요소를 제거
foreach clk $sync_clock_group {
if { [lsearch $elements_to_remove $clk] == -1 } {
lappend modified_clock_group $clk
}
}
# 결과 출력
puts "Modified clock group: $modified_clock_group"
설명:
foreach clk $sync_clock_group
:sync_clock_group
리스트를 순회합니다.if { [lsearch $elements_to_remove $clk] == -1 }
: 현재 요소(clk
)가 제거할 리스트에 포함되지 않은 경우(lsearch
가-1
을 반환), 그 요소를 새로운 리스트에 추가합니다.lappend modified_clock_group $clk
: 새 리스트에 해당 요소를 추가합니다.
이 두 가지 방법 중 선택해서 사용할 수 있습니다. lsearch
기반의 방법은 짧고 효율적이며, foreach
는 조금 더 명시적이고 유연한 처리를 할 수 있습니다.
'IT > ASIC | FPGA' 카테고리의 다른 글
반도체 기초 - nominal, 코너, 조건관련 용어 (0) | 2024.10.25 |
---|---|
DC 합성시에 로직 그대로 두기 - preserve 방법, 최적화 방지 (0) | 2024.09.20 |
tcl - 리스트 확장 기능으로 리스트 요소 제거하기 (0) | 2024.09.12 |
RTL 파일리스트 만들기 - find 활용 (0) | 2024.09.04 |
Synopsys dc_shell 실행시 라이센스 대기 옵션 주기 (0) | 2024.08.21 |