How many times have we complained about not finding the right hardware parts for repairing a product that was imported? How many times have we paid insane amount of duty just because something was not available in India locally? Take for example the newly released iPhone 12 Pro Max. According to the Times of India statistics, we pay around 45k INR more than any US-based customer.
This is mainly because of two things, country-specific taxation levied on the company by its government for exporting and selling the goods to the public of their country and some other costs incurred by the company for providing services and logistics local to that country or region. Now, what if these hardware parts were serviced and manufactured in India itself, by an Indian company with parts and technology fully developed in India from scratch, maybe with some help from already existing open-source designs as a base? That would not only cut down the costs significantly but also have many other benefits like specially customized products for their own country like Xiaomi does for the Chinese market.
For those of you who are aware of the complexities of designing optimized and reliable hardware, this might seem to be far-fetched, and believe me, it probably is. However, it does not mean that we should continue relying on others for accomplishing something that we can do on our own, just because it is currently not feasible. Changing circumstances and diplomatic ties affect the import-export of products and last year it was made pretty evident to the world that they were extremely dependent on China for their manufacturing needs. If something affects this import-export, it has huge implications in India as well as the world as a whole and hence the government finally decided to develop its own microprocessor technology and the “Shakti” project is one of the few attempts in this direction.
So, what exactly is the Shakti Project?
Into Project Shakti – India’s First Microprocessor
Shakti is an open-source project to build a full ecosystem of production-grade processors, SOCs, development boards, and other things undertaken by the RISE group at IIT Madras. Their chips are based on the RISCV ISA and are designed specifically for different categories of applications, like the E-class, which is for basic microcontroller applications.
It has been designed using the 22 nm architecture at Intel (RISECREEK) and 180 nm architecture at the Semiconductor Complex in Chandigarh (RIMO). Despite this not being the current state of the art, the 180 nm architecture is extremely significant as it shows that it is possible to develop chips indigenously in India with complete Independence. Most recently, another tapeout called Moushik was successfully completed at the very same facility in Chandigarh. As far as I am aware, all the 3 chips that have been made were first-time silicon successes. In the future, the development of Shakti chips and architecture will be managed by Incore, a startup that is going to come out of IIT-M with the core members of the Shakti project involved as founders. They have the aim of running on a business model similar to that of Qualcomm i.e., they mainly wish to focus on designing and IP creation rather than manufacturing, which interested companies can outsource or handle on their own.
From IP Vendor to Fabrication, where does Shakti Fit in?
As you can see above (courtesy: anysilicon), this is a very excellent representation of how chips reach the end consumer. In the above flow, ARM is the most prominent IP vendor and Qualcomm is an excellent example of a fabless semiconductor vendor, who licenses manufactured chips to other companies, like mobile manufacturers but does not own their own foundry or chip manufacturing unit. Shakti might very well fit as the Qualcomm of India. However, the main difference here is that Shakti developers don’t look for royalties as the designs are inherently open source. This makes the architecture cheap and affordable to everyone, while still keeping some reasonable doors open for revenue generation, as the sale of self-branded chips. Companies and consumers willing to support the initiative are more likely to go for them instead of some other option, even if it is based on the same open-source architecture.
But, the architecture and ecosystem are still very nascent and require a lot of development to be adopted by Indian electronics companies. Hence, to promote and publicize the use of this architecture, the government organized a National level initiative, called the Swadeshi Microprocessor Challenge. If things go well, we can expect products running the Shakti processors within a few years.
So, how can you get started with Shakti Platform?
As the Shakti ecosystem is open-source, you can try it out without waiting for commercially manufactured chips, by using FPGAs! The Shakti architecture is currently available in 3 forms – Pinaka, Parashu, and Vajra. The Pinaka runs on the Artix7-35T and is meant for lightweight embedded applications. The latter two run on the Artix7-100T board and are meant for heavier applications. The Vajra can even run a very lightweight version of the Linux OS. Hence, you either need to have the Artix7-35T board or Artix7-100T for running the MCS for the above boards.
While the MCS can run on any Xilinx board, the onboard peripherals and pinouts will differ from board to board, and hence it is recommended to use the supported boards. Apart from this, you will require a Linux OS running Ubuntu 16 or 18 to code the programs into the board. You will also need some software like Vivado, GCC, gtkTerm, etc. for uploading the architecture on the board, debug the program in flash/ROM, view the serial output, and other things. You can choose to use an IDE for coding as well. VS Code and Arduino are supported. However, since Arduino does not support 64 bit boards, the Vajra board is not supported on Arduino IDE.
Here are the specs for the three architectures:
Before starting, you will need to get yourself acquainted with the Shakti ecosystem and sdk, apart from the basic principles of VHDL and FPGA development. So, here are some useful links:
- User manual for the shakti system
- Register mapping document, though it is missing some things:
- Youtube video can help you upload the MCS and program files into the Arty board
- Blog that explains how to setup an ubuntu environment for bare metal C or ASM coding for shakti
- Guide for using PlatformIO IDE with Shakti
- Guide for using Arduino IDE with Sakthi
Before starting with anything, do not forget to upload the MCS and program files onto the board for your preferred architecture. Refer to the above video for that.
Shakti is supported by many platforms, but currently, I will not recommend any platform including Arduino. This is because many libraries that Arduino or any IDE has, will have to be significantly changed to run with the Shakti architecture which in my opinion defeats the very purpose of using an IDE like Arduino that sacrifices features for ease. Right now, the best way to program with Shakti is to use bare metal C/C++ coding. We will soon be sharing projects to explain bare metal coding on the Shakti platform in detail stay tuned.
What’s the take?
The Shakti project might not be fully ready, but it is absolutely worth trying out if you would like to understand how chips are architectures are made, how FPGAs work, etc. More than anything, the next time you feel frustrated about the perils of using imported electronics, knowing this will change in the coming years will probably make you feel better.