You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Bit-granular address mapping with optional XOR connections [7]
@@ -28,7 +29,7 @@ If you decide to use DRAMSys in your research please cite the paper [2] or [3].
28
29
## Additional Features
29
30
30
31
- Cycle-accurate **DDR5**, **LPDDR5** and **HBM3** modelling
31
-
-**Trace Analyzer** for visual and metric-based result analysis
32
+
-Extended analysis features for the **Trace Analyzer**
32
33
-**Free academic** or **commercial** licenses available (please contact [DRAMSys@iese.fraunhofer.de](mailto:DRAMSys@iese.fraunhofer.de) for more information)
33
34
34
35
## Video
@@ -45,7 +46,15 @@ All requests, responses and DRAM commands can be recorded in an SQLite trace dat
45
46
46
47
The Trace Analyzer's main window is shown below.
47
48
48
-
If you are interested in the Trace Analyzer, if you need support with the setup of DRAMSys in a virtual platform of your company, or if you require custom modifications of the simulator please contact [DRAMSys@iese.fraunhofer.de](mailto:DRAMSys@iese.fraunhofer.de).
49
+
A basic version of Trace Analyzer is included in the open source release of DRAMSys.
50
+
However, the full version of the Trace Analyzer includes many additional analysis features:
51
+
- Detailed transaction-level latency analysis
52
+
- Power, bandwidth, and buffer utilization analysis over simulation time intervals
53
+
- Timing dependency analysis at the DRAM command level
54
+
- Calculation of numerous predefined and user-defined metrics
55
+
- VCD export of generated trace
56
+
57
+
If you are interested in the full version of Trace Analyzer, if you need support with the setup of DRAMSys in a virtual platform of your company, or if you require custom modifications of the simulator please contact [DRAMSys@iese.fraunhofer.de](mailto:DRAMSys@iese.fraunhofer.de).
49
58
50
59

51
60
@@ -55,29 +64,39 @@ To use DRAMSys, first clone the repository.
55
64
56
65
### Dependencies
57
66
58
-
DRAMSys requires a **C++17** compiler. The build process is based on **CMake** (minimum version **3.24**). Furthermore, the simulator is based on **SystemC**. SystemC is included with FetchContent and will be build automatically with the project. If you want to use a preinstalled SystemC version, export the environment variable `SYSTEMC_HOME` (SystemC installation directory). Also make sure that the SystemC library was built with the same C++ version.
67
+
DRAMSys requires a **C++17** compiler. The build process is based on **CMake** (minimum version **3.24**). Furthermore, the simulator is based on **SystemC**. SystemC is included with FetchContent and will be build automatically with the project. If you want to use a preinstalled SystemC version, export the environment variable `SYSTEMC_HOME` (SystemC installation directory) and enable the `DRAMSYS_USE_EXTERNAL_SYSTEMC` CMake option. Also make sure that the SystemC library was built with the same C++ version.
68
+
69
+
If you choose to enable the compilation of the Trace Analyzer, a system installation of development packages for Qt5, Qwt and Python is required.
70
+
For example, on Ubuntu, these dependencies can be satisfied by installing the `qtbase5-dev`, `libqwt-qt5-dev` and `python3-dev` packages.
59
71
60
72
### Building DRAMSys
61
73
62
-
To build the standalone simulator for running memory trace files or traffic generators, create a build folder in the project root directory, then run CMake and make:
74
+
To build the standalone simulator for running memory trace files or traffic generators, first configure the project using CMake, then build the project:
63
75
64
-
```bash
76
+
```console
65
77
$ cd DRAMSys
66
-
$ mkdir build
67
-
$ cd build
68
-
$ cmake ..
69
-
$ make
78
+
$ cmake -S . -B build
79
+
$ cmake --build build
80
+
```
81
+
82
+
To include **DRAMPower** in your build enable the CMake option `DRAMSYS_WITH_DRAMPOWER`:
83
+
```console
84
+
$ cmake -B build -D DRAMSYS_WITH_DRAMPOWER=Y
70
85
```
71
86
72
-
To include **DRAMPower** in your build enable the CMake option `DRAMSYS_WITH_DRAMPOWER`. If you plan to integrate DRAMSys into your own SystemC TLM-2.0 project you can build only the DRAMSys library by disabling the CMake option `DRAMSYS_BUILD_CLI`.
87
+
If you plan to integrate DRAMSys into your own SystemC TLM-2.0 project you can build only the DRAMSys library by disabling the CMake option `DRAMSYS_BUILD_CLI`.
88
+
89
+
To include the Trace Analyzer in the build process, enable the CMake option `DRAMSYS_BUILD_TRACE_ANALYZER`.
90
+
91
+
In order to include any proprietary extensions such as the extended features of Trace Analyzer, enable the CMake option `DRAMSYS_ENABLE_EXTENSIONS`.
73
92
74
93
To build DRAMSys on Windows 10 we recommend to use the **Windows Subsystem for Linux (WSL)**.
75
94
76
95
### Executing DRAMSys
77
96
78
97
From the build directory use the commands below to execute the DRAMSys standalone.
79
98
80
-
```bash
99
+
```console
81
100
$ cd bin
82
101
$ ./DRAMSys
83
102
```
@@ -86,35 +105,42 @@ The default configuration file is *ddr4-example.json* located in *configs/*, the
86
105
87
106
To run DRAMSys with a specific configuration file:
88
107
89
-
```bash
108
+
```console
90
109
$ ./DRAMSys ../../configs/lpddr4-example.json
91
110
```
92
111
93
112
To run DRAMSys with a specific configuration file and configuration folder:
Copy file name to clipboardExpand all lines: configs/README.md
+8-4Lines changed: 8 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -273,11 +273,15 @@ An example follows.
273
273
- "Fifo": first in, first out policy
274
274
- "FrFcfs": first-ready - first-come, first-served policy (row hits are preferred to row misses)
275
275
- "FrFcfsGrp": first-ready - first-come, first-served policy with additional grouping of read and write requests
276
+
- "GrpFrFcfs": grouping of read and write requests has higher priority than grouping of page hits (reverse of "FrFcfsGrp"), **experimental without hazard detection**
277
+
- "GrpFrFcfsWm": "GrpFrFcfs" scheduler with watermarks to switch between read and write mode, **experimental without hazard detection**
- "Bankwise": requests are stored in bankwise buffers
278
-
- "ReadWrite": read and write requests are stored in different buffers
279
-
- "Shared": all requests are stored in one shared buffer
280
-
-*RequestBufferSize* (unsigned int)
281
+
- "Bankwise": requests are stored in bankwise buffers (buffer depth is configured with parameter *RequestBufferSize*)
282
+
- "ReadWrite": read and write requests are stored in two separate buffers (buffer depth is configured with parameters *RequestBufferSizeRead* and *RequestBufferSizeWrite*)
283
+
- "Shared": all requests are stored in one shared buffer (buffer depth is configured with parameter *RequestBufferSize*)
- depth of a single scheduler buffer entity, total buffer depth depends on the selected scheduler buffer policy
282
286
-*CmdMux* (string)
283
287
- "Oldest": from all commands that are ready to be issued in the current clock cycle the one that belongs to the oldest transaction has the highest priority; commands from refresh managers have a higher priority than all other commands, commands from power down managers have a lower priority than all other commands
0 commit comments