calyx 0.7.1

Compiler Infrastructure for Hardware Accelerator Generation
// -p validate -p compile-invoke -p static-inline -p add-guard -p simplify-static-guards -p compile-static-interface
import "primitives/core.futil";
import "primitives/memories/comb.futil";

static<2> component do_add(left: 32, right: 32) -> () {
  cells {
    add = std_add(32);
    r = std_reg(32);
  }
  wires {
    static<1> group a {
      add.left = left;
      add.right = right;
      r.in = add.out;
      r.write_en = 1'd1;
    }

    static<1> group b {
      add.left = r.out;
      add.right = right;
      r.in = add.out;
      r.write_en = 1'd1;
    }
  }
  control {
    static seq {a; b;}
  }

}

component main () -> () {
  cells {
    a = do_add();
  }
  wires {}

  control {
    static invoke a(left=32'd5, right=32'd6)();
  }
}