Skip to content

Commit 4f41b76

Browse files
Added some latency numbers
1 parent 4cfc48f commit 4f41b76

5 files changed

Lines changed: 37 additions & 41 deletions

File tree

hwcomponents_library/library/aladdin.py

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def add(self) -> tuple[float, float]:
6666
-------
6767
(energy, latency): Tuple in (Joules, seconds).
6868
"""
69-
return 0.21e-12, 0.0
69+
return 0.21e-12, 1e-9
7070

7171
@action
7272
def read(self) -> tuple[float, float]:
@@ -77,7 +77,7 @@ def read(self) -> tuple[float, float]:
7777
-------
7878
(energy, latency): Tuple in (Joules, seconds).
7979
"""
80-
return 0.21e-12, 0.0
80+
return 0.21e-12, 1e-9
8181

8282

8383
# Original CSV contents:
@@ -131,7 +131,7 @@ def read(self) -> tuple[float, float]:
131131
-------
132132
(energy, latency): Tuple in (Joules, seconds).
133133
"""
134-
return 0.009e-12, 0.0
134+
return 0.009e-12, 1e-9
135135

136136
@action(bits_per_action="width")
137137
def write(self) -> tuple[float, float]:
@@ -147,7 +147,7 @@ def write(self) -> tuple[float, float]:
147147
-------
148148
(energy, latency): Tuple in (Joules, seconds).
149149
"""
150-
return 0.009e-12, 0.0
150+
return 0.009e-12, 1e-9
151151

152152

153153
# Original CSV contents:
@@ -195,7 +195,7 @@ def compare(self) -> tuple[float, float]:
195195
-------
196196
(energy, latency): Tuple in (Joules, seconds).
197197
"""
198-
return 0.02947e-12, 0.0
198+
return 0.02947e-12, 1e-9
199199

200200
@action
201201
def read(self) -> tuple[float, float]:
@@ -206,7 +206,7 @@ def read(self) -> tuple[float, float]:
206206
-------
207207
(energy, latency): Tuple in (Joules, seconds).
208208
"""
209-
return 0.02947e-12, 0.0
209+
return 0.02947e-12, 1e-9
210210

211211

212212
# Original CSV contents:
@@ -283,7 +283,7 @@ def multiply(self) -> tuple[float, float]:
283283
-------
284284
(energy, latency): Tuple in (Joules, seconds).
285285
"""
286-
return 12.68e-12, 0.0
286+
return 12.68e-12, 1e-9
287287

288288
@action
289289
def read(self) -> tuple[float, float]:
@@ -294,7 +294,7 @@ def read(self) -> tuple[float, float]:
294294
-------
295295
(energy, latency): Tuple in (Joules, seconds).
296296
"""
297-
return 12.68e-12, 0.0
297+
return 12.68e-12, 1e-9
298298

299299

300300
# Original CSV contents:
@@ -341,7 +341,7 @@ def count(self) -> tuple[float, float]:
341341
-------
342342
(energy, latency): Tuple in (Joules, seconds).
343343
"""
344-
return 0.25074e-12, 0.0
344+
return 0.25074e-12, 1e-9
345345

346346
@action
347347
def read(self) -> tuple[float, float]:
@@ -352,7 +352,7 @@ def read(self) -> tuple[float, float]:
352352
-------
353353
(energy, latency): Tuple in (Joules, seconds).
354354
"""
355-
return 0.25074e-12, 0.0
355+
return 0.25074e-12, 1e-9
356356

357357

358358
class AladdinIntMAC(LibraryEstimatorClassBase):
@@ -376,12 +376,9 @@ class AladdinIntMAC(LibraryEstimatorClassBase):
376376
def __init__(self, tech_node: float, adder_width: int, multiplier_width: int):
377377
self.adder = AladdinAdder(tech_node, adder_width)
378378
self.multiplier = AladdinMultiplier(tech_node, multiplier_width)
379-
super().__init__(
380-
area=self.adder.area + self.multiplier.area,
381-
leak_power=self.adder.leak_power + self.multiplier.leak_power,
382-
)
379+
super().__init__(subcomponents=[self.adder, self.multiplier])
383380

384-
@action
381+
@action(pipelined_subcomponents=True)
385382
def mac(self) -> tuple[float, float]:
386383
"""
387384
Returns the energy and latency for one multiply-accumulate operation.
@@ -390,9 +387,8 @@ def mac(self) -> tuple[float, float]:
390387
-------
391388
(energy, latency): Tuple in (Joules, seconds).
392389
"""
393-
ae, al = self.adder.add()
394-
me, ml = self.multiplier.multiply()
395-
return ae + me, max(al, ml)
390+
self.adder.add()
391+
self.multiplier.multiply()
396392

397393
@action
398394
def read(self) -> tuple[float, float]:
@@ -403,7 +399,7 @@ def read(self) -> tuple[float, float]:
403399
-------
404400
(energy, latency): Tuple in (Joules, seconds).
405401
"""
406-
return self.mac()
402+
self.mac()
407403

408404
@action
409405
def compute(self) -> tuple[float, float]:
@@ -414,4 +410,4 @@ def compute(self) -> tuple[float, float]:
414410
-------
415411
(energy, latency): Tuple in (Joules, seconds).
416412
"""
417-
return self.mac()
413+
self.mac()

hwcomponents_library/library/isaac.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,8 @@ def read(self) -> tuple[float, float]:
215215
@action(bits_per_action="width")
216216
def write(self) -> tuple[float, float]:
217217
"""
218-
Write returns zero because transfer costs are already included in the read energy.
218+
Write returns zero because transfer costs are already included in the read
219+
energy.
219220
220221
Parameters
221222
----------

hwcomponents_library/library/jia.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ def shift_and_add(self) -> tuple[float, float]:
6464
-------
6565
(energy, latency): Tuple in (Joules, seconds).
6666
"""
67-
68-
return 2.25e-12, 0.0
67+
# Latency: 100GHz, 768 columns / (datapath multiplexed between 8 cols)
68+
return 2.25e-12, 768 / 8e-8
6969

7070
@action
7171
def write(self) -> tuple[float, float]:
@@ -148,7 +148,7 @@ def zero_gate(self) -> tuple[float, float]:
148148
-------
149149
(energy, latency): Tuple in (Joules, seconds).
150150
"""
151-
return 0.5e-12, 0.0
151+
return 0.5e-12, 1e-8
152152

153153
def read(self) -> tuple[float, float]:
154154
"""
@@ -210,7 +210,8 @@ def process(self) -> tuple[float, float]:
210210
-------
211211
(energy, latency): Tuple in (Joules, seconds).
212212
"""
213-
return 2.4e-12, 0.0
213+
# Latency: 100GHz, 768 columns / (datapath multiplexed between 8 cols)
214+
return 2.4e-12, 768 / 8e-8
214215

215216
@action
216217
def read(self) -> tuple[float, float]:

hwcomponents_library/library/misc.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,6 @@ def read(self) -> tuple[float, float]:
222222
self.address_reg.read()
223223
self.delta_reg.read()
224224
self.adder.add()
225-
return 0.0, 0.0
226225

227226
@action(bits_per_action="width")
228227
def write(self) -> tuple[float, float]:
@@ -242,4 +241,3 @@ def write(self) -> tuple[float, float]:
242241
self.address_reg.write()
243242
self.delta_reg.read()
244243
self.adder.add()
245-
return 0.0, 0.0

hwcomponents_library/library/timely.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def read(self) -> tuple[float, float]:
5555
(energy, latency): Tuple in (Joules, seconds).
5656
"""
5757

58-
return 0.0368e-12, 0.0
58+
return 0.0368e-12, 150e-9
5959

6060
@action
6161
def add(self) -> tuple[float, float]:
@@ -67,7 +67,7 @@ def add(self) -> tuple[float, float]:
6767
(energy, latency): Tuple in (Joules, seconds).
6868
"""
6969

70-
return 0.0368e-12, 0.0
70+
return 0.0368e-12, 150e-9
7171

7272

7373
# Original CSV contents:
@@ -107,7 +107,7 @@ def drive(self) -> tuple[float, float]:
107107
-------
108108
(energy, latency): Tuple in (Joules, seconds).
109109
"""
110-
return 0.0023e-12, 0.0
110+
return 0.0023e-12, 150e-9
111111

112112
@action
113113
def read(self) -> tuple[float, float]:
@@ -118,7 +118,7 @@ def read(self) -> tuple[float, float]:
118118
-------
119119
(energy, latency): Tuple in (Joules, seconds).
120120
"""
121-
return 0.0023e-12, 0.0
121+
return 0.0023e-12, 150e-9
122122

123123

124124
# Original CSV contents:
@@ -163,7 +163,7 @@ def convert(self) -> tuple[float, float]:
163163
-------
164164
(energy, latency): Tuple in (Joules, seconds).
165165
"""
166-
return 0.0375e-12, 0.0
166+
return 0.0375e-12, 150e-9
167167

168168
@action
169169
def read(self) -> tuple[float, float]:
@@ -174,7 +174,7 @@ def read(self) -> tuple[float, float]:
174174
-------
175175
(energy, latency): Tuple in (Joules, seconds).
176176
"""
177-
return 0.0375e-12, 0.0
177+
return 0.0375e-12, 150e-9
178178

179179

180180
# Original CSV contents:
@@ -218,7 +218,7 @@ def convert(self) -> tuple[float, float]:
218218
-------
219219
(energy, latency): Tuple in (Joules, seconds).
220220
"""
221-
return 0.145e-12, 0.0
221+
return 0.145e-12, 150e-9
222222

223223
@action
224224
def read(self) -> tuple[float, float]:
@@ -229,7 +229,7 @@ def read(self) -> tuple[float, float]:
229229
-------
230230
(energy, latency): Tuple in (Joules, seconds).
231231
"""
232-
return 0.145e-12, 0.0
232+
return 0.145e-12, 150e-9
233233

234234

235235
# Original CSV contents:
@@ -273,7 +273,7 @@ def read(self) -> tuple[float, float]:
273273
-------
274274
(energy, latency): Tuple in (Joules, seconds).
275275
"""
276-
return 0.00062e-12, 0.0
276+
return 0.00062e-12, 150e-9
277277

278278
@action
279279
def drive(self) -> tuple[float, float]:
@@ -284,7 +284,7 @@ def drive(self) -> tuple[float, float]:
284284
-------
285285
(energy, latency): Tuple in (Joules, seconds).
286286
"""
287-
return 0.00062e-12, 0.0
287+
return 0.00062e-12, 150e-9
288288

289289

290290
# Original CSV contents:
@@ -324,7 +324,7 @@ def compare(self) -> tuple[float, float]:
324324
-------
325325
(energy, latency): Tuple in (Joules, seconds).
326326
"""
327-
return 0.0417e-12, 0.0
327+
return 0.0417e-12, 150e-9
328328

329329
@action
330330
def read(self) -> tuple[float, float]:
@@ -335,7 +335,7 @@ def read(self) -> tuple[float, float]:
335335
-------
336336
(energy, latency): Tuple in (Joules, seconds).
337337
"""
338-
return 0.0417e-12, 0.0
338+
return 0.0417e-12, 150e-9
339339

340340

341341
# Original CSV contents:
@@ -411,7 +411,7 @@ def read(self) -> tuple[float, float]:
411411
-------
412412
(energy, latency): Tuple in (Joules, seconds).
413413
"""
414-
return 203.776e-12, 0.0
414+
return 203.776e-12, 9.765625e-13 * self.width
415415

416416
@action(bits_per_action="width")
417417
def write(self) -> tuple[float, float]:
@@ -427,7 +427,7 @@ def write(self) -> tuple[float, float]:
427427
-------
428428
(energy, latency): Tuple in (Joules, seconds).
429429
"""
430-
return 496.624e-12, 0.0
430+
return 496.624e-12, 9.765625e-12 * self.width
431431

432432

433433
class TimelyChip2ChipLink(IsaacChip2ChipLink):

0 commit comments

Comments
 (0)