core.cc (12980:127afc3ac506) | core.cc (13409:071d5425ce37) |
---|---|
1/* 2 * Copyright (c) 2006 The Regents of The University of Michigan 3 * Copyright (c) 2013 Advanced Micro Devices, Inc. 4 * Copyright (c) 2013 Mark D. Hill and David A. Wood 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions are --- 23 unchanged lines hidden (view full) --- 32 */ 33 34#include "sim/core.hh" 35 36#include <iostream> 37#include <string> 38 39#include "base/callback.hh" | 1/* 2 * Copyright (c) 2006 The Regents of The University of Michigan 3 * Copyright (c) 2013 Advanced Micro Devices, Inc. 4 * Copyright (c) 2013 Mark D. Hill and David A. Wood 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions are --- 23 unchanged lines hidden (view full) --- 32 */ 33 34#include "sim/core.hh" 35 36#include <iostream> 37#include <string> 38 39#include "base/callback.hh" |
40#include "base/cprintf.hh" 41#include "base/logging.hh" |
|
40#include "base/output.hh" 41#include "sim/eventq.hh" 42 43using namespace std; 44 45namespace SimClock { 46/// The simulated frequency of curTick(). (In ticks per second) 47Tick Frequency; --- 16 unchanged lines hidden (view full) --- 64Tick ms; 65Tick us; 66Tick ns; 67Tick ps; 68} // namespace Float 69 70} // namespace SimClock 71 | 42#include "base/output.hh" 43#include "sim/eventq.hh" 44 45using namespace std; 46 47namespace SimClock { 48/// The simulated frequency of curTick(). (In ticks per second) 49Tick Frequency; --- 16 unchanged lines hidden (view full) --- 66Tick ms; 67Tick us; 68Tick ns; 69Tick ps; 70} // namespace Float 71 72} // namespace SimClock 73 |
74namespace { 75 76bool _clockFrequencyFixed = false; 77 78// Default to 1 THz (1 Tick == 1 ps) 79Tick _ticksPerSecond = 1e12; 80 81} // anonymous namespace 82 |
|
72void | 83void |
73setClockFrequency(Tick ticksPerSecond) | 84fixClockFrequency() |
74{ | 85{ |
86 if (_clockFrequencyFixed) 87 return; 88 |
|
75 using namespace SimClock; | 89 using namespace SimClock; |
76 Frequency = ticksPerSecond; | 90 Frequency = _ticksPerSecond; |
77 Float::s = static_cast<double>(Frequency); 78 Float::ms = Float::s / 1.0e3; 79 Float::us = Float::s / 1.0e6; 80 Float::ns = Float::s / 1.0e9; 81 Float::ps = Float::s / 1.0e12; 82 83 Float::Hz = 1.0 / Float::s; 84 Float::kHz = 1.0 / Float::ms; 85 Float::MHz = 1.0 / Float::us; 86 Float::GHz = 1.0 / Float::ns; 87 88 Int::s = Frequency; 89 Int::ms = Int::s / 1000; 90 Int::us = Int::ms / 1000; 91 Int::ns = Int::us / 1000; 92 Int::ps = Int::ns / 1000; 93 | 91 Float::s = static_cast<double>(Frequency); 92 Float::ms = Float::s / 1.0e3; 93 Float::us = Float::s / 1.0e6; 94 Float::ns = Float::s / 1.0e9; 95 Float::ps = Float::s / 1.0e12; 96 97 Float::Hz = 1.0 / Float::s; 98 Float::kHz = 1.0 / Float::ms; 99 Float::MHz = 1.0 / Float::us; 100 Float::GHz = 1.0 / Float::ns; 101 102 Int::s = Frequency; 103 Int::ms = Int::s / 1000; 104 Int::us = Int::ms / 1000; 105 Int::ns = Int::us / 1000; 106 Int::ps = Int::ns / 1000; 107 |
108 cprintf("Global frequency set at %d ticks per second\n", _ticksPerSecond); 109 110 _clockFrequencyFixed = true; |
|
94} | 111} |
112bool clockFrequencyFixed() { return _clockFrequencyFixed; } |
|
95 96void | 113 114void |
115setClockFrequency(Tick tps) 116{ 117 panic_if(_clockFrequencyFixed, 118 "Global frequency already fixed at %f ticks/s.", _ticksPerSecond); 119 _ticksPerSecond = tps; 120} 121Tick getClockFrequency() { return _ticksPerSecond; } 122 123void |
|
97setOutputDir(const string &dir) 98{ 99 simout.setDirectory(dir); 100} 101 102/** 103 * Queue of C++ callbacks to invoke on simulator exit. 104 */ --- 29 unchanged lines hidden --- | 124setOutputDir(const string &dir) 125{ 126 simout.setDirectory(dir); 127} 128 129/** 130 * Queue of C++ callbacks to invoke on simulator exit. 131 */ --- 29 unchanged lines hidden --- |