
core-v-verif-cva6
文章平均质量分 91
CDerL
RISC-V、硬件建模、硬件验证、智能网卡、DPU、Android、NPU、AI、NIC(network_interconnect)软件架构
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
core-v-verif系列之cva6 环境搭建及相关介绍
在每次涉及 Verilator 或 VCS 的模拟运行后,生成的波形将被复制到包含日志文件的目录中(见上文),并在文件类型后缀前添加当前硬件配置的名称(例如,I-ADD-01.cv32a60x.vcd)。通过解析命令行参数和配置文件,脚本能够灵活地运行不同的测试和模拟器,并生成详细的日志和报告。它解析命令行参数,加载配置,检查工具版本,创建输出目录,并根据步骤运行指令生成器、编译程序、运行 ISS 模拟和比较结果。这些函数分别用于获取 ISS 模拟命令、编译指令生成器、运行 CSR 测试和运行指令生成器。原创 2025-03-21 03:00:00 · 943 阅读 · 0 评论 -
core-v-verif系列之cva6 ariane_tb.sv
包导入:导入了ariane_pkg和uvm_pkg包,分别用于 Ariane 处理器相关定义和通用验证方法学(UVM)相关功能。宏定义MAIN_MEM和USER_MEM宏用于访问 DUT 中不同内存区域的初始化值。定义了READ_ELF_T相关的 DPI-C 函数,用于读取 ELF 文件并获取其节信息。定义了ariane_tb配置参数:定义了CVA6Cfg参数,用于配置 CVA6 处理器。bit FpgaEn;bit RVF;bit RVD;原创 2025-04-04 00:30:00 · 1423 阅读 · 0 评论 -
core-v-verif系列之cva6 verilator Model之ariane_tb.cpp 函数read_elf
代码链接文件:fesvr_dpi.cc这段代码定义了一个外部可调用的 C 风格函数 ,其主要功能是读取 ELF(Executable and Linkable Format)文件,并对相关的全局变量进行初始化,同时加载 ELF 文件中的符号信息。:表示该函数使用 C 语言的调用约定,这样可以避免 C++ 的名称修饰,使得该函数可以在 C 语言代码中被调用。:函数返回值类型为 ,即不返回任何值。:函数名,用于读取 ELF 文件。:函数的参数,指向要读取的 ELF 文件的文件名。函数体1.原创 2025-04-04 00:15:00 · 929 阅读 · 0 评论 -
core-v-verif系列之cva6 dpi函数read_elf
zeros:用于存储零填充的数据。symbols:用于存储符号表信息,键为符号名,值为符号的地址。LOAD_ELFdowhile0该宏用于解析 ELF 文件的程序头和节表信息,根据传入的 ELF 头、程序头、节表和符号表类型进行处理。read_elf函数通过内存映射的方式读取 ELF 文件,并解析其程序头、节表和符号表信息,将有用的信息存储到全局变量中。使用宏LOAD_ELF可以处理 32 位和 64 位的 ELF 文件。原创 2025-03-30 00:15:00 · 640 阅读 · 0 评论 -
core-v-verif系列之cva6 verilator Model之Variane_testharness.sv相关模块sram
(endendendendend该sram模块实现了一个可配置的同步 SRAM(静态随机存取存储器),适用于 FPGA 或 ASIC 设计。该模块封装了一层SRAM 访问逻辑,并对输入/输出数据进行64 位对齐,以便推断出可综合(synthesizable)的存储器结构。1. 模块参数parameter DATA_WIDTH = 64, // 数据宽度,默认 64 位。原创 2025-03-31 00:30:00 · 1144 阅读 · 0 评论 -
core-v-verif系列之cva6 verilator Model之tc_sram.sv
tc_sram模块模拟了一个可配置的 SRAM 设备,具备多个读写端口,可通过参数化配置其存储容量、数据宽度、字节宽度、端口数量、读取延迟等特性。该模块还支持不同的仿真初始化模式,能在仿真开始时输出配置信息,并对参数和地址访问进行验证。NumWords:SRAM 中的字数,地址宽度可根据该参数计算得出。DataWidth:读写数据端口的宽度。ByteWidth:字节的宽度,用于计算字节使能信号的宽度。NumPorts:读写端口的数量,每个端口都是完整的读写端口。Latency。原创 2025-03-30 00:30:00 · 701 阅读 · 0 评论 -
core-v-verif系列之cva6 verilator Model之ariane和sram-rvfi_tracer
将结构体中的信号赋值给slave[0]接口。:将slave[0]接口中的信号赋值给结构体。这些宏的作用是简化 AXI 总线信号在模块之间的连接,确保请求和响应信号正确传递。根据下图所示,ariane通过slave[0] -> axi_bar这个序列来发送请求和接受反馈,从而来访问sramariane通过rvfi来写rvfi_tracer) (endend) i_xbar (.clk_i,.rst_ni,.test_i,endmodule。原创 2025-03-26 00:45:00 · 1027 阅读 · 0 评论 -
core-v-verif系列之cva6 verilator Model之Variane_testharness.sv相关模块
这段代码实例化了一个模块,用于处理 RISC-V 原子操作的 AXI 总线接口。通过参数化配置和信号连接,该模块能够灵活地集成到系统中,并确保 RISC-V 原子操作的正确性和独占性。这段代码定义了一个 AXI_BUS 接口实例,通过参数化配置使其能够适应不同的系统需求。它是系统中主设备和从设备之间通信的关键组件,遵循 AMBA AXI 协议标准。这段代码实例化了一个模块,用于在 AXI 总线接口中引入延迟。原创 2025-03-26 00:30:00 · 806 阅读 · 0 评论 -
core-v-verif系列之cva6 verilator Model之Variane_testharness.sv
Variane_testharness是一个用于测试Ariane RISC-V核心的测试平台(testbench),名为。它实例化了一个AXI总线、内存和其他外设,以模拟Ariane核心的运行环境。该测试平台支持调试模块(Debug Module)、JTAG接口、仿真DTM(Debug Transport Module)等,并且可以与Spike模拟器进行协同仿真。原创 2025-03-19 18:22:15 · 797 阅读 · 0 评论 -
core-v-verif系列之cva6 verilator Model之elfloader.cc
DPI(Direct Programming Interface,直接编程接口)是。原创 2025-03-24 00:30:00 · 992 阅读 · 0 评论 -
core-v-verif系列之cva6 verilator Model之ariane_tb.cpp
这个。原创 2025-03-25 01:00:00 · 921 阅读 · 0 评论 -
core-v-verif系列之cva6 verilator Model编译之filelist
如侵权,请联系删除。原创 2025-03-24 00:30:00 · 309 阅读 · 0 评论 -
core-v-verif系列之cva6 verilator Model编译命令详解
变量定义了一个非常复杂的 Verilator 命令,用于仿真和编译 RISC-V CPU 项目。原创 2025-03-25 00:45:00 · 973 阅读 · 0 评论 -
core-v-verif系列之cva6 verilator Model编译
Makefile 路径/cva6/Makefile。原创 2025-03-25 00:45:00 · 479 阅读 · 0 评论 -
core-v-verif系列之cva6 cva6.py执行示例(3)
3.3.2 Verilator仿真命令。(如果没有指定定向测试且未设置。3.3.1 Spike模拟器命令。2.2.4 GCC编译命令构建。7.2.3 结果处理和报告生成。3.2.1 初始化和目录设置。7.3.1 CSV生成命令。2.2.3 ISA处理。2.3. 实际执行示例。3.2. 执行流程分析。3.3. 实际命令示例。3.5. 输出目录结构。7.3. 实际执行示例。2.2.1 基础设置。2.2.2 文件处理。2.2.5 编译执行。3.2.2 命令生成。原创 2025-03-19 00:30:00 · 731 阅读 · 0 评论 -
core-v-verif系列之cva6 cva6.py执行示例(2)
这些命令用于编译并运行 CVA6 处理器的指令测试。3.2.3 .1. compile_cmd 示例。3.2.3 .2. sim_cmd 示例。(如果没有指定定向测试且未设置。3.2.5.1. 初始化和命令准备。3.2.5.2.2 批处理测试执行。3.2.5.2.3 命令生成和执行。3.2.5.3.1 LSF集群执行。3.2.3 .3. 命令参数说明。3.2.4.2.1 前置条件检查。3.2.4.2. 执行流程分析。3.2.4.3. 实际执行示例。3.2.5.2. 测试执行流程。原创 2025-03-18 14:02:16 · 1097 阅读 · 0 评论 -
core-v-verif系列之cva6 cva6.py执行示例(1)
执行输出日志执行python3 cva6.py调用顺序以下是执行该脚本时的主要函数调用顺序::(如果指定了 、 或 参数): (如果没有指定定向测试且未设置 参数):(如果 参数包含 或 ):(如果 参数包含 或 ):(如果 参数包含 或 ):(如果 参数包含 或 )::主要函数调用顺序从 函数开始,根据输入参数和配置文件逐步调用其他函数以完成编译、仿真和结果比较等任务。下面我们将从 函数开始,逐步分析在指定输入参数情况下 脚本中各个函数的调用顺序。main 函数当你原创 2025-03-24 00:45:00 · 1934 阅读 · 0 评论 -
core-v-verif系列之cva6 cva6.py (7)
")函数用于检查当前使用的 Verilator 版本是否满足要求。函数通过获取 Verilator 模拟器的版本信息,并检查其是否满足所需的版本要求。如果不满足要求,函数将调用函数退出程序并提示错误信息。Args:Returns:"""else:else:函数通过处理回归测试列表,递归处理导入的子列表,并根据给定的测试名称和迭代次数获取匹配的测试。匹配的测试将被记录并添加到中。try:main函数是程序的主要入口点。使用global关键字声明全局变量。获取当前工作目录cwd。原创 2025-03-24 01:00:00 · 705 阅读 · 0 评论 -
core-v-verif系列之cva6 cva6.py (6)
函数通过将输入的 Spike 命令行参数字符串拆分、映射并连接为一个完整的命令行参数字符串,简化了生成 Spike 命令行参数的过程。Args:Returns:"""函数用于从命令行和配置文件加载配置。参数:args: 解析后的命令行参数对象。cwd: 当前工作目录的路径。函数通过处理命令行参数和配置文件,加载和设置配置选项。根据目标和选项设置路径和相关参数,并处理自定义目标和默认设置。函数用于在工具版本不正确时记录错误并退出程序。参数:tool: 工具名称。原创 2025-03-18 00:45:00 · 1012 阅读 · 0 评论 -
core-v-verif系列之cva6 cva6.py (5)
try:read_seed函数用于读取和验证种子参数。参数:arg: 传递的种子参数(字符串格式)。read_seed函数用于读取和验证种子参数,确保传递的参数是非负整数。如果参数无效,则函数将引发带有详细错误消息的异常。"""parse_args函数用于创建命令行参数解析器并解析输入参数。参数:cwd: 当前工作目录的路径。--target: 运行生成器的预定义目标,默认值为rv32imc。-o或--output: 输出目录的名称。-tl或--testlist。原创 2025-03-17 22:30:00 · 858 阅读 · 0 评论 -
core-v-verif系列之cva6 cva6.py (4)
Args:"""try:函数用于分析 Tandem 报告中的信息。参数:yaml_path: YAML 报告文件的路径。函数通过解析 YAML 报告文件,提取并记录 TANDEM 模拟的结果信息。如果报告文件不完整,函数会记录相关错误信息。Args:"""try:Args:error } ")Args:error } ")Args:error } ")\n")Args:error } ")Args:error } ")函数用于将 UVM 种子记录到文件中。原创 2025-03-23 01:00:00 · 926 阅读 · 0 评论 -
core-v-verif系列之cva6 cva6.py (3)
Args:"""函数用于使用 RISC-V GCC 工具链编译汇编程序。参数:test_list: 要编译的汇编程序列表。output_dir: ELF 文件的输出目录。isa: 传递给 GCC 的 ISA 变体。mabi: 传递给 GCC 的 ABI 变体。debug_cmd: 生成调试命令日志而不运行。linker: 链接器的路径。函数通过调用 RISC-V GCC 工具链,将汇编程序编译为 ELF 文件,并转换为二进制文件。函数构建编译命令并执行,以生成指定的输出文件。原创 2025-03-23 03:00:00 · 796 阅读 · 0 评论 -
core-v-verif系列之cva6 cva6.py (2)
"""函数用于运行 CSR 测试。参数:cmd_list: 命令列表。cwd: 当前工作目录。csr_file: CSR 文件的路径。isa: 指令集架构(ISA)。iterations: 迭代次数。lsf_cmd: 用于运行指令生成器的 LSF 命令。: 结束签名地址。timeout_s: 超时时间(秒)。output_dir: 输出目录。debug_cmd: 生成调试命令日志而不运行。函数通过构建并运行一个命令来生成定向的 CSR 测试代码。原创 2025-03-22 03:00:00 · 968 阅读 · 0 评论 -
core-v-verif系列之cva6 cva6.py (1)
SeedGen类是一个生成伪随机种子的对象,用于测试迭代。SeedGen类通过多种方式生成测试的伪随机种子,包括使用固定种子、起始种子和随机种子,并且支持从 YAML 文件中读取重新运行种子。这为测试迭代提供了灵活的种子生成策略。Args:Returns:"""函数用于设置指令生成器的编译和模拟命令。参数:simulator: 使用的 RTL 模拟器。: RTL 模拟器的 YAML 配置文件。cov: 启用功能覆盖。exp: 使用实验版本。debug_cmd。原创 2025-03-17 17:59:00 · 1465 阅读 · 0 评论