proc @regfile.always_comb ([1 x i5]$ %waddr_i, i1$ %we_i) -> ([1 x i32]$ %we_dec) { 0: br %body body: %1 = const i32 0 %j = var i32 %1 br %loop_body check: wait %body, %waddr_i, %we_i loop_body: %j1 = ld i32* %j %2 = const i32 1 %3 = slt i32 %j1, %2 br %3, %loop_exit, %loop_continue loop_exit: br %check loop_continue: %4 = const i32 0 %i = var i32 %4 br %loop_body1 loop_body1: %i1 = ld i32* %i %5 = const i32 32 %6 = slt i32 %i1, %5 br %6, %loop_exit1, %loop_continue1 loop_exit1: %j2 = ld i32* %j %7 = const i32 1 %8 = add i32 %j2, %7 st i32* %j, %8 %j3 = ld i32* %j %9 = const i32 0 %10 = neq i32 %j3, %9 br %loop_body loop_continue1: %11 = const i32 0 %waddr_i1 = prb [1 x i5]$ %waddr_i %j4 = ld i32* %j %12 = const i5 0 %13 = [1 x i5 %12] %14 = shr [1 x i5] %waddr_i1, [1 x i5] %13, i32 %j4 %15 = extf i5, [1 x i5] %14, 0 %16 = inss i32 %11, i5 %15, 0, 5 %i2 = ld i32* %i %17 = eq i32 %16, %i2 br %17, %if_false, %if_true if_true: %j5 = ld i32* %j %18 = const i32 0 %19 = [1 x i32 %18] %20 = sig [1 x i32] %19 %21 = shr [1 x i32]$ %we_dec, [1 x i32]$ %20, i32 %j5 %22 = extf i32$, [1 x i32]$ %21, 0 %i3 = ld i32* %i %23 = const i32 0 %24 = sig i32 %23 %25 = shr i32$ %22, i32$ %24, i32 %i3 %26 = exts i1$, i32$ %25, 0, 1 %we_i1 = prb i1$ %we_i %j6 = ld i32* %j %27 = const i1 0 %28 = shr i1 %we_i1, i1 %27, i32 %j6 %29 = exts i1, i1 %28, 0, 1 %30 = const time 0s 1e drv i1$ %26, %29, %30 br %if_exit if_false: %j7 = ld i32* %j %31 = const i32 0 %32 = [1 x i32 %31] %33 = sig [1 x i32] %32 %34 = shr [1 x i32]$ %we_dec, [1 x i32]$ %33, i32 %j7 %35 = extf i32$, [1 x i32]$ %34, 0 %i4 = ld i32* %i %36 = const i32 0 %37 = sig i32 %36 %38 = shr i32$ %35, i32$ %37, i32 %i4 %39 = exts i1$, i32$ %38, 0, 1 %40 = const i1 0 %41 = const time 0s 1e drv i1$ %39, %40, %41 br %if_exit if_exit: %i5 = ld i32* %i %42 = const i32 1 %43 = add i32 %i5, %42 st i32* %i, %43 %i6 = ld i32* %i %44 = const i32 0 %45 = neq i32 %i6, %44 br %loop_body1 } proc @regfile.always_ff (i1$ %clk_i, [1 x i32]$ %wdata_i, [1 x i32]$ %we_dec) -> ([32 x i32]$ %mem) { 0: br %init init: %clk_i1 = prb i1$ %clk_i wait %check, %clk_i check: %clk_i2 = prb i1$ %clk_i %1 = const i1 0 %2 = eq i1 %clk_i1, %1 %3 = neq i1 %clk_i2, %1 %posedge = and i1 %2, %3 br %posedge, %init, %event event: %4 = const i32 0 %j = var i32 %4 br %loop_body loop_body: %j1 = ld i32* %j %5 = const i32 1 %6 = slt i32 %j1, %5 br %6, %loop_exit, %loop_continue loop_exit: br %0 loop_continue: %7 = const i32 0 %i = var i32 %7 br %loop_body1 loop_body1: %i1 = ld i32* %i %8 = const i32 32 %9 = slt i32 %i1, %8 br %9, %loop_exit1, %loop_continue1 loop_exit1: %10 = const i32 1 %11 = const i32 0 %12 = neq i32 %10, %11 br %12, %if_false, %if_true loop_continue1: %we_dec1 = prb [1 x i32]$ %we_dec %j2 = ld i32* %j %13 = const i32 0 %14 = [1 x i32 %13] %15 = shr [1 x i32] %we_dec1, [1 x i32] %14, i32 %j2 %16 = extf i32, [1 x i32] %15, 0 %i2 = ld i32* %i %17 = const i32 0 %18 = shr i32 %16, i32 %17, i32 %i2 %19 = exts i1, i32 %18, 0, 1 br %19, %if_false1, %if_true1 if_true1: %i3 = ld i32* %i %20 = const i32 0 %21 = [32 x i32 %20] %22 = sig [32 x i32] %21 %23 = shr [32 x i32]$ %mem, [32 x i32]$ %22, i32 %i3 %24 = extf i32$, [32 x i32]$ %23, 0 %wdata_i1 = prb [1 x i32]$ %wdata_i %j3 = ld i32* %j %25 = const i32 0 %26 = [1 x i32 %25] %27 = shr [1 x i32] %wdata_i1, [1 x i32] %26, i32 %j3 %28 = extf i32, [1 x i32] %27, 0 %29 = const time 0s 1d drv i32$ %24, %28, %29 br %if_exit if_false1: br %if_exit if_exit: %i4 = ld i32* %i %30 = const i32 1 %31 = add i32 %i4, %30 st i32* %i, %31 %i5 = ld i32* %i %32 = const i32 0 %33 = neq i32 %i5, %32 br %loop_body1 if_true: %34 = const i32 0 %35 = const i32 0 %36 = [32 x i32 %35] %37 = sig [32 x i32] %36 %38 = shr [32 x i32]$ %mem, [32 x i32]$ %37, i32 %34 %39 = extf i32$, [32 x i32]$ %38, 0 %40 = const i32 0 %41 = const i1 0 %42 = inss i32 %40, i1 %41, 0, 1 %43 = const time 0s 1d drv i32$ %39, %42, %43 br %if_exit1 if_false: br %if_exit1 if_exit1: %j4 = ld i32* %j %44 = const i32 1 %45 = add i32 %j4, %44 st i32* %j, %45 %j5 = ld i32* %j %46 = const i32 0 %47 = neq i32 %j5, %46 br %loop_body } entity @regfile (i1$ %clk_i, [2 x i5]$ %raddr_i, [1 x i5]$ %waddr_i, [1 x i32]$ %wdata_i, i1$ %we_i) -> ([2 x i32]$ %rdata_o) { %0 = const i32 0 %1 = const i32 0 %2 = const i32 0 %3 = const i32 0 %4 = const i32 0 %5 = const i32 0 %6 = const i32 0 %7 = const i32 0 %8 = const i32 0 %9 = const i32 0 %10 = const i32 0 %11 = const i32 0 %12 = const i32 0 %13 = const i32 0 %14 = const i32 0 %15 = const i32 0 %16 = const i32 0 %17 = const i32 0 %18 = const i32 0 %19 = const i32 0 %20 = const i32 0 %21 = const i32 0 %22 = const i32 0 %23 = const i32 0 %24 = const i32 0 %25 = const i32 0 %26 = const i32 0 %27 = const i32 0 %28 = const i32 0 %29 = const i32 0 %30 = const i32 0 %31 = const i32 0 %32 = [i32 %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %16, %17, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31] %mem = sig [32 x i32] %32 %33 = const i32 0 %34 = [i32 %33] %we_dec = sig [1 x i32] %34 %35 = const i32 0 %36 = const i32 0 %37 = [2 x i32 %36] %38 = sig [2 x i32] %37 %39 = shr [2 x i32]$ %rdata_o, [2 x i32]$ %38, i32 %35 %40 = extf i32$, [2 x i32]$ %39, 0 %mem1 = prb [32 x i32]$ %mem %raddr_i1 = prb [2 x i5]$ %raddr_i %41 = const i32 0 %42 = const i5 0 %43 = [2 x i5 %42] %44 = shr [2 x i5] %raddr_i1, [2 x i5] %43, i32 %41 %45 = extf i5, [2 x i5] %44, 0 %46 = const i32 0 %47 = [32 x i32 %46] %48 = shr [32 x i32] %mem1, [32 x i32] %47, i5 %45 %49 = extf i32, [32 x i32] %48, 0 %50 = const time 0s 1e drv i32$ %40, %49, %50 %51 = const i32 1 %52 = const i32 0 %53 = [2 x i32 %52] %54 = sig [2 x i32] %53 %55 = shr [2 x i32]$ %rdata_o, [2 x i32]$ %54, i32 %51 %56 = extf i32$, [2 x i32]$ %55, 0 %mem2 = prb [32 x i32]$ %mem %raddr_i2 = prb [2 x i5]$ %raddr_i %57 = const i32 1 %58 = const i5 0 %59 = [2 x i5 %58] %60 = shr [2 x i5] %raddr_i2, [2 x i5] %59, i32 %57 %61 = extf i5, [2 x i5] %60, 0 %62 = const i32 0 %63 = [32 x i32 %62] %64 = shr [32 x i32] %mem2, [32 x i32] %63, i5 %61 %65 = extf i32, [32 x i32] %64, 0 %66 = const time 0s 1e drv i32$ %56, %65, %66 inst @regfile.always_comb ([1 x i5]$ %waddr_i, i1$ %we_i) -> ([1 x i32]$ %we_dec) inst @regfile.always_ff (i1$ %clk_i, [1 x i32]$ %wdata_i, [1 x i32]$ %we_dec) -> ([32 x i32]$ %mem) %67 = const i32 0 %68 = const i32 0 %69 = [i32 %67, %68] %70 = const time 0s drv [2 x i32]$ %rdata_o, %69, %70 }