OpenXiangShan / xfuzz

Fuzzing General-Purpose Hardware Designs with Software Fuzzers

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

使用机制

wyz-icer opened this issue · comments

commented
commented

您好
我在使用 Nutshell 工程联合xfuzz进行仿真过程,发现目前该机制支持到仿真完 case 开始收集覆盖的数据的阶段
问下 后续的 反馈迭代随机case 再补充加入仿真的过程 需要参考哪些内容
配置如下:
cp1@cp1:~/xs-env.kunminghu.master/NutShell$ git log -1
commit fa8de482817e6044042e8edeb4e3a60f494195c8 (HEAD)
Author: Yinan Xu xuyinan@ict.ac.cn
Date: Tue Jan 16 17:55:51 2024 +0800

CI: upgrade to ubuntu 22.04 (#162)

:~/xs-env.kunminghu.master/riscv-isa-sim$ git log -1
commit abdfe6738fcb64597e97780abe6f18fa02577502 (HEAD -> difftest, origin/difftest, origin/HEAD)
Merge: 55a81da7 c5092d5d
Author: Yinan Xu xuyinan@ict.ac.cn
Date: Tue Feb 6 11:26:21 2024 +0800

Merge remote-tracking branch 'riscv-software-src/master' into difftest

commit 1f38453 (HEAD -> main, origin/main, origin/HEAD)
Author: Yinan Xu xuyinan@ict.ac.cn
Date: Tue Feb 27 16:42:02 2024 +0800

Import FIRRTL transforms for Chisel coverage

运行:
./build/fuzzer -v -- ./ready-to-run/linux.bin -e 1000

结果显示:
Host time spent: 4,740ms
COVERAGE: llvm.branch, 274113, 4113, 4113
ExitCode: 2
./ready-to-run/linux.bin exits abnormally with return code: 1
Total Coverage: 1.500%

./build/fuzzer --help可以看到所有的选项以及它们的解释,应该含义都比较清晰

另外,我们也提供了一个python脚本:https://github.com/OpenXiangShan/xfuzz/blob/main/xfuzz。一个典型的命令是`./xfuzz --coverage firrtl.control --max-runs 1000000 --fuzzing -o logs-rocket-riscvdv --steps run --corpus-input ./rocket-riscvdv --elf /path/to/design/build/fuzzer -j8 -- --max-cycles 10000 --seed 2023`。这个命令会同时跑8个独立的fuzzer进程,corpus用的是rocket-riscvdv目录下的所有文件,最多跑100万个测试用例,每个测试用例最多运行1万个时钟周期,覆盖率反馈是用的firrtl.control覆盖率,输出的log存放在logs-rocket-riscvdv目录