For the impatient, this championship uses the CBP-NG simulator, built with the HARCOM (HARdware COMplexity) simulation library: https://github.com/AmpereComputing/cbp-ng. Please read on for a more detailed introduction to our infrastructure:
In brief, the HARCOM "language" consists primarily of special C++ types representing registers, SRAM arrays, and transient intermediate values. These types use operator overloading and additional methods to allow you to implement array accesses and needed hardware logic. These types are opaque, meaning your predictor cannot (directly) read or write their values. For example, instead of being able to use typical C++ 'if-else' statements, your predictor will instead need to select (i.e. mux) between several opaque val's based on another opaque val.
Please review the full HARCOM manual, available in the CBP-NG repository (direct link). There are also bimodal, gshare, and TAGE reference predictors available in the repository at https://github.com/AmpereComputing/cbp-ng/tree/main/predictors.
The CBP-NG simulator is responsible for instantiating your predictor, and will then interface with it by passing HARCOM val's. This interface is further detailed in the repository alongside the `predictor` interface (which your predictor will implement). Please see the comments above the definition of that interface in https://github.com/AmpereComputing/cbp-ng/blob/main/cbp.hpp.
We encourage you to implement your own predictor alongside the examples (i.e. in the 'predictors' subdirectory). You will need to include your predictor's header file at the top of 'branch_predictor.hpp', and then ensure the 'branch_predictor' type refers to it either by editing that file or otherwise defining PREDICTOR at compilation-time. More precise details for how to structure the final submission of your code are available on our 'How to Submit' page.
For final scoring of CBP-NG, the organizers will use a new set of traces provided by Ampere in addition to the CBP-2025 traces previously contributed by ARM. While the full set of scoring traces is not currently public, we have identified a subset of "training" traces representative of them. That set of 168 training traces is available for download at https://drive.google.com/file/d/1kLKn_iKVBP-YxRpC4WiCy-ca-agU0BFG/view.
Once downloaded, you may un-compress and extract the traces using the `tar xf cbp-ng_training_traces.tar.gz` command. You can then point the CBP-NG simulator run script at this resulting directory when running your simulations (see the simulator repository README for more information).
Note: While the full set of CBP-2025 traces is public and you are free to use them, we strongly recommend you primarily use our provided training traces because we have gone to great lengths to ensure they are representative of the set we will use for final scoring.