HAL
v4.5.0-124-g47ab54673
The Hardware Analyzer - a comprehensive reverse engineering and manipulation framework for gate-level netlists.
common_successor_predecessor.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 "
hal_core/defines.h
"
29
#include <QHash>
30
#include <QList>
31
#include <QSet>
32
#include "
hal_core/netlist/gate.h
"
33
34
namespace
hal
{
35
class
Gate
;
36
40
class
CommonSuccessorPredecessorGateQueue
41
{
42
int
mIndex;
43
Gate
* mGate;
44
QHash <Gate*, Gate*>
mLastWaypoint;
45
QList<Gate*>
mQueue;
46
public
:
47
CommonSuccessorPredecessorGateQueue
(
int
i,
Gate
* g);
48
QList<Gate*>
getNext
(
bool
forward);
49
void
setQueue
(
const
QList<Gate*>
& q) { mQueue = q; }
50
int
mask
()
const
{
return
1 << mIndex; }
51
QList<Gate*>
waypoints
(
Gate
* g)
const
;
52
};
53
57
class
CommonSuccessorPredecessor
58
{
59
bool
mForward;
60
int
mMaskAll;
61
QList<CommonSuccessorPredecessorGateQueue>
mQueues;
62
QHash<Gate*,int>
mFoundBit;
63
QSet<Gate*>
mFoundSet;
64
public
:
65
CommonSuccessorPredecessor
(
const
QList<u32>
& gateIds,
bool
forw,
int
maxRound);
66
QSet<Gate*>
result
()
const
;
67
};
68
}
hal::CommonSuccessorPredecessorGateQueue
Definition:
common_successor_predecessor.h:41
hal::CommonSuccessorPredecessorGateQueue::CommonSuccessorPredecessorGateQueue
CommonSuccessorPredecessorGateQueue(int i, Gate *g)
Definition:
common_successor_predecessor.cpp:11
hal::CommonSuccessorPredecessorGateQueue::setQueue
void setQueue(const QList< Gate * > &q)
Definition:
common_successor_predecessor.h:49
hal::CommonSuccessorPredecessorGateQueue::mask
int mask() const
Definition:
common_successor_predecessor.h:50
hal::CommonSuccessorPredecessorGateQueue::getNext
QList< Gate * > getNext(bool forward)
Definition:
common_successor_predecessor.cpp:18
hal::CommonSuccessorPredecessorGateQueue::waypoints
QList< Gate * > waypoints(Gate *g) const
Definition:
common_successor_predecessor.cpp:35
hal::CommonSuccessorPredecessor
Definition:
common_successor_predecessor.h:58
hal::CommonSuccessorPredecessor::result
QSet< Gate * > result() const
Definition:
common_successor_predecessor.cpp:84
hal::CommonSuccessorPredecessor::CommonSuccessorPredecessor
CommonSuccessorPredecessor(const QList< u32 > &gateIds, bool forw, int maxRound)
Definition:
common_successor_predecessor.cpp:46
hal::Gate
Definition:
gate.h:58
defines.h
gate.h
hal::ItemType::Gate
@ Gate
hal
Definition:
defines.h:45
QHash
QList
QSet
plugins
gui
include
gui
gui_utils
common_successor_predecessor.h
Generated by
1.9.1