|  | # 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 %}} |