3 min read

CMSIS support in IDesignSpec

IDesignSpecTM (IDS) is a product suite that improves the productivity of FPGA/ASIC, IP/SoC, and System Development teams. These products encompass an innovative register information management system to capture hardware functional specifications and addressable register specifications in a single "executable" specification. All downstream code and documentation for the addressable registers, sequences or interrupts can be generated from a single specification along with CMSIS support.

CMSIS is a standard developed by ARM for Cortex-M processors. CMSIS allows compatible device support and provides software interfaces to the microprocessor and its peripherals so that software can be reused. CMSIS also helps to reduce the time to market for newly manufactured devices.

The following problems can be solved by IDS when it generates CMSIS output:

  • Automatic generation of CMSIS-SVD files for Silicon vendors. They don’t need to write it.
  • Silicon vendors can give these files to Tool vendors.
  • SVD files are used for debugging purposes for programmers.

IDS supports ARM-provided CMSIS-SVD component of CMSIS as an output, CMSIS stands for Common Microcontroller Software Interface Standard. The CMSIS System View Description format(CMSIS-SVD) standardizes the description of the system which is developed with  Arm Cortex-M processor-based microcontrollers, in particular, the memory-mapped registers of peripherals.

CMSIS-SVD in the Configuration Setting window Figure 1: Select CMSIS-SVD in the Configuration Setting window

Silicon vendors require a CMSIS-SVD file with a .svd extension which will further aid in the real-time debugging of programmer’s software code.  Based on this file, the silicon vendor will further develop the startup code and the system initialization files specific to their device. Before CMSIS support, programmers could see only data inside the peripheral registers connected with microprocessors inside microcontrollers. But with CMSIS-SVD support custom peripheral registers data can also be seen.

IDS generated XML format SVD file has Device hierarchy acceptable by Keil (ARM-supported tool)with zero errors i.e. device-cpu-peripherals-peripheral-registers-register-fields. We provide the device’s peripherals base address( which is selected by the location of the executable memory of the microcontroller) and offset of Registers and access type etc. ARM Command Utility (SVDConv.exe) converts the SVD file into a Special Function Register(SFR) file which is shown below in the snippet.

Conversion of SVD file into SFR file in the command line interfaceFigure 2 : Conversion of SVD file into SFR file in the command line interface

Custom peripheral registers can also be seen for debugging purposes from the SFR file which has to be added in the Keil with the respective path in the “option in target dialog” section which is shown below in the snippet.

SFR file in Keil μvision-An ARM Tool

Figure 3: SFR file in Keil µvision-An ARM Tool

Validation of data written or read inside Peripheral Registers, connected with ARM processor, is possible through FPGA boards like Zedboard with the help of Xilinx Vivado-SDK platform. Now It is possible in the ARM's tool Keil itself. Keil supports XML format. 

In IDS-Validate a programmer can give inputs such as Register specs and sequence specifications. The tool will generate output as a Header file, SVD (XML) file, and sequence APIs or firmware. With the help of these outputs, programs can be executed in Keil, as shown below in the block diagram.

Figure 4: Block Diagram of IDS Role play with Keil µvision

Figure 4: Block Diagram of IDS Role play with Keil µvision

In IDS-Validate, Programmers generate their firmware which is used to perform operations on custom peripheral devices and see the results. If results are not coming correctly then programmers can open the debug window. Keil opens a System Viewer, a sub-menu of the Peripherals menu in the toolbar, in which a device’s registers can be seen., The programmer can execute the program step by step and data can be validated inside peripheral registers which are shown below in the snippet.

On the Right side of the snippet, a window is opened which is called a system viewer. Inside this window peripheral “block1” and register “reg1” and fields “f1,f2,f3,f4” appear clear and data can be seen inside Register and their fields.

Debugging window in the system viewer in Keil μvisionFigure 5:  Debugging window in the system viewer in Keil µvision


IDS is a powerful tool that generates SVD file, Firmware, and Device header file, Programmers just need to install Keil and run the firmware with a custom SVD file. Firmware can be the programmer's own programs or IDS-generated sequences. No need for another tool debugger.

 Silicon vendors don't need to write SVD files who use the IDS tool to generate IPs. They can use IDS-generated SVD files to give tool vendors for programming purposes. If they change Specs CMSIS-SVD file automatically will be changed. The SVD file works well with the ARM processor and in the Keil environment, any customer who needs to create an ARM-supported SVD file can rely on our tool.

Call to action

To get more information about how we can help you to create an ARM-supported System View Description file reach out here.

Using PSS for Sequence Specification and Generation