embeded/FPGA - ALTERA

tcl, tk, tcl/tk

구차니 2026. 10. 31. 18:09

vivado에만 있는 줄 알았는데,  altera에서도 있다고 해서 일단은 호기심에 조사중

2. FPGA 프로젝트 관리 — 서로 다름
기능 Vivado Quartus
프로젝트 생성 create_project project_new
프로젝트 열기 open_project project_open
프로젝트 닫기 close_project project_close
프로젝트 저장 save_project_as 등 export_assignments
디바이스 선택 set_part set_global_assignment -name DEVICE
최상위 모듈 설정 set_property top set_global_assignment -name TOP_LEVEL_ENTITY
Verilog 추가 add_files set_global_assignment -name VERILOG_FILE
VHDL 추가 add_files set_global_assignment -name VHDL_FILE
SystemVerilog 추가 add_files set_global_assignment -name SYSTEMVERILOG_FILE
제약 파일 등록 add_files -fileset constrs_1 set_global_assignment -name SDC_FILE
소스 목록 조회 get_files get_all_global_assignments 등
프로젝트 설정 조회 get_property get_global_assignment
프로젝트 설정 변경 set_property set_global_assignment
동일한 작업을 수행하는 대표 명령어이며, 반드시 1:1로 대응하는 것은 아닙니다. 

3. FPGA 핀 및 속성 설정 — 서로 다름
기능 Vivado Quartus
외부 핀 위치 set_property PACKAGE_PIN set_location_assignment
I/O 표준 set_property IOSTANDARD set_instance_assignment -name IO_STANDARD
풀업 설정 set_property PULLUP set_instance_assignment -name WEAK_PULL_UP_RESISTOR
구동 강도 set_property DRIVE set_instance_assignment -name CURRENT_STRENGTH_NEW 등
내부 셀 속성 set_property set_instance_assignment 등
최적화 보존 DONT_TOUCH, KEEP 속성 PRESERVE_REGISTER, KEEP 등
디바이스 정보 조회 get_parts, get_property get_part_info 등

4. 타이밍 제약 — 대부분 유사
SDC 기반 명령은 공통으로 사용할 수 있는 부분이 많습니다.
기능 Vivado Quartus 호환성
기본 클록 생성 create_clock create_clock 높음
파생 클록 create_generated_clock 동일 높음
입력 지연 set_input_delay 동일 높음
출력 지연 set_output_delay 동일 높음
False Path set_false_path 동일 높음
Multicycle Path set_multicycle_path 동일 높음
최대 지연 set_max_delay 동일 높음
최소 지연 set_min_delay 동일 높음
클록 그룹 set_clock_groups 동일 높음
클록 불확실성 set_clock_uncertainty 동일 높음
포트 검색 get_ports get_ports 높음
클록 검색 get_clocks get_clocks 높음
내부 핀 검색 get_pins get_pins 부분 호환
내부 셀 검색 get_cells get_cells 부분 호환

5. 합성 및 배치·배선 — 상당히 다름
기능 Vivado Quartus
합성 실행 launch_runs synth_1 또는 synth_design execute_module -tool map
배치·배선 place_design, route_design execute_module -tool fit
전체 컴파일 launch_runs impl_1 등 execute_flow -compile
비트스트림 생성 write_bitstream execute_module -tool asm
합성 결과 열기 open_run synth_1 도구별 데이터베이스/리포트 API
타이밍 분석 report_timing Timing Analyzer의 report_timing
자원 사용량 report_utilization Fitter/Analysis & Synthesis 리포트
소비 전력 report_power Power Analyzer
실행 완료 대기 wait_on_run execute_flow 등은 동기 실행

6. Tk GUI 명령어 — 기본 문법 동일, 실행 환경 차이
Tk는 Tcl GUI 툴킷이므로, Tk를 사용할 수 있는 인터프리터라면 위젯 명령 자체는 동일합니다.
GUI 기능 Vivado의 Tk 환경 Quartus의 Tk 환경
창 제목 wm title 동일
창 크기 wm geometry 동일
버튼 button 동일
텍스트 label 동일
입력창 entry 동일
여러 줄 편집 text 동일
체크박스 checkbutton 동일
라디오 버튼 radiobutton 동일
프레임 frame 동일
자동 배치 pack 동일
격자 배치 grid 동일
좌표 배치 place 동일
이벤트 처리 bind 동일
주기적 실행 after 동일
파일 선택창 tk_getOpenFile 동일
메시지 박스 tk_messageBox 동일

7. IP 및 시스템 통합 명령 — 거의 별개
기능 Vivado Quartus
IP 생성 create_ip qsys-script/IP 관련 Tcl API
IP 파라미터 설정 set_property CONFIG.* set_instance_parameter_value 등
블록 디자인 생성 create_bd_design create_system
IP 인스턴스 추가 create_bd_cell add_instance
IP 연결 connect_bd_net, connect_bd_intf_net add_connection
주소 할당 assign_bd_address set_connection_parameter_value 등
시스템 검증 validate_bd_design validate_system
시스템 생성 generate_target save_system, qsys-generate 등

[링크 : https://chatgpt.com/share/6ae5b255-64bc-83e8-8e86-148906633033]

 

존 오스터하우트 라는 사람이 혼자서 북치고 장구치고 해버렸네 -ㅁ-

설계자 존 오스터하우트
개발자 Tcl 코어 팀
발표일 1988년(38년 전)
최근 버전 9.1.0[1] 위키데이터에서 편집하기
최근 버전 출시일 2026년 9월 29일(32일 전)

[링크 : https://ko.wikipedia.org/wiki/Tcl]

 

원저자 John Ousterhout
개발자 Tcl Core Team[1]
발표일 1991년(35년 전)
안정화 버전
9.1.0[2] 위키데이터에서 편집하기 / 2026년 9월 29일

[링크 : https://en.wikipedia.org/wiki/Tk_(software)]

 

우분투에서 설치는 다음과 같고

$ sudo apt install tcl tk

 

실행 명령어는 아래와 같다.

$ whereis tclsh
tclsh: /usr/bin/tclsh /usr/share/man/man1/tclsh.1.gz

$ whereis wish
wish: /usr/bin/wish /usr/share/man/man1/wish.1.gz

 

아무튼.. tcl이 엄청 오래된건줄 알았는데 python이 예상외로 오래 되었다는것에 놀라는 중 

$ tclsh
% set a 20
20
% puts "$a"
20
% [expr $a+$a]
invalid command name "40"

 

리눅스에서는 아래처럼 실행하면 프롬프트가 뜨고 창이 뜨면서 바로 gui를 만들수 있다.

$ wish


% wm title . "Tk Example"