Files
OpenSTA/include/sta/GraphClass.hh
T

70 lines
2.1 KiB
C++
Raw Normal View History

2018-09-28 08:54:21 -07:00
// OpenSTA, Static Timing Analyzer
2025-01-21 18:54:33 -07:00
// Copyright (c) 2025, Parallax Software, Inc.
2018-09-28 08:54:21 -07:00
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
2022-01-04 10:17:08 -07:00
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2018-09-28 08:54:21 -07:00
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
2022-01-04 10:17:08 -07:00
// along with this program. If not, see <https://www.gnu.org/licenses/>.
2025-01-21 18:54:33 -07:00
//
// The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software.
//
// Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
//
// This notice may not be removed or altered from any source distribution.
2018-09-28 08:54:21 -07:00
2020-02-15 17:13:16 -07:00
#pragma once
2018-09-28 08:54:21 -07:00
2023-06-15 08:59:56 -07:00
#include <limits>
2020-04-05 14:53:44 -07:00
#include "ObjectId.hh"
#include "Set.hh"
#include "Vector.hh"
#include "MinMax.hh"
#include "Transition.hh"
#include "Delay.hh"
2018-09-28 08:54:21 -07:00
namespace sta {
// Class declarations for pointer references.
class Graph;
class Vertex;
class Edge;
class VertexIterator;
class VertexInEdgeIterator;
class VertexOutEdgeIterator;
class GraphLoop;
2022-03-01 06:55:25 -07:00
class VertexSet;
2018-09-28 08:54:21 -07:00
2019-11-11 09:38:25 -07:00
typedef ObjectId VertexId;
typedef ObjectId EdgeId;
2018-09-28 08:54:21 -07:00
typedef Vector<Vertex*> VertexSeq;
typedef Vector<Edge*> EdgeSeq;
typedef Set<Edge*> EdgeSet;
typedef int Level;
typedef int DcalcAPIndex;
typedef int TagGroupIndex;
typedef Vector<GraphLoop*> GraphLoopSeq;
2025-04-11 16:59:48 -07:00
typedef std::vector<Slew> SlewSeq;
2018-09-28 08:54:21 -07:00
2023-06-15 08:59:56 -07:00
static constexpr int level_max = std::numeric_limits<Level>::max();
2018-09-28 08:54:21 -07:00
// 16,777,215 tags
2025-02-01 16:06:14 -08:00
static constexpr int tag_group_index_bits = 24;
static constexpr TagGroupIndex tag_group_index_max = (1<<tag_group_index_bits)-1;
static constexpr int slew_annotated_bits = MinMax::index_count * RiseFall::index_count;
2018-09-28 08:54:21 -07:00
2019-03-12 17:25:53 -07:00
// Bit shifts used to mark vertices in a Bfs queue.
enum class BfsIndex { dcalc, arrival, required, other, bits };
2018-09-28 08:54:21 -07:00
} // namespace