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

Back to eFEX documentation
BDTModel_decision_function_12.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_9_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_lv32_5 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000101";
24  constant ap_const_lv32_F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001111";
25  constant ap_const_lv11_0 : STD_LOGIC_VECTOR (10 downto 0) := "00000000000";
26  constant ap_const_lv16_15 : STD_LOGIC_VECTOR (15 downto 0) := "0000000000010101";
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_2D : STD_LOGIC_VECTOR (5 downto 0) := "101101";
32  constant ap_const_lv6_32 : STD_LOGIC_VECTOR (5 downto 0) := "110010";
33  constant ap_const_lv6_28 : STD_LOGIC_VECTOR (5 downto 0) := "101000";
34  constant ap_const_logic_0 : STD_LOGIC := '0';
35 
36 attribute shreg_extract : string;
37  signal tmp_fu_58_p4 : STD_LOGIC_VECTOR (10 downto 0);
38  signal comparison_fu_68_p2 : STD_LOGIC_VECTOR (0 downto 0);
39  signal comparison_50_fu_74_p2 : STD_LOGIC_VECTOR (0 downto 0);
40  signal activation_99_fu_80_p2 : STD_LOGIC_VECTOR (0 downto 0);
41  signal icmp_ln170_fu_92_p2 : STD_LOGIC_VECTOR (0 downto 0);
42  signal activation_fu_86_p2 : STD_LOGIC_VECTOR (0 downto 0);
43  signal zext_ln170_fu_98_p1 : STD_LOGIC_VECTOR (1 downto 0);
44  signal or_ln170_fu_102_p2 : STD_LOGIC_VECTOR (0 downto 0);
45  signal select_ln170_fu_108_p3 : STD_LOGIC_VECTOR (1 downto 0);
46  signal agg_result_fu_124_p9 : STD_LOGIC_VECTOR (5 downto 0);
47  signal agg_result_fu_124_p10 : STD_LOGIC_VECTOR (1 downto 0);
48  signal agg_result_fu_124_p11 : STD_LOGIC_VECTOR (5 downto 0);
49  signal agg_result_fu_124_p1 : STD_LOGIC_VECTOR (1 downto 0);
50  signal agg_result_fu_124_p3 : STD_LOGIC_VECTOR (1 downto 0);
51  signal agg_result_fu_124_p5 : STD_LOGIC_VECTOR (1 downto 0);
52  signal agg_result_fu_124_p7 : STD_LOGIC_VECTOR (1 downto 0);
53  signal ap_ce_reg : STD_LOGIC;
54 
55  component BDTModel_sparsemux_9_2_6_1_1 IS
56  generic (
57  ID : INTEGER;
58  NUM_STAGE : INTEGER;
59  CASE0 : STD_LOGIC_VECTOR (1 downto 0);
60  din0_WIDTH : INTEGER;
61  CASE1 : STD_LOGIC_VECTOR (1 downto 0);
62  din1_WIDTH : INTEGER;
63  CASE2 : STD_LOGIC_VECTOR (1 downto 0);
64  din2_WIDTH : INTEGER;
65  CASE3 : STD_LOGIC_VECTOR (1 downto 0);
66  din3_WIDTH : INTEGER;
67  def_WIDTH : INTEGER;
68  sel_WIDTH : INTEGER;
69  dout_WIDTH : INTEGER );
70  port (
71  din0 : IN STD_LOGIC_VECTOR (5 downto 0);
72  din1 : IN STD_LOGIC_VECTOR (5 downto 0);
73  din2 : IN STD_LOGIC_VECTOR (5 downto 0);
74  din3 : IN STD_LOGIC_VECTOR (5 downto 0);
75  def : IN STD_LOGIC_VECTOR (5 downto 0);
76  sel : IN STD_LOGIC_VECTOR (1 downto 0);
77  dout : OUT STD_LOGIC_VECTOR (5 downto 0) );
78  end component;
79 
80 
81 
82 begin
83  sparsemux_9_2_6_1_1_U96 : component BDTModel_sparsemux_9_2_6_1_1
84  generic map (
85  ID => 1,
86  NUM_STAGE => 1,
87  CASE0 => "00",
88  din0_WIDTH => 6,
89  CASE1 => "01",
90  din1_WIDTH => 6,
91  CASE2 => "10",
92  din2_WIDTH => 6,
93  CASE3 => "11",
94  din3_WIDTH => 6,
95  def_WIDTH => 6,
96  sel_WIDTH => 2,
97  dout_WIDTH => 6)
98  port map (
99  din0 => ap_const_lv6_2D,
100  din1 => ap_const_lv6_32,
101  din2 => ap_const_lv6_2D,
102  din3 => ap_const_lv6_28,
103  def => agg_result_fu_124_p9,
104  sel => agg_result_fu_124_p10,
105  dout => agg_result_fu_124_p11);
106 
107 
108 
109 
110  activation_99_fu_80_p2 <= (comparison_fu_68_p2 xor ap_const_lv1_1);
111  activation_fu_86_p2 <= (comparison_50_fu_74_p2 and activation_99_fu_80_p2);
112  agg_result_fu_124_p10 <=
113  select_ln170_fu_108_p3 when (or_ln170_fu_102_p2(0) = '1') else
114  ap_const_lv2_3;
115  agg_result_fu_124_p9 <= "XXXXXX";
116  ap_ready <= ap_const_logic_1;
117  ap_return <= agg_result_fu_124_p11;
118  comparison_50_fu_74_p2 <= "1" when (unsigned(x_9_val) < unsigned(ap_const_lv16_15)) else "0";
119  comparison_fu_68_p2 <= "1" when (tmp_fu_58_p4 = ap_const_lv11_0) else "0";
120  icmp_ln170_fu_92_p2 <= "1" when (unsigned(x_5_val) > unsigned(ap_const_lv16_E)) else "0";
121  or_ln170_fu_102_p2 <= (comparison_fu_68_p2 or activation_fu_86_p2);
122  select_ln170_fu_108_p3 <=
123  zext_ln170_fu_98_p1 when (comparison_fu_68_p2(0) = '1') else
124  ap_const_lv2_2;
125  tmp_fu_58_p4 <= x_5_val(15 downto 5);
126  zext_ln170_fu_98_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(icmp_ln170_fu_92_p2),2));
127 end behav;