Language have been used
Developed with the software and tools below.
The AMBA bus protocol is a widely used on-chip interconnect specification for the connection and management of functional blocks in a System-on-Chip (SoC). The APB (Advanced Peripheral Bus) is a simpler bus protocol, which is used for connecting lower-bandwidth peripherals to the higher-performance main system bus.
This project aims to provide a comprehensive implementation and verification of the AMBA3 and AMBA4 APB protocols, including:
- Digital Design: The digital design of the AMBA3 and AMBA4 APB bus interfaces, including the master, slave, and bridge components.
- Verification: Thorough verification of the APB protocol implementation using SystemVerilog and the Verilog Hardware Description Language (HDL).
AMBA3 APB Protocol Features:
- PSLVERR: An error signal to indicate the failure of a transfer.
- PREADY: A ready signal to indicate completion of an APB transfer.
AMBA4 APB Protocol Features:
- PPROT: A protection signal to support both non-secure and secure transactions on APB.
- PSTRB: A write strobe signal to enable sparse data transfer on the write data bus.
└── Digital-Design-and-Verification-of-AMBA3-4-APB-Protocol/
├── Design
│ └── APB_Master.v
├── Documents
│ ├── AMBA3&4 APB Protocol Report.pdf
│ ├── Design Architecture.pdf
│ └── IHI0024C_amba_apb_protocol_spec.pdf
├── Quartus Snippet
│ ├── FSM.png
│ ├── Fmax.png
│ ├── PCLK Period.png
│ ├── RTL.png
│ ├── hold summary.png
│ └── setup summary.png
├── VERIFICATION
│ ├── RTL
│ │ ├── APB_Master.sv
│ │ ├── APB_Master.sv.bak
│ │ └── APB_SVA.sv
│ ├── interface
│ │ └── interface.sv
│ ├── pkgs
│ │ ├── Coverage_pkg.sv
│ │ ├── Transaction_pkg.sv
│ │ └── shared_pkg.sv
│ ├── testbench
│ │ └── testbench.sv
│ └── top.sv
├── run_AMBA3.tcl
└── run_AMBA4.tcl
TCL
File | Summary |
---|---|
run_AMBA4.tcl | run_AMBA4.tcl |
run_AMBA3.tcl | run_AMBA3.tcl |
Design
File | Summary |
---|---|
APB_Master.v | Design/APB_Master.v |
VERIFICATION
File | Summary |
---|---|
top.sv | VERIFICATION/top.sv |
interface
File | Summary |
---|---|
interface.sv | VERIFICATION/interface/interface.sv |
testbench
File | Summary |
---|---|
testbench.sv | VERIFICATION/testbench/testbench.sv |
pkgs
File | Summary |
---|---|
Transaction_pkg.sv | VERIFICATION/pkgs/Transaction_pkg.sv |
Coverage_pkg.sv | VERIFICATION/pkgs/Coverage_pkg.sv |
shared_pkg.sv | VERIFICATION/pkgs/shared_pkg.sv |
RTL
File | Summary |
---|---|
APB_SVA.sv | VERIFICATION/RTL/APB_SVA.sv |
APB_Master.sv | VERIFICATION/RTL/APB_Master.sv |
Important
Ensure you have the following dependencies installed on your system:
- QuestaSim: download link
- Quartus: download link
- Any TesxtEditor (E.g VScode, sublime Text,..,etc): VScode, sublime
-
Clone the repository:
git clone https://github.com/Abdelrahman1810/Digital-Design-and-Verification-of-AMBA3-4-APB-Protocol.git
-
Make new project in Questa
file -> new Project
-
add path where the repository in
-
run this comand in Questa transcript to simulate AMBA_3_ APB
do run_AMBA3.tcl
-
run this comand in Questa transcript to simulate AMBA_4_ APB
do run_AMBA4.tcl
If you find any issues or have suggestions for improvement, feel free to submit a pull request or open an issue in the repository. Contributions are always welcome!
Contributing Guidelines
- Fork the Repository: Start by forking the project repository to your GitHub account.
- Clone Locally: Clone the forked repository to your local machine using a Git client.
git clone https://github.com/Abdelrahman1810/Digital-Design-and-Verification-of-AMBA3-4-APB-Protocol.git
- Create a New Branch: Always work on a new branch, giving it a descriptive name.
git checkout -b new-feature-x
- Make Your Changes: Develop and test your changes locally.
- Commit Your Changes: Commit with a clear message describing your updates.
git commit -m 'Implemented new feature x.'
- Push to GitHub: Push the changes to your forked repository.
git push origin new-feature-x
- Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
Once your PR is reviewed and approved, it will be merged into the main branch.