Skip to content

CGA_INTR_IRSRC

Source: Verilog/DELILAH-CPU/CGA_INTR/circuit/CGA_INTR_IRSRC.v

Where it sits (Simulation): ND120_TOP > ND120_CORE > ND3202D > CPU_15 > CPU_PROC_32 > CPU_PROC_CGA_33 > CGA > CGA_INTR > CGA_INTR_IRSRC - instance path: CORE.CPU_BOARD.CPU.PROC.CGA.DELILAH.INTR.IRSRC

Used in: CGA_INTR (all tops)

Contains: NAND_GATE x16, NOR_GATE x10

Module hierarchy - All modules

CGA_INTR_IRSRC symbol

Schematic

Drawn from the Verilog: the yosys netlist of the Simulation (Verilator) build, instance CORE.CPU_BOARD.CPU.PROC.CGA.DELILAH.INTR.IRSRC. 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_INTR_IRSRC schematic

Description

ND120 CGA (CPU Gate Array / DELILAH) /CGA/INTR/IRSRC Interrupt Source Page 76 SHEET 1 of 1 Last reviewed: 10-NOV-2024 Ronny Hansen

Ports

Direction Width Name Description
input 1 BINT10N Bus Interrupt 10, active low (from CGA_INTR.BINT10N)
input 1 BINT11N Bus Interrupt 11, active low (from CGA_INTR.BINT11N)
input 1 BINT12N Bus Interrupt 12, active low (from CGA_INTR.BINT12N)
input 1 BINT13N Bus Interrupt 13, active low (from CGA_INTR.BINT13N)
input 1 BINT15N Bus Interrupt 15, active low (from CGA_INTR.BINT15N)
input 1 EMPIDN Interrupt Disable (EPIC.LDMPIE->set mask reg:inh all ints) (from CGA_INTR.EMPIDN)
input [15:0] FIDBO_15_0 FIDB , 16-bit (from CGA_INTR.FIDBO_15_0)
input 1 IOXERRN IO Exception Error, active low (from CGA_INTR.IOXERRN)
input 1 MORN MOR signal, active low (Memory Error) (from CGA_INTR.MORN)
input 1 PARERRN Parity Error, active low (from CGA_INTR.PARERRN)
input 1 POWFAILN Power Failure, active low (from CGA_INTR.POWFAILN)
input 1 Z Error flag from ALU (from CGA_INTR.Z)
output [15:0] IREQ_15_0_N (active low)

Verilog source

Verilog/DELILAH-CPU/CGA_INTR/circuit/CGA_INTR_IRSRC.v on GitHub.

Show the Verilog of CGA_INTR_IRSRC (302 lines)
/**************************************************************************
** ND120 CGA (CPU Gate Array / DELILAH)                                  **
** /CGA/INTR/IRSRC                                                       **
** Interrupt Source                                                      **
**                                                                       **
** Page 76                                                               **
** SHEET 1 of 1                                                          **
**                                                                       **
** Last reviewed: 10-NOV-2024                                            **
** Ronny Hansen                                                          **
***************************************************************************/

module CGA_INTR_IRSRC (
    input        BINT10N,  //! Bus Interrupt 10, active low (from CGA_INTR.BINT10N)
    input        BINT11N,  //! Bus Interrupt 11, active low (from CGA_INTR.BINT11N)
    input        BINT12N,  //! Bus Interrupt 12, active low (from CGA_INTR.BINT12N)
    input        BINT13N,  //! Bus Interrupt 13, active low (from CGA_INTR.BINT13N)
    input        BINT15N,  //! Bus Interrupt 15, active low (from CGA_INTR.BINT15N)
    input        EMPIDN,  //! Interrupt Disable (EPIC.LDMPIE->set mask reg:inh all ints) (from CGA_INTR.EMPIDN)
    input [15:0] FIDBO_15_0,  //! FIDB , 16-bit (from CGA_INTR.FIDBO_15_0)
    input        IOXERRN,  //! IO Exception Error, active low (from CGA_INTR.IOXERRN)
    input        MORN,  //! MOR signal, active low (Memory Error) (from CGA_INTR.MORN)
    input        PARERRN,  //! Parity Error, active low (from CGA_INTR.PARERRN)
    input        POWFAILN,  //! Power Failure, active low (from CGA_INTR.POWFAILN)
    input        Z,  //! Error flag from ALU (from CGA_INTR.Z)

    output [15:0] IREQ_15_0_N
);

  /*******************************************************************************
   ** The wires are defined here                                                 **
   *******************************************************************************/
  wire [15:0] s_ireq_15_0_n_out;
  wire [15:0] s_fidbo_15_0;
  wire        s_bint10_n;
  wire        s_bint11_n;
  wire        s_bint12_n;
  wire        s_bint13_n;
  wire        s_bint15_n;
  wire        s_empid_n;
  wire        s_empid;
  wire        s_gates1_out;
  wire        s_gates14_out;
  wire        s_gates15_out;
  wire        s_gates16_out;
  wire        s_gates2_out;
  wire        s_gates4_out;
  wire        s_gates5_out;
  wire        s_gates6_out;
  wire        s_gates7_out;
  wire        s_gates9_out;
  wire        s_ioxerr_n;
  wire        s_mor_n;
  wire        s_parerr_n;
  wire        s_powfail_n;
  wire        s_z_n;
  wire        s_z;

  /*******************************************************************************
   ** Here all input connections are defined                                     **
   *******************************************************************************/
  assign s_fidbo_15_0[15:0] = FIDBO_15_0;
  assign s_bint10_n         = BINT10N;
  assign s_bint11_n         = BINT11N;
  assign s_bint12_n         = BINT12N;
  assign s_bint13_n         = BINT13N;
  assign s_bint15_n         = BINT15N;
  assign s_empid_n          = EMPIDN;
  assign s_ioxerr_n         = IOXERRN;
  assign s_mor_n            = MORN;
  assign s_parerr_n         = PARERRN;
  assign s_powfail_n        = POWFAILN;
  assign s_z                = Z;

  /*******************************************************************************
   ** Here all output connections are defined                                    **
   *******************************************************************************/
  assign IREQ_15_0_N        = s_ireq_15_0_n_out[15:0];

  /*******************************************************************************
   ** Here all in-lined components are defined                                   **
   *******************************************************************************/

  // NOT Gate
  assign s_z_n              = ~s_z;

  // NOT Gate
  assign s_empid            = ~s_empid_n;

  /*******************************************************************************
   ** Here all normal components are defined                                     **
   *******************************************************************************/
  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_1 (
      .input1(s_fidbo_15_0[0]),
      .input2(s_empid),
      .result(s_gates1_out)
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_2 (
      .input1(s_fidbo_15_0[15]),
      .input2(s_empid),
      .result(s_gates2_out)
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_3 (
      .input1(s_fidbo_15_0[14]),
      .input2(s_empid),
      .result(s_ireq_15_0_n_out[14])
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_4 (
      .input1(s_fidbo_15_0[13]),
      .input2(s_empid),
      .result(s_gates4_out)
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_5 (
      .input1(s_fidbo_15_0[12]),
      .input2(s_empid),
      .result(s_gates5_out)
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_6 (
      .input1(s_fidbo_15_0[11]),
      .input2(s_empid),
      .result(s_gates6_out)
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_7 (
      .input1(s_fidbo_15_0[10]),
      .input2(s_empid),
      .result(s_gates7_out)
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_8 (
      .input1(s_fidbo_15_0[9]),
      .input2(s_empid),
      .result(s_ireq_15_0_n_out[9])
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_9 (
      .input1(s_fidbo_15_0[8]),
      .input2(s_empid),
      .result(s_gates9_out)
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_10 (
      .input1(s_fidbo_15_0[7]),
      .input2(s_empid),
      .result(s_ireq_15_0_n_out[7])
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_11 (
      .input1(s_fidbo_15_0[6]),
      .input2(s_empid),
      .result(s_ireq_15_0_n_out[6])
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_12 (
      .input1(s_fidbo_15_0[5]),
      .input2(s_empid),
      .result(s_ireq_15_0_n_out[5])
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_13 (
      .input1(s_fidbo_15_0[4]),
      .input2(s_empid),
      .result(s_ireq_15_0_n_out[4])
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_14 (
      .input1(s_fidbo_15_0[3]),
      .input2(s_empid),
      .result(s_gates14_out)
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_15 (
      .input1(s_fidbo_15_0[2]),
      .input2(s_empid),
      .result(s_gates15_out)
  );

  NAND_GATE #(
      .BubblesMask(2'b00)
  ) GATES_16 (
      .input1(s_fidbo_15_0[1]),
      .input2(s_empid),
      .result(s_gates16_out)
  );

  NOR_GATE #(
      .BubblesMask(2'b11)
  ) GATES_17 (
      .input1(s_gates16_out),
      .input2(s_bint11_n),
      .result(s_ireq_15_0_n_out[1])
  );

  NOR_GATE #(
      .BubblesMask(2'b11)
  ) GATES_18 (
      .input1(s_gates1_out),
      .input2(s_bint10_n),
      .result(s_ireq_15_0_n_out[0])
  );

  NOR_GATE #(
      .BubblesMask(2'b11)
  ) GATES_19 (
      .input1(s_gates2_out),
      .input2(s_bint15_n),
      .result(s_ireq_15_0_n_out[15])
  );

  NOR_GATE #(
      .BubblesMask(2'b11)
  ) GATES_20 (
      .input1(s_gates4_out),
      .input2(s_powfail_n),
      .result(s_ireq_15_0_n_out[13])
  );

  NOR_GATE #(
      .BubblesMask(2'b11)
  ) GATES_21 (
      .input1(s_gates5_out),
      .input2(s_mor_n),
      .result(s_ireq_15_0_n_out[12])
  );

  NOR_GATE #(
      .BubblesMask(2'b11)
  ) GATES_22 (
      .input1(s_gates6_out),
      .input2(s_parerr_n),
      .result(s_ireq_15_0_n_out[11])
  );

  NOR_GATE #(
      .BubblesMask(2'b11)
  ) GATES_23 (
      .input1(s_gates7_out),
      .input2(s_ioxerr_n),
      .result(s_ireq_15_0_n_out[10])
  );

  NOR_GATE #(
      .BubblesMask(2'b11)
  ) GATES_24 (
      .input1(s_gates9_out),
      .input2(s_z_n),
      .result(s_ireq_15_0_n_out[8])
  );

  NOR_GATE #(
      .BubblesMask(2'b11)
  ) GATES_25 (
      .input1(s_gates14_out),
      .input2(s_bint13_n),
      .result(s_ireq_15_0_n_out[3])
  );

  NOR_GATE #(
      .BubblesMask(2'b11)
  ) GATES_26 (
      .input1(s_gates15_out),
      .input2(s_bint12_n),
      .result(s_ireq_15_0_n_out[2])
  );


endmodule