저작권 (C) 2018-2020, Wuklab, UCSD.
FPGA 응용 프로그램에 친숙한 OS 추상화 (예 : MM, Sched, Net)를 제공하는 FPGA 내부에서 실행되는 운영 체제 (OS)입니다. 이것은 초기 단계 연구 프로토 타입입니다. 대부분의 코드는 Xilinx HLS로 작성됩니다. VCU118 및 VCU108에서 테스트되었습니다.
교육 목적으로 공개되었습니다. 유용하다는 것을 알게되기를 바랍니다.
host/ : 호스트 사이드 네트워크 스택 및 DMA 드라이버alloc/ : 메모리 할당 자mm/ : 메모리 관리net/ : 네트워크 서브 시스템kernel/ : 일부 PR 관련 코드system/ : 최종 큰 통합 시스템app/ : 응용 프로그램에는 FPGA와 호스트 코드가 모두있을 수 있습니다.include/ : FPGA 및 호스트 코드 모두에서 사용하는 헤더 파일. 예를 들어 네트워크 헤더.include/fpga : HLS에서만 사용하는 헤더include/uapi : HLS와 호스트 코드에서 사용하는 헤더tools/ : 다양한 도우미scripts/ : 템플릿 스크립트 파일generated_ip/ : 여기에서 생성 된 모든 IPS 수면generated_hls_project/ : Vivado HLS 프로젝트generated_vivado_project/ : vivado project체재:
run_hls.tcl 이름을 사용합니다.mm_axi_wrapper 는 MM 서브 시스템 하의 AXI 래퍼 IP입니다.make help .make 유형하십시오.system/ 폴더에 있습니다make 입력하면 해당 폴더 만 컴파일합니다.워크 플로 : 소스 코드를 처음 다운로드 할 때 프로젝트를 컴파일해야합니다. 모든 중소형 IP 및 대형 프로젝트를 사용할 준비가됩니다. 그 후, 당신은 당신이 구축하는 IP에 집중할 수 있습니다. Vivado 내에서 변경 사항이 자동으로 반영됩니다.
또한, 당신이 목표로하는 보드에주의를 기울이십시오.
스크립트 사용의 목표는 두 가지입니다
generated_vivado_project/ 폴더 아래에 배치됩니다.이러한 Vivado 프로젝트 모드 스크립트는 Vivado 자체에 의해 생성됩니다. 그리고 이러한 스크립트는 전체 프로젝트를 그대로 재건하는 데 사용될 수 있습니다.
그것들은 해당 스크립트를 만들고 해킹하기위한 내 비정규 단계입니다.
달리다:
vivado -mode tcl -source run_vivado.tclgenerated_vivado_project/ 현재 폴더에서 생성됩니다.generated_ip/ 폴더로 내 보냅니다.창조:
write_project_tcl 사용하여 스크립트를 생성하십시오. 새 스크립트에 폴더의 generated_vivado_project 아래에 제출 된 프로젝트가 배치되어야한다는 것을 새 스크립트에 알려야합니다. 그리고 스크립트의 이름을 run_vivado.tcl 로 지정해야합니다.write_project_tcl -force -no_copy_sources -target_proj_dir ./generated_vivado_project ./run_vivado.tclwrite_project_tcl -force -target_proj_dir ./generated_vivado_project ./run_vivado.tcl마구 자르기:
최상위 스크립트에 IP 경로 추가 :
generated_ip/ 폴더에 있습니다. 이로 인해 IP 추적이 더 쉬워집니다. Vivado가 새로운 IP를 찾을 위치를 알 수 있도록 스크립트에 몇 줄을 추가 할 수 있습니다. 해당 줄에 대해서는 scripts/template_vivado_ip.tcl 확인하십시오.자동으로 패키지 IP :
generated_ip/ 에 있습니다. 예를 들어, ipx::package_project -root_dir ../../generated_ip/mm_axi_wrapper -vendor wuklab -library user -taxonomy UserIP -import_files -set_current false -forceipx::package_project -root_dir ../../generated_ip/mm_axi_rab_vcu118 -vendor wuklab -library user -taxonomy UserIP -module THE_BD_NAME -import_files더 많은 소스/XDC/시뮬레이션 파일 추가 :
top.v , add_files 등write_project_tcl 다시 사용하여 다른 스크립트를 생성합니다. 그런 다음 차이점을 확인하십시오.자가 생성 BD 래퍼
기타 설정 :
write_project_tcl 사용하여 새 스크립트를 생성하고 해당 변경 사항을 저장해야합니다. Vivado 명령에 익숙해지면 스크립트를 변경하여 수동으로 수행 할 수 있어야합니다.경고 :
지금은 mm/axi_wrapper/run_vivado.tcl 및 mm/sys/run_vivado.tcl 에서 예제 스크립트를 찾을 수 있습니다.
Vivado는 각 버전에서 하나의 IP 버전 만 지원합니다. 생성 된 스크립트를 사용한다면 슈퍼 anyony입니다. 운 좋게도, 그것을 해결하는 한 가지 방법이 있습니다. 다음 코드는 IP 문자열을 변수로 바꿉니다. 그러나 업데이트 된 IP에 다른 포트가 있는지주의하십시오.
set axis_data_fifo [get_ipdefs -filter NAME==axis_data_fifo]
Replace all `xilinx.com:ip:axis_data_fifo:1.1` with `$axis_data_fifo
Vivado HLS 스크립트는 Vivado 스크립트보다 비교적 쉽습니다. scripts/template_run_hls.tcl 에서 템플릿 스크립트를 찾을 수 있습니다. 부품, 파일 추가, 주파수 등을 사용자 정의해야합니다. 동일한 폴더에서 여러 HLS를 자동으로 빌드하려면 scripts/template_generate_hls.sh 사용하십시오.