# Reference Manuals

* [Comportability Definition and Specification]({{< relref "comportability_specification" >}})
* Tool Guides
   * [Topgen Tool]({{< relref "topgen_tool" >}}): Describes `topgen.py` and its Hjson format source. Used to generate rtl and validation files for top specific modules such as PLIC, Pinmux and crossbar.
   * [Register Tool]({{< relref "register_tool" >}}): Describes `regtool.py` and its Hjson format source. Used to generate documentation, rtl, header files and validation files for IP Registers and toplevel.
   * [Crossbar Tool]({{< relref "crossbar_tool" >}}): Describes `tlgen.py` and its Hjson format source. Used to generate self-documentation, rtl files of the crossbars at the toplevel.
   * [Vendor-In Tool]({{< relref "vendor_hw_tool" >}}): Describes `vendor_hw.py` and its Hjson control file. Used to pull a local copy of code maintained in other upstream repositories and apply local patch sets.
* Coding Style Guides
  * [Verilog Coding Style](https://github.com/lowRISC/style-guides/blob/master/VerilogCodingStyle.md)
  * [Python Coding Style]({{< relref "python_coding_style.md" >}})
  * [Hjson Usage and Style Guide]({{< relref "hjson_usage_style.md" >}})
  * [Markdown Usage and Style Guide]({{< relref "markdown_usage_style.md" >}})
  * [C/C++ Style Guide]({{< relref "c_cpp_coding_style.md" >}})
  * [Signoff Checklist]({{< relref "checklist.md" >}})
