data/full_repos/permissive/528287433/BasicArith.v
data/verilator_xmls/7cdab26c-9025-4710-ad23-3ab98d492a80.xml
module BasicArith(
  input         clock,
  input         reset,
  output        io_q_ready,
  input         io_q_valid,
  input  [31:0] io_q_bits,
  output        io_a_ready,
  input         io_a_valid,
  input  [31:0] io_a_bits,
  output        io_b_ready,
  input         io_b_valid,
  input  [31:0] io_b_bits,
  output        io_flag_ready,
  input         io_flag_valid,
  input  [1:0]  io_flag_bits,
  input         io_output_ready,
  output        io_output_valid,
  output [31:0] io_output_bits
);
  wire  mod_clock;
  wire  mod_reset;
  wire  mod_io_input1_ready;
  wire  mod_io_input1_valid;
  wire  mod_io_input2_ready;
  wire  mod_io_input2_valid;
  wire  mod_io_output_ready;
  wire  add_clock;
  wire  add_reset;
  wire  add_io_input1_valid;
  wire  add_io_input2_valid;
  wire  add_io_output_ready;
  wire  add_io_output_valid;
  wire  sub_clock;
  wire  sub_reset;
  wire  sub_io_input1_ready;
  wire  sub_io_input1_valid;
  wire  sub_io_input2_ready;
  wire  sub_io_input2_valid;
  wire  sub_io_output_ready;
  wire  sub_io_output_valid;
  wire  mul_clock;
  wire  mul_reset;
  wire  mul_io_input1_valid;
  wire  mul_io_input2_valid;
  wire  mul_io_output_ready;
  wire  mul_io_output_valid;
  wire  _GEN_1 = io_flag_bits == 2'h1 ? add_io_output_valid : sub_io_output_valid;
  Mod mod (
    .clock(mod_clock),
    .reset(mod_reset),
    .io_input1_ready(mod_io_input1_ready),
    .io_input1_valid(mod_io_input1_valid),
    .io_input2_ready(mod_io_input2_ready),
    .io_input2_valid(mod_io_input2_valid),
    .io_output_ready(mod_io_output_ready)
  );
  Add add (
    .clock(add_clock),
    .reset(add_reset),
    .io_input1_valid(add_io_input1_valid),
    .io_input2_valid(add_io_input2_valid),
    .io_output_ready(add_io_output_ready),
    .io_output_valid(add_io_output_valid)
  );
  Sub sub (
    .clock(sub_clock),
    .reset(sub_reset),
    .io_input1_ready(sub_io_input1_ready),
    .io_input1_valid(sub_io_input1_valid),
    .io_input2_ready(sub_io_input2_ready),
    .io_input2_valid(sub_io_input2_valid),
    .io_output_ready(sub_io_output_ready),
    .io_output_valid(sub_io_output_valid)
  );
  Mul mul (
    .clock(mul_clock),
    .reset(mul_reset),
    .io_input1_valid(mul_io_input1_valid),
    .io_input2_valid(mul_io_input2_valid),
    .io_output_ready(mul_io_output_ready),
    .io_output_valid(mul_io_output_valid)
  );
  assign io_q_ready = mod_io_input2_ready;
  assign io_a_ready = sub_io_input1_ready;
  assign io_b_ready = sub_io_input2_ready;
  assign io_flag_ready = 1'h1;
  assign io_output_valid = 1'h0;
  assign io_output_bits = 32'h0;
  assign mod_clock = clock;
  assign mod_reset = reset;
  assign mod_io_input1_valid = io_flag_bits == 2'h0 ? mul_io_output_valid : _GEN_1;
  assign mod_io_input2_valid = io_q_valid;
  assign mod_io_output_ready = io_output_ready;
  assign add_clock = clock;
  assign add_reset = reset;
  assign add_io_input1_valid = io_a_valid;
  assign add_io_input2_valid = io_b_valid;
  assign add_io_output_ready = mod_io_input1_ready;
  assign sub_clock = clock;
  assign sub_reset = reset;
  assign sub_io_input1_valid = io_a_valid;
  assign sub_io_input2_valid = io_b_valid;
  assign sub_io_output_ready = mod_io_input1_ready;
  assign mul_clock = clock;
  assign mul_reset = reset;
  assign mul_io_input1_valid = io_a_valid;
  assign mul_io_input2_valid = io_b_valid;
  assign mul_io_output_ready = mod_io_input1_ready;
endmodule
module BasicArith(
  input         clock,
  input         reset,
  output        io_q_ready,
  input         io_q_valid,
  input  [31:0] io_q_bits,
  output        io_a_ready,
  input         io_a_valid,
  input  [31:0] io_a_bits,
  output        io_b_ready,
  input         io_b_valid,
  input  [31:0] io_b_bits,
  output        io_flag_ready,
  input         io_flag_valid,
  input  [1:0]  io_flag_bits,
  input         io_output_ready,
  output        io_output_valid,
  output [31:0] io_output_bits
);

  wire  mod_clock;
  wire  mod_reset;
  wire  mod_io_input1_ready;
  wire  mod_io_input1_valid;
  wire  mod_io_input2_ready;
  wire  mod_io_input2_valid;
  wire  mod_io_output_ready;
  wire  add_clock;
  wire  add_reset;
  wire  add_io_input1_valid;
  wire  add_io_input2_valid;
  wire  add_io_output_ready;
  wire  add_io_output_valid;
  wire  sub_clock;
  wire  sub_reset;
  wire  sub_io_input1_ready;
  wire  sub_io_input1_valid;
  wire  sub_io_input2_ready;
  wire  sub_io_input2_valid;
  wire  sub_io_output_ready;
  wire  sub_io_output_valid;
  wire  mul_clock;
  wire  mul_reset;
  wire  mul_io_input1_valid;
  wire  mul_io_input2_valid;
  wire  mul_io_output_ready;
  wire  mul_io_output_valid;
  wire  _GEN_1 = io_flag_bits == 2'h1 ? add_io_output_valid : sub_io_output_valid;
  Mod mod (
    .clock(mod_clock),
    .reset(mod_reset),
    .io_input1_ready(mod_io_input1_ready),
    .io_input1_valid(mod_io_input1_valid),
    .io_input2_ready(mod_io_input2_ready),
    .io_input2_valid(mod_io_input2_valid),
    .io_output_ready(mod_io_output_ready)
  );
  Add add (
    .clock(add_clock),
    .reset(add_reset),
    .io_input1_valid(add_io_input1_valid),
    .io_input2_valid(add_io_input2_valid),
    .io_output_ready(add_io_output_ready),
    .io_output_valid(add_io_output_valid)
  );
  Sub sub (
    .clock(sub_clock),
    .reset(sub_reset),
    .io_input1_ready(sub_io_input1_ready),
    .io_input1_valid(sub_io_input1_valid),
    .io_input2_ready(sub_io_input2_ready),
    .io_input2_valid(sub_io_input2_valid),
    .io_output_ready(sub_io_output_ready),
    .io_output_valid(sub_io_output_valid)
  );
  Mul mul (
    .clock(mul_clock),
    .reset(mul_reset),
    .io_input1_valid(mul_io_input1_valid),
    .io_input2_valid(mul_io_input2_valid),
    .io_output_ready(mul_io_output_ready),
    .io_output_valid(mul_io_output_valid)
  );
  assign io_q_ready = mod_io_input2_ready;
  assign io_a_ready = sub_io_input1_ready;
  assign io_b_ready = sub_io_input2_ready;
  assign io_flag_ready = 1'h1;
  assign io_output_valid = 1'h0;
  assign io_output_bits = 32'h0;
  assign mod_clock = clock;
  assign mod_reset = reset;
  assign mod_io_input1_valid = io_flag_bits == 2'h0 ? mul_io_output_valid : _GEN_1;
  assign mod_io_input2_valid = io_q_valid;
  assign mod_io_output_ready = io_output_ready;
  assign add_clock = clock;
  assign add_reset = reset;
  assign add_io_input1_valid = io_a_valid;
  assign add_io_input2_valid = io_b_valid;
  assign add_io_output_ready = mod_io_input1_ready;
  assign sub_clock = clock;
  assign sub_reset = reset;
  assign sub_io_input1_valid = io_a_valid;
  assign sub_io_input2_valid = io_b_valid;
  assign sub_io_output_ready = mod_io_input1_ready;
  assign mul_clock = clock;
  assign mul_reset = reset;
  assign mul_io_input1_valid = io_a_valid;
  assign mul_io_input2_valid = io_b_valid;
  assign mul_io_output_ready = mod_io_input1_ready;
endmodule