Module to share area expensive operations (default floating point operations and integer multiplication & division)

Module can be executed with
ResourceSharing -filename=<dot file> <flags>

<dot file> must be a valid dot file for which the operations should be shared.

<flags> are:
-help
Shows all available flags

-max_loss=<float>
Set maximum allowed performance (i.e execution time) loss allowed.
This arguement must lie between 0.0 and 1.0 (default: 0.9)
Example:
If the execution time of the original circuit was 150ns and the maximum performance loss is set to 0.5,
the shared circuit will not take more than 300ns

-heuristic
Will use heuristic to calculate sharing capabilities (up to 5 orders of magnitude faster!!!)
No differences between heuristic and non-heuristic are known up to this point.

-timeout=<int>[s]
Set the timeout of the MILP solver invoked during sharing.
If set to -1, no timeout will be enforced (default: -1)

-period=<float>[ns]
Set clock period constraint for circuit (default: 5.0)

-model_mode=<string>
Set model mode for buffer placement (default: "mixed")

-solver=<string>
Set MILP solver (default: "gurobi_cl")

-odir=<string>
Set output file folder path. Path can be both absolute or relative (default: "./reports/rs/")

-bb_filename=<string>
Set input basic block graph. (default: "<input_filename_base>_bbgraph.dot")

-o=<string>
Set output filename. (default: "<input_filename_base>_area_optimized.dot")

-obb<string>
Set output basic block filename. No file will generated if not set