For Developers

This section describes the directory structure and other details for folks interested in hacking/modifying the core/generator scripts.

Directory Structure

c-class
 ├── bsvpath               # file listing all the directories containing relevant bsv files
 ├── CHANGELOG.rst         # contains the CHANGELOG of versions
 ├── configure             # contains the python configuration scripts
 ├── CONTRIBUTING.md       # guideline for making contributions
 ├── docs                  # all the documentation sources
 ├── LICENSE.*             # License files
 ├── Makefile              # makefile for compiling bsv files and linking using verilator
 ├── micro-arch-tests      # contains a variety of directed tests
 ├── README.md             # main doc readme
 ├── rename_translate.sh   # bash script for manipulating verilog files
 ├── requirements.txt      # list of all python packages required for configuring the core
 ├── sample_config         # sample yaml configuration files
 ├── src                   # contains bsv source code of the C-class core
 └── test_soc              # contains a sample test-bench for simulation purposes

Upgrading dependencies

The core and test-soc uses modules which are available in different repositories. This list of repositories is maintained in the configure/constants.py under the variable: dependency_yaml. The configurator uses the repo-manager package to clone and patch all relevant dependencies.

Changing Compile arguments

The bsc and verilator commands along with their arugments is stored in the configure/constants.py file under the variables: bsc_cmd and verilator_cmd respectively. These are directly used by the configurator to generate the makefile.inc file.

Adding Checks on YAML

The configurator also performs specific checks on the legality of the input yaml. Not all configurations are legal and this is performed by the function specific_checks in the configure/configure.py file. More checks should be added only to this function.