This software analyzes extensive, intricate hardware project source codes to generate meaningful complexity metrics.
The driving concept of HCT is 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 practical uses of HCT.
To install HCT, download the latest sources from the website and untar the files into a directory. Execute "perl ./install.pl" in the directory. If you would like to install it on a *nix box system wide, please run as root. Follow the installer's instructions to complete the installation.
The HCT is continuously evolving. It starts with McCabe Cyclomatic Complexity analysis to understand branch complexity. Then it improves with more sophisticated complexity scores calibrated with real defect data. A good background on this is available in "Measuring the Complexity of HDL Models" by Michael Shaefers.
There are a few HDL complexity factors defined in the paper, including size, nesting, control flow, information flow, hierarchy, locality, regularity, modularity, coupling (of modules or instances), concurrency, and timing. The idea of psychological complexity of HDL is introduced in the paper, and the common aspects as well as differences of software versus hardware design complexity are analyzed.
A good complexity score will adhere to six rules: the measure has to be based on a formal foundation, intuitiveness, measurability of models under development, the measurement of a structured model as less complex than an unstructured version, increasing complexity when adding new parts to the model, and complexity increases when replacing one part of the model by a more complex part.
The lofty goals of the rules are tough to achieve, but HCT aims to adhere to these goals and should use them as a guiding light. Iteration on a pure and simple generic parsing and computation framework is key to effective iterative design. Focusing on the software architecture's elegance of the chosen language of implementation is essential. The end goal is to correctly score the psychological complexity of hardware blocks in any HDL, predict defect rates, and schedule risks. HCT needs users to correlate with their defect history to refine our attempts.
Version 0.5.04: N/A