PYFPGA는 공급 업체 독립적 인 FPGA 개발을 위한 파이썬 클래스입니다. 단일 프로젝트 파일을 사용하고 프로그래밍 방식으로 합성 , 구현 , 비트 스트림 생성 및/또는 지원 보드로의 전이를 실행할 수 있습니다.
워크 플로는 명령 줄 중심입니다.
버전 제어 시스템 및 지속적인 통합 (CI)에 친숙합니다.
재현성과 반복성을 허용합니다.
GUI 기반 워크 플로보다 더 적은 시스템 리소스를 소비합니다.
필요에 맞는 워크 플로를 사용하여 사용자 정의 FPGA 도구를 만듭니다!
경고 : (2022-05-15) PYFPGA는 강력하게 다시 작성/단순화되는 과정에 있습니다. 대부분의 변경 사항은 내부이지만 API (
Project
클래스)는 변경됩니다.
PYFPGA 사용 방법에 대한 최소한의 예 :
FPGA 가져 오기 프로젝트#에서 백엔드 도구와 선택적 프로젝트를 지정하여 nameprj = project ( 'vivado', 'example')# 장치/partprj.set_part ( 'xc7z010-1clg400')# projectprj에 HDL 소스를 추가하십시오. add_files ( 'location1/*. v') prj.add_files ( 'location2/top.v')# 선택적으로 constraint 파일을 projectprj.add_files ( 'location3/example.xdc')에 추가하십시오. set_top ( 'top')# 도구를 실행하는 비트 스트림 생성 ()
이제 문서를 읽거나 서브 디르 예제에서 더 많은 예제를 찾을 수 있습니다.
Project class
에서 구현 한 API는 다음을 제공합니다.
도구를 지정 해야하는 생성자와 선택적 프로젝트 이름을 표시 할 수 있습니다.
대상 장치 부품을 설정하고 여러 HDL, 제약 조건 및 TCL 파일을 프로젝트에 추가하는 방법 (VHDL의 경우 옵션 패키지 이름을 지정할 수 있음)을 지정하고 최상위 수준을 지정합니다.
다른 출력 디렉토리를 지정하거나 프로젝트 구성을 얻는 방법
비트 스트림을 생성하고 장치로 전송하는 방법 (선택한 EDA 도구 실행)
비트 스트림이 생성 될 때 최적화 전략 (면적, 전력 또는 속도)을 지정하는 기능
Verilog를 추가하는 방법에는 파일 디렉토리가 포함되었습니다
제네릭/매개 변수 값을 지정하는 메소드
Flow의 최대 6 개의 다른 부분에 TCL 명령을 추가하는 방법 (아직 구현되지 않은 기능에 대한 해결 방법)
도구 실행 시간 표시를 포함하는 선택적 로깅 기능
PYFPGA는 Debian GNU/Linux에서 개발 된 Python 3 패키지입니다. 다른 POSIX 호환 OS에서 실행해야하며 아마도 다른 OS에서 실행해야합니다. 비 포스 시스템에서 실패의 성공을 달성하면 문제 추적기를 통해 알려주십시오.
전체 개발 흐름 (HDL 및 제약 소스를 읽는 것부터 비트 스트림 생산에 이르기까지 ISE (Xilinx), Vivado (Xilinx), Quarts Prime (Intel/Altera), Libero-Soc (Microsemi) 및/또는 Open-로 수행 할 수 있습니다. 소스 도구.
GDHL ( --synth
)을 사용하면 VHDL 소스를 VHDL 1993 넷리스트로 변환 할 수 있습니다.
Yosys는 Verilog 및 VHDL 합성 ( ghdl-yosys-plugin
사용)을 합성 할 수 있으며 JSON, Verilog, Edif 등 여러 출력 형식을 지원합니다.
NextPNR은 JSON 넷리스트 구현에 사용될 수 있습니다.
또한 ISE와 Vivado는 Verilog Net Lists의 구현을 위해 지원됩니다.
비트 스트림 및 프로그래밍 장치 전송 :
ISE (영향)는 JTAG를 통해 FPGA 및/또는 메모리 (BPI 및 SPI)를 프로그래밍하는 데 사용할 수 있습니다.
Vivado, Quartus 및 IceProg (ICESTORM, ICESCORM)을 FPGA를 프로그래밍하는 데 사용할 수 있습니다.
Libero-Soc 및 프로그래밍 ECP5 장치 (Prjtrellis, OpenOCD)를 사용한 프로그래밍은 아직 지원되지 않았습니다.
참고 :
오픈 소스 도구는 GHDL/Docker Project의 트로프 컨테이너 이미지를 지원하므로 Docker 또는 Podman을 설치해야합니다. CI 서비스에서 동일한 워크 플로를 사용할 수 있습니다.
ISE, Libero-Soc, Quartus Prime 및 Vivado는 터미널에서 실행할 준비가되어 있어야합니다 (설치 및 잘 구성).
pyfpga는 python >=3.6
필요로합니다. 현재로서는 GitHub에서 호스팅 된 GIT 저장소로만 사용할 수 있습니다. PIP로 설치할 수 있습니다.
pip install 'git+https://github.com/PyFPGA/pyfpga#egg=pyfpga'
GNU/Linux에서는 시스템에 PIP 패키지를 설치하려면
sudo
필요합니다. 또는 집에 pyfpga를 설치하는 데--local
사용하십시오.
git 클론을 통해 리포지토리 사본을 얻거나 Tarball/Zipfile을 다운로드 할 수 있습니다.
git clone https://github.com/PyFPGA/pyfpga.git cd pyfpga
그런 다음 Repo의 루트에서 PIP를 사용하십시오.
pip install -e .
-e
(-E (--editable
)를 사용하면 응용 프로그램이 일종의 Symlink를 통해 사이트 패키지에 설치됩니다. 이는 패키지를 다시 설치할 필요없이 GIT를 통해 변경을 당기거나 분기를 변경할 수 있습니다.