MeitY

Innovate Solutions for आत्मनिर्भर भारत

Welcome to the स्वदेशी Microprocessor Challenge using Shakti!

Shakti Microprocessor is an Open-Source Processor development initiative by the RISE group at IIT Madras, sponsored by MeitY.

Here you can get all information needed to build your application using Shakti SoC

Understanding Shakti Processors

Shakti is an Open Source processor development program based on RISC-V ISA. There are many classes of processors in the Shakti ecosystem with varying compute capabilities.

For this challenge, IIT Madras has made available two variants of Shakti, namely E-Class and C-Class. The participants have to choose one, based on their requirements and targeted applications.

Participants can learn more about RISC-V architecture from riscv.org. Knowing RISC-V architecture is not mandatory for building applications using Shakti processors.

E-Class

  • An Embedded class processor, built around a 3-stage in-order core. It is aimed at low-power and low compute applications.

  • It is capable of running basic RTOS like FreeRTOS, Zephyr and eChronos.

  • Market segments include: Smart-cards, IoT devices, motor controls and robotic platforms.

Learn More >>

C-Class

  • A controller class of processor, aimed at mid-range application workloads.

  • The core is highly optimized, 6-stage in-order design with MMU support and capability to run operating systems Linux and Sel4.

  • C-class targets compute/control applications in the 0.5-1.5 Ghz range.

Learn More >>

Shakti ecosystem

  • Shakti SoCs have a wide range of system softwares and tool chain support.

  • There is a Software Development Kit (SDK) and Integrated Development Environment (IDE) dedicated for Shakti SoCs.

  • A lot of sample applications integrating different sensors and chips are demonstrated.

  • The whole ecosystem is vibrant and Open source.

Shakti-SDK

Shakti SDK provides all necessary tools, scripts and board support packages to build applications. There are example programs demonstrating working of sensors. User manuals and guides can be downloaded from the Downloads menu.

Operating systems

Linux, Sel4, Free RTOS, and Zephyr are some of the standard operating systems proven to work on Shakti.

IDE

For Rapid application development, IDE's are indispensable. PlatformIO IDE support is available for Shakti.

WHERE DO I START?

The following steps will walk you through the procedure for building and executing an application over Shakti SoC's. There are three SoC's supported on either Artix7 35t or Artix7 100t FPGA boards. FPGA board will be provided by MeitY

Step 1: System Requirements for Shakti Ecosystem

The recommended system requirements are as follows,

Recommended:

  • Ubuntu 18.04
  • 8 GB RAM
  • 12 GB HDD space


Step 2: Installing Shakti SDK


Shakti SDK provides all necessary tools, scripts and board support packages to build applications. SDK has drivers and examples for using different peripherals in SoCs.



Step 3: Installing the Shakti Tool-chain


SHAKTI uses RISC-V toolchains to build applications on top of it. The tool chain is prebuilt and can be installed as demonstrated in the video guide.



Step 4: Configuring the FPGA

Use Vivado Web Pack to configure Shakti processor in FPGA.

  • Install Vivado Webpack if it is not installed already Watch Video
  • Connect USB cable to laptop / pc and to FPGA board as shown in the image.
  • Configure Shakti processor in FPGA using Vivado Watch Video


Step 5: Develop, build and execute an Application


The steps to add an application to SHAKTI-SDK is given below.
Please check SHAKTI-SDK for more applications.

  • The video guide to add a simple application to Shakti-SDK Watch Video

Step 6: Selecting the SoC for the स्वदेशी Microprocessor Challenge

Please select a SoC for developing your application. The features and details of each SoC is listed below. The selection of a Soc comes with a particular FPGA board.

Pinaka

A 32-bit E-class SoC on Artix7 35T board

  • Features:

    1. E-class 3 stage In-order core
    2. RV32IMAC supported
    3. 128 KB of BRAM and 4 KB of ROM
    4. 32 GPIOs
    5. 6 PWM controllers
    6. 2 SPI controllers
    7. 3 UART controllers
    8. 2 I2C controllers
    9. 1 Timer (CLINT)
    10. One Interrupt controller (PLIC)
    11. Pin Mux supported
    12. Arduino Compatible pin assignments
    13. On board XADC
    14. Onboard FTDI based debugger
    15. Physical Memory Protection enabled
    16. Soft Float library support

Parashu

A 32-bit E-class SoC on Artix7 100T board

  • Features:

    1. E-class 3 stage In-order core
    2. RV32IMAC supported
    3. 256 MB of DDR and 4 KB of ROM
    4. Arduino Compatible pin assignments
    5. Pin Mux supported
    6. 32 GPIOs
    7. 6 PWM controllers
    8. 2 SPI controllers
    9. 3 UART controllers
    10. 2 I2C controllers
    11. 1 Timer (CLINT)
    12. One Interrupt controller (PLIC)
    13. On board XADC
    14. Onboard FTDI based debugger
    15. Physical Memory Protection enabled
    16. Soft Float library support
    17. Ethernet Lite

Vajra

A 64-bit C-class SoC on Artix7 100T board

  • Features:

    1. C-class 6 stage In-order core
    2. RV64IMACSU supported
    3. 256 MB of DDR and 4 KB of ROM
    4. Arduino Compatible pin assignments
    5. Pin Mux supported
    6. 32 GPIOs
    7. 6 PWM controllers
    8. 2 SPI controllers
    9. 3 UART controllers
    10. 2 I2C controllers
    11. 1 Timer (CLINT)
    12. One Interrupt controller (PLIC)
    13. On board XADC
    14. Onboard FTDI based debugger
    15. Physical Memory Protection enabled
    16. Soft Float library support
    17. Ethernet Lite

Stuck Somewhere?

FAQ

Our FAQ Section contains the most common errors faced.

Youtube

There are video guides available that can be useful for installation and problem solving.

Blog

Blog contains many articles explaining the processor

Learn with Shakti

Helps in understanding the development environment, also contains sample programs

Still not Clear?

Forum

https://groups.io/g/sp2020-shakti/topics

Frequently Asked Questions

-->

EVERY SECOND COUNTS!

REGISTRATION CLOSES IN

%D

Days

%H

Hours

%M

Minutes

%S

Seconds