# Bnx Core Abstraction Layer **C**ore **A**bstraction library abstracts a core. It provides interfaces to HAL layer above such that HAL layer above is void of any core and system specific information and core and system agnostic. However RISC-V standard specific core details that are common acrosss all RISC-V cores are part of **C**ommon **C**ore **A**bstraction **L**ayer. System Abstraction Layer abstracts a system and Core Abstraction Layer abstracts a core. # Example **E31** - a core and its abstracted in Core Abstraction Layer.
**FE310** - a system with E31 core and peripherals is abstracted in System Abstraction Layer.

SAL dont cover that are abstracted in CAL instead might use them. In software architecture, CAL & SAL are beside each other as below. ``` ---------------- Hardware Abstraction Layer -------------------------- ---------------------------------------------------------------------- | System Abstraction Layer | Core Abstraction Layer ---------------------------------------------------------------------- ``` CAL abstracts:
> **C**ore Clock
> **C**ore Boot
whereas SAL abstracts:
> **G**pio
> **U**art
> **S**pi
> **I**2c