riscv-arch-test系列之riscof使用范例

创建必要的环境文件

为了通过 RISCOF 运行测试,您需要提供以下项目:

  • config.ini:这是一个基本的配置文件,遵循 ini 语法。此文件将捕获诸如 DUT/参考插件的名称、插件的路径、基于 riscv-config 的 yamls 的路径等信息。有关内容和语法的更多信息,请参阅 Config.ini 语法部分。

  • dut-plugin 目录:RISCOF 要求测试的 DUT 模型以 Python 插件的形式呈现。Python 插件仅是一个包含某些标准和定义函数的 python 文件,用于执行测试编译、执行和签名提取等活动。此 python 文件名需要以 riscof_ 为前缀,并且必须存在于 dut-plugin 目录中。有关如何编写此 python 文件的详细信息,请参阅 Python 插件文件部分。

    该目录还需要包含基于 riscv-config 的 isa 和 platform yamls,这些 yamls 提供了 DUT 的定义。这些 yamls 将用于筛选需要在 DUT 上运行的测试。

    最后,dut-plugin 目录中还需要存在一个 env 目录,其中包含编译和运行 DUT 上测试所需的环境文件,如 model_test.h。有关可以在 model_test.h 文件中使用的宏的定义,请参阅 TestFormat 规范。env 目录还可以包括链接脚本、用户可能需要的后处理脚本等其他文件。

  • reference-plugin 目录:与 DUT 插件类似,RISCOF 还需要一个参考模型插件。目录和文件的结构与 DUT 相同。然而,不需要 isa 和 platform yamls,因为 RISCOF 将始终从 DUT 插件中选择 yamls。

有关预构建插件的示例模板,请参阅参考 RISCOF 插件列表。

生成 DUT 和参考模型

为了简化操作,RISCOF 通过如下所示的 setup 命令为用户生成 DUT 和参考模型的标准预构建模板:

$ riscof setup --dutname=spike

执行日志

     INFO | ****** RISCOF: RISC-V Architectural Test Framework 1.25.3 *******
    INFO | using riscv_isac version : 0.18.0
    INFO | using riscv_config version : 3.18.3
    INFO | Setting up sample plugin requirements [Old files will be overwritten]
    INFO | Creating sample Plugin directory for [DUT]: spike
    INFO | copying/path/to/python/site-packages/riscof/Templates/setup/model/env/model_test.h ->/path/to/$pwd/spike/env
    INFO | copying/path/to/python/site-packages/riscof/Templates/setup/model/env/link.ld ->/path/to/$pwd/spike/env
    INFO | copying/path/to/python/site-packages/riscof/Templates/setup/model/model_platform.yaml ->/path/to/$pwd/spike
    INFO | copying/path/to/python/site-packages/riscof/Templates/setup/model/model_isa.yaml ->/path/to/$pwd/spike
    INFO | copying/path/to/python/site-packages/riscof/Templates/setup/model/riscof_model.py ->/path/to/$pwd/spike
    INFO | copying/path/to/python/site-packages/riscof/Templates/setup/model/__pycache__/riscof_model.cpython-310.pyc ->/path/to/$pwd/spike/__pycache__
    INFO | Creating sample Plugin directory for [REF]: sail_cSim
    INFO | copying/path/to/python/site-packages/riscof/Templates/setup/sail_cSim/env/model_test.h ->/path/to/$pwd/sail_cSim/env
    INFO | copying/path/to/python/site-packages/riscof/Templates/setup/sail_cSim/env/link.ld ->/path/to/$pwd/sail_cSim/env
    INFO | copying/path/to/python/site-packages/riscof/Templates/setup/sail_cSim/__pycache__/__init__.cpython-310.pyc ->/path/to/$pwd/sail_cSim/__pycache__
    INFO | copying/path/to/python/site-packages/riscof/Templates/setup/sail_cSim/__pycache__/riscof_sail_cSim.cpython-310.pyc ->/path/to/$pwd/sail_cSim/__pycache__
    INFO | copying/path/to/python/site-packages/riscof/Templates/setup/sail_cSim/__init__.py ->/path/to/$pwd/sail_cSim
    INFO | copying/
### RISC-V Nuclei 编译工具链安装配置 对于RISC-V架构下的Nuclei处理器系列,其编译工具链的构建主要依赖于`riscv-gnu-toolchain`这一开源项目。为了成功建立适用于Nuclei平台的开发环境,需遵循一系列特定的操作流程。 #### 下载并初始化仓库 从GitHub克隆官方维护的RISC-V GNU工具链仓库是一个常见的起点[^2]: ```bash git clone --recursive https://github.com/riscv/riscv-gnu-toolchain.git cd riscv-gnu-toolchain ``` 考虑到网络条件可能影响到子模块同步的速度甚至成功率,建议寻找国内镜像站点作为替代方案来加速资源获取过程[^4]。 #### 准备必要的软件包 确保宿主机已准备好所有必需的支持库与工具集,这一步骤通常涉及通过包管理器安装多个组件。针对Ubuntu操作系统而言,执行如下命令可以满足需求: ```bash sudo apt-get update && sudo apt-get install -y \ autoconf automake autotools-dev curl python3 libmpc-dev \ libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo \ gperf libtool patchutils bc zlib1g-dev libexpat-dev ``` #### 配置与编译 进入之前创建的工作目录后,运行configure脚本来指定目标路径及其他参数设置。对于支持RV32GC指令集且采用ILP32D ABI标准的情况,可参照下面的例子进行调整[^3]: ```bash mkdir -p build && cd build ../configure --prefix=/opt/riscv --with-arch=rv32gc --with-abi=ilp32d make -j$(nproc) ``` 值得注意的是,默认情况下此操作会尝试构建完整的Linux内核及用户空间程序所需的全部工具集合(`linux`);如果仅关注裸机应用,则可以选择只生成基础的新库版本(`newlib`)以节省时间和磁盘空间消耗。 #### 测试验证 完成上述步骤之后,应该能够获得一套功能完备的交叉编译套件。可以通过简单测试案例确认新安装好的工具能否正常工作: ```bash echo 'int main(){}' | /opt/riscv/bin/riscv64-unknown-linux-gnu-gcc - ``` 以上即为围绕着RISC-V Nuclei所展开的一般性编译工具链部署指导概览。具体细节可能会依据实际应用场景有所变化,请参阅官方文档获取最权威的信息来源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值