added catch for low n syn mon

This commit is contained in:
alexmadison 2022-04-10 15:19:11 +02:00
parent ae3ecc3d6b
commit 19564a5a91
2 changed files with 29 additions and 17 deletions

View File

@ -166,23 +166,26 @@ defproc chip_texel (bd<N_IN> in, out;
// Otherwise boom. // Otherwise boom.
bool DEV_DEBUG; bool DEV_DEBUG;
pint NSMX4 = N_SYN_MON_X/4; // Self explanatory pint NSMX4 = N_SYN_MON_X/4; // Self explanatory
sigbuf<NSMX4> sb_DEV_DEBUG(.in = register.data[0].d[5].t, sigbuf<std::max(NSMX4,4)> sb_DEV_DEBUG(.in = register.data[0].d[5].t,
.supply = supply); .supply = supply);
DEV_DEBUG = sb_DEV_DEBUG.out[0]; DEV_DEBUG = sb_DEV_DEBUG.out[0];
AND2_X1 ands_devmon[NSMX4]; [NSMX4 >= 1 ->
(i:NSMX4: AND2_X1 ands_devmon[NSMX4];
ands_devmon[i].a = syn_mon_dec_x.out[1+i*4]; (i:NSMX4:
ands_devmon[i].b = DEV_DEBUG; ands_devmon[i].a = syn_mon_dec_x.out[1+i*4];
ands_devmon[i].y = syn_mon_x[1+i*4]; ands_devmon[i].b = DEV_DEBUG;
ands_devmon[i].vdd = supply.vdd; ands_devmon[i].y = syn_mon_x[1+i*4];
ands_devmon[i].vss = supply.vss; ands_devmon[i].vdd = supply.vdd;
) ands_devmon[i].vss = supply.vss;
// Wire up the non-ANDed lines. )
(i:N_SYN_MON_X: // Wire up the non-ANDed lines.
[~(i%4 = 1) -> (i:N_SYN_MON_X:
syn_mon_x[i] = syn_mon_dec_x.out[i]; [~(i%4 = 1) ->
] syn_mon_x[i] = syn_mon_dec_x.out[i];
) ]
)
]
} }

View File

@ -99,6 +99,14 @@ Use -exclude='regex' to specify signals to exclude (or -ex).""")
if len(r) >= 1: if len(r) >= 1:
include_all_times = True include_all_times = True
# Check if user gave "nowarn" flag
plot_warn = True
for arg in argv:
r = re.findall(r'(-nowarn?)', arg)
if len(r) >= 1:
plot_warn = False
# Get list of all times (before filtering) # Get list of all times (before filtering)
unique_times = np.unique([int(e[0]) for e in entries]) unique_times = np.unique([int(e[0]) for e in entries])
@ -237,8 +245,9 @@ Use -exclude='regex' to specify signals to exclude (or -ex).""")
print(f"Couldn't find an appropriate time for warning {a}") print(f"Couldn't find an appropriate time for warning {a}")
continue continue
index = time_to_index(time) index = time_to_index(time)
ax.axvline(index+0.5, c = "red", lw = 2) if plot_warn:
ax.text(index+0.5, -1, a[2], rotation = 90, ha = "center", va = "bottom", c = "red") ax.axvline(index+0.5, c = "red", lw = 2)
ax.text(index+0.5, -1, a[2], rotation = 90, ha = "center", va = "bottom", c = "red")
# Find echoed statements of the form "[digits] text" # Find echoed statements of the form "[digits] text"
echoes = re.findall(r"\t *(\d+) [^\t]*\n(\[\d*\].+)", f) echoes = re.findall(r"\t *(\d+) [^\t]*\n(\[\d*\].+)", f)