- Enter
abc
directory and runmake
- Install necessary dependencies in
package.txt
- Build all the rust project (
s-converter
,analyzer
,circuitparser
,e-rewriter
,infix2lisp
,lisp2infix
) by enter dir and runcargo build --release
- Convert the circuit to eqn format by using
write_eqn
inabc
- Copy and paste the eqn to
test_data/raw_circuit.txt
- Run
python run.py
- Convert the circuit to eqn format by using
write_eqn
inabc
- Copy and paste the eqn to
test_data_beta_runner/raw_circuit.txt
- Run
python run_beta_new.py
- ISCAS benchmark: https://github.com/santoshsmalagi/Benchmarks/tree/main
- Ripple Carry Adder: Using ABC to generate the circuit (
gen
command) - EPFL benchmark: https://github.com/lsils/benchmarks
- IWLS 2005: http://iwls.org/iwls2005/benchmarks.html
- Addtional benchmark1: https://pld.ttu.ee/~maksim/benchmarks/
- Addtional benchmark2: https://github.com/jpsety/verilog_benchmark_circuits
- Support constant value (0, 1) for parsing and rewriting
- Support parallel running for multiple egraph rewriting output
- Do code review for e-rewriter (any bugs? verify rules? make more efficient?)
- If eqn fully unfold, then do not concat tmp variable (
new_nxx_
) - Add more rewrite rules in egg
- Shell script to run all benchmarks
- Fine-tune the parameters of egg and symREG
- Using 10000/lines as the auto-termination unfolding condition
- Add cec check before and after eqn unfolding
- Add BDD to do equivalence checking
- Using monotonic cost function in symREG
- Optimize parser 2, avoid duplicated parsing
-
BUG: EPFL max, 10 times of unfolding, not pass cec in eqn checkFixed: eqn unfold too many times -
BUG: C6288 unfold 1 time, will meet the bug to parseFixed: eqn unfold too many times