What is SDK?

SDK stands for Software Development Toolkit. An SDK is a collection of the essential software tools, libraries, documentation, and resources that developers can use to build software applications for a specific platform or programming language. The best known elements in an SDK are the compiler, assembler/disassembler, debugger and linker. The tools and resources in an SDK help developers test, debug, and deploy applications more easily and efficiently.

How are SDKs created?

Historically SDKs have been created from open source codebases such as GNU or LLVM. While relying on open source SDKs for commonly used architectures is well-tried, utilizing the flexibility of a modular and customizable ISA like RISC-V is very challenging.

RISC-V is modular and customizable meaning that many permutations of the ISA are possible each requiring SDK support. One approach is to create derivatives of open source toolchains. The manual work and verification involved should not be underestimated.

The alternative, which is particularly relevant to RISC-V, is to model the ISA in an architecture description language (ADL) such as Codasip’s CodAL. The entire SDK can be automatically generated from the ADL description. This enables rapid experimentation with the processor’s ISA.


Getting started with Codasip