-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgateList.h
More file actions
92 lines (71 loc) · 1.76 KB
/
Copy pathgateList.h
File metadata and controls
92 lines (71 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#pragma once
#include <iostream>
#include <string>
#include <vector>
#include <stdio.h>
#include <fstream>
#include <sstream>
#include <algorithm>
#include <set>
using namespace std;
enum logicValues
{
logicLow,
logicHigh,
logicD,
logicDbar,
logicX
};
enum gateTypes
{
INV,
AND,
OR,
NAND,
NOR,
BUF,
NOT,
XOR,
XNOR,
INPUT,
OUTPUT
};
struct gateNode
{
int ip1, ip2;
int op;
int gateType;
int gateID;
vector<int> signalList;
};
struct signalNode
{
int signalID;
vector<int> gateIDs;
// vector<fault> faultList;
set<string> faultList;
int op;
};
struct less_than_key_signalNode
{
inline bool operator()(const signalNode &struct1, const signalNode &struct2)
{
return (struct1.signalID < struct2.signalID);
}
};
extern int logicOR[5][5];
extern int logicNAND[5][5];
extern int logicAND[5][5];
extern int logicNOR[5][5];
extern int logicNOT[5];
extern int logicControl[6];
extern int logicInversion[6];
bool split(string inputString, vector<string> &tokens, char delimiter);
int gateType(string inputString);
void addToSignalList(int signal, int gateID, vector<signalNode> &signals);
void readInputFile(string inputFile, vector<string> &inputString);
void assignValues(string inputs, vector<signalNode> &signals, vector<int> inputSignals, set<string> &totalFaults);
void addToStack(vector<int> &inputSignals, vector<int> &gateStack, vector<gateNode> gates, vector<int> &evaluatedGates);
void evaluateGate(gateNode gate, vector<signalNode> &signals);
void readNetlist(string inputFile, vector<gateNode> &gates, vector<signalNode> &signals, vector<int> &inputSignals, vector<int> &outputSignals);
void writeOutputFile(string fileName, vector<string> outputString);