Field_ops_lib.Modulo_adder_subtractor_pipeMultistage pipelined ripple-carry-adder (or subtractor), internally used to implement modulo_add and modulo_sub.
This module computes a `op1` b `op2` c `op3` d..., where each of the ops are either (+) or (-) (they don't have to be the same). The output of the module will contain all the results and carries of the following:
The generated architecture for a single pipeline stage for summing 3 numbers looks something like the following:
> LUT > CARRY8 > LUT > CARRY8
          ^              ^
> LUT > CARRY8 > LUT > CARRY8
          ^              ^
> LUT > CARRY8 > LUT > CARRY8
          ^              ^
> LUT > CARRY8 > LUT > CARRY8module Single_op_output : sig ... endOutput from performing a single a `op1` b step.
module Term_and_op : sig ... endmodule Input : sig ... endval hierarchical : 
  ?name:string ->
  ?instance:string ->
  stages:int ->
  scope:Hardcaml.Scope.t ->
  enable:Hardcaml.Signal.t ->
  clock:Hardcaml.Signal.t ->
  Hardcaml.Signal.t Input.t ->
  Hardcaml.Signal.t Single_op_output.t listInstantiate a hierarchical pipelined adder/subtractor chain.
val create : 
  (module Hardcaml.Comb.S with type t = 'a) ->
  stages:int ->
  pipe:( n:int -> 'a -> 'a ) ->
  'a Input.t ->
  'a Single_op_output.t listSimilar to hierarchical, but without hierarchy.
val add : 
  ?name:string ->
  ?instance:string ->
  stages:int ->
  scope:Hardcaml.Scope.t ->
  enable:Hardcaml.Signal.t ->
  clock:Hardcaml.Signal.t ->
  Hardcaml.Signal.t list ->
  Hardcaml.Signal.tval sub : 
  ?name:string ->
  ?instance:string ->
  stages:int ->
  scope:Hardcaml.Scope.t ->
  enable:Hardcaml.Signal.t ->
  clock:Hardcaml.Signal.t ->
  Hardcaml.Signal.t ->
  Hardcaml.Signal.t list ->
  Hardcaml.Signal.tsub ~stages ... a xs computes a - xs[0] - xs[1] ...
module With_interface (M : sig ... end) : sig ... end