package hardcaml_xilinx_reports

  1. Overview
  2. Docs
Hardcaml Xilinx Reports

Install

Dune Dependency

Authors

Maintainers

Sources

hardcaml_xilinx_reports-v0.16.0.tar.gz
sha256=0f9e0c652970c3e788c2c6ac5c429aad5dc421126121ceeeb4d44bc0241ed66b

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.

Published: 14 Jun 2023

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 >= "2.0.0"
  2. textutils >= "v0.16" & < "v0.17"
  3. stdio >= "v0.16" & < "v0.17"
  4. ppx_jane >= "v0.16" & < "v0.17"
  5. ppx_deriving_hardcaml >= "v0.16" & < "v0.17"
  6. hardcaml >= "v0.16" & < "v0.17"
  7. core_unix >= "v0.16" & < "v0.17"
  8. core >= "v0.16" & < "v0.17"
  9. base >= "v0.16" & < "v0.17"
  10. async >= "v0.16" & < "v0.17"
  11. ocaml >= "4.08.0"

Dev Dependencies

None

Used by

None

Conflicts

None