From 61a08b8dd08943730344cb8c63ead47c24285898 Mon Sep 17 00:00:00 2001 From: Atharva Kashalkar <atharvakashalkar1804@outlook.com> Date: Wed, 3 Apr 2024 14:41:16 -0400 Subject: [PATCH] 1st revision of GSoC Proposal for "Low-latency I/O RISC-V CPU core in FPGA fabric" --- _static/images/PRU_Connections.png | Bin 0 -> 59310 bytes _static/images/PRU_diagram.png | Bin 0 -> 43201 bytes proposals/RISC-V_CPU_core_in_FPGA_fabric.rst | 285 +++++++++++++++++++ proposals/index.rst | 7 +- 4 files changed, 289 insertions(+), 3 deletions(-) create mode 100644 _static/images/PRU_Connections.png create mode 100644 _static/images/PRU_diagram.png create mode 100644 proposals/RISC-V_CPU_core_in_FPGA_fabric.rst diff --git a/_static/images/PRU_Connections.png b/_static/images/PRU_Connections.png new file mode 100644 index 0000000000000000000000000000000000000000..df9079648fbfab2ea0955808af62a217fd87f21b GIT binary patch literal 59310 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 literal 0 HcmV?d00001 diff --git a/_static/images/PRU_diagram.png b/_static/images/PRU_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..98b569cc579964f74f2b1b58628fd29bea8616c4 GIT binary patch literal 43201 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%0DrxuR0ib^zj@X&FczVaHha|@qzMH>!<Id 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 literal 0 HcmV?d00001 diff --git a/proposals/RISC-V_CPU_core_in_FPGA_fabric.rst b/proposals/RISC-V_CPU_core_in_FPGA_fabric.rst new file mode 100644 index 0000000..e8fc805 --- /dev/null +++ b/proposals/RISC-V_CPU_core_in_FPGA_fabric.rst @@ -0,0 +1,285 @@ +.. _RISC-V_CPU_core_in_FPGA_fabric: + +Low-latency I/O RISC-V CPU core in FPGA fabric +################################################ + +Introduction +************* + +Implementation of PRU subsystem on BeagleV-Fire's FPGA fabric, resulting in a real-time microcontroller system working alongside the main CPU, providing low-latency access to I/O . + +Summary links +============= + +- **Contributor:** `Atharva Kashalkar <https://forum.beagleboard.org/u/roger18>`_ +- **Mentors:** `Jason Kridner <https://forum.beagleboard.org/u/jkridner>`_, `Cyril Jean <https://forum.beagleboard.org/u/vauban>`_ +- **Code Repository:** TBD + +Status +======= + +This project is currently just a proposal. + +Proposal +======== + +| Accounts created across `OpenBeagle <https://openbeagle.org/Roger18>`_, `Discord <https://discordapp.com/users/539789356228018200>`_ and `Beagle Forum <https://forum.beagleboard.org/u/roger18>`_ +| PR was created for the cross-compilation task. + +About +===== + +- **Resume:** Find my resume `here <https://docs.google.com/document/d/1NK4dAuWjMRkkG4YJrMSHrUTxJs0s7_JUR-DipmuclWQ/edit?usp=sharing>`_ +- **Forum:** :fab:`discourse` `u/roger18 (Atharva Kashalkar) <https://forum.beagleboard.org/u/roger18>`_ +- **OpenBeagle:** :fab:`gitlab` `Roger18 (Atharva Kashalkar) <https://openbeagle.org/Roger18>`_ +- **Github:** :fab:`github` `RapidRoger18 (Atharva Kashalkar) <https://github.com/RapidRoger18>`_ +- **School:** :fas:`school` Veermata Jijabai Technological Institute (VJTI) +- **Country:** :fas:`flag` India +- **Primary language:** :fas:`language` English Hindi +- **Typical work hours:** :fas:`clock` 9 AM-11 PM Indian Standard Time +- **Previous GSoC participation:** :fab:`google` First Time Applicant + +Project +******** + +**Project name:** Low-latency I/O RISC-V CPU core in FPGA fabric. + +Description +============ +To provide the capability of a Programmable Real-time Unit Industrial Control SubSystem (PRU-ICSS), which is present on several BeagleBone boards, I propose to deploy an existing RISC-V 32IM core with a customized Instruction Set Architecture on FPGA Fabric present on BeagleV-Fire. The goal of this deployment is to provide high bandwidth between the CPU and I/O, resulting in a on-board microcontroller. + +Goals and Objectives +==================== +The ultimate aim of this project is to have a functional Risc-V soft core on the BeagleV-Fire FPGA fabric, which will be functionally equivalent to a PRU subsystem on the BeagleBone Black. Together with ultra-low latency I/O operations, this core will be able to execute Risc-V instructions acting as a microcontroller. BeagleV-Fire will feature a functional PRU-comparable subsystem on its FPGA fabric by the project's conclusion. + +The programmable nature of the PRU, along with its access to pins, events, and all SoC resources, provides flexibility in implementing fast real-time responses, specialized data handling operations, custom peripheral interfaces, and in offloading tasks from the other processor cores of the system-on-chip (SoC). +This is a basic block diagram for PRU design: + +.. image:: ../_static/images/PRU_diagram.png + +Based on the block diagram above we can divide the project into two stages. +Stage 1 will include deciding the most suitable pre-existing core based on its performance concerning its size, complexity, accessibility, etc. +Customizing the core to meet project requirements and integrating it with BeagleV-Fire gateware, followed by extensive Verification of the modifications using preset verification techniques. +This stage will conclude with having a stable communication protocol between the PRU and main CPU. This will ensure that the PRU's instruction memory can be written by main CPU and have an interrupt signal to control the PRU. + +At Stage 1 Evaluation, a functional Risc-V PRU with CPU access support will be prepared for deployment. + +The primary aim for Stage 2 will be establishing the necessary I/O functions, and stable communication between the PRU and these I/O. +I/O and other peripherals can be mapped to particular special addresses to which the PRU can write, which will enable the user to configure the I/O devices to any parameters using a PRU C Library, which will try to abstract I/O usage for the user. +Changes to be made to build scripts to add an option of including a PRU design to the gateware when flashing the Board. Updating Device Tree Overlay to enable PRU whenever necessary. Having a test program for users to get familiar with the use of PRU. + +After Stage 2, BeagleV-Fire will host a fully functional PRU system that can be controlled by invoking a specific function within the main CPU. + +Software +========= + + - Verilog HDL. + - Verilator. + - Libero SoC suite. + - Microchip Softconsole + - ModelSim ME. + - Linux. + - OpenBeagle CI. + +Hardware +======== + +Ability to program BeagleV-Fire using serial port and set up JTAG for effective debugging. + +Timeline +******** + +Timeline summary +================= + +.. table:: + + +------------------------+----------------------------------------------------------------------------------------------------+ + | Date | Activity | + +========================+====================================================================================================+ + | April | Understand detailed use cases of existing cores and shortlist them based on requirements | + +------------------------+----------------------------------------------------------------------------------------------------+ + | May 1 | Start bonding - Discussing implementation methods with Mentors | + +------------------------+----------------------------------------------------------------------------------------------------+ + | May 15 | College Examinations | + +------------------------+----------------------------------------------------------------------------------------------------+ + | June 1 | Start coding and introductory video | + +------------------------+----------------------------------------------------------------------------------------------------+ + | June 3 | :ref:`Release introductory video Select a RV core <Milestone1>` | + +------------------------+----------------------------------------------------------------------------------------------------+ + | June 10 | :ref:`Modifying the core <Milestone2>` | + +------------------------+----------------------------------------------------------------------------------------------------+ + | June 17 | :ref:`Verification of core <Milestone3>` | + +------------------------+----------------------------------------------------------------------------------------------------+ + | June 24 | :ref:`Remote-proc setup <Milestone4>` | + +------------------------+----------------------------------------------------------------------------------------------------+ + | July 1 | :ref:`Set up Device Tree <Milestone5>` | + +------------------------+----------------------------------------------------------------------------------------------------+ + | July 8 | Submit midterm evaluations | + +------------------------+----------------------------------------------------------------------------------------------------+ + | July 15 | :ref:`Mapping I/O <Milestone6>` | + +------------------------+----------------------------------------------------------------------------------------------------+ + | July 22 | :ref:`Verification and testing of mapped I/O <Milestone7>` | + +------------------------+----------------------------------------------------------------------------------------------------+ + | July 29 | :ref:`Add customizability to CPU <Milestone8>` | + +------------------------+----------------------------------------------------------------------------------------------------+ + | August 5 | :ref:`Setup scripts <Milestone9>` | + +------------------------+----------------------------------------------------------------------------------------------------+ + | August 12 | :ref:`Documentation & Tutorial <Milestone10>` | + +------------------------+----------------------------------------------------------------------------------------------------+ + | August 19 | Submit final project video, submit final work to GSoC site, and complete final mentor evaluation | + +------------------------+----------------------------------------------------------------------------------------------------+ + +Timeline detailed +================= + +Community Bonding Period (May 1st - May 15th) +============================================== + + - Get to know mentors and discuss project implementation. + - read documentation, and get up to speed to begin working on the projects + - shortlisting pre-existing cores based on initial assessment, by reading available documentation. + +Coding begins (May 27th) +========================= + +.. _Milestone1: +Milestone #1, Introductory YouTube video (June 3rd) +=================================================== + - Make an introductory video + - Selecting the best-suited core by comparing their functionality, size, availability of extensions, etc. + - Setting up remote access on BeagleV-Fire and completing the LED-blink tutorial given in the documentation. + +.. _Milestone2: +Milestone #2, Modifiying RV core (June 10th) +========================== + - Modification of the selected core to meet project requirements, like memory configurations, interrupt control, etc. + - Removing unnecessary extensions to reduce size and complexity, without changing its efficiency. + +.. _Milestone3: +Milestone #3, Verification of core (June 17th) +========================= + - Performing Verification of PRU core using pre-determined verification methods by using Verilator or any other Verification software. + - This is to make sure the PRU functions as required after modifications. + +.. _Milestone4: +Milestone #4, Remote-proc setup (June 24th) +========================== + - Integration of PRU core with BeagleV-Fire gateware. This is to ensure PRU deployment through BeagleV-Fire gateware. + - Set up Remote-proc Interfacing between PRU and main CPU. This will ensure CPU access to PRU's instruction memory. + +.. _Milestone5: +Milestone #5, Setup Device Tree (July 1st) +======================== + - Coninuing to work on Remote-proc framework. + - Ensuring stable PRU workflow. + - Setting up Device Tree Overlay to include PRU when necessary. + +Submit midterm evaluations (July 8th) +===================================== + - Complete pending Stage 1 tasks, if any. + +.. important:: + + **July 12 - 18:00 UTC:** Midterm evaluation deadline (standard coding period) + +.. _Milestone6: +Milestone #6, Mapping I/O (July 15th) +========================= + - Implementing required I/O functionalities. + - Mapping I/O to registers to enable interaction with CPU. + +.. _Milestone7: +Milestone #7, Verification of mapped I/O (July 22nd) +========================= + - Verification of these I/O operations using simulation and generating common use cases. + - Deploying these modules on BeagleV-Fire FPGA and testing their latency and real-time application. + +.. _Milestone8: +Milestone #8, Add customizability (July 29th) +========================= + - Adding customizability to CPU. This is to allow user to make small changes to CPU to observe the changes in output. + - This will allow user to learn internal working of a RISC processor. + +.. _Milestone9: +Milestone #9, Setup Scripts (Aug 5th) +======================= + - Setting up gateware scripts wherever changes are needed. This will grant users easier access to CPU. + - Editing TCL scripts wherever necessary. + +.. _Milestone10: +Milestone #10, Documentation and Tutorial(Aug 12th) +======================== + - Documenting the project and ways to access PRU on docs.beagleboard.org. + - Having an LED Blink tutorial for users to familiarize themselves with the PRU. + +Final YouTube video (Aug 19th) +=============================== + +Submit final project video, submit final work to GSoC site, and complete final mentor evaluation + +Final Submission (Aug 24th) +============================ + +.. important:: + + **August 19 - 26 - 18:00 UTC:** Final week: GSoC contributors submit their final work + product and their final mentor evaluation (standard coding period) + + **August 26 - September 2 - 18:00 UTC:** Mentors submit final GSoC contributor + evaluations (standard coding period) + +Initial results (September 3) +============================= + +.. important:: + **September 3 - November 4:** GSoC contributors with extended timelines continue coding + + **November 4 - 18:00 UTC:** Final date for all GSoC contributors to submit their final work product and final evaluation + + **November 11 - 18:00 UTC:** Final date for mentors to submit evaluations for GSoC contributor projects with an extended deadline + +Experience +*********** + +This project will require prior knowledge of Risc-V ISA, FPGA programming, Assembly, and Verilog. + +| I have previously worked on a project `Risc-V 32IM core <https://github.com/NachtSpyder04/RISC-V-Eklavya-23>`_ where I contributed towards the synthesis of a Risc-V core using Vivado Design suite and flashed it on UPduino FPGA using Yosys framework. This CPU was successfully able to run operations like the Fibonacci series and factorial of a number. +| I was a Team Leader of the Semi-finalist Team in `E-Yantra Robotics Competition (eYRC) <https://portal.e-yantra.org/>`_, IIT Bombay on Theme "AstroTinker Bot", where we had to develop a single cycle Risc-V 32I core that was capable of implementing Dijktra Algorithm written in C code and cross-compiled to Risc-V binary instructions. This Competition exposed me to various debugging methods using JTAG connection through Quartus Prime Lite software. DE0-NANO development board with Cyclone IV FPGA was used to control the bot. The bot used PID-based Line Following and Electromagnet to pick and place blocks through an arena representing a Space Station. Verilog HDL codes for the project can be found `here <https://github.com/RapidRoger18/E-yantra_Astrotinker-bot>`_ +| I have prior experience with ESP32 microcontrollers for small projects. + +Approach +********* +| As a starting point, I have forked the BeagleV-Fire gateware Repository and completed the `Blinky Tutorial <https://openbeagle.org/Roger18/gateware/-/tree/main/sources/FPGA-design/script_support/components/CAPE/BLINKY_TRY>`_ as specified on `BeagleBoard Docs <https://docs.beagleboard.org/latest/boards/beaglev/fire/demos-and-tutorials/gateware/customize-cape-gateware-verilog.html>`_ +| Continuing on this I have set up Libero SoC suite and Softconsole on my Local machine that will provide an easy debugging method using JTAG. I have tested this setup by implementing a simple UART receiver and simulating it in ModelSim ME using a simple testbench. + +| The concept of having a microprocessor and a microcontroller on a single SoC is amazing. I can see a variety of applications where a SoC like BeagleV-Fire would be ideal. This inspires me to take on this project and give my contribution to the open-source community. I have my full commitment to this project and am willing to put in complete efforts to complete the project within the allocated time. +| I would also like to keep improving with the project after GSoC. + +Contingency +=========== + +If I get stuck on my project and my mentor isn’t around, I will use the following resources:- + - `BeagleV-Fire <https://docs.beagleboard.io/latest/boards/beaglev/fire/index.html>`_ + - `PRU-Documentation <https://inst.eecs.berkeley.edu/~ee192/sp20/files/am335x-pru.pdf>`_ + - `Picorv32 Docs <https://github.com/YosysHQ/picorv32/blob/master/README.md>`_ + - `VexRiscv Docs <https://github.com/SpinalHDL/VexRiscv/blob/master/README.md>`_ + - `PRU cookbook <https://docs.beagleboard.org/books/pru-cookbook/index.html>`_ + - `TI PRU documentation <https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/09_00_00_03/exports/docs/linux/Foundational_Components_PRU_Subsystem.html>`_ + +Moreover, the BeagleBoard community is very helpful in resolving doubts, I will use OpenBeagle forums to clarify any doubts left after referring to the above resources. + +Benefit +======== +This project will not only improve the use cases of BeagleV-Fire but also provide a very fast real-time subsystem that can be used as a microcontroller. It will provide the following functionalities: - + - Reduce memory and I/O resource consumption on the main CPU by performing basic computations in PRU itself thus providing more resources to perform complex tasks. + - Provide a real-time interface for fast, deterministic operations. + - Reprogammability of FPGA will allow to deployment of PRU only when necessary, thus providing additional logical elements when PRU is not being used. + - The configurable nature of FPGA will allow multiple levels of customizations and configurations on PRU, enabling the user to efficiently meet their requirements in the lowest possible resources. + +The success of this project will result in an all-in-one SoC meeting all the requirements of `BeagleBoard.org <https://www.beagleboard.org/>`_ community. + +Misc +==== + +PR request for cross-compilation task `#182 <https://github.com/jadonk/gsoc-application/pull/182>`_ diff --git a/proposals/index.rst b/proposals/index.rst index 5641d8a..1c13afa 100644 --- a/proposals/index.rst +++ b/proposals/index.rst @@ -8,9 +8,10 @@ Proposals Checkout :ref:`gsoc-project-ideas` page to explore ideas and :ref:`gsoc-proposal-guide` page to write your own proposal. .. toctree:: - :maxdepth: 1 + :hidden: - template + commercial_detection_and_replacement + RISC-V_CPU_core_in_FPGA_fabric melta101 suraj-sonawane upstream_zephyr_bbai64_r5 @@ -18,6 +19,6 @@ Proposals matt-davison ijc mc + template himanshuk drone_cape_for_beagle-v-fire - commercial_detection_and_replacement -- GitLab