File size: 1,842 Bytes
f5498f9 | 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 | // Popcount-reformulated 1-parameter person classifier, runtime thresholds.
// Generated by rtl_gen.py; do not edit by hand.
//
// Inputs are the 40 Stage 0 classifier dims as signed INT8, post-LayerNorm and
// post-max-pool. Output is one bit. Combinational, no multipliers, no memory.
module person_classifier_popcount (
input signed [7:0] f00, f01, f02, f03, f04, f05, f06, f07, f08, f09,
input signed [7:0] f10, f11, f12, f13, f14, f15, f16, f17, f18, f19,
input signed [7:0] f20, f21, f22, f23, f24, f25, f26, f27, f28, f29,
input signed [7:0] f30, f31, f32, f33, f34, f35, f36, f37, f38, f39,
input signed [7:0] t00, t01, t02, t03, t04, t05, t06, t07, t08, t09,
input signed [7:0] t10, t11, t12, t13, t14, t15, t16, t17, t18, t19,
input signed [7:0] t20, t21, t22, t23, t24, t25, t26, t27, t28, t29,
input signed [7:0] t30, t31, t32, t33, t34, t35, t36, t37, t38, t39,
input signed [5:0] final_threshold,
output person_present
);
wire [5:0] count_pos =
(f00 > t00) + (f01 > t01) + (f02 > t02) +
(f03 > t03) + (f04 > t04) + (f05 > t05) +
(f06 > t06) + (f07 > t07) + (f08 > t08) +
(f09 > t09) + (f10 > t10) + (f11 > t11) +
(f12 > t12) + (f13 > t13) + (f14 > t14) +
(f15 > t15) + (f16 > t16) + (f17 > t17) +
(f18 > t18) + (f19 > t19);
wire [5:0] count_neg =
(f20 > t20) + (f21 > t21) + (f22 > t22) +
(f23 > t23) + (f24 > t24) + (f25 > t25) +
(f26 > t26) + (f27 > t27) + (f28 > t28) +
(f29 > t29) + (f30 > t30) + (f31 > t31) +
(f32 > t32) + (f33 > t33) + (f34 > t34) +
(f35 > t35) + (f36 > t36) + (f37 > t37) +
(f38 > t38) + (f39 > t39);
wire signed [6:0] diff = {1'b0, count_pos} - {1'b0, count_neg};
assign person_present = diff > final_threshold;
endmodule
|