The HDL Complexity Tool

A tool that parses large complex hardware projects' source code to produce useful complexity results.
Download

The HDL Complexity Tool Ranking & Summary

Advertisement

  • Rating:
  • License:
  • GPL v3
  • Price:
  • FREE
  • Publisher Name:
  • Slade Maurer
  • Publisher web site:

The HDL Complexity Tool Tags


The HDL Complexity Tool Description

A tool that parses large complex hardware projects' source code to produce useful complexity results. This complexity score is intended to be useful for Verification to drive test plans. Hopefully, RTL designers can use this tool as a way to manage design complexity and as a guide to efficiently learn the structure of existing designs.The HDL Complexity Tool is a simple tool to provide measurement data. The driving concept being that you cannot control what you cannot measure. We intend to use existing research to develop a tool that performs well on a set of real projects.Actual defect data will be used to test complexity as a technique to identify risky components. Real designs will be measured to determine what are the practical uses of hct. In the end, this tool should be practically useful to anyone designing and/or verifying a complex hardware project.INSTALLATION 1. Download latest sources from 2. Untar the files into a directory 3. Execute: perl ./install.pl in that directory ** If you want to install on a *nix box system wide, please run as root 4. Follow the installer's instructionsDESIGNThe HCT is continuously evolving. We are starting with McCabe Cyclomatic Complexity analysis to understand branch complexity. Then we are improving this with more sophisticated complexity scores that are calibrated with real defect data.A good background on this is available. Please refer to "Measuring the Complexity of HDL Models" by Michael Shaefers. Following we have a few excerpts that we use as design criteria for HCT.There are a few HDL complexity factors that are defined in that paper:- size- nesting- control flow- information flow- hierarchy- locality- regularity- modularity- coupling (of modules or instances)- concurrency- timingIn that paper, the idea of psychological complexity of HDL is introduced and the common aspects as well as differences of the software versus hardware design complexity are analyzed. The point is that a good complexity score will adhere to six rules:1. The measure has to be based on a formal foundation2. The measure has to be intuitive3. Models under development have to be measurable4. A Structured model has to be measured as less complex than an unstructured version5. Adding new parts to the model has to increase the complexity6. Replacing one part of the model by a more complex part has to increase complexityThose are six lofty goals when you start to think about them. The transitivity implied by them is going to be tough to achieve. However, we are shooting for this and should use it as a guiding light.We'll need users to correlate with their defect history to refine our attempts. Iteration on a pure and simple generic parsing and computation framework is key to effective iterative design. We must focus on the software architecture a elegance of our chosen language of implementation.The end goal being to properly score the psychological complexity of hardware blocks in any HDL and use this to predict defect rates and schedule risks. Requirements: · Perl What's New in This Release: · This release is fully redesigned for precise results measuring McCabe Cyclomatic complexity, bytes of code, bytes of comments, various ratios and a ranking system you can use to understand the complexit of all the modules in a project. · It works on both Verilog and Cyclicity CDL and support command line and CSV output formats.


The HDL Complexity Tool Related Software