Package: hcm
Manage HDL code as components so they can shared as IP.Table of ContentsOverviewKey BenefitsKey FeaturesInstallationUsageDocumentationContributingOverviewHCM 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.Key BenefitsProvides a method to control versions of IPControls the distribution of HDL codeFollows the Major.Minor.Patch method of version controlLanguage independent (VHDL, Verilog, System Verilog)Can be used to control vendor IPKey FeaturesWorks with SVN repositoriesAutomates publishing of code to a central locationAutomates installing and upgrading of codeSupports multiple IP repositoriesSupports dependencies between componentsInstallationYou can get the latest released version of HCM viapip.pipinstallhcmThe latest development version can be cloned…gitclonehttps://github.com/jeremiah-c-leary/hdl-component-manager.git…and then installed locally…pythonsetup.pyinstallUsageHCM can be invoked by issuinghcmat the command line prompt:$hcmusage:hcm[-h]{browse,create,download,install,uninstall,list,publish,show,validate,version}...ProvidesconfigurationmanagementforHDLcomponents.positionalarguments:{browse,create,download,install,uninstall,list,publish,show,validate,version}browseListcomponentsavailableforinstallation.createCreatesacomponentrepodownloadDownloadscomponentswithoutinstallingthem.installAddsacomponentfromthecomponentrepouninstallRemovesinstalledcomponentslistListscomponentsandtheirversionspublishAddscomponentstothecomponentreposhowDisplaysinformationaboutinstalledcomponentsvalidateVerifiesmanifestofinstalledcomponentversionDisplaysHCMversioninformationoptionalarguments:-h,--helpshowthishelpmessageandexitHCM has eight subcommands:  browse, create, install, uninstall, list, publish, show, and validate.browseUse thebrowsesubcommand to list components available for installation.The arguments for the subcommand can be listed using the-hoption:$hcmbrowse-husage:hcmbrowse[-h][component]positionalarguments:componentComponenttobrowseoptionalarguments:-h,--helpshowthishelpmessageandexitcreateUse thecreatesubcommand to create a component directory in the repository.The arguments for the subcommand can be listed using the-hoption:$hcmcreate-husage:hcmcreate[-h]urlpositionalarguments:urllocationtocreatethebasecomponentrepooptionalarguments:-h,--helpshowthishelpmessageandexitdownloadUse thedownloadsubcommand to pull a version from the repository without installing it.installUse theinstallsubcommand to add or upgrade a component from a repository.The arguments for the subcommand can be listed using the-hoption:$bin/hcminstall-husage:hcminstall[-h][--versionVERSION][--urlURL][--force][--external][--dependencies][--upgrade]componentpositionalarguments:componentComponentnametoinstalloptionalarguments:-h,--helpshowthishelpmessageandexit--versionVERSIONMajor.Minor.Patchversionofcomponenttoinstall.--urlURLlocationofcomponentdirectoryinrepo--forceInstallcomponentignoringanylocalchanges--externalInstallasanexternal--dependenciesInstalldependencies--upgradeUpgradedependenciestolatestversionuninstallUse theuninstallsubcommand to remove installed components.The arguments for the subcommand can be listed using the-hoption:$hcmuninstall-husage:hcmuninstall[-h]componentpositionalarguments:componentInstalledComponentnametoinstalloptionalarguments:-h,--helpshowthishelpmessageandexitlistUse thelistsubcommand to check the versions of components you have installed.The arguments for the subcommand can be listed using the-hoption:$hcmlist-husage:hcmlist[-h][--all]optionalarguments:-h,--helpshowthishelpmessageandexit--allIncludesdirectoriesthatarenotunderHCMcontrolpublishUse thepublishsubcommand to push a version of a component to a repository.The arguments for the subcommand can be listed using the-hoption:$hcmpublish-husage:hcmpublish[-h](-mM|-fF)[--urlURL]componentversionpositionalarguments:componentComponentnametopublishversionMajor.Minor.Patchversiontopublishoptionalarguments:-h,--helpshowthishelpmessageandexit-mMCommitmessage-fFFiletouseascommitmessage--urlURLBaseURLofthecomponentrepositoryshowUse theshowsubcommand to display information about an installed component.The arguments for the subcommand can be listed using the-hoptions:$hcmshow-husage:hcmshow[-h][--manifest][--upgrades][--updates][--modifications]componentpositionalarguments:componentComponenttodisplayinformationoptionalarguments:-h,--helpshowthishelpmessageandexit--manifestDisplaysmanifestforallfilesincomponent--upgradesListsupgradeversionsandtheirlogentries--updatesListsversionswithnewerpublishesandtheirlogentries--modificationsListscommittedmodificationsforcomponentvalidateUse thevalidatesubcommand to compare the component manifest against what is currently installed.The arguments for the subcommand can be listed using the-hoptions:$hcmvalidate-husage:hcmvalidate[-h][--report]componentpositionalarguments:componentComponenttodisplayinformationoptionalarguments:-h,--helpshowthishelpmessageandexit--reportReportsdifferencesEnvironment VariablesHCM will use theHCM_URL_PATHSenvironment variable as a replacement for the–urlcommand line option.
HCM uses the paths in the variable to know which component repositories to interact with.DocumentationAll documentation for HCM is hosted atread-the-docs.ContributingI welcome any contributions to this project.
No matter how small or large.There are several ways to contribute:Bug reportsCode base improvementsFeature requestsPull requestsPlease refer to the documentation hosted atread-the-docsfor more details on contributing.