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.

1138 lines
40 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,ibm,support,tri, work;
use ieee.std_logic_1164.all;
use ibm.std_ulogic_unsigned.all;
use ibm.std_ulogic_support.all;
use ibm.std_ulogic_function_support.all;
use support.power_logic_pkg.all;
use tri.tri_latches_pkg.all;
use ibm.std_ulogic_ao_support.all;
use ibm.std_ulogic_mux_support.all;
library clib ;
entity fuq_sa3 is
generic(expand_type: integer := 2 );
port(
vdd :inout power_logic;
gnd :inout power_logic;
clkoff_b :in std_ulogic;
act_dis :in std_ulogic;
flush :in std_ulogic;
delay_lclkr :in std_ulogic_vector(2 to 3);
mpw1_b :in std_ulogic_vector(2 to 3);
mpw2_b :in std_ulogic_vector(0 to 0);
sg_1 :in std_ulogic;
thold_1 :in std_ulogic;
fpu_enable :in std_ulogic;
nclk :in clk_logic;
f_sa3_si :in std_ulogic;
f_sa3_so :out std_ulogic;
ex1_act_b :in std_ulogic;
f_mul_ex2_sum :in std_ulogic_vector(54 to 161);
f_mul_ex2_car :in std_ulogic_vector(54 to 161);
f_alg_ex2_res :in std_ulogic_vector(0 to 162);
f_sa3_ex3_s_lza :out std_ulogic_vector(0 to 162);
f_sa3_ex3_c_lza :out std_ulogic_vector(53 to 161);
f_sa3_ex3_s_add :out std_ulogic_vector(0 to 162);
f_sa3_ex3_c_add :out std_ulogic_vector(53 to 161)
);
end fuq_sa3;
architecture fuq_sa3 of fuq_sa3 is
constant tiup : std_ulogic := '1';
constant tidn : std_ulogic := '0';
signal thold_0_b, thold_0, forcee , sg_0 :std_ulogic;
signal act_spare_unused :std_ulogic_vector(0 to 3);
signal ex2_act :std_ulogic;
signal act_so , act_si :std_ulogic_vector(0 to 4);
signal ex3_sum :std_ulogic_vector(0 to 162);
signal ex3_car :std_ulogic_vector(53 to 161);
signal ex1_act :std_ulogic;
signal ex3_053_sum_si, ex3_053_sum_so :std_ulogic_vector(0 to 109);
signal ex3_053_car_si, ex3_053_car_so :std_ulogic_vector(0 to 108);
signal ex3_000_si, ex3_000_so :std_ulogic_vector(0 to 52);
signal ex3_sum_lza_b, ex3_sum_add_b :std_ulogic_vector(0 to 162);
signal ex3_car_lza_b, ex3_car_add_b :std_ulogic_vector(53 to 161);
signal sa3_ex3_d2clk , sa3_ex3_d1clk :std_ulogic;
signal sa3_ex3_lclk : clk_logic;
signal ex2_alg_b :std_ulogic_vector(0 to 52) ;
signal ex2_sum_b :std_ulogic_vector(53 to 162) ;
signal ex2_car_b :std_ulogic_vector(53 to 161) ;
signal f_alg_ex2_res_b, f_mul_ex2_sum_b, f_mul_ex2_car_b :std_ulogic_vector(55 to 161);
begin
ex2_sum_b(54) <= not( not(f_mul_ex2_sum(54) or f_mul_ex2_car(54)) xor f_alg_ex2_res(54) );
ex2_car_b(53) <= not( (f_mul_ex2_sum(54) or f_mul_ex2_car(54)) or f_alg_ex2_res(54) );
u_algi: ex2_alg_b(0 to 52) <= not f_alg_ex2_res(0 to 52) ;
u_pre_a: f_alg_ex2_res_b(55 to 161) <= not( f_alg_ex2_res(55 to 161) );
u_pre_s: f_mul_ex2_sum_b(55 to 161) <= not( f_mul_ex2_sum(55 to 161) );
u_pre_c: f_mul_ex2_car_b(55 to 161) <= not( f_mul_ex2_car(55 to 161) );
res_csa_55: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(55),
b => f_mul_ex2_sum_b(55),
c => f_mul_ex2_car_b(55),
sum => ex2_sum_b(55) ,
car => ex2_car_b(54) );
res_csa_56: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(56),
b => f_mul_ex2_sum_b(56),
c => f_mul_ex2_car_b(56),
sum => ex2_sum_b(56) ,
car => ex2_car_b(55) );
res_csa_57: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(57),
b => f_mul_ex2_sum_b(57),
c => f_mul_ex2_car_b(57),
sum => ex2_sum_b(57) ,
car => ex2_car_b(56) );
res_csa_58: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(58),
b => f_mul_ex2_sum_b(58),
c => f_mul_ex2_car_b(58),
sum => ex2_sum_b(58) ,
car => ex2_car_b(57) );
res_csa_59: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(59),
b => f_mul_ex2_sum_b(59),
c => f_mul_ex2_car_b(59),
sum => ex2_sum_b(59) ,
car => ex2_car_b(58) );
res_csa_60: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(60),
b => f_mul_ex2_sum_b(60),
c => f_mul_ex2_car_b(60),
sum => ex2_sum_b(60) ,
car => ex2_car_b(59) );
res_csa_61: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(61),
b => f_mul_ex2_sum_b(61),
c => f_mul_ex2_car_b(61),
sum => ex2_sum_b(61) ,
car => ex2_car_b(60) );
res_csa_62: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(62),
b => f_mul_ex2_sum_b(62),
c => f_mul_ex2_car_b(62),
sum => ex2_sum_b(62) ,
car => ex2_car_b(61) );
res_csa_63: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(63),
b => f_mul_ex2_sum_b(63),
c => f_mul_ex2_car_b(63),
sum => ex2_sum_b(63) ,
car => ex2_car_b(62) );
res_csa_64: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(64),
b => f_mul_ex2_sum_b(64),
c => f_mul_ex2_car_b(64),
sum => ex2_sum_b(64) ,
car => ex2_car_b(63) );
res_csa_65: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(65),
b => f_mul_ex2_sum_b(65),
c => f_mul_ex2_car_b(65),
sum => ex2_sum_b(65) ,
car => ex2_car_b(64) );
res_csa_66: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(66),
b => f_mul_ex2_sum_b(66),
c => f_mul_ex2_car_b(66),
sum => ex2_sum_b(66) ,
car => ex2_car_b(65) );
res_csa_67: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(67),
b => f_mul_ex2_sum_b(67),
c => f_mul_ex2_car_b(67),
sum => ex2_sum_b(67) ,
car => ex2_car_b(66) );
res_csa_68: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(68),
b => f_mul_ex2_sum_b(68),
c => f_mul_ex2_car_b(68),
sum => ex2_sum_b(68) ,
car => ex2_car_b(67) );
res_csa_69: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(69),
b => f_mul_ex2_sum_b(69),
c => f_mul_ex2_car_b(69),
sum => ex2_sum_b(69) ,
car => ex2_car_b(68) );
res_csa_70: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(70),
b => f_mul_ex2_sum_b(70),
c => f_mul_ex2_car_b(70),
sum => ex2_sum_b(70) ,
car => ex2_car_b(69) );
res_csa_71: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(71),
b => f_mul_ex2_sum_b(71),
c => f_mul_ex2_car_b(71),
sum => ex2_sum_b(71) ,
car => ex2_car_b(70) );
res_csa_72: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(72),
b => f_mul_ex2_sum_b(72),
c => f_mul_ex2_car_b(72),
sum => ex2_sum_b(72) ,
car => ex2_car_b(71) );
res_csa_73: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(73),
b => f_mul_ex2_sum_b(73),
c => f_mul_ex2_car_b(73),
sum => ex2_sum_b(73) ,
car => ex2_car_b(72) );
res_csa_74: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(74),
b => f_mul_ex2_sum_b(74),
c => f_mul_ex2_car_b(74),
sum => ex2_sum_b(74) ,
car => ex2_car_b(73) );
res_csa_75: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(75),
b => f_mul_ex2_sum_b(75),
c => f_mul_ex2_car_b(75),
sum => ex2_sum_b(75) ,
car => ex2_car_b(74) );
res_csa_76: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(76),
b => f_mul_ex2_sum_b(76),
c => f_mul_ex2_car_b(76),
sum => ex2_sum_b(76) ,
car => ex2_car_b(75) );
res_csa_77: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(77),
b => f_mul_ex2_sum_b(77),
c => f_mul_ex2_car_b(77),
sum => ex2_sum_b(77) ,
car => ex2_car_b(76) );
res_csa_78: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(78),
b => f_mul_ex2_sum_b(78),
c => f_mul_ex2_car_b(78),
sum => ex2_sum_b(78) ,
car => ex2_car_b(77) );
res_csa_79: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(79),
b => f_mul_ex2_sum_b(79),
c => f_mul_ex2_car_b(79),
sum => ex2_sum_b(79) ,
car => ex2_car_b(78) );
res_csa_80: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(80),
b => f_mul_ex2_sum_b(80),
c => f_mul_ex2_car_b(80),
sum => ex2_sum_b(80) ,
car => ex2_car_b(79) );
res_csa_81: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(81),
b => f_mul_ex2_sum_b(81),
c => f_mul_ex2_car_b(81),
sum => ex2_sum_b(81) ,
car => ex2_car_b(80) );
res_csa_82: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(82),
b => f_mul_ex2_sum_b(82),
c => f_mul_ex2_car_b(82),
sum => ex2_sum_b(82) ,
car => ex2_car_b(81) );
res_csa_83: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(83),
b => f_mul_ex2_sum_b(83),
c => f_mul_ex2_car_b(83),
sum => ex2_sum_b(83) ,
car => ex2_car_b(82) );
res_csa_84: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(84),
b => f_mul_ex2_sum_b(84),
c => f_mul_ex2_car_b(84),
sum => ex2_sum_b(84) ,
car => ex2_car_b(83) );
res_csa_85: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(85),
b => f_mul_ex2_sum_b(85),
c => f_mul_ex2_car_b(85),
sum => ex2_sum_b(85) ,
car => ex2_car_b(84) );
res_csa_86: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(86),
b => f_mul_ex2_sum_b(86),
c => f_mul_ex2_car_b(86),
sum => ex2_sum_b(86) ,
car => ex2_car_b(85) );
res_csa_87: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(87),
b => f_mul_ex2_sum_b(87),
c => f_mul_ex2_car_b(87),
sum => ex2_sum_b(87) ,
car => ex2_car_b(86) );
res_csa_88: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(88),
b => f_mul_ex2_sum_b(88),
c => f_mul_ex2_car_b(88),
sum => ex2_sum_b(88) ,
car => ex2_car_b(87) );
res_csa_89: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(89),
b => f_mul_ex2_sum_b(89),
c => f_mul_ex2_car_b(89),
sum => ex2_sum_b(89) ,
car => ex2_car_b(88) );
res_csa_90: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(90),
b => f_mul_ex2_sum_b(90),
c => f_mul_ex2_car_b(90),
sum => ex2_sum_b(90) ,
car => ex2_car_b(89) );
res_csa_91: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(91),
b => f_mul_ex2_sum_b(91),
c => f_mul_ex2_car_b(91),
sum => ex2_sum_b(91) ,
car => ex2_car_b(90) );
res_csa_92: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(92),
b => f_mul_ex2_sum_b(92),
c => f_mul_ex2_car_b(92),
sum => ex2_sum_b(92) ,
car => ex2_car_b(91) );
res_csa_93: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(93),
b => f_mul_ex2_sum_b(93),
c => f_mul_ex2_car_b(93),
sum => ex2_sum_b(93) ,
car => ex2_car_b(92) );
res_csa_94: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(94),
b => f_mul_ex2_sum_b(94),
c => f_mul_ex2_car_b(94),
sum => ex2_sum_b(94) ,
car => ex2_car_b(93) );
res_csa_95: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(95),
b => f_mul_ex2_sum_b(95),
c => f_mul_ex2_car_b(95),
sum => ex2_sum_b(95) ,
car => ex2_car_b(94) );
res_csa_96: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(96),
b => f_mul_ex2_sum_b(96),
c => f_mul_ex2_car_b(96),
sum => ex2_sum_b(96) ,
car => ex2_car_b(95) );
res_csa_97: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(97),
b => f_mul_ex2_sum_b(97),
c => f_mul_ex2_car_b(97),
sum => ex2_sum_b(97) ,
car => ex2_car_b(96) );
res_csa_98: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(98),
b => f_mul_ex2_sum_b(98),
c => f_mul_ex2_car_b(98),
sum => ex2_sum_b(98) ,
car => ex2_car_b(97) );
res_csa_99: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(99),
b => f_mul_ex2_sum_b(99),
c => f_mul_ex2_car_b(99),
sum => ex2_sum_b(99) ,
car => ex2_car_b(98) );
res_csa_100: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(100),
b => f_mul_ex2_sum_b(100),
c => f_mul_ex2_car_b(100),
sum => ex2_sum_b(100) ,
car => ex2_car_b(99) );
res_csa_101: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(101),
b => f_mul_ex2_sum_b(101),
c => f_mul_ex2_car_b(101),
sum => ex2_sum_b(101) ,
car => ex2_car_b(100) );
res_csa_102: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(102),
b => f_mul_ex2_sum_b(102),
c => f_mul_ex2_car_b(102),
sum => ex2_sum_b(102) ,
car => ex2_car_b(101) );
res_csa_103: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(103),
b => f_mul_ex2_sum_b(103),
c => f_mul_ex2_car_b(103),
sum => ex2_sum_b(103) ,
car => ex2_car_b(102) );
res_csa_104: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(104),
b => f_mul_ex2_sum_b(104),
c => f_mul_ex2_car_b(104),
sum => ex2_sum_b(104) ,
car => ex2_car_b(103) );
res_csa_105: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(105),
b => f_mul_ex2_sum_b(105),
c => f_mul_ex2_car_b(105),
sum => ex2_sum_b(105) ,
car => ex2_car_b(104) );
res_csa_106: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(106),
b => f_mul_ex2_sum_b(106),
c => f_mul_ex2_car_b(106),
sum => ex2_sum_b(106) ,
car => ex2_car_b(105) );
res_csa_107: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(107),
b => f_mul_ex2_sum_b(107),
c => f_mul_ex2_car_b(107),
sum => ex2_sum_b(107) ,
car => ex2_car_b(106) );
res_csa_108: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(108),
b => f_mul_ex2_sum_b(108),
c => f_mul_ex2_car_b(108),
sum => ex2_sum_b(108) ,
car => ex2_car_b(107) );
res_csa_109: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(109),
b => f_mul_ex2_sum_b(109),
c => f_mul_ex2_car_b(109),
sum => ex2_sum_b(109) ,
car => ex2_car_b(108) );
res_csa_110: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(110),
b => f_mul_ex2_sum_b(110),
c => f_mul_ex2_car_b(110),
sum => ex2_sum_b(110) ,
car => ex2_car_b(109) );
res_csa_111: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(111),
b => f_mul_ex2_sum_b(111),
c => f_mul_ex2_car_b(111),
sum => ex2_sum_b(111) ,
car => ex2_car_b(110) );
res_csa_112: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(112),
b => f_mul_ex2_sum_b(112),
c => f_mul_ex2_car_b(112),
sum => ex2_sum_b(112) ,
car => ex2_car_b(111) );
res_csa_113: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(113),
b => f_mul_ex2_sum_b(113),
c => f_mul_ex2_car_b(113),
sum => ex2_sum_b(113) ,
car => ex2_car_b(112) );
res_csa_114: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(114),
b => f_mul_ex2_sum_b(114),
c => f_mul_ex2_car_b(114),
sum => ex2_sum_b(114) ,
car => ex2_car_b(113) );
res_csa_115: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(115),
b => f_mul_ex2_sum_b(115),
c => f_mul_ex2_car_b(115),
sum => ex2_sum_b(115) ,
car => ex2_car_b(114) );
res_csa_116: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(116),
b => f_mul_ex2_sum_b(116),
c => f_mul_ex2_car_b(116),
sum => ex2_sum_b(116) ,
car => ex2_car_b(115) );
res_csa_117: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(117),
b => f_mul_ex2_sum_b(117),
c => f_mul_ex2_car_b(117),
sum => ex2_sum_b(117) ,
car => ex2_car_b(116) );
res_csa_118: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(118),
b => f_mul_ex2_sum_b(118),
c => f_mul_ex2_car_b(118),
sum => ex2_sum_b(118) ,
car => ex2_car_b(117) );
res_csa_119: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(119),
b => f_mul_ex2_sum_b(119),
c => f_mul_ex2_car_b(119),
sum => ex2_sum_b(119) ,
car => ex2_car_b(118) );
res_csa_120: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(120),
b => f_mul_ex2_sum_b(120),
c => f_mul_ex2_car_b(120),
sum => ex2_sum_b(120) ,
car => ex2_car_b(119) );
res_csa_121: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(121),
b => f_mul_ex2_sum_b(121),
c => f_mul_ex2_car_b(121),
sum => ex2_sum_b(121) ,
car => ex2_car_b(120) );
res_csa_122: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(122),
b => f_mul_ex2_sum_b(122),
c => f_mul_ex2_car_b(122),
sum => ex2_sum_b(122) ,
car => ex2_car_b(121) );
res_csa_123: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(123),
b => f_mul_ex2_sum_b(123),
c => f_mul_ex2_car_b(123),
sum => ex2_sum_b(123) ,
car => ex2_car_b(122) );
res_csa_124: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(124),
b => f_mul_ex2_sum_b(124),
c => f_mul_ex2_car_b(124),
sum => ex2_sum_b(124) ,
car => ex2_car_b(123) );
res_csa_125: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(125),
b => f_mul_ex2_sum_b(125),
c => f_mul_ex2_car_b(125),
sum => ex2_sum_b(125) ,
car => ex2_car_b(124) );
res_csa_126: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(126),
b => f_mul_ex2_sum_b(126),
c => f_mul_ex2_car_b(126),
sum => ex2_sum_b(126) ,
car => ex2_car_b(125) );
res_csa_127: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(127),
b => f_mul_ex2_sum_b(127),
c => f_mul_ex2_car_b(127),
sum => ex2_sum_b(127) ,
car => ex2_car_b(126) );
res_csa_128: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(128),
b => f_mul_ex2_sum_b(128),
c => f_mul_ex2_car_b(128),
sum => ex2_sum_b(128) ,
car => ex2_car_b(127) );
res_csa_129: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(129),
b => f_mul_ex2_sum_b(129),
c => f_mul_ex2_car_b(129),
sum => ex2_sum_b(129) ,
car => ex2_car_b(128) );
res_csa_130: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(130),
b => f_mul_ex2_sum_b(130),
c => f_mul_ex2_car_b(130),
sum => ex2_sum_b(130) ,
car => ex2_car_b(129) );
res_csa_131: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(131),
b => f_mul_ex2_sum_b(131),
c => f_mul_ex2_car_b(131),
sum => ex2_sum_b(131) ,
car => ex2_car_b(130) );
res_csa_132: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(132),
b => f_mul_ex2_sum_b(132),
c => f_mul_ex2_car_b(132),
sum => ex2_sum_b(132) ,
car => ex2_car_b(131) );
res_csa_133: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(133),
b => f_mul_ex2_sum_b(133),
c => f_mul_ex2_car_b(133),
sum => ex2_sum_b(133) ,
car => ex2_car_b(132) );
res_csa_134: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(134),
b => f_mul_ex2_sum_b(134),
c => f_mul_ex2_car_b(134),
sum => ex2_sum_b(134) ,
car => ex2_car_b(133) );
res_csa_135: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(135),
b => f_mul_ex2_sum_b(135),
c => f_mul_ex2_car_b(135),
sum => ex2_sum_b(135) ,
car => ex2_car_b(134) );
res_csa_136: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(136),
b => f_mul_ex2_sum_b(136),
c => f_mul_ex2_car_b(136),
sum => ex2_sum_b(136) ,
car => ex2_car_b(135) );
res_csa_137: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(137),
b => f_mul_ex2_sum_b(137),
c => f_mul_ex2_car_b(137),
sum => ex2_sum_b(137) ,
car => ex2_car_b(136) );
res_csa_138: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(138),
b => f_mul_ex2_sum_b(138),
c => f_mul_ex2_car_b(138),
sum => ex2_sum_b(138) ,
car => ex2_car_b(137) );
res_csa_139: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(139),
b => f_mul_ex2_sum_b(139),
c => f_mul_ex2_car_b(139),
sum => ex2_sum_b(139) ,
car => ex2_car_b(138) );
res_csa_140: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(140),
b => f_mul_ex2_sum_b(140),
c => f_mul_ex2_car_b(140),
sum => ex2_sum_b(140) ,
car => ex2_car_b(139) );
res_csa_141: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(141),
b => f_mul_ex2_sum_b(141),
c => f_mul_ex2_car_b(141),
sum => ex2_sum_b(141) ,
car => ex2_car_b(140) );
res_csa_142: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(142),
b => f_mul_ex2_sum_b(142),
c => f_mul_ex2_car_b(142),
sum => ex2_sum_b(142) ,
car => ex2_car_b(141) );
res_csa_143: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(143),
b => f_mul_ex2_sum_b(143),
c => f_mul_ex2_car_b(143),
sum => ex2_sum_b(143) ,
car => ex2_car_b(142) );
res_csa_144: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(144),
b => f_mul_ex2_sum_b(144),
c => f_mul_ex2_car_b(144),
sum => ex2_sum_b(144) ,
car => ex2_car_b(143) );
res_csa_145: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(145),
b => f_mul_ex2_sum_b(145),
c => f_mul_ex2_car_b(145),
sum => ex2_sum_b(145) ,
car => ex2_car_b(144) );
res_csa_146: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(146),
b => f_mul_ex2_sum_b(146),
c => f_mul_ex2_car_b(146),
sum => ex2_sum_b(146) ,
car => ex2_car_b(145) );
res_csa_147: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(147),
b => f_mul_ex2_sum_b(147),
c => f_mul_ex2_car_b(147),
sum => ex2_sum_b(147) ,
car => ex2_car_b(146) );
res_csa_148: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(148),
b => f_mul_ex2_sum_b(148),
c => f_mul_ex2_car_b(148),
sum => ex2_sum_b(148) ,
car => ex2_car_b(147) );
res_csa_149: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(149),
b => f_mul_ex2_sum_b(149),
c => f_mul_ex2_car_b(149),
sum => ex2_sum_b(149) ,
car => ex2_car_b(148) );
res_csa_150: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(150),
b => f_mul_ex2_sum_b(150),
c => f_mul_ex2_car_b(150),
sum => ex2_sum_b(150) ,
car => ex2_car_b(149) );
res_csa_151: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(151),
b => f_mul_ex2_sum_b(151),
c => f_mul_ex2_car_b(151),
sum => ex2_sum_b(151) ,
car => ex2_car_b(150) );
res_csa_152: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(152),
b => f_mul_ex2_sum_b(152),
c => f_mul_ex2_car_b(152),
sum => ex2_sum_b(152) ,
car => ex2_car_b(151) );
res_csa_153: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(153),
b => f_mul_ex2_sum_b(153),
c => f_mul_ex2_car_b(153),
sum => ex2_sum_b(153) ,
car => ex2_car_b(152) );
res_csa_154: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(154),
b => f_mul_ex2_sum_b(154),
c => f_mul_ex2_car_b(154),
sum => ex2_sum_b(154) ,
car => ex2_car_b(153) );
res_csa_155: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(155),
b => f_mul_ex2_sum_b(155),
c => f_mul_ex2_car_b(155),
sum => ex2_sum_b(155) ,
car => ex2_car_b(154) );
res_csa_156: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(156),
b => f_mul_ex2_sum_b(156),
c => f_mul_ex2_car_b(156),
sum => ex2_sum_b(156) ,
car => ex2_car_b(155) );
res_csa_157: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(157),
b => f_mul_ex2_sum_b(157),
c => f_mul_ex2_car_b(157),
sum => ex2_sum_b(157) ,
car => ex2_car_b(156) );
res_csa_158: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(158),
b => f_mul_ex2_sum_b(158),
c => f_mul_ex2_car_b(158),
sum => ex2_sum_b(158) ,
car => ex2_car_b(157) );
res_csa_159: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(159),
b => f_mul_ex2_sum_b(159),
c => f_mul_ex2_car_b(159),
sum => ex2_sum_b(159) ,
car => ex2_car_b(158) );
res_csa_160: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(160),
b => f_mul_ex2_sum_b(160),
c => f_mul_ex2_car_b(160),
sum => ex2_sum_b(160) ,
car => ex2_car_b(159) );
res_csa_161: entity clib.c_prism_csa32 port map (
vd => vdd,
gd => gnd,
a => f_alg_ex2_res_b(161),
b => f_mul_ex2_sum_b(161),
c => f_mul_ex2_car_b(161),
sum => ex2_sum_b(161) ,
car => ex2_car_b(160) );
ex2_sum_b(53) <= not f_alg_ex2_res(53) ;
ex2_sum_b(162) <= not f_alg_ex2_res(162) ;
ex2_car_b(161) <= tiup;
ex3_000_lat: entity tri.tri_inv_nlats(tri_inv_nlats) generic map (width=> 53, btr => "NLI0001_X2_A12TH", expand_type => expand_type, needs_sreset => 0 ) port map (
vd => vdd,
gd => gnd,
LCLK => sa3_ex3_lclk ,
D1CLK => sa3_ex3_d1clk ,
D2CLK => sa3_ex3_d2clk ,
SCANIN => ex3_000_si ,
SCANOUT => ex3_000_so ,
D => ex2_alg_b(0 to 52) ,
QB => ex3_sum(0 to 52) );
ex3_053_sum_lat: entity tri.tri_inv_nlats(tri_inv_nlats) generic map (width=> 110, btr => "NLI0001_X2_A12TH", expand_type => expand_type, needs_sreset => 0 ) port map (
vd => vdd,
gd => gnd,
LCLK => sa3_ex3_lclk ,
D1CLK => sa3_ex3_d1clk ,
D2CLK => sa3_ex3_d2clk ,
SCANIN => ex3_053_sum_si ,
SCANOUT => ex3_053_sum_so ,
D => ex2_sum_b(53 to 162) ,
QB => ex3_sum(53 to 162) );
ex3_053_car_lat: entity tri.tri_inv_nlats(tri_inv_nlats) generic map (width=> 109, btr => "NLI0001_X2_A12TH", expand_type => expand_type, needs_sreset => 0 ) port map (
vd => vdd,
gd => gnd,
LCLK => sa3_ex3_lclk ,
D1CLK => sa3_ex3_d1clk ,
D2CLK => sa3_ex3_d2clk ,
SCANIN => ex3_053_car_si ,
SCANOUT => ex3_053_car_so ,
D => ex2_car_b(53 to 161) ,
QB => ex3_car(53 to 161) );
inv_sum_lza: ex3_sum_lza_b(0 to 162) <= not ex3_sum(0 to 162) ;
inv_car_lza: ex3_car_lza_b(53 to 161) <= not ex3_car(53 to 161) ;
inv_sum_add: ex3_sum_add_b(0 to 162) <= not ex3_sum(0 to 162) ;
inv_car_add: ex3_car_add_b(53 to 161) <= not ex3_car(53 to 161) ;
buf_sum_lza: f_sa3_ex3_s_lza(0 to 162) <= not ex3_sum_lza_b(0 to 162) ;
buf_car_lza: f_sa3_ex3_c_lza(53 to 161) <= not ex3_car_lza_b(53 to 161) ;
buf_sum_add: f_sa3_ex3_s_add(0 to 162) <= not ex3_sum_add_b(0 to 162) ;
buf_car_add: f_sa3_ex3_c_add(53 to 161) <= not ex3_car_add_b(53 to 161) ;
thold_reg_0: tri_plat generic map (expand_type => expand_type) port map (
vd => vdd,
gd => gnd,
nclk => nclk,
flush => flush ,
din(0) => thold_1,
q(0) => thold_0 );
sg_reg_0: tri_plat generic map (expand_type => expand_type) port map (
vd => vdd,
gd => gnd,
nclk => nclk,
flush => flush ,
din(0) => sg_1 ,
q(0) => sg_0 );
lcbor_0: tri_lcbor generic map (expand_type => expand_type ) port map (
clkoff_b => clkoff_b,
thold => thold_0,
sg => sg_0,
act_dis => act_dis,
forcee => forcee,
thold_b => thold_0_b );
ex1_act <= not ex1_act_b ;
act_lat: tri_rlmreg_p generic map (width=> 5, expand_type => expand_type, needs_sreset => 0) port map (
forcee => forcee,
delay_lclkr => delay_lclkr(2) ,
mpw1_b => mpw1_b(2) ,
mpw2_b => mpw2_b(0) ,
vd => vdd,
gd => gnd,
nclk => nclk,
act => fpu_enable,
thold_b => thold_0_b,
sg => sg_0,
scout => act_so ,
scin => act_si ,
din(0) => act_spare_unused(0),
din(1) => act_spare_unused(1),
din(2) => ex1_act,
din(3) => act_spare_unused(2),
din(4) => act_spare_unused(3),
dout(0) => act_spare_unused(0),
dout(1) => act_spare_unused(1),
dout(2) => ex2_act,
dout(3) => act_spare_unused(2) ,
dout(4) => act_spare_unused(3) );
sa3_ex3_lcb : tri_lcbnd generic map (expand_type => expand_type) port map(
delay_lclkr => delay_lclkr(3) ,
mpw1_b => mpw1_b(3) ,
mpw2_b => mpw2_b(0) ,
forcee => forcee,
nclk => nclk ,
vd => vdd ,
gd => gnd ,
act => ex2_act ,
sg => sg_0 ,
thold_b => thold_0_b ,
d1clk => sa3_ex3_d1clk ,
d2clk => sa3_ex3_d2clk ,
lclk => sa3_ex3_lclk );
ex3_053_car_si(0 to 108) <= ex3_053_car_so(1 to 108) & f_sa3_si ;
ex3_053_sum_si(0 to 109) <= ex3_053_sum_so(1 to 109) & ex3_053_car_so(0);
ex3_000_si(0 to 52) <= ex3_000_so(1 to 52) & ex3_053_sum_so(0) ;
act_si(0 to 4) <= act_so (1 to 4) & ex3_000_so(0);
f_sa3_so <= act_so(0);
end;