Add Bitmanipulation Support
Created by: gullahmed1
Introduction
This PR adds support for the zba, zbb, zbc and zbs extensions in CV32E40P core. This support will be enabled by changing parameter ZBITMANIP = 1
in cv32e40p_pkg.sv file and disabled by changing parameter ZBITMANIP = 0
Implementation
Added the support for all the ratified bitmanip extensions as defined under this bitmanip-spec
- Zba: Address generation Instructions
- Zbb: Basic Bit-Manipulation
- Zbc: Carry-less Multiplication
- Zbs: Single-bit Instructions
Verification
All the implemented instructions are passing riscv-arch tests for B type instructions. I have implemented the CV32E40P core as a DUT and SAIL as a reference model within the RISCOF framework, the successful execution of riscv-arch tests on both the CV32E40P core and the SAIL reference model and the comparison of their signatures provided the desired test results.