-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathWriteData.py
139 lines (101 loc) · 5.65 KB
/
WriteData.py
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
''' This file write's data to DWM Memory depending on the write instrucion'''
from display import display
import config as config
TRd_size = config.TRd_size
def writezero(memory, row_number, nanowire_num_start_pos, nanowire_num_end_pos, Local_row_buffer):
# Instruction write 2
writeport = int(row_number)
nanowire_num_start_pos = int(nanowire_num_start_pos)
nanowire_num_end_pos = int(nanowire_num_end_pos)
# Shifting the data within the TRd space to right and writing at the TRd head
for i in range(writeport + TRd_size - 1, writeport, -1):
for j in range(nanowire_num_start_pos, nanowire_num_end_pos):
memory[i][j] = memory[i-1][j]
local_buff_start = nanowire_num_start_pos
for i in range(nanowire_num_start_pos, nanowire_num_end_pos):
memory[writeport][i] = Local_row_buffer[local_buff_start]
local_buff_start += 1
display(memory, row_number, 'AP0')
def writeone(memory, row_number, nanowire_num_start_pos, nanowire_num_end_pos, Local_row_buffer):
# Instruction write 3
writeport = int(row_number)
nanowire_num_start_pos = int(nanowire_num_start_pos)
nanowire_num_end_pos = int(nanowire_num_end_pos)
# Shifting the data within the TRd space to left and writing at the TRd tail
for i in range(writeport - TRd_size + 1, writeport):
for j in range(nanowire_num_start_pos, nanowire_num_end_pos ):
memory[i][j] = memory[i+1][j]
local_buff_start = nanowire_num_start_pos
for i in range(nanowire_num_start_pos, nanowire_num_end_pos ):
memory[writeport][i] = Local_row_buffer[local_buff_start]
local_buff_start += 1
display(memory, row_number, 'AP1')
return 1, 0.504676821
def overwrite_zero(memory, row_number, nanowire_num_start_pos, nanowire_num_end_pos, Local_row_buffer):
# Instruction write 0
# print(row_number)
writeport = int(row_number)
nanowire_num_start_pos = int(nanowire_num_start_pos)
nanowire_num_end_pos = int(nanowire_num_end_pos)
# Overwriting at the TRd head or tail
local_buff_start = nanowire_num_start_pos
for i in range(nanowire_num_start_pos, nanowire_num_end_pos):
memory[writeport][i] = Local_row_buffer[local_buff_start]
local_buff_start += 1
display(memory, row_number, 'AP0')
def overwrite_one(memory, row_number, nanowire_num_start_pos, nanowire_num_end_pos, Local_row_buffer):
# Instruction write 1
# print(row_number)
writeport = int(row_number)
nanowire_num_start_pos = int(nanowire_num_start_pos)
nanowire_num_end_pos = int(nanowire_num_end_pos)
# Overwriting at the TRd head or tail
local_buff_start = nanowire_num_start_pos
for i in range(nanowire_num_start_pos, nanowire_num_end_pos):
memory[writeport][i] = Local_row_buffer[local_buff_start]
local_buff_start += 1
display(memory, row_number, 'AP1')
def writezero_shiftLE(memory, row_number, nanowire_num_start_pos, nanowire_num_end_pos, Local_row_buffer):
# Instruction write 4
# Instruction write
#write at (left) TRd start and shift data towards the left padding.
writeport = int(row_number) + 16
nanowire_num_start_pos = int(nanowire_num_start_pos)
nanowire_num_end_pos = int(nanowire_num_end_pos)
# Shifting data left by 1 position towards left extremity
start = 0
for i in range(start, writeport):
memory[i][nanowire_num_start_pos:nanowire_num_end_pos] = memory[i + 1][nanowire_num_start_pos:nanowire_num_end_pos]
memory[writeport][nanowire_num_start_pos:nanowire_num_end_pos] = Local_row_buffer[nanowire_num_start_pos:nanowire_num_end_pos]
def writezero_shiftRE(memory, row_number, nanowire_num_start_pos, nanowire_num_end_pos, Local_row_buffer):
# Instruction write 5
#write at (left) TRd start and shift data towards the right padding.
writeport = int(row_number) + 16
nanowire_num_start_pos = int(nanowire_num_start_pos)
nanowire_num_end_pos = int(nanowire_num_end_pos)
# Shifting data right by 1 position towards the right extremity.
start = int(2*32)
for i in range(start, writeport, -1):
memory[i][nanowire_num_start_pos:nanowire_num_end_pos] = memory[i - 1][nanowire_num_start_pos:nanowire_num_end_pos]
memory[writeport][nanowire_num_start_pos:nanowire_num_end_pos] = Local_row_buffer[nanowire_num_start_pos:nanowire_num_end_pos]
def writeone_shiftLE(memory, row_number, nanowire_num_start_pos, nanowire_num_end_pos, Local_row_buffer):
# Instruction write 6
#write at (right) TRd end and shift data towards left padding.
writeport = int(row_number) + 16
nanowire_num_start_pos = int(nanowire_num_start_pos)
nanowire_num_end_pos = int(nanowire_num_end_pos)
# Shifting data left by 1 position
start = 0
for i in range(start, writeport):
memory[i][nanowire_num_start_pos:nanowire_num_end_pos] = memory[i + 1][nanowire_num_start_pos:nanowire_num_end_pos]
memory[writeport][nanowire_num_start_pos:nanowire_num_end_pos] = Local_row_buffer[nanowire_num_start_pos:nanowire_num_end_pos]
def writeone_shiftRE(memory, row_number, nanowire_num_start_pos, nanowire_num_end_pos, Local_row_buffer):
#write at (right) TRd end and shift data towards right padding.
writeport = int(row_number) + 16
nanowire_num_start_pos = int(nanowire_num_start_pos)
nanowire_num_end_pos = int(nanowire_num_end_pos)
# Shifting data left by 1 position
start = int(2*32)
for i in range(start, writeport, -1):
memory[i][nanowire_num_start_pos:nanowire_num_end_pos] = memory[i - 1][nanowire_num_start_pos:nanowire_num_end_pos]
memory[writeport][nanowire_num_start_pos:nanowire_num_end_pos] = Local_row_buffer[nanowire_num_start_pos:nanowire_num_end_pos]