the best armv6-M Thumb processor ever designed
Online documentation
Micro-Architectural Specification - https://drive.google.com/open?id=1aIqUV03NqkBF80jSwOxxaStmN5bM0d-9u39tnP3JNfI
Project/ISA Specification - https://drive.google.com/open?id=1sJCp4TvvizIbFdNGwKVSY6Ehd1l9G5n6
Decode Format Information - https://drive.google.com/open?id=1oir6ubBpc3Vvat1QswyakwPgTSsmvWKGnWVqEmCaDlE
Google Drive with all documentation - https://drive.google.com/open?id=1ph-RoMxtkyzQRGPX-eKBcNCpMRZW9m5n
| Folder Name | Description |
|---|---|
| FE | Contains source files and tests for PJ frontend |
| Purple_Jade_Tests | Contains an ARMv6 ISA simulator and test suite |
| basejump_stl | Contains BSG SystemVerilog standard Library (stale to be removed) |
| commit_stage | Constains source files and tests for regfile, memory order buffer and instruction reorder buffer |
| execute_stage | Contains source files and tests for function units |
| include | Contains common header files for Purple Jade |
| issue_stage | Contains source files and tests for issue table and store check |
| pj_top | Contains Purple Jade top level module and testbench |
| pj_top_no_mem | Contains Purple Jade top level module without memory. This module is only used for backend tools. |
| rename_stage | Contains source files and tests for register renaming module |
All our test infrastructures are use Verilator, an open source design compiler. To install Verilator see here.
To build each module go to corresponding folder and run make.
If you want to build Purple Jade top level run following command
$ cd path/to/Purple_Jade/pj_top
$ make
Please refer Purple Jade Tests Readme for more information about test suite.
To test our design against a specific testbench in Purple_Jade_Tests. Run following commands
$ cd path/to/Purple_Jade/pj_top
$ make TEST=test_bin_name.bin
$ make jade_run TEST=test_bin_name.bin
pj_top/pj_top_test.cpp provides a debug mode enableing inspecting processor states while running benchmarks. The following commands will invoke such debug mode:
$ cd path/to/Purple_Jade/pj_top
$ make TEST=test_bin_name.bin
$ make jade_step TEST=test_bin_name.bin
reg will print all physical reg content and their valid bits to console
reg e will print the given reg address content and its valid bit to console. NOTE : number following reg should be in HEX format
lut will print out speculative register look up table
lut anything will print out non-speculative lut
quit jade_step



