Skip to content

Nuclei Microcontroller Software Interface Standard V1.2.0

Latest
Compare
Choose a tag to compare
@fanghuaqi fanghuaqi released this 03 Nov 13:08

This is the version V1.2.0 release.

  • This 1.2.0 version will no longer support old gcc 10 verison, and it now only support Nuclei Toolchain 2023.10
    (gcc13 and clang17) or later. The major changes that can be felt are as follows:

  • The prefix of toolchain has changed from riscv-nuclei-elf- to riscv64-unknown-elf-

  • The -march option has changed a lot, see riscv-non-isa/riscv-toolchain-conventions#26, for examples:

    • b extension changed to _zba_zbb_zbc_zbs extension,
    • p extension changed to _xxldsp , _xxldspn1x , _xxldspn2x , _xxldspn3x extensions which means
      stardard DSP extension, Nuclei N1, N2, N3 DSP extensions
    • v extension changed to v, _zve32f, _zve64f extensions

    These extensions also can be combined in a certain order, please be cautious

  • The name of Libraries has changed with -march, for examples, the library named libnmsis_dsp_rv32imacb.a is now named
    libnmsis_dsp_rv32imac_zba_zbb_zbc_zbs.a since b extension changed to _zba_zbb_zbc_zbs

  • NMSIS v1.2.0 should be used with Nuclei SDK v0.5.0 or later

  • RVV intrinsic APIs is update to v0.12.0, please visit rvv-intrinsic-doc <https://github.com/riscv-non-isa/rvv-intrinsic-doc/releases/tag/v0.12.0>_

Please create issue if you are facing issues using NMSIS, see https://github.com/Nuclei-Software/NMSIS/issues

  • NMSIS-Core

    • Add more Nuclei DSP N1/N2/N3 intrinsic APIs and fix some intrinsic API definition and descriptions in core_feature_dsp.h
    • Add basic IAR support for NMSIS Core header files and device template, for sample usage, see Nuclei SDK 0.5.0 release
    • Fix missing break in __set_hpm_event function API in core_feature_base.h, which affected the nmsis_bench.h
    • Use IAR custom instruction and IAR P-ext 0.5.0 support to support Nuclei DSP extension based on P-ext 0.5.4, see changes maded in core_feature_dsp.h, only Xxldsp is supported, no N1/N2/N3 supported, and some instructions can't be supported using custom instruction, but in future, we will cooperate with IAR to do full Nuclei DSP support
    • Add more CSRs definition according to Nuclei ISA updates such as Zc/stack check
    • No more bitmanip extension intrinsic header <rvintrin.h> for gcc13
    • Fix __RV_CLAMP macro and add __MACHINE/SUPERVISOR/USER_INTERRUPT macros
    • Add __get_hart_index and SysTimer_GetHartID and modify __get_hart_id API
    • In <Device.h>, we introduced __HARTID_OFFSET and __SYSTIMER_HARTID macro to represent timer hart index relation with cpu hartid for AMP SoC
    • Clean compiler warning of NMSIS-Core header files
    • Fix Cache CCM API missing return value in some case
  • NMSIS-DSP

    • Defined NUCLEI_DSP_DEFAULT, NUCLEI_DSP_N1, NUCLEI_DSP_N2, NUCLEI_DSP_N3 in riscv_math_types.h
      according to gcc options. This means that if compile with --march=rv32imafc_xxldspn1x, the NUCLEI_DSP_N1 will defined,
      if compile with --march=rv32imafc_xxldspn2x, the NUCLEI_DSP_N1 and NUCLEI_DSP_N2 will defined, and so on
    • Optimize some functions with DSP N1/N2/N3 (such as FilteringFunctions, TransformFunctions, ComplexMathFunctions)
    • RVV intrinsic APIs is update to v0.12.0
    • Add f16 support(include f16 rvv extension support)
    • Fix the use of expd80 instruction(Nuclei default dsp instruction)
    • Fix some testcases bugs(such as MatrixFunctions, TransformFunctions)
  • NMSIS-NN

    • Defined NUCLEI_DSP_DEFAULT, NUCLEI_DSP_N1, NUCLEI_DSP_N2, NUCLEI_DSP_N3 in riscv_nn_math_types.h
      according to gcc options
    • RVV intrinsic APIs is update to v0.12.0
    • Clean code(nnref lib)
  • Build System

    • Toolchain change to gcc13, The prefix of toolchain has changed to riscv64-unknown-elf-, old gcc10 riscv-nuclei-elf-gcc changed to gcc 13 riscv64-unknown-elf-gcc
    • Add ci configurations to support different instruction combinations, please check Scripts/Build/nmsis_dsp.json and Scripts/Build/nmsis_nn.json
    • Library naming scheme changed due to march changes, which means the library name will not be compatiable with previous release, check dsp/nn get started guide for details
    • F16 library build is supported now when zfh/zvfh extension enabled
  • CI

    • Change NMSIS to use Nuclei SDK evalsoc as ci run target, demosoc is removed in 0.5.0 Nuclei SDK release.
    • Spilt DSP and NN test jobs to reduce ci running time
    • Build DSP/NN library in one job now, since N1/N2/N3 library naming are different, and library build speed for risc-v vector increased now

Full Changelog: 1.1.1...1.2.0