산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> VHDL

젠킨스, 비바도, 깃허브로 리눅스 VPS에서 FPGA 개발 자동화하기

지속적 통합·배포(CI/CD)와 FPGA 개발

지속적 배포와 지속적 통합은 코드 변경과 배포 사이의 주기 시간을 단축하는 애자일 소프트웨어 개발 방법론입니다. 자동화를 통해 코드 변경을 검증하고 릴리스 파일을 빌드함으로써 팀은 더 생산적이고 효율적이 될 수 있습니다.

소프트웨어 회사는 오랫동안 지속적 개발을 실천해 왔지만, FPGA 프로젝트에도 똑같이 적용할 수 있습니다. 이 튜토리얼에서는 젠킨스(Jenkins), 자일링스 비바도(Xilinx Vivado), 깃/깃허브(Git/GitHub) 소스 제어 관리(SCM) 시스템을 사용해 가상 사설 서버(VPS)에 자동화 서버를 설정하는 방법을 가르칩니다.

젠킨스란?

젠킨스 자동화 서버는 자바로 작성된 무료 오픈소스 프로그램으로 윈도우나 리눅스에서 실행됩니다. 헤드리스 서버의 가장 일반적인 플랫폼인 리눅스를 사용합니다. 젠킨스는 리눅스에서 데몬 프로세스로, 윈도우에서 서비스로 실행됩니다. 시작 시 내장 웹 서버를 실행해 사용자 인터페이스를 제공하며, 대부분의 사용자는 웹 인터페이스를 통해 젠킨스와 상호작용합니다. 웹 GUI를 통해 새로운 자동화 프로젝트를 추가하고 기존 프로젝트를 관리할 수 있습니다.

예제 프로젝트

자동화 서버는 더 큰 프로젝트를 진행하는 팀에 가장 유용합니다. 따라서 8개의 깃 저장소로 구성된 예제 FPGA 프로젝트를 만들었습니다. 이 프로젝트는 패스트트랙 과정의 7세그먼트 디스플레이 카운터를 자일링스 ZedBoard로 포팅한 것입니다.

깃허브의 8개 저장소

각 저장소는 VHDL 모듈과 테스트벤치를 포함합니다. packages 저장소는 상수와 타입을 정의하는 3개의 VHDL 패키지만 포함합니다. 또한 seg7 최상위 모듈은 물리적 구현의 클럭 속도와 핀 할당을 정의하는 제약 파일을 포함합니다. 대부분의 대규모 VHDL 프로젝트는 여러 저장소의 모듈을 사용합니다. 기업은 일반적으로 많은 설계에서 재사용하는 패키지와 모듈 라이브러리를 보유합니다. 이 비교적 단순한 설계를 여러 모듈로 분할해 이를 모방했습니다.

가상 사설 서버(VPS)

젠킨스는 어떤 윈도우나 리눅스 컴퓨터에서도 실행할 수 있지만, 실용적인 목적을 위해 전용 서버에서 실행하는 것이 좋습니다. 자동화 서버는 항상 가동 중이어야 하고 모든 팀원이 접근 가능해야 합니다. 충분한 용량의 물리적 서버가 있다면 좋지만, 대부분은 더 빠르고 저렴한 솔루션인 VPS를 사용합니다. VPS는 호스팅 회사에서 인터넷을 통해 임대하는 가상 컴퓨터로, 실제 윈도우나 리눅스 컴퓨터처럼 상호작용하고 원하는 소프트웨어를 설치할 수 있습니다. 리눅스를 사용하는 것이 우리 용례에 가장 적합합니다.

업클라우드(UpCloud) VPS 배포

업클라우드 계정에 로그인한 후 Servers → Deploy server로 새 VPS 인스턴스 생성을 시작합니다. 전 세계 여러 데이터 센터 중 가장 가까운 위치를 선택합니다. 젠킨스는 많은 리소스를 사용하지 않지만, 자일링스 비바도는 상당한 RAM을 소비합니다. 따라서 최소 4GB RAM 플랜을 선택해야 합니다. 자일링스의 메모리 권장 사항 페이지를 참조하세요. 메모리 사용량은 대상 FPGA 복잡도와 밀접한 관련이 있습니다. Zynq-7000 XC7Z045 FPGA의 피크 메모리 사용량은 1.9GB로, 2GB 플랜은 라우팅 시 부족해 비바도가 크래시했습니다. RAM과 CPU 리소스는 업클라우드 계정에서 쉽게 업그레이드할 수 있습니다. 50GB 스토리지 플랜으로 시작했으며, 전체 자동화 서버 완성 후 61% 사용 중입니다. 비바도만 24GB를 차지합니다.

최신 CentOS 리눅스 배포판을 운영체제로 선택하는 것을 권장합니다. 자일링스 비바도는 공식적으로 레드햇 리눅스만 지원하지만, CentOS는 레드햇을 밀접하게 따르는 무료 커뮤니티 지원 리눅스 배포판입니다.

DNS 영역 설정

새 서버에는 영구 IPv4 및 IPv6 주소가 할당됩니다. SSH로 루트 계정에 접속해 도메인 이름을 연결합니다. 도메인 등록업체의 DNS 영역 파일에서 서브도메인을 서버의 공인 IPv4 주소로 지정합니다. 변경 사항이 전파되면 도메인 이름으로 젠킨스에 접속할 수 있습니다.

젠킨스 설치

새 리눅스 서버의 루트 계정에 로그인한 후 설치된 모든 패키지를 업데이트합니다. CentOS에서 yum이 기본 패키지 관리자입니다. 젠킨스 설치 전 자바 11을 명시적으로 설치합니다(비바도가 자바 11에 의존). 젠킨스 저장소를 레드햇에서 가져와 설치합니다. 젠킨스 서버는 다음 부팅 시 자동 시작되며, systemctl start jenkins로 즉시 시작할 수 있습니다.

안전한 HTTPS로 젠킨스 접속

기본적으로 젠킨스는 8080 포트에서 실행되지만, CentOS 방화벽이 8080과 80 포트를 차단합니다. HTTPS 보안을 위해 Nginx를 리버스 프록시로 설치하고 Let's Encrypt 무료 인증서를 사용합니다. certbot 스크립트로 인증서 설치와 Nginx 설정을 자동화합니다. HTTP 트래픽을 HTTPS로 리다이렉트하도록 설정하고, 매일 자정에 인증서 갱신 크론 작업을 추가합니다. Nginx 설정 파일(/etc/nginx/nginx.conf)을 수정해 젠킨스를 제공하도록 합니다.

젠킨스 설정

최초 접속 시 초기 관리자 비밀번호를 입력하고, 추천 플러그인 설치, 관리자 계정 생성을 진행합니다. 주요 플러그인: Blue Ocean(모던 UI), Green Balls(성공 표시를 녹색으로), Locale(언어 강제 설정), Sidebar Link(사이드바 커스텀 링크). 깃허브 연동을 위해 개인 액세스 토큰 생성 후 젠킨스에 등록하고 웹훅 관리 활성화. 이메일 알림을 위해 sendmail 설치 및 SMTP 설정.

비바도 배치 모드 설치

자일링스 통합 설치 프로그램을 다운로드해 서버에 복사하고, 의존성 패키지(tar, java-11, ncurses-compat-libs, gcc) 설치 후 설치 프로그램을 실행합니다. xsetup으로 비바도 HL WebPACK 선택, 인증 토큰 생성 후 배치 모드로 설치. 설치 후 source /tools/Xilinx/Vivado/2019.2/settings64.sh로 환경 설정하고 vivado -mode batch -source test.tcl로 테스트.

젠킨스에 비바도 통합

전역 속성에서 PATH 환경 변수에 비바도 경로 추가. 실행기 수를 1로 제한(램 제약). 비바도 GUI 프로젝트를 Tcl 스크립트(write_project_tcl)로 내보내 깃으로 관리. vivado 하위 폴더에 Tcl 스크립트 저장, 나머지는 .gitignore로 제외.

비바도 배치 모드용 Tcl 스크립트

젠킨스 작업 설정

파이프라인 스크립트(Groovy 기반)로 작업 정의. Jenkinsfile을 각 저장소 루트에 두고 SCM에서 가져오도록 설정. 깃허브 웹훅으로 푸시 시 자동 트리거. 단계: 프로젝트 생성 → 구문 검사/시뮬레이션/합성/구현/비트스트림 생성. 실패 시 범인(culprit)에게 이메일 발송. 최상위 모듈(seg7) 작업에는 비트파일 릴리스 단계 추가: 타임스탬프와 깃 해시 포함 파일명으로 Nginx 릴리스 디렉토리에 복사. 사이드바 링크 플러그인으로 릴리스 디렉토리 링크 추가.

요약

젠킨스는 FPGA 팀에도 귀중한 도구가 될 수 있습니다. 자동화로 시간 절약과 코드 품질 향상. 자동 빌드 트리거와 파이프라인으로 코딩 오류를 조기 발견. VHDL 코드에 대한 완전한 회귀 테스트 스위트 구현 가능. 프로젝트 상태를 쾌적한 그래픽 웹 인터페이스로 표시해 VHDL 비전문가인 프로젝트 매니저도 이해 가능. 업클라우드 VPS에서 이 튜토리얼을 따라 해보길 권장합니다. 프로모션 코드 NV78V6 사용 시 $25 크레딧 제공.

VHDL

  1. Modelsim 시뮬레이션 중 VHDL 변수 확인하는 방법
  2. VHDL 상수와 제네릭 맵으로 유연한 모듈 설계하기
  3. VHDL 테스트벤치 시뮬레이션 우아하게 종료하기
  4. 고급 VHDL 퀴즈 2부: HDL 전문성 테스트
  5. VHDL TEXTIO로 BMP 비트맵 이미지 읽기
  6. VHDL 기초 퀴즈 4부: 이해도 점검하기
  7. Modelsim 초보자 가이드: FPGA 및 ASIC 시뮬레이션 활용법
  8. Pmod SSD용 VHDL 듀얼 7세그먼트 디스플레이 컨트롤러 - 쉬운 FPGA 통합
  9. VHDL 자가 검증 테스트벤치 구축 실전 가이드
  10. VHDL 함수 마스터하기: 효율적 설계를 위한 실전 가이드