Manage HDL code as components so they can shared as IP.
HCM was created after a frustrating attempt to merge changes from one program to another. Even after carefully performing the merge, there were issues.
It was turning into a nightmare just to pass updates between multiple concurrently running programs. I was inspired by PIP, and how easy it is to install python packages. I wanted to bring that same level of ease to HDL design.
- Provides a method to control versions of IP
- Controls the distribution of HDL code
- Follows the Major.Minor.Patch method of version control
- Language independent (VHDL, Verilog, System Verilog)
- Can be used to control vendor IP
- Works with SVN repositories
- Automates publishing of code to a central location
- Automates installing and upgrading of code
- Supports multiple IP repositories
- Supports dependencies between components
You can get the latest released version of HCM via pip.
pip install hcm
The latest development version can be cloned...
git clone https://github.com/jeremiah-c-leary/hdl-component-manager.git
...and then installed locally...
python setup.py install
HCM can be invoked by issuing hcm at the command line prompt:
$ hcm
usage: hcm [-h]
{browse,create,download,install,uninstall,list,publish,show,validate,version}
...
Provides configuration management for HDL components.
positional arguments:
{browse,create,download,install,uninstall,list,publish,show,validate,version}
browse List components available for installation.
create Creates a component repo
download Downloads components without installing them.
install Adds a component from the component repo
uninstall Removes installed components
list Lists components and their versions
publish Adds components to the component repo
show Displays information about installed components
validate Verifies manifest of installed component
version Displays HCM version information
optional arguments:
-h, --help show this help message and exit
HCM has eight subcommands: browse, create, install, uninstall, list, publish, show, and validate.
Use the browse subcommand to list components available for installation.
The arguments for the subcommand can be listed using the -h option:
$ hcm browse -h
usage: hcm browse [-h] [component]
positional arguments:
component Component to browse
optional arguments:
-h, --help show this help message and exit
Use the create subcommand to create a component directory in the repository.
The arguments for the subcommand can be listed using the -h option:
$ hcm create -h
usage: hcm create [-h] url
positional arguments:
url location to create the base component repo
optional arguments:
-h, --help show this help message and exit
Use the download subcommand to pull a version from the repository without installing it.
Use the install subcommand to add or upgrade a component from a repository.
The arguments for the subcommand can be listed using the -h option:
$ bin/hcm install -h
usage: hcm install [-h] [--version VERSION] [--url URL] [--force] [--external]
[--dependencies] [--upgrade]
component
positional arguments:
component Component name to install
optional arguments:
-h, --help show this help message and exit
--version VERSION Major.Minor.Patch version of component to install.
--url URL location of component directory in repo
--force Install component ignoring any local changes
--external Install as an external
--dependencies Install dependencies
--upgrade Upgrade dependencies to latest version
Use the uninstall subcommand to remove installed components.
The arguments for the subcommand can be listed using the -h option:
$ hcm uninstall -h
usage: hcm uninstall [-h] component
positional arguments:
component Installed Component name to install
optional arguments:
-h, --help show this help message and exit
Use the list subcommand to check the versions of components you have installed.
The arguments for the subcommand can be listed using the -h option:
$ hcm list -h
usage: hcm list [-h] [--all]
optional arguments:
-h, --help show this help message and exit
--all Includes directories that are not under HCM control
Use the publish subcommand to push a version of a component to a repository.
The arguments for the subcommand can be listed using the -h option:
$ hcm publish -h
usage: hcm publish [-h] (-m M | -f F) [--url URL] component version
positional arguments:
component Component name to publish
version Major.Minor.Patch version to publish
optional arguments:
-h, --help show this help message and exit
-m M Commit message
-f F File to use as commit message
--url URL Base URL of the component repository
Use the show subcommand to display information about an installed component.
The arguments for the subcommand can be listed using the -h options:
$ hcm show -h
usage: hcm show [-h] [--manifest] [--upgrades] [--updates] [--modifications]
component
positional arguments:
component Component to display information
optional arguments:
-h, --help show this help message and exit
--manifest Displays manifest for all files in component
--upgrades Lists upgrade versions and their log entries
--updates Lists versions with newer publishes and their log entries
--modifications Lists committed modifications for component
Use the validate subcommand to compare the component manifest against what is currently installed.
The arguments for the subcommand can be listed using the -h options:
HCM will use the HCM_URL_PATHS environment variable as a replacement for the --url command line option. HCM uses the paths in the variable to know which component repositories to interact with.
All documentation for HCM is hosted at read-the-docs.
I welcome any contributions to this project. No matter how small or large.
There are several ways to contribute:
- Bug reports
- Code base improvements
- Feature requests
- Pull requests
Please refer to the documentation hosted at read-the-docs for more details on contributing.