Pomegranate is an open source scalable and portable soft-core processor written in VHDL, it's goal is to teach you the fundamentals behind computer architecture by meeting you where you're at and scaling with you as you tackle progessively complex concepts. This allows you to build a solid foundation of knowledge and build on it brick by brick with a real practical example.
First of all, welcome to Pomegranate, We reccomend that you start by familiarising yourself with the wiki, the wiki pages will teach you about the Pomegranate base architecture and how to configure it as well as holding various lessons on computer architecture for you to follow.
If you're not sure where to start, you can read about that here
The modules are stored in the src folder. Each module has it's own sub folder with the code and a README describing it's design.
Testbench files are stored in the testing folder. Each module that has had a testbench simulation conducted has a sub folder which contains the testbench and a README that describes the tests conducted as well as resource utilisation, timing reports and resulting maximum clock frequency, and compatible FPGA platforms.
If you think that this design would be a good fit for your project then please use it. As it is made to be easily edited, you should be able to adapt it for whatever purpose you want.
Compatibility with every FPGA is not guaranteed, but Pomegranate is designed to be compatible with as many Xilinx FPGAs as possible.
There are two main parts to this design.
- The package.
- The modules.
The modules are instanced in a structurally modelled top level file and connected together. You can write your own top file for this purpose however there is one provided here for the base architecture.
The package is the main source of all configuration in a deployment of Pomegranate. It defines the instruction set and formats as well as several helper functions to allow the system to be more easily scaled. A package pre-configured for the base architecture can be found here however if you want to configure your own, the Configuring Pomegranate wiki page will show you how.
Please read the contribution guidelines before starting. You can also contribute to the project by answering issues.
See the Releases page. I also post about interesting discoveries and major changes on my LinkedIn.