// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: fgu_fgd_dp.v
// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; version 2 of the License.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// For the avoidance of doubt, and except that if any non-GPL license
// choice is available it will apply instead, Sun elects to use only
// the General Public License version 2 (GPLv2) at this time for any
// software where a choice of GPL license versions is made
// available with the language indicating that GPLv2 or any later version
// may be used, or where a choice of which version of the GPL is applied is
// otherwise unspecified.
// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
// CA 95054 USA or visit www.sun.com if you need additional information or
// ========== Copyright Header End ============================================
fgd_gsr_asr_mask_fx4_b31,
wire [11:0] pdist_rs3_fx2;
wire popc_byte7a_cout_fx2;
wire popc_byte7a_carry_fx2;
wire popc_byte7a_sum_fx2;
wire popc_byte7b_cout_fx2;
wire popc_byte7b_carry_fx2;
wire popc_byte7b_sum_fx2;
wire popc_byte7c_cout_fx2;
wire popc_byte7c_carry_fx2;
wire popc_byte7c_sum_fx2;
wire [3:0] popc_byte7_sum_fx2;
wire popc_byte6a_cout_fx2;
wire popc_byte6a_carry_fx2;
wire popc_byte6a_sum_fx2;
wire popc_byte6b_cout_fx2;
wire popc_byte6b_carry_fx2;
wire popc_byte6b_sum_fx2;
wire popc_byte6c_cout_fx2;
wire popc_byte6c_carry_fx2;
wire popc_byte6c_sum_fx2;
wire [3:0] popc_byte6_sum_fx2;
wire popc_byte5a_cout_fx2;
wire popc_byte5a_carry_fx2;
wire popc_byte5a_sum_fx2;
wire popc_byte5b_cout_fx2;
wire popc_byte5b_carry_fx2;
wire popc_byte5b_sum_fx2;
wire popc_byte5c_cout_fx2;
wire popc_byte5c_carry_fx2;
wire popc_byte5c_sum_fx2;
wire [3:0] popc_byte5_sum_fx2;
wire popc_byte4a_cout_fx2;
wire popc_byte4a_carry_fx2;
wire popc_byte4a_sum_fx2;
wire popc_byte4b_cout_fx2;
wire popc_byte4b_carry_fx2;
wire popc_byte4b_sum_fx2;
wire popc_byte4c_cout_fx2;
wire popc_byte4c_carry_fx2;
wire popc_byte4c_sum_fx2;
wire [3:0] popc_byte4_sum_fx2;
wire popc_byte3a_cout_fx2;
wire popc_byte3a_carry_fx2;
wire popc_byte3a_sum_fx2;
wire popc_byte3b_cout_fx2;
wire popc_byte3b_carry_fx2;
wire popc_byte3b_sum_fx2;
wire popc_byte3c_cout_fx2;
wire popc_byte3c_carry_fx2;
wire popc_byte3c_sum_fx2;
wire [3:0] popc_byte3_sum_fx2;
wire popc_byte2a_cout_fx2;
wire popc_byte2a_carry_fx2;
wire popc_byte2a_sum_fx2;
wire popc_byte2b_cout_fx2;
wire popc_byte2b_carry_fx2;
wire popc_byte2b_sum_fx2;
wire popc_byte2c_cout_fx2;
wire popc_byte2c_carry_fx2;
wire popc_byte2c_sum_fx2;
wire [3:0] popc_byte2_sum_fx2;
wire popc_byte1a_cout_fx2;
wire popc_byte1a_carry_fx2;
wire popc_byte1a_sum_fx2;
wire popc_byte1b_cout_fx2;
wire popc_byte1b_carry_fx2;
wire popc_byte1b_sum_fx2;
wire popc_byte1c_cout_fx2;
wire popc_byte1c_carry_fx2;
wire popc_byte1c_sum_fx2;
wire [3:0] popc_byte1_sum_fx2;
wire popc_byte0a_cout_fx2;
wire popc_byte0a_carry_fx2;
wire popc_byte0a_sum_fx2;
wire popc_byte0b_cout_fx2;
wire popc_byte0b_carry_fx2;
wire popc_byte0b_sum_fx2;
wire popc_byte0c_cout_fx2;
wire popc_byte0c_carry_fx2;
wire popc_byte0c_sum_fx2;
wire [3:0] popc_byte0_sum_fx2;
wire fx3_gsr_mask_scanin;
wire fx3_gsr_mask_scanout;
wire [31:0] gsr_mask_fx3;
wire [3:0] popc_byte0_sum_fx3;
wire [3:0] popc_byte1_sum_fx3;
wire [3:0] popc_byte2_sum_fx3;
wire [3:0] popc_byte3_sum_fx3;
wire [3:0] popc_byte4_sum_fx3;
wire [3:0] popc_byte5_sum_fx3;
wire [3:0] popc_byte6_sum_fx3;
wire [3:0] popc_byte7_sum_fx3;
wire [11:0] pdist_rs3_fx3;
wire [63:0] logical_int0_fx3;
wire [63:0] logical_int1_fx3;
wire [63:0] logical_int2_fx3;
wire [63:0] logical_int3_fx3;
wire [63:0] logical_result_fx3;
wire [31:0] gsr_mask0_fx4;
wire [63:0] rs1_shuf_fx3;
wire [63:0] rs2_shuf_fx3;
wire [63:0] shuf_result_fx3;
wire [63:0] align_result_fx3;
wire [63:0] simp_result_fx4;
wire [6:0] pack_01_d2_unused;
wire [6:0] pack_01_d0_unused;
wire [15:0] clip16_c3_fx3;
wire [27:0] clip04_c3_fx3;
wire [30:0] clip01_c3_fx3;
wire [11:0] clip04_c2_fx3;
wire [14:0] clip01_c2_fx3;
wire [15:0] clip16_c1_fx3;
wire [27:0] clip04_c1_fx3;
wire [30:0] clip01_c1_fx3;
wire [11:0] clip04_c0_fx3;
wire [14:0] clip01_c0_fx3;
wire [63:0] pdist_amb_fx3;
wire pdist_amb_cout0_fx3;
wire pdist_amb_cout1_fx3;
wire pdist_amb_cout2_fx3;
wire pdist_amb_cout3_fx3;
wire pdist_amb_cout4_fx3;
wire pdist_amb_cout5_fx3;
wire pdist_amb_cout6_fx3;
wire pdist_amb_cout7_fx3;
wire [63:0] pdist_bma_fx3;
wire [63:0] pdist_mux_fx3;
wire pdist_42csa_cout0_fx3;
wire [8:1] pdist_42csa_carry0_fx3;
wire [7:0] pdist_42csa_sum0_fx3;
wire pdist_42csa_cout1_fx3;
wire [8:1] pdist_42csa_carry1_fx3;
wire [7:0] pdist_42csa_sum1_fx3;
wire [30:0] clip01_c3_fx4;
wire [30:0] clip01_c1_fx4;
wire [14:0] clip01_c2_fx4;
wire [14:0] clip01_c0_fx4;
wire [33:0] pdist_42csa_data_fx4;
wire [2:0] gsr_asr_tid_fx3;
wire fx4_gsr0mask_wmr_scanin;
wire fx4_gsr0mask_wmr_scanout;
wire [63:0] in_rngl_cdbus_3f;
wire [31:0] gsr0_mask_fx4;
wire fx4_gsr1mask_wmr_scanin;
wire fx4_gsr1mask_wmr_scanout;
wire [31:0] gsr1_mask_fx4;
wire fx4_gsr2mask_wmr_scanin;
wire fx4_gsr2mask_wmr_scanout;
wire [31:0] gsr2_mask_fx4;
wire fx4_gsr3mask_wmr_scanin;
wire fx4_gsr3mask_wmr_scanout;
wire [31:0] gsr3_mask_fx4;
wire fx4_gsr4mask_wmr_scanin;
wire fx4_gsr4mask_wmr_scanout;
wire [31:0] gsr4_mask_fx4;
wire fx4_gsr5mask_wmr_scanin;
wire fx4_gsr5mask_wmr_scanout;
wire [31:0] gsr5_mask_fx4;
wire fx4_gsr6mask_wmr_scanin;
wire fx4_gsr6mask_wmr_scanout;
wire [31:0] gsr6_mask_fx4;
wire fx4_gsr7mask_wmr_scanin;
wire fx4_gsr7mask_wmr_scanout;
wire [31:0] gsr7_mask_fx4;
wire [31:0] gsr_mask_fx4;
wire [30:0] gsr_asr_mask_fx4;
wire pack_b01_gt255_fx4_;
wire pack_b01_lt32768_fx4_;
wire pack_b23_gt255_fx4_;
wire pack_b45_gt255_fx4_;
wire pack_b45_lt32768_fx4_;
wire pack_b67_gt255_fx4_;
wire pack_b01_lt32768_fx4;
wire pack_b45_lt32768_fx4;
wire packfix_hi_lt32768_fx4;
wire packfix_lo_lt32768_fx4;
wire packfix_hi_gt32767_fx4;
wire packfix_lo_gt32767_fx4;
wire [63:32] pack_result_fx4;
wire [7:0] pack_result_fx4_b7_0;
wire pdist_42csa_cout2_fx4;
wire [9:1] pdist_42csa_carry2_fx4;
wire [8:0] pdist_42csa_sum2_fx4;
wire [10:1] pdist_32csa_carry_fx4;
wire [9:0] pdist_32csa_sum_fx4;
wire q_pdist_rs3_fx3_b11;
wire [63:0] pdist_sum_fx4;
wire [12:0] pdist_inc_unused;
wire [63:0] in_rngl_cdbus_1f;
wire [63:0] in_rngl_cdbus_2f;
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
input [63:0] fad_rs1_fmt_fx1; // rs1 formatted
input [63:0] fad_rs2_fmt_fx1; // rs2 formatted
output [62:0] fgd_rngl_cdbus_3f;
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
output [63:0] fgd_result_fx5; // FGX result
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
input vis_clken; // vis clken
input coreon_clken; // controls all "free running" flops
input fac_fgx_abs_fx2; // FABS
input fac_fgx_neg_fx2; // FNEG
input fac_fgx_logical_fx2; // logical instructions
input fac_fgx_expand_fx2; // FEXPAND
input fac_fgx_merge_fx2; // FPMERGE
input fac_fgx_align_fx2; // FALIGNDATA
input fac_fgx_shuffle_fx2; // BSHUFFLE
input fac_fgx_pack16_fx2; // FPACK16
input fac_fgx_pack32_fx2; // FPACK32
input fac_fgx_packfix_fx2; // FPACKFIX
input fac_fgx_pdist_fx1; // PDIST
input fac_fgx_popc_fx2; // POPC
input fac_fgx_pack_sel_fx2; // FPACK16,FPACK32,FPACKFIX
input [4:1] fac_opf_fx2; // instr opf field
input [2:0] fac_gsr_asr_tid_fx2;
input [2:0] fac_rng_fprs; // ASR FPRS read data
input fac_rng_rd_fprs_4f; // ASR FPRS read
input fac_rng_rd_gsr_4f; // ASR GSR read
input [13:0] fec_r1_ecc_fx1; // ASI FRF ECC read data
input fac_rng_rd_ecc_4f; // ASI FRF ECC read
input fac_rng_rd_or_wr_3f; // ASR/ASI GSR/FPRS/FRF_ECC rd or wr decoded
input asi_clken; // asi clken: controls ASI ring stage flops
output fgd_gsr_asr_mask_fx4_b31;
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
input [1:0] fpc_gsr0_mask_sel_fx3;
input [1:0] fpc_gsr1_mask_sel_fx3;
input [1:0] fpc_gsr2_mask_sel_fx3;
input [1:0] fpc_gsr3_mask_sel_fx3;
input [1:0] fpc_gsr4_mask_sel_fx3;
input [1:0] fpc_gsr5_mask_sel_fx3;
input [1:0] fpc_gsr6_mask_sel_fx3;
input [1:0] fpc_gsr7_mask_sel_fx3;
input [4:0] fpc_gsr_scale_fx4;
input [2:0] fpc_gsr_align_fx4;
input [10:0] fpc_gsr_asr_11bits_fx4;
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
input [31:0] exu_fgu_gsr_m; // GSR.align data:
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
input l2clk; // clock input
input tcu_pce_ov; // scan signals
input [63:0] in_rngl_cdbus; // ASI local ring
assign test = tcu_dectest;
fgu_fgd_dp_buff_macro__dbuff_32x__rep_1__width_4 test_rep0 (
.din ({tcu_scan_en, tcu_pce_ov, spc_aclk, spc_bclk}),
.dout({se, pce_ov, siclk, soclk })
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
fgu_fgd_dp_msff_macro__width_64 fx2_rs1 (
.scan_in(fx2_rs1_scanin),
.scan_out(fx2_rs1_scanout),
.din (fad_rs1_fmt_fx1[63:0]),
fgu_fgd_dp_msff_macro__width_64 fx2_rs2 (
.scan_in(fx2_rs2_scanin),
.scan_out(fx2_rs2_scanout),
.din (fad_rs2_fmt_fx1[63:0]),
fgu_fgd_dp_msff_macro__stack_32l__width_32 fx2_gsr (
.scan_in(fx2_gsr_scanin),
.scan_out(fx2_gsr_scanout),
.din (exu_fgu_gsr_m[31:0] ),
fgu_fgd_dp_mux_macro__buffsel_none__mux_aonpe__ports_2__width_12 pdist_rs3 (
.sel0(fgx_pdist_fx3), // since rs3 data skips a stage, selects skip a stage
.dout(pdist_rs3_fx2[11:0])
// ------------------------------------
// uniquie POPC frontend (fx2)
// ------------------------------------
fgu_fgd_dp_csa42_macro__width_1 popc_b7a (
.cout (popc_byte7a_cout_fx2 ),
.carry(popc_byte7a_carry_fx2),
.sum (popc_byte7a_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b7b (
.cout (popc_byte7b_cout_fx2 ),
.carry(popc_byte7b_carry_fx2),
.sum (popc_byte7b_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b7c (
.i0 (popc_byte7a_cout_fx2 ),
.i1 (popc_byte7a_carry_fx2),
.i2 (popc_byte7b_cout_fx2 ),
.i3 (popc_byte7b_carry_fx2),
.cout (popc_byte7c_cout_fx2 ),
.carry(popc_byte7c_carry_fx2),
.sum (popc_byte7c_sum_fx2 )
fgu_fgd_dp_cla_macro__width_4 popc_b7 ( // 0in maximum -val 8 -var {popc_b7_unused, popc_byte7_sum_fx2[3:0]}
.din0({1'b0, popc_byte7c_carry_fx2, popc_byte7c_sum_fx2, popc_byte7a_sum_fx2}),
.din1({1'b0, popc_byte7c_cout_fx2 , 1'b0 , popc_byte7b_sum_fx2}),
.dout(popc_byte7_sum_fx2[3:0]),
fgu_fgd_dp_csa42_macro__width_1 popc_b6a (
.cout (popc_byte6a_cout_fx2 ),
.carry(popc_byte6a_carry_fx2),
.sum (popc_byte6a_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b6b (
.cout (popc_byte6b_cout_fx2 ),
.carry(popc_byte6b_carry_fx2),
.sum (popc_byte6b_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b6c (
.i0 (popc_byte6a_cout_fx2 ),
.i1 (popc_byte6a_carry_fx2),
.i2 (popc_byte6b_cout_fx2 ),
.i3 (popc_byte6b_carry_fx2),
.cout (popc_byte6c_cout_fx2 ),
.carry(popc_byte6c_carry_fx2),
.sum (popc_byte6c_sum_fx2 )
fgu_fgd_dp_cla_macro__width_4 popc_b6 ( // 0in maximum -val 8 -var {popc_b6_unused, popc_byte6_sum_fx2[3:0]}
.din0({1'b0, popc_byte6c_carry_fx2, popc_byte6c_sum_fx2, popc_byte6a_sum_fx2}),
.din1({1'b0, popc_byte6c_cout_fx2 , 1'b0 , popc_byte6b_sum_fx2}),
.dout(popc_byte6_sum_fx2[3:0]),
fgu_fgd_dp_csa42_macro__width_1 popc_b5a (
.cout (popc_byte5a_cout_fx2 ),
.carry(popc_byte5a_carry_fx2),
.sum (popc_byte5a_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b5b (
.cout (popc_byte5b_cout_fx2 ),
.carry(popc_byte5b_carry_fx2),
.sum (popc_byte5b_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b5c (
.i0 (popc_byte5a_cout_fx2 ),
.i1 (popc_byte5a_carry_fx2),
.i2 (popc_byte5b_cout_fx2 ),
.i3 (popc_byte5b_carry_fx2),
.cout (popc_byte5c_cout_fx2 ),
.carry(popc_byte5c_carry_fx2),
.sum (popc_byte5c_sum_fx2 )
fgu_fgd_dp_cla_macro__width_4 popc_b5 ( // 0in maximum -val 8 -var {popc_b5_unused, popc_byte5_sum_fx2[3:0]}
.din0({1'b0, popc_byte5c_carry_fx2, popc_byte5c_sum_fx2, popc_byte5a_sum_fx2}),
.din1({1'b0, popc_byte5c_cout_fx2 , 1'b0 , popc_byte5b_sum_fx2}),
.dout(popc_byte5_sum_fx2[3:0]),
fgu_fgd_dp_csa42_macro__width_1 popc_b4a (
.cout (popc_byte4a_cout_fx2 ),
.carry(popc_byte4a_carry_fx2),
.sum (popc_byte4a_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b4b (
.cout (popc_byte4b_cout_fx2 ),
.carry(popc_byte4b_carry_fx2),
.sum (popc_byte4b_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b4c (
.i0 (popc_byte4a_cout_fx2 ),
.i1 (popc_byte4a_carry_fx2),
.i2 (popc_byte4b_cout_fx2 ),
.i3 (popc_byte4b_carry_fx2),
.cout (popc_byte4c_cout_fx2 ),
.carry(popc_byte4c_carry_fx2),
.sum (popc_byte4c_sum_fx2 )
fgu_fgd_dp_cla_macro__width_4 popc_b4 ( // 0in maximum -val 8 -var {popc_b4_unused, popc_byte4_sum_fx2[3:0]}
.din0({1'b0, popc_byte4c_carry_fx2, popc_byte4c_sum_fx2, popc_byte4a_sum_fx2}),
.din1({1'b0, popc_byte4c_cout_fx2 , 1'b0 , popc_byte4b_sum_fx2}),
.dout(popc_byte4_sum_fx2[3:0]),
fgu_fgd_dp_csa42_macro__width_1 popc_b3a (
.cout (popc_byte3a_cout_fx2 ),
.carry(popc_byte3a_carry_fx2),
.sum (popc_byte3a_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b3b (
.cout (popc_byte3b_cout_fx2 ),
.carry(popc_byte3b_carry_fx2),
.sum (popc_byte3b_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b3c (
.i0 (popc_byte3a_cout_fx2 ),
.i1 (popc_byte3a_carry_fx2),
.i2 (popc_byte3b_cout_fx2 ),
.i3 (popc_byte3b_carry_fx2),
.cout (popc_byte3c_cout_fx2 ),
.carry(popc_byte3c_carry_fx2),
.sum (popc_byte3c_sum_fx2 )
fgu_fgd_dp_cla_macro__width_4 popc_b3 ( // 0in maximum -val 8 -var {popc_b3_unused, popc_byte3_sum_fx2[3:0]}
.din0({1'b0, popc_byte3c_carry_fx2, popc_byte3c_sum_fx2, popc_byte3a_sum_fx2}),
.din1({1'b0, popc_byte3c_cout_fx2 , 1'b0 , popc_byte3b_sum_fx2}),
.dout(popc_byte3_sum_fx2[3:0]),
fgu_fgd_dp_csa42_macro__width_1 popc_b2a (
.cout (popc_byte2a_cout_fx2 ),
.carry(popc_byte2a_carry_fx2),
.sum (popc_byte2a_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b2b (
.cout (popc_byte2b_cout_fx2 ),
.carry(popc_byte2b_carry_fx2),
.sum (popc_byte2b_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b2c (
.i0 (popc_byte2a_cout_fx2 ),
.i1 (popc_byte2a_carry_fx2),
.i2 (popc_byte2b_cout_fx2 ),
.i3 (popc_byte2b_carry_fx2),
.cout (popc_byte2c_cout_fx2 ),
.carry(popc_byte2c_carry_fx2),
.sum (popc_byte2c_sum_fx2 )
fgu_fgd_dp_cla_macro__width_4 popc_b2 ( // 0in maximum -val 8 -var {popc_b2_unused, popc_byte2_sum_fx2[3:0]}
.din0({1'b0, popc_byte2c_carry_fx2, popc_byte2c_sum_fx2, popc_byte2a_sum_fx2}),
.din1({1'b0, popc_byte2c_cout_fx2 , 1'b0 , popc_byte2b_sum_fx2}),
.dout(popc_byte2_sum_fx2[3:0]),
fgu_fgd_dp_csa42_macro__width_1 popc_b1a (
.cout (popc_byte1a_cout_fx2 ),
.carry(popc_byte1a_carry_fx2),
.sum (popc_byte1a_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b1b (
.cout (popc_byte1b_cout_fx2 ),
.carry(popc_byte1b_carry_fx2),
.sum (popc_byte1b_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b1c (
.i0 (popc_byte1a_cout_fx2 ),
.i1 (popc_byte1a_carry_fx2),
.i2 (popc_byte1b_cout_fx2 ),
.i3 (popc_byte1b_carry_fx2),
.cout (popc_byte1c_cout_fx2 ),
.carry(popc_byte1c_carry_fx2),
.sum (popc_byte1c_sum_fx2 )
fgu_fgd_dp_cla_macro__width_4 popc_b1 ( // 0in maximum -val 8 -var {popc_b1_unused, popc_byte1_sum_fx2[3:0]}
.din0({1'b0, popc_byte1c_carry_fx2, popc_byte1c_sum_fx2, popc_byte1a_sum_fx2}),
.din1({1'b0, popc_byte1c_cout_fx2 , 1'b0 , popc_byte1b_sum_fx2}),
.dout(popc_byte1_sum_fx2[3:0]),
fgu_fgd_dp_csa42_macro__width_1 popc_b0a (
.cout (popc_byte0a_cout_fx2 ),
.carry(popc_byte0a_carry_fx2),
.sum (popc_byte0a_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b0b (
.cout (popc_byte0b_cout_fx2 ),
.carry(popc_byte0b_carry_fx2),
.sum (popc_byte0b_sum_fx2 )
fgu_fgd_dp_csa42_macro__width_1 popc_b0c (
.i0 (popc_byte0a_cout_fx2 ),
.i1 (popc_byte0a_carry_fx2),
.i2 (popc_byte0b_cout_fx2 ),
.i3 (popc_byte0b_carry_fx2),
.cout (popc_byte0c_cout_fx2 ),
.carry(popc_byte0c_carry_fx2),
.sum (popc_byte0c_sum_fx2 )
fgu_fgd_dp_cla_macro__width_4 popc_b0 ( // 0in maximum -val 8 -var {popc_b0_unused, popc_byte0_sum_fx2[3:0]}
.din0({1'b0, popc_byte0c_carry_fx2, popc_byte0c_sum_fx2, popc_byte0a_sum_fx2}),
.din1({1'b0, popc_byte0c_cout_fx2 , 1'b0 , popc_byte0b_sum_fx2}),
.dout(popc_byte0_sum_fx2[3:0]),
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
fgu_fgd_dp_msff_macro__width_64 fx3_rs1 (
.scan_in(fx3_rs1_scanin),
.scan_out(fx3_rs1_scanout),
fgu_fgd_dp_buff_macro__width_64 buf_rs1 (
fgu_fgd_dp_msff_macro__minbuff_1__width_64 fx3_rs2 (
.scan_in(fx3_rs2_scanin),
.scan_out(fx3_rs2_scanout),
fgu_fgd_dp_buff_macro__width_64 buf_rs2 (
fgu_fgd_dp_msff_macro__stack_32l__width_32 fx3_gsr_mask (
.scan_in(fx3_gsr_mask_scanin),
.scan_out(fx3_gsr_mask_scanout),
.dout(gsr_mask_fx3[31:0]),
fgu_fgd_dp_msff_macro__width_32 fx3_popc (
.scan_in(fx3_popc_scanin),
.scan_out(fx3_popc_scanout),
.din ({popc_byte0_sum_fx2[3:0],
popc_byte7_sum_fx2[3:0]}),
.dout({popc_byte0_sum_fx3[3:0],
popc_byte7_sum_fx3[3:0]}),
fgu_fgd_dp_msff_macro__width_33 fx3_ctl (
.scan_in(fx3_ctl_scanin),
.scan_out(fx3_ctl_scanout),
// ----------------------------------------------------------------------------
// Instr opf bit: 4321 rs1 rs2
// -------------------------- sel1 sel0 out
// FZERO, FZEROS 0000 -------------------------
// FNOR, FNORS 0001 0 0 in0: opf[1]
// FANDNOT2, FANDNOT2S 0010 0 1 in1: opf[3]
// FNOT2, FNOT2S 0011 1 0 in2: opf[2]
// FANDNOT1, FANDNOT1S 0100 1 1 in3: opf[4]
// FORNOT2, FORNOT2S 1011
// FORNOT1, FORNOT1S 1101
// Logical instr are implemented with a 4:1 mux structure built from a
// nand-nand (and-or) gate organization.
// ----------------------------------------------------------------------------
fgu_fgd_dp_buff_macro__width_64 buf_rs101 (
fgu_fgd_dp_buff_macro__width_64 buf_rs201 (
fgu_fgd_dp_inv_macro__width_64 inv_rs2 (
fgu_fgd_dp_inv_macro__width_64 inv_rs1 (
fgu_fgd_dp_buff_macro__width_8 buf_opf (
.din ({opf_fx3[4:1], opf_fx3[4:1] }),
.dout({opf1_fx3[4:1],opf0_fx3[4:1]})
fgu_fgd_dp_nand_macro__ports_3__width_64 log_00 (
.din2({{32{opf1_fx3[1]}},{32{opf0_fx3[1]}}}),
.dout(logical_int0_fx3[63:0])
fgu_fgd_dp_nand_macro__ports_3__width_64 log_01 (
.din2({{32{opf1_fx3[3]}},{32{opf0_fx3[3]}}}),
.dout(logical_int1_fx3[63:0])
fgu_fgd_dp_nand_macro__ports_3__width_64 log_02 (
.din2({{32{opf1_fx3[2]}},{32{opf0_fx3[2]}}}),
.dout(logical_int2_fx3[63:0])
fgu_fgd_dp_nand_macro__ports_3__width_64 log_03 (
.din2({{32{opf1_fx3[4]}},{32{opf0_fx3[4]}}}),
.dout(logical_int3_fx3[63:0])
fgu_fgd_dp_nand_macro__ports_4__width_64 log_04 (
.din0(logical_int0_fx3[63:0]),
.din1(logical_int1_fx3[63:0]),
.din2(logical_int2_fx3[63:0]),
.din3(logical_int3_fx3[63:0]),
.dout(logical_result_fx3[63:0])
// ------------------------------------
// bshuffle rs1 and rs2 byte muxes
// ------------------------------------
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf1_b0 (
.sel(gsr_mask0_fx4[30:28]),
.dout(rs1_shuf_fx3[63:56])
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf1_b1 (
.sel(gsr_mask0_fx4[26:24]),
.dout(rs1_shuf_fx3[55:48])
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf1_b2 (
.sel(gsr_mask0_fx4[22:20]),
.dout(rs1_shuf_fx3[47:40])
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf1_b3 (
.sel(gsr_mask0_fx4[18:16]),
.dout(rs1_shuf_fx3[39:32])
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf1_b4 (
.sel(gsr_mask0_fx4[14:12]),
.dout(rs1_shuf_fx3[31:24])
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf1_b5 (
.sel(gsr_mask0_fx4[10:8]),
.dout(rs1_shuf_fx3[23:16])
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf1_b6 (
.sel(gsr_mask0_fx4[6:4]),
.dout(rs1_shuf_fx3[15:8])
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf1_b7 (
.sel(gsr_mask0_fx4[2:0]),
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf2_b0 (
.sel(gsr_mask0_fx4[30:28]),
.dout(rs2_shuf_fx3[63:56])
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf2_b1 (
.sel(gsr_mask0_fx4[26:24]),
.dout(rs2_shuf_fx3[55:48])
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf2_b2 (
.sel(gsr_mask0_fx4[22:20]),
.dout(rs2_shuf_fx3[47:40])
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf2_b3 (
.sel(gsr_mask0_fx4[18:16]),
.dout(rs2_shuf_fx3[39:32])
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf2_b4 (
.sel(gsr_mask0_fx4[14:12]),
.dout(rs2_shuf_fx3[31:24])
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf2_b5 (
.sel(gsr_mask0_fx4[10:8]),
.dout(rs2_shuf_fx3[23:16])
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf2_b6 (
.sel(gsr_mask0_fx4[6:4]),
.dout(rs2_shuf_fx3[15:8])
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 shuf2_b7 (
.sel(gsr_mask0_fx4[2:0]),
// ------------------------------------
// ------------------------------------
fgu_fgd_dp_mux_macro__mux_pgpe__ports_2__width_8 bres_b0 (
.din0(rs2_shuf_fx3[63:56]),
.din1(rs1_shuf_fx3[63:56]),
.sel0(gsr_mask0_fx4[31]),
.dout(shuf_result_fx3[63:56])
fgu_fgd_dp_mux_macro__mux_pgpe__ports_2__width_8 bres_b1 (
.din0(rs2_shuf_fx3[55:48]),
.din1(rs1_shuf_fx3[55:48]),
.sel0(gsr_mask0_fx4[27]),
.dout(shuf_result_fx3[55:48])
fgu_fgd_dp_mux_macro__mux_pgpe__ports_2__width_8 bres_b2 (
.din0(rs2_shuf_fx3[47:40]),
.din1(rs1_shuf_fx3[47:40]),
.sel0(gsr_mask0_fx4[23]),
.dout(shuf_result_fx3[47:40])
fgu_fgd_dp_mux_macro__mux_pgpe__ports_2__width_8 bres_b3 (
.din0(rs2_shuf_fx3[39:32]),
.din1(rs1_shuf_fx3[39:32]),
.sel0(gsr_mask0_fx4[19]),
.dout(shuf_result_fx3[39:32])
fgu_fgd_dp_mux_macro__mux_pgpe__ports_2__width_8 bres_b4 (
.din0(rs2_shuf_fx3[31:24]),
.din1(rs1_shuf_fx3[31:24]),
.sel0(gsr_mask0_fx4[15]),
.dout(shuf_result_fx3[31:24])
fgu_fgd_dp_mux_macro__mux_pgpe__ports_2__width_8 bres_b5 (
.din0(rs2_shuf_fx3[23:16]),
.din1(rs1_shuf_fx3[23:16]),
.sel0(gsr_mask0_fx4[11]),
.dout(shuf_result_fx3[23:16])
fgu_fgd_dp_mux_macro__mux_pgpe__ports_2__width_8 bres_b6 (
.din0(rs2_shuf_fx3[15:8]),
.din1(rs1_shuf_fx3[15:8]),
.dout(shuf_result_fx3[15:8])
fgu_fgd_dp_mux_macro__mux_pgpe__ports_2__width_8 bres_b7 (
.din0(rs2_shuf_fx3[7:0]),
.din1(rs1_shuf_fx3[7:0]),
.dout(shuf_result_fx3[7:0])
// ------------------------------------
// ------------------------------------
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_64 align (
.din1({rs10_fx3[55:0],rs20_fx3[63:56]}),
.din2({rs10_fx3[47:0],rs20_fx3[63:48]}),
.din3({rs10_fx3[39:0],rs20_fx3[63:40]}),
.din4({rs10_fx3[31:0],rs20_fx3[63:32]}),
.din5({rs10_fx3[23:0],rs20_fx3[63:24]}),
.din6({rs10_fx3[15:0],rs20_fx3[63:16]}),
.din7({rs10_fx3[7:0], rs20_fx3[63:8] }),
.sel (fpc_gsr_align_fx4[2:0]),
.dout(align_result_fx3[63:0])
// ------------------------------------
// generate sign bit for FNEG, FABS
// ------------------------------------
fgu_fgd_dp_xnor_macro__ports_2__width_1 sign63a (
.din0(fgx_neg_fx3), // negate sign bit
.dout(rs2_sign63_neg_fx3)
fgu_fgd_dp_nor_macro__ports_2__width_1 sign63b (
.din0(fgx_abs_fx3), // clear sign bit
.din1(rs2_sign63_neg_fx3),
.dout(rs2_sign63_res_fx3)
// ------------------------------------
// simple instruction intermediate result mux
// ------------------------------------
fgu_fgd_dp_msff_macro__mux_aope__ports_6__width_64 fx4_simp (
.scan_in(fx4_simp_scanin),
.scan_out(fx4_simp_scanout),
.din0(logical_result_fx3[63:0]),
.din1({4'b0000,rs201_fx3[63:56],4'b0000,
4'b0000,rs201_fx3[55:48],4'b0000,
4'b0000,rs201_fx3[47:40],4'b0000,
4'b0000,rs201_fx3[39:32],4'b0000 }),
.din2({rs101_fx3[63:56],rs201_fx3[63:56],rs101_fx3[55:48],rs201_fx3[55:48],
rs101_fx3[47:40],rs201_fx3[47:40],rs101_fx3[39:32],rs201_fx3[39:32] }),
.din3(align_result_fx3[63:0]),
.din4(shuf_result_fx3[63:0]),
.din5({rs2_sign63_res_fx3,rs201_fx3[62:0]}),
// else: FMOV(uncond/cond), FABS, FNEG
.dout(simp_result_fx4[63:0]),
// ------------------------------------
// fpack left shifter (data result)
// partitioned into four 16b shifters: [63:48],[47:32],[31:16],[15:00]
// ------------------------------------
fgu_fgd_dp_inv_macro__width_1 ipack16 (
fgu_fgd_dp_nand_macro__ports_2__width_1 gsr4 (
.din0(fpc_gsr_scale_fx4[4]),
.din1(fgx_pack16_fx3_), // ignore gsr_scale_fx4[4] if FPACK16
// ------------------------------------
// ------------------------------------
fgu_fgd_dp_mux_macro__mux_aope__ports_2__width_32 pack_16_d3d2 (
.din0( rs201_fx3[63:32] ),
.din1({rs201_fx3[47:32], 16'b0}),
.sel0(sh16_sel_fx3), // shift 0,16 bits
.dout(shift16_fx3[63:32])
fgu_fgd_dp_and_macro__ports_2__width_12 gate16d3 (
.din0(shift16_fx3[47:36]),
.din1({12{fgx_pack16_fx3_}}),
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_16 pack_04_d3 (
.din0( shift16_fx3[63:48] ),
.din1({shift16_fx3[59:48], gate16_fx3[23:20]}),
.din2({shift16_fx3[55:48], gate16_fx3[23:16]}),
.din3({shift16_fx3[51:48], gate16_fx3[23:12]}),
.sel (fpc_gsr_scale_fx4[3:2]), // shift 0,4,8,12 bits
.dout(shift04_fx3[63:48])
fgu_fgd_dp_and_macro__ports_2__width_3 gate04d3 (
.din0(shift04_fx3[47:45]),
.din1({3{fgx_pack16_fx3_}}),
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_16 pack_01_d3 (
.din0( shift04_fx3[63:48] ),
.din1({shift04_fx3[62:48], gate04_fx3[5:5]}),
.din2({shift04_fx3[61:48], gate04_fx3[5:4]}),
.din3({shift04_fx3[60:48], gate04_fx3[5:3]}),
.sel (fpc_gsr_scale_fx4[1:0]), // shift 0,1,2,3 bits
.dout(shift01_fx3[63:48])
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_16 pack_04_d2 (
.din0( shift16_fx3[47:32] ),
.din1({shift16_fx3[43:32], 4'b0}),
.din2({shift16_fx3[39:32], 8'b0}),
.din3({shift16_fx3[35:32], 12'b0}),
.sel (fpc_gsr_scale_fx4[3:2]), // shift 0,4,8,12 bits
.dout(shift04_fx3[47:32])
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_16 pack_01_d2 (
.din0( shift04_fx3[47:32] ),
.din1({shift04_fx3[46:32], 1'b0}),
.din2({shift04_fx3[45:32], 2'b0}),
.din3({shift04_fx3[44:32], 3'b0}),
.sel (fpc_gsr_scale_fx4[1:0]), // shift 0,1,2,3 bits
.dout({shift01_fx3[47:39], pack_01_d2_unused[6:0]})
// ------------------------------------
// ------------------------------------
fgu_fgd_dp_mux_macro__mux_aope__ports_2__width_32 pack_16_d1d0 (
.din0( rs201_fx3[31:0] ),
.din1({rs201_fx3[15:0], 16'b0}),
.sel0(sh16_sel_fx3), // shift 0,16 bits
fgu_fgd_dp_and_macro__ports_2__width_12 gate16d1 (
.din0(shift16_fx3[15:4]),
.din1({12{fgx_pack16_fx3_}}),
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_16 pack_04_d1 (
.din0( shift16_fx3[31:16] ),
.din1({shift16_fx3[27:16], gate16_fx3[11:8]}),
.din2({shift16_fx3[23:16], gate16_fx3[11:4]}),
.din3({shift16_fx3[19:16], gate16_fx3[11:0]}),
.sel (fpc_gsr_scale_fx4[3:2]), // shift 0,4,8,12 bits
.dout(shift04_fx3[31:16])
fgu_fgd_dp_and_macro__ports_2__width_3 gate04d1 (
.din0(shift04_fx3[15:13]),
.din1({3{fgx_pack16_fx3_}}),
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_16 pack_01_d1 (
.din0( shift04_fx3[31:16] ),
.din1({shift04_fx3[30:16], gate04_fx3[2:2]}),
.din2({shift04_fx3[29:16], gate04_fx3[2:1]}),
.din3({shift04_fx3[28:16], gate04_fx3[2:0]}),
.sel (fpc_gsr_scale_fx4[1:0]), // shift 0,1,2,3 bits
.dout(shift01_fx3[31:16])
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_16 pack_04_d0 (
.din0( shift16_fx3[15:0] ),
.din1({shift16_fx3[11:0], 4'b0}),
.din2({shift16_fx3[7:0], 8'b0}),
.din3({shift16_fx3[3:0], 12'b0}),
.sel (fpc_gsr_scale_fx4[3:2]), // shift 0,4,8,12 bits
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_16 pack_01_d0 (
.din0( shift04_fx3[15:0] ),
.din1({shift04_fx3[14:0], 1'b0}),
.din2({shift04_fx3[13:0], 2'b0}),
.din3({shift04_fx3[12:0], 3'b0}),
.sel (fpc_gsr_scale_fx4[1:0]), // shift 0,1,2,3 bits
.dout({shift01_fx3[15:7], pack_01_d0_unused[6:0]})
// ------------------------------------
// fpack collection of shifted off (clipping) data
// used to determine if const data output is required
// ------------------------------------
// ------------------------------------
// ------------------------------------
fgu_fgd_dp_and_macro__ports_2__width_1 packsign63 (
fgu_fgd_dp_mux_macro__mux_aope__ports_2__width_16 pack_16_c3c2 (
.din0({16{pack_sign63_fx3}}),
.sel0(sh16_sel_fx3), // shift 0,16 bits
.dout(clip16_c3_fx3[15:0])
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_28 pack_04_c3 (
.din0({{12{pack_sign63_fx3}}, clip16_c3_fx3[15:0] }),
.din1({{ 8{pack_sign63_fx3}}, clip16_c3_fx3[15:0], shift16_fx3[63:60]}),
.din2({{ 4{pack_sign63_fx3}}, clip16_c3_fx3[15:0], shift16_fx3[63:56]}),
.din3({ clip16_c3_fx3[15:0], shift16_fx3[63:52]}),
.sel (fpc_gsr_scale_fx4[3:2]), // shift 0,4,8,12 bits
.dout(clip04_c3_fx3[27:0])
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_31 pack_01_c3 (
.din0({{3{pack_sign63_fx3}}, clip04_c3_fx3[27:0] }),
.din1({{2{pack_sign63_fx3}}, clip04_c3_fx3[27:0], shift04_fx3[63:63]}),
.din2({{1{pack_sign63_fx3}}, clip04_c3_fx3[27:0], shift04_fx3[63:62]}),
.din3({ clip04_c3_fx3[27:0], shift04_fx3[63:61]}),
.sel (fpc_gsr_scale_fx4[1:0]), // shift 0,1,2,3 bits
.dout(clip01_c3_fx3[30:0])
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_12 pack_04_c2 (
.din1({ 8'b0, shift16_fx3[47:44]}),
.din2({ 4'b0, shift16_fx3[47:40]}),
.din3( shift16_fx3[47:36] ),
.sel (fpc_gsr_scale_fx4[3:2]), // shift 0,4,8,12 bits
.dout(clip04_c2_fx3[11:0])
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_15 pack_01_c2 (
.din0({3'b0, clip04_c2_fx3[11:0] }),
.din1({2'b0, clip04_c2_fx3[11:0], shift04_fx3[47:47]}),
.din2({1'b0, clip04_c2_fx3[11:0], shift04_fx3[47:46]}),
.din3({ clip04_c2_fx3[11:0], shift04_fx3[47:45]}),
.sel (fpc_gsr_scale_fx4[1:0]), // shift 0,1,2,3 bits
.dout(clip01_c2_fx3[14:0])
// ------------------------------------
// ------------------------------------
fgu_fgd_dp_and_macro__ports_2__width_1 packsign31 (
fgu_fgd_dp_mux_macro__mux_aope__ports_2__width_16 pack_16_c1c0 (
.din0({16{pack_sign31_fx3}}),
.sel0(sh16_sel_fx3), // shift 0,16 bits
.dout(clip16_c1_fx3[15:0])
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_28 pack_04_c1 (
.din0({{12{pack_sign31_fx3}}, clip16_c1_fx3[15:0] }),
.din1({{ 8{pack_sign31_fx3}}, clip16_c1_fx3[15:0], shift16_fx3[31:28]}),
.din2({{ 4{pack_sign31_fx3}}, clip16_c1_fx3[15:0], shift16_fx3[31:24]}),
.din3({ clip16_c1_fx3[15:0], shift16_fx3[31:20]}),
.sel (fpc_gsr_scale_fx4[3:2]), // shift 0,4,8,12 bits
.dout(clip04_c1_fx3[27:0])
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_31 pack_01_c1 (
.din0({{3{pack_sign31_fx3}}, clip04_c1_fx3[27:0] }),
.din1({{2{pack_sign31_fx3}}, clip04_c1_fx3[27:0], shift04_fx3[31:31]}),
.din2({{1{pack_sign31_fx3}}, clip04_c1_fx3[27:0], shift04_fx3[31:30]}),
.din3({ clip04_c1_fx3[27:0], shift04_fx3[31:29]}),
.sel (fpc_gsr_scale_fx4[1:0]), // shift 0,1,2,3 bits
.dout(clip01_c1_fx3[30:0])
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_12 pack_04_c0 (
.din1({ 8'b0, shift16_fx3[15:12]}),
.din2({ 4'b0, shift16_fx3[15:8]}),
.din3( shift16_fx3[15:4] ),
.sel (fpc_gsr_scale_fx4[3:2]), // shift 0,4,8,12 bits
.dout(clip04_c0_fx3[11:0])
fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_15 pack_01_c0 (
.din0({3'b0, clip04_c0_fx3[11:0] }),
.din1({2'b0, clip04_c0_fx3[11:0], shift04_fx3[15:15]}),
.din2({1'b0, clip04_c0_fx3[11:0], shift04_fx3[15:14]}),
.din3({ clip04_c0_fx3[11:0], shift04_fx3[15:13]}),
.sel (fpc_gsr_scale_fx4[1:0]), // shift 0,1,2,3 bits
.dout(clip01_c0_fx3[14:0])
// ------------------------------------
// ------------------------------------
// ------------------------------------
// uniquie PDIST frontend (fx3)
// ------------------------------------
fgu_fgd_dp_cla_macro__width_8 pdist_amb0 (
.din0(rs101_fx3[63:56] ),
.din1(rs201_fx3_[63:56]),
.dout(pdist_amb_fx3[63:56]),
.cout(pdist_amb_cout0_fx3)
fgu_fgd_dp_cla_macro__width_8 pdist_amb1 (
.din0(rs101_fx3[55:48] ),
.din1(rs201_fx3_[55:48]),
.dout(pdist_amb_fx3[55:48]),
.cout(pdist_amb_cout1_fx3)
fgu_fgd_dp_cla_macro__width_8 pdist_amb2 (
.din0(rs101_fx3[47:40] ),
.din1(rs201_fx3_[47:40]),
.dout(pdist_amb_fx3[47:40]),
.cout(pdist_amb_cout2_fx3)
fgu_fgd_dp_cla_macro__width_8 pdist_amb3 (
.din0(rs101_fx3[39:32] ),
.din1(rs201_fx3_[39:32]),
.dout(pdist_amb_fx3[39:32]),
.cout(pdist_amb_cout3_fx3)
fgu_fgd_dp_cla_macro__width_8 pdist_amb4 (
.din0(rs101_fx3[31:24] ),
.din1(rs201_fx3_[31:24]),
.dout(pdist_amb_fx3[31:24]),
.cout(pdist_amb_cout4_fx3)
fgu_fgd_dp_cla_macro__width_8 pdist_amb5 (
.din0(rs101_fx3[23:16] ),
.din1(rs201_fx3_[23:16]),
.dout(pdist_amb_fx3[23:16]),
.cout(pdist_amb_cout5_fx3)
fgu_fgd_dp_cla_macro__width_8 pdist_amb6 (
.dout(pdist_amb_fx3[15:8]),
.cout(pdist_amb_cout6_fx3)
fgu_fgd_dp_cla_macro__width_8 pdist_amb7 (
.dout(pdist_amb_fx3[7:0]),
.cout(pdist_amb_cout7_fx3)
// ------------------------------------
// uniquie PDIST frontend (fx3)
// ------------------------------------
fgu_fgd_dp_cla_macro__width_8 pdist_bma0 (
.din0(rs201_fx3[63:56] ),
.din1(rs101_fx3_[63:56]),
.dout(pdist_bma_fx3[63:56]),
fgu_fgd_dp_cla_macro__width_8 pdist_bma1 (
.din0(rs201_fx3[55:48] ),
.din1(rs101_fx3_[55:48]),
.dout(pdist_bma_fx3[55:48]),
fgu_fgd_dp_cla_macro__width_8 pdist_bma2 (
.din0(rs201_fx3[47:40] ),
.din1(rs101_fx3_[47:40]),
.dout(pdist_bma_fx3[47:40]),
fgu_fgd_dp_cla_macro__width_8 pdist_bma3 (
.din0(rs201_fx3[39:32] ),
.din1(rs101_fx3_[39:32]),
.dout(pdist_bma_fx3[39:32]),
fgu_fgd_dp_cla_macro__width_8 pdist_bma4 (
.din0(rs201_fx3[31:24] ),
.din1(rs101_fx3_[31:24]),
.dout(pdist_bma_fx3[31:24]),
fgu_fgd_dp_cla_macro__width_8 pdist_bma5 (
.din0(rs201_fx3[23:16] ),
.din1(rs101_fx3_[23:16]),
.dout(pdist_bma_fx3[23:16]),
fgu_fgd_dp_cla_macro__width_8 pdist_bma6 (
.dout(pdist_bma_fx3[15:8]),
fgu_fgd_dp_cla_macro__width_8 pdist_bma7 (
.dout(pdist_bma_fx3[7:0]),
// ------------------------------------
// to proceed to the common backend
// ------------------------------------
fgu_fgd_dp_mux_macro__mux_aope__ports_3__width_8 pdist_mux0 (
.din0({4'b0, popc_byte0_sum_fx3[3:0]}),
.din1(pdist_amb_fx3[63:56]),
.din2(pdist_bma_fx3[63:56]),
.sel1(pdist_amb_cout0_fx3),
.dout(pdist_mux_fx3[63:56])
fgu_fgd_dp_mux_macro__mux_aope__ports_3__width_8 pdist_mux1 (
.din0({4'b0, popc_byte1_sum_fx3[3:0]}),
.din1(pdist_amb_fx3[55:48]),
.din2(pdist_bma_fx3[55:48]),
.sel1(pdist_amb_cout1_fx3),
.dout(pdist_mux_fx3[55:48])
fgu_fgd_dp_mux_macro__mux_aope__ports_3__width_8 pdist_mux2 (
.din0({4'b0, popc_byte2_sum_fx3[3:0]}),
.din1(pdist_amb_fx3[47:40]),
.din2(pdist_bma_fx3[47:40]),
.sel1(pdist_amb_cout2_fx3),
.dout(pdist_mux_fx3[47:40])
fgu_fgd_dp_mux_macro__mux_aope__ports_3__width_8 pdist_mux3 (
.din0({4'b0, popc_byte3_sum_fx3[3:0]}),
.din1(pdist_amb_fx3[39:32]),
.din2(pdist_bma_fx3[39:32]),
.sel1(pdist_amb_cout3_fx3),
.dout(pdist_mux_fx3[39:32])
fgu_fgd_dp_mux_macro__mux_aope__ports_3__width_8 pdist_mux4 (
.din0({4'b0, popc_byte4_sum_fx3[3:0]}),
.din1(pdist_amb_fx3[31:24]),
.din2(pdist_bma_fx3[31:24]),
.sel1(pdist_amb_cout4_fx3),
.dout(pdist_mux_fx3[31:24])
fgu_fgd_dp_mux_macro__mux_aope__ports_3__width_8 pdist_mux5 (
.din0({4'b0, popc_byte5_sum_fx3[3:0]}),
.din1(pdist_amb_fx3[23:16]),
.din2(pdist_bma_fx3[23:16]),
.sel1(pdist_amb_cout5_fx3),
.dout(pdist_mux_fx3[23:16])
fgu_fgd_dp_mux_macro__mux_aope__ports_3__width_8 pdist_mux6 (
.din0({4'b0, popc_byte6_sum_fx3[3:0]}),
.din1(pdist_amb_fx3[15:8]),
.din2(pdist_bma_fx3[15:8]),
.sel1(pdist_amb_cout6_fx3),
.dout(pdist_mux_fx3[15:8])
fgu_fgd_dp_mux_macro__mux_aope__ports_3__width_8 pdist_mux7 (
.din0({4'b0, popc_byte7_sum_fx3[3:0]}),
.din1(pdist_amb_fx3[7:0]),
.din2(pdist_bma_fx3[7:0]),
.sel1(pdist_amb_cout7_fx3),
.dout(pdist_mux_fx3[7:0])
// ------------------------------------
// common PDIST,POPC backend (fx3)
// begin compression of 8 8-bit values
// ------------------------------------
fgu_fgd_dp_csa42_macro__width_8 pdist_42csa_0 (
.i0 (pdist_mux_fx3[7:0]),
.i1 (pdist_mux_fx3[15:8]),
.i2 (pdist_mux_fx3[23:16]),
.i3 (pdist_mux_fx3[31:24]),
.cout (pdist_42csa_cout0_fx3 ),
.carry(pdist_42csa_carry0_fx3[8:1]),
.sum (pdist_42csa_sum0_fx3[7:0] )
fgu_fgd_dp_csa42_macro__width_8 pdist_42csa_1 (
.i0 (pdist_mux_fx3[39:32]),
.i1 (pdist_mux_fx3[47:40]),
.i2 (pdist_mux_fx3[55:48]),
.i3 (pdist_mux_fx3[63:56]),
.cout (pdist_42csa_cout1_fx3 ),
.carry(pdist_42csa_carry1_fx3[8:1]),
.sum (pdist_42csa_sum1_fx3[7:0] )
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
fgu_fgd_dp_msff_macro__width_48 fx4_rs1 (
.scan_in(fx4_rs1_scanin),
.scan_out(fx4_rs1_scanout),
.din ({rs101_fx3[55:32], rs101_fx3[23:0]}),
.dout({rs1_fx4[55:32], rs1_fx4[23:0] }),
fgu_fgd_dp_msff_macro__width_50 fx4_shift (
.scan_in(fx4_shift_scanin),
.scan_out(fx4_shift_scanout),
.din ({shift01_fx3[63:39], shift01_fx3[31:7]}),
.dout({shift01_fx4[63:39], shift01_fx4[31:7]}),
fgu_fgd_dp_msff_macro__width_62 fx4_clipa (
.scan_in(fx4_clipa_scanin),
.scan_out(fx4_clipa_scanout),
.din ({clip01_c3_fx3[30:0],clip01_c1_fx3[30:0]}),
.dout({clip01_c3_fx4[30:0],clip01_c1_fx4[30:0]}),
fgu_fgd_dp_msff_macro__width_37 fx4_clipb (
.scan_in(fx4_clipb_scanin),
.scan_out(fx4_clipb_scanout),
clip01_c2_fx3[14:0],clip01_c0_fx3[14:0],
fgx_packfix_fx3,fgx_pack32_fx3,fgx_pack16_fx3}),
clip01_c2_fx4[14:0],clip01_c0_fx4[14:0],
fgx_packfix_fx4,fgx_pack32_fx4,fgx_pack16_fx4}),
fgu_fgd_dp_msff_macro__width_34 fx4_pdist (
.scan_in(fx4_pdist_scanin),
.scan_out(fx4_pdist_scanout),
.din ({pdist_42csa_cout0_fx3,
pdist_42csa_carry0_fx3[8:1],
pdist_42csa_sum0_fx3[7:0],
pdist_42csa_carry1_fx3[8:1],
pdist_42csa_sum1_fx3[7:0] }),
.dout( pdist_42csa_data_fx4[33:0]),
// ------------------------------------
// GSR.mask flops, threads 0-7
// ------------------------------------
fgu_fgd_dp_msff_macro__stack_32l__width_6 fx4_gsrtid (
.scan_in(fx4_gsrtid_scanin),
.scan_out(fx4_gsrtid_scanout),
.din ({fac_gsr_asr_tid_fx2[2:0], fac_tid_fx2[2:0]}),
.dout({ gsr_asr_tid_fx3[2:0], tid_fx3[2:0]}),
fgu_fgd_dp_msff_macro__mux_aope__ports_2__stack_32l__width_32 fx4_gsr0mask ( // FS:wmr_protect
.scan_in(fx4_gsr0mask_wmr_scanin),
.scan_out(fx4_gsr0mask_wmr_scanout),
.en (fpc_gsr0_mask_sel_fx3[1]),
.din0(gsr_mask_fx3[31:0]),
.din1(in_rngl_cdbus_3f[63:32]),
.sel0(fpc_gsr0_mask_sel_fx3[0]),
.dout(gsr0_mask_fx4[31:0]),
fgu_fgd_dp_msff_macro__mux_aope__ports_2__stack_32l__width_32 fx4_gsr1mask ( // FS:wmr_protect
.scan_in(fx4_gsr1mask_wmr_scanin),
.scan_out(fx4_gsr1mask_wmr_scanout),
.en (fpc_gsr1_mask_sel_fx3[1]),
.din0(gsr_mask_fx3[31:0]),
.din1(in_rngl_cdbus_3f[63:32]),
.sel0(fpc_gsr1_mask_sel_fx3[0]),
.dout(gsr1_mask_fx4[31:0]),
fgu_fgd_dp_msff_macro__mux_aope__ports_2__stack_32l__width_32 fx4_gsr2mask ( // FS:wmr_protect
.scan_in(fx4_gsr2mask_wmr_scanin),
.scan_out(fx4_gsr2mask_wmr_scanout),
.en (fpc_gsr2_mask_sel_fx3[1]),
.din0(gsr_mask_fx3[31:0]),
.din1(in_rngl_cdbus_3f[63:32]),
.sel0(fpc_gsr2_mask_sel_fx3[0]),
.dout(gsr2_mask_fx4[31:0]),
fgu_fgd_dp_msff_macro__mux_aope__ports_2__stack_32l__width_32 fx4_gsr3mask ( // FS:wmr_protect
.scan_in(fx4_gsr3mask_wmr_scanin),
.scan_out(fx4_gsr3mask_wmr_scanout),
.en (fpc_gsr3_mask_sel_fx3[1]),
.din0(gsr_mask_fx3[31:0]),
.din1(in_rngl_cdbus_3f[63:32]),
.sel0(fpc_gsr3_mask_sel_fx3[0]),
.dout(gsr3_mask_fx4[31:0]),
fgu_fgd_dp_msff_macro__mux_aope__ports_2__stack_32l__width_32 fx4_gsr4mask ( // FS:wmr_protect
.scan_in(fx4_gsr4mask_wmr_scanin),
.scan_out(fx4_gsr4mask_wmr_scanout),
.en (fpc_gsr4_mask_sel_fx3[1]),
.din0(gsr_mask_fx3[31:0]),
.din1(in_rngl_cdbus_3f[63:32]),
.sel0(fpc_gsr4_mask_sel_fx3[0]),
.dout(gsr4_mask_fx4[31:0]),
fgu_fgd_dp_msff_macro__mux_aope__ports_2__stack_32l__width_32 fx4_gsr5mask ( // FS:wmr_protect
.scan_in(fx4_gsr5mask_wmr_scanin),
.scan_out(fx4_gsr5mask_wmr_scanout),
.en (fpc_gsr5_mask_sel_fx3[1]),
.din0(gsr_mask_fx3[31:0]),
.din1(in_rngl_cdbus_3f[63:32]),
.sel0(fpc_gsr5_mask_sel_fx3[0]),
.dout(gsr5_mask_fx4[31:0]),
fgu_fgd_dp_msff_macro__mux_aope__ports_2__stack_32l__width_32 fx4_gsr6mask ( // FS:wmr_protect
.scan_in(fx4_gsr6mask_wmr_scanin),
.scan_out(fx4_gsr6mask_wmr_scanout),
.en (fpc_gsr6_mask_sel_fx3[1]),
.din0(gsr_mask_fx3[31:0]),
.din1(in_rngl_cdbus_3f[63:32]),
.sel0(fpc_gsr6_mask_sel_fx3[0]),
.dout(gsr6_mask_fx4[31:0]),
fgu_fgd_dp_msff_macro__mux_aope__ports_2__stack_32l__width_32 fx4_gsr7mask ( // FS:wmr_protect
.scan_in(fx4_gsr7mask_wmr_scanin),
.scan_out(fx4_gsr7mask_wmr_scanout),
.en (fpc_gsr7_mask_sel_fx3[1]),
.din0(gsr_mask_fx3[31:0]),
.din1(in_rngl_cdbus_3f[63:32]),
.sel0(fpc_gsr7_mask_sel_fx3[0]),
.dout(gsr7_mask_fx4[31:0]),
// ------------------------------------
// GSR.mask thread 0-7 mux
// ------------------------------------
fgu_fgd_dp_mux_macro__mux_aodec__ports_8__stack_32l__width_32 mux_gsr (
.din0(gsr0_mask_fx4[31:0]),
.din1(gsr1_mask_fx4[31:0]),
.din2(gsr2_mask_fx4[31:0]),
.din3(gsr3_mask_fx4[31:0]),
.din4(gsr4_mask_fx4[31:0]),
.din5(gsr5_mask_fx4[31:0]),
.din6(gsr6_mask_fx4[31:0]),
.din7(gsr7_mask_fx4[31:0]),
.dout(gsr_mask_fx4[31:0])
fgu_fgd_dp_buff_macro__stack_32l__width_32 buf_gsr (
.din (gsr_mask_fx4[31:0]),
.dout(gsr_mask0_fx4[31:0])
fgu_fgd_dp_buff_macro__dbuff_48x__stack_32l__width_1 muxtest_a_rep0 (
.dout(tcu_muxtest_a_rep0)
fgu_fgd_dp_mux_macro__mux_pgdec__ports_8__stack_32l__width_32 mux_gsrasr (
.muxtst(tcu_muxtest_a_rep0),
.din0(gsr0_mask_fx4[31:0]),
.din1(gsr1_mask_fx4[31:0]),
.din2(gsr2_mask_fx4[31:0]),
.din3(gsr3_mask_fx4[31:0]),
.din4(gsr4_mask_fx4[31:0]),
.din5(gsr5_mask_fx4[31:0]),
.din6(gsr6_mask_fx4[31:0]),
.din7(gsr7_mask_fx4[31:0]),
.sel (gsr_asr_tid_fx3[2:0]),
.dout({fgd_gsr_asr_mask_fx4_b31, gsr_asr_mask_fx4[30:0]}),
// ------------------------------------
// fpack result const detection
// ------------------------------------
fgu_fgd_dp_zero_macro__width_32 pack_cmp3 (
.din ({clip01_c3_fx4[30:0],shift01_fx4[63]}),
.dout(pack_b01_gt255_fx4_) // FPACK16: bits [30:15] == 0, not > 255
); // FPACK32: bits [62:31] == 0, not > 255
// FPACKFIX: bits [62:31] == 0, not > 32767
fgu_fgd_dp_cmp_macro__width_32 packfix_cmp3 (
.din0({clip01_c3_fx4[30:0],shift01_fx4[63]}),
.dout(pack_b01_lt32768_fx4_) // FPACKFIX: bits [62:31] == 1, not < -32768
fgu_fgd_dp_zero_macro__width_16 pack_cmp2 (
.din ({clip01_c2_fx4[14:0],shift01_fx4[47]}),
.dout(pack_b23_gt255_fx4_) // FPACK16: bits [30:15] == 0, not > 255
fgu_fgd_dp_zero_macro__width_32 pack_cmp1 (
.din ({clip01_c1_fx4[30:0],shift01_fx4[31]}),
.dout(pack_b45_gt255_fx4_) // FPACK16: bits [30:15] == 0, not > 255
); // FPACK32: bits [62:31] == 0, not > 255
// FPACKFIX: bits [62:31] == 0, not > 32767
fgu_fgd_dp_cmp_macro__width_32 packfix_cmp1 (
.din0({clip01_c1_fx4[30:0],shift01_fx4[31]}),
.dout(pack_b45_lt32768_fx4_) // FPACKFIX: bits [62:31] == 1, not < -32768
fgu_fgd_dp_zero_macro__width_16 pack_cmp0 (
.din ({clip01_c0_fx4[14:0],shift01_fx4[15]}),
.dout(pack_b67_gt255_fx4_) // FPACK16: bits [30:15] == 0, not > 255
fgu_fgd_dp_inv_macro__width_8 ipackcmp ( // 0in bits_on -max 1 -var {packfix_hi_gt32767_fx4, packfix_hi_lt32768_fx4}; bits_on -max 1 -var {packfix_lo_gt32767_fx4, packfix_lo_lt32768_fx4}
.din ({pack_b01_gt255_fx4_,
.dout({pack_b01_gt255_fx4,
fgu_fgd_dp_and_macro__ports_3__width_2 packsela (
.din0({fgx_packfix_fx4, fgx_packfix_fx4 }),
.din1({rs2_fx4_b63, rs2_fx4_b31 }), // negative
.din2({pack_b01_lt32768_fx4, pack_b45_lt32768_fx4 }),
.dout({packfix_hi_lt32768_fx4, packfix_lo_lt32768_fx4})
fgu_fgd_dp_and_macro__ports_3__width_2 packselb (
.din0({fgx_packfix_fx4, fgx_packfix_fx4 }),
.din1({rs2_fx4_b63_, rs2_fx4_b31_ }), // positive
.din2({pack_b01_gt255_fx4, pack_b45_gt255_fx4 }),
.dout({packfix_hi_gt32767_fx4, packfix_lo_gt32767_fx4})
fgu_fgd_dp_mux_macro__buffsel_none__mux_aonpe__ports_2__width_2 packselc (
.din0({rs2_fx4_b15, pack_b67_gt255_fx4}),
.din1({rs2_fx4_b63, pack_b01_gt255_fx4}),
.dout({pack_b3_sign_fx4, pack_b3_gt255_fx4})
// ------------------------------------
// fpack result data/const selection
// only FPACK32 64b result updates 32 LSBs
// FPACK16/FPACKFIX 32b result updates 32 MSBs
// ------------------------------------
fgu_fgd_dp_mux_macro__mux_aope__ports_7__width_8 pack_b0 (
.din0(8'h80), // portion of 16'h8000
.din1(8'h7f), // portion of 16'h7fff
.din2(shift01_fx4[63:56]), // portion of [63:48]
.din6(shift01_fx4[62:55]),
.sel0(packfix_hi_lt32768_fx4),
.sel1(packfix_hi_gt32767_fx4),
.sel4(rs2_fx4_b63), // negative
.sel5(pack_b01_gt255_fx4),
.dout(pack_result_fx4[63:56])
fgu_fgd_dp_mux_macro__mux_aope__ports_7__width_8 pack_b1 (
.din0(8'h00), // portion of 16'h8000
.din1(8'hff), // portion of 16'h7fff
.din2(shift01_fx4[55:48]), // portion of [63:48]
.din6(shift01_fx4[46:39]),
.sel0(packfix_hi_lt32768_fx4),
.sel1(packfix_hi_gt32767_fx4),
.sel4(rs2_fx4_b47), // negative
.sel5(pack_b23_gt255_fx4),
.dout(pack_result_fx4[55:48])
fgu_fgd_dp_mux_macro__mux_aope__ports_7__width_8 pack_b2 (
.din0(8'h80), // portion of 16'h8000
.din1(8'h7f), // portion of 16'h7fff
.din2(shift01_fx4[31:24]), // portion of [31:16]
.din6(shift01_fx4[30:23]),
.sel0(packfix_lo_lt32768_fx4),
.sel1(packfix_lo_gt32767_fx4),
.sel4(rs2_fx4_b31), // negative
.sel5(pack_b45_gt255_fx4),
.dout(pack_result_fx4[47:40])
fgu_fgd_dp_mux_macro__mux_aope__ports_7__width_8 pack_b3 (
.din0(8'h00), // portion of 16'h8000
.din1(8'hff), // portion of 16'h7fff
.din2(shift01_fx4[23:16]), // portion of [31:16]
.din5(shift01_fx4[62:55]),
.din6(shift01_fx4[14:7]),
.sel0(packfix_lo_lt32768_fx4),
.sel1(packfix_lo_gt32767_fx4),
.sel3(pack_b3_sign_fx4), // negative
.sel4(pack_b3_gt255_fx4),
.dout(pack_result_fx4[39:32])
fgu_fgd_dp_mux_macro__mux_aope__ports_3__width_8 pack_lo (
.din2(shift01_fx4[30:23]),
.sel0(rs2_fx4_b31), // negative
.sel1(pack_b45_gt255_fx4),
.dout(pack_result_fx4_b7_0[7:0])
// ------------------------------------
// common PDIST,POPC backend (fx4)
// complete compression of 8 8-bit values (4 8-bit values remain),
// then add to rs3 if PDIST (rs3 arrives one cycle delayed on rs2)
// ------------------------------------
fgu_fgd_dp_csa42_macro__width_9 pdist_42csa_2 (
.i0 ({ pdist_42csa_data_fx4[31:24], 1'b0 }),
.i1 ({pdist_42csa_data_fx4[33], pdist_42csa_data_fx4[23:16]}),
.i2 ({ pdist_42csa_data_fx4[15:8], 1'b0 }),
.i3 ({pdist_42csa_data_fx4[32], pdist_42csa_data_fx4[7:0]}),
.cout ( pdist_42csa_cout2_fx4 ),
.carry( pdist_42csa_carry2_fx4[9:1]),
.sum ( pdist_42csa_sum2_fx4[8:0] )
fgu_fgd_dp_csa32_macro__width_10 pdist_32csa (
.i0 ({ pdist_rs3_fx3[9:0]}),
.i1 ({ pdist_42csa_carry2_fx4[9:1], 1'b0}),
.i2 ({pdist_42csa_cout2_fx4, pdist_42csa_sum2_fx4[8:0]}),
.carry( pdist_32csa_carry_fx4[10:1]),
.sum ( pdist_32csa_sum_fx4[9:0] )
fgu_fgd_dp_and_macro__ports_2__width_1 pdist_and (
.din0(pdist_rs3_fx3[11]),
.dout(q_pdist_rs3_fx3_b11)
fgu_fgd_dp_cla_macro__width_12 pdist_cla ( // 0in maximum -val 64 -var {pdist_cout_fx4, pdist_sum_fx4[11:00]} -active (fgx_popc_fx4 & ~fgx_pdist_fx4)
.din0({ 1'b0, pdist_32csa_carry_fx4[10:1], 1'b0}),
.din1({q_pdist_rs3_fx3_b11, pdist_rs3_fx3[10], pdist_32csa_sum_fx4[9:0]}),
.dout(pdist_sum_fx4[11:0]),
.cout(pdist_cout_fx4 ) // cout not possible if POPC (7-bit result max),
); // cout not possible for any instr but pdist due to qual done on pdist_rs3_fx3[11]
// 0in custom -fire (pdist_cout_fx4 & ~fgx_pdist_fx4)
fgu_fgd_dp_increment_macro__width_64 pdist_inc (
.din ({rs201_fx3[63:12], 12'hfff}),
.dout({pdist_sum_fx4[63:12], pdist_inc_unused[11:0]}),
.cout( pdist_inc_unused[12] )
// ------------------------------------
// ------------------------------------
fgu_fgd_dp_msff_macro__mux_aope__ports_5__width_64 fx5_res (
.scan_in(fx5_res_scanin),
.scan_out(fx5_res_scanout),
.din0({pack_result_fx4[63:32], rs1_fx4[23:0], pack_result_fx4_b7_0[7:0]}),
.din1(pdist_sum_fx4[63:0]),
.din2({rs201_fx3[63:12], pdist_sum_fx4[11:0]}),
.din3({57'b0, pdist_sum_fx4[6:0]}),
.din4(simp_result_fx4[63:0]),
.sel0(fgx_pack_sel_fx4), // FPACK16,FPACK32,FPACKFIX
.sel1(pdist_cout_fx4 ), // PDIST with cout from 12 LSBs
.sel2(fgx_pdist_fx4 ), // PDIST
.sel3(fgx_popc_fx4 ), // POPC
.dout(fgd_result_fx5[63:0]),
// ----------------------------------------------------------------------------
// FGU ASI local ring datapath
// - ASI FRF ECC access (read only)
// ----------------------------------------------------------------------------
fgu_fgd_dp_msff_macro__stack_32l__width_32 in_rng1_1f (
.scan_in(in_rng1_1f_scanin),
.scan_out(in_rng1_1f_scanout),
.din (in_rngl_cdbus[63:32]), // requires free running clk or rng_data_1f[63] en
.dout(in_rngl_cdbus_1f[63:32]),
fgu_fgd_dp_msff_macro__stack_32l__width_32 in_rng0_1f (
.scan_in(in_rng0_1f_scanin),
.scan_out(in_rng0_1f_scanout),
.din (in_rngl_cdbus[31:0]), // requires free running clk or rng_data_1f[63] en
.dout(in_rngl_cdbus_1f[31:0]),
fgu_fgd_dp_msff_macro__stack_32l__width_32 in_rng1_2f (
.scan_in(in_rng1_2f_scanin),
.scan_out(in_rng1_2f_scanout),
.din (in_rngl_cdbus_1f[63:32]),
.dout(in_rngl_cdbus_2f[63:32]),
fgu_fgd_dp_msff_macro__stack_32l__width_32 in_rng0_2f (
.scan_in(in_rng0_2f_scanin),
.scan_out(in_rng0_2f_scanout),
.din (in_rngl_cdbus_1f[31:0]),
.dout(in_rngl_cdbus_2f[31:0]),
fgu_fgd_dp_msff_macro__stack_32l__width_32 in_rng1_3f (
.scan_in(in_rng1_3f_scanin),
.scan_out(in_rng1_3f_scanout),
.din (in_rngl_cdbus_2f[63:32]),
.dout(in_rngl_cdbus_3f[63:32]),
fgu_fgd_dp_msff_macro__stack_32l__width_32 in_rng0_3f (
.scan_in(in_rng0_3f_scanin),
.scan_out(in_rng0_3f_scanout),
.din (in_rngl_cdbus_2f[31:0]),
.dout(in_rngl_cdbus_3f[31:0]),
fgu_fgd_dp_buff_macro__dbuff_48x__stack_32l__width_1 muxtest_b_rep0 (
.dout(tcu_muxtest_b_rep0)
fgu_fgd_dp_mux_macro__mux_pgpe__ports_5__stack_32l__width_31 mux_rng1_3f (
.muxtst(tcu_muxtest_b_rep0),
.din0({ // ASR/ASI GSR/FPRS/FRF_ECC rd or wr (ctl )
in_rngl_cdbus_3f[61:56], //
8'b0, // clear ASI field (report no exceptions)
in_rngl_cdbus_3f[47:32]}), //
.din1(gsr_asr_mask_fx4[30:0]), // ASR GSR read data ( data)
.din2(31'b0), // ASR FPRS read data ( data)
.din3(31'b0), // ASI FRF ECC read data ( data)
.din4(in_rngl_cdbus_3f[62:32]), // bypass incoming ASI data unmodified (ctl or data)
.sel0(fac_rng_rd_or_wr_3f),
.sel1(fac_rng_rd_gsr_4f),
.sel2(fac_rng_rd_fprs_4f),
.sel3(fac_rng_rd_ecc_4f),
.dout(fgd_rngl_cdbus_3f[62:32]),
fgu_fgd_dp_buff_macro__dbuff_48x__stack_32l__width_1 muxtest_c_rep0 (
.dout(tcu_muxtest_c_rep0)
fgu_fgd_dp_mux_macro__mux_pgpe__ports_4__stack_32l__width_32 mux_rng0_3f (
.muxtst(tcu_muxtest_c_rep0),
.din0({4'b0, // ASR GSR read data ( data)
fpc_gsr_asr_11bits_fx4[10],
fpc_gsr_asr_11bits_fx4[9:8],
fpc_gsr_asr_11bits_fx4[7:3],
fpc_gsr_asr_11bits_fx4[2:0]}),
.din1({29'b0, fac_rng_fprs[2:0]}), // ASR FPRS read data ( data)
.din2({18'b0, fec_r1_ecc_fx1[13:0]}), // ASI FRF ECC read data ( data)
.din3(in_rngl_cdbus_3f[31:0]), // bypass incoming ASI data unmodified (ctl or data)
// ASR/ASI GSR/FPRS/FRF_ECC rd or wr (ctl )
.sel0(fac_rng_rd_gsr_4f),
.sel1(fac_rng_rd_fprs_4f),
.sel2(fac_rng_rd_ecc_4f),
.dout(fgd_rngl_cdbus_3f[31:0]),
assign fx2_rs1_scanin = scan_in ;
assign fx2_rs2_scanin = fx2_rs1_scanout ;
assign fx2_gsr_scanin = fx2_rs2_scanout ;
assign fx3_rs1_scanin = fx2_gsr_scanout ;
assign fx3_rs2_scanin = fx3_rs1_scanout ;
assign fx3_gsr_mask_scanin = fx3_rs2_scanout ;
assign fx3_popc_scanin = fx3_gsr_mask_scanout ;
assign fx3_ctl_scanin = fx3_popc_scanout ;
assign fx4_simp_scanin = fx3_ctl_scanout ;
assign fx4_rs1_scanin = fx4_simp_scanout ;
assign fx4_shift_scanin = fx4_rs1_scanout ;
assign fx4_clipa_scanin = fx4_shift_scanout ;
assign fx4_clipb_scanin = fx4_clipa_scanout ;
assign fx4_pdist_scanin = fx4_clipb_scanout ;
assign fx4_gsrtid_scanin = fx4_pdist_scanout ;
assign fx5_res_scanin = fx4_gsrtid_scanout ;
assign in_rng1_1f_scanin = fx5_res_scanout ;
assign in_rng0_1f_scanin = in_rng1_1f_scanout ;
assign in_rng1_2f_scanin = in_rng0_1f_scanout ;
assign in_rng0_2f_scanin = in_rng1_2f_scanout ;
assign in_rng1_3f_scanin = in_rng0_2f_scanout ;
assign in_rng0_3f_scanin = in_rng1_3f_scanout ;
assign scan_out = in_rng0_3f_scanout ;
assign fx4_gsr0mask_wmr_scanin = wmr_scan_in ;
assign fx4_gsr1mask_wmr_scanin = fx4_gsr0mask_wmr_scanout ;
assign fx4_gsr2mask_wmr_scanin = fx4_gsr1mask_wmr_scanout ;
assign fx4_gsr3mask_wmr_scanin = fx4_gsr2mask_wmr_scanout ;
assign fx4_gsr4mask_wmr_scanin = fx4_gsr3mask_wmr_scanout ;
assign fx4_gsr5mask_wmr_scanin = fx4_gsr4mask_wmr_scanout ;
assign fx4_gsr6mask_wmr_scanin = fx4_gsr5mask_wmr_scanout ;
assign fx4_gsr7mask_wmr_scanin = fx4_gsr6mask_wmr_scanout ;
assign wmr_scan_out = fx4_gsr7mask_wmr_scanout ;
module fgu_fgd_dp_buff_macro__dbuff_32x__rep_1__width_4 (
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_msff_macro__width_64 (
.so({so[62:0],scan_out}),
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_msff_macro__stack_32l__width_32 (
.so({so[30:0],scan_out}),
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__buffsel_none__mux_aonpe__ports_2__width_12 (
// i0 i1 i2 i3 | co | carry sum
// ------------|----|-----------
// 0 0 0 1 | 0 | cin ~cin
// 0 0 1 0 | 0 | cin ~cin
// 0 1 0 0 | 0 | cin ~cin
// 0 1 1 1 | 1 | cin ~cin
// 1 0 0 0 | 0 | cin ~cin
// 1 0 1 1 | 1 | cin ~cin
// 1 1 0 1 | 1 | cin ~cin
// 1 1 1 0 | 1 | cin ~cin
// This circuit looks like a compression of 5 terms down
// to 3 term on an individual bit basis. However, the fast
// output "co" from bit position "n" is actually the late input
// "cin" on bit position "n+1". Once a wrapper is written
// around multiple bits, this circuit will give the
// appearance of compressing 4 inputs down to 2 outputs.
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_csa42_macro__width_1 (
module fgu_fgd_dp_cla_macro__width_4 (
module fgu_fgd_dp_buff_macro__width_64 (
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_msff_macro__minbuff_1__width_64 (
.so({so[62:0],scan_out}),
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_msff_macro__width_32 (
.so({so[30:0],scan_out}),
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_msff_macro__width_33 (
.so({so[31:0],scan_out}),
module fgu_fgd_dp_inv_macro__width_64 (
module fgu_fgd_dp_buff_macro__width_8 (
// nand macro for ports = 2,3,4
module fgu_fgd_dp_nand_macro__ports_3__width_64 (
// nand macro for ports = 2,3,4
module fgu_fgd_dp_nand_macro__ports_4__width_64 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_8 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_pgpe__ports_2__width_8 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_aodec__ports_8__width_64 (
// xnor macro for ports = 2,3
module fgu_fgd_dp_xnor_macro__ports_2__width_1 (
// nor macro for ports = 2,3
module fgu_fgd_dp_nor_macro__ports_2__width_1 (
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_msff_macro__mux_aope__ports_6__width_64 (
.so({so[62:0],scan_out}),
module fgu_fgd_dp_inv_macro__width_1 (
// nand macro for ports = 2,3,4
module fgu_fgd_dp_nand_macro__ports_2__width_1 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_aope__ports_2__width_32 (
// and macro for ports = 2,3,4
module fgu_fgd_dp_and_macro__ports_2__width_12 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_16 (
// and macro for ports = 2,3,4
module fgu_fgd_dp_and_macro__ports_2__width_3 (
// and macro for ports = 2,3,4
module fgu_fgd_dp_and_macro__ports_2__width_1 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_aope__ports_2__width_16 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_28 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_31 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_12 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_aodec__ports_4__width_15 (
module fgu_fgd_dp_cla_macro__width_8 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_aope__ports_3__width_8 (
// i0 i1 i2 i3 | co | carry sum
// ------------|----|-----------
// 0 0 0 1 | 0 | cin ~cin
// 0 0 1 0 | 0 | cin ~cin
// 0 1 0 0 | 0 | cin ~cin
// 0 1 1 1 | 1 | cin ~cin
// 1 0 0 0 | 0 | cin ~cin
// 1 0 1 1 | 1 | cin ~cin
// 1 1 0 1 | 1 | cin ~cin
// 1 1 1 0 | 1 | cin ~cin
// This circuit looks like a compression of 5 terms down
// to 3 term on an individual bit basis. However, the fast
// output "co" from bit position "n" is actually the late input
// "cin" on bit position "n+1". Once a wrapper is written
// around multiple bits, this circuit will give the
// appearance of compressing 4 inputs down to 2 outputs.
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_csa42_macro__width_8 (
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_msff_macro__width_48 (
.so({so[46:0],scan_out}),
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_msff_macro__width_50 (
.so({so[48:0],scan_out}),
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_msff_macro__width_62 (
.so({so[60:0],scan_out}),
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_msff_macro__width_37 (
.so({so[35:0],scan_out}),
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_msff_macro__width_34 (
.so({so[32:0],scan_out}),
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_msff_macro__stack_32l__width_6 (
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_msff_macro__mux_aope__ports_2__stack_32l__width_32 (
.so({so[30:0],scan_out}),
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_aodec__ports_8__stack_32l__width_32 (
module fgu_fgd_dp_buff_macro__stack_32l__width_32 (
module fgu_fgd_dp_buff_macro__dbuff_48x__stack_32l__width_1 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_pgdec__ports_8__stack_32l__width_32 (
// comparator macro (output is 1 if both inputs are equal; 0 otherwise)
module fgu_fgd_dp_zero_macro__width_32 (
// comparator macro (output is 1 if both inputs are equal; 0 otherwise)
module fgu_fgd_dp_cmp_macro__width_32 (
// comparator macro (output is 1 if both inputs are equal; 0 otherwise)
module fgu_fgd_dp_zero_macro__width_16 (
module fgu_fgd_dp_inv_macro__width_8 (
// and macro for ports = 2,3,4
module fgu_fgd_dp_and_macro__ports_3__width_2 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__buffsel_none__mux_aonpe__ports_2__width_2 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_aope__ports_7__width_8 (
// i0 i1 i2 i3 | co | carry sum
// ------------|----|-----------
// 0 0 0 1 | 0 | cin ~cin
// 0 0 1 0 | 0 | cin ~cin
// 0 1 0 0 | 0 | cin ~cin
// 0 1 1 1 | 1 | cin ~cin
// 1 0 0 0 | 0 | cin ~cin
// 1 0 1 1 | 1 | cin ~cin
// 1 1 0 1 | 1 | cin ~cin
// 1 1 1 0 | 1 | cin ~cin
// This circuit looks like a compression of 5 terms down
// to 3 term on an individual bit basis. However, the fast
// output "co" from bit position "n" is actually the late input
// "cin" on bit position "n+1". Once a wrapper is written
// around multiple bits, this circuit will give the
// appearance of compressing 4 inputs down to 2 outputs.
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_csa42_macro__width_9 (
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_csa32_macro__width_10 (
module fgu_fgd_dp_cla_macro__width_12 (
module fgu_fgd_dp_increment_macro__width_64 (
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_msff_macro__mux_aope__ports_5__width_64 (
.so({so[62:0],scan_out}),
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_pgpe__ports_5__stack_32l__width_31 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module fgu_fgd_dp_mux_macro__mux_pgpe__ports_4__stack_32l__width_32 (