Shakti - The First Indigenous Indian Microprocessor & Microcontroller.
Shakti is the first opensource initiative taken by the Indian Institute of Technology, Madras to develop the first indigenous industrial-grade processor based on RISC-V architecture. The whole project was developed by the RISE group at IIT Madras, with assistance from Intel corporation. The shakti project is based on 22nm FinFET technology.
All the source codes for SHAKTI are open-sourced under Modified BSD License of the University of California, Berkeley. Which means the source code is royalty and patent-free. Anyone can use, modify and distribute the code as long as it meets the license terms.
If you don’t know the difference between a microprocessor and a microcontroller, then read the below link.
The SHAKTI project aims to build 6 variants of processors based on the RISC-V ISA.
Base Class Of Processors
Single core processor
E-class
The E-class is a 32/64 bit embedded class processor aimed at low-power and low compute applications with a clock frequency of less than 200MHz. It’s capable of running real-time operating systems like FreeRTOS, Zephyr and eChronos. Market segments of E-class processor support Smart-cards, IoT devices, motor controls and robotic platforms.
C-class
The C-class is a 64-bit controller class of processor, aimed at mid-range embedded application. The core is highly optimized, 6-stage in-order design with MMU support and the capability to run operating systems like Linux and Sel4. C-class targets compute/control applications in the 0.5 to 1.5 GHz range. It’s extremely configurable with the support of the standard RV64GC ISA extensions. The application domain of this class ranges from embedded systems, motor-control, IoT, storage, industrial applications to low-cost high-performance Linux based applications such as networking, gateways etc.
I-class
The I-class is a 64-bit processor which targets the compute, mobile, storage and networking platforms. Its features include out-of-order execution, multithreading, aggressive branch prediction, non-blocking caches and deep pipeline stages. The operational clock frequency of this processor is 1.5-2.5 GHz.
Multicore Processors
M-class
A mobile class processor with a maximum of 8 cores, the cores being a combination of C and I class cores. The M-class processors are aimed at general-purpose compute, low-end server and mobile applications. The operation frequency ranges up to 2.5 GHz. It supports large issue size, quad-threaded & optional NoC fabric.
S-class
The S-Class is a 64-bit superscalar,multi-threaded variant aimed at Desktop and Enterprise server Application. Its supports 2-16 cores with a clock frequency of about 1.2-3 GHz.
H-class
The H-class is a 64-bit processor aimed at highly parallel enterprise, HPC and analytics applications. The cores can be a combination of C or I class, single-thread performance driving the core choice. The H-class has up to 128 cores with multiple accelerators per core.
Experimental Processors
The T-class and F-class processors are experimental processors aimed at developing secure and fault-tolerant systems for mission-critical applications.
T-class
The T-class is aimed to provide additional hardware support for securing information from memory-based attacks. Its design focus on a unified hardware framework for mitigating spatial and temporal memory attacks
F-class
The F-class is a fault-tolerant version of the base class processor. Features include redundant compute blocks (like DMR and TMR), temporal redundancy modules to detect permanent faults, lock-step core configurations, fault localization circuits, ECC for critical memory blocks and redundant bus fabrics.
SHAKTI-SDK
SHAKTI-SDK Architecture
Software Program Flow
Features of SHAKTI-SDK
- Open-source software development platform for SHAKTI.
- Clean separation between drivers, boot, core and application layers.
- Driver support for SPI, QSPI, PLIC, CLINT, UART, I2C and PWM.
- Multiple sensors connected and proven with SHAKTI-SDK.
- Standalone and Debug mode supported.
- Multilevel logging, Flash programming & Dynamic memory management supported.
- Single place for bare-metal application development, projects and benchmarks.
- Support for Third-party boards and in-house boards.
- Provides a PlatformIO extension for VScode.
- SHAKTI also provides support for FreeRTOS.