-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This release is stable enough to run single thread simulation. Multicore simulation also run, but wasn't yet tested in >10M cycles simulation More information in the release notes
- Loading branch information
Showing
13 changed files
with
550 additions
and
128 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# EditorConfig is awesome: https://EditorConfig.org | ||
|
||
# top-most EditorConfig file | ||
root = false | ||
|
||
# Unix-style newlines with a newline ending every file | ||
[*] | ||
trim_trailing_whitespace = true | ||
end_of_line = lf | ||
insert_final_newline = true | ||
charset = utf-8 | ||
indent_style = space | ||
indent_size = 4 | ||
|
||
# 4 space indentation | ||
[*.py] | ||
indent_style = space | ||
indent_size = 4 | ||
|
||
# Tab indentation (no size specified) | ||
[Makefile] | ||
indent_style = tab | ||
|
||
# Matches the exact files either package.json or .travis.yml | ||
[*.{json,yml,yaml,toml}] | ||
indent_style = space | ||
indent_size = 2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,8 @@ | ||
[submodule "flexus"] | ||
path = flexus | ||
url = [email protected]:parsa-epfl/flexus.git | ||
branch = master | ||
branch = maintainer/bryan | ||
[submodule "qemu"] | ||
path = qemu | ||
url = [email protected]:parsa-epfl/qemu.git | ||
branch = master | ||
branch = next |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# Boilerplate stuff | ||
ChannelLatency 1 | ||
ChannelLatencyData 4 | ||
ChannelLatencyControl 1 | ||
LocalChannelLatencyDivider 4 | ||
SwitchInputBuffers 1 | ||
SwitchOutputBuffers 1 | ||
SwitchInternalBuffersPerVC 1 | ||
|
||
# Basic Switch/Node connections | ||
NumNodes 6 | ||
NumSwitches 2 | ||
SwitchPorts 7 | ||
SwitchBandwidth 4 | ||
|
||
Top Node 0 -> Switch 0:0 | ||
Top Node 1 -> Switch 1:0 | ||
Top Node 2 -> Switch 0:1 | ||
Top Node 3 -> Switch 1:1 | ||
Top Node 4 -> Switch 0:2 | ||
Top Node 5 -> Switch 1:2 | ||
|
||
# Topology for a 6 node MESH with 3 nodes per router | ||
Top Switch 0:5 -> Switch 1:3 | ||
|
||
# Deadlock-free routing tables | ||
|
||
# Switch 0 -> * | ||
Route Switch 0 -> 0 { 0:0 } | ||
Route Switch 0 -> 1 { 5:0 } | ||
Route Switch 0 -> 2 { 1:0 } | ||
Route Switch 0 -> 3 { 5:0 } | ||
Route Switch 0 -> 4 { 2:0 } | ||
Route Switch 0 -> 5 { 5:0 } | ||
|
||
# Switch 1 -> * | ||
Route Switch 1 -> 0 { 3:0 } | ||
Route Switch 1 -> 1 { 0:0 } | ||
Route Switch 1 -> 2 { 3:0 } | ||
Route Switch 1 -> 3 { 1:0 } | ||
Route Switch 1 -> 4 { 3:0 } | ||
Route Switch 1 -> 5 { 2:0 } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
RUNQ | ||
==== | ||
|
||
This document shows all about how to run any of the uArch simulators (KeenKraken & KnottyKraken). | ||
|
||
## Config File | ||
QFlex uses two differents type configuration files. | ||
|
||
The first is a custom file version of a QEMU invokation arguments. The file type can have any name and any extension. | ||
|
||
The second, `trace.cfg` and `timing.cfg` are used to configure KeenKraken or KnottyKraken. They are written in a specific structure only parsable by Flexus. The file type can have any name and any extension. | ||
|
||
### QEMU Config | ||
|
||
The config file is pure text, and shall follow the following standard. | ||
- Top level options should be written without any dash (-) nor any whitespaces prepended | ||
- 2nd level options needs to be indented with the same amount of whitespace along the file. | ||
|
||
All key-value arguments whether top or second level, needs a space between their key and their valu. | ||
|
||
|
||
```txt | ||
nographic | ||
machine | ||
virt | ||
gic-version max | ||
virtualization on | ||
cpu | ||
max | ||
pauth off | ||
parallel | ||
none | ||
m | ||
4G | ||
rtc | ||
clock vm | ||
``` | ||
|
||
The config contains three variables defined by `runQ`. | ||
- ROOT: Give the location where the `runQ` executable is located | ||
- SMP: The number of core to use for the next run, default=1 | ||
- EXTRA: Arbitry command passed by the command line, usually used to add uArch simulator specific arguments | ||
|
||
```txt | ||
kernel | ||
${ROOT}/Busybox/Image | ||
smp | ||
${SMP} | ||
drive | ||
file ${ROOT}/Busybox/rootfs.qcow2 | ||
format qcow2 | ||
if virtio | ||
libqflex | ||
mode trace | ||
lib-path ${ROOT}/../out/keenkraken/Debug/libkeenkraken.so | ||
cfg-path ${ROOT}/../trace.cfg | ||
debug vverb | ||
${EXTRA} | ||
``` | ||
|
||
### uArch Config | ||
`trace.cfg` and `timing.cfg` files contains variables definition that will overload the default ones. The best way to change the configuration is to rely on the file themselves and their documentation. | ||
|
||
## runQ | ||
This utility is written in pure Python. There is no requirement on the python verison; 3.11.9 is version known to work. | ||
|
||
Before using `runQ` you may want to make the file executable using `chmod +x runq`. `runQ` have an information page accessible using `./runq -h`. | ||
|
||
### Basic | ||
|
||
`runQ` must take a configuration file as input. | ||
|
||
```bash | ||
./runq my_dir/my_config | ||
``` | ||
|
||
The number of cores can be changed easily using `--smp`. | ||
|
||
```bash | ||
./runq my_dir/my_config --smp 64 | ||
``` | ||
|
||
### Debug | ||
|
||
`runQ` contains debug options: | ||
- `-d`,`--dry` : Print QEMU start command instead of executing it | ||
- `-b`,`--binary` : Set a custom binary to uses instead of looking in the current working directory | ||
- `--gdb` : Start a GDB instance an execute the command in it | ||
|
||
### Simulator | ||
|
||
The extra flags `-e`, or `--extra` can be used to add arguments to an existing configuration file. The argument will be set in place of the ${EXTRA} placeholder. | ||
|
||
```txt | ||
libqflex | ||
mode trace | ||
lib-path ${ROOT}/../out/keenkraken/Debug/libkeenkraken.so | ||
cfg-path ${ROOT}/../trace.cfg | ||
debug vverb | ||
${EXTRA} | ||
``` |
Oops, something went wrong.