| # Device Libraries | 
 |  | 
 | ## Overview | 
 |  | 
 | The OpenTitan repository contains device libraries which are used within our | 
 | Reference Firmware Images, and can (and should) be used by other OpenTitan | 
 | device software. | 
 |  | 
 | These are organised into the `sw/device/lib` directory. | 
 |  | 
 | -   [`sw/device/lib/base`](https://github.com/lowRISC/opentitan/tree/master/sw/device/lib/base) | 
 |     contains the Base Libraries, including | 
 |     [freestanding C library headers](https://github.com/lowRISC/opentitan/tree/master/sw/device/lib/base/freestanding). | 
 |     The Base Libraries are simple libraries that can be used by any other OpenTitan device software libraries. | 
 | -   [`sw/device/lib/dif`](./dif/README.md) | 
 |     contains the [Device Interface Functions](../../../doc/contributing/sw/device_interface_functions.md). | 
 | -   `sw/device/lib/arch` contains the libraries to be used on specific device | 
 |     configurations (for instance FPGA, Simulation, etc.). | 
 | -   [`sw/device/lib/runtime`](https://github.com/lowRISC/opentitan/tree/master/sw/device/lib/runtime) | 
 |     contains general libraries for more advanced on-device functionality | 
 |     (including logging, printing, and interacting with the RISC-V core). | 
 | -   [`sw/device/lib/testing`](./testing/README.md) | 
 |     contains test library code. Test library code is any (reusable) code that | 
 |     could aid in the writing of smoke, IP integration, or system-level tests, | 
 |     that is a layer of above the DIFs. In other words, this code may make use | 
 |     of the DIFs to actuate the hardware, and chip-level test code may make use | 
 |     of this code to actuate the DIFs. | 
 |  | 
 | ## Documentation Index | 
 |  | 
 | {{% sectionContent %}} |