You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1603 lines
84 KiB
VHDL

-- © IBM Corp. 2020
-- Licensed under the Apache License, Version 2.0 (the "License"), as modified by
-- the terms below; you may not use the files in this repository except in
-- compliance with the License as modified.
-- You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
--
-- Modified Terms:
--
-- 1) For the purpose of the patent license granted to you in Section 3 of the
-- License, the "Work" hereby includes implementations of the work of authorship
-- in physical form.
--
-- 2) Notwithstanding any terms to the contrary in the License, any licenses
-- necessary for implementation of the Work that are available from OpenPOWER
-- via the Power ISA End User License Agreement (EULA) are explicitly excluded
-- hereunder, and may be obtained from OpenPOWER under the terms and conditions
-- of the EULA.
--
-- Unless required by applicable law or agreed to in writing, the reference design
-- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
-- for the specific language governing permissions and limitations under the License.
--
-- Additional rights, including the ability to physically implement a softcore that
-- is compliant with the required sections of the Power ISA Specification, are
-- available at no cost under the terms of the OpenPOWER Power ISA EULA, which can be
-- obtained (along with the Power ISA) here: https://openpowerfoundation.org.
library ieee;
use ieee.std_logic_1164.all ;
library ibm;
use ibm.std_ulogic_support.all;
use ibm.std_ulogic_function_support.all;
use ibm.std_ulogic_ao_support.all;
use ibm.std_ulogic_mux_support.all;
library support;
use support.power_logic_pkg.all;
library tri; use tri.tri_latches_pkg.all;
library clib;
entity fuq_tblmul is
generic( expand_type : integer := 2 ); -- 0 - ibm tech, 1 - other );
port(
vdd :inout power_logic;
gnd :inout power_logic;
x :in std_ulogic_vector(1 to 15); -- rng from lookup (recode)
y :in std_ulogic_vector(7 to 22); -- b operand bits (shift)
z :in std_ulogic_vector(0 to 20); -- estimate from table
-- multiplier output msb comes out at [6]
tbl_sum :out std_ulogic_vector(0 to 36);
tbl_car :out std_ulogic_vector(0 to 35)
);
end fuq_tblmul; -- ENTITY
architecture fuq_tblmul of fuq_tblmul is
constant tiup : std_ulogic := '1';
constant tidn : std_ulogic := '0';
signal sub_adj_lsb, sub_adj_lsb_b :std_ulogic_vector(1 to 7);
signal sub_adj_msb_b :std_ulogic_vector(1 to 7);
signal sub_adj_msb_7x_b, sub_adj_msb_7x, sub_adj_msb_7y :std_ulogic;
signal s_x, s_x2, s_neg :std_ulogic_vector(0 to 7);
signal pp0_0 :std_ulogic_vector( 6 to 24);
signal pp0_1 :std_ulogic_vector( 6 to 26);
signal pp0_2 :std_ulogic_vector( 8 to 28);
signal pp0_3 :std_ulogic_vector(10 to 30);
signal pp0_4 :std_ulogic_vector(12 to 32);
signal pp0_5 :std_ulogic_vector(14 to 34);
signal pp0_6 :std_ulogic_vector(16 to 36);
signal pp0_7 :std_ulogic_vector(17 to 36);
signal pp1_0_sum :std_ulogic_vector(0 to 26);
signal pp1_0_car :std_ulogic_vector(0 to 24);
signal pp1_1_sum :std_ulogic_vector(8 to 32);
signal pp1_1_car :std_ulogic_vector(9 to 30);
signal pp1_2_sum :std_ulogic_vector(14 to 36);
signal pp1_2_car :std_ulogic_vector(15 to 36);
signal pp1_0_car_unused :std_ulogic;
signal pp2_0_sum :std_ulogic_vector(0 to 32);
signal pp2_0_car :std_ulogic_vector(0 to 26);
signal pp2_1_sum :std_ulogic_vector(9 to 36);
signal pp2_1_car :std_ulogic_vector(13 to 36);
signal pp2_0_car_unused :std_ulogic;
signal pp3_0_sum :std_ulogic_vector(0 to 36);
signal pp3_0_ko :std_ulogic_vector(8 to 25);
signal pp3_0_car :std_ulogic_vector(0 to 35);
signal pp3_0_car_unused :std_ulogic;
signal z_b :std_ulogic_vector(0 to 20);
signal unused :std_ulogic;
begin
unused <= pp1_0_car_unused or
pp2_0_car_unused or
pp3_0_car_unused or
pp0_0(23) or
pp0_1(25) or
pp0_2(27) or
pp0_3(29) or
pp0_4(31) or
pp0_5(33) or
pp0_6(35) or
pp1_0_car(23) or
pp1_0_sum(25) or
pp1_1_car(28) or
pp1_1_sum(31) or
pp1_2_car(34) or
pp2_0_car(24) or
pp2_0_sum(31) or
pp2_1_car(30) or
pp2_1_car(34) or
s_neg(0) or
pp1_1_car(29) or
pp1_2_car(35) or
pp2_0_car(25) or
pp2_1_car(35) ;
--=#################################################
--= Booth Decoders
--=#################################################
-- 0 1 2 3 4 5 6 7
-- (x,1) (2,3) (4,5) (6,7) (8,9) (10,11) (12,13) (14,15)
bd0: entity work.fuq_tblmul_bthdcd(fuq_tblmul_bthdcd) port map(
i0 => tidn ,--i--
i1 => x(1) ,--i--
i2 => x(2) ,--i--
s_neg => s_neg(0) ,--o--
s_x => s_x(0) ,--o--
s_x2 => s_x2(0) );--o--
bd1: entity work.fuq_tblmul_bthdcd(fuq_tblmul_bthdcd) port map(
i0 => x(2) ,--i--
i1 => x(3) ,--i--
i2 => x(4) ,--i--
s_neg => s_neg(1) ,--o--
s_x => s_x(1) ,--o--
s_x2 => s_x2(1) );--o--
bd2: entity work.fuq_tblmul_bthdcd(fuq_tblmul_bthdcd) port map(
i0 => x(4) ,--i--
i1 => x(5) ,--i--
i2 => x(6) ,--i--
s_neg => s_neg(2) ,--o--
s_x => s_x(2) ,--o--
s_x2 => s_x2(2) );--o--
bd3: entity work.fuq_tblmul_bthdcd(fuq_tblmul_bthdcd) port map(
i0 => x(6) ,--i--
i1 => x(7) ,--i--
i2 => x(8) ,--i--
s_neg => s_neg(3) ,--o--
s_x => s_x(3) ,--o--
s_x2 => s_x2(3) );--o--
bd4: entity work.fuq_tblmul_bthdcd(fuq_tblmul_bthdcd) port map(
i0 => x(8) ,--i--
i1 => x(9) ,--i--
i2 => x(10) ,--i--
s_neg => s_neg(4) ,--o--
s_x => s_x(4) ,--o--
s_x2 => s_x2(4) );--o--
bd5: entity work.fuq_tblmul_bthdcd(fuq_tblmul_bthdcd) port map(
i0 => x(10) ,--i--
i1 => x(11) ,--i--
i2 => x(12) ,--i--
s_neg => s_neg(5) ,--o--
s_x => s_x(5) ,--o--
s_x2 => s_x2(5) );--o--
bd6: entity work.fuq_tblmul_bthdcd(fuq_tblmul_bthdcd) port map(
i0 => x(12) ,--i--
i1 => x(13) ,--i--
i2 => x(14) ,--i--
s_neg => s_neg(6) ,--o--
s_x => s_x(6) ,--o--
s_x2 => s_x2(6) );--o--
bd7: entity work.fuq_tblmul_bthdcd(fuq_tblmul_bthdcd) port map(
i0 => x(14) ,--i--
i1 => x(15) ,--i--
i2 => tidn ,--i--
s_neg => s_neg(7) ,--o--
s_x => s_x(7) ,--o--
s_x2 => s_x2(7) );--o--
--=###############################################################
--= booth muxes
--=###############################################################
--= NUMBERING SYSTEM RELATIVE TO COMPRESSOR TREE
--=
--= 00000000000000000000000000000000000000
--= 00000000001111111111222222222233333333
--= 01234567890123456789012345678901234567
--= 0 .......DddddddddddddddddD0s................
--= 1 .......1aDddddddddddddddddD0s..............
--= 2 .........1aDddddddddddddddddD0s............
--= 3 ...........1aDddddddddddddddddD0s..........
--= 4 .............1aDddddddddddddddddD0s........
--= 5 ...............1aDddddddddddddddddD0s......
--= 6 .................1aDddddddddddddddddD0s....
--= 7 ..................assDddddddddddddddddD....
--= EST dddddddddddddddddddd (the ass from sgnXtd.7 is already added into the est.
--=
--=############################
--= want (est - mult )
--= will calc -(r - e) = -(r + !e + 1)
--= = -(r + !e) -1
--= = !(r + !e) + 1 - 1
--= = !(r + !e)
--= = !(R + ASS + !e) ... seperate out the overlapping SGNxtd piece
--= = !(R + (ASS + !e)) .... invert the final adder output
--=
--= table estimate will be : ADD !e + 100
--= SUB !e + 011
--=
--= more "0" in table if read out POS version of est, then invert
--=
--= !e + adj = -e -1 + adj
--= = -(e +1 -adj)
--= = -(e -adj) -1
--= = !(e -adj) +1 -1
--= = !(e -adj) ... invert the table input
sa1_1_lsb: sub_adj_lsb_b(1) <= not( s_neg(1) and ( s_x(1) or s_x2(1) ) );
sa2_1_lsb: sub_adj_lsb_b(2) <= not( s_neg(2) and ( s_x(2) or s_x2(2) ) );
sa3_1_lsb: sub_adj_lsb_b(3) <= not( s_neg(3) and ( s_x(3) or s_x2(3) ) );
sa4_1_lsb: sub_adj_lsb_b(4) <= not( s_neg(4) and ( s_x(4) or s_x2(4) ) );
sa5_1_lsb: sub_adj_lsb_b(5) <= not( s_neg(5) and ( s_x(5) or s_x2(5) ) );
sa6_1_lsb: sub_adj_lsb_b(6) <= not( s_neg(6) and ( s_x(6) or s_x2(6) ) );
sa7_1_lsb: sub_adj_lsb_b(7) <= not( s_neg(7) and ( s_x(7) or s_x2(7) ) );
sa1_2_lsb: sub_adj_lsb (1) <= not sub_adj_lsb_b(1);
sa2_2_lsb: sub_adj_lsb (2) <= not sub_adj_lsb_b(2);
sa3_2_lsb: sub_adj_lsb (3) <= not sub_adj_lsb_b(3);
sa4_2_lsb: sub_adj_lsb (4) <= not sub_adj_lsb_b(4);
sa5_2_lsb: sub_adj_lsb (5) <= not sub_adj_lsb_b(5);
sa6_2_lsb: sub_adj_lsb (6) <= not sub_adj_lsb_b(6);
sa7_2_lsb: sub_adj_lsb (7) <= not sub_adj_lsb_b(7);
sa1_1_msb: sub_adj_msb_b(1) <= not( s_neg(1) and ( s_x(1) or s_x2(1) ) );
sa2_1_msb: sub_adj_msb_b(2) <= not( s_neg(2) and ( s_x(2) or s_x2(2) ) );
sa3_1_msb: sub_adj_msb_b(3) <= not( s_neg(3) and ( s_x(3) or s_x2(3) ) );
sa4_1_msb: sub_adj_msb_b(4) <= not( s_neg(4) and ( s_x(4) or s_x2(4) ) );
sa5_1_msb: sub_adj_msb_b(5) <= not( s_neg(5) and ( s_x(5) or s_x2(5) ) );
sa6_1_msb: sub_adj_msb_b(6) <= not( s_neg(6) and ( s_x(6) or s_x2(6) ) );
sa7_1_msb: sub_adj_msb_b(7) <= not( s_neg(7) and ( s_x(7) or s_x2(7) ) );
sa7x_1_msb: sub_adj_msb_7x_b <= not( s_neg(7) and ( s_x(7) or s_x2(7) ) );
sa7x_2_msb: sub_adj_msb_7x <= not sub_adj_msb_7x_b ;
sa7y_2_msb: sub_adj_msb_7y <= not sub_adj_msb_7x_b ;
bm0: entity work.fuq_tblmul_bthrow(fuq_tblmul_bthrow) port map(
s_neg => tidn ,--i-- (tidn) msb term is never sub
s_x => s_x(0) ,--i--
s_x2 => s_x2(0) ,--i--
x => y(7 to 22) ,--i--
q => pp0_0(6 to 22) );--o--
pp0_0(23) <= tidn;
pp0_0(24) <= sub_adj_lsb(1);
pp0_1(6) <= tiup;
pp0_1(7) <= sub_adj_msb_b(1);
bm1: entity work.fuq_tblmul_bthrow(fuq_tblmul_bthrow) port map(
s_neg => s_neg(1) ,--i--
s_x => s_x(1) ,--i--
s_x2 => s_x2(1) ,--i--
x => y(7 to 22) ,--i--
q => pp0_1(8 to 24) );--o--
pp0_1(25) <= tidn;
pp0_1(26) <= sub_adj_lsb(2);
pp0_2(8) <= tiup;
pp0_2(9) <= sub_adj_msb_b(2);
bm2: entity work.fuq_tblmul_bthrow(fuq_tblmul_bthrow) port map(
s_neg => s_neg(2) ,--i--
s_x => s_x(2) ,--i--
s_x2 => s_x2(2) ,--i--
x => y(7 to 22) ,--i--
q => pp0_2(10 to 26) );--o--
pp0_2(27) <= tidn;
pp0_2(28) <= sub_adj_lsb(3);
pp0_3(10) <= tiup;
pp0_3(11) <= sub_adj_msb_b(3);
bm3: entity work.fuq_tblmul_bthrow(fuq_tblmul_bthrow) port map(
s_neg => s_neg(3) ,--i--
s_x => s_x(3) ,--i--
s_x2 => s_x2(3) ,--i--
x => y(7 to 22) ,--i--
q => pp0_3(12 to 28) );--o--
pp0_3(29) <= tidn;
pp0_3(30) <= sub_adj_lsb(4);
pp0_4(12) <= tiup;
pp0_4(13) <= sub_adj_msb_b(4);
bm4: entity work.fuq_tblmul_bthrow(fuq_tblmul_bthrow) port map(
s_neg => s_neg(4) ,--i--
s_x => s_x(4) ,--i--
s_x2 => s_x2(4) ,--i--
x => y(7 to 22) ,--i--
q => pp0_4(14 to 30) );--o--
pp0_4(31) <= tidn;
pp0_4(32) <= sub_adj_lsb(5);
pp0_5(14) <= tiup;
pp0_5(15) <= sub_adj_msb_b(5);
bm5: entity work.fuq_tblmul_bthrow(fuq_tblmul_bthrow) port map(
s_neg => s_neg(5) ,--i--
s_x => s_x(5) ,--i--
s_x2 => s_x2(5) ,--i--
x => y(7 to 22) ,--i--
q => pp0_5(16 to 32) );--o--
pp0_5(33) <= tidn;
pp0_5(34) <= sub_adj_lsb(6);
pp0_6(16) <= tiup;
pp0_6(17) <= sub_adj_msb_b(6);
bm6: entity work.fuq_tblmul_bthrow(fuq_tblmul_bthrow) port map(
s_neg => s_neg(6) ,--i--
s_x => s_x(6) ,--i--
s_x2 => s_x2(6) ,--i--
x => y(7 to 22) ,--i--
q => pp0_6(18 to 34) );--o--
pp0_6(35) <= tidn;
pp0_6(36) <= sub_adj_lsb(7);
pp0_7(17) <= sub_adj_msb_b(7);
pp0_7(18) <= sub_adj_msb_7x;
pp0_7(19) <= sub_adj_msb_7y;
bm7: entity work.fuq_tblmul_bthrow(fuq_tblmul_bthrow) port map(
s_neg => s_neg(7) ,--i--
s_x => s_x(7) ,--i--
s_x2 => s_x2(7) ,--i--
x => y(7 to 22) ,--i--
q => pp0_7(20 to 36) );--o--
--=####################################################################
--=# compressor tree level 1
--=####################################################################
--= 0 1 2 3
--= 0123456789012345678901234567890123456
--==-------------------------------------
-- ddddddddddddddddddddd________________
-- 111111ddddddddddddddddd_S____________ bm0
-- ______1addddddddddddddddd_S__________ bm1
-- ________1addddddddddddddddd_S________ bm2
-- __________1addddddddddddddddd_S______ bm3
-- ____________1addddddddddddddddd_S____ bm4
-- ______________1addddddddddddddddd_S__ bm5
-- ________________1addddddddddddddddd_S bm6
-- _________________assddddddddddddddddd bm7
--= 0 1 2 3
--= 0123456789012345678901234567890123456
--==-------------------------------------
-- ddddddddddddddddddddd________________
-- 111111ddddddddddddddddd_S____________ bm0
-- ______1addddddddddddddddd_S__________ bm1
-- 111111333333333333333221201
-- sssssssssssssssssssssssss_s pp1_0_sum
-- ccccccccccccccccccccccc_c__ pp1_0_car
--= 0 1 2 3
--= 0123456789012345678901234567890123456
--==-------------------------------------
-- ________1addddddddddddddddd_S________ bm2
-- __________1addddddddddddddddd_S______ bm3
-- ____________1addddddddddddddddd_S____ bm4
-- 1122333333333333333231201
-- ________sssssssssssssssssssssss_s pp1_1_sum
-- _ccccccccccccccccccc__c__ pp1_1_car
--= 0 1 2 3
--= 0123456789012345678901234567890123456
--==-------------------------------------
-- ______________1addddddddddddddddd_S__ bm5
-- ________________1addddddddddddddddd_S bm6
-- _________________assddddddddddddddddd bm7
-- 11233333333333333332312
-- sssssssssssssssssssssss pp1_2_sum
-- _ccccccccccccccccccc__c pp1_2_car
z_b(0 to 20) <= not z(0 to 20);
--======================================================
--== compressor level 1 , row 0
--======================================================
pp1_0_sum(26) <= pp0_1(26) ;
pp1_0_sum(25) <= tidn ;
pp1_0_sum(24) <= pp0_0(24) ;
pp1_0_car(24) <= pp0_1(24) ;
pp1_0_sum(23) <= pp0_1(23) ;
pp1_0_car(23) <= tidn ;
pp1_0_sum(22) <= pp0_0(22) ;
pp1_0_car(22) <= pp0_1(22) ;
pp1_0_sum(21) <= pp0_0(21) ;
pp1_0_car(21) <= pp0_1(21) ;
pp1_0_car(20) <= tidn ;
pp1_0_csa_20: entity clib.c_prism_csa32 port map( -- MLT32_X1_A12TH
vd => vdd,
gd => gnd,
a => z_b(20) ,--i--
b => pp0_0(20) ,--i--
c => pp0_1(20) ,--i--
sum => pp1_0_sum(20) ,--o--
car => pp1_0_car(19) );--o--
pp1_0_csa_19: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => z_b(19) ,--i--
b => pp0_0(19) ,--i--
c => pp0_1(19) ,--i--
sum => pp1_0_sum(19) ,--o--
car => pp1_0_car(18) );--o--
pp1_0_csa_18: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => z_b(18) ,--i--
b => pp0_0(18) ,--i--
c => pp0_1(18) ,--i--
sum => pp1_0_sum(18) ,--o--
car => pp1_0_car(17) );--o--
pp1_0_csa_17: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => z_b(17) ,--i--
b => pp0_0(17) ,--i--
c => pp0_1(17) ,--i--
sum => pp1_0_sum(17) ,--o--
car => pp1_0_car(16) );--o--
pp1_0_csa_16: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => z_b(16) ,--i--
b => pp0_0(16) ,--i--
c => pp0_1(16) ,--i--
sum => pp1_0_sum(16) ,--o--
car => pp1_0_car(15) );--o--
pp1_0_csa_15: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => z_b(15) ,--i--
b => pp0_0(15) ,--i--
c => pp0_1(15) ,--i--
sum => pp1_0_sum(15) ,--o--
car => pp1_0_car(14) );--o--
pp1_0_csa_14: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => z_b(14) ,--i--
b => pp0_0(14) ,--i--
c => pp0_1(14) ,--i--
sum => pp1_0_sum(14) ,--o--
car => pp1_0_car(13) );--o--
pp1_0_csa_13: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => z_b(13) ,--i--
b => pp0_0(13) ,--i--
c => pp0_1(13) ,--i--
sum => pp1_0_sum(13) ,--o--
car => pp1_0_car(12) );--o--
pp1_0_csa_12: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => z_b(12) ,--i--
b => pp0_0(12) ,--i--
c => pp0_1(12) ,--i--
sum => pp1_0_sum(12) ,--o--
car => pp1_0_car(11) );--o--
pp1_0_csa_11: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => z_b(11) ,--i--
b => pp0_0(11) ,--i--
c => pp0_1(11) ,--i--
sum => pp1_0_sum(11) ,--o--
car => pp1_0_car(10) );--o--
pp1_0_csa_10: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => z_b(10) ,--i--
b => pp0_0(10) ,--i--
c => pp0_1(10) ,--i--
sum => pp1_0_sum(10) ,--o--
car => pp1_0_car(9) );--o--
pp1_0_csa_9: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => z_b(9) ,--i--
b => pp0_0(9) ,--i--
c => pp0_1(9) ,--i--
sum => pp1_0_sum(9) ,--o--
car => pp1_0_car(8) );--o--
pp1_0_csa_8: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => z_b(8) ,--i--
b => pp0_0(8) ,--i--
c => pp0_1(8) ,--i--
sum => pp1_0_sum(8) ,--o--
car => pp1_0_car(7) );--o--
pp1_0_csa_7: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => z_b(7) ,--i--
b => pp0_0(7) ,--i--
c => pp0_1(7) ,--i--
sum => pp1_0_sum(7) ,--o--
car => pp1_0_car(6) );--o--
pp1_0_csa_6: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => z_b(6) ,--i--
b => pp0_0(6) ,--i--
c => pp0_1(6) ,--i--
sum => pp1_0_sum(6) ,--o--
car => pp1_0_car(5) );--o--
pp1_0_csa_5: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => z_b(5) ,--i--
b => tiup ,--i--
sum => pp1_0_sum(5) ,--o--
car => pp1_0_car(4) );--o--
pp1_0_csa_4: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => z_b(4) ,--i--
b => tiup ,--i--
sum => pp1_0_sum(4) ,--o--
car => pp1_0_car(3) );--o--
pp1_0_csa_3: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => z_b(3) ,--i--
b => tiup ,--i--
sum => pp1_0_sum(3) ,--o--
car => pp1_0_car(2) );--o--
pp1_0_csa_2: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => z_b(2) ,--i--
b => tiup ,--i--
sum => pp1_0_sum(2) ,--o--
car => pp1_0_car(1) );--o--
pp1_0_csa_1: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => z_b(1) ,--i--
b => tiup ,--i--
sum => pp1_0_sum(1) ,--o--
car => pp1_0_car(0) );--o--
pp1_0_csa_0: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => z_b(0) ,--i--
b => tiup ,--i--
sum => pp1_0_sum(0) ,--o--
car => pp1_0_car_unused );--o--
--======================================================
--== compressor level 1 , row 1
--======================================================
pp1_1_sum(32) <= pp0_4(32) ;
pp1_1_sum(31) <= tidn ;
pp1_1_sum(30) <= pp0_3(30) ;
pp1_1_car(30) <= pp0_4(30) ;
pp1_1_sum(29) <= pp0_4(29) ;
pp1_1_car(29) <= tidn ;
pp1_1_car(28) <= tidn ;
pp1_1_csa_28: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(28) ,--i--
b => pp0_3(28) ,--i--
c => pp0_4(28) ,--i--
sum => pp1_1_sum(28) ,--o--
car => pp1_1_car(27) );--o--
pp1_1_csa_27: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp0_3(27) ,--i--
b => pp0_4(27) ,--i--
sum => pp1_1_sum(27) ,--o--
car => pp1_1_car(26) );--o--
pp1_1_csa_26: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(26) ,--i--
b => pp0_3(26) ,--i--
c => pp0_4(26) ,--i--
sum => pp1_1_sum(26) ,--o--
car => pp1_1_car(25) );--o--
pp1_1_csa_25: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(25) ,--i--
b => pp0_3(25) ,--i--
c => pp0_4(25) ,--i--
sum => pp1_1_sum(25) ,--o--
car => pp1_1_car(24) );--o--
pp1_1_csa_24: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(24) ,--i--
b => pp0_3(24) ,--i--
c => pp0_4(24) ,--i--
sum => pp1_1_sum(24) ,--o--
car => pp1_1_car(23) );--o--
pp1_1_csa_23: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(23) ,--i--
b => pp0_3(23) ,--i--
c => pp0_4(23) ,--i--
sum => pp1_1_sum(23) ,--o--
car => pp1_1_car(22) );--o--
pp1_1_csa_22: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(22) ,--i--
b => pp0_3(22) ,--i--
c => pp0_4(22) ,--i--
sum => pp1_1_sum(22) ,--o--
car => pp1_1_car(21) );--o--
pp1_1_csa_21: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(21) ,--i--
b => pp0_3(21) ,--i--
c => pp0_4(21) ,--i--
sum => pp1_1_sum(21) ,--o--
car => pp1_1_car(20) );--o--
pp1_1_csa_20: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(20) ,--i--
b => pp0_3(20) ,--i--
c => pp0_4(20) ,--i--
sum => pp1_1_sum(20) ,--o--
car => pp1_1_car(19) );--o--
pp1_1_csa_19: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(19) ,--i--
b => pp0_3(19) ,--i--
c => pp0_4(19) ,--i--
sum => pp1_1_sum(19) ,--o--
car => pp1_1_car(18) );--o--
pp1_1_csa_18: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(18) ,--i--
b => pp0_3(18) ,--i--
c => pp0_4(18) ,--i--
sum => pp1_1_sum(18) ,--o--
car => pp1_1_car(17) );--o--
pp1_1_csa_17: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(17) ,--i--
b => pp0_3(17) ,--i--
c => pp0_4(17) ,--i--
sum => pp1_1_sum(17) ,--o--
car => pp1_1_car(16) );--o--
pp1_1_csa_16: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(16) ,--i--
b => pp0_3(16) ,--i--
c => pp0_4(16) ,--i--
sum => pp1_1_sum(16) ,--o--
car => pp1_1_car(15) );--o--
pp1_1_csa_15: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(15) ,--i--
b => pp0_3(15) ,--i--
c => pp0_4(15) ,--i--
sum => pp1_1_sum(15) ,--o--
car => pp1_1_car(14) );--o--
pp1_1_csa_14: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(14) ,--i--
b => pp0_3(14) ,--i--
c => pp0_4(14) ,--i--
sum => pp1_1_sum(14) ,--o--
car => pp1_1_car(13) );--o--
pp1_1_csa_13: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(13) ,--i--
b => pp0_3(13) ,--i--
c => pp0_4(13) ,--i--
sum => pp1_1_sum(13) ,--o--
car => pp1_1_car(12) );--o--
pp1_1_csa_12: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_2(12) ,--i--
b => pp0_3(12) ,--i--
c => pp0_4(12) ,--i--
sum => pp1_1_sum(12) ,--o--
car => pp1_1_car(11) );--o--
pp1_1_csa_11: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp0_2(11) ,--i--
b => pp0_3(11) ,--i--
sum => pp1_1_sum(11) ,--o--
car => pp1_1_car(10) );--o--
pp1_1_csa_10: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp0_2(10) ,--i--
b => pp0_3(10) ,--i--
sum => pp1_1_sum(10) ,--o--
car => pp1_1_car(9) );--o--
pp1_1_sum(9) <= pp0_2(9) ;
pp1_1_sum(8) <= pp0_2(8) ;
--======================================================
--== compressor level 1 , row 2
--======================================================
pp1_2_sum(36) <= pp0_6(36) ;
pp1_2_car(36) <= pp0_7(36) ;
pp1_2_sum(35) <= pp0_7(35) ;
pp1_2_car(35) <= tidn ;
pp1_2_car(34) <= tidn ;
pp1_2_csa_34: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(34) ,--i--
b => pp0_6(34) ,--i--
c => pp0_7(34) ,--i--
sum => pp1_2_sum(34) ,--o--
car => pp1_2_car(33) );--o--
pp1_2_csa_33: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp0_6(33) ,--i--
b => pp0_7(33) ,--i--
sum => pp1_2_sum(33) ,--o--
car => pp1_2_car(32) );--o--
pp1_2_csa_32: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(32) ,--i--
b => pp0_6(32) ,--i--
c => pp0_7(32) ,--i--
sum => pp1_2_sum(32) ,--o--
car => pp1_2_car(31) );--o--
pp1_2_csa_31: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(31) ,--i--
b => pp0_6(31) ,--i--
c => pp0_7(31) ,--i--
sum => pp1_2_sum(31) ,--o--
car => pp1_2_car(30) );--o--
pp1_2_csa_30: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(30) ,--i--
b => pp0_6(30) ,--i--
c => pp0_7(30) ,--i--
sum => pp1_2_sum(30) ,--o--
car => pp1_2_car(29) );--o--
pp1_2_csa_29: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(29) ,--i--
b => pp0_6(29) ,--i--
c => pp0_7(29) ,--i--
sum => pp1_2_sum(29) ,--o--
car => pp1_2_car(28) );--o--
pp1_2_csa_28: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(28) ,--i--
b => pp0_6(28) ,--i--
c => pp0_7(28) ,--i--
sum => pp1_2_sum(28) ,--o--
car => pp1_2_car(27) );--o--
pp1_2_csa_27: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(27) ,--i--
b => pp0_6(27) ,--i--
c => pp0_7(27) ,--i--
sum => pp1_2_sum(27) ,--o--
car => pp1_2_car(26) );--o--
pp1_2_csa_26: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(26) ,--i--
b => pp0_6(26) ,--i--
c => pp0_7(26) ,--i--
sum => pp1_2_sum(26) ,--o--
car => pp1_2_car(25) );--o--
pp1_2_csa_25: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(25) ,--i--
b => pp0_6(25) ,--i--
c => pp0_7(25) ,--i--
sum => pp1_2_sum(25) ,--o--
car => pp1_2_car(24) );--o--
pp1_2_csa_24: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(24) ,--i--
b => pp0_6(24) ,--i--
c => pp0_7(24) ,--i--
sum => pp1_2_sum(24) ,--o--
car => pp1_2_car(23) );--o--
pp1_2_csa_23: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(23) ,--i--
b => pp0_6(23) ,--i--
c => pp0_7(23) ,--i--
sum => pp1_2_sum(23) ,--o--
car => pp1_2_car(22) );--o--
pp1_2_csa_22: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(22) ,--i--
b => pp0_6(22) ,--i--
c => pp0_7(22) ,--i--
sum => pp1_2_sum(22) ,--o--
car => pp1_2_car(21) );--o--
pp1_2_csa_21: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(21) ,--i--
b => pp0_6(21) ,--i--
c => pp0_7(21) ,--i--
sum => pp1_2_sum(21) ,--o--
car => pp1_2_car(20) );--o--
pp1_2_csa_20: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(20) ,--i--
b => pp0_6(20) ,--i--
c => pp0_7(20) ,--i--
sum => pp1_2_sum(20) ,--o--
car => pp1_2_car(19) );--o--
pp1_2_csa_19: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(19) ,--i--
b => pp0_6(19) ,--i--
c => pp0_7(19) ,--i--
sum => pp1_2_sum(19) ,--o--
car => pp1_2_car(18) );--o--
pp1_2_csa_18: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(18) ,--i--
b => pp0_6(18) ,--i--
c => pp0_7(18) ,--i--
sum => pp1_2_sum(18) ,--o--
car => pp1_2_car(17) );--o--
pp1_2_csa_17: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp0_5(17) ,--i--
b => pp0_6(17) ,--i--
c => pp0_7(17) ,--i--
sum => pp1_2_sum(17) ,--o--
car => pp1_2_car(16) );--o--
pp1_2_csa_16: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp0_5(16) ,--i--
b => pp0_6(16) ,--i--
sum => pp1_2_sum(16) ,--o--
car => pp1_2_car(15) );--o--
pp1_2_sum(15) <= pp0_5(15) ;
pp1_2_sum(14) <= pp0_5(14) ;
--=####################################################################
--=# compressor tree level 2
--=####################################################################
--= 0 1 2 3
--= 0123456789012345678901234567890123456
--==-------------------------------------
-- sssssssssssssssssssssssss_s______ pp1_0_sum
-- ccccccccccccccccccccccc_c________ pp1_0_car
-- ________sssssssssssssssssssssss_s pp1_1_sum
-- 222222223333333333333332312111101
-- sssssssssssssssssssssssssssssss_s pp2_0_sum
-- cccccccccccccccccccccccc__c pp2_0_car
--= 0 1 2 3
--= 0123456789012345678901234567890123456
--==-------------------------------------
-- _________ccccccccccccccccccc__c______ pp1_1_car
-- ______________sssssssssssssssssssssss pp1_2_sum
-- _______________ccccccccccccccccccc__c pp1_2_car
-- 1111123333333333333223222112
-- ssssssssssssssssssssssssssss pp2_1_sum
-- ccccccccccccccccc_ccc__c pp2_1_car
--======================================================
--== compressor level 2 , row 0
--======================================================
pp2_0_sum(32) <= pp1_1_sum(32) ;
pp2_0_sum(31) <= tidn ;
pp2_0_sum(30) <= pp1_1_sum(30) ;
pp2_0_sum(29) <= pp1_1_sum(29) ;
pp2_0_sum(28) <= pp1_1_sum(28) ;
pp2_0_sum(27) <= pp1_1_sum(27) ;
pp2_0_sum(26) <= pp1_0_sum(26) ;
pp2_0_car(26) <= pp1_1_sum(26) ;
pp2_0_sum(25) <= pp1_1_sum(25) ;
pp2_0_car(25) <= tidn ;
pp2_0_car(24) <= tidn ;
pp2_0_csa_24: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(24) ,--i--
b => pp1_0_car(24) ,--i--
c => pp1_1_sum(24) ,--i--
sum => pp2_0_sum(24) ,--o--
car => pp2_0_car(23) );--o--
pp2_0_csa_23: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp1_0_sum(23) ,--i--
b => pp1_1_sum(23) ,--i--
sum => pp2_0_sum(23) ,--o--
car => pp2_0_car(22) );--o--
pp2_0_csa_22: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(22) ,--i--
b => pp1_0_car(22) ,--i--
c => pp1_1_sum(22) ,--i--
sum => pp2_0_sum(22) ,--o--
car => pp2_0_car(21) );--o--
pp2_0_csa_21: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(21) ,--i--
b => pp1_0_car(21) ,--i--
c => pp1_1_sum(21) ,--i--
sum => pp2_0_sum(21) ,--o--
car => pp2_0_car(20) );--o--
pp2_0_csa_20: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(20) ,--i--
b => pp1_0_car(20) ,--i--
c => pp1_1_sum(20) ,--i--
sum => pp2_0_sum(20) ,--o--
car => pp2_0_car(19) );--o--
pp2_0_csa_19: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(19) ,--i--
b => pp1_0_car(19) ,--i--
c => pp1_1_sum(19) ,--i--
sum => pp2_0_sum(19) ,--o--
car => pp2_0_car(18) );--o--
pp2_0_csa_18: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(18) ,--i--
b => pp1_0_car(18) ,--i--
c => pp1_1_sum(18) ,--i--
sum => pp2_0_sum(18) ,--o--
car => pp2_0_car(17) );--o--
pp2_0_csa_17: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(17) ,--i--
b => pp1_0_car(17) ,--i--
c => pp1_1_sum(17) ,--i--
sum => pp2_0_sum(17) ,--o--
car => pp2_0_car(16) );--o--
pp2_0_csa_16: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(16) ,--i--
b => pp1_0_car(16) ,--i--
c => pp1_1_sum(16) ,--i--
sum => pp2_0_sum(16) ,--o--
car => pp2_0_car(15) );--o--
pp2_0_csa_15: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(15) ,--i--
b => pp1_0_car(15) ,--i--
c => pp1_1_sum(15) ,--i--
sum => pp2_0_sum(15) ,--o--
car => pp2_0_car(14) );--o--
pp2_0_csa_14: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(14) ,--i--
b => pp1_0_car(14) ,--i--
c => pp1_1_sum(14) ,--i--
sum => pp2_0_sum(14) ,--o--
car => pp2_0_car(13) );--o--
pp2_0_csa_13: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(13) ,--i--
b => pp1_0_car(13) ,--i--
c => pp1_1_sum(13) ,--i--
sum => pp2_0_sum(13) ,--o--
car => pp2_0_car(12) );--o--
pp2_0_csa_12: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(12) ,--i--
b => pp1_0_car(12) ,--i--
c => pp1_1_sum(12) ,--i--
sum => pp2_0_sum(12) ,--o--
car => pp2_0_car(11) );--o--
pp2_0_csa_11: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(11) ,--i--
b => pp1_0_car(11) ,--i--
c => pp1_1_sum(11) ,--i--
sum => pp2_0_sum(11) ,--o--
car => pp2_0_car(10) );--o--
pp2_0_csa_10: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(10) ,--i--
b => pp1_0_car(10) ,--i--
c => pp1_1_sum(10) ,--i--
sum => pp2_0_sum(10) ,--o--
car => pp2_0_car(9) );--o--
pp2_0_csa_9: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(9) ,--i--
b => pp1_0_car(9) ,--i--
c => pp1_1_sum(9) ,--i--
sum => pp2_0_sum(9) ,--o--
car => pp2_0_car(8) );--o--
pp2_0_csa_8: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_0_sum(8) ,--i--
b => pp1_0_car(8) ,--i--
c => pp1_1_sum(8) ,--i--
sum => pp2_0_sum(8) ,--o--
car => pp2_0_car(7) );--o--
pp2_0_csa_7: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp1_0_sum(7) ,--i--
b => pp1_0_car(7) ,--i--
sum => pp2_0_sum(7) ,--o--
car => pp2_0_car(6) );--o--
pp2_0_csa_6: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp1_0_sum(6) ,--i--
b => pp1_0_car(6) ,--i--
sum => pp2_0_sum(6) ,--o--
car => pp2_0_car(5) );--o--
pp2_0_csa_5: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp1_0_sum(5) ,--i--
b => pp1_0_car(5) ,--i--
sum => pp2_0_sum(5) ,--o--
car => pp2_0_car(4) );--o--
pp2_0_csa_4: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp1_0_sum(4) ,--i--
b => pp1_0_car(4) ,--i--
sum => pp2_0_sum(4) ,--o--
car => pp2_0_car(3) );--o--
pp2_0_csa_3: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp1_0_sum(3) ,--i--
b => pp1_0_car(3) ,--i--
sum => pp2_0_sum(3) ,--o--
car => pp2_0_car(2) );--o--
pp2_0_csa_2: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp1_0_sum(2) ,--i--
b => pp1_0_car(2) ,--i--
sum => pp2_0_sum(2) ,--o--
car => pp2_0_car(1) );--o--
pp2_0_csa_1: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp1_0_sum(1) ,--i--
b => pp1_0_car(1) ,--i--
sum => pp2_0_sum(1) ,--o--
car => pp2_0_car(0) );--o--
pp2_0_csa_0: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp1_0_sum(0) ,--i--
b => pp1_0_car(0) ,--i--
sum => pp2_0_sum(0) ,--o--
car => pp2_0_car_unused );--o--
--======================================================
--== compressor level 2 , row 1
--======================================================
--======================================================
--== compressor level 2 , row 1
--======================================================
pp2_1_sum(36) <= pp1_2_sum(36) ;
pp2_1_car(36) <= pp1_2_car(36) ;
pp2_1_sum(35) <= pp1_2_sum(35) ;
pp2_1_car(35) <= tidn ;
pp2_1_sum(34) <= pp1_2_sum(34) ;
pp2_1_car(34) <= tidn ;
pp2_1_sum(33) <= pp1_2_sum(33) ;
pp2_1_car(33) <= pp1_2_car(33) ;
pp2_1_sum(32) <= pp1_2_sum(32) ;
pp2_1_car(32) <= pp1_2_car(32) ;
pp2_1_sum(31) <= pp1_2_sum(31) ;
pp2_1_car(31) <= pp1_2_car(31) ;
pp2_1_car(30) <= tidn ;
pp2_1_csa_30: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_1_car(30) ,--i--
b => pp1_2_sum(30) ,--i--
c => pp1_2_car(30) ,--i--
sum => pp2_1_sum(30) ,--o--
car => pp2_1_car(29) );--o--
pp2_1_csa_29: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp1_2_sum(29) ,--i--
b => pp1_2_car(29) ,--i--
sum => pp2_1_sum(29) ,--o--
car => pp2_1_car(28) );--o--
pp2_1_csa_28: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp1_2_sum(28) ,--i--
b => pp1_2_car(28) ,--i--
sum => pp2_1_sum(28) ,--o--
car => pp2_1_car(27) );--o--
pp2_1_csa_27: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_1_car(27) ,--i--
b => pp1_2_sum(27) ,--i--
c => pp1_2_car(27) ,--i--
sum => pp2_1_sum(27) ,--o--
car => pp2_1_car(26) );--o--
pp2_1_csa_26: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_1_car(26) ,--i--
b => pp1_2_sum(26) ,--i--
c => pp1_2_car(26) ,--i--
sum => pp2_1_sum(26) ,--o--
car => pp2_1_car(25) );--o--
pp2_1_csa_25: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_1_car(25) ,--i--
b => pp1_2_sum(25) ,--i--
c => pp1_2_car(25) ,--i--
sum => pp2_1_sum(25) ,--o--
car => pp2_1_car(24) );--o--
pp2_1_csa_24: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_1_car(24) ,--i--
b => pp1_2_sum(24) ,--i--
c => pp1_2_car(24) ,--i--
sum => pp2_1_sum(24) ,--o--
car => pp2_1_car(23) );--o--
pp2_1_csa_23: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_1_car(23) ,--i--
b => pp1_2_sum(23) ,--i--
c => pp1_2_car(23) ,--i--
sum => pp2_1_sum(23) ,--o--
car => pp2_1_car(22) );--o--
pp2_1_csa_22: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_1_car(22) ,--i--
b => pp1_2_sum(22) ,--i--
c => pp1_2_car(22) ,--i--
sum => pp2_1_sum(22) ,--o--
car => pp2_1_car(21) );--o--
pp2_1_csa_21: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_1_car(21) ,--i--
b => pp1_2_sum(21) ,--i--
c => pp1_2_car(21) ,--i--
sum => pp2_1_sum(21) ,--o--
car => pp2_1_car(20) );--o--
pp2_1_csa_20: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_1_car(20) ,--i--
b => pp1_2_sum(20) ,--i--
c => pp1_2_car(20) ,--i--
sum => pp2_1_sum(20) ,--o--
car => pp2_1_car(19) );--o--
pp2_1_csa_19: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_1_car(19) ,--i--
b => pp1_2_sum(19) ,--i--
c => pp1_2_car(19) ,--i--
sum => pp2_1_sum(19) ,--o--
car => pp2_1_car(18) );--o--
pp2_1_csa_18: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_1_car(18) ,--i--
b => pp1_2_sum(18) ,--i--
c => pp1_2_car(18) ,--i--
sum => pp2_1_sum(18) ,--o--
car => pp2_1_car(17) );--o--
pp2_1_csa_17: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_1_car(17) ,--i--
b => pp1_2_sum(17) ,--i--
c => pp1_2_car(17) ,--i--
sum => pp2_1_sum(17) ,--o--
car => pp2_1_car(16) );--o--
pp2_1_csa_16: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_1_car(16) ,--i--
b => pp1_2_sum(16) ,--i--
c => pp1_2_car(16) ,--i--
sum => pp2_1_sum(16) ,--o--
car => pp2_1_car(15) );--o--
pp2_1_csa_15: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp1_1_car(15) ,--i--
b => pp1_2_sum(15) ,--i--
c => pp1_2_car(15) ,--i--
sum => pp2_1_sum(15) ,--o--
car => pp2_1_car(14) );--o--
pp2_1_csa_14: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp1_1_car(14) ,--i--
b => pp1_2_sum(14) ,--i--
sum => pp2_1_sum(14) ,--o--
car => pp2_1_car(13) );--o--
pp2_1_sum(13) <= pp1_1_car(13) ;
pp2_1_sum(12) <= pp1_1_car(12) ;
pp2_1_sum(11) <= pp1_1_car(11) ;
pp2_1_sum(10) <= pp1_1_car(10) ;
pp2_1_sum(9) <= pp1_1_car(9) ;
--=####################################################################
--=# compressor tree level 3
--=####################################################################
--= 0 1 2 3
--= 0123456789012345678901234567890123456
--==-------------------------------------
-- sssssssssssssssssssssssssssssss_s pp2_0_sum
-- cccccccccccccccccccccccc__c pp2_0_car
-- ssssssssssssssssssssssssssss pp2_1_sum
-- ccccccccccccccccc_ccc__c pp2_1_car
-- 2222222223333444444444443343332232112
--======================================================
--== compressor level 3 , row 0
--======================================================
pp3_0_csa_36: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp2_1_sum(36) ,--i--
b => pp2_1_car(36) ,--i--
sum => pp3_0_sum(36) ,--o--
car => pp3_0_car(35) );--o--
pp3_0_sum(35) <= pp2_1_sum(35) ;
pp3_0_sum(34) <= pp2_1_sum(34) ;
pp3_0_car(34) <= tidn ;
pp3_0_sum(33) <= pp2_1_sum(33) ;
pp3_0_car(33) <= pp2_1_car(33) ;
pp3_0_car(32) <= tidn ;
pp3_0_csa_32: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(32) ,--i--
b => pp2_1_sum(32) ,--i--
c => pp2_1_car(32) ,--i--
sum => pp3_0_sum(32) ,--o--
car => pp3_0_car(31) );--o--
pp3_0_csa_31: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp2_1_sum(31) ,--i--
b => pp2_1_car(31) ,--i--
sum => pp3_0_sum(31) ,--o--
car => pp3_0_car(30) );--o--
pp3_0_csa_30: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp2_0_sum(30) ,--i--
b => pp2_1_sum(30) ,--i--
sum => pp3_0_sum(30) ,--o--
car => pp3_0_car(29) );--o--
pp3_0_csa_29: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(29) ,--i--
b => pp2_1_sum(29) ,--i--
c => pp2_1_car(29) ,--i--
sum => pp3_0_sum(29) ,--o--
car => pp3_0_car(28) );--o--
pp3_0_csa_28: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(28) ,--i--
b => pp2_1_sum(28) ,--i--
c => pp2_1_car(28) ,--i--
sum => pp3_0_sum(28) ,--o--
car => pp3_0_car(27) );--o--
pp3_0_csa_27: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(27) ,--i--
b => pp2_1_sum(27) ,--i--
c => pp2_1_car(27) ,--i--
sum => pp3_0_sum(27) ,--o--
car => pp3_0_car(26) );--o--
pp3_0_csa_26: entity clib.c_prism_csa42 port map( -- MLT42_X1_A12TH
vd => vdd,
gd => gnd,
a => pp2_0_sum(26) ,--i--
b => pp2_0_car(26) ,--i--
c => pp2_1_sum(26) ,--i--
d => pp2_1_car(26) ,--i--
ki => tidn ,--i--
ko => pp3_0_ko(25) ,--i--
sum => pp3_0_sum(26) ,--o--
car => pp3_0_car(25) );--o--
pp3_0_csa_25: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(25) ,--i--
b => tidn ,--i--
c => pp2_1_sum(25) ,--i--
d => pp2_1_car(25) ,--i--
ki => pp3_0_ko(25) ,--i--
ko => pp3_0_ko(24) ,--i--
sum => pp3_0_sum(25) ,--o--
car => pp3_0_car(24) );--o--
pp3_0_csa_24: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(24) ,--i--
b => tidn ,--i--
c => pp2_1_sum(24) ,--i--
d => pp2_1_car(24) ,--i--
ki => pp3_0_ko(24) ,--i--
ko => pp3_0_ko(23) ,--i--
sum => pp3_0_sum(24) ,--o--
car => pp3_0_car(23) );--o--
pp3_0_csa_23: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(23) ,--i--
b => pp2_0_car(23) ,--i--
c => pp2_1_sum(23) ,--i--
d => pp2_1_car(23) ,--i--
ki => pp3_0_ko(23) ,--i--
ko => pp3_0_ko(22) ,--i--
sum => pp3_0_sum(23) ,--o--
car => pp3_0_car(22) );--o--
pp3_0_csa_22: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(22) ,--i--
b => pp2_0_car(22) ,--i--
c => pp2_1_sum(22) ,--i--
d => pp2_1_car(22) ,--i--
ki => pp3_0_ko(22) ,--i--
ko => pp3_0_ko(21) ,--i--
sum => pp3_0_sum(22) ,--o--
car => pp3_0_car(21) );--o--
pp3_0_csa_21: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(21) ,--i--
b => pp2_0_car(21) ,--i--
c => pp2_1_sum(21) ,--i--
d => pp2_1_car(21) ,--i--
ki => pp3_0_ko(21) ,--i--
ko => pp3_0_ko(20) ,--i--
sum => pp3_0_sum(21) ,--o--
car => pp3_0_car(20) );--o--
pp3_0_csa_20: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(20) ,--i--
b => pp2_0_car(20) ,--i--
c => pp2_1_sum(20) ,--i--
d => pp2_1_car(20) ,--i--
ki => pp3_0_ko(20) ,--i--
ko => pp3_0_ko(19) ,--i--
sum => pp3_0_sum(20) ,--o--
car => pp3_0_car(19) );--o--
pp3_0_csa_19: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(19) ,--i--
b => pp2_0_car(19) ,--i--
c => pp2_1_sum(19) ,--i--
d => pp2_1_car(19) ,--i--
ki => pp3_0_ko(19) ,--i--
ko => pp3_0_ko(18) ,--i--
sum => pp3_0_sum(19) ,--o--
car => pp3_0_car(18) );--o--
pp3_0_csa_18: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(18) ,--i--
b => pp2_0_car(18) ,--i--
c => pp2_1_sum(18) ,--i--
d => pp2_1_car(18) ,--i--
ki => pp3_0_ko(18) ,--i--
ko => pp3_0_ko(17) ,--i--
sum => pp3_0_sum(18) ,--o--
car => pp3_0_car(17) );--o--
pp3_0_csa_17: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(17) ,--i--
b => pp2_0_car(17) ,--i--
c => pp2_1_sum(17) ,--i--
d => pp2_1_car(17) ,--i--
ki => pp3_0_ko(17) ,--i--
ko => pp3_0_ko(16) ,--i--
sum => pp3_0_sum(17) ,--o--
car => pp3_0_car(16) );--o--
pp3_0_csa_16: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(16) ,--i--
b => pp2_0_car(16) ,--i--
c => pp2_1_sum(16) ,--i--
d => pp2_1_car(16) ,--i--
ki => pp3_0_ko(16) ,--i--
ko => pp3_0_ko(15) ,--i--
sum => pp3_0_sum(16) ,--o--
car => pp3_0_car(15) );--o--
pp3_0_csa_15: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(15) ,--i--
b => pp2_0_car(15) ,--i--
c => pp2_1_sum(15) ,--i--
d => pp2_1_car(15) ,--i--
ki => pp3_0_ko(15) ,--i--
ko => pp3_0_ko(14) ,--i--
sum => pp3_0_sum(15) ,--o--
car => pp3_0_car(14) );--o--
pp3_0_csa_14: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(14) ,--i--
b => pp2_0_car(14) ,--i--
c => pp2_1_sum(14) ,--i--
d => pp2_1_car(14) ,--i--
ki => pp3_0_ko(14) ,--i--
ko => pp3_0_ko(13) ,--i--
sum => pp3_0_sum(14) ,--o--
car => pp3_0_car(13) );--o--
pp3_0_csa_13: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(13) ,--i--
b => pp2_0_car(13) ,--i--
c => pp2_1_sum(13) ,--i--
d => pp2_1_car(13) ,--i--
ki => pp3_0_ko(13) ,--i--
ko => pp3_0_ko(12) ,--i--
sum => pp3_0_sum(13) ,--o--
car => pp3_0_car(12) );--o--
pp3_0_csa_12: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(12) ,--i--
b => pp2_0_car(12) ,--i--
c => pp2_1_sum(12) ,--i--
d => tidn ,--i--
ki => pp3_0_ko(12) ,--i--
ko => pp3_0_ko(11) ,--i--
sum => pp3_0_sum(12) ,--o--
car => pp3_0_car(11) );--o--
pp3_0_csa_11: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(11) ,--i--
b => pp2_0_car(11) ,--i--
c => pp2_1_sum(11) ,--i--
d => tidn ,--i--
ki => pp3_0_ko(11) ,--i--
ko => pp3_0_ko(10) ,--i--
sum => pp3_0_sum(11) ,--o--
car => pp3_0_car(10) );--o--
pp3_0_csa_10: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(10) ,--i--
b => pp2_0_car(10) ,--i--
c => pp2_1_sum(10) ,--i--
d => tidn ,--i--
ki => pp3_0_ko(10) ,--i--
ko => pp3_0_ko(9) ,--i--
sum => pp3_0_sum(10) ,--o--
car => pp3_0_car(9) );--o--
pp3_0_csa_9: entity clib.c_prism_csa42 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(9) ,--i--
b => pp2_0_car(9) ,--i--
c => pp2_1_sum(9) ,--i--
d => tidn ,--i--
ki => pp3_0_ko(9) ,--i--
ko => pp3_0_ko(8) ,--i--
sum => pp3_0_sum(9) ,--o--
car => pp3_0_car(8) );--o--
pp3_0_csa_8: entity clib.c_prism_csa32 port map(
vd => vdd,
gd => gnd,
a => pp2_0_sum(8) ,--i--
b => pp2_0_car(8) ,--i--
c => pp3_0_ko(8) ,--i--
sum => pp3_0_sum(8) ,--o--
car => pp3_0_car(7) );--o--
pp3_0_csa_7: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp2_0_sum(7) ,--i--
b => pp2_0_car(7) ,--i--
sum => pp3_0_sum(7) ,--o--
car => pp3_0_car(6) );--o--
pp3_0_csa_6: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp2_0_sum(6) ,--i--
b => pp2_0_car(6) ,--i--
sum => pp3_0_sum(6) ,--o--
car => pp3_0_car(5) );--o--
pp3_0_csa_5: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp2_0_sum(5) ,--i--
b => pp2_0_car(5) ,--i--
sum => pp3_0_sum(5) ,--o--
car => pp3_0_car(4) );--o--
pp3_0_csa_4: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp2_0_sum(4) ,--i--
b => pp2_0_car(4) ,--i--
sum => pp3_0_sum(4) ,--o--
car => pp3_0_car(3) );--o--
pp3_0_csa_3: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp2_0_sum(3) ,--i--
b => pp2_0_car(3) ,--i--
sum => pp3_0_sum(3) ,--o--
car => pp3_0_car(2) );--o--
pp3_0_csa_2: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp2_0_sum(2) ,--i--
b => pp2_0_car(2) ,--i--
sum => pp3_0_sum(2) ,--o--
car => pp3_0_car(1) );--o--
pp3_0_csa_1: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp2_0_sum(1) ,--i--
b => pp2_0_car(1) ,--i--
sum => pp3_0_sum(1) ,--o--
car => pp3_0_car(0) );--o--
pp3_0_csa_0: entity work.fuq_csa22_h2(fuq_csa22_h2) port map(
a => pp2_0_sum(0) ,--i--
b => pp2_0_car(0) ,--i--
sum => pp3_0_sum(0) ,--o--
car => pp3_0_car_unused );--o--
--=====================================================================
tbl_sum(0 to 36) <= pp3_0_sum(0 to 36);
tbl_car(0 to 35) <= pp3_0_car(0 to 35);
end; -- fuq_tblmul ARCHITECTURE