Skip to content
Business Rule Engine Hardware Accelerator
VHDL C++ SystemVerilog Verilog Makefile Tcl Python
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cpu #14 license and headers Feb 23, 2020
data repo clean and readme Mar 7, 2020
hw process arg. fix [wrapper] Apr 3, 2020
sw kernel arguments comment Mar 27, 2020
xilinx_work makefiles update Mar 25, 2020
.gitattributes industry retreat 2020 talk and poster Jan 28, 2020
.gitignore issues#29 NFA-version management and #22 standard data types Sep 3, 2019
LICENSE Add LICENSE.md Feb 23, 2020
README.md repo clean and readme Mar 7, 2020

README.md

ERBium Business Rule Engine Hardware Accelerator

Compatibility

Board Shell
Xilinx Alveo U250 xilinx_u250_xdma_201830_2
Xilinx Alveo U250 xilinx_u250_qdma_201920_1
Xilinx Alveo U280 xilinx_u280_xdma_201920_1
AWS F1 VU9P xilinx_aws-vu9p-f1_shell-v04261818_201920_1

NFA Generation

Two files are required;

  • Rules data set, formatted as data/demo_01.csv; and
  • Rule structure file, formatted as data/demo_ruletype.csv.
	cd sw
	make <demo|benchmarks>

For advanced compilation, check file sw/erbium.cc and read all parameters.

Place sw/<build_dir>/cfg_criteria_<heuristic>.vhd into ./hw/custom/

Hardware Compilation

Set the COMMON_DIR variable in file xilinx_work/Makefile to your local Xilinx Vitis Accel Examples directory.

	cd xilinx_work
	make <all|build|compile> TARGET=<sw_emu|hw_emu|hw> DEVICE=<FPGA Platform>

AWS F1 Generation

You first need to setup the environment and install the AWS F1 shell. More information here.

	cd ..
	git clone https://github.com/aws/aws-fpga.git $AWS_FPGA_REPO_DIR  
	cd $AWS_FPGA_REPO_DIR                                         
	source vitis_setup.sh

The following script will take care of generating the bitstream, the AFI and waiting script

	cd erbium/xilinx_work
	make aws_build TAREGT=hw DEVICE=$AWS_PLATFORM EMAIL=<your.email@for_nofication_when.done>

Execution

	cd erbium/xilinx_work
	make check TAREGT=hw DEVICE=<FPGA Platform>

For advanced execution, check file sw/kernel_<shell>.cpp and read all parameters.

Publications

  • Fabio Maschi, Muhsen Owaida, Gustavo Alonso, Matteo Casalino, and Anthony Hock-Koon. Making Search Engines Faster by Lowering the Cost of Querying Business Rules Through FPGAs. In Proceedings of the 2020 ACM SIGMOD International Conference on Management of Data (SIGMOD’20), June 14–19, 2020, Portland, OR, USA. ACM, New York, NY, USA, 17 pages. https://doi.org/10.1145/3318464.3386133

Citation

If you find the ERBium engine useful, please consider citing the following paper:

@inproceedings{maschi2020erbium,
  author    = {Fabio Maschi and
               Muhsen Owaida and
               Gustavo Alonso and
               Matteo Casalino and
               Anthony Hock-Koon},
  title     = {Making Search Engines Faster by Lowering the Cost of Querying
               Business Rules Through FPGAs},
  booktitle = {Proceedings of the 2020 ACM SIGMOD International Conference on
               Management of Data (SIGMOD'20), June 14--19, 2020, Portland,
               OR, USA},
  publisher = {{ACM}},
  year      = {2020},
  url       = {https://doi.org/10.1145/3318464.3386133},
  doi       = {10.1145/3318464.3386133},
}
You can’t perform that action at this time.