eFEX firmware  1.7.3
ATLAS l1-calo - electron and tau feature extraction firmware for eFEX boards

Back to eFEX documentation
BDTModel_decision_function_26.vhd
1 -- ==============================================================
2 -- Generated by Vitis HLS v2024.1.2
3 -- Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4 -- Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5 -- ==============================================================
6 
7 library IEEE;
8 use IEEE.std_logic_1164.all;
9 use IEEE.numeric_std.all;
10 
12 port (
13  ap_ready : OUT STD_LOGIC;
14  x_5_val : IN STD_LOGIC_VECTOR (15 downto 0);
15  x_6_val : IN STD_LOGIC_VECTOR (15 downto 0);
16  ap_return : OUT STD_LOGIC_VECTOR (5 downto 0) );
17 end;
18 
19 
21  constant ap_const_logic_1 : STD_LOGIC := '1';
22  constant ap_const_boolean_1 : BOOLEAN := true;
23  constant ap_const_lv16_2E : STD_LOGIC_VECTOR (15 downto 0) := "0000000000101110";
24  constant ap_const_lv32_3 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000011";
25  constant ap_const_lv32_F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001111";
26  constant ap_const_lv13_0 : STD_LOGIC_VECTOR (12 downto 0) := "0000000000000";
27  constant ap_const_lv1_1 : STD_LOGIC_VECTOR (0 downto 0) := "1";
28  constant ap_const_lv16_E : STD_LOGIC_VECTOR (15 downto 0) := "0000000000001110";
29  constant ap_const_lv2_2 : STD_LOGIC_VECTOR (1 downto 0) := "10";
30  constant ap_const_lv2_3 : STD_LOGIC_VECTOR (1 downto 0) := "11";
31  constant ap_const_lv6_2C : STD_LOGIC_VECTOR (5 downto 0) := "101100";
32  constant ap_const_lv6_33 : STD_LOGIC_VECTOR (5 downto 0) := "110011";
33  constant ap_const_lv6_29 : STD_LOGIC_VECTOR (5 downto 0) := "101001";
34  constant ap_const_lv6_2E : STD_LOGIC_VECTOR (5 downto 0) := "101110";
35  constant ap_const_logic_0 : STD_LOGIC := '0';
36 
37 attribute shreg_extract : string;
38  signal tmp_fu_66_p4 : STD_LOGIC_VECTOR (12 downto 0);
39  signal comparison_fu_60_p2 : STD_LOGIC_VECTOR (0 downto 0);
40  signal comparison_23_fu_76_p2 : STD_LOGIC_VECTOR (0 downto 0);
41  signal activation_45_fu_82_p2 : STD_LOGIC_VECTOR (0 downto 0);
42  signal icmp_ln170_fu_94_p2 : STD_LOGIC_VECTOR (0 downto 0);
43  signal activation_fu_88_p2 : STD_LOGIC_VECTOR (0 downto 0);
44  signal zext_ln170_fu_100_p1 : STD_LOGIC_VECTOR (1 downto 0);
45  signal or_ln170_fu_104_p2 : STD_LOGIC_VECTOR (0 downto 0);
46  signal select_ln170_fu_110_p3 : STD_LOGIC_VECTOR (1 downto 0);
47  signal agg_result_fu_126_p9 : STD_LOGIC_VECTOR (5 downto 0);
48  signal agg_result_fu_126_p10 : STD_LOGIC_VECTOR (1 downto 0);
49  signal agg_result_fu_126_p11 : STD_LOGIC_VECTOR (5 downto 0);
50  signal agg_result_fu_126_p1 : STD_LOGIC_VECTOR (1 downto 0);
51  signal agg_result_fu_126_p3 : STD_LOGIC_VECTOR (1 downto 0);
52  signal agg_result_fu_126_p5 : STD_LOGIC_VECTOR (1 downto 0);
53  signal agg_result_fu_126_p7 : STD_LOGIC_VECTOR (1 downto 0);
54  signal ap_ce_reg : STD_LOGIC;
55 
56  component BDTModel_sparsemux_9_2_6_1_1 IS
57  generic (
58  ID : INTEGER;
59  NUM_STAGE : INTEGER;
60  CASE0 : STD_LOGIC_VECTOR (1 downto 0);
61  din0_WIDTH : INTEGER;
62  CASE1 : STD_LOGIC_VECTOR (1 downto 0);
63  din1_WIDTH : INTEGER;
64  CASE2 : STD_LOGIC_VECTOR (1 downto 0);
65  din2_WIDTH : INTEGER;
66  CASE3 : STD_LOGIC_VECTOR (1 downto 0);
67  din3_WIDTH : INTEGER;
68  def_WIDTH : INTEGER;
69  sel_WIDTH : INTEGER;
70  dout_WIDTH : INTEGER );
71  port (
72  din0 : IN STD_LOGIC_VECTOR (5 downto 0);
73  din1 : IN STD_LOGIC_VECTOR (5 downto 0);
74  din2 : IN STD_LOGIC_VECTOR (5 downto 0);
75  din3 : IN STD_LOGIC_VECTOR (5 downto 0);
76  def : IN STD_LOGIC_VECTOR (5 downto 0);
77  sel : IN STD_LOGIC_VECTOR (1 downto 0);
78  dout : OUT STD_LOGIC_VECTOR (5 downto 0) );
79  end component;
80 
81 
82 
83 begin
84  sparsemux_9_2_6_1_1_U50 : component BDTModel_sparsemux_9_2_6_1_1
85  generic map (
86  ID => 1,
87  NUM_STAGE => 1,
88  CASE0 => "00",
89  din0_WIDTH => 6,
90  CASE1 => "01",
91  din1_WIDTH => 6,
92  CASE2 => "10",
93  din2_WIDTH => 6,
94  CASE3 => "11",
95  din3_WIDTH => 6,
96  def_WIDTH => 6,
97  sel_WIDTH => 2,
98  dout_WIDTH => 6)
99  port map (
100  din0 => ap_const_lv6_2C,
101  din1 => ap_const_lv6_33,
102  din2 => ap_const_lv6_29,
103  din3 => ap_const_lv6_2E,
104  def => agg_result_fu_126_p9,
105  sel => agg_result_fu_126_p10,
106  dout => agg_result_fu_126_p11);
107 
108 
109 
110 
111  activation_45_fu_82_p2 <= (comparison_fu_60_p2 xor ap_const_lv1_1);
112  activation_fu_88_p2 <= (comparison_23_fu_76_p2 and activation_45_fu_82_p2);
113  agg_result_fu_126_p10 <=
114  select_ln170_fu_110_p3 when (or_ln170_fu_104_p2(0) = '1') else
115  ap_const_lv2_3;
116  agg_result_fu_126_p9 <= "XXXXXX";
117  ap_ready <= ap_const_logic_1;
118  ap_return <= agg_result_fu_126_p11;
119  comparison_23_fu_76_p2 <= "1" when (tmp_fu_66_p4 = ap_const_lv13_0) else "0";
120  comparison_fu_60_p2 <= "1" when (unsigned(x_5_val) < unsigned(ap_const_lv16_2E)) else "0";
121  icmp_ln170_fu_94_p2 <= "1" when (unsigned(x_5_val) > unsigned(ap_const_lv16_E)) else "0";
122  or_ln170_fu_104_p2 <= (comparison_fu_60_p2 or activation_fu_88_p2);
123  select_ln170_fu_110_p3 <=
124  zext_ln170_fu_100_p1 when (comparison_fu_60_p2(0) = '1') else
125  ap_const_lv2_2;
126  tmp_fu_66_p4 <= x_6_val(15 downto 3);
127  zext_ln170_fu_100_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(icmp_ln170_fu_94_p2),2));
128 end behav;