1# -*- mode:python -*- 2 3# Copyright (c) 2013 ARM Limited 4# All rights reserved. 5# 6# The license below extends only to copyright in the software and shall 7# not be construed as granting a license to any other intellectual 8# property including but not limited to intellectual property relating 9# to a hardware implementation of the functionality of the software 10# licensed hereunder. You may use the software subject to the license 11# terms below provided that you ensure that this notice is replicated 12# unmodified and in its entirety in all distributions of the software, 13# modified or unmodified, in source code or in binary form. 14# 15# Redistribution and use in source and binary forms, with or without 16# modification, are permitted provided that the following conditions are 17# met: redistributions of source code must retain the above copyright 18# notice, this list of conditions and the following disclaimer; 19# redistributions in binary form must reproduce the above copyright 20# notice, this list of conditions and the following disclaimer in the 21# documentation and/or other materials provided with the distribution; 22# neither the name of the copyright holders nor the names of its 23# contributors may be used to endorse or promote products derived from 24# this software without specific prior written permission. 25# 26# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 27# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 28# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 29# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 30# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 31# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 32# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 33# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 34# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 35# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 36# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 37# 38# Authors: Andreas Hansson 39 40import os 41 42Import('main') 43 44# See if we got a cloned DRAMSim2 repo as a subdirectory and set the 45# HAVE_DRAMSIM flag accordingly 46if not os.path.exists(Dir('.').srcnode().abspath + '/DRAMSim2'): 47 main['HAVE_DRAMSIM'] = False 48 Return() 49 50# We have got the folder, so add the library and build the wrappers 51main['HAVE_DRAMSIM'] = True 52 53# Add the appropriate files. We leave out the trace driven simulator 54dram_files = [] 55 56def DRAMFile(filename): 57 dram_files.append(File('DRAMSim2/' + filename)) 58 59DRAMFile('AddressMapping.cpp') 60DRAMFile('Bank.cpp') 61DRAMFile('BankState.cpp') 62DRAMFile('BusPacket.cpp') 63DRAMFile('ClockDomain.cpp') 64DRAMFile('CommandQueue.cpp') 65DRAMFile('IniReader.cpp') 66DRAMFile('MemoryController.cpp') 67DRAMFile('MemorySystem.cpp') 68DRAMFile('MultiChannelMemorySystem.cpp') 69DRAMFile('Rank.cpp') 70DRAMFile('SimulatorObject.cpp') 71DRAMFile('Transaction.cpp') 72 73# DRAMSim2 violates some of the warning flags used by gem5, so 74# we explicitly disable them here 75dramenv = main.Clone() 76dramenv.Append(CCFLAGS=['-Wno-unused-value']) 77 78# If we are using clang, there are more flags to disable 79if main['CLANG']: 80 dramenv.Append(CCFLAGS=['-Wno-unused-private-field', 81 '-Wno-tautological-undefined-compare']) 82 83# Tell DRAMSim2 to not store any data as this is already covered by 84# the wrapper 85dramenv.Append(CCFLAGS=['-DNO_STORAGE']) 86 87dramenv.Library('dramsim2', [dramenv.SharedObject(f) for f in dram_files]) 88 89main.Prepend(CPPPATH=Dir('.')) 90main.Append(LIBS=['dramsim2']) 91main.Prepend(LIBPATH=[Dir('.')]) 92