From cf3398c66f2b1c3c35b73ff1d932ef4b793f48a2 Mon Sep 17 00:00:00 2001 From: Lukas Steiner Date: Mon, 20 Jul 2020 13:46:25 +0200 Subject: [PATCH 1/5] Create working example for thermalsim. --- .../configs/amconfigs/am_wideio_thermal.json | 41 ++++++++ .../configs/simulator/wideio_thermal.json | 2 +- .../resources/simulations/wideio-thermal.json | 2 +- .../resources/traces/generateErrorTest.pl | 97 +++++++++++++------ DRAMSys/library/src/simulation/dram/Dram.cpp | 6 +- DRAMSys/library/src/simulation/dram/Dram.h | 1 + DRAMSys/simulator/StlPlayer.h | 6 +- 7 files changed, 119 insertions(+), 36 deletions(-) create mode 100644 DRAMSys/library/resources/configs/amconfigs/am_wideio_thermal.json diff --git a/DRAMSys/library/resources/configs/amconfigs/am_wideio_thermal.json b/DRAMSys/library/resources/configs/amconfigs/am_wideio_thermal.json new file mode 100644 index 00000000..96be2a29 --- /dev/null +++ b/DRAMSys/library/resources/configs/amconfigs/am_wideio_thermal.json @@ -0,0 +1,41 @@ +{ + "CONGEN": { + "BANK_BIT": [ + 4, + 5 + ], + "BYTE_BIT": [ + 0, + 1, + 2, + 3 + ], + "CHANNEL_BIT": [ + 25, + 26 + ], + "COLUMN_BIT": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12 + ], + "ROW_BIT": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ] + } +} \ No newline at end of file diff --git a/DRAMSys/library/resources/configs/simulator/wideio_thermal.json b/DRAMSys/library/resources/configs/simulator/wideio_thermal.json index b37cda4f..6ce8c0a4 100644 --- a/DRAMSys/library/resources/configs/simulator/wideio_thermal.json +++ b/DRAMSys/library/resources/configs/simulator/wideio_thermal.json @@ -10,7 +10,7 @@ "PowerAnalysis": true, "SimulationName": "wideio", "SimulationProgressBar": true, - "StoreMode": "ErrorModel", + "StoreMode": "Store", "ThermalSimulation": true, "UseMalloc": false, "WindowSize": 1000 diff --git a/DRAMSys/library/resources/simulations/wideio-thermal.json b/DRAMSys/library/resources/simulations/wideio-thermal.json index 82c23ff5..1e9a1c0b 100644 --- a/DRAMSys/library/resources/simulations/wideio-thermal.json +++ b/DRAMSys/library/resources/simulations/wideio-thermal.json @@ -1,6 +1,6 @@ { "simulation": { - "addressmapping": "am_wideio_4x256Mb_rbc.json", + "addressmapping": "am_wideio_thermal.json", "mcconfig": "fr_fcfs.json", "memspec": "JEDEC_256Mb_WIDEIO-200_128bit.json", "simconfig": "wideio_thermal.json", diff --git a/DRAMSys/library/resources/traces/generateErrorTest.pl b/DRAMSys/library/resources/traces/generateErrorTest.pl index 477c5185..39589e25 100644 --- a/DRAMSys/library/resources/traces/generateErrorTest.pl +++ b/DRAMSys/library/resources/traces/generateErrorTest.pl @@ -33,35 +33,72 @@ # Authors: # Matthias Jung # Eder F. Zulian +# Lukas Steiner use warnings; use strict; # Assuming this address mapping: -# -# -# -# -# -# -# +# { +# "CONGEN": { +# "BYTE_BIT": [ +# 0, +# 1, +# 2, +# 3 +# ], +# "BANK_BIT": [ +# 4, +# 5 +# ], +# "COLUMN_BIT": [ +# 6, +# 7, +# 8, +# 9, +# 10, +# 11, +# 12 +# ], +# "ROW_BIT": [ +# 13, +# 14, +# 15, +# 16, +# 17, +# 18, +# 19, +# 20, +# 21, +# 22, +# 23, +# 24 +# ], +# "CHANNEL_BIT": [ +# 25, +# 26 +# ] +# } +# } # This is how it should look like later: -# 31: write 0x0 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +# 31: write 0x0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -my $numberOfRows = 8192; -my $numberOfColumnsPerRow = 128; +my $numberOfChannels = 4; +my $numberOfRows = 4096; +my $numberOfColumns = 128; my $bytesPerColumn = 16; my $burstLength = 4; # burst length of 4 columns --> 4 columns written or read per access my $dataLength = $bytesPerColumn * $burstLength; -my $rowOffset = 0x4000; -my $colOffset = 0x80; +my $channelOffset = 0x2000000; +my $rowOffset = 0x2000; +my $columnOffset = 0x40; # Generate Data Pattern: my $dataPatternByte = "ff"; -my $dataPattern = ""; +my $dataPattern = "0x"; for(my $i = 0; $i < $dataLength; $i++) { $dataPattern .= $dataPatternByte; @@ -71,28 +108,34 @@ my $clkCounter = 0; my $addr = 0; # Generate Trace file (writes): -for(my $row = 0; $row < ($numberOfRows * $rowOffset); $row = $row + $rowOffset) +for(my $cha = 0; $cha < ($numberOfChannels * $channelOffset); $cha = $cha + $channelOffset) { - for(my $col = 0; $col < ($numberOfColumnsPerRow * $colOffset); $col = $col + ($colOffset * $burstLength)) + for(my $row = 0; $row < ($numberOfRows * $rowOffset); $row = $row + $rowOffset) { - my $addrHex = sprintf("0x%x", $addr); - print "$clkCounter:\twrite\t$addrHex\t$dataPattern\n"; - $clkCounter++; - $addr += $colOffset * $burstLength; + for(my $col = 0; $col < ($numberOfColumns * $columnOffset); $col = $col + ($columnOffset * $burstLength)) + { + my $addrHex = sprintf("0x%x", $addr); + print "$clkCounter:\twrite\t$addrHex\t$dataPattern\n"; + $clkCounter++; + $addr += $columnOffset * $burstLength; + } } } -$clkCounter = 350000000; +$clkCounter = 50000000; $addr = 0; # Generate Trace file (reads): -for(my $row = 0; $row < ($numberOfRows * $rowOffset); $row = $row + $rowOffset) +for(my $cha = 0; $cha < ($numberOfChannels * $channelOffset); $cha = $cha + $channelOffset) { - for(my $col = 0; $col < ($numberOfColumnsPerRow * $colOffset); $col = $col + ($colOffset * $burstLength)) + for(my $row = 0; $row < ($numberOfRows * $rowOffset); $row = $row + $rowOffset) { - my $addrHex = sprintf("0x%x", $addr); - print "$clkCounter:\tread\t$addrHex\t$dataPattern\n"; - $clkCounter++; - $addr += $colOffset * $burstLength; + for(my $col = 0; $col < ($numberOfColumns * $columnOffset); $col = $col + ($columnOffset * $burstLength)) + { + my $addrHex = sprintf("0x%x", $addr); + print "$clkCounter:\tread\t$addrHex\n"; + $clkCounter++; + $addr += $columnOffset * $burstLength; + } } -} +} \ No newline at end of file diff --git a/DRAMSys/library/src/simulation/dram/Dram.cpp b/DRAMSys/library/src/simulation/dram/Dram.cpp index fcbe7677..8238195c 100644 --- a/DRAMSys/library/src/simulation/dram/Dram.cpp +++ b/DRAMSys/library/src/simulation/dram/Dram.cpp @@ -117,11 +117,9 @@ Dram::~Dram() void Dram::reportPower() { - static bool alreadyCalled = false; - - if (!alreadyCalled) + if (!powerReported) { - alreadyCalled = true; + powerReported = true; DRAMPower->calcEnergy(); // Print the final total energy and the average power for diff --git a/DRAMSys/library/src/simulation/dram/Dram.h b/DRAMSys/library/src/simulation/dram/Dram.h index 518b1707..d39d07b6 100644 --- a/DRAMSys/library/src/simulation/dram/Dram.h +++ b/DRAMSys/library/src/simulation/dram/Dram.h @@ -51,6 +51,7 @@ class Dram : public sc_module { private: unsigned int bytesPerBurst = Configuration::getInstance().getBytesPerBurst(); + bool powerReported = false; protected: Dram(sc_module_name); diff --git a/DRAMSys/simulator/StlPlayer.h b/DRAMSys/simulator/StlPlayer.h index 1eb915a4..29f6e6ef 100644 --- a/DRAMSys/simulator/StlPlayer.h +++ b/DRAMSys/simulator/StlPlayer.h @@ -140,15 +140,15 @@ public: ("Malformed trace file. Data information could not be found (line " + std::to_string( lineCnt) + ").").c_str()); - // Check if data length in the trace file is correct. We need two characters to represent 1 byte in hexadecimal. - if (dataStr.length() != (dataLength * 2)) + // Check if data length in the trace file is correct. We need two characters to represent 1 byte in hexadecimal. Offset for 0x prefix. + if (dataStr.length() != (dataLength * 2 + 2)) SC_REPORT_FATAL("StlPlayer", ("Data in the trace file has an invalid length (line " + std::to_string( lineCnt) + ").").c_str()); // Set data for (unsigned i = 0; i < dataLength; i++) - data[i] = (unsigned char)std::stoi(dataStr.substr(i * 2, 2).c_str(), 0, 16); + data[i] = (unsigned char)std::stoi(dataStr.substr(i * 2 + 2, 2).c_str(), 0, 16); } // Fill up the payload. From 2f34b4d8dc4793a5fcdffb80a82d899c90d1bc97 Mon Sep 17 00:00:00 2001 From: Lukas Steiner Date: Mon, 20 Jul 2020 15:15:04 +0200 Subject: [PATCH 2/5] Add logo and UML to the readme. --- README.md | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 4758e624..0d46f0e0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,10 @@ -DRAMSys4.0 -=========== + -**DRAMSys4.0** [1] [2] [3] is a flexible DRAM subsystem design space exploration framework based on SystemC TLM-2.0. + + + + +**DRAMSys4.0** is a flexible DRAM subsystem design space exploration framework based on SystemC TLM-2.0. Pipeline Status: [![pipeline status](https://git.eit.uni-kl.de/ems/astdm/dram.sys/badges/master/pipeline.svg)](https://git.eit.uni-kl.de/ems/astdm/dram.sys/commits/master) [![Coverage report](https://git.eit.uni-kl.de/ems/astdm/dram.sys/badges/master/coverage.svg?job=coverage)](https://git.eit.uni-kl.de/ems/astdm/dram.sys/commits/master) @@ -18,6 +21,12 @@ Pipeline Status: [![pipeline status](https://git.eit.uni-kl.de/ems/astdm/dram.sy - coupling to **DRAMPower** [4] and **3D-ICE** [8] for power and thermal simulation - **Trace Analyzer** for visual and metric-based result analysis +## Architecture and Functionality + +A UML diagram of the software architecture is presented below; different component implementations are left out for simplicity. More information about the architecture and functionality can be found in the papers [1] [2] [3] and in the introduction video on [Youtube](https://www.youtube.com/watch?v=8EkC3mYWpQY). + +UML + ## Basic Setup Start using DRAMSys by cloning the repository. @@ -134,7 +143,7 @@ Syntax example: # [clock-cyle]: [write|read] [hex-address] [hex-data (optional)] 31: read 0x400140 33: read 0x400160 -56: write 0x7fff8000 0x123456789abcdef +56: write 0x7fff8000 0x123456789abcdef... 81: read 0x400180 ``` @@ -149,7 +158,7 @@ Syntax example: # [clock-cyle]: [write|read] [hex-address] [hex-data (optional)] 31: read 0x400140 2: read 0x400160 -23: write 0x7fff8000 0x123456789abcdef +23: write 0x7fff8000 0x123456789abcdef... 25: read 0x400180 ``` @@ -184,8 +193,8 @@ The content of [ddr3.json](DRAMSys/library/resources/configs/simulator/ddr3.json "ECCControllerMode": "Disabled", "UseMalloc": false, "AddressOffset": 0, - "ErrorCSVFile": "", "ErrorChipSeed": 42, + "ErrorCSVFile": "", "StoreMode": "NoStorage" } } @@ -226,12 +235,12 @@ The content of [ddr3.json](DRAMSys/library/resources/configs/simulator/ddr3.json - Address offset of the DRAM subsystem (required for the gem5 coupling). - *ErrorChipSeed* (unsigned int) - Seed to initialize the random error generator. - - *ErrorCSVFile* (string) - - CSV file with error injection information. - - *StoreMode* (string) - - "NoStorage": no storage - - "Store": store data without error model - - "ErrorModel": store data with error model [6] +- *ErrorCSVFile* (string) + - CSV file with error injection information. +- *StoreMode* (string) + - "NoStorage": no storage + - "Store": store data without error model + - "ErrorModel": store data with error model [6] ##### Thermal Simulation From 6a64e2eac6c7ecd99932c8b2cde1c4487f042ee0 Mon Sep 17 00:00:00 2001 From: Lukas Steiner Date: Tue, 21 Jul 2020 09:48:20 +0200 Subject: [PATCH 3/5] Move disclaimer to the top, remove voco traces. --- README.md | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 0d46f0e0..64eb197a 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,18 @@ - - - - **DRAMSys4.0** is a flexible DRAM subsystem design space exploration framework based on SystemC TLM-2.0. Pipeline Status: [![pipeline status](https://git.eit.uni-kl.de/ems/astdm/dram.sys/badges/master/pipeline.svg)](https://git.eit.uni-kl.de/ems/astdm/dram.sys/commits/master) [![Coverage report](https://git.eit.uni-kl.de/ems/astdm/dram.sys/badges/master/coverage.svg?job=coverage)](https://git.eit.uni-kl.de/ems/astdm/dram.sys/commits/master) +## Disclaimer + +This is the public read-only mirror of an internal DRAMSys repository. Pull requests will not be merged but the changes might be added internally and published with a future commit. The repositories are synchronized from time to time. + +The user DOES NOT get ANY WARRANTIES when using this tool. This software is released under the BSD 3-Clause License. By using this software, the user implicitly agrees to the licensing terms. + +If you decide to use DRAMSys in your research please cite the papers [2] [3]. To cite the TLM methodology of DRAMSys use the paper [1]. + ## Key Features - **standalone** simulator with trace players, **gem5**-coupled simulator and **TLM-AT-compliant library** @@ -30,7 +34,7 @@ A UML diagram of the software architecture is presented below; different compone ## Basic Setup Start using DRAMSys by cloning the repository. -Use the *--recursive* flag to initialize all submodules within the repository, namely **DRAMPower**, **SystemC** and **nlohmann json**. +Use the `--recursive` flag to initialize all submodules within the repository, namely **DRAMPower**, **SystemC** and **nlohmann json**. ### Dependencies @@ -521,14 +525,6 @@ Thanh C. Tran Tran Anh Quoc Éder F. Zulian -## Disclaimer - -This is the public read-only mirror of an internal DRAMSys repository. Pull requests will not be merged but the changes might be added internally and published with a future commit. The repositories are synchronized from time to time. - -The user DOES NOT get ANY WARRANTIES when using this tool. This software is released under the BSD 3-Clause License. By using this software, the user implicitly agrees to the licensing terms. - -If you decide to use DRAMSys in your research please cite the paper [3]. - ## References [1] TLM Modelling of 3D Stacked Wide I/O DRAM Subsystems, A Virtual Platform for Memory Controller Design Space Exploration From de47f25f4f7960e183929fd16f918552d45925a3 Mon Sep 17 00:00:00 2001 From: Lukas Steiner Date: Tue, 21 Jul 2020 10:20:03 +0200 Subject: [PATCH 4/5] Update trace analyzer readme section. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 64eb197a..ca7dca1c 100644 --- a/README.md +++ b/README.md @@ -495,7 +495,7 @@ The content of [config.json](DRAMSys/library/resources/configs/thermalsim/config - true: generate power map files during thermal simulation - false: do not generate power map files during thermal simulation -## Trace Analyzer +## Trace Analyzer Consulting and Custom-Tailored Modifications To provide better analysis capabilities for DRAM subsystem design space exploration than the usual performance-related outputs to the console, DRAMSys offers the Trace Analyzer. @@ -503,7 +503,7 @@ All requests, responses and DRAM commands can be recorded in an SQLite trace dat The Trace Analyzer's main window is shown below. -If you are interested in the database recording feature and the Trace Analyzer please contact [Matthias Jung](mailto:matthias.jung@iese.fraunhofer.de). +If you are interested in the database recording feature and the Trace Analyzer, if you need support on how to setup DRAMSys in a virtual platform of your company, or if you require custom modifications of the simulator please contact [Matthias Jung](mailto:matthias.jung@iese.fraunhofer.de). ![Trace Analyzer Main Window](DRAMSys/docs/images/traceanalyzer.png) From 4379390473bb42621b256c42b6feff7e7b83716b Mon Sep 17 00:00:00 2001 From: Lukas Steiner Date: Wed, 22 Jul 2020 09:54:06 +0200 Subject: [PATCH 5/5] Update readme, change examples to FR-FCFS scheduler. --- .../resources/simulations/ddr3-example.json | 2 +- .../resources/simulations/ddr3-example2.json | 2 +- .../resources/simulations/ddr4-example.json | 2 +- .../resources/simulations/hbm2-example.json | 2 +- .../resources/simulations/lpddr4-example.json | 2 +- .../resources/simulations/ranktest.json | 2 +- .../resources/simulations/wideio-example.json | 2 +- README.md | 49 ++++++++++++------- 8 files changed, 39 insertions(+), 24 deletions(-) diff --git a/DRAMSys/library/resources/simulations/ddr3-example.json b/DRAMSys/library/resources/simulations/ddr3-example.json index 7a5d7c16..6b820354 100644 --- a/DRAMSys/library/resources/simulations/ddr3-example.json +++ b/DRAMSys/library/resources/simulations/ddr3-example.json @@ -1,7 +1,7 @@ { "simulation": { "addressmapping": "am_ddr3_8x1Gbx8_dimm_p1KB_rbc.json", - "mcconfig": "fifoStrict.json", + "mcconfig": "fr_fcfs.json", "memspec": "MICRON_1Gb_DDR3-1600_8bit_G.json", "simconfig": "ddr3.json", "simulationid": "ddr3-example", diff --git a/DRAMSys/library/resources/simulations/ddr3-example2.json b/DRAMSys/library/resources/simulations/ddr3-example2.json index a3886b55..99e1821a 100644 --- a/DRAMSys/library/resources/simulations/ddr3-example2.json +++ b/DRAMSys/library/resources/simulations/ddr3-example2.json @@ -1,7 +1,7 @@ { "simulation": { "addressmapping": "am_ddr3_8x1Gbx8_dimm_p1KB_brc.json", - "mcconfig": "fifoStrict.json", + "mcconfig": "fr_fcfs.json", "memspec": "MICRON_1Gb_DDR3-1600_8bit_G.json", "simconfig": "ddr3.json", "simulationid": "ddr3-example2", diff --git a/DRAMSys/library/resources/simulations/ddr4-example.json b/DRAMSys/library/resources/simulations/ddr4-example.json index 6b55b665..09fdac1b 100644 --- a/DRAMSys/library/resources/simulations/ddr4-example.json +++ b/DRAMSys/library/resources/simulations/ddr4-example.json @@ -1,7 +1,7 @@ { "simulation": { "addressmapping": "am_ddr4_8x4Gbx8_dimm_p1KB_brc.json", - "mcconfig": "fifoStrict.json", + "mcconfig": "fr_fcfs.json", "memspec": "JEDEC_4Gb_DDR4-1866_8bit_A.json", "simconfig": "ddr4.json", "simulationid": "ddr4-example", diff --git a/DRAMSys/library/resources/simulations/hbm2-example.json b/DRAMSys/library/resources/simulations/hbm2-example.json index f81e2f13..22eed0df 100644 --- a/DRAMSys/library/resources/simulations/hbm2-example.json +++ b/DRAMSys/library/resources/simulations/hbm2-example.json @@ -1,7 +1,7 @@ { "simulation": { "addressmapping": "am_hbm2_8Gb_pc_brc.json", - "mcconfig": "fifoStrict.json", + "mcconfig": "fr_fcfs.json", "memspec": "HBM2.json", "simconfig": "hbm2.json", "simulationid": "hbm2-example", diff --git a/DRAMSys/library/resources/simulations/lpddr4-example.json b/DRAMSys/library/resources/simulations/lpddr4-example.json index d9a6726b..0054b777 100644 --- a/DRAMSys/library/resources/simulations/lpddr4-example.json +++ b/DRAMSys/library/resources/simulations/lpddr4-example.json @@ -1,7 +1,7 @@ { "simulation": { "addressmapping": "am_lpddr4_8Gbx16_brc.json", - "mcconfig": "fifoStrict.json", + "mcconfig": "fr_fcfs.json", "memspec": "JEDEC_8Gb_LPDDR4-3200_16bit.json", "simconfig": "lpddr4.json", "simulationid": "lpddr4-example", diff --git a/DRAMSys/library/resources/simulations/ranktest.json b/DRAMSys/library/resources/simulations/ranktest.json index 2c115a4b..47f6b1c4 100644 --- a/DRAMSys/library/resources/simulations/ranktest.json +++ b/DRAMSys/library/resources/simulations/ranktest.json @@ -1,7 +1,7 @@ { "simulation": { "addressmapping": "am_ranktest.json", - "mcconfig": "fifoStrict.json", + "mcconfig": "fr_fcfs.json", "memspec": "memspec_ranktest.json", "simconfig": "ddr3.json", "simulationid": "ranktest", diff --git a/DRAMSys/library/resources/simulations/wideio-example.json b/DRAMSys/library/resources/simulations/wideio-example.json index 464a2591..4bfd6979 100644 --- a/DRAMSys/library/resources/simulations/wideio-example.json +++ b/DRAMSys/library/resources/simulations/wideio-example.json @@ -1,7 +1,7 @@ { "simulation": { "addressmapping": "am_wideio_4x256Mb_rbc.json", - "mcconfig": "fifoStrict.json", + "mcconfig": "fr_fcfs.json", "memspec": "JEDEC_256Mb_WIDEIO-200_128bit.json", "simconfig": "wideio.json", "simulationid": "wideio-example", diff --git a/README.md b/README.md index ca7dca1c..b6351eb5 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ -**DRAMSys4.0** is a flexible DRAM subsystem design space exploration framework based on SystemC TLM-2.0. +**DRAMSys4.0** is a flexible DRAM subsystem design space exploration framework based on SystemC TLM-2.0. It was developed at the [Microelectronic Systems Design Research Group](https://ems.eit.uni-kl.de/en/start/) and [Fraunhofer IESE](https://www.iese.fraunhofer.de/en.html). Pipeline Status: [![pipeline status](https://git.eit.uni-kl.de/ems/astdm/dram.sys/badges/master/pipeline.svg)](https://git.eit.uni-kl.de/ems/astdm/dram.sys/commits/master) [![Coverage report](https://git.eit.uni-kl.de/ems/astdm/dram.sys/badges/master/coverage.svg?job=coverage)](https://git.eit.uni-kl.de/ems/astdm/dram.sys/commits/master) ## Disclaimer -This is the public read-only mirror of an internal DRAMSys repository. Pull requests will not be merged but the changes might be added internally and published with a future commit. The repositories are synchronized from time to time. +This is the public read-only mirror of an internal DRAMSys repository. Pull requests will not be merged but the changes might be added internally and published with a future commit. Both repositories are synchronized from time to time. The user DOES NOT get ANY WARRANTIES when using this tool. This software is released under the BSD 3-Clause License. By using this software, the user implicitly agrees to the licensing terms. @@ -235,16 +235,16 @@ The content of [ddr3.json](DRAMSys/library/resources/configs/simulator/ddr3.json - *UseMalloc* (boolean) - false: model storage using mmap() (DEFAULT) - true: allocate memory for modeling storage using malloc() -- *AddressOffset* (unsigned int) - - Address offset of the DRAM subsystem (required for the gem5 coupling). -- *ErrorChipSeed* (unsigned int) - - Seed to initialize the random error generator. -- *ErrorCSVFile* (string) - - CSV file with error injection information. -- *StoreMode* (string) - - "NoStorage": no storage - - "Store": store data without error model - - "ErrorModel": store data with error model [6] + - *AddressOffset* (unsigned int) + - Address offset of the DRAM subsystem (required for the gem5 coupling). + - *ErrorChipSeed* (unsigned int) + - Seed to initialize the random error generator. + - *ErrorCSVFile* (string) + - CSV file with error injection information. + - *StoreMode* (string) + - "NoStorage": no storage + - "Store": store data without error model + - "ErrorModel": store data with error model [6] ##### Thermal Simulation @@ -393,13 +393,24 @@ $ unzip 3d-ice-latest.zip $ cd 3d-ice-latest/3d-ice-2.2.6 ``` -Open the file makefile.def and set some variables. +Open the makefile.def and set the following variables properly, e.g.: ```bash SLU_MAIN = $(HOME)/SuperLU_$(SLU_VERSION) YACC = bison-2.4.1 -SYSTEMC_ARCH = linux64 -SYSTEMC_MAIN = $(HOME)/systemc-2.3.x + +SYSTEMC_VERSION = 2.3.4 +SYSTEMC_ARCH = linux64 +SYSTEMC_MAIN = $(HOME)/systemc-$(SYSTEMC_VERSION) +SYSTEMC_INCLUDE = $(SYSTEMC_MAIN)/include +SYSTEMC_LIB = $(SYSTEMC_MAIN)/lib-$(SYSTEMC_ARCH) +``` + +In case you are using the SystemC submodule and DRAMSys is located in your home directory the variables should be set as follows: + +```bash +SYSTEMC_INCLUDE = $(HOME)/DRAMSys/DRAMSys/library/src/common/third_party/systemc/src +SYSTEMC_LIB = $(HOME)/DRAMSys/build/library/src/common/third_party/systemc/src ``` Compile 3D-ICE with SystemC TLM-2.0 support: @@ -507,7 +518,9 @@ If you are interested in the database recording feature and the Trace Analyzer, ![Trace Analyzer Main Window](DRAMSys/docs/images/traceanalyzer.png) -## List of Contributors +## Acknowledgements + +The development of DRAMSys was supported by the German Research Foundation (DFG) as part of the priority program [Dependable Embedded Systems SPP1500](http://spp1500.itec.kit.edu) and the DFG grant no. [WE2442/10-1](https://www.uni-kl.de/en/3d-dram/). Furthermore, it was supported within the Fraunhofer and DFG cooperation program (grant no. [WE2442/14-1](https://www.iese.fraunhofer.de/en/innovation_trends/autonomous-systems/memtonomy.html)) and by the [Fraunhofer High Performance Center for Simulation- and Software-Based Innovation](https://www.leistungszentrum-simulation-software.de/en.html). Special thanks go to all listed contributors for their work and commitment during seven years of development. Shama Bhosale Luiza Correa @@ -519,10 +532,12 @@ Matthias Jung Frederik Lauer Ana Mativi Felipe S. Prado +Tran Anh Quoc Janik Schlemminger Lukas Steiner Thanh C. Tran -Tran Anh Quoc +Norbert Wehn +Christian Weis Éder F. Zulian ## References