--
-- Generated by VASY
--
ENTITY coeur IS
PORT(
  a_from_pads	: IN BIT_VECTOR(3 DOWNTO 0);
  b_from_pads	: IN BIT_VECTOR(3 DOWNTO 0);
  cin_from_pads	: IN BIT;
  ck	: IN BIT;
  cout_to_pads	: OUT BIT;
  d_from_pads	: IN BIT_VECTOR(3 DOWNTO 0);
  i_from_pads	: IN BIT_VECTOR(8 DOWNTO 0);
  ng_to_pads	: OUT BIT;
  noe_from_pads	: IN BIT;
  np_to_pads	: OUT BIT;
  ovr_to_pads	: OUT BIT;
  q0_from_pads	: IN BIT;
  q0_to_pads	: OUT BIT;
  q3_from_pads	: IN BIT;
  q3_to_pads	: OUT BIT;
  r0_from_pads	: IN BIT;
  r0_to_pads	: OUT BIT;
  r3_from_pads	: IN BIT;
  r3_to_pads	: OUT BIT;
  shift_l	: OUT BIT;
  shift_r	: OUT BIT;
  f3_to_pads	: OUT BIT;
  vdd	: IN BIT;
  vss	: IN BIT;
  y_oe	: OUT BIT;
  y_to_pads	: OUT BIT_VECTOR(3 DOWNTO 0);
  zero_to_pads	: OUT BIT
);
END coeur;

ARCHITECTURE VST OF coeur IS

  SIGNAL alu_out	: BIT_VECTOR(3 DOWNTO 0);
  SIGNAL r	: BIT_VECTOR(3 DOWNTO 0);
  SIGNAL ra	: BIT_VECTOR(3 DOWNTO 0);
  SIGNAL rb	: BIT_VECTOR(3 DOWNTO 0);
  SIGNAL s	: BIT_VECTOR(3 DOWNTO 0);
  SIGNAL saccu	: BIT_VECTOR(3 DOWNTO 0);

  COMPONENT muxs
  PORT(
  alu_out	: IN BIT_VECTOR(3 DOWNTO 0);
  i	: IN BIT_VECTOR(2 DOWNTO 0);
  noe	: IN BIT;
  oe	: OUT BIT;
  ra	: IN BIT_VECTOR(3 DOWNTO 0);
  shift_l	: OUT BIT;
  shift_r	: OUT BIT;
  vdd	: IN BIT;
  vss	: IN BIT;
  y	: OUT BIT_VECTOR(3 DOWNTO 0)
  );
  END COMPONENT;

  COMPONENT alu
  PORT(
  alu_out	: INOUT BIT_VECTOR(3 DOWNTO 0);
  cin	: IN BIT;
  cout	: OUT BIT;
  i	: IN BIT_VECTOR(2 DOWNTO 0);
  ng	: OUT BIT;
  np	: OUT BIT;
  ovr	: OUT BIT;
  r	: IN BIT_VECTOR(3 DOWNTO 0);
  s	: IN BIT_VECTOR(3 DOWNTO 0);
  f3	: OUT BIT;
  vdd	: IN BIT;
  vss	: IN BIT;
  zero	: OUT BIT
  );
  END COMPONENT;

  COMPONENT accu
  PORT(
  accu	: INOUT BIT_VECTOR(3 DOWNTO 0);
  alu_out	: IN BIT_VECTOR(3 DOWNTO 0);
  cke	: IN BIT;
  i	: IN BIT_VECTOR(2 DOWNTO 0);
  q0_from	: IN BIT;
  q0_to	: OUT BIT;
  q3_from	: IN BIT;
  q3_to	: OUT BIT;
  vdd	: IN BIT;
  vss	: IN BIT
  );
  END COMPONENT;

  COMPONENT ram
  PORT(
  a	: IN BIT_VECTOR(3 DOWNTO 0);
  alu_out	: IN BIT_VECTOR(3 DOWNTO 0);
  b	: IN BIT_VECTOR(3 DOWNTO 0);
  clk	: IN BIT;
  i	: IN BIT_VECTOR(2 DOWNTO 0);
  r0_from_pads	: IN BIT;
  r0_to_pads	: OUT BIT;
  r3_from_pads	: IN BIT;
  r3_to_pads	: OUT BIT;
  ra	: OUT BIT_VECTOR(3 DOWNTO 0);
  rb	: OUT BIT_VECTOR(3 DOWNTO 0);
  vdd	: IN BIT;
  vss	: IN BIT
  );
  END COMPONENT;

  COMPONENT muxe
  PORT(
  accu	: IN BIT_VECTOR(3 DOWNTO 0);
  d	: IN BIT_VECTOR(3 DOWNTO 0);
  i	: IN BIT_VECTOR(2 DOWNTO 0);
  r	: OUT BIT_VECTOR(3 DOWNTO 0);
  ra	: IN BIT_VECTOR(3 DOWNTO 0);
  rb	: IN BIT_VECTOR(3 DOWNTO 0);
  s	: OUT BIT_VECTOR(3 DOWNTO 0);
  vdd	: IN BIT;
  vss	: IN BIT
  );
  END COMPONENT;

BEGIN

  iram : ram
  PORT MAP (
    a(3 downto 0) => a_from_pads,
    alu_out => alu_out,
    b(3 downto 0) => b_from_pads,
    i(2 downto 0) => i_from_pads(8 downto 6),
    ra => ra,
    rb => rb,
    vss => vss,
    vdd => vdd,
    r3_to_pads => r3_to_pads,
    r3_from_pads => r3_from_pads,
    r0_to_pads => r0_to_pads,
    r0_from_pads => r0_from_pads,
    clk => ck
  );
  iaccu : accu
  PORT MAP (
    accu(3 downto 0) => saccu,
    alu_out => alu_out,
    i(2 downto 0) => i_from_pads(8 downto 6),
    vss => vss,
    vdd => vdd,
    q3_to => q3_to_pads,
    q3_from => q3_from_pads,
    q0_to => q0_to_pads,
    q0_from => q0_from_pads,
    cke => ck
  );
  ialu : alu
  PORT MAP (
    alu_out => alu_out,
    i(2 downto 0) => i_from_pads(5 downto 3),
    r => r,
    s => s,
    zero => zero_to_pads,
    vss => vss,
    vdd => vdd,
    f3 => f3_to_pads,
    ovr => ovr_to_pads,
    np => np_to_pads,
    ng => ng_to_pads,
    cout => cout_to_pads,
    cin => cin_from_pads
  );
  imuxs : muxs
  PORT MAP (
    alu_out => alu_out,
    i(2 downto 0) => i_from_pads(8 downto 6),
    ra => ra,
    y(3 downto 0) => y_to_pads,
    vss => vss,
    vdd => vdd,
    shift_r => shift_r,
    shift_l => shift_l,
    oe => y_oe,
    noe => noe_from_pads
  );
  imuxe : muxe
  PORT MAP (
    accu(3 downto 0) => saccu,
    d(3 downto 0) => d_from_pads,
    i(2 downto 0) => i_from_pads(2 downto 0),
    r => r,
    ra => ra,
    rb => rb,
    s => s,
    vss => vss,
    vdd => vdd
  );
END VST;
