# XiangShan 自动化批量测试脚本
Copyright 2020 zyy

## Quick Start
进入该目录，运行以下命令：  
```bash
ulimit -n 4096 # 设置操作系统允许打开的最大文件数
python3 run.py
```
输出结果默认保存在当前目录，建议使用者阅读 `run.py` 源码进行修改。  

## Usage
`python3 run.py -h` 可以打印帮助列表。  
参数：    
+ -I 仿真最大指令数
+ -e 仿真可执行文件的路径（比如 XiangShan/build/emu）
+ -T 仿真的线程数（一般和香山 emu 编译时候指定的线程数相同）
+ -h 帮助列表

某些默认参数可以在 `run.py` 脚本里面查看和修改，建议使用者阅读 `run.py` 源码。  
example:  
```bash
python3 run.py -I 10000000 -T 8 # 每个 `emu` 任务占用 8 个核，仿真最大指令数为 100M
```

## Backend
+ 该脚本会将一定数量的服务器处理器核作为资源池，每个 `emu` 任务都会占用相邻的和 `emu` 线程数量相同的处理核。
+ 如果当前所有的处理核资源都被占用，剩余的 `emu` 任务将会被阻塞。
+ 当一个 `emu` 任务运行完毕（成功或者失败），它占用的处理核资源会被释放，下一个 `emu` 就会继续占用该处理核资源运行。
+ 当一个 `emu` 任务“跑挂了”，它会回溯 `10000` 周期重新运行，并加上 `--dump-wave` 参数，直到再次“跑挂”或者 “hit good trap"。
+ 所有输出结果都会以文件形式保存在输出目录(`run.py` 指定)。

## End
更详细可以阅读`语雀`文档`开发工具部分`。  
