package hardcaml_xilinx_reports

All checked builds pass
  1. Overview
  2. Docs

Description

Provides a library which can take a hierarchical hardcaml design and run Xilinx Vivado synthesis on each module in the design hierarchy.

Resource utilization and timing estimates are provided for each module.

The synthesis process for each module can be configured to report statistics for just the local module, or for all modules below it as well. Running in different ways can provide better insight into the design.

Added to opam-repository:

README

Automatic generation of Xilinx synthesis reports

Hardcaml_synthesis_estimates

Provides a library which can take a hierarchical hardcaml design and run Xilinx Vivado synthesis on each module in the design hierarchy.

Resource utilization and timing estimates are provided for each module.

The synthesis process for each module can be configured to report statistics for just the local module, or for all modules below it as well. Running in different ways can provide better insight into the design.

Building the tool

See the example in the bin directory. Roughly speaking it works as follows

module Synth = Hardcaml_xilinx_reports
module Command = Synth.Command.With_interface (Design.I) (Design.O)
let () = Command_unix.run ~name:"foo" Design.create

Note that a command line app with a set of command line flags is generated. An optional configuration record can be passed to tweak the synthesis projects.

Running the tool

The current recommendation is to run twice as follows

./synth.exe -dir <output-dir> -hier -blackbox none -part <part> -clock <clock:freq> -run

and

./synth.exe -dir <output-dir> -hier -blackbox inst -part <part> -clock <clock:freq> -run

and

The former flow provides better timing estimates and performs more optimisation on the design. It can track timing paths into submodules.

The later provides more accurate resource utilization estimates for individual modules. It is also much, much quicker.

The only difference between the two is in the -blackbox argument.

Dependencies (11)

  1. dune >= "3.11.0"
  2. textutils >= "v0.17" & < "v0.18~"
  3. stdio >= "v0.17" & < "v0.18~"
  4. ppx_jane >= "v0.17" & < "v0.18~"
  5. ppx_hardcaml >= "v0.17" & < "v0.18~"
  6. hardcaml >= "v0.17" & < "v0.18~"
  7. core_unix >= "v0.17" & < "v0.18~"
  8. core >= "v0.17" & < "v0.18~"
  9. base >= "v0.17" & < "v0.18~"
  10. async >= "v0.17" & < "v0.18~"
  11. ocaml >= "5.1.0"

Dev Dependencies

None

Optional Dependencies

None

Used by

None

Conflicts

None

Build status

Results of building hardcaml_xilinx_reports with each compiler on check.ci.ocaml.org, run of against opam-repository 8a77e58. All results for this package.

Each result links to its build log. To keep crawlers from overloading the site, build logs require a GitHub sign-in (see ocurrent/opam-health-check). On your first log, GitHub asks you to “Authorize opam-health-check”, the OCurrent app that runs these checks; it sees only your public profile, not your repositories. The sign-in lasts 30 days.

Version OCaml 4.11 OCaml 4.14 OCaml 5.2 OCaml 5.4 OCaml 5.5
v0.17.0 (this version) n/a n/a good good good
v0.16.0 n/a good good n/a n/a
  • good Package successfully built
  • partial One of the dependencies failed to build
  • bad Package failed to build
  • n/a Package is not available in this environment
  • internal Internal failure