mirror of
https://github.com/openhwgroup/cvw
synced 2025-01-26 06:25:20 +00:00
89 lines
3.4 KiB
Plaintext
89 lines
3.4 KiB
Plaintext
= Migration guide
|
|
:toc:
|
|
:icons: font
|
|
:numbered:
|
|
:source-highlighter: rouge
|
|
|
|
This document serves as a guide to users of the architectural suite to migrate their targets from an
|
|
older version to a newer version with minimal changes. This guide thus provides a patch scheme to get
|
|
the previous versions of the targets up and running with the new versions of the framework.
|
|
|
|
However, users are strongly encouraged to completely migrate to the newer versions, as and when
|
|
available, and avoid using these patches.
|
|
|
|
== Migration from v0.1 to v0.2
|
|
|
|
This section will describe the changes required to transition your targets ported on v0.1 to v0.2
|
|
framework. For examples please see: `riscv-target/riscvOVPsim_0p1` and `riscv-target/spike_0p1`.
|
|
|
|
=== Change header filename
|
|
|
|
In version v0.1 the target specific assembly macros were split across two files: `compliance_test.h`
|
|
and `compliance_io.h`. In version v0.2 these macros are to merged into a single file named
|
|
`model_test.h`. The following commands can the achieve the above:
|
|
|
|
----
|
|
mv compliance_test.h model_test.h
|
|
cat compliance_io.h >> model_test.h
|
|
rm compliance_io.h
|
|
----
|
|
|
|
=== Change device directory structure
|
|
|
|
In version v0.1 a target would have one or multiple of the directories defined to indicate supported
|
|
extensions: `rv32i`, `rv32im`, `rv32imc`, `rv32Zicsr` and `rv32Zifencei`. In version v0.2 the
|
|
directories of the extensions have changed in order to provide more consistency and less ambiguity.
|
|
|
|
For version v0.2, the `device` directory first needs to have either a `rv32i_m` directory to indicate
|
|
that the target is a 32-bit machine. The extension directories, as supported by the target, are
|
|
now to be created in each of these directories using the following mapping scheme:
|
|
|
|
. device/rv32i -> device/rv32i_m/I
|
|
. device/rv32im -> device/rv32i_m/M
|
|
. device/rv32imc -> device/rv32i_m/C
|
|
. device/rv32Zicsr -> device/rv32i_m/privilege
|
|
. device/rv32Zifencei -> device/rv32i_m/Zifencei
|
|
|
|
The contents of the extension directories need not change, unless there are dependencies on the path
|
|
of the directory itself. The following commands will achieve the above:
|
|
|
|
----
|
|
cd device
|
|
mkdir rv32i_m
|
|
mv rv32i rv32i_m/I
|
|
mv rv32im rv32i_m/M
|
|
mv rv32imc rv32i_m/C
|
|
mv rv32Zicsr rv32i_m/privilege
|
|
mv rv32Zifencei rv32i_m/Zifencei
|
|
----
|
|
|
|
=== Changes in target macro names.
|
|
|
|
Since some of the macros from the old framework have been re-purposed in the new v0.2 framework,
|
|
there will be name conflicts rendering the old ones useless. In order to retain the old macros, they
|
|
have been renamed with a post-fix `_OLD`. The macros that have been renamed are given below:
|
|
|
|
. `RVTEST_CODE_BEGIN` -> `RVTEST_CODE_BEGIN_OLD`
|
|
. `RVTEST_CODE_END` -> `RVTEST_CODE_END_OLD`
|
|
. `RVTEST_DATA_BEGIN` -> `RVTEST_DATA_BEGIN_OLD`
|
|
. `RVTEST_DATA_END` -> `RVTEST_DATA_END_OLD`
|
|
|
|
The user is thus required to make the above changes in the new `model_test.h` that was created
|
|
as part of this migration. The following commands will help achieve the above:
|
|
|
|
----
|
|
sed -i 's/RVTEST_CODE_BEGIN/RVTEST_CODE_BEGIN_OLD/g' model_test.h
|
|
sed -i 's/RVTEST_CODE_END/RVTEST_CODE_END_OLD/g' model_test.h
|
|
sed -i 's/RVTEST_DATA_BEGIN/RVTEST_DATA_BEGIN_OLD/g' model_test.h
|
|
sed -i 's/RVTEST_DATA_END/RVTEST_DATA_END_OLD/g' model_test.h
|
|
|
|
----
|
|
|
|
note:: the RVTEST_DATA_END in v0.1 enforced a 16-byte alignment before the signature end. This
|
|
constraint has been removed.
|
|
|
|
=== Changes in device Makefile.include files
|
|
|
|
No changes required.
|
|
|