From adbe84bbd44b1781ba8d9ab334623d48f4f38f4b Mon Sep 17 00:00:00 2001 From: talhaiqbal-10xe Date: Fri, 23 Aug 2024 18:29:41 +0500 Subject: [PATCH 1/3] update readme header and add repo flow diagram --- README.md | 23 ++++++++++++++--------- docs/assets/Infinite-ISP_Repo_Flow.png | Bin 0 -> 96139 bytes 2 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 docs/assets/Infinite-ISP_Repo_Flow.png diff --git a/README.md b/README.md index fce78e5..d894199 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,18 @@ # Infinite-ISP -Infinite-ISP is a full-stack ISP development platform - from algorithm development to RTL design, FPGA/ASIC implementation, and associated firmware, tools, etc. It offers a unified platform that empowers ISP developers to accelerate ISP innovation. It includes a complete collection of camera pipeline modules written in Python, an FPGA bitstream & the associated Firmware for the implementation of the pipeline on the Kria KV260 development board, and lastly, a stand-alone Python-based Tuning Tool application for the pipeline. The main components of the Infinite-ISP project are listed below: - -| Repository name | Description | -| ------------- | ------------- | -| **[Infinite-ISP_AlgorithmDesign](https://github.com/10x-Engineers/Infinite-ISP)** | Python based model of the Infinite-ISP pipeline for algorithm development | -| **[Infinite-ISP_ReferenceModel](https://github.com/10x-Engineers/Infinite-ISP_ReferenceModel)** | Python based fixed-point model of the Infinite-ISP pipeline for hardware implementation | -| **[Infinite-ISP_FPGABinaries](https://github.com/10x-Engineers/Infinite-ISP_FPGABinaries)** | FPGA binaries (bitstream + firmware executable) for the Xilinx® Kria KV260’s XCK26 Zynq UltraScale+ MPSoC| -| **[Infinite-ISP_Firmware](https://github.com/10x-Engineers/Infinite-ISP_Firmware)** | Firmware for the Kria kV260’s embedded Arm® Cortex®A53 processor| -| **[Infinite-ISP_TuningTool](https://github.com/10x-Engineers/Infinite-ISP_TuningTool)** :anchor: | Collection of calibration and analysis tools for the Infinite-ISP | +Infinite-ISP is a comprehensive development platform designed for all aspects of a hardware ISP. It includes a collection of camera pipeline modules written in Python, a fixed-point reference model, an optimized RTL design, an FPGA integration framework and its associated firmware ready for Xilinx® Kria KV260 development board. The platform features a stand-alone Python-based Tuning Tool that allows tuning of ISP parameters for different sensors and applications. Finally, it also offers a software solution for Linux by providing required drivers and a custom application development stack to bring Infinite-ISP to the Linux platforms. + +![](docs/assets/Infinite-ISP_Repo_Flow.png) + +| Sr. | Repository name | Description | +|---------| ------------- | ------------- | +| 1 | **[Infinite-ISP_AlgorithmDesign](https://github.com/10x-Engineers/Infinite-ISP)** | Python based model of the Infinite-ISP pipeline for algorithm development | +| 2 | **[Infinite-ISP_ReferenceModel](https://github.com/10x-Engineers/Infinite-ISP_ReferenceModel)** | Python based fixed-point model of the Infinite-ISP pipeline for hardware implementation | +| 3 | **[Infinite-ISP_RTL](https://github.com/10x-Engineers/Infinite-ISP_RTL)** | RTL Verilog design of the image signal processor based on the Reference Model **[(Request Access)](https://docs.google.com/forms/d/e/1FAIpQLSfOIldU_Gx5h1yQEHjGbazcUu0tUbZBe0h9IrGcGljC5b4I-g/viewform?usp=sharing)**| +| 4 | **[Infinite-ISP_Automated_Testing](https://github.com/10x-Engineers/Infinite-ISP_Automated_Testing)** | A framework to enable the automated block and multi-block level testing of the image signal processor to ensure a bit accurate design | +| 5 | **FPGA Implementation** | FPGA implementation of Infinite-ISP on
| +| 6 | **[Infinite-ISP_FPGABinaries](https://github.com/10x-Engineers/Infinite-ISP_FPGABinaries)** | FPGA binaries (bitstream + firmware executable) for the Xilinx® Kria KV260’s XCK26 Zynq UltraScale + MPSoC| +| 7 | **[Infinite-ISP_TuningTool](https://github.com/10x-Engineers/Infinite-ISP_TuningTool)** :anchor: | Collection of calibration and analysis tools for the Infinite-ISP | +| 8 | **[Infinite-ISP_LinuxCameraStack](https://github.com/10x-Engineers/Infinite-ISP_LinuxCameraStack.git)** | Extending Linux support to Infinite-ISP and the developement of Linux camera stack | # Infinite-ISP Tuning Tool ## Overview diff --git a/docs/assets/Infinite-ISP_Repo_Flow.png b/docs/assets/Infinite-ISP_Repo_Flow.png new file mode 100644 index 0000000000000000000000000000000000000000..009fdc4a6e3ab9b8912e950132e47de9997cb826 GIT binary patch literal 96139 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 KDAKn1^M3$s6d3gY literal 0 HcmV?d00001 From 1282e5423e9068447ac8d899654b02ded5babbb5 Mon Sep 17 00:00:00 2001 From: talhaiqbal-10xe Date: Mon, 26 Aug 2024 16:03:05 +0500 Subject: [PATCH 2/3] Update README.md --- README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index d894199..1c23549 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # Infinite-ISP -Infinite-ISP is a comprehensive development platform designed for all aspects of a hardware ISP. It includes a collection of camera pipeline modules written in Python, a fixed-point reference model, an optimized RTL design, an FPGA integration framework and its associated firmware ready for Xilinx® Kria KV260 development board. The platform features a stand-alone Python-based Tuning Tool that allows tuning of ISP parameters for different sensors and applications. Finally, it also offers a software solution for Linux by providing required drivers and a custom application development stack to bring Infinite-ISP to the Linux platforms. +Infinite-ISP is a full-stack ISP development platform designed for all aspects of a hardware ISP. It includes a collection of camera pipeline modules written in Python, a fixed-point reference model, an optimized RTL design, an FPGA integration framework and its associated firmware ready for Xilinx® Kria KV260 development board. The platform features a stand-alone Python-based Tuning Tool that allows tuning of ISP parameters for different sensors and applications. Finally, it also offers a software solution for Linux by providing required drivers and a custom application development stack to bring Infinite-ISP to the Linux platforms. + ![](docs/assets/Infinite-ISP_Repo_Flow.png) @@ -7,13 +8,14 @@ Infinite-ISP is a comprehensive development platform designed for all aspects of |---------| ------------- | ------------- | | 1 | **[Infinite-ISP_AlgorithmDesign](https://github.com/10x-Engineers/Infinite-ISP)** | Python based model of the Infinite-ISP pipeline for algorithm development | | 2 | **[Infinite-ISP_ReferenceModel](https://github.com/10x-Engineers/Infinite-ISP_ReferenceModel)** | Python based fixed-point model of the Infinite-ISP pipeline for hardware implementation | -| 3 | **[Infinite-ISP_RTL](https://github.com/10x-Engineers/Infinite-ISP_RTL)** | RTL Verilog design of the image signal processor based on the Reference Model **[(Request Access)](https://docs.google.com/forms/d/e/1FAIpQLSfOIldU_Gx5h1yQEHjGbazcUu0tUbZBe0h9IrGcGljC5b4I-g/viewform?usp=sharing)**| -| 4 | **[Infinite-ISP_Automated_Testing](https://github.com/10x-Engineers/Infinite-ISP_Automated_Testing)** | A framework to enable the automated block and multi-block level testing of the image signal processor to ensure a bit accurate design | -| 5 | **FPGA Implementation** | FPGA implementation of Infinite-ISP on
  • Xilinx® Kria KV260’s XCK26 Zynq UltraScale + MPSoC **[Infinite-ISP_FPGA_XCK26](https://github.com/10x-Engineers/Infinite-ISP_FPGA_XCK26)**
| +| 3 | **[Infinite-ISP_RTL](https://github.com/10x-Engineers/Infinite-ISP_RTL)** | RTL Verilog design of the image signal processor based on the Reference Model | +| 4 | **[Infinite-ISP_AutomatedTesting](https://github.com/10x-Engineers/Infinite-ISP_AutomatedTesting)** | A framework to enable the automated block and multi-block level testing of the image signal processor to ensure a bit accurate design | +| 5 | **FPGA Implementation** | FPGA implementation of Infinite-ISP on
  • Xilinx® Kria KV260’s XCK26 Zynq UltraScale + MPSoC **[Infinite-ISP_FPGA_XCK26](https://github.com/10x-Engineers/Infinite-ISP_FPGA_XCK26)**
| | 6 | **[Infinite-ISP_FPGABinaries](https://github.com/10x-Engineers/Infinite-ISP_FPGABinaries)** | FPGA binaries (bitstream + firmware executable) for the Xilinx® Kria KV260’s XCK26 Zynq UltraScale + MPSoC| -| 7 | **[Infinite-ISP_TuningTool](https://github.com/10x-Engineers/Infinite-ISP_TuningTool)** :anchor: | Collection of calibration and analysis tools for the Infinite-ISP | -| 8 | **[Infinite-ISP_LinuxCameraStack](https://github.com/10x-Engineers/Infinite-ISP_LinuxCameraStack.git)** | Extending Linux support to Infinite-ISP and the developement of Linux camera stack | +| 7 | **[Infinite-ISP_TuningTool](https://github.com/10x-Engineers/Infinite-ISP_TuningTool)** :anchor: | Collection of calibration and analysis tools for the Infinite-ISP | +| 8 | **[Infinite-ISP_LinuxCameraStack](https://github.com/10x-Engineers/Infinite-ISP_LinuxCameraStack.git)** | Extending Linux support to Infinite-ISP and the developement of Linux-based camera application stack | +**[Request Access](https://docs.google.com/forms/d/e/1FAIpQLSfOIldU_Gx5h1yQEHjGbazcUu0tUbZBe0h9IrGcGljC5b4I-g/viewform?usp=sharing)** to **Infinite-ISP_RTL, Infinite-ISP_AutomatedTesting** and **Infinite-ISP_FPGA_XCK26** repositories # Infinite-ISP Tuning Tool ## Overview From 0a9ab48e7bb4e91c0007108e3bb37eb310515495 Mon Sep 17 00:00:00 2001 From: sohaibimran-10xe <87118558+sohaibimran-10xe@users.noreply.github.com> Date: Mon, 26 Aug 2024 16:10:21 +0500 Subject: [PATCH 3/3] update linting.yml --- .github/workflows/linting.yml | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 2c361f6..3a464c2 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -1,27 +1,39 @@ name: Linting on Pull Request + on: pull_request: types: [opened,synchronize] + jobs: - lintonPR: + lintonPR: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 + - name: Install Dependencies run: | pip install pylint + - name: Fetch Main run: | git fetch origin main - git diff --name-only origin/main..HEAD + git diff --name-only origin/main..HEAD + - name: Run pylint on modified files run: | - changed_files=$(git diff --name-only origin/main..HEAD | grep ".py$") + set -e + IFS=$'\n' + changed_files=$(git diff --name-only origin/main..HEAD | grep ".py$" || true) if [ "$changed_files" ]; then - echo "Running pylint on changed files:" - echo "$changed_files" - echo "$changed_files" | xargs pylint + for file in $changed_files; do + if [ -e "$file" ]; then + echo "Linting $file" + pylint "$file" + else + echo "Skipping lint for deleted file: $file" + fi + done else echo "No Python files have been changed." fi