/HieraGen

We present HieraGen, a new tool for automatically generating hierarchical cache coherence protocols. HieraGen's inputs are the simple, atomic, stable state protocols for each level of the hierarchy. HieraGen's output is a highly concurrent hierarchical protocol, in the form of the finite state machines for all of the cache and directory controllers. HieraGen thus reduces the complexity that architects face, by offloading the challenging tasks of composing protocols and managing concurrency. Experiments show that HieraGen can automatically generate correct-by-construction MOESI family of hierarchical protocols with dozens of states and hundreds of transitions. We have verified all of the generated protocols for safety and deadlock freedom using a model checker.

Primary LanguagePythonMIT LicenseMIT

HieraGen

HieraGen is still under development. Future releases and bug fixes are likely so please check out repository regularly.

Update: HeteroGen has been released. While HeteroGen and HieraGen are currently orthogonal in functionality they will soon be merged into a new release.

A detailed descritpion of the HieraGen (ISCA'20) algorithm is provided here: HieraGen ISCA'20

A detailed descritpion of the ProtoGen (ISCA'18) algorithm is provided here: ProtoGen ISCA'18

If you have questions, you want to contribute or simply report any bugs, please contact: hiera.gen at ed.ac.uk

Setup

Please edit Murphi path in: /Murphi/MurphiTemp/tmpmakefile

Requirements:
Python 3.5 or higher

  • antlr-python3-runtime 3.4
  • colorama 0.3.9
  • tabulate 0.8.2

To run the HieraGen (hierachical protocols) testbench encompassing a set of different protocol combinations execute:

python3 HieraGenTestBench.py

To run the ProtoGen (flat protocols) testbench encompassing a set of different protocols execute:

python3 ProtoGen.py