SConscript revision 11294:a368064a2ab5
1955SN/A# -*- mode:python -*- 2955SN/A 314044Sciro.santilli@arm.com# Copyright (c) 2013 ARM Limited 49812Sandreas.hansson@arm.com# All rights reserved. 59812Sandreas.hansson@arm.com# 69812Sandreas.hansson@arm.com# The license below extends only to copyright in the software and shall 79812Sandreas.hansson@arm.com# not be construed as granting a license to any other intellectual 89812Sandreas.hansson@arm.com# property including but not limited to intellectual property relating 99812Sandreas.hansson@arm.com# to a hardware implementation of the functionality of the software 109812Sandreas.hansson@arm.com# licensed hereunder. You may use the software subject to the license 119812Sandreas.hansson@arm.com# terms below provided that you ensure that this notice is replicated 129812Sandreas.hansson@arm.com# unmodified and in its entirety in all distributions of the software, 139812Sandreas.hansson@arm.com# modified or unmodified, in source code or in binary form. 149812Sandreas.hansson@arm.com# 157816Ssteve.reinhardt@amd.com# Redistribution and use in source and binary forms, with or without 165871Snate@binkert.org# modification, are permitted provided that the following conditions are 171762SN/A# met: redistributions of source code must retain the above copyright 18955SN/A# notice, this list of conditions and the following disclaimer; 19955SN/A# redistributions in binary form must reproduce the above copyright 20955SN/A# notice, this list of conditions and the following disclaimer in the 21955SN/A# documentation and/or other materials provided with the distribution; 22955SN/A# neither the name of the copyright holders nor the names of its 23955SN/A# contributors may be used to endorse or promote products derived from 24955SN/A# this software without specific prior written permission. 25955SN/A# 26955SN/A# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 27955SN/A# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 28955SN/A# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 29955SN/A# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 30955SN/A# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 31955SN/A# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 32955SN/A# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 33955SN/A# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 34955SN/A# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 35955SN/A# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 36955SN/A# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 37955SN/A# 38955SN/A# Authors: Andreas Hansson 39955SN/A 40955SN/Aimport os 41955SN/A 422665Ssaidi@eecs.umich.eduImport('main') 432665Ssaidi@eecs.umich.edu 445863Snate@binkert.org# See if we got a cloned DRAMSim2 repo as a subdirectory and set the 45955SN/A# HAVE_DRAMSIM flag accordingly 46955SN/Aif not os.path.exists(Dir('.').srcnode().abspath + '/DRAMSim2'): 47955SN/A main['HAVE_DRAMSIM'] = False 48955SN/A Return() 49955SN/A 508878Ssteve.reinhardt@amd.com# We have got the folder, so add the library and build the wrappers 512632Sstever@eecs.umich.edumain['HAVE_DRAMSIM'] = True 528878Ssteve.reinhardt@amd.com 532632Sstever@eecs.umich.edu# Add the appropriate files. We leave out the trace driven simulator 54955SN/Adram_files = [] 558878Ssteve.reinhardt@amd.com 562632Sstever@eecs.umich.edudef DRAMFile(filename): 572761Sstever@eecs.umich.edu dram_files.append(File('DRAMSim2/' + filename)) 582632Sstever@eecs.umich.edu 592632Sstever@eecs.umich.eduDRAMFile('AddressMapping.cpp') 602632Sstever@eecs.umich.eduDRAMFile('Bank.cpp') 612761Sstever@eecs.umich.eduDRAMFile('BankState.cpp') 622761Sstever@eecs.umich.eduDRAMFile('BusPacket.cpp') 632761Sstever@eecs.umich.eduDRAMFile('ClockDomain.cpp') 648878Ssteve.reinhardt@amd.comDRAMFile('CommandQueue.cpp') 658878Ssteve.reinhardt@amd.comDRAMFile('IniReader.cpp') 662761Sstever@eecs.umich.eduDRAMFile('MemoryController.cpp') 672761Sstever@eecs.umich.eduDRAMFile('MemorySystem.cpp') 682761Sstever@eecs.umich.eduDRAMFile('MultiChannelMemorySystem.cpp') 692761Sstever@eecs.umich.eduDRAMFile('Rank.cpp') 702761Sstever@eecs.umich.eduDRAMFile('SimulatorObject.cpp') 718878Ssteve.reinhardt@amd.comDRAMFile('Transaction.cpp') 728878Ssteve.reinhardt@amd.com 732632Sstever@eecs.umich.edu# DRAMSim2 violates some of the warning flags used by gem5, so 742632Sstever@eecs.umich.edu# we explicitly disable them here 758878Ssteve.reinhardt@amd.comdramenv = main.Clone() 768878Ssteve.reinhardt@amd.comdramenv.Append(CCFLAGS=['-Wno-unused-value']) 772632Sstever@eecs.umich.edu 78955SN/A# If we are using clang, there are more flags to disable 79955SN/Aif main['CLANG']: 80955SN/A dramenv.Append(CCFLAGS=['-Wno-unused-private-field', 8112563Sgabeblack@google.com '-Wno-tautological-undefined-compare']) 8212563Sgabeblack@google.com 836654Snate@binkert.org# Tell DRAMSim2 to not store any data as this is already covered by 8410196SCurtis.Dunham@arm.com# the wrapper 85955SN/Adramenv.Append(CCFLAGS=['-DNO_STORAGE']) 865396Ssaidi@eecs.umich.edu 8711401Sandreas.sandberg@arm.comdramenv.Library('dramsim2', [dramenv.SharedObject(f) for f in dram_files]) 885863Snate@binkert.org 895863Snate@binkert.orgmain.Prepend(CPPPATH=Dir('.')) 904202Sbinkertn@umich.edumain.Append(LIBS=['dramsim2']) 915863Snate@binkert.orgmain.Prepend(LIBPATH=[Dir('.')]) 925863Snate@binkert.org