CipherX is a project aimed at verifying the Advanced Encryption Standard (AES-128) using the Universal Verification Methodology (UVM). It involves using UVM components to ensure the correctness and robustness of AES-128 encryption and decryption functionalities. The project utilizes Verilog, SystemVerilog, and Python to achieve its goals.
Here's an overview of the project directory structure and the purpose of each file and folder:
-
src/
: Contains source files and utilities.cipher_text.txt
: Stores cipher text data.data.txt
: Contains data for encryption and decryption.encrypt.py
: Python script for encryption tasks.gen_random.py
: Python script for generating random data.key.txt
: Contains encryption keys.run.sh
: Shell script to run the encryption and verification processes.
-
uvm/
: Contains UVM components and SystemVerilog files for AES-128 verification.AES_act_agent.svh
: Reference model and components.AES_driver.svh
: RTL and UVM driver components.AES_env.svh
: UVM environment components.AES_if.svh
: Interface components for UVM.AES_monitor.svh
: UVM monitor components.AES_package.sv
: UVM package containing necessary definitions.AES_pas_agent.svh
: Additional reference model components.AES_scoreboard.svh
: UVM scoreboard for result verification.AES_sequence.svh
: UVM sequence components.AES_sequence_item.svh
: UVM sequence item definitions.AES_sequencer.svh
: UVM sequencer components.AES_subscriber.svh
: UVM subscriber components.AES_test.svh
: UVM testbench components.top.sv
: Top-level SystemVerilog module.
- Verilog: 67.1%
- C: 17.8%
- SystemVerilog: 12.4%
- Python: 2.6%
- Shell: 0.1%
The Software Development Life Cycle (SDLC) for CipherX includes:
- Requirements Analysis: Understanding and documenting the requirements for AES-128 verification.
- Design: Creating system architecture, flowcharts, and detailed design documents for the UVM components and AES-128 verification.
- Implementation: Coding the UVM components and verification scripts using Verilog, SystemVerilog, and Python.
- Testing: Conducting simulation and verification tests to ensure the AES-128 implementation meets the required standards.
- Deployment: Integrating the verification components into a testing environment.
- Maintenance: Monitoring and updating the verification components based on feedback and new requirements.
Testing is crucial for ensuring the correctness of the AES-128 implementation:
encrypt.py
: Encrypts data using AES-128.gen_random.py
: Generates random data for encryption tests.run.sh
: Executes the verification process including running simulations and tests.
- Verilog: For hardware description and verification.
- SystemVerilog: For UVM-based verification components.
- Python: For utility scripts and data handling.
- Shell: For scripting and automation.
Follow these steps to set up and run the CipherX project:
Clone the repository using Git:
git clone https://github.com/Pirate-Emperor/CipherX.git
Ensure that you have the necessary tools installed:
- Verilog/SystemVerilog Simulator: For running UVM simulations.
- Python: For running the utility scripts.
Execute the shell script to start the encryption and verification process:
./run.sh
Review the generated results and logs to verify the correctness of the AES-128 implementation.
Feel free to fork the repository, make changes, and submit pull requests. Contributions are welcome!
This project is licensed under the Pirate-Emperor License. See the LICENSE file for details.
Pirate-Emperor
- GitHub: Pirate-Emperor
- Reddit: PirateKingRahul
- Twitter: PirateKingRahul
- Discord: PirateKingRahul
- LinkedIn: PirateKingRahul
- Skype: Join Skype
- Medium: PirateKingRahul
Thank you for visiting the CipherX project!
For more details, please refer to the GitHub repository.