Introduction
This page is intented to serve as an entry point map to those interested in working and collaborating in the development of the HDLMake tool. In order to do so, we have generated some diagrams for the Python source code by using the Pyreverse tool included in the Pylint package.
Note: The diagrams in this page are extracted from HDLMake 3.2 version.
Global oveview
Classes
Packages
The module pool
The main information structure in HDLMake is the module_pool class, acting as the container for the HDLMake modules that are progressively being added to the design hierarchy.
In order to process and work with the modules it contains, the module_pool class inherits the classes that are in charge of executing the requested commands and actions for the tool:
- ActionCore includes the main methods for the most important command line actions for HDLMake, such as:
- ActionTree contain the functionality to create directed graphs depicting the module pool structure at both module and file levels.
-
Action is the base class that contains the internal methods used to execute the requested actions, e.g.:
- new_module adds a new module to the pool.
- build_complete_file_set creates a fileset with all of the files listed by all of the modules in the pool.
- solve_file_set builds a fileset with only those files required by the top entity.
Classes
Packages
The source files
Classes
Packages
In the HDLMake tool, we have two big families of supported files:
- Those HDL files that can be parsed and scanned for dependencies between them.
- Those supported files that cannot be parsed, so that we cannot generate dependencies.
All of the file types supported ultimately belongs to the File class, being the base class for all of them.
In order to support dependencies, the HDL Files inherit from the DepFile class, that makes use of the DepRelation class to create a instance for each of the relations found by the specific HDL parsers. Note that they do not inherit directly, but making use of the intermediate SourceFile class, allowing them to host extra information about its content. These HDL file types are:
- VHDL file, that makes use of the VHDLParser.
- Verilog file, that makes use of the VerilogParser and its associated VerilogPreprocessor
- SystemVerilog/SV file, that inherits from Verilog file class.
If we want to add new supported file type to HDLMake, one that is not parseable, we need to add a new file class to one the following sections (note that smaller sections and tool-independent formats could be find/added too):
Then, we need to modify the create_source_file function accordingly so that HDLMake understand will be able to understand the file type by its extension. After doing this, the different tools will be able to include the new filetype if required.