HAL
v4.5.0-83-g30c8f0afc
The Hardware Analyzer - a comprehensive reverse engineering and manipulation framework for gate-level netlists.
wait_to_be_seated.h
Go to the documentation of this file.
1
// MIT License
2
//
3
// Copyright (c) 2019 Ruhr University Bochum, Chair for Embedded Security. All Rights reserved.
4
// Copyright (c) 2019 Marc Fyrbiak, Sebastian Wallat, Max Hoffmann ("ORIGINAL AUTHORS"). All rights reserved.
5
// Copyright (c) 2021 Max Planck Institute for Security and Privacy. All Rights reserved.
6
// Copyright (c) 2021 Jörn Langheinrich, Julian Speith, Nils Albartus, René Walendy, Simon Klix ("ORIGINAL AUTHORS"). All Rights reserved.
7
//
8
// Permission is hereby granted, free of charge, to any person obtaining a copy
9
// of this software and associated documentation files (the "Software"), to deal
10
// in the Software without restriction, including without limitation the rights
11
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
// copies of the Software, and to permit persons to whom the Software is
13
// furnished to do so, subject to the following conditions:
14
//
15
// The above copyright notice and this permission notice shall be included in all
16
// copies or substantial portions of the Software.
17
//
18
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
// SOFTWARE.
25
26
#pragma once
27
28
#include <QList>
29
#include <QMap>
30
#include <QSet>
31
#include <QPoint>
32
#include "
gui/gui_def.h
"
33
34
namespace
hal
35
{
39
class
WaitToBeSeatedList;
40
class
WaitToBeSeatedWaiting;
41
47
class
WaitToBeSeatedEntry
48
{
49
friend
class
WaitToBeSeatedList
;
50
friend
class
WaitToBeSeatedWaiting
;
51
Node
mNode;
52
QList<QPoint>
mPredecessorPositions;
53
QSet<WaitToBeSeatedEntry*>
mPredecessorSet;
54
QSet<WaitToBeSeatedEntry*>
mSuccessorSet;
55
56
void
setPredecessorIds(
const
QMap<u32,WaitToBeSeatedEntry*>
& gateMap);
57
58
public
:
59
WaitToBeSeatedEntry
(
Node::NodeType
t=
Node::Module
,
u32
id
=0);
60
61
Node
getNode
()
const
{
return
mNode; }
62
u32
getId
()
const
{
return
mNode.
id
(); }
63
QString
tagName
()
const
;
64
bool
isModule
()
const
;
65
66
double
distance
(
const
QPoint
& pos,
double
defaultDistance)
const
;
67
static
int
distance
(
const
QPoint
& source,
const
QPoint
& pos);
68
69
};
70
76
class
WaitToBeSeatedList
:
public
QList
<WaitToBeSeatedEntry*>
77
{
78
QMap<u32,WaitToBeSeatedEntry*>
mGateMap;
79
80
QList<WaitToBeSeatedEntry*>
mIsolated;
81
QList<WaitToBeSeatedEntry*>
mStartpoint;
82
QMap<WaitToBeSeatedEntry*,int>
mWaiting;
83
QSet<WaitToBeSeatedEntry*>
mPlaced;
84
85
int
mPlacementRound;
86
double
mSideLength;
87
88
public
:
89
WaitToBeSeatedList
();
90
~WaitToBeSeatedList
();
91
92
void
setLinks
();
93
const
WaitToBeSeatedEntry
*
nextPlacement
(
const
QPoint
& pos);
94
const
WaitToBeSeatedEntry
*
doPlacement
(
const
QPoint
& pos,
WaitToBeSeatedEntry
* wtse);
95
96
void
add
(
WaitToBeSeatedEntry
* wtse);
97
98
void
dump
()
const
;
99
100
bool
placementDone
()
const
{
return
mPlaced.
size
() >=
size
(); }
101
};
102
103
bool
compareWaitToBeSeated
(
const
WaitToBeSeatedEntry* a,
const
WaitToBeSeatedEntry* b);
104
}
hal::Node
The Node class object represents a module or a gate.
Definition:
gui_def.h:61
hal::Node::NodeType
NodeType
Definition:
gui_def.h:63
hal::Node::Module
@ Module
Definition:
gui_def.h:63
hal::Node::id
u32 id() const
id getter for ID information
Definition:
gui_def.h:77
hal::WaitToBeSeatedEntry
Definition:
wait_to_be_seated.h:48
hal::WaitToBeSeatedEntry::isModule
bool isModule() const
Definition:
wait_to_be_seated.cpp:60
hal::WaitToBeSeatedEntry::tagName
QString tagName() const
Definition:
wait_to_be_seated.cpp:55
hal::WaitToBeSeatedEntry::WaitToBeSeatedWaiting
friend class WaitToBeSeatedWaiting
Definition:
wait_to_be_seated.h:50
hal::WaitToBeSeatedEntry::distance
double distance(const QPoint &pos, double defaultDistance) const
Definition:
wait_to_be_seated.cpp:71
hal::WaitToBeSeatedEntry::getId
u32 getId() const
Definition:
wait_to_be_seated.h:62
hal::WaitToBeSeatedEntry::getNode
Node getNode() const
Definition:
wait_to_be_seated.h:61
hal::WaitToBeSeatedEntry::WaitToBeSeatedEntry
WaitToBeSeatedEntry(Node::NodeType t=Node::Module, u32 id=0)
Definition:
wait_to_be_seated.cpp:14
hal::WaitToBeSeatedList
Definition:
wait_to_be_seated.h:77
hal::WaitToBeSeatedList::dump
void dump() const
Definition:
wait_to_be_seated.cpp:222
hal::WaitToBeSeatedList::~WaitToBeSeatedList
~WaitToBeSeatedList()
Definition:
wait_to_be_seated.cpp:112
hal::WaitToBeSeatedList::add
void add(WaitToBeSeatedEntry *wtse)
Definition:
wait_to_be_seated.cpp:146
hal::WaitToBeSeatedList::doPlacement
const WaitToBeSeatedEntry * doPlacement(const QPoint &pos, WaitToBeSeatedEntry *wtse)
Definition:
wait_to_be_seated.cpp:208
hal::WaitToBeSeatedList::nextPlacement
const WaitToBeSeatedEntry * nextPlacement(const QPoint &pos)
Definition:
wait_to_be_seated.cpp:164
hal::WaitToBeSeatedList::placementDone
bool placementDone() const
Definition:
wait_to_be_seated.h:100
hal::WaitToBeSeatedList::WaitToBeSeatedList
WaitToBeSeatedList()
Definition:
wait_to_be_seated.cpp:107
hal::WaitToBeSeatedList::setLinks
void setLinks()
Definition:
wait_to_be_seated.cpp:118
u32
uint32_t u32
Definition:
defines.h:41
gui_def.h
hal
Definition:
defines.h:45
hal::compareWaitToBeSeated
bool compareWaitToBeSeated(const WaitToBeSeatedEntry *a, const WaitToBeSeatedEntry *b)
Definition:
wait_to_be_seated.cpp:66
QList< QPoint >
QList< WaitToBeSeatedEntry * >::size
int size() const const
QMap
QPoint
QSet
QSet::size
int size() const const
QString
plugins
gui
include
gui
graph_widget
layouters
wait_to_be_seated.h
Generated by
1.9.1