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

Back to eFEX documentation
BDTModel_decision_function_29.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_0_val : IN STD_LOGIC_VECTOR (15 downto 0);
15  x_10_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_105 : STD_LOGIC_VECTOR (15 downto 0) := "0000000100000101";
24  constant ap_const_lv16_12 : STD_LOGIC_VECTOR (15 downto 0) := "0000000000010010";
25  constant ap_const_lv1_1 : STD_LOGIC_VECTOR (0 downto 0) := "1";
26  constant ap_const_lv16_C9 : STD_LOGIC_VECTOR (15 downto 0) := "0000000011001001";
27  constant ap_const_lv2_2 : STD_LOGIC_VECTOR (1 downto 0) := "10";
28  constant ap_const_lv2_3 : STD_LOGIC_VECTOR (1 downto 0) := "11";
29  constant ap_const_lv6_25 : STD_LOGIC_VECTOR (5 downto 0) := "100101";
30  constant ap_const_lv6_29 : STD_LOGIC_VECTOR (5 downto 0) := "101001";
31  constant ap_const_lv6_2E : STD_LOGIC_VECTOR (5 downto 0) := "101110";
32  constant ap_const_lv6_21 : STD_LOGIC_VECTOR (5 downto 0) := "100001";
33  constant ap_const_logic_0 : STD_LOGIC := '0';
34 
35 attribute shreg_extract : string;
36  signal comparison_fu_54_p2 : STD_LOGIC_VECTOR (0 downto 0);
37  signal comparison_18_fu_60_p2 : STD_LOGIC_VECTOR (0 downto 0);
38  signal activation_35_fu_66_p2 : STD_LOGIC_VECTOR (0 downto 0);
39  signal icmp_ln170_fu_78_p2 : STD_LOGIC_VECTOR (0 downto 0);
40  signal activation_fu_72_p2 : STD_LOGIC_VECTOR (0 downto 0);
41  signal zext_ln170_fu_84_p1 : STD_LOGIC_VECTOR (1 downto 0);
42  signal or_ln170_fu_88_p2 : STD_LOGIC_VECTOR (0 downto 0);
43  signal select_ln170_fu_94_p3 : STD_LOGIC_VECTOR (1 downto 0);
44  signal agg_result_fu_110_p9 : STD_LOGIC_VECTOR (5 downto 0);
45  signal agg_result_fu_110_p10 : STD_LOGIC_VECTOR (1 downto 0);
46  signal agg_result_fu_110_p11 : STD_LOGIC_VECTOR (5 downto 0);
47  signal agg_result_fu_110_p1 : STD_LOGIC_VECTOR (1 downto 0);
48  signal agg_result_fu_110_p3 : STD_LOGIC_VECTOR (1 downto 0);
49  signal agg_result_fu_110_p5 : STD_LOGIC_VECTOR (1 downto 0);
50  signal agg_result_fu_110_p7 : STD_LOGIC_VECTOR (1 downto 0);
51  signal ap_ce_reg : STD_LOGIC;
52 
53  component BDTModel_sparsemux_9_2_6_1_1 IS
54  generic (
55  ID : INTEGER;
56  NUM_STAGE : INTEGER;
57  CASE0 : STD_LOGIC_VECTOR (1 downto 0);
58  din0_WIDTH : INTEGER;
59  CASE1 : STD_LOGIC_VECTOR (1 downto 0);
60  din1_WIDTH : INTEGER;
61  CASE2 : STD_LOGIC_VECTOR (1 downto 0);
62  din2_WIDTH : INTEGER;
63  CASE3 : STD_LOGIC_VECTOR (1 downto 0);
64  din3_WIDTH : INTEGER;
65  def_WIDTH : INTEGER;
66  sel_WIDTH : INTEGER;
67  dout_WIDTH : INTEGER );
68  port (
69  din0 : IN STD_LOGIC_VECTOR (5 downto 0);
70  din1 : IN STD_LOGIC_VECTOR (5 downto 0);
71  din2 : IN STD_LOGIC_VECTOR (5 downto 0);
72  din3 : IN STD_LOGIC_VECTOR (5 downto 0);
73  def : IN STD_LOGIC_VECTOR (5 downto 0);
74  sel : IN STD_LOGIC_VECTOR (1 downto 0);
75  dout : OUT STD_LOGIC_VECTOR (5 downto 0) );
76  end component;
77 
78 
79 
80 begin
81  sparsemux_9_2_6_1_1_U39 : component BDTModel_sparsemux_9_2_6_1_1
82  generic map (
83  ID => 1,
84  NUM_STAGE => 1,
85  CASE0 => "00",
86  din0_WIDTH => 6,
87  CASE1 => "01",
88  din1_WIDTH => 6,
89  CASE2 => "10",
90  din2_WIDTH => 6,
91  CASE3 => "11",
92  din3_WIDTH => 6,
93  def_WIDTH => 6,
94  sel_WIDTH => 2,
95  dout_WIDTH => 6)
96  port map (
97  din0 => ap_const_lv6_25,
98  din1 => ap_const_lv6_29,
99  din2 => ap_const_lv6_2E,
100  din3 => ap_const_lv6_21,
101  def => agg_result_fu_110_p9,
102  sel => agg_result_fu_110_p10,
103  dout => agg_result_fu_110_p11);
104 
105 
106 
107 
108  activation_35_fu_66_p2 <= (comparison_fu_54_p2 xor ap_const_lv1_1);
109  activation_fu_72_p2 <= (comparison_18_fu_60_p2 and activation_35_fu_66_p2);
110  agg_result_fu_110_p10 <=
111  select_ln170_fu_94_p3 when (or_ln170_fu_88_p2(0) = '1') else
112  ap_const_lv2_3;
113  agg_result_fu_110_p9 <= "XXXXXX";
114  ap_ready <= ap_const_logic_1;
115  ap_return <= agg_result_fu_110_p11;
116  comparison_18_fu_60_p2 <= "1" when (unsigned(x_10_val) < unsigned(ap_const_lv16_12)) else "0";
117  comparison_fu_54_p2 <= "1" when (unsigned(x_0_val) < unsigned(ap_const_lv16_105)) else "0";
118  icmp_ln170_fu_78_p2 <= "1" when (unsigned(x_0_val) > unsigned(ap_const_lv16_C9)) else "0";
119  or_ln170_fu_88_p2 <= (comparison_fu_54_p2 or activation_fu_72_p2);
120  select_ln170_fu_94_p3 <=
121  zext_ln170_fu_84_p1 when (comparison_fu_54_p2(0) = '1') else
122  ap_const_lv2_2;
123  zext_ln170_fu_84_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(icmp_ln170_fu_78_p2),2));
124 end behav;