Announcing the launch of CHERI Alliance: A unified front against digital threats

Blog

Codasip Studio 9.2.0: what’s new?

Codasip Studio in its 9.2.0 release is now available. This new version of our unique processor design automation toolset comes with a series of new features that both expand and optimize its applications.

The new features supported in Codasip Studio 9.2.0 include:

  • Macro Processor.
  • Arrays in CodAL.
  • uRISC-V 2.0.
  • Pipeline definition in modules.
  • Simulator Save state and Restore state.
  • RHEL8 support (Red Hat Enterprise Linux).
  • MacOS support, as announced during Embedded World 2022.

Let’s have a look at the macro processoruRISC-V 2.0, and arrays in CodAL features.

MACRO PROCESSOR SUPPORT FOR SIMPLIFIED CODAL DEVELOPMENT

Codasip Studio 9.2.0 includes a macro processor, that is, a powerful text processor that simplifies the writing of CodAL models by using a set of constructs for generating the code. Compared to a C/C++ preprocessor, it supports major features such as callable macros with arguments, loops, and complex expressions, among others.

The macro processor simplifies the work of developers as it avoids repeating efforts and calling functions that could create unnecessary overheads. The following example shows a possible usage of the macro processor.

Macro Processor example usage

Note that the macro processor can also be used with other languages and tools.

ARRAY SUPPORT IN CODAL FOR MULTI-THREADED APPLICATIONS

Codasip Studio 9.2.0 supports arrays of registers and register files for multi-threaded cores. These arrays hold the information on a per thread basis. The size of the arrays matches the number of threads and each thread only includes its respective index in the array that is available for use.

Note that arrays of signals are also supported in Codasip Studio 9.2.0, however they always have the same size and multi-dimensional arrays are not supported. Array-to-array assignment is supported as long as the data type matches one-to-one, even if the resource type is different. For example, assigning an array of registers to an array of signals of the same data type is supported.

Arrays can be dynamically indexed. In the case of loops, semantics are extended so they can be used with arrays.

The following example shows the array syntax for architectural resources.

register bit[32] r_foo [32];

register_file bit[32] rf_foo [FOO_SIZE];

register bit[1] s_foo [ONE + TWO];

Example arrays in CodAL

URISC-V 2.0 SUPPORT FOR EXPERIMENTATION

Codasip Studio 9.0 first supported the uRISC-V processor for 5-stage pipeline applications. uRISC-V is a tutorial that allows users to inspect and learn on a real RISC-V implementation. In Codasip Studio 9.2.0, this tutorial becomes uRISC-V 2.0 is now available also for 3-stage pipeline applications.

This feature extends the possibilities both for educational purposes or for familiarization with the RISC-V architecture in Studio. It includes experimenting with modifying the processor, adding custom instruction extensions, and optimizing performance in a model that has been designed with the same methodology as the Codasip RISC-V commercial cores.

The implementation is a simple 32-bit or 64-bit 3-stage pipeline processor that supports the RISC-V I (Base Integer), M (Standard Extension for Integer Multiplication and Division), Zicsr (Control and Status Register instructions) and Zifencei (fence instructions) extensions as well as the RISC-V standard based On-Chip Debugger.

uRISC-V 2.0 in Codasip Studio 9.2.0 (Linux OS). Click the image to enlarge.

Learn more about Codasip Studio

Other blog posts