Skip to content

CGA_ALU_OUTMUX

Source: Verilog/DELILAH-CPU/CGA_ALU/circuit/CGA_ALU_OUTMUX.v

Where it sits (Simulation): ND120_TOP > ND120_CORE > ND3202D > CPU_15 > CPU_PROC_32 > CPU_PROC_CGA_33 > CGA > CGA_ALU > CGA_ALU_OUTMUX - instance path: CORE.CPU_BOARD.CPU.PROC.CGA.DELILAH.ALU.ALU_OUTMUX

Used in: CGA_ALU (all tops)

Contains: CGA_ALU_OUTMUX_IDBS, CGA_ALU_OUTMUX_SEL8 x15, CGA_CPU_ALU_OUTMUX_SEL7, MUX31LP x16

Module hierarchy - All modules

CGA_ALU_OUTMUX symbol

Schematic

Drawn from the Verilog: the yosys netlist of the Simulation (Verilator) build, instance CORE.CPU_BOARD.CPU.PROC.CGA.DELILAH.ALU.ALU_OUTMUX. Sub-modules are boxes (click the picture to open it full size; there every sub-module box links to its page, and every wire shows its Verilog name).

CGA_ALU_OUTMUX schematic

Description

ND120 CGA (CPU Gate Array / DELILAH) /CGA/ALU/OUTMUX OUT MUX Page 55 SHEET 1 of 1 Last reviewed: 29-JAN-2025 Ronny Hansen

Ports

Direction Width Name Description
input 1 sysclk System clock in FPGA
input 1 sys_rst_n (active low) System reset in FPGA
input 1 AARG0
input 1 ALUCLK_EN ALUCLK clock-enable pulse (FPGA_FF_MODE, else 0)
input 1 ALUCLK ALU clock signal (from CPU_PROC_CGA_33.ALUCLK)
input 1 ALUD2N ALU Data 2, active low signal (from CGA_CPU_ALU_CONTR.ALUD2N)
input [15:0] ARG_15_0
input [15:0] A_15_0 DATA output 16 bit A, from register selected by LAA_3_0 (from CGA_WRF.A_15_0)
input [4:0] CSIDBS_4_0 Control Store Bits (from CPU_PROC_CGA_33.CSBITS[41:37])
input [15:0] DBR_15_0
input [15:0] EA_15_0 Enable A (source) bits for read. 16 bits to select register. (from CGA_WRF.EA_15_0)
input [15:0] FIDBI_15_0
input [15:0] F_15_0 Function Result (15:0) (from CGA_CPU_ALU_RALU.F_15_0)
input [15:0] GPR_15_0
input [2:0] LAA_3_1 A Operand. CSBITS [15:12] (from CGA_ALU.LAA_3_0[3:1])
input [2:0] LBA_2_0 B Operand. CSBITS [19:16] (from CGA_ALU.LBA_3_0[2:0])
input [15:0] STS_15_0
input [15:0] SW_15_0
output [15:0] D_15_0
output [15:0] G_15_0

Verilog source

Verilog/DELILAH-CPU/CGA_ALU/circuit/CGA_ALU_OUTMUX.v on GitHub.

Show the Verilog of CGA_ALU_OUTMUX (945 lines)
/**************************************************************************
** ND120 CGA (CPU Gate Array / DELILAH)                                  **
** /CGA/ALU/OUTMUX                                                       **
** OUT MUX                                                               **
**                                                                       **
** Page 55                                                               **
** SHEET 1 of 1                                                          **
**                                                                       **
** Last reviewed: 29-JAN-2025                                            **
** Ronny Hansen                                                          **
***************************************************************************/

module CGA_ALU_OUTMUX (
    // System input signals
    input sysclk,    // System clock in FPGA
    input sys_rst_n, // System reset in FPGA

    input        AARG0,
    input        ALUCLK_EN,  //! ALUCLK clock-enable pulse (FPGA_FF_MODE, else 0)
    input        ALUCLK,  //! ALU clock signal (from CPU_PROC_CGA_33.ALUCLK)
    input        ALUD2N,  //! ALU Data 2, active low signal (from CGA_CPU_ALU_CONTR.ALUD2N)
    input [15:0] ARG_15_0,
    input [15:0] A_15_0,  //! DATA output 16 bit A, from register selected by LAA_3_0 (from CGA_WRF.A_15_0)
    input [ 4:0] CSIDBS_4_0,  //! Control Store Bits (from CPU_PROC_CGA_33.CSBITS[41:37])
    input [15:0] DBR_15_0,
    input [15:0] EA_15_0,  //! Enable A (source) bits for read. 16 bits to select register. (from CGA_WRF.EA_15_0)
    input [15:0] FIDBI_15_0,
    input [15:0] F_15_0,  //! Function Result (15:0) (from CGA_CPU_ALU_RALU.F_15_0)
    input [15:0] GPR_15_0,
    input [ 2:0] LAA_3_1,  //! A Operand. CSBITS [15:12] (from CGA_ALU.LAA_3_0[3:1])
    input [ 2:0] LBA_2_0,  //! B Operand. CSBITS [19:16] (from CGA_ALU.LBA_3_0[2:0])
    input [15:0] STS_15_0,
    input [15:0] SW_15_0,

    output [15:0] D_15_0,
    output [15:0] G_15_0
);

  /*******************************************************************************
   ** The wires are defined here                                                 **
   *******************************************************************************/
  wire [ 2:0] s_laa_3_1;
  wire [ 2:0] s_lba_2_0;
  wire [ 4:0] s_csidbs_4_0;
  wire [ 6:0] s_e_dmux7;
  wire [ 6:0] s_si_dmux7;
  wire [ 7:0] s_e_dmux0;
  wire [ 7:0] s_e_dmux1;
  wire [ 7:0] s_e_dmux10;
  wire [ 7:0] s_e_dmux11;
  wire [ 7:0] s_e_dmux12;
  wire [ 7:0] s_e_dmux13;
  wire [ 7:0] s_e_dmux14;
  wire [ 7:0] s_e_dmux15;
  wire [ 7:0] s_e_dmux2;
  wire [ 7:0] s_e_dmux3;
  wire [ 7:0] s_e_dmux4;
  wire [ 7:0] s_e_dmux5;
  wire [ 7:0] s_e_dmux6;
  wire [ 7:0] s_e_dmux8;
  wire [ 7:0] s_e_dmux9;
  wire [ 7:0] s_si_dmux0;
  wire [ 7:0] s_si_dmux1;
  wire [ 7:0] s_si_dmux10;
  wire [ 7:0] s_si_dmux11;
  wire [ 7:0] s_si_dmux12;
  wire [ 7:0] s_si_dmux13;
  wire [ 7:0] s_si_dmux14;
  wire [ 7:0] s_si_dmux15;
  wire [ 7:0] s_si_dmux2;
  wire [ 7:0] s_si_dmux3;
  wire [ 7:0] s_si_dmux4;
  wire [ 7:0] s_si_dmux5;
  wire [ 7:0] s_si_dmux6;
  wire [ 7:0] s_si_dmux8;
  wire [ 7:0] s_si_dmux9;
  wire [15:0] s_a_15_0;
  wire [15:0] s_arg_15_0;
  wire [15:0] s_d_15_0_out;
  wire [15:0] s_dbr_15_0;
  wire [15:0] s_ea_15_0;
  wire [15:0] s_f_15_0;
  wire [15:0] s_fidbi_15_0;
  wire [15:0] s_g_15_0_out;
  wire [15:0] s_gpr_15_0;
  wire [15:0] s_sts_15_0;
  wire [15:0] s_sw_15_0;

  wire        s_aluclk;
  wire        s_alud2n;
  wire        s_arg_0;
  wire        s_arg_1;
  wire        s_arg_10;
  wire        s_arg_11;
  wire        s_arg_12;
  wire        s_arg_13;
  wire        s_arg_14;
  wire        s_arg_15;
  wire        s_arg_2;
  wire        s_arg_3;
  wire        s_arg_4;
  wire        s_arg_5;
  wire        s_arg_6;
  wire        s_arg_7;
  wire        s_arg_8;
  wire        s_arg_9;
  wire        s_dbr_0;
  wire        s_dbr_1;
  wire        s_dbr_10;
  wire        s_dbr_11;
  wire        s_dbr_12;
  wire        s_dbr_13;
  wire        s_dbr_14;
  wire        s_dbr_15;
  wire        s_dbr_2;
  wire        s_dbr_3;
  wire        s_dbr_4;
  wire        s_dbr_5;
  wire        s_dbr_6;
  wire        s_dbr_7;
  wire        s_dbr_8;
  wire        s_dbr_9;
  wire        s_ea_0;
  wire        s_ea_1;
  wire        s_ea_10;
  wire        s_ea_11;
  wire        s_ea_12;
  wire        s_ea_13;
  wire        s_ea_14;
  wire        s_ea_15;
  wire        s_ea_2;
  wire        s_ea_3;
  wire        s_ea_4;
  wire        s_ea_5;
  wire        s_ea_6;
  wire        s_ea_7;
  wire        s_ea_8;
  wire        s_ea_9;
  wire        s_ea;
  wire        s_eaarg;
  wire        s_eabarg;
  wire        s_earg;
  wire        s_ebarg;
  wire        s_ebmg;
  wire        s_edbr;
  wire        s_ef;
  wire        s_efidb;
  wire        s_egprh;
  wire        s_egprl;
  wire        s_egprs;
  wire        s_ests;
  wire        s_eswap;
  wire        s_fidbi_0;
  wire        s_fidbi_1;
  wire        s_fidbi_10;
  wire        s_fidbi_11;
  wire        s_fidbi_12;
  wire        s_fidbi_13;
  wire        s_fidbi_14;
  wire        s_fidbi_15;
  wire        s_fidbi_2;
  wire        s_fidbi_3;
  wire        s_fidbi_4;
  wire        s_fidbi_5;
  wire        s_fidbi_6;
  wire        s_fidbi_7;
  wire        s_fidbi_8;
  wire        s_fidbi_9;
  wire        s_gpr_0;
  wire        s_gpr_1;
  wire        s_gpr_10;
  wire        s_gpr_11;
  wire        s_gpr_12;
  wire        s_gpr_13;
  wire        s_gpr_14;
  wire        s_gpr_15;
  wire        s_gpr_2;
  wire        s_gpr_3;
  wire        s_gpr_4;
  wire        s_gpr_5;
  wire        s_gpr_6;
  wire        s_gpr_7;
  wire        s_gpr_8;
  wire        s_gpr_9;
  wire        s_laa_1;
  wire        s_laa_2;
  wire        s_laa_3;
  wire        s_lba_0;
  wire        s_lba_1;
  wire        s_lba_2;
  wire        s_sts_0;
  wire        s_sts_1;
  wire        s_sts_10;
  wire        s_sts_11;
  wire        s_sts_12;
  wire        s_sts_13;
  wire        s_sts_14;
  wire        s_sts_15;
  wire        s_sts_2;
  wire        s_sts_3;
  wire        s_sts_4;
  wire        s_sts_5;
  wire        s_sts_6;
  wire        s_sts_7;
  wire        s_sts_8;
  wire        s_sts_9;
  wire        s_sw_0;
  wire        s_sw_1;
  wire        s_sw_10;
  wire        s_sw_11;
  wire        s_sw_12;
  wire        s_sw_13;
  wire        s_sw_14;
  wire        s_sw_15;
  wire        s_sw_2;
  wire        s_sw_3;
  wire        s_sw_4;
  wire        s_sw_5;
  wire        s_sw_6;
  wire        s_sw_7;
  wire        s_sw_8;
  wire        s_sw_9;

  /*******************************************************************************
   ** Here all wiring is defined                                                 **
   *******************************************************************************/
  // Enable DMUX 0-15

  assign s_e_dmux0[0]       = s_ebmg;
  assign s_e_dmux0[1]       = s_edbr;
  assign s_e_dmux0[2]       = s_earg;
  assign s_e_dmux0[3]       = s_ests;
  assign s_e_dmux0[4]       = s_eswap;
  assign s_e_dmux0[5]       = s_efidb;
  assign s_e_dmux0[6]       = s_egprl;
  assign s_e_dmux0[7]       = s_ebarg;

  assign s_e_dmux1[0]       = s_ebmg;
  assign s_e_dmux1[1]       = s_edbr;
  assign s_e_dmux1[2]       = s_earg;
  assign s_e_dmux1[3]       = s_ests;
  assign s_e_dmux1[4]       = s_eswap;
  assign s_e_dmux1[5]       = s_efidb;
  assign s_e_dmux1[6]       = s_egprl;
  assign s_e_dmux1[7]       = s_ebarg;

  assign s_e_dmux2[0]       = s_ebmg;
  assign s_e_dmux2[1]       = s_edbr;
  assign s_e_dmux2[2]       = s_earg;
  assign s_e_dmux2[3]       = s_ests;
  assign s_e_dmux2[4]       = s_eswap;
  assign s_e_dmux2[5]       = s_efidb;
  assign s_e_dmux2[6]       = s_egprl;
  assign s_e_dmux2[7]       = s_ebarg;

  assign s_e_dmux3[0]       = s_ebmg;
  assign s_e_dmux3[1]       = s_edbr;
  assign s_e_dmux3[2]       = s_earg;
  assign s_e_dmux3[3]       = s_ests;
  assign s_e_dmux3[4]       = s_eswap;
  assign s_e_dmux3[5]       = s_efidb;
  assign s_e_dmux3[6]       = s_egprl;
  assign s_e_dmux3[7]       = s_eabarg;

  assign s_e_dmux4[0]       = s_ebmg;
  assign s_e_dmux4[1]       = s_edbr;
  assign s_e_dmux4[2]       = s_earg;
  assign s_e_dmux4[3]       = s_ests;
  assign s_e_dmux4[4]       = s_eswap;
  assign s_e_dmux4[5]       = s_efidb;
  assign s_e_dmux4[6]       = s_egprl;
  assign s_e_dmux4[7]       = s_eaarg;

  assign s_e_dmux5[0]       = s_ebmg;
  assign s_e_dmux5[1]       = s_edbr;
  assign s_e_dmux5[2]       = s_earg;
  assign s_e_dmux5[3]       = s_ests;
  assign s_e_dmux5[4]       = s_eswap;
  assign s_e_dmux5[5]       = s_efidb;
  assign s_e_dmux5[6]       = s_egprl;
  assign s_e_dmux5[7]       = s_eaarg;

  assign s_e_dmux6[0]       = s_ebmg;
  assign s_e_dmux6[1]       = s_edbr;
  assign s_e_dmux6[2]       = s_earg;
  assign s_e_dmux6[3]       = s_ests;
  assign s_e_dmux6[4]       = s_eswap;
  assign s_e_dmux6[5]       = s_efidb;
  assign s_e_dmux6[6]       = s_egprl;
  assign s_e_dmux6[7]       = s_eaarg;

  assign s_e_dmux7[0]       = s_ebmg;
  assign s_e_dmux7[1]       = s_edbr;
  assign s_e_dmux7[2]       = s_earg;
  assign s_e_dmux7[3]       = s_ests;
  assign s_e_dmux7[4]       = s_eswap;
  assign s_e_dmux7[5]       = s_efidb;
  assign s_e_dmux7[6]       = s_egprl;

  assign s_e_dmux8[0]       = s_ebmg;
  assign s_e_dmux8[1]       = s_edbr;
  assign s_e_dmux8[2]       = s_earg;
  assign s_e_dmux8[3]       = s_ests;
  assign s_e_dmux8[4]       = s_eswap;
  assign s_e_dmux8[5]       = s_efidb;
  assign s_e_dmux8[6]       = s_egprh;
  assign s_e_dmux8[7]       = s_egprs;

  assign s_e_dmux9[0]       = s_ebmg;
  assign s_e_dmux9[1]       = s_edbr;
  assign s_e_dmux9[2]       = s_earg;
  assign s_e_dmux9[3]       = s_ests;
  assign s_e_dmux9[4]       = s_eswap;
  assign s_e_dmux9[5]       = s_efidb;
  assign s_e_dmux9[6]       = s_egprh;
  assign s_e_dmux9[7]       = s_egprs;

  assign s_e_dmux10[0]      = s_ebmg;
  assign s_e_dmux10[1]      = s_edbr;
  assign s_e_dmux10[2]      = s_earg;
  assign s_e_dmux10[3]      = s_ests;
  assign s_e_dmux10[4]      = s_eswap;
  assign s_e_dmux10[5]      = s_efidb;
  assign s_e_dmux10[6]      = s_egprh;
  assign s_e_dmux10[7]      = s_egprs;

  assign s_e_dmux11[0]      = s_ebmg;
  assign s_e_dmux11[1]      = s_edbr;
  assign s_e_dmux11[2]      = s_earg;
  assign s_e_dmux11[3]      = s_ests;
  assign s_e_dmux11[4]      = s_eswap;
  assign s_e_dmux11[5]      = s_efidb;
  assign s_e_dmux11[6]      = s_egprh;
  assign s_e_dmux11[7]      = s_egprs;

  assign s_e_dmux12[0]      = s_ebmg;
  assign s_e_dmux12[1]      = s_edbr;
  assign s_e_dmux12[2]      = s_earg;
  assign s_e_dmux12[3]      = s_ests;
  assign s_e_dmux12[4]      = s_eswap;
  assign s_e_dmux12[5]      = s_efidb;
  assign s_e_dmux12[6]      = s_egprh;
  assign s_e_dmux12[7]      = s_egprs;

  assign s_e_dmux13[0]      = s_ebmg;
  assign s_e_dmux13[1]      = s_edbr;
  assign s_e_dmux13[2]      = s_earg;
  assign s_e_dmux13[3]      = s_ests;
  assign s_e_dmux13[4]      = s_eswap;
  assign s_e_dmux13[5]      = s_efidb;
  assign s_e_dmux13[6]      = s_egprh;
  assign s_e_dmux13[7]      = s_egprs;

  assign s_e_dmux14[0]      = s_ebmg;
  assign s_e_dmux14[1]      = s_edbr;
  assign s_e_dmux14[2]      = s_earg;
  assign s_e_dmux14[3]      = s_ests;
  assign s_e_dmux14[4]      = s_eswap;
  assign s_e_dmux14[5]      = s_efidb;
  assign s_e_dmux14[6]      = s_egprh;
  assign s_e_dmux14[7]      = s_egprs;

  assign s_e_dmux15[0]      = s_ebmg;
  assign s_e_dmux15[1]      = s_edbr;
  assign s_e_dmux15[2]      = s_earg;
  assign s_e_dmux15[3]      = s_ests;
  assign s_e_dmux15[4]      = s_eswap;
  assign s_e_dmux15[5]      = s_efidb;
  assign s_e_dmux15[6]      = s_egprh;
  assign s_e_dmux15[7]      = s_egprs;


  // SIGNAL DMUX 0-15
  assign s_si_dmux0[0]      = s_ea_0;
  assign s_si_dmux0[1]      = s_dbr_0;
  assign s_si_dmux0[2]      = s_arg_0;
  assign s_si_dmux0[3]      = s_sts_0;
  assign s_si_dmux0[4]      = s_sw_0;
  assign s_si_dmux0[5]      = s_fidbi_0;
  assign s_si_dmux0[6]      = s_gpr_0;
  assign s_si_dmux0[7]      = s_lba_0;

  assign s_si_dmux1[0]      = s_ea_1;
  assign s_si_dmux1[1]      = s_dbr_1;
  assign s_si_dmux1[2]      = s_arg_1;
  assign s_si_dmux1[3]      = s_sts_1;
  assign s_si_dmux1[4]      = s_sw_1;
  assign s_si_dmux1[5]      = s_fidbi_1;
  assign s_si_dmux1[6]      = s_gpr_1;
  assign s_si_dmux1[7]      = s_lba_1;

  assign s_si_dmux2[0]      = s_ea_2;
  assign s_si_dmux2[1]      = s_dbr_2;
  assign s_si_dmux2[2]      = s_arg_2;
  assign s_si_dmux2[3]      = s_sts_2;
  assign s_si_dmux2[4]      = s_sw_2;
  assign s_si_dmux2[5]      = s_fidbi_2;
  assign s_si_dmux2[6]      = s_gpr_2;
  assign s_si_dmux2[7]      = s_lba_2;

  assign s_si_dmux3[0]      = s_ea_3;
  assign s_si_dmux3[1]      = s_dbr_3;
  assign s_si_dmux3[2]      = s_arg_3;
  assign s_si_dmux3[3]      = s_sts_3;
  assign s_si_dmux3[4]      = s_sw_3;
  assign s_si_dmux3[5]      = s_fidbi_3;
  assign s_si_dmux3[6]      = s_gpr_3;
  assign s_si_dmux3[7]      = AARG0;

  assign s_si_dmux4[0]      = s_ea_4;
  assign s_si_dmux4[1]      = s_dbr_4;
  assign s_si_dmux4[2]      = s_arg_4;
  assign s_si_dmux4[3]      = s_sts_4;
  assign s_si_dmux4[4]      = s_sw_4;
  assign s_si_dmux4[5]      = s_fidbi_4;
  assign s_si_dmux4[6]      = s_gpr_4;
  assign s_si_dmux4[7]      = s_laa_1;

  assign s_si_dmux5[0]      = s_ea_5;
  assign s_si_dmux5[1]      = s_dbr_5;
  assign s_si_dmux5[2]      = s_arg_5;
  assign s_si_dmux5[3]      = s_sts_5;
  assign s_si_dmux5[4]      = s_sw_5;
  assign s_si_dmux5[5]      = s_fidbi_5;
  assign s_si_dmux5[6]      = s_gpr_5;
  assign s_si_dmux5[7]      = s_laa_2;

  assign s_si_dmux6[0]      = s_ea_6;
  assign s_si_dmux6[1]      = s_dbr_6;
  assign s_si_dmux6[2]      = s_arg_6;
  assign s_si_dmux6[3]      = s_sts_6;
  assign s_si_dmux6[4]      = s_sw_6;
  assign s_si_dmux6[5]      = s_fidbi_6;
  assign s_si_dmux6[6]      = s_gpr_6;
  assign s_si_dmux6[7]      = s_laa_3;

  assign s_si_dmux7[0]      = s_ea_7;
  assign s_si_dmux7[1]      = s_dbr_7;
  assign s_si_dmux7[2]      = s_arg_7;
  assign s_si_dmux7[3]      = s_sts_7;
  assign s_si_dmux7[4]      = s_sw_7;
  assign s_si_dmux7[5]      = s_fidbi_7;
  assign s_si_dmux7[6]      = s_gpr_7;

  assign s_si_dmux8[0]      = s_ea_8;
  assign s_si_dmux8[1]      = s_dbr_8;
  assign s_si_dmux8[2]      = s_arg_8;
  assign s_si_dmux8[3]      = s_sts_8;
  assign s_si_dmux8[4]      = s_sw_8;
  assign s_si_dmux8[5]      = s_fidbi_8;
  assign s_si_dmux8[6]      = s_gpr_8; // GPR
  assign s_si_dmux8[7]      = s_gpr_7; // GPR Sign extended

  assign s_si_dmux9[0]      = s_ea_9;
  assign s_si_dmux9[1]      = s_dbr_9;
  assign s_si_dmux9[2]      = s_arg_9;
  assign s_si_dmux9[3]      = s_sts_9;
  assign s_si_dmux9[4]      = s_sw_9;
  assign s_si_dmux9[5]      = s_fidbi_9;
  assign s_si_dmux9[6]      = s_gpr_9; // GPR
  assign s_si_dmux9[7]      = s_gpr_7; // GPR Sign extended

  assign s_si_dmux10[0]     = s_ea_10;
  assign s_si_dmux10[1]     = s_dbr_10;
  assign s_si_dmux10[2]     = s_arg_10;
  assign s_si_dmux10[3]     = s_sts_10;
  assign s_si_dmux10[4]     = s_sw_10;
  assign s_si_dmux10[5]     = s_fidbi_10;
  assign s_si_dmux10[6]     = s_gpr_10; // GPR
  assign s_si_dmux10[7]     = s_gpr_7;  // GPR Sign extended

  assign s_si_dmux11[0]     = s_ea_11;
  assign s_si_dmux11[1]     = s_dbr_11;
  assign s_si_dmux11[2]     = s_arg_11;
  assign s_si_dmux11[3]     = s_sts_11;
  assign s_si_dmux11[4]     = s_sw_11;
  assign s_si_dmux11[5]     = s_fidbi_11;
  assign s_si_dmux11[6]     = s_gpr_11;
  assign s_si_dmux11[7]     = s_gpr_7;   // GPR Sign extended

  assign s_si_dmux12[0]     = s_ea_12;
  assign s_si_dmux12[1]     = s_dbr_12;
  assign s_si_dmux12[2]     = s_arg_12;
  assign s_si_dmux12[3]     = s_sts_12;
  assign s_si_dmux12[4]     = s_sw_12;
  assign s_si_dmux12[5]     = s_fidbi_12;
  assign s_si_dmux12[6]     = s_gpr_12;
  assign s_si_dmux12[7]     = s_gpr_7;   // GPR Sign extended

  assign s_si_dmux13[0]     = s_ea_13;
  assign s_si_dmux13[1]     = s_dbr_13;
  assign s_si_dmux13[2]     = s_arg_13;
  assign s_si_dmux13[3]     = s_sts_13;
  assign s_si_dmux13[4]     = s_sw_13;
  assign s_si_dmux13[5]     = s_fidbi_13;
  assign s_si_dmux13[6]     = s_gpr_13;
  assign s_si_dmux13[7]     = s_gpr_7;  // GPR Sign extended

  assign s_si_dmux14[0]     = s_ea_14;
  assign s_si_dmux14[1]     = s_dbr_14;
  assign s_si_dmux14[2]     = s_arg_14;
  assign s_si_dmux14[3]     = s_sts_14;
  assign s_si_dmux14[4]     = s_sw_14;
  assign s_si_dmux14[5]     = s_fidbi_14;
  assign s_si_dmux14[6]     = s_gpr_14;
  assign s_si_dmux14[7]     = s_gpr_7;  // GPR Sign extended

  assign s_si_dmux15[0]     = s_ea_15;
  assign s_si_dmux15[1]     = s_dbr_15;
  assign s_si_dmux15[2]     = s_arg_15;
  assign s_si_dmux15[3]     = s_sts_15;
  assign s_si_dmux15[4]     = s_sw_15;
  assign s_si_dmux15[5]     = s_fidbi_15;
  assign s_si_dmux15[6]     = s_gpr_15;
  assign s_si_dmux15[7]     = s_gpr_7;  // GPR Sign extended


  assign s_arg_0            = s_arg_15_0[0];
  assign s_arg_1            = s_arg_15_0[1];
  assign s_arg_2            = s_arg_15_0[2];
  assign s_arg_3            = s_arg_15_0[3];
  assign s_arg_4            = s_arg_15_0[4];
  assign s_arg_5            = s_arg_15_0[5];
  assign s_arg_6            = s_arg_15_0[6];
  assign s_arg_7            = s_arg_15_0[7];
  assign s_arg_8            = s_arg_15_0[8];
  assign s_arg_9            = s_arg_15_0[9];
  assign s_arg_10           = s_arg_15_0[10];
  assign s_arg_11           = s_arg_15_0[11];
  assign s_arg_12           = s_arg_15_0[12];
  assign s_arg_13           = s_arg_15_0[13];
  assign s_arg_14           = s_arg_15_0[14];
  assign s_arg_15           = s_arg_15_0[15];

  assign s_dbr_0            = s_dbr_15_0[0];
  assign s_dbr_1            = s_dbr_15_0[1];
  assign s_dbr_2            = s_dbr_15_0[2];
  assign s_dbr_3            = s_dbr_15_0[3];
  assign s_dbr_4            = s_dbr_15_0[4];
  assign s_dbr_5            = s_dbr_15_0[5];
  assign s_dbr_6            = s_dbr_15_0[6];
  assign s_dbr_7            = s_dbr_15_0[7];
  assign s_dbr_8            = s_dbr_15_0[8];
  assign s_dbr_9            = s_dbr_15_0[9];
  assign s_dbr_10           = s_dbr_15_0[10];
  assign s_dbr_11           = s_dbr_15_0[11];
  assign s_dbr_12           = s_dbr_15_0[12];
  assign s_dbr_13           = s_dbr_15_0[13];
  assign s_dbr_14           = s_dbr_15_0[14];
  assign s_dbr_15           = s_dbr_15_0[15];


  assign s_ea_0             = s_ea_15_0[0];
  assign s_ea_1             = s_ea_15_0[1];
  assign s_ea_2             = s_ea_15_0[2];
  assign s_ea_3             = s_ea_15_0[3];
  assign s_ea_4             = s_ea_15_0[4];
  assign s_ea_5             = s_ea_15_0[5];
  assign s_ea_6             = s_ea_15_0[6];
  assign s_ea_7             = s_ea_15_0[7];
  assign s_ea_8             = s_ea_15_0[8];
  assign s_ea_9             = s_ea_15_0[9];
  assign s_ea_10            = s_ea_15_0[10];
  assign s_ea_11            = s_ea_15_0[11];
  assign s_ea_12            = s_ea_15_0[12];
  assign s_ea_13            = s_ea_15_0[13];
  assign s_ea_14            = s_ea_15_0[14];
  assign s_ea_15            = s_ea_15_0[15];


  assign s_fidbi_0          = s_fidbi_15_0[0];
  assign s_fidbi_1          = s_fidbi_15_0[1];
  assign s_fidbi_2          = s_fidbi_15_0[2];
  assign s_fidbi_3          = s_fidbi_15_0[3];
  assign s_fidbi_4          = s_fidbi_15_0[4];
  assign s_fidbi_5          = s_fidbi_15_0[5];
  assign s_fidbi_6          = s_fidbi_15_0[6];
  assign s_fidbi_7          = s_fidbi_15_0[7];
  assign s_fidbi_8          = s_fidbi_15_0[8];
  assign s_fidbi_9          = s_fidbi_15_0[9];
  assign s_fidbi_10         = s_fidbi_15_0[10];
  assign s_fidbi_11         = s_fidbi_15_0[11];
  assign s_fidbi_12         = s_fidbi_15_0[12];
  assign s_fidbi_13         = s_fidbi_15_0[13];
  assign s_fidbi_14         = s_fidbi_15_0[14];
  assign s_fidbi_15         = s_fidbi_15_0[15];


  assign s_gpr_0            = s_gpr_15_0[0];
  assign s_gpr_1            = s_gpr_15_0[1];
  assign s_gpr_2            = s_gpr_15_0[2];
  assign s_gpr_3            = s_gpr_15_0[3];
  assign s_gpr_4            = s_gpr_15_0[4];
  assign s_gpr_5            = s_gpr_15_0[5];
  assign s_gpr_6            = s_gpr_15_0[6];
  assign s_gpr_7            = s_gpr_15_0[7];
  assign s_gpr_8            = s_gpr_15_0[8];
  assign s_gpr_9            = s_gpr_15_0[9];
  assign s_gpr_10           = s_gpr_15_0[10];
  assign s_gpr_11           = s_gpr_15_0[11];
  assign s_gpr_12           = s_gpr_15_0[12];
  assign s_gpr_13           = s_gpr_15_0[13];
  assign s_gpr_14           = s_gpr_15_0[14];
  assign s_gpr_15           = s_gpr_15_0[15];


  assign s_laa_1            = s_laa_3_1[0];
  assign s_laa_2            = s_laa_3_1[1];
  assign s_laa_3            = s_laa_3_1[2];

  assign s_lba_0            = s_lba_2_0[0];
  assign s_lba_1            = s_lba_2_0[1];
  assign s_lba_2            = s_lba_2_0[2];

  assign s_sts_0            = s_sts_15_0[0];
  assign s_sts_1            = s_sts_15_0[1];
  assign s_sts_2            = s_sts_15_0[2];
  assign s_sts_3            = s_sts_15_0[3];
  assign s_sts_4            = s_sts_15_0[4];
  assign s_sts_5            = s_sts_15_0[5];
  assign s_sts_6            = s_sts_15_0[6];
  assign s_sts_7            = s_sts_15_0[7];
  assign s_sts_8            = s_sts_15_0[8];
  assign s_sts_9            = s_sts_15_0[9];
  assign s_sts_10           = s_sts_15_0[10];
  assign s_sts_11           = s_sts_15_0[11];
  assign s_sts_12           = s_sts_15_0[12];
  assign s_sts_13           = s_sts_15_0[13];
  assign s_sts_14           = s_sts_15_0[14];
  assign s_sts_15           = s_sts_15_0[15];


  assign s_sw_0             = s_sw_15_0[0];
  assign s_sw_1             = s_sw_15_0[1];
  assign s_sw_2             = s_sw_15_0[2];
  assign s_sw_3             = s_sw_15_0[3];
  assign s_sw_4             = s_sw_15_0[4];
  assign s_sw_5             = s_sw_15_0[5];
  assign s_sw_6             = s_sw_15_0[6];
  assign s_sw_7             = s_sw_15_0[7];
  assign s_sw_8             = s_sw_15_0[8];
  assign s_sw_9             = s_sw_15_0[9];
  assign s_sw_10            = s_sw_15_0[10];
  assign s_sw_11            = s_sw_15_0[11];
  assign s_sw_12            = s_sw_15_0[12];
  assign s_sw_13            = s_sw_15_0[13];
  assign s_sw_14            = s_sw_15_0[14];
  assign s_sw_15            = s_sw_15_0[15];

  /*******************************************************************************
   ** Here all input connections are defined                                     **
   *******************************************************************************/
  assign s_gpr_15_0[15:0]   = GPR_15_0;
  assign s_f_15_0[15:0]     = F_15_0;
  assign s_a_15_0[15:0]     = A_15_0;
  assign s_ea_15_0[15:0]    = EA_15_0;
  assign s_dbr_15_0[15:0]   = DBR_15_0;
  assign s_arg_15_0[15:0]   = ARG_15_0;
  assign s_lba_2_0[2:0]     = LBA_2_0;
  assign s_sw_15_0[15:0]    = SW_15_0;
  assign s_laa_3_1[2:0]     = LAA_3_1;
  assign s_sts_15_0[15:0]   = STS_15_0;
  assign s_fidbi_15_0[15:0] = FIDBI_15_0;
  assign s_csidbs_4_0[4:0]  = CSIDBS_4_0;
  assign s_aluclk           = ALUCLK;
  assign s_alud2n           = ALUD2N;

  /*******************************************************************************
   ** Here all output connections are defined                                    **
   *******************************************************************************/
  assign D_15_0             = s_d_15_0_out[15:0];
  assign G_15_0             = s_g_15_0_out[15:0];

  /*******************************************************************************
   ** Here all sub-circuits are defined                                          **
   *******************************************************************************/

  MUX31LP GMUX15 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[15]),
      .D1(s_a_15_0[15]),
      .D2(s_f_15_0[15]),
      .ZN(s_g_15_0_out[15])
  );

  MUX31LP GMUX14 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[14]),
      .D1(s_a_15_0[14]),
      .D2(s_f_15_0[14]),
      .ZN(s_g_15_0_out[14])
  );

  MUX31LP GMUX13 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[13]),
      .D1(s_a_15_0[13]),
      .D2(s_f_15_0[13]),
      .ZN(s_g_15_0_out[13])
  );

  MUX31LP GMUX12 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[12]),
      .D1(s_a_15_0[12]),
      .D2(s_f_15_0[12]),
      .ZN(s_g_15_0_out[12])
  );

  MUX31LP GMUX11 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[11]),
      .D1(s_a_15_0[11]),
      .D2(s_f_15_0[11]),
      .ZN(s_g_15_0_out[11])
  );

  MUX31LP GMUX10 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[10]),
      .D1(s_a_15_0[10]),
      .D2(s_f_15_0[10]),
      .ZN(s_g_15_0_out[10])
  );

  MUX31LP GMUX9 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[9]),
      .D1(s_a_15_0[9]),
      .D2(s_f_15_0[9]),
      .ZN(s_g_15_0_out[9])
  );

  MUX31LP GMUX8 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[8]),
      .D1(s_a_15_0[8]),
      .D2(s_f_15_0[8]),
      .ZN(s_g_15_0_out[8])
  );

  MUX31LP GMUX7 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[7]),
      .D1(s_a_15_0[7]),
      .D2(s_f_15_0[7]),
      .ZN(s_g_15_0_out[7])
  );

  MUX31LP GMUX6 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[6]),
      .D1(s_a_15_0[6]),
      .D2(s_f_15_0[6]),
      .ZN(s_g_15_0_out[6])
  );

  MUX31LP GMUX5 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[5]),
      .D1(s_a_15_0[5]),
      .D2(s_f_15_0[5]),
      .ZN(s_g_15_0_out[5])
  );

  MUX31LP GMUX4 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[4]),
      .D1(s_a_15_0[4]),
      .D2(s_f_15_0[4]),
      .ZN(s_g_15_0_out[4])
  );

  MUX31LP GMUX3 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[3]),
      .D1(s_a_15_0[3]),
      .D2(s_f_15_0[3]),
      .ZN(s_g_15_0_out[3])
  );

  MUX31LP GMUX2 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[2]),
      .D1(s_a_15_0[2]),
      .D2(s_f_15_0[2]),
      .ZN(s_g_15_0_out[2])
  );

  MUX31LP GMUX1 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[1]),
      .D1(s_a_15_0[1]),
      .D2(s_f_15_0[1]),
      .ZN(s_g_15_0_out[1])
  );

  MUX31LP GMUX0 (
      .A (s_ea),
      .B (s_ef),
      .D0(s_d_15_0_out[0]),
      .D1(s_a_15_0[0]),
      .D2(s_f_15_0[0]),
      .ZN(s_g_15_0_out[0])
  );




  CGA_ALU_OUTMUX_SEL8 DMUX15 (
      .D(s_d_15_0_out[15]),
      .E_7_0(s_e_dmux15[7:0]),
      .SI_7_0(s_si_dmux15[7:0])
  );


  CGA_ALU_OUTMUX_SEL8 DMUX14 (
      .D(s_d_15_0_out[14]),
      .E_7_0(s_e_dmux14[7:0]),
      .SI_7_0(s_si_dmux14[7:0])
  );

  CGA_ALU_OUTMUX_SEL8 DMUX13 (
      .D(s_d_15_0_out[13]),
      .E_7_0(s_e_dmux13[7:0]),
      .SI_7_0(s_si_dmux13[7:0])
  );

  CGA_ALU_OUTMUX_SEL8 DMUX12 (
      .D(s_d_15_0_out[12]),
      .E_7_0(s_e_dmux12[7:0]),
      .SI_7_0(s_si_dmux12[7:0])
  );

  CGA_ALU_OUTMUX_SEL8 DMUX11 (
      .D(s_d_15_0_out[11]),
      .E_7_0(s_e_dmux11[7:0]),
      .SI_7_0(s_si_dmux11[7:0])
  );

  CGA_ALU_OUTMUX_SEL8 DMUX10 (
      .D(s_d_15_0_out[10]),
      .E_7_0(s_e_dmux10[7:0]),
      .SI_7_0(s_si_dmux10[7:0])
  );

  CGA_ALU_OUTMUX_SEL8 DMUX9 (
      .D(s_d_15_0_out[9]),
      .E_7_0(s_e_dmux9[7:0]),
      .SI_7_0(s_si_dmux9[7:0])
  );

  CGA_ALU_OUTMUX_SEL8 DMUX8 (
      .D(s_d_15_0_out[8]),
      .E_7_0(s_e_dmux8[7:0]),
      .SI_7_0(s_si_dmux8[7:0])
  );

  CGA_CPU_ALU_OUTMUX_SEL7 DMUX7 (
      .D(s_d_15_0_out[7]),
      .E_6_0(s_e_dmux7[6:0]),
      .SI_6_0(s_si_dmux7[6:0])
  );

  CGA_ALU_OUTMUX_SEL8 DMUX6 (
      .D(s_d_15_0_out[6]),
      .E_7_0(s_e_dmux6[7:0]),
      .SI_7_0(s_si_dmux6[7:0])
  );

  CGA_ALU_OUTMUX_SEL8 DMUX5 (
      .D(s_d_15_0_out[5]),
      .E_7_0(s_e_dmux5[7:0]),
      .SI_7_0(s_si_dmux5[7:0])
  );

  CGA_ALU_OUTMUX_SEL8 DMUX4 (
      .D(s_d_15_0_out[4]),
      .E_7_0(s_e_dmux4[7:0]),
      .SI_7_0(s_si_dmux4[7:0])
  );

  CGA_ALU_OUTMUX_SEL8 DMUX3 (
      .D(s_d_15_0_out[3]),
      .E_7_0(s_e_dmux3[7:0]),
      .SI_7_0(s_si_dmux3[7:0])
  );

  CGA_ALU_OUTMUX_SEL8 DMUX2 (
      .D(s_d_15_0_out[2]),
      .E_7_0(s_e_dmux2[7:0]),
      .SI_7_0(s_si_dmux2[7:0])
  );

  CGA_ALU_OUTMUX_SEL8 DMUX1 (
      .D(s_d_15_0_out[1]),
      .E_7_0(s_e_dmux1[7:0]),
      .SI_7_0(s_si_dmux1[7:0])
  );

  CGA_ALU_OUTMUX_SEL8 DMUX0 (
      .D(s_d_15_0_out[0]),
      .E_7_0(s_e_dmux0[7:0]),
      .SI_7_0(s_si_dmux0[7:0])
  );

  CGA_ALU_OUTMUX_IDBS OUTMUX_IDBS
  (
      .sysclk(sysclk),
      .ALUCLK_EN(ALUCLK_EN),
      .ALUCLK(s_aluclk),
      .ALUD2N(s_alud2n),
      .CSIDBS_4_0(s_csidbs_4_0[4:0]),
      .EA(s_ea),
      .EAARG(s_eaarg),
      .EBARG(s_ebarg),
      .EABARG(s_eabarg),
      .EARG(s_earg),
      .EBMG(s_ebmg),
      .EDBR(s_edbr),
      .EF(s_ef),
      .EFIDB(s_efidb),
      .EGPRH(s_egprh),
      .EGPRL(s_egprl),
      .EGPRS(s_egprs),
      .ESTS(s_ests),
      .ESWAP(s_eswap)
  );

endmodule