core.hh revision 9356
14123Sbinkertn@umich.edu/* 24123Sbinkertn@umich.edu * Copyright (c) 2006 The Regents of The University of Michigan 34123Sbinkertn@umich.edu * All rights reserved. 44123Sbinkertn@umich.edu * 54123Sbinkertn@umich.edu * Redistribution and use in source and binary forms, with or without 64123Sbinkertn@umich.edu * modification, are permitted provided that the following conditions are 74123Sbinkertn@umich.edu * met: redistributions of source code must retain the above copyright 84123Sbinkertn@umich.edu * notice, this list of conditions and the following disclaimer; 94123Sbinkertn@umich.edu * redistributions in binary form must reproduce the above copyright 104123Sbinkertn@umich.edu * notice, this list of conditions and the following disclaimer in the 114123Sbinkertn@umich.edu * documentation and/or other materials provided with the distribution; 124123Sbinkertn@umich.edu * neither the name of the copyright holders nor the names of its 134123Sbinkertn@umich.edu * contributors may be used to endorse or promote products derived from 144123Sbinkertn@umich.edu * this software without specific prior written permission. 154123Sbinkertn@umich.edu * 164123Sbinkertn@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 174123Sbinkertn@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 184123Sbinkertn@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 194123Sbinkertn@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 204123Sbinkertn@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 214123Sbinkertn@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 224123Sbinkertn@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 234123Sbinkertn@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 244123Sbinkertn@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 254123Sbinkertn@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 264123Sbinkertn@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 274123Sbinkertn@umich.edu * 284123Sbinkertn@umich.edu * Authors: Nathan Binkert 294123Sbinkertn@umich.edu * Steve Reinhardt 304123Sbinkertn@umich.edu */ 314123Sbinkertn@umich.edu 324167Sbinkertn@umich.edu#ifndef __SIM_CORE_HH__ 334167Sbinkertn@umich.edu#define __SIM_CORE_HH__ 344167Sbinkertn@umich.edu 358274SAli.Saidi@ARM.com/** @file This header provides some core simulator functionality such as time 368274SAli.Saidi@ARM.com * information, output directory and exit events 378274SAli.Saidi@ARM.com */ 388274SAli.Saidi@ARM.com 394123Sbinkertn@umich.edu#include <string> 404123Sbinkertn@umich.edu 416214Snate@binkert.org#include "base/types.hh" 429356Snilay@cs.wisc.edu#include "sim/eventq.hh" 434123Sbinkertn@umich.edu 444167Sbinkertn@umich.edu/// The universal simulation clock. 459356Snilay@cs.wisc.eduinline Tick curTick() { return mainEventQueue.getCurTick(); } 467823Ssteve.reinhardt@amd.com 474167Sbinkertn@umich.educonst Tick retryTime = 1000; 484167Sbinkertn@umich.edu 498274SAli.Saidi@ARM.com/// These are variables that are set based on the simulator frequency 508274SAli.Saidi@ARM.com///@{ 517064Snate@binkert.orgnamespace SimClock { 528274SAli.Saidi@ARM.comextern Tick Frequency; ///< The number of ticks that equal one second 534167Sbinkertn@umich.edu 544167Sbinkertn@umich.edunamespace Float { 554167Sbinkertn@umich.edu 568274SAli.Saidi@ARM.com/** These variables equal the number of ticks in the unit of time they're 578274SAli.Saidi@ARM.com * named after in a double. 588274SAli.Saidi@ARM.com * @{ 598274SAli.Saidi@ARM.com */ 608274SAli.Saidi@ARM.comextern double s; ///< second 618274SAli.Saidi@ARM.comextern double ms; ///< millisecond 628274SAli.Saidi@ARM.comextern double us; ///< microsecond 638274SAli.Saidi@ARM.comextern double ns; ///< nanosecond 648274SAli.Saidi@ARM.comextern double ps; ///< picosecond 658274SAli.Saidi@ARM.com/** @} */ 668274SAli.Saidi@ARM.com 678274SAli.Saidi@ARM.com/** These variables the inverse of above. They're all < 1. 688274SAli.Saidi@ARM.com * @{ 698274SAli.Saidi@ARM.com */ 708274SAli.Saidi@ARM.comextern double Hz; ///< Hz 718274SAli.Saidi@ARM.comextern double kHz; ///< kHz 728274SAli.Saidi@ARM.comextern double MHz; ///< MHz 738274SAli.Saidi@ARM.comextern double GHZ; ///< GHz 748274SAli.Saidi@ARM.com/** @}*/ 757811Ssteve.reinhardt@amd.com} // namespace Float 764167Sbinkertn@umich.edu 778274SAli.Saidi@ARM.com/** These variables equal the number of ticks in the unit of time they're 788274SAli.Saidi@ARM.com * named after in a 64 bit integer. 798274SAli.Saidi@ARM.com * 808274SAli.Saidi@ARM.com * @{ 818274SAli.Saidi@ARM.com */ 824167Sbinkertn@umich.edunamespace Int { 838274SAli.Saidi@ARM.comextern Tick s; ///< second 848274SAli.Saidi@ARM.comextern Tick ms; ///< millisecond 858274SAli.Saidi@ARM.comextern Tick us; ///< microsecond 868274SAli.Saidi@ARM.comextern Tick ns; ///< nanosecond 878274SAli.Saidi@ARM.comextern Tick ps; ///< picosecond 888274SAli.Saidi@ARM.com/** @} */ 897811Ssteve.reinhardt@amd.com} // namespace Int 907811Ssteve.reinhardt@amd.com} // namespace SimClock 918274SAli.Saidi@ARM.com/** @} */ 924167Sbinkertn@umich.eduvoid setClockFrequency(Tick ticksPerSecond); 934167Sbinkertn@umich.edu 944123Sbinkertn@umich.eduvoid setOutputDir(const std::string &dir); 954123Sbinkertn@umich.edu 968737Skoansin.tan@gmail.comclass Callback; 974123Sbinkertn@umich.eduvoid registerExitCallback(Callback *callback); 984123Sbinkertn@umich.eduvoid doExitCleanup(); 994167Sbinkertn@umich.edu 1004167Sbinkertn@umich.edu#endif /* __SIM_CORE_HH__ */ 101