mirror of https://github.com/YosysHQ/nextpnr.git
70 lines
1.7 KiB
Python
70 lines
1.7 KiB
Python
|
|
#!/usr/bin/env python3
|
||
|
|
# -*- coding: utf-8 -*-
|
||
|
|
# ../nextpnr-ice40 --hx8k --tmfuzz > tmfuzz_hx8k.txt
|
||
|
|
|
||
|
|
import numpy as np
|
||
|
|
import matplotlib.pyplot as plt
|
||
|
|
from collections import defaultdict
|
||
|
|
|
||
|
|
device = "hx8k"
|
||
|
|
sel_src_type = "LUTFF_OUT"
|
||
|
|
sel_dst_type = "LUTFF_IN_LUT"
|
||
|
|
|
||
|
|
src_dst_pairs = defaultdict(lambda: 0)
|
||
|
|
|
||
|
|
delay_data = list()
|
||
|
|
delay_map_sum = np.zeros((41, 41))
|
||
|
|
delay_map_sum2 = np.zeros((41, 41))
|
||
|
|
delay_map_count = np.zeros((41, 41))
|
||
|
|
|
||
|
|
with open("tmfuzz_%s.txt" % device, "r") as f:
|
||
|
|
for line in f:
|
||
|
|
line = line.split()
|
||
|
|
|
||
|
|
if line[0] == "dst":
|
||
|
|
dst_xy = (int(line[1]), int(line[2]))
|
||
|
|
dst_type = line[3]
|
||
|
|
dst_wire = line[4]
|
||
|
|
|
||
|
|
src_xy = (int(line[1]), int(line[2]))
|
||
|
|
src_type = line[3]
|
||
|
|
src_wire = line[4]
|
||
|
|
|
||
|
|
delay = int(line[5])
|
||
|
|
estdelay = int(line[6])
|
||
|
|
|
||
|
|
src_dst_pairs[src_type, dst_type] += 1
|
||
|
|
|
||
|
|
if src_type == sel_src_type and dst_type == sel_dst_type:
|
||
|
|
delay_data.append((delay, estdelay))
|
||
|
|
relx = 20 + dst_xy[0] - src_xy[0]
|
||
|
|
rely = 20 + dst_xy[1] - src_xy[1]
|
||
|
|
|
||
|
|
if (0 <= relx <= 40) and (0 <= rely <= 40):
|
||
|
|
delay_map_sum[relx, rely] += delay
|
||
|
|
delay_map_sum2[relx, rely] += delay*delay
|
||
|
|
delay_map_count[relx, rely] += 1
|
||
|
|
|
||
|
|
delay_data = np.array(delay_data)
|
||
|
|
|
||
|
|
#%%
|
||
|
|
|
||
|
|
print("Src-Dst-Type pair summary:")
|
||
|
|
for cnt, src, dst in sorted([(v, k[0], k[1]) for k, v in src_dst_pairs.items()]):
|
||
|
|
print("%20s %20s %5d%s" % (src, dst, cnt, " *" if src == sel_src_type and dst == sel_dst_type else ""))
|
||
|
|
print()
|
||
|
|
|
||
|
|
#%%
|
||
|
|
|
||
|
|
plt.figure()
|
||
|
|
plt.imshow(delay_map_sum / delay_map_count)
|
||
|
|
plt.colorbar()
|
||
|
|
plt.show()
|
||
|
|
|
||
|
|
#%%
|
||
|
|
|
||
|
|
plt.figure()
|
||
|
|
plt.plot(delay_data[:,0], delay_data[:,1], ".")
|
||
|
|
plt.show()
|
||
|
|
|