diff --git a/verilog/rtl/leaf_chip.v b/verilog/rtl/leaf_chip.v
new file mode 100644
index 0000000..c8e22a7
--- /dev/null
+++ b/verilog/rtl/leaf_chip.v
@@ -0,0 +1,2501 @@
+/* Generated by Yosys 0.9+4303 (git sha1 c88eaea6, clang 11.0.1-2 -fPIC -Os) */
+
+module alu(opd0, opd1, op, res);
+  wire [31:0] _00_;
+  wire [31:0] _01_;
+  wire _02_;
+  wire [31:0] _03_;
+  wire _04_;
+  wire _05_;
+  wire _06_;
+  wire _07_;
+  wire _08_;
+  wire _09_;
+  wire _10_;
+  wire _11_;
+  wire [31:0] _12_;
+  wire _13_;
+  wire [31:0] _14_;
+  wire _15_;
+  wire [31:0] _16_;
+  wire _17_;
+  wire [31:0] _18_;
+  wire _19_;
+  wire [31:0] _20_;
+  wire _21_;
+  wire [31:0] _22_;
+  wire _23_;
+  wire arith_op;
+  wire [31:0] arith_res;
+  wire [31:0] comp_res;
+  wire [31:0] logic_res;
+  input [5:0] op;
+  input [31:0] opd0;
+  input [31:0] opd1;
+  output [31:0] res;
+  wire [31:0] shifter_res;
+  assign arith_op = op[4] | op[5];
+  assign _00_ = ~ opd1;
+  assign _01_ = arith_op ? _00_ : opd1;
+  assign _02_ = arith_op ? 1'h1 : 1'h0;
+  assign _03_ = opd0 + _01_;
+  assign arith_res = _03_ + { 31'h00000000, _02_ };
+  assign _04_ = opd0[31] == opd1[31];
+  assign _05_ = ~ op[4];
+  assign _06_ = ~ opd1[31];
+  assign _07_ = opd0[31] & _06_;
+  assign _08_ = ~ opd0[31];
+  assign _09_ = _08_ & opd1[31];
+  assign _10_ = _05_ ? _07_ : _09_;
+  assign _11_ = _04_ ? arith_res[31] : _10_;
+  assign comp_res = op[5] ? { 31'h00000000, _11_ } : arith_res;
+  assign _12_ = opd0 ^ opd1;
+  assign _13_ = op[3:2] == 2'h0;
+  assign _14_ = opd0 | opd1;
+  assign _15_ = op[3:2] == 2'h1;
+  assign _16_ = opd0 & opd1;
+  assign _17_ = op[3:2] == 2'h2;
+  function [31:0] \1841 ;
+    input [31:0] a;
+    input [95:0] b;
+    input [2:0] s;
+    (* parallel_case *)
+    casez (s)
+      3'b??1:
+        \1841  = b[31:0];
+      3'b?1?:
+        \1841  = b[63:32];
+      3'b1??:
+        \1841  = b[95:64];
+      default:
+        \1841  = a;
+    endcase
+  endfunction
+  assign logic_res = \1841 (comp_res, { _16_, _14_, _12_ }, { _17_, _15_, _13_ });
+  assign _18_ = opd0 << { 26'h0000000, opd1[4:0] };
+  assign _19_ = op[1:0] == 2'h0;
+  assign _20_ = opd0 >> { 26'h0000000, opd1[4:0] };
+  assign _21_ = op[1:0] == 2'h1;
+  assign _22_ = $signed(opd0) >>> { 26'h0000000, opd1[4:0] };
+  assign _23_ = op[1:0] == 2'h2;
+  function [31:0] \1859 ;
+    input [31:0] a;
+    input [95:0] b;
+    input [2:0] s;
+    (* parallel_case *)
+    casez (s)
+      3'b??1:
+        \1859  = b[31:0];
+      3'b?1?:
+        \1859  = b[63:32];
+      3'b1??:
+        \1859  = b[95:64];
+      default:
+        \1859  = a;
+    endcase
+  endfunction
+  assign shifter_res = \1859 (logic_res, { _22_, _20_, _18_ }, { _23_, _21_, _19_ });
+  assign res = shifter_res;
+endmodule
+
+module alu_ctrl(alu_op_en, alu_func_type, func3, func7, alu_op);
+  wire _00_;
+  wire _01_;
+  wire _02_;
+  wire _03_;
+  wire [5:0] _04_;
+  wire _05_;
+  wire _06_;
+  wire _07_;
+  wire _08_;
+  wire _09_;
+  wire _10_;
+  wire [5:0] _11_;
+  wire _12_;
+  wire _13_;
+  wire _14_;
+  wire [5:0] _15_;
+  wire [5:0] _16_;
+  input alu_func_type;
+  output [5:0] alu_op;
+  input alu_op_en;
+  input [2:0] func3;
+  input [6:0] func7;
+  assign _00_ = ~ alu_op_en;
+  assign _01_ = func7 == 7'h20;
+  assign _02_ = ~ alu_func_type;
+  assign _03_ = _01_ & _02_;
+  assign _04_ = _03_ ? 6'h1f : 6'h0f;
+  assign _05_ = func3 == 3'h0;
+  assign _06_ = func3 == 3'h1;
+  assign _07_ = func3 == 3'h2;
+  assign _08_ = func3 == 3'h3;
+  assign _09_ = func3 == 3'h4;
+  assign _10_ = func7 == 7'h20;
+  assign _11_ = _10_ ? 6'h0e : 6'h0d;
+  assign _12_ = func3 == 3'h5;
+  assign _13_ = func3 == 3'h6;
+  assign _14_ = func3 == 3'h7;
+  function [5:0] \1747 ;
+    input [5:0] a;
+    input [47:0] b;
+    input [7:0] s;
+    (* parallel_case *)
+    casez (s)
+      8'b???????1:
+        \1747  = b[5:0];
+      8'b??????1?:
+        \1747  = b[11:6];
+      8'b?????1??:
+        \1747  = b[17:12];
+      8'b????1???:
+        \1747  = b[23:18];
+      8'b???1????:
+        \1747  = b[29:24];
+      8'b??1?????:
+        \1747  = b[35:30];
+      8'b?1??????:
+        \1747  = b[41:36];
+      8'b1???????:
+        \1747  = b[47:42];
+      default:
+        \1747  = a;
+    endcase
+  endfunction
+  assign _15_ = \1747 (6'h0f, { 12'h2c7, _11_, 24'h0ffbcc, _04_ }, { _14_, _13_, _12_, _09_, _08_, _07_, _06_, _05_ });
+  assign _16_ = _00_ ? 6'h0f : _15_;
+  assign alu_op = _16_;
+endmodule
+
+module br_detector(reg0, reg1, mode, en, branch);
+  wire _00_;
+  wire _01_;
+  wire _02_;
+  wire _03_;
+  wire _04_;
+  wire _05_;
+  wire _06_;
+  wire _07_;
+  wire _08_;
+  wire _09_;
+  wire _10_;
+  wire _11_;
+  wire _12_;
+  wire _13_;
+  wire _14_;
+  output branch;
+  wire branch_i;
+  input en;
+  wire equal;
+  wire less;
+  wire less_unsigned;
+  input [2:0] mode;
+  input [31:0] reg0;
+  input [31:0] reg1;
+  assign _00_ = reg0 == reg1;
+  assign equal = _00_ ? 1'h1 : 1'h0;
+  assign _01_ = $signed(reg0) < $signed(reg1);
+  assign less = _01_ ? 1'h1 : 1'h0;
+  assign _02_ = reg0 < reg1;
+  assign less_unsigned = _02_ ? 1'h1 : 1'h0;
+  assign _03_ = mode == 3'h0;
+  assign _04_ = ~ equal;
+  assign _05_ = mode == 3'h1;
+  assign _06_ = mode == 3'h4;
+  assign _07_ = ~ less;
+  assign _08_ = _07_ | equal;
+  assign _09_ = mode == 3'h5;
+  assign _10_ = mode == 3'h6;
+  assign _11_ = ~ less_unsigned;
+  assign _12_ = _11_ | equal;
+  assign _13_ = mode == 3'h7;
+  function [0:0] \1405 ;
+    input [0:0] a;
+    input [5:0] b;
+    input [5:0] s;
+    (* parallel_case *)
+    casez (s)
+      6'b?????1:
+        \1405  = b[0:0];
+      6'b????1?:
+        \1405  = b[1:1];
+      6'b???1??:
+        \1405  = b[2:2];
+      6'b??1???:
+        \1405  = b[3:3];
+      6'b?1????:
+        \1405  = b[4:4];
+      6'b1?????:
+        \1405  = b[5:5];
+      default:
+        \1405  = a;
+    endcase
+  endfunction
+  assign branch_i = \1405 (1'h0, { _12_, less_unsigned, _08_, less, _04_, equal }, { _13_, _10_, _09_, _06_, _05_, _03_ });
+  assign _14_ = branch_i & en;
+  assign branch = _14_;
+endmodule
+
+module core_ca812405937f647b44fdbdb3a3bf576e759a7cf1(clk, reset, rd_instr_mem_data, rd_mem_data, ex_irq, sw_irq, tm_irq, rd_instr_mem_addr, wr_mem_data, rd_mem_en, wr_mem_en, rd_wr_mem_addr, wr_mem_byte_en);
+  wire [31:0] _0_;
+  wire [31:0] _1_;
+  wire [31:0] _2_;
+  wire _3_;
+  input clk;
+  wire [31:0] \core_id_ex_stage:433 ;
+  wire \core_id_ex_stage:434 ;
+  wire \core_id_ex_stage:435 ;
+  wire [31:0] \core_id_ex_stage:436 ;
+  wire [3:0] \core_id_ex_stage:437 ;
+  wire \core_id_ex_stage:438 ;
+  wire \core_id_ex_stage:439 ;
+  wire \core_id_ex_stage:440 ;
+  wire [31:0] \core_id_ex_stage:441 ;
+  wire [31:0] \core_if_stage:418 ;
+  wire [31:0] \core_if_stage:419 ;
+  wire [31:0] \core_if_stage:420 ;
+  wire [31:0] \core_if_stage:421 ;
+  wire \core_if_stage:422 ;
+  input ex_irq;
+  reg flush_reg;
+  reg [31:0] instr_reg;
+  reg [31:0] next_pc_reg;
+  reg [31:0] pc_reg;
+  output [31:0] rd_instr_mem_addr;
+  input [31:0] rd_instr_mem_data;
+  input [31:0] rd_mem_data;
+  output rd_mem_en;
+  output [31:0] rd_wr_mem_addr;
+  input reset;
+  input sw_irq;
+  input tm_irq;
+  output [3:0] wr_mem_byte_en;
+  output [31:0] wr_mem_data;
+  output wr_mem_en;
+  assign _0_ = reset ? 32'd0 : \core_if_stage:419 ;
+  assign _1_ = reset ? 32'd0 : \core_if_stage:420 ;
+  assign _2_ = reset ? 32'd0 : \core_if_stage:421 ;
+  assign _3_ = reset ? 1'h0 : \core_if_stage:422 ;
+  always @(posedge clk)
+    pc_reg <= _0_;
+  always @(posedge clk)
+    next_pc_reg <= _1_;
+  always @(posedge clk)
+    instr_reg <= _2_;
+  always @(posedge clk)
+    flush_reg <= _3_;
+  id_ex_stage core_id_ex_stage (
+    .branch(\core_id_ex_stage:438 ),
+    .clk(clk),
+    .ex_irq(ex_irq),
+    .flush(flush_reg),
+    .instr(instr_reg),
+    .jmp(\core_id_ex_stage:439 ),
+    .next_pc(next_pc_reg),
+    .pc(pc_reg),
+    .rd_mem_data(rd_mem_data),
+    .rd_mem_en(\core_id_ex_stage:434 ),
+    .rd_wr_mem_addr(\core_id_ex_stage:436 ),
+    .reset(reset),
+    .sw_irq(sw_irq),
+    .target(\core_id_ex_stage:441 ),
+    .tm_irq(tm_irq),
+    .trap(\core_id_ex_stage:440 ),
+    .wr_mem_byte_en(\core_id_ex_stage:437 ),
+    .wr_mem_data(\core_id_ex_stage:433 ),
+    .wr_mem_en(\core_id_ex_stage:435 )
+  );
+  if_stage_ca812405937f647b44fdbdb3a3bf576e759a7cf1 core_if_stage (
+    .branch(\core_id_ex_stage:438 ),
+    .clk(clk),
+    .flush(\core_if_stage:422 ),
+    .instr(\core_if_stage:421 ),
+    .jmp(\core_id_ex_stage:439 ),
+    .next_pc(\core_if_stage:420 ),
+    .pc(\core_if_stage:419 ),
+    .rd_instr_mem_addr(\core_if_stage:418 ),
+    .rd_instr_mem_data(rd_instr_mem_data),
+    .reset(reset),
+    .target(\core_id_ex_stage:441 ),
+    .trap(\core_id_ex_stage:440 )
+  );
+  assign rd_instr_mem_addr = \core_if_stage:418 ;
+  assign wr_mem_data = \core_id_ex_stage:433 ;
+  assign rd_mem_en = \core_id_ex_stage:434 ;
+  assign wr_mem_en = \core_id_ex_stage:435 ;
+  assign rd_wr_mem_addr = \core_id_ex_stage:436 ;
+  assign wr_mem_byte_en = \core_id_ex_stage:437 ;
+endmodule
+
+module csrs_b14a227a3c694ac3d0ad8c71b4ce4306403987f6(clk, reset, ex_irq, sw_irq, tm_irq, wr_mode, wr_en, rd_wr_addr, wr_reg_data, wr_imm_data, rd_data);
+  wire _00_;
+  wire _01_;
+  wire _02_;
+  wire _03_;
+  wire _04_;
+  wire _05_;
+  wire _06_;
+  wire _07_;
+  wire _08_;
+  wire _09_;
+  wire _10_;
+  wire [31:0] _11_;
+  wire _12_;
+  wire [31:0] _13_;
+  wire [31:0] _14_;
+  wire _15_;
+  wire _16_;
+  wire [31:0] _17_;
+  wire _18_;
+  wire [31:0] _19_;
+  wire [31:0] _20_;
+  wire _21_;
+  wire _22_;
+  wire _23_;
+  wire _24_;
+  wire _25_;
+  wire _26_;
+  wire _27_;
+  wire _28_;
+  wire _29_;
+  wire _30_;
+  wire _31_;
+  wire _32_;
+  wire _33_;
+  wire _34_;
+  wire _35_;
+  wire _36_;
+  wire _37_;
+  wire [29:0] _38_;
+  wire [29:0] _39_;
+  wire _40_;
+  wire _41_;
+  wire [31:0] _42_;
+  wire [31:0] _43_;
+  wire _44_;
+  wire _45_;
+  wire [29:0] _46_;
+  wire [29:0] _47_;
+  wire _48_;
+  wire _49_;
+  wire _50_;
+  wire [4:0] _51_;
+  wire _52_;
+  wire [4:0] _53_;
+  wire _54_;
+  wire _55_;
+  wire [31:0] _56_;
+  wire [31:0] _57_;
+  wire _58_;
+  wire _59_;
+  wire _60_;
+  input clk;
+  input ex_irq;
+  reg [4:0] mcause_exc;
+  reg mcause_int;
+  reg [29:0] mepc;
+  reg mie_meie;
+  reg mie_msie;
+  reg mie_mtie;
+  reg mip_meip;
+  reg mip_msip;
+  reg mip_mtip;
+  reg [31:0] mscratch;
+  reg mstatus_mie;
+  reg mstatus_mpie;
+  reg [31:0] mtval;
+  reg [29:0] mtvec_base;
+  output [31:0] rd_data;
+  wire [31:0] rd_data_i;
+  input [11:0] rd_wr_addr;
+  input reset;
+  input sw_irq;
+  input tm_irq;
+  wire [31:0] wr_data_i;
+  input wr_en;
+  input [31:0] wr_imm_data;
+  input [2:0] wr_mode;
+  input [31:0] wr_reg_data;
+  assign _00_ = rd_wr_addr == 12'hf14;
+  assign _01_ = rd_wr_addr == 12'h301;
+  assign _02_ = rd_wr_addr == 12'h300;
+  assign _03_ = rd_wr_addr == 12'h304;
+  assign _04_ = rd_wr_addr == 12'h305;
+  assign _05_ = rd_wr_addr == 12'h340;
+  assign _06_ = rd_wr_addr == 12'h341;
+  assign _07_ = rd_wr_addr == 12'h342;
+  assign _08_ = rd_wr_addr == 12'h343;
+  assign _09_ = rd_wr_addr == 12'h344;
+  function [31:0] \1562 ;
+    input [31:0] a;
+    input [319:0] b;
+    input [9:0] s;
+    (* parallel_case *)
+    casez (s)
+      10'b?????????1:
+        \1562  = b[31:0];
+      10'b????????1?:
+        \1562  = b[63:32];
+      10'b???????1??:
+        \1562  = b[95:64];
+      10'b??????1???:
+        \1562  = b[127:96];
+      10'b?????1????:
+        \1562  = b[159:128];
+      10'b????1?????:
+        \1562  = b[191:160];
+      10'b???1??????:
+        \1562  = b[223:192];
+      10'b??1???????:
+        \1562  = b[255:224];
+      10'b?1????????:
+        \1562  = b[287:256];
+      10'b1?????????:
+        \1562  = b[319:288];
+      default:
+        \1562  = a;
+    endcase
+  endfunction
+  assign rd_data_i = \1562 (32'd0, { 20'h00000, mip_meip, 3'h0, mip_mtip, 3'h0, mip_msip, 3'h0, mtval, mcause_int, 26'h0000000, mcause_exc, mepc, 2'h0, mscratch, mtvec_base, 22'h000000, mie_meie, 3'h0, mie_mtie, 3'h0, mie_msie, 27'h0000000, mstatus_mpie, 3'h0, mstatus_mie, 67'h04000010000000000 }, { _09_, _08_, _07_, _06_, _05_, _04_, _03_, _02_, _01_, _00_ });
+  assign _10_ = wr_mode == 3'h1;
+  assign _11_ = rd_data_i | wr_reg_data;
+  assign _12_ = wr_mode == 3'h2;
+  assign _13_ = ~ wr_reg_data;
+  assign _14_ = rd_data_i & _13_;
+  assign _15_ = wr_mode == 3'h3;
+  assign _16_ = wr_mode == 3'h5;
+  assign _17_ = rd_data_i | wr_imm_data;
+  assign _18_ = wr_mode == 3'h6;
+  assign _19_ = ~ wr_imm_data;
+  assign _20_ = rd_data_i & _19_;
+  assign _21_ = wr_mode == 3'h7;
+  function [31:0] \1585 ;
+    input [31:0] a;
+    input [191:0] b;
+    input [5:0] s;
+    (* parallel_case *)
+    casez (s)
+      6'b?????1:
+        \1585  = b[31:0];
+      6'b????1?:
+        \1585  = b[63:32];
+      6'b???1??:
+        \1585  = b[95:64];
+      6'b??1???:
+        \1585  = b[127:96];
+      6'b?1????:
+        \1585  = b[159:128];
+      6'b1?????:
+        \1585  = b[191:160];
+      default:
+        \1585  = a;
+    endcase
+  endfunction
+  assign wr_data_i = \1585 (32'd0, { _20_, _17_, wr_imm_data, _14_, _11_, wr_reg_data }, { _21_, _18_, _16_, _15_, _12_, _10_ });
+  assign _22_ = rd_wr_addr == 12'h300;
+  assign _23_ = _22_ & wr_en;
+  assign _24_ = _23_ ? wr_data_i[3] : mstatus_mie;
+  assign _25_ = _23_ ? wr_data_i[7] : mstatus_mpie;
+  assign _26_ = reset ? 1'h0 : _24_;
+  assign _27_ = reset ? 1'h1 : _25_;
+  always @(posedge clk)
+    mstatus_mie <= _26_;
+  always @(posedge clk)
+    mstatus_mpie <= _27_;
+  assign _28_ = rd_wr_addr == 12'h304;
+  assign _29_ = _28_ & wr_en;
+  assign _30_ = _29_ ? wr_data_i[11] : mie_meie;
+  assign _31_ = _29_ ? wr_data_i[7] : mie_mtie;
+  assign _32_ = _29_ ? wr_data_i[3] : mie_msie;
+  assign _33_ = reset ? 1'h0 : _30_;
+  assign _34_ = reset ? 1'h0 : _31_;
+  assign _35_ = reset ? 1'h0 : _32_;
+  always @(posedge clk)
+    mie_meie <= _33_;
+  always @(posedge clk)
+    mie_mtie <= _34_;
+  always @(posedge clk)
+    mie_msie <= _35_;
+  assign _36_ = rd_wr_addr == 12'h305;
+  assign _37_ = _36_ & wr_en;
+  assign _38_ = _37_ ? wr_data_i[31:2] : mtvec_base;
+  assign _39_ = reset ? 30'h00000000 : _38_;
+  always @(posedge clk)
+    mtvec_base <= _39_;
+  assign _40_ = rd_wr_addr == 12'h340;
+  assign _41_ = _40_ & wr_en;
+  assign _42_ = _41_ ? wr_data_i : mscratch;
+  assign _43_ = reset ? 32'd0 : _42_;
+  always @(posedge clk)
+    mscratch <= _43_;
+  assign _44_ = rd_wr_addr == 12'h341;
+  assign _45_ = _44_ & wr_en;
+  assign _46_ = _45_ ? wr_data_i[31:2] : mepc;
+  assign _47_ = reset ? 30'h00000000 : _46_;
+  always @(posedge clk)
+    mepc <= _47_;
+  assign _48_ = rd_wr_addr == 12'h342;
+  assign _49_ = _48_ & wr_en;
+  assign _50_ = _49_ ? wr_data_i[31] : mcause_int;
+  assign _51_ = _49_ ? wr_data_i[4:0] : mcause_exc;
+  assign _52_ = reset ? 1'h0 : _50_;
+  assign _53_ = reset ? 5'h00 : _51_;
+  always @(posedge clk)
+    mcause_int <= _52_;
+  always @(posedge clk)
+    mcause_exc <= _53_;
+  assign _54_ = rd_wr_addr == 12'h343;
+  assign _55_ = _54_ & wr_en;
+  assign _56_ = _55_ ? wr_data_i : mtval;
+  assign _57_ = reset ? 32'd0 : _56_;
+  always @(posedge clk)
+    mtval <= _57_;
+  assign _58_ = reset ? 1'h0 : ex_irq;
+  assign _59_ = reset ? 1'h0 : tm_irq;
+  assign _60_ = reset ? 1'h0 : sw_irq;
+  always @(posedge clk)
+    mip_meip <= _58_;
+  always @(posedge clk)
+    mip_mtip <= _59_;
+  always @(posedge clk)
+    mip_msip <= _60_;
+  assign rd_data = rd_data_i;
+endmodule
+
+module down_counter_16(clk, clr, en, mode, load, val);
+  wire _0_;
+  wire [15:0] _1_;
+  wire [15:0] _2_;
+  wire [15:0] _3_;
+  wire [15:0] _4_;
+  input clk;
+  input clr;
+  input en;
+  reg [15:0] inter_val;
+  input [15:0] load;
+  input mode;
+  output [15:0] val;
+  assign _4_ = en ? _3_ : inter_val;
+  always @(posedge clk, posedge clr)
+    if (clr) inter_val <= 16'hffff;
+    else inter_val <= _4_;
+  assign _0_ = inter_val == 16'h0000;
+  assign _1_ = inter_val - 16'h0001;
+  assign _2_ = _0_ ? 16'hffff : _1_;
+  assign _3_ = mode ? load : _2_;
+  assign val = inter_val;
+endmodule
+
+module down_counter_3(clk, clr, en, mode, load, val);
+  wire _0_;
+  wire [2:0] _1_;
+  wire [2:0] _2_;
+  wire [2:0] _3_;
+  wire [2:0] _4_;
+  input clk;
+  input clr;
+  input en;
+  reg [2:0] inter_val;
+  input [2:0] load;
+  input mode;
+  output [2:0] val;
+  assign _0_ = inter_val == 3'h0;
+  assign _1_ = inter_val - 3'h1;
+  assign _2_ = _0_ ? 3'h7 : _1_;
+  assign _3_ = mode ? load : _2_;
+  assign _4_ = en ? _3_ : inter_val;
+  always @(posedge clk, posedge clr)
+    if (clr) inter_val <= 3'h7;
+    else inter_val <= _4_;
+  assign val = inter_val;
+endmodule
+
+module fifo_8_8(clk, reset, wr, wr_data, rd, wr_en, rd_en, rd_data);
+  wire [7:0] _00_;
+  wire [7:0] _01_;
+  wire [7:0] _02_;
+  wire [7:0] _03_;
+  wire [2:0] _04_;
+  wire _05_;
+  wire _06_;
+  wire [31:0] _07_;
+  wire [2:0] _08_;
+  wire _09_;
+  wire _10_;
+  wire [2:0] _11_;
+  wire [31:0] _12_;
+  wire [2:0] _13_;
+  wire _14_;
+  wire _15_;
+  wire _16_;
+  wire _17_;
+  wire _18_;
+  wire _19_;
+  wire _20_;
+  wire _21_;
+  wire _22_;
+  wire _23_;
+  wire _24_;
+  wire _25_;
+  wire _26_;
+  wire _27_;
+  wire [7:0] _28_;
+  wire [7:0] _29_;
+  wire [7:0] _30_;
+  wire _31_;
+  wire _32_;
+  wire _33_;
+  wire _34_;
+  wire _35_;
+  wire _36_;
+  wire _37_;
+  wire _38_;
+  wire _39_;
+  wire _40_;
+  wire _41_;
+  wire _42_;
+  wire _43_;
+  wire _44_;
+  wire _45_;
+  wire _46_;
+  wire [7:0] _47_;
+  wire _48_;
+  wire [7:0] _49_;
+  wire _50_;
+  wire [7:0] _51_;
+  wire _52_;
+  wire [7:0] _53_;
+  wire _54_;
+  wire [7:0] _55_;
+  wire _56_;
+  wire [7:0] _57_;
+  wire _58_;
+  wire [7:0] _59_;
+  wire _60_;
+  wire [7:0] _61_;
+  input clk;
+  wire empty;
+  reg [63:0] fifo_data;
+  wire full;
+  reg last_op;
+  input rd;
+  output [7:0] rd_data;
+  output rd_en;
+  reg [2:0] rd_pointer;
+  input reset;
+  input wr;
+  input [7:0] wr_data;
+  output wr_en;
+  reg [2:0] wr_pointer;
+  assign _00_ = _04_[0] ? fifo_data[15:8] : fifo_data[7:0];
+  assign _01_ = _04_[0] ? fifo_data[47:40] : fifo_data[39:32];
+  assign _02_ = _04_[0] ? fifo_data[31:24] : fifo_data[23:16];
+  assign _03_ = _04_[0] ? fifo_data[63:56] : fifo_data[55:48];
+  assign _28_ = _04_[1] ? _02_ : _00_;
+  assign _29_ = _04_[1] ? _03_ : _01_;
+  assign _04_ = 3'h7 - rd_pointer;
+  assign _05_ = ~ empty;
+  assign _06_ = rd & _05_;
+  assign _07_ = { 29'h00000000, rd_pointer } + 32'd1;
+  assign _08_ = _06_ ? _07_[2:0] : rd_pointer;
+  always @(posedge clk, posedge reset)
+    if (reset) rd_pointer <= 3'h0;
+    else rd_pointer <= _08_;
+  assign _09_ = ~ full;
+  assign _10_ = wr & _09_;
+  assign _11_ = 3'h7 - wr_pointer;
+  assign _12_ = { 29'h00000000, wr_pointer } + 32'd1;
+  always @(posedge clk, posedge reset)
+    if (reset) fifo_data <= 64'h0000000000000000;
+    else fifo_data <= { _61_, _59_, _57_, _55_, _53_, _51_, _49_, _47_ };
+  assign _13_ = _10_ ? _12_[2:0] : wr_pointer;
+  always @(posedge clk, posedge reset)
+    if (reset) wr_pointer <= 3'h0;
+    else wr_pointer <= _13_;
+  assign _14_ = ~ wr;
+  assign _15_ = rd & _14_;
+  assign _16_ = ~ rd;
+  assign _17_ = _16_ & wr;
+  assign _18_ = _17_ ? 1'h1 : last_op;
+  assign _19_ = _15_ ? 1'h0 : _18_;
+  always @(posedge clk, posedge reset)
+    if (reset) last_op <= 1'h0;
+    else last_op <= _19_;
+  assign _20_ = { 29'h00000000, wr_pointer } == { 29'h00000000, rd_pointer };
+  assign _21_ = last_op == 1'h0;
+  assign _22_ = _20_ & _21_;
+  assign empty = _22_ ? 1'h1 : 1'h0;
+  assign _23_ = { 29'h00000000, wr_pointer } == { 29'h00000000, rd_pointer };
+  assign _24_ = last_op == 1'h1;
+  assign _25_ = _23_ & _24_;
+  assign full = _25_ ? 1'h1 : 1'h0;
+  assign _26_ = ~ empty;
+  assign _27_ = ~ full;
+  assign _30_ = _04_[2] ? _29_ : _28_;
+  assign _31_ = ~ _11_[2];
+  assign _32_ = ~ _11_[1];
+  assign _33_ = _31_ & _32_;
+  assign _34_ = _31_ & _11_[1];
+  assign _35_ = _11_[2] & _32_;
+  assign _36_ = _11_[2] & _11_[1];
+  assign _37_ = ~ _11_[0];
+  assign _38_ = _33_ & _37_;
+  assign _39_ = _33_ & _11_[0];
+  assign _40_ = _34_ & _37_;
+  assign _41_ = _34_ & _11_[0];
+  assign _42_ = _35_ & _37_;
+  assign _43_ = _35_ & _11_[0];
+  assign _44_ = _36_ & _37_;
+  assign _45_ = _36_ & _11_[0];
+  assign _46_ = _38_ & _10_;
+  assign _47_ = _46_ ? wr_data : fifo_data[7:0];
+  assign _48_ = _39_ & _10_;
+  assign _49_ = _48_ ? wr_data : fifo_data[15:8];
+  assign _50_ = _40_ & _10_;
+  assign _51_ = _50_ ? wr_data : fifo_data[23:16];
+  assign _52_ = _41_ & _10_;
+  assign _53_ = _52_ ? wr_data : fifo_data[31:24];
+  assign _54_ = _42_ & _10_;
+  assign _55_ = _54_ ? wr_data : fifo_data[39:32];
+  assign _56_ = _43_ & _10_;
+  assign _57_ = _56_ ? wr_data : fifo_data[47:40];
+  assign _58_ = _44_ & _10_;
+  assign _59_ = _58_ ? wr_data : fifo_data[55:48];
+  assign _60_ = _45_ & _10_;
+  assign _61_ = _60_ ? wr_data : fifo_data[63:56];
+  assign wr_en = _27_;
+  assign rd_en = _26_;
+  assign rd_data = _30_;
+endmodule
+
+module id_ex_stage(clk, reset, pc, next_pc, instr, flush, rd_mem_data, ex_irq, sw_irq, tm_irq, wr_mem_data, rd_mem_en, wr_mem_en, rd_wr_mem_addr, wr_mem_byte_en, branch, jmp, trap, target);
+  wire _0_;
+  wire _1_;
+  wire _2_;
+  wire _3_;
+  wire [31:0] _4_;
+  wire [31:0] _5_;
+  wire [31:0] alu_opd0;
+  wire [31:0] alu_opd1;
+  output branch;
+  input clk;
+  input ex_irq;
+  input flush;
+  input [31:0] instr;
+  output jmp;
+  input [31:0] next_pc;
+  input [31:0] pc;
+  input [31:0] rd_mem_data;
+  output rd_mem_en;
+  output [31:0] rd_wr_mem_addr;
+  input reset;
+  wire [31:0] rf_wr_reg_data;
+  wire [31:0] \stage_alu:966 ;
+  wire [5:0] \stage_alu_ctrl:963 ;
+  wire \stage_br_detector:957 ;
+  wire [31:0] \stage_csrs:960 ;
+  wire [31:0] \stage_ig:948 ;
+  wire [31:0] \stage_lsu:969 ;
+  wire \stage_lsu:970 ;
+  wire \stage_lsu:971 ;
+  wire [31:0] \stage_lsu:972 ;
+  wire [31:0] \stage_lsu:973 ;
+  wire [3:0] \stage_lsu:974 ;
+  wire [1:0] \stage_mc:906 ;
+  wire \stage_mc:907 ;
+  wire [2:0] \stage_mc:908 ;
+  wire \stage_mc:909 ;
+  wire \stage_mc:910 ;
+  wire \stage_mc:911 ;
+  wire \stage_mc:912 ;
+  wire \stage_mc:913 ;
+  wire \stage_mc:914 ;
+  wire \stage_mc:915 ;
+  wire \stage_mc:916 ;
+  wire \stage_mc:917 ;
+  wire \stage_mc:918 ;
+  wire \stage_mc:919 ;
+  wire [31:0] \stage_rf:951 ;
+  wire [31:0] \stage_rf:952 ;
+  input sw_irq;
+  output [31:0] target;
+  input tm_irq;
+  output trap;
+  output [3:0] wr_mem_byte_en;
+  output [31:0] wr_mem_data;
+  output wr_mem_en;
+  assign _0_ = \stage_mc:906  == 2'h0;
+  assign _1_ = \stage_mc:906  == 2'h1;
+  assign _2_ = \stage_mc:906  == 2'h2;
+  assign _3_ = \stage_mc:906  == 2'h3;
+  function [31:0] \894 ;
+    input [31:0] a;
+    input [127:0] b;
+    input [3:0] s;
+    (* parallel_case *)
+    casez (s)
+      4'b???1:
+        \894  = b[31:0];
+      4'b??1?:
+        \894  = b[63:32];
+      4'b?1??:
+        \894  = b[95:64];
+      4'b1???:
+        \894  = b[127:96];
+      default:
+        \894  = a;
+    endcase
+  endfunction
+  assign rf_wr_reg_data = \894 (32'd0, { \stage_csrs:960 , next_pc, \stage_lsu:969 , \stage_alu:966  }, { _3_, _2_, _1_, _0_ });
+  assign _4_ = \stage_mc:909  ? pc : \stage_rf:951 ;
+  assign alu_opd0 = \stage_mc:911  ? _4_ : 32'd0;
+  assign _5_ = \stage_mc:910  ? \stage_ig:948  : \stage_rf:952 ;
+  assign alu_opd1 = \stage_mc:912  ? _5_ : 32'd0;
+  alu stage_alu (
+    .op(\stage_alu_ctrl:963 ),
+    .opd0(alu_opd0),
+    .opd1(alu_opd1),
+    .res(\stage_alu:966 )
+  );
+  alu_ctrl stage_alu_ctrl (
+    .alu_func_type(\stage_mc:914 ),
+    .alu_op(\stage_alu_ctrl:963 ),
+    .alu_op_en(\stage_mc:913 ),
+    .func3(instr[14:12]),
+    .func7(instr[31:25])
+  );
+  br_detector stage_br_detector (
+    .branch(\stage_br_detector:957 ),
+    .en(\stage_mc:917 ),
+    .mode(instr[14:12]),
+    .reg0(\stage_rf:951 ),
+    .reg1(\stage_rf:952 )
+  );
+  csrs_b14a227a3c694ac3d0ad8c71b4ce4306403987f6 stage_csrs (
+    .clk(clk),
+    .ex_irq(ex_irq),
+    .rd_data(\stage_csrs:960 ),
+    .rd_wr_addr(instr[31:20]),
+    .reset(reset),
+    .sw_irq(sw_irq),
+    .tm_irq(tm_irq),
+    .wr_en(\stage_mc:918 ),
+    .wr_imm_data(\stage_ig:948 ),
+    .wr_mode(instr[14:12]),
+    .wr_reg_data(\stage_rf:951 )
+  );
+  imm_gen stage_ig (
+    .imm(\stage_ig:948 ),
+    .imm_type(\stage_mc:908 ),
+    .payload(instr[31:7])
+  );
+  lsu stage_lsu (
+    .data_type(instr[14:12]),
+    .en(\stage_mc:916 ),
+    .mode(\stage_mc:915 ),
+    .rd_data(\stage_lsu:969 ),
+    .rd_mem_data(rd_mem_data),
+    .rd_mem_en(\stage_lsu:970 ),
+    .rd_wr_addr(\stage_alu:966 ),
+    .rd_wr_mem_addr(\stage_lsu:973 ),
+    .wr_data(\stage_rf:952 ),
+    .wr_mem_byte_en(\stage_lsu:974 ),
+    .wr_mem_data(\stage_lsu:972 ),
+    .wr_mem_en(\stage_lsu:971 )
+  );
+  main_ctrl stage_mc (
+    .alu_func_type(\stage_mc:914 ),
+    .alu_op_en(\stage_mc:913 ),
+    .alu_opd0_pass(\stage_mc:911 ),
+    .alu_opd1_pass(\stage_mc:912 ),
+    .alu_src0(\stage_mc:909 ),
+    .alu_src1(\stage_mc:910 ),
+    .brd_en(\stage_mc:917 ),
+    .csrs_wr_en(\stage_mc:918 ),
+    .flush(flush),
+    .if_jmp(\stage_mc:919 ),
+    .ig_imm_type(\stage_mc:908 ),
+    .lsu_en(\stage_mc:916 ),
+    .lsu_mode(\stage_mc:915 ),
+    .opcode(instr[6:0]),
+    .rf_wr_reg_en(\stage_mc:907 ),
+    .rf_wr_reg_src(\stage_mc:906 )
+  );
+  reg_file stage_rf (
+    .clk(clk),
+    .rd_reg_addr0(instr[19:15]),
+    .rd_reg_addr1(instr[24:20]),
+    .rd_reg_data0(\stage_rf:951 ),
+    .rd_reg_data1(\stage_rf:952 ),
+    .wr_reg_addr(instr[11:7]),
+    .wr_reg_data(rf_wr_reg_data),
+    .wr_reg_en(\stage_mc:907 )
+  );
+  assign wr_mem_data = \stage_lsu:972 ;
+  assign rd_mem_en = \stage_lsu:970 ;
+  assign wr_mem_en = \stage_lsu:971 ;
+  assign rd_wr_mem_addr = \stage_lsu:973 ;
+  assign wr_mem_byte_en = \stage_lsu:974 ;
+  assign branch = \stage_br_detector:957 ;
+  assign jmp = \stage_mc:919 ;
+  assign trap = 1'h0;
+  assign target = \stage_alu:966 ;
+endmodule
+
+module if_stage_ca812405937f647b44fdbdb3a3bf576e759a7cf1(clk, reset, jmp, branch, trap, target, rd_instr_mem_data, rd_instr_mem_addr, pc, next_pc, instr, flush);
+  wire _0_;
+  wire [31:0] _1_;
+  wire [31:0] _2_;
+  input branch;
+  input clk;
+  output flush;
+  output [31:0] instr;
+  input jmp;
+  output [31:0] next_pc;
+  wire [31:0] next_pc_i;
+  output [31:0] pc;
+  reg [31:0] pc_reg;
+  output [31:0] rd_instr_mem_addr;
+  input [31:0] rd_instr_mem_data;
+  input reset;
+  wire taken;
+  input [31:0] target;
+  input trap;
+  assign _0_ = branch | jmp;
+  assign taken = _0_ | trap;
+  assign next_pc_i = pc_reg + 32'd4;
+  assign _1_ = taken ? { target[31:2], 2'h0 } : next_pc_i;
+  assign _2_ = reset ? 32'd256 : _1_;
+  always @(posedge clk)
+    pc_reg <= _2_;
+  assign rd_instr_mem_addr = pc_reg;
+  assign pc = pc_reg;
+  assign next_pc = next_pc_i;
+  assign instr = rd_instr_mem_data;
+  assign flush = taken;
+endmodule
+
+module imm_gen(payload, imm_type, imm);
+  wire _0_;
+  wire _1_;
+  wire _2_;
+  wire _3_;
+  wire _4_;
+  wire _5_;
+  wire [31:0] _6_;
+  output [31:0] imm;
+  input [2:0] imm_type;
+  input [24:0] payload;
+  assign _0_ = imm_type == 3'h0;
+  assign _1_ = imm_type == 3'h1;
+  assign _2_ = imm_type == 3'h2;
+  assign _3_ = imm_type == 3'h3;
+  assign _4_ = imm_type == 3'h4;
+  assign _5_ = imm_type == 3'h5;
+  function [31:0] \1334 ;
+    input [31:0] a;
+    input [191:0] b;
+    input [5:0] s;
+    (* parallel_case *)
+    casez (s)
+      6'b?????1:
+        \1334  = b[31:0];
+      6'b????1?:
+        \1334  = b[63:32];
+      6'b???1??:
+        \1334  = b[95:64];
+      6'b??1???:
+        \1334  = b[127:96];
+      6'b?1????:
+        \1334  = b[159:128];
+      6'b1?????:
+        \1334  = b[191:160];
+      default:
+        \1334  = a;
+    endcase
+  endfunction
+  assign _6_ = \1334 (32'hxxxxxxxx, { 27'h0000000, payload[19:15], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[12:5], payload[13], payload[23:14], 1'h0, payload[24:5], 12'h000, payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[0], payload[23:18], payload[4:1], 1'h0, payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24:18], payload[4:0], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24], payload[24:13] }, { _5_, _4_, _3_, _2_, _1_, _0_ });
+  assign imm = _6_;
+endmodule
+
+module leaf_chip(clk, reset, rx, tx);
+  wire _00_;
+  wire _01_;
+  wire _02_;
+  wire _03_;
+  wire _04_;
+  wire _05_;
+  wire [3:0] _06_;
+  wire _07_;
+  wire _08_;
+  wire _09_;
+  wire _10_;
+  wire _11_;
+  wire _12_;
+  wire [3:0] _13_;
+  wire _14_;
+  wire [3:0] _15_;
+  wire _16_;
+  wire [3:0] _17_;
+  wire _18_;
+  wire _19_;
+  wire _20_;
+  wire _21_;
+  wire _22_;
+  wire [31:0] _23_;
+  wire _24_;
+  wire _25_;
+  wire _26_;
+  wire [15:0] _27_;
+  wire [15:0] _28_;
+  wire _29_;
+  input clk;
+  wire [31:0] core_rd_instr_mem_data;
+  wire [31:0] core_rd_mem_data;
+  wire [31:0] \leaf_core:149 ;
+  wire [31:0] \leaf_core:150 ;
+  wire \leaf_core:151 ;
+  wire \leaf_core:152 ;
+  wire [31:0] \leaf_core:153 ;
+  wire [3:0] \leaf_core:154 ;
+  wire [31:0] \leaf_ram:131 ;
+  wire [31:0] \leaf_ram:132 ;
+  wire [31:0] \leaf_rom:125 ;
+  wire [15:0] \leaf_uart:140 ;
+  wire \leaf_uart:141 ;
+  wire ram_wr;
+  wire [3:0] ram_wr_byte_en;
+  wire [31:0] ram_wr_data;
+  input reset;
+  input rx;
+  output tx;
+  wire uart_rd;
+  wire uart_wr;
+  function [31:0] \10 ;
+    input [31:0] a;
+    input [63:0] b;
+    input [1:0] s;
+    (* parallel_case *)
+    casez (s)
+      2'b?1:
+        \10  = b[31:0];
+      2'b1?:
+        \10  = b[63:32];
+      default:
+        \10  = a;
+    endcase
+  endfunction
+  assign core_rd_instr_mem_data = \10 (32'd19, { \leaf_ram:131 , \leaf_rom:125  }, { _09_, _00_ });
+  assign _20_ = \leaf_core:153 [1:0] == 2'h1;
+  assign _21_ = \leaf_core:153 [1:0] == 2'h2;
+  assign _22_ = \leaf_core:153 [1:0] == 2'h3;
+  function [31:0] \113 ;
+    input [31:0] a;
+    input [95:0] b;
+    input [2:0] s;
+    (* parallel_case *)
+    casez (s)
+      3'b??1:
+        \113  = b[31:0];
+      3'b?1?:
+        \113  = b[63:32];
+      3'b1??:
+        \113  = b[95:64];
+      default:
+        \113  = a;
+    endcase
+  endfunction
+  assign _23_ = \113 (\leaf_core:150 , { \leaf_core:150 [7:0], \leaf_core:150 [31:8], \leaf_core:150 [15:0], \leaf_core:150 [31:16], \leaf_core:150 [23:0], \leaf_core:150 [31:24] }, { _22_, _21_, _20_ });
+  assign ram_wr_data = \leaf_core:152  ? _23_ : 32'd0;
+  assign ram_wr_byte_en = \leaf_core:152  ? _17_ : 4'h0;
+  assign ram_wr = \leaf_core:152  ? _18_ : 1'h0;
+  assign uart_wr = \leaf_core:152  ? _19_ : 1'h0;
+  assign _24_ = \leaf_core:153 [31:8] == 24'h000000;
+  assign _25_ = \leaf_core:153 [31:8] == 24'h000001;
+  assign _26_ = \leaf_core:153 [31:8] == 24'h000002;
+  function [15:0] \26 ;
+    input [15:0] a;
+    input [47:0] b;
+    input [2:0] s;
+    (* parallel_case *)
+    casez (s)
+      3'b??1:
+        \26  = b[15:0];
+      3'b?1?:
+        \26  = b[31:16];
+      3'b1??:
+        \26  = b[47:32];
+      default:
+        \26  = a;
+    endcase
+  endfunction
+  assign _27_ = \26 (16'h0000, { \leaf_ram:132 [15:0], \leaf_rom:125 [15:0], \leaf_uart:140  }, { _26_, _25_, _24_ });
+  function [15:0] \30 ;
+    input [15:0] a;
+    input [47:0] b;
+    input [2:0] s;
+    (* parallel_case *)
+    casez (s)
+      3'b??1:
+        \30  = b[15:0];
+      3'b?1?:
+        \30  = b[31:16];
+      3'b1??:
+        \30  = b[47:32];
+      default:
+        \30  = a;
+    endcase
+  endfunction
+  assign _28_ = \30 (16'h0000, { \leaf_ram:132 [31:16], \leaf_rom:125 [31:16], 16'h0000 }, { _26_, _25_, _24_ });
+  function [0:0] \35 ;
+    input [0:0] a;
+    input [2:0] b;
+    input [2:0] s;
+    (* parallel_case *)
+    casez (s)
+      3'b??1:
+        \35  = b[0:0];
+      3'b?1?:
+        \35  = b[1:1];
+      3'b1??:
+        \35  = b[2:2];
+      default:
+        \35  = a;
+    endcase
+  endfunction
+  assign _29_ = \35 (1'h0, 3'h1, { _26_, _25_, _24_ });
+  assign core_rd_mem_data = \leaf_core:151  ? { _28_, _27_ } : 32'd0;
+  assign uart_rd = \leaf_core:151  ? _29_ : 1'h0;
+  assign _01_ = \leaf_core:153 [31:8] == 24'h000000;
+  assign _00_ = \leaf_core:149 [31:8] == 24'h000001;
+  assign _02_ = \leaf_core:153 [1:0] == 2'h0;
+  assign _03_ = \leaf_core:153 [1:0] == 2'h1;
+  assign _04_ = \leaf_core:153 [1:0] == 2'h2;
+  assign _05_ = \leaf_core:153 [1:0] == 2'h3;
+  function [3:0] \62 ;
+    input [3:0] a;
+    input [15:0] b;
+    input [3:0] s;
+    (* parallel_case *)
+    casez (s)
+      4'b???1:
+        \62  = b[3:0];
+      4'b??1?:
+        \62  = b[7:4];
+      4'b?1??:
+        \62  = b[11:8];
+      4'b1???:
+        \62  = b[15:12];
+      default:
+        \62  = a;
+    endcase
+  endfunction
+  assign _06_ = \62 (ram_wr_byte_en, 16'h8421, { _05_, _04_, _03_, _02_ });
+  assign _07_ = \leaf_core:154  == 4'h1;
+  assign _08_ = \leaf_core:153 [1:0] == 2'h0;
+  assign _10_ = \leaf_core:153 [1:0] == 2'h1;
+  assign _09_ = \leaf_core:149 [31:8] == 24'h000002;
+  assign _11_ = \leaf_core:153 [1:0] == 2'h2;
+  assign _12_ = \leaf_core:153 [1:0] == 2'h3;
+  function [3:0] \78 ;
+    input [3:0] a;
+    input [15:0] b;
+    input [3:0] s;
+    (* parallel_case *)
+    casez (s)
+      4'b???1:
+        \78  = b[3:0];
+      4'b??1?:
+        \78  = b[7:4];
+      4'b?1??:
+        \78  = b[11:8];
+      4'b1???:
+        \78  = b[15:12];
+      default:
+        \78  = a;
+    endcase
+  endfunction
+  assign _13_ = \78 (ram_wr_byte_en, 16'h8c63, { _12_, _11_, _10_, _08_ });
+  assign _14_ = \leaf_core:154  == 4'h3;
+  function [3:0] \82 ;
+    input [3:0] a;
+    input [7:0] b;
+    input [1:0] s;
+    (* parallel_case *)
+    casez (s)
+      2'b?1:
+        \82  = b[3:0];
+      2'b1?:
+        \82  = b[7:4];
+      default:
+        \82  = a;
+    endcase
+  endfunction
+  assign _15_ = \82 (\leaf_core:154 , { _13_, _06_ }, { _14_, _07_ });
+  assign _16_ = \leaf_core:153 [31:8] == 24'h000002;
+  function [3:0] \88 ;
+    input [3:0] a;
+    input [7:0] b;
+    input [1:0] s;
+    (* parallel_case *)
+    casez (s)
+      2'b?1:
+        \88  = b[3:0];
+      2'b1?:
+        \88  = b[7:4];
+      default:
+        \88  = a;
+    endcase
+  endfunction
+  assign _17_ = \88 (4'h0, { _15_, 4'h0 }, { _16_, _01_ });
+  function [0:0] \92 ;
+    input [0:0] a;
+    input [1:0] b;
+    input [1:0] s;
+    (* parallel_case *)
+    casez (s)
+      2'b?1:
+        \92  = b[0:0];
+      2'b1?:
+        \92  = b[1:1];
+      default:
+        \92  = a;
+    endcase
+  endfunction
+  assign _18_ = \92 (1'h0, 2'h2, { _16_, _01_ });
+  function [0:0] \96 ;
+    input [0:0] a;
+    input [1:0] b;
+    input [1:0] s;
+    (* parallel_case *)
+    casez (s)
+      2'b?1:
+        \96  = b[0:0];
+      2'b1?:
+        \96  = b[1:1];
+      default:
+        \96  = a;
+    endcase
+  endfunction
+  assign _19_ = \96 (1'h0, 2'h1, { _16_, _01_ });
+  core_ca812405937f647b44fdbdb3a3bf576e759a7cf1 leaf_core (
+    .clk(clk),
+    .ex_irq(1'h0),
+    .rd_instr_mem_addr(\leaf_core:149 ),
+    .rd_instr_mem_data(core_rd_instr_mem_data),
+    .rd_mem_data(core_rd_mem_data),
+    .rd_mem_en(\leaf_core:151 ),
+    .rd_wr_mem_addr(\leaf_core:153 ),
+    .reset(reset),
+    .sw_irq(1'h0),
+    .tm_irq(1'h0),
+    .wr_mem_byte_en(\leaf_core:154 ),
+    .wr_mem_data(\leaf_core:150 ),
+    .wr_mem_en(\leaf_core:152 )
+  );
+  ram_8 leaf_ram (
+    .clk(clk),
+    .rd_addr0(\leaf_core:149 [7:2]),
+    .rd_addr1(\leaf_core:153 [7:2]),
+    .rd_data0(\leaf_ram:131 ),
+    .rd_data1(\leaf_ram:132 ),
+    .wr(ram_wr),
+    .wr_addr(\leaf_core:153 [7:2]),
+    .wr_byte_en(ram_wr_byte_en),
+    .wr_data(ram_wr_data)
+  );
+  rom_8 leaf_rom (
+    .rd(1'h1),
+    .rd_addr(\leaf_core:149 [7:2]),
+    .rd_data(\leaf_rom:125 )
+  );
+  uart leaf_uart (
+    .clk(clk),
+    .rd(uart_rd),
+    .rd_addr(\leaf_core:153 [3:2]),
+    .rd_data(\leaf_uart:140 ),
+    .reset(reset),
+    .rx(rx),
+    .tx(\leaf_uart:141 ),
+    .wr(uart_wr),
+    .wr_addr(\leaf_core:153 [3:2]),
+    .wr_data(\leaf_core:150 [15:0])
+  );
+  assign tx = \leaf_uart:141 ;
+endmodule
+
+module lsu(wr_data, rd_wr_addr, data_type, mode, en, rd_mem_data, rd_data, rd_mem_en, wr_mem_en, wr_mem_data, rd_wr_mem_addr, wr_mem_byte_en);
+  wire _00_;
+  wire [31:0] _01_;
+  wire _02_;
+  wire _03_;
+  wire _04_;
+  wire _05_;
+  wire _06_;
+  wire _07_;
+  wire _08_;
+  wire _09_;
+  wire _10_;
+  wire _11_;
+  wire [31:0] _12_;
+  wire [31:0] _13_;
+  wire [31:0] _14_;
+  wire [3:0] _15_;
+  wire [31:0] data_in;
+  wire [31:0] data_out;
+  input [2:0] data_type;
+  input en;
+  input mode;
+  output [31:0] rd_data;
+  input [31:0] rd_mem_data;
+  output rd_mem_en;
+  wire rd_mem_en_i;
+  input [31:0] rd_wr_addr;
+  output [31:0] rd_wr_mem_addr;
+  input [31:0] wr_data;
+  output [3:0] wr_mem_byte_en;
+  wire [3:0] wr_mem_byte_en_i;
+  output [31:0] wr_mem_data;
+  output wr_mem_en;
+  wire wr_mem_en_i;
+  assign _00_ = ~ mode;
+  assign rd_mem_en_i = _00_ & en;
+  assign wr_mem_en_i = mode & en;
+  assign data_in = rd_mem_en_i ? rd_mem_data : _01_;
+  assign _01_ = wr_mem_en_i ? wr_data : 32'd0;
+  assign _02_ = data_type == 3'h0;
+  assign _03_ = data_type == 3'h4;
+  assign _04_ = data_type == 3'h1;
+  assign _05_ = data_type == 3'h5;
+  function [31:0] \1891 ;
+    input [31:0] a;
+    input [127:0] b;
+    input [3:0] s;
+    (* parallel_case *)
+    casez (s)
+      4'b???1:
+        \1891  = b[31:0];
+      4'b??1?:
+        \1891  = b[63:32];
+      4'b?1??:
+        \1891  = b[95:64];
+      4'b1???:
+        \1891  = b[127:96];
+      default:
+        \1891  = a;
+    endcase
+  endfunction
+  assign data_out = \1891 (data_in, { 16'h0000, data_in[15:0], data_in[15], data_in[15], data_in[15], data_in[15], data_in[15], data_in[15], data_in[15], data_in[15], data_in[15], data_in[15], data_in[15], data_in[15], data_in[15], data_in[15], data_in[15], data_in[15], data_in[15:0], 24'h000000, data_in[7:0], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7], data_in[7:0] }, { _05_, _04_, _03_, _02_ });
+  assign _06_ = data_type == 3'h0;
+  assign _07_ = data_type == 3'h4;
+  assign _08_ = _06_ | _07_;
+  assign _09_ = data_type == 3'h1;
+  assign _10_ = data_type == 3'h5;
+  assign _11_ = _09_ | _10_;
+  function [3:0] \1908 ;
+    input [3:0] a;
+    input [7:0] b;
+    input [1:0] s;
+    (* parallel_case *)
+    casez (s)
+      2'b?1:
+        \1908  = b[3:0];
+      2'b1?:
+        \1908  = b[7:4];
+      default:
+        \1908  = a;
+    endcase
+  endfunction
+  assign wr_mem_byte_en_i = \1908 (4'hf, 8'h31, { _11_, _08_ });
+  assign _12_ = rd_mem_en_i ? data_out : 32'd0;
+  assign _13_ = wr_mem_en_i ? data_out : 32'd0;
+  assign _14_ = en ? rd_wr_addr : 32'd0;
+  assign _15_ = wr_mem_en_i ? wr_mem_byte_en_i : 4'h0;
+  assign rd_data = _12_;
+  assign rd_mem_en = rd_mem_en_i;
+  assign wr_mem_en = wr_mem_en_i;
+  assign wr_mem_data = _13_;
+  assign rd_wr_mem_addr = _14_;
+  assign wr_mem_byte_en = _15_;
+endmodule
+
+module main_ctrl(opcode, flush, rf_wr_reg_src, rf_wr_reg_en, ig_imm_type, alu_src0, alu_src1, alu_opd0_pass, alu_opd1_pass, alu_op_en, alu_func_type, lsu_mode, lsu_en, brd_en, csrs_wr_en, if_jmp);
+  wire _00_;
+  wire _01_;
+  wire _02_;
+  wire _03_;
+  wire _04_;
+  wire _05_;
+  wire _06_;
+  wire _07_;
+  wire _08_;
+  wire _09_;
+  wire _10_;
+  wire _11_;
+  wire [1:0] _12_;
+  wire _13_;
+  wire [1:0] _14_;
+  wire _15_;
+  wire _16_;
+  wire _17_;
+  wire _18_;
+  wire _19_;
+  wire _20_;
+  wire _21_;
+  wire _22_;
+  wire _23_;
+  wire _24_;
+  wire _25_;
+  wire _26_;
+  wire _27_;
+  wire [2:0] _28_;
+  wire [2:0] _29_;
+  wire _30_;
+  wire _31_;
+  wire _32_;
+  wire _33_;
+  wire _34_;
+  wire _35_;
+  wire _36_;
+  wire _37_;
+  wire _38_;
+  wire _39_;
+  wire _40_;
+  wire _41_;
+  wire _42_;
+  wire _43_;
+  wire _44_;
+  wire _45_;
+  wire _46_;
+  wire _47_;
+  wire _48_;
+  wire _49_;
+  wire _50_;
+  wire _51_;
+  wire _52_;
+  wire _53_;
+  wire _54_;
+  wire _55_;
+  wire _56_;
+  wire _57_;
+  wire _58_;
+  wire _59_;
+  wire _60_;
+  wire _61_;
+  wire _62_;
+  wire _63_;
+  wire _64_;
+  wire _65_;
+  wire _66_;
+  wire _67_;
+  wire _68_;
+  wire _69_;
+  output alu_func_type;
+  output alu_op_en;
+  output alu_opd0_pass;
+  output alu_opd1_pass;
+  output alu_src0;
+  output alu_src1;
+  output brd_en;
+  output csrs_wr_en;
+  input flush;
+  output if_jmp;
+  output [2:0] ig_imm_type;
+  output lsu_en;
+  output lsu_mode;
+  input [6:0] opcode;
+  output rf_wr_reg_en;
+  output [1:0] rf_wr_reg_src;
+  assign _00_ = opcode == 7'h33;
+  assign _01_ = opcode == 7'h13;
+  assign _02_ = _00_ | _01_;
+  assign _03_ = opcode == 7'h37;
+  assign _04_ = _02_ | _03_;
+  assign _05_ = opcode == 7'h17;
+  assign _06_ = _04_ | _05_;
+  assign _07_ = opcode == 7'h67;
+  assign _08_ = opcode == 7'h6f;
+  assign _09_ = _07_ | _08_;
+  assign _10_ = opcode == 7'h03;
+  assign _11_ = opcode == 7'h73;
+  function [1:0] \1090 ;
+    input [1:0] a;
+    input [7:0] b;
+    input [3:0] s;
+    (* parallel_case *)
+    casez (s)
+      4'b???1:
+        \1090  = b[1:0];
+      4'b??1?:
+        \1090  = b[3:2];
+      4'b?1??:
+        \1090  = b[5:4];
+      4'b1???:
+        \1090  = b[7:6];
+      default:
+        \1090  = a;
+    endcase
+  endfunction
+  assign _12_ = \1090 (2'h0, 8'hd8, { _11_, _10_, _09_, _06_ });
+  function [0:0] \1096 ;
+    input [0:0] a;
+    input [3:0] b;
+    input [3:0] s;
+    (* parallel_case *)
+    casez (s)
+      4'b???1:
+        \1096  = b[0:0];
+      4'b??1?:
+        \1096  = b[1:1];
+      4'b?1??:
+        \1096  = b[2:2];
+      4'b1???:
+        \1096  = b[3:3];
+      default:
+        \1096  = a;
+    endcase
+  endfunction
+  assign _13_ = \1096 (1'h0, 4'hf, { _11_, _10_, _09_, _06_ });
+  assign _14_ = flush ? 2'hx : _12_;
+  assign _15_ = flush ? 1'h0 : _13_;
+  assign _16_ = opcode == 7'h13;
+  assign _17_ = opcode == 7'h67;
+  assign _18_ = _16_ | _17_;
+  assign _19_ = opcode == 7'h03;
+  assign _20_ = _18_ | _19_;
+  assign _21_ = opcode == 7'h37;
+  assign _22_ = opcode == 7'h17;
+  assign _23_ = _21_ | _22_;
+  assign _24_ = opcode == 7'h23;
+  assign _25_ = opcode == 7'h63;
+  assign _26_ = opcode == 7'h6f;
+  assign _27_ = opcode == 7'h73;
+  function [2:0] \1132 ;
+    input [2:0] a;
+    input [17:0] b;
+    input [5:0] s;
+    (* parallel_case *)
+    casez (s)
+      6'b?????1:
+        \1132  = b[2:0];
+      6'b????1?:
+        \1132  = b[5:3];
+      6'b???1??:
+        \1132  = b[8:6];
+      6'b??1???:
+        \1132  = b[11:9];
+      6'b?1????:
+        \1132  = b[14:12];
+      6'b1?????:
+        \1132  = b[17:15];
+      default:
+        \1132  = a;
+    endcase
+  endfunction
+  assign _28_ = \1132 (3'hx, 18'h2c458, { _27_, _26_, _25_, _24_, _23_, _20_ });
+  assign _29_ = flush ? 3'hx : _28_;
+  assign _30_ = opcode == 7'h33;
+  assign _31_ = opcode == 7'h13;
+  assign _32_ = opcode == 7'h67;
+  assign _33_ = opcode == 7'h63;
+  assign _34_ = opcode == 7'h17;
+  assign _35_ = _33_ | _34_;
+  assign _36_ = opcode == 7'h6f;
+  assign _37_ = _35_ | _36_;
+  assign _38_ = opcode == 7'h03;
+  assign _39_ = opcode == 7'h23;
+  assign _40_ = _38_ | _39_;
+  assign _41_ = opcode == 7'h37;
+  function [0:0] \1166 ;
+    input [0:0] a;
+    input [5:0] b;
+    input [5:0] s;
+    (* parallel_case *)
+    casez (s)
+      6'b?????1:
+        \1166  = b[0:0];
+      6'b????1?:
+        \1166  = b[1:1];
+      6'b???1??:
+        \1166  = b[2:2];
+      6'b??1???:
+        \1166  = b[3:3];
+      6'b?1????:
+        \1166  = b[4:4];
+      6'b1?????:
+        \1166  = b[5:5];
+      default:
+        \1166  = a;
+    endcase
+  endfunction
+  assign _42_ = \1166 (1'h0, 6'bx01000, { _41_, _40_, _37_, _32_, _31_, _30_ });
+  function [0:0] \1174 ;
+    input [0:0] a;
+    input [5:0] b;
+    input [5:0] s;
+    (* parallel_case *)
+    casez (s)
+      6'b?????1:
+        \1174  = b[0:0];
+      6'b????1?:
+        \1174  = b[1:1];
+      6'b???1??:
+        \1174  = b[2:2];
+      6'b??1???:
+        \1174  = b[3:3];
+      6'b?1????:
+        \1174  = b[4:4];
+      6'b1?????:
+        \1174  = b[5:5];
+      default:
+        \1174  = a;
+    endcase
+  endfunction
+  assign _43_ = \1174 (1'h0, 6'h3e, { _41_, _40_, _37_, _32_, _31_, _30_ });
+  function [0:0] \1182 ;
+    input [0:0] a;
+    input [5:0] b;
+    input [5:0] s;
+    (* parallel_case *)
+    casez (s)
+      6'b?????1:
+        \1182  = b[0:0];
+      6'b????1?:
+        \1182  = b[1:1];
+      6'b???1??:
+        \1182  = b[2:2];
+      6'b??1???:
+        \1182  = b[3:3];
+      6'b?1????:
+        \1182  = b[4:4];
+      6'b1?????:
+        \1182  = b[5:5];
+      default:
+        \1182  = a;
+    endcase
+  endfunction
+  assign _44_ = \1182 (1'h0, 6'h1f, { _41_, _40_, _37_, _32_, _31_, _30_ });
+  function [0:0] \1190 ;
+    input [0:0] a;
+    input [5:0] b;
+    input [5:0] s;
+    (* parallel_case *)
+    casez (s)
+      6'b?????1:
+        \1190  = b[0:0];
+      6'b????1?:
+        \1190  = b[1:1];
+      6'b???1??:
+        \1190  = b[2:2];
+      6'b??1???:
+        \1190  = b[3:3];
+      6'b?1????:
+        \1190  = b[4:4];
+      6'b1?????:
+        \1190  = b[5:5];
+      default:
+        \1190  = a;
+    endcase
+  endfunction
+  assign _45_ = \1190 (1'h0, 6'h3f, { _41_, _40_, _37_, _32_, _31_, _30_ });
+  function [0:0] \1198 ;
+    input [0:0] a;
+    input [5:0] b;
+    input [5:0] s;
+    (* parallel_case *)
+    casez (s)
+      6'b?????1:
+        \1198  = b[0:0];
+      6'b????1?:
+        \1198  = b[1:1];
+      6'b???1??:
+        \1198  = b[2:2];
+      6'b??1???:
+        \1198  = b[3:3];
+      6'b?1????:
+        \1198  = b[4:4];
+      6'b1?????:
+        \1198  = b[5:5];
+      default:
+        \1198  = a;
+    endcase
+  endfunction
+  assign _46_ = \1198 (1'h0, 6'h03, { _41_, _40_, _37_, _32_, _31_, _30_ });
+  function [0:0] \1206 ;
+    input [0:0] a;
+    input [5:0] b;
+    input [5:0] s;
+    (* parallel_case *)
+    casez (s)
+      6'b?????1:
+        \1206  = b[0:0];
+      6'b????1?:
+        \1206  = b[1:1];
+      6'b???1??:
+        \1206  = b[2:2];
+      6'b??1???:
+        \1206  = b[3:3];
+      6'b?1????:
+        \1206  = b[4:4];
+      6'b1?????:
+        \1206  = b[5:5];
+      default:
+        \1206  = a;
+    endcase
+  endfunction
+  assign _47_ = \1206 (1'h0, 6'h02, { _41_, _40_, _37_, _32_, _31_, _30_ });
+  assign _48_ = flush ? 1'h0 : _42_;
+  assign _49_ = flush ? 1'h0 : _43_;
+  assign _50_ = flush ? 1'h0 : _44_;
+  assign _51_ = flush ? 1'h0 : _45_;
+  assign _52_ = flush ? 1'h0 : _46_;
+  assign _53_ = flush ? 1'h0 : _47_;
+  assign _54_ = opcode == 7'h03;
+  assign _55_ = opcode == 7'h23;
+  function [0:0] \1229 ;
+    input [0:0] a;
+    input [1:0] b;
+    input [1:0] s;
+    (* parallel_case *)
+    casez (s)
+      2'b?1:
+        \1229  = b[0:0];
+      2'b1?:
+        \1229  = b[1:1];
+      default:
+        \1229  = a;
+    endcase
+  endfunction
+  assign _56_ = \1229 (1'hx, 2'h2, { _55_, _54_ });
+  function [0:0] \1233 ;
+    input [0:0] a;
+    input [1:0] b;
+    input [1:0] s;
+    (* parallel_case *)
+    casez (s)
+      2'b?1:
+        \1233  = b[0:0];
+      2'b1?:
+        \1233  = b[1:1];
+      default:
+        \1233  = a;
+    endcase
+  endfunction
+  assign _57_ = \1233 (1'h0, 2'h3, { _55_, _54_ });
+  assign _58_ = flush ? 1'hx : _56_;
+  assign _59_ = flush ? 1'h0 : _57_;
+  assign _60_ = opcode == 7'h63;
+  assign _61_ = _60_ ? 1'h1 : 1'h0;
+  assign _62_ = flush ? 1'h0 : _61_;
+  assign _63_ = opcode == 7'h73;
+  assign _64_ = _63_ ? 1'h1 : 1'h0;
+  assign _65_ = opcode == 7'h67;
+  assign _66_ = opcode == 7'h6f;
+  assign _67_ = _65_ | _66_;
+  function [0:0] \1263 ;
+    input [0:0] a;
+    input [0:0] b;
+    input [0:0] s;
+    (* parallel_case *)
+    casez (s)
+      1'b1:
+        \1263  = b[0:0];
+      default:
+        \1263  = a;
+    endcase
+  endfunction
+  assign _68_ = \1263 (1'h0, 1'h1, _67_);
+  assign _69_ = flush ? 1'h0 : _68_;
+  assign rf_wr_reg_src = _14_;
+  assign rf_wr_reg_en = _15_;
+  assign ig_imm_type = _29_;
+  assign alu_src0 = _48_;
+  assign alu_src1 = _49_;
+  assign alu_opd0_pass = _50_;
+  assign alu_opd1_pass = _51_;
+  assign alu_op_en = _52_;
+  assign alu_func_type = _53_;
+  assign lsu_mode = _58_;
+  assign lsu_en = _59_;
+  assign brd_en = _62_;
+  assign csrs_wr_en = _64_;
+  assign if_jmp = _69_;
+endmodule
+
+module piso_8(clk, clr, en, mode, load, ser);
+  wire [7:0] _0_;
+  wire [7:0] _1_;
+  input clk;
+  input clr;
+  input en;
+  reg [7:0] inter_val;
+  input [7:0] load;
+  input mode;
+  output ser;
+  assign _0_ = mode ? load : { 1'h1, inter_val[7:1] };
+  assign _1_ = en ? _0_ : inter_val;
+  always @(posedge clk, posedge clr)
+    if (clr) inter_val <= 8'hff;
+    else inter_val <= _1_;
+  assign ser = inter_val[0];
+endmodule
+
+module ram_8(clk, rd_addr0, rd_addr1, wr_addr, wr_data, wr_byte_en, wr, rd_data0, rd_data1);
+  wire _00_;
+  wire _01_;
+  wire _02_;
+  wire _03_;
+  wire [511:0] _04_;
+  wire [7:0] _05_;
+  wire [511:0] _06_;
+  wire [7:0] _07_;
+  wire [511:0] _08_;
+  wire [7:0] _09_;
+  wire [511:0] _10_;
+  wire [7:0] _11_;
+  wire [511:0] _12_;
+  wire [7:0] _13_;
+  wire [511:0] _14_;
+  wire [7:0] _15_;
+  wire [511:0] _16_;
+  wire [7:0] _17_;
+  wire [511:0] _18_;
+  wire [7:0] _19_;
+  input clk;
+  input [5:0] rd_addr0;
+  input [5:0] rd_addr1;
+  output [31:0] rd_data0;
+  output [31:0] rd_data1;
+  input wr;
+  input [5:0] wr_addr;
+  input [3:0] wr_byte_en;
+  input [31:0] wr_data;
+  reg [7:0] mem0 [63:0];
+  always @(posedge clk) begin
+    if (_00_)
+      mem0[wr_addr] <= wr_data[7:0];
+  end
+  assign _05_ = mem0[rd_addr1];
+  assign _07_ = mem0[rd_addr0];
+  reg [7:0] mem1 [63:0];
+  always @(posedge clk) begin
+    if (_01_)
+      mem1[wr_addr] <= wr_data[15:8];
+  end
+  assign _09_ = mem1[rd_addr1];
+  assign _11_ = mem1[rd_addr0];
+  reg [7:0] mem2 [63:0];
+  always @(posedge clk) begin
+    if (_02_)
+      mem2[wr_addr] <= wr_data[23:16];
+  end
+  assign _13_ = mem2[rd_addr1];
+  assign _15_ = mem2[rd_addr0];
+  reg [7:0] mem3 [63:0];
+  always @(posedge clk) begin
+    if (_03_)
+      mem3[wr_addr] <= wr_data[31:24];
+  end
+  assign _17_ = mem3[rd_addr1];
+  assign _19_ = mem3[rd_addr0];
+  assign _00_ = wr_byte_en[0] & wr;
+  assign _01_ = wr_byte_en[1] & wr;
+  assign _02_ = wr_byte_en[2] & wr;
+  assign _03_ = wr_byte_en[3] & wr;
+  assign rd_data0 = { _19_, _15_, _11_, _07_ };
+  assign rd_data1 = { _17_, _13_, _09_, _05_ };
+endmodule
+
+module reg_file(clk, rd_reg_addr0, rd_reg_addr1, wr_reg_addr, wr_reg_data, wr_reg_en, rd_reg_data0, rd_reg_data1);
+  wire _0_;
+  wire _1_;
+  wire _2_;
+  wire [31:0] _3_;
+  wire _4_;
+  wire [31:0] _5_;
+  wire [1023:0] _6_;
+  wire [31:0] _7_;
+  wire [1023:0] _8_;
+  wire [31:0] _9_;
+  input clk;
+  input [4:0] rd_reg_addr0;
+  input [4:0] rd_reg_addr1;
+  output [31:0] rd_reg_data0;
+  output [31:0] rd_reg_data1;
+  input [4:0] wr_reg_addr;
+  input [31:0] wr_reg_data;
+  input wr_reg_en;
+  reg [31:0] regs [31:0];
+  always @(posedge clk) begin
+    if (_0_)
+      regs[wr_reg_addr] <= wr_reg_data;
+  end
+  assign _7_ = regs[rd_reg_addr1];
+  assign _9_ = regs[rd_reg_addr0];
+  assign _0_ = wr_reg_en & _1_;
+  assign _1_ = wr_reg_addr != 5'h00;
+  assign _2_ = rd_reg_addr0 == 5'h00;
+  assign _3_ = _2_ ? 32'd0 : _9_;
+  assign _4_ = rd_reg_addr1 == 5'h00;
+  assign _5_ = _4_ ? 32'd0 : _7_;
+  assign rd_reg_data0 = _3_;
+  assign rd_reg_data1 = _5_;
+endmodule
+
+module rom_8(rd, rd_addr, rd_data);
+  wire [5:0] _0_;
+  wire [31:0] _1_;
+  wire [2047:0] _2_;
+  wire [31:0] _3_;
+  input rd;
+  input [5:0] rd_addr;
+  output [31:0] rd_data;
+  reg [31:0] \178  [63:0];
+  initial begin
+    \178 [0] = 32'd19;
+    \178 [1] = 32'd19;
+    \178 [2] = 32'd19;
+    \178 [3] = 32'd19;
+    \178 [4] = 32'd19;
+    \178 [5] = 32'd19;
+    \178 [6] = 32'd19;
+    \178 [7] = 32'd19;
+    \178 [8] = 32'd19;
+    \178 [9] = 32'd19;
+    \178 [10] = 32'd19;
+    \178 [11] = 32'd19;
+    \178 [12] = 32'd19;
+    \178 [13] = 32'd19;
+    \178 [14] = 32'd19;
+    \178 [15] = 32'd19;
+    \178 [16] = 32'd19;
+    \178 [17] = 32'd19;
+    \178 [18] = 32'd19;
+    \178 [19] = 32'd19;
+    \178 [20] = 32'd19;
+    \178 [21] = 32'd19;
+    \178 [22] = 32'd19;
+    \178 [23] = 32'd19;
+    \178 [24] = 32'd19;
+    \178 [25] = 32'd19;
+    \178 [26] = 32'd19;
+    \178 [27] = 32'd19;
+    \178 [28] = 32'd19;
+    \178 [29] = 32'd19;
+    \178 [30] = 32'd19;
+    \178 [31] = 32'd19;
+    \178 [32] = 32'd19;
+    \178 [33] = 32'd19;
+    \178 [34] = 32'd19;
+    \178 [35] = 32'd19;
+    \178 [36] = 32'd19;
+    \178 [37] = 32'd32871;
+    \178 [38] = 32'd12592387;
+    \178 [39] = 32'd4291009763;
+    \178 [40] = 32'd4453267;
+    \178 [41] = 32'd17283;
+    \178 [42] = 32'd4197907;
+    \178 [43] = 32'd915;
+    \178 [44] = 32'd188743791;
+    \178 [45] = 32'd4266879715;
+    \178 [46] = 32'd1245971;
+    \178 [47] = 32'd547553315;
+    \178 [48] = 32'd20971759;
+    \178 [49] = 32'd787;
+    \178 [50] = 32'd4267700335;
+    \178 [51] = 32'd5469283;
+    \178 [52] = 32'd268436243;
+    \178 [53] = 32'd328339;
+    \178 [54] = 32'd46137583;
+    \178 [55] = 32'd4272069859;
+    \178 [56] = 32'd54526191;
+    \178 [57] = 32'd124781203;
+    \178 [58] = 32'd5248035;
+    \178 [59] = 32'd455082643;
+    \178 [60] = 32'd3603;
+    \178 [61] = 32'd915;
+    \178 [62] = 32'd787;
+    \178 [63] = 32'd659;
+  end
+  assign _3_ = \178 [_0_];
+  assign _0_ = 6'h3f - rd_addr;
+  assign _1_ = rd ? _3_ : 32'd0;
+  assign rd_data = _1_;
+endmodule
+
+module sipo_8(clk, clr, en, ser, val);
+  wire [7:0] _0_;
+  input clk;
+  input clr;
+  input en;
+  reg [7:0] inter_val;
+  input ser;
+  output [7:0] val;
+  assign _0_ = en ? { ser, inter_val[7:1] } : inter_val;
+  always @(posedge clk, posedge clr)
+    if (clr) inter_val <= 8'hff;
+    else inter_val <= _0_;
+  assign val = inter_val;
+endmodule
+
+module uart(clk, reset, rd, rd_addr, wr, wr_addr, wr_data, rx, rd_data, tx);
+  wire [1:0] _00_;
+  wire [7:0] _01_;
+  wire [15:0] _02_;
+  wire _03_;
+  wire _04_;
+  wire [15:0] _05_;
+  wire _06_;
+  wire _07_;
+  wire _08_;
+  wire _09_;
+  wire _10_;
+  wire _11_;
+  wire _12_;
+  wire _13_;
+  wire [5:0] _14_;
+  reg [15:0] baud_div;
+  input clk;
+  input rd;
+  input [1:0] rd_addr;
+  output [15:0] rd_data;
+  wire \receiver:323 ;
+  wire [7:0] \receiver:324 ;
+  wire \receiver:325 ;
+  input reset;
+  input rx;
+  wire \rx_fifo:314 ;
+  wire \rx_fifo:315 ;
+  wire [7:0] \rx_fifo:316 ;
+  wire rx_fifo_rd;
+  wire \transmitter:348 ;
+  wire \transmitter:349 ;
+  wire \transmitter:350 ;
+  output tx;
+  wire \tx_fifo:339 ;
+  wire \tx_fifo:340 ;
+  wire [7:0] \tx_fifo:341 ;
+  wire tx_fifo_wr;
+  input wr;
+  input [1:0] wr_addr;
+  input [15:0] wr_data;
+  assign _03_ = wr_addr == 2'h2;
+  assign _04_ = wr & _03_;
+  assign _05_ = _04_ ? wr_data : baud_div;
+  always @(posedge clk, posedge reset)
+    if (reset) baud_div <= 16'hffff;
+    else baud_div <= _05_;
+  assign _06_ = rd_addr == 2'h3;
+  assign _07_ = rd & _06_;
+  assign rx_fifo_rd = _07_ ? 1'h1 : 1'h0;
+  assign _08_ = wr_addr == 2'h3;
+  assign _09_ = wr & _08_;
+  assign tx_fifo_wr = _09_ ? 1'h1 : 1'h0;
+  assign _10_ = rd_addr == 2'h0;
+  assign _11_ = rd_addr == 2'h1;
+  assign _12_ = rd_addr == 2'h2;
+  assign _13_ = rd_addr == 2'h3;
+  function [5:0] \376 ;
+    input [5:0] a;
+    input [23:0] b;
+    input [3:0] s;
+    (* parallel_case *)
+    casez (s)
+      4'b???1:
+        \376  = b[5:0];
+      4'b??1?:
+        \376  = b[11:6];
+      4'b?1??:
+        \376  = b[17:12];
+      4'b1???:
+        \376  = b[23:18];
+      default:
+        \376  = a;
+    endcase
+  endfunction
+  assign _14_ = \376 (6'h00, { \rx_fifo:316 [5:0], baud_div[5:0], 6'h00, \tx_fifo:339 , \rx_fifo:314 , \tx_fifo:340 , \rx_fifo:315 , \transmitter:349 , \receiver:325  }, { _13_, _12_, _11_, _10_ });
+  function [1:0] \382 ;
+    input [1:0] a;
+    input [7:0] b;
+    input [3:0] s;
+    (* parallel_case *)
+    casez (s)
+      4'b???1:
+        \382  = b[1:0];
+      4'b??1?:
+        \382  = b[3:2];
+      4'b?1??:
+        \382  = b[5:4];
+      4'b1???:
+        \382  = b[7:6];
+      default:
+        \382  = a;
+    endcase
+  endfunction
+  assign _00_ = \382 (2'h0, { \rx_fifo:316 [7:6], baud_div[7:6], 4'h0 }, { _13_, _12_, _11_, _10_ });
+  function [7:0] \387 ;
+    input [7:0] a;
+    input [31:0] b;
+    input [3:0] s;
+    (* parallel_case *)
+    casez (s)
+      4'b???1:
+        \387  = b[7:0];
+      4'b??1?:
+        \387  = b[15:8];
+      4'b?1??:
+        \387  = b[23:16];
+      4'b1???:
+        \387  = b[31:24];
+      default:
+        \387  = a;
+    endcase
+  endfunction
+  assign _01_ = \387 (8'h00, { 8'h00, baud_div[15:8], 16'h0300 }, { _13_, _12_, _11_, _10_ });
+  assign _02_ = rd ? { _01_, _00_, _14_ } : 16'h0000;
+  uart_rx receiver (
+    .baud_div(baud_div),
+    .busy(\receiver:325 ),
+    .clk(clk),
+    .reset(reset),
+    .rx(rx),
+    .wr(\receiver:323 ),
+    .wr_data(\receiver:324 ),
+    .wr_en(\rx_fifo:314 )
+  );
+  fifo_8_8 rx_fifo (
+    .clk(clk),
+    .rd(rx_fifo_rd),
+    .rd_data(\rx_fifo:316 ),
+    .rd_en(\rx_fifo:315 ),
+    .reset(reset),
+    .wr(\receiver:323 ),
+    .wr_data(\receiver:324 ),
+    .wr_en(\rx_fifo:314 )
+  );
+  uart_tx transmitter (
+    .baud_div(baud_div),
+    .busy(\transmitter:349 ),
+    .clk(clk),
+    .rd(\transmitter:348 ),
+    .rd_data(\tx_fifo:341 ),
+    .rd_en(\tx_fifo:340 ),
+    .reset(reset),
+    .tx(\transmitter:350 )
+  );
+  fifo_8_8 tx_fifo (
+    .clk(clk),
+    .rd(\transmitter:348 ),
+    .rd_data(\tx_fifo:341 ),
+    .rd_en(\tx_fifo:340 ),
+    .reset(reset),
+    .wr(tx_fifo_wr),
+    .wr_data(wr_data[7:0]),
+    .wr_en(\tx_fifo:339 )
+  );
+  assign rd_data = _02_;
+  assign tx = \transmitter:350 ;
+endmodule
+
+module uart_rx(clk, reset, baud_div, wr_en, rx, wr, wr_data, busy);
+  wire [2:0] _00_;
+  wire _01_;
+  wire _02_;
+  wire _03_;
+  wire [2:0] _04_;
+  wire _05_;
+  wire [2:0] _06_;
+  wire _07_;
+  wire _08_;
+  wire [2:0] _09_;
+  wire _10_;
+  wire [2:0] _11_;
+  wire _12_;
+  wire _13_;
+  wire _14_;
+  wire _15_;
+  wire _16_;
+  wire _17_;
+  wire _18_;
+  wire _19_;
+  wire _20_;
+  wire _21_;
+  wire _22_;
+  wire _23_;
+  wire _24_;
+  wire _25_;
+  wire _26_;
+  wire _27_;
+  wire _28_;
+  wire _29_;
+  wire _30_;
+  wire _31_;
+  wire [15:0] \baud_counter:668 ;
+  wire baud_counter_clr;
+  wire baud_counter_en;
+  wire [15:0] baud_counter_load;
+  wire baud_counter_mode;
+  wire baud_counter_tc;
+  input [15:0] baud_div;
+  output busy;
+  input clk;
+  reg [2:0] curr_state;
+  wire [2:0] next_state;
+  input reset;
+  input rx;
+  wire [2:0] \rx_counter:687 ;
+  wire rx_counter_clr;
+  wire rx_counter_en;
+  wire rx_counter_tc;
+  wire [7:0] \rx_sipo:702 ;
+  wire rx_sipo_clr;
+  wire rx_sipo_en;
+  output wr;
+  output [7:0] wr_data;
+  input wr_en;
+  assign _00_ = reset ? 3'h0 : next_state;
+  always @(posedge clk)
+    curr_state <= _00_;
+  assign _01_ = curr_state == 3'h0;
+  assign _02_ = ~ rx;
+  assign _03_ = wr_en & _02_;
+  assign _04_ = _03_ ? 3'h2 : 3'h1;
+  assign _05_ = curr_state == 3'h1;
+  assign _06_ = baud_counter_tc ? 3'h3 : 3'h2;
+  assign _07_ = curr_state == 3'h2;
+  assign _08_ = baud_counter_tc & rx_counter_tc;
+  assign _09_ = _08_ ? 3'h4 : 3'h3;
+  assign _10_ = curr_state == 3'h3;
+  assign _11_ = baud_counter_tc ? 3'h1 : 3'h4;
+  assign _12_ = curr_state == 3'h4;
+  function [2:0] \639 ;
+    input [2:0] a;
+    input [14:0] b;
+    input [4:0] s;
+    (* parallel_case *)
+    casez (s)
+      5'b????1:
+        \639  = b[2:0];
+      5'b???1?:
+        \639  = b[5:3];
+      5'b??1??:
+        \639  = b[8:6];
+      5'b?1???:
+        \639  = b[11:9];
+      5'b1????:
+        \639  = b[14:12];
+      default:
+        \639  = a;
+    endcase
+  endfunction
+  assign next_state = \639 (3'hx, { _11_, _09_, _06_, _04_, 3'h1 }, { _12_, _10_, _07_, _05_, _01_ });
+  assign _13_ = curr_state == 3'h2;
+  assign baud_counter_load = _13_ ? { 1'h0, baud_div[15:1] } : baud_div;
+  assign _14_ = \baud_counter:668  == 16'h0000;
+  assign baud_counter_tc = _14_ ? 1'h1 : 1'h0;
+  assign _15_ = curr_state == 3'h0;
+  assign baud_counter_clr = _15_ ? 1'h1 : 1'h0;
+  assign _16_ = curr_state == 3'h0;
+  assign baud_counter_en = _16_ ? 1'h0 : 1'h1;
+  assign _17_ = curr_state == 3'h1;
+  assign _18_ = _17_ | baud_counter_tc;
+  assign baud_counter_mode = _18_ ? 1'h1 : 1'h0;
+  assign _19_ = \rx_counter:687  == 3'h0;
+  assign rx_counter_tc = _19_ ? 1'h1 : 1'h0;
+  assign _20_ = curr_state == 3'h0;
+  assign rx_counter_clr = _20_ ? 1'h1 : 1'h0;
+  assign _21_ = curr_state == 3'h3;
+  assign rx_counter_en = _21_ ? baud_counter_tc : 1'h0;
+  assign _22_ = curr_state == 3'h0;
+  assign rx_sipo_clr = _22_ ? 1'h1 : 1'h0;
+  assign _23_ = curr_state == 3'h2;
+  assign _24_ = curr_state == 3'h3;
+  assign _25_ = _23_ | _24_;
+  assign rx_sipo_en = _25_ ? baud_counter_tc : 1'h0;
+  assign _26_ = curr_state == 3'h4;
+  assign _27_ = next_state == 3'h1;
+  assign _28_ = _26_ & _27_;
+  assign _29_ = _28_ ? 1'h1 : 1'h0;
+  assign _30_ = curr_state == 3'h1;
+  assign _31_ = _30_ ? 1'h0 : 1'h1;
+  down_counter_16 baud_counter (
+    .clk(clk),
+    .clr(baud_counter_clr),
+    .en(baud_counter_en),
+    .load(baud_counter_load),
+    .mode(baud_counter_mode),
+    .val(\baud_counter:668 )
+  );
+  down_counter_3 rx_counter (
+    .clk(clk),
+    .clr(rx_counter_clr),
+    .en(rx_counter_en),
+    .load(3'h7),
+    .mode(1'h0),
+    .val(\rx_counter:687 )
+  );
+  sipo_8 rx_sipo (
+    .clk(clk),
+    .clr(rx_sipo_clr),
+    .en(rx_sipo_en),
+    .ser(rx),
+    .val(\rx_sipo:702 )
+  );
+  assign wr = _29_;
+  assign wr_data = \rx_sipo:702 ;
+  assign busy = _31_;
+endmodule
+
+module uart_tx(clk, reset, baud_div, rd_en, rd_data, rd, busy, tx);
+  wire [2:0] _00_;
+  wire _01_;
+  wire [2:0] _02_;
+  wire _03_;
+  wire [2:0] _04_;
+  wire _05_;
+  wire _06_;
+  wire [2:0] _07_;
+  wire _08_;
+  wire [2:0] _09_;
+  wire _10_;
+  wire _11_;
+  wire _12_;
+  wire _13_;
+  wire _14_;
+  wire _15_;
+  wire _16_;
+  wire _17_;
+  wire _18_;
+  wire _19_;
+  wire _20_;
+  wire _21_;
+  wire _22_;
+  wire _23_;
+  wire _24_;
+  wire _25_;
+  wire _26_;
+  wire _27_;
+  wire _28_;
+  wire _29_;
+  wire _30_;
+  wire _31_;
+  wire _32_;
+  wire [15:0] \baud_counter:779 ;
+  wire baud_counter_clr;
+  wire baud_counter_en;
+  wire baud_counter_mode;
+  wire baud_counter_tc;
+  input [15:0] baud_div;
+  output busy;
+  input clk;
+  reg [2:0] curr_state;
+  wire [2:0] next_state;
+  output rd;
+  input [7:0] rd_data;
+  input rd_en;
+  input reset;
+  output tx;
+  wire tx_bit;
+  wire [2:0] \tx_counter:798 ;
+  wire tx_counter_clr;
+  wire tx_counter_en;
+  wire tx_counter_tc;
+  wire \tx_piso:818 ;
+  wire tx_piso_clr;
+  wire tx_piso_en;
+  wire tx_piso_mode;
+  assign _00_ = reset ? 3'h0 : next_state;
+  always @(posedge clk)
+    curr_state <= _00_;
+  assign _01_ = curr_state == 3'h0;
+  assign _02_ = rd_en ? 3'h2 : 3'h1;
+  assign _03_ = curr_state == 3'h1;
+  assign _04_ = baud_counter_tc ? 3'h3 : 3'h2;
+  assign _05_ = curr_state == 3'h2;
+  assign _06_ = baud_counter_tc & tx_counter_tc;
+  assign _07_ = _06_ ? 3'h4 : 3'h3;
+  assign _08_ = curr_state == 3'h3;
+  assign _09_ = baud_counter_tc ? 3'h1 : 3'h4;
+  assign _10_ = curr_state == 3'h4;
+  function [2:0] \756 ;
+    input [2:0] a;
+    input [14:0] b;
+    input [4:0] s;
+    (* parallel_case *)
+    casez (s)
+      5'b????1:
+        \756  = b[2:0];
+      5'b???1?:
+        \756  = b[5:3];
+      5'b??1??:
+        \756  = b[8:6];
+      5'b?1???:
+        \756  = b[11:9];
+      5'b1????:
+        \756  = b[14:12];
+      default:
+        \756  = a;
+    endcase
+  endfunction
+  assign next_state = \756 (3'hx, { _09_, _07_, _04_, _02_, 3'h1 }, { _10_, _08_, _05_, _03_, _01_ });
+  assign _11_ = \baud_counter:779  == 16'h0000;
+  assign baud_counter_tc = _11_ ? 1'h1 : 1'h0;
+  assign _12_ = curr_state == 3'h0;
+  assign baud_counter_clr = _12_ ? 1'h1 : 1'h0;
+  assign _13_ = curr_state == 3'h0;
+  assign baud_counter_en = _13_ ? 1'h0 : 1'h1;
+  assign _14_ = curr_state == 3'h1;
+  assign _15_ = _14_ | baud_counter_tc;
+  assign baud_counter_mode = _15_ ? 1'h1 : 1'h0;
+  assign _16_ = \tx_counter:798  == 3'h0;
+  assign tx_counter_tc = _16_ ? 1'h1 : 1'h0;
+  assign _17_ = curr_state == 3'h0;
+  assign tx_counter_clr = _17_ ? 1'h1 : 1'h0;
+  assign _18_ = curr_state == 3'h3;
+  assign tx_counter_en = _18_ ? baud_counter_tc : 1'h0;
+  assign _19_ = curr_state == 3'h0;
+  assign tx_piso_clr = _19_ ? 1'h1 : 1'h0;
+  assign _20_ = curr_state == 3'h2;
+  assign _21_ = curr_state == 3'h3;
+  assign _22_ = _20_ | _21_;
+  assign tx_piso_en = _22_ ? baud_counter_tc : 1'h0;
+  assign _23_ = curr_state == 3'h2;
+  assign tx_piso_mode = _23_ ? 1'h1 : 1'h0;
+  assign _24_ = curr_state == 3'h1;
+  assign _25_ = next_state == 3'h2;
+  assign _26_ = _24_ & _25_;
+  assign _27_ = _26_ ? 1'h1 : 1'h0;
+  assign _28_ = curr_state == 3'h2;
+  assign tx_bit = _28_ ? 1'h0 : 1'h1;
+  assign _29_ = curr_state == 3'h3;
+  assign _30_ = _29_ ? \tx_piso:818  : tx_bit;
+  assign _31_ = curr_state == 3'h1;
+  assign _32_ = _31_ ? 1'h0 : 1'h1;
+  down_counter_16 baud_counter (
+    .clk(clk),
+    .clr(baud_counter_clr),
+    .en(baud_counter_en),
+    .load(baud_div),
+    .mode(baud_counter_mode),
+    .val(\baud_counter:779 )
+  );
+  down_counter_3 tx_counter (
+    .clk(clk),
+    .clr(tx_counter_clr),
+    .en(tx_counter_en),
+    .load(3'h7),
+    .mode(1'h0),
+    .val(\tx_counter:798 )
+  );
+  piso_8 tx_piso (
+    .clk(clk),
+    .clr(tx_piso_clr),
+    .en(tx_piso_en),
+    .load(rd_data),
+    .mode(tx_piso_mode),
+    .ser(\tx_piso:818 )
+  );
+  assign rd = _27_;
+  assign busy = _32_;
+  assign tx = _30_;
+endmodule
