chipsalliance / espresso

36 stars 14 forks source link

Modernize Espresso RoadMap #6

Open sequencer opened 3 years ago

sequencer commented 3 years ago

Here is the roadmap to modern espresso:

yqszxx commented 3 years ago

0 is on me, start working on it.

yqszxx commented 3 years ago

0 is on me, start working on it.

12

sequencer commented 3 years ago
  1. Remove legacy file format support(aka kiss)
    • deprecate it in 2.4, remove it in 3.0
    • as well as other deprecations and removes.
  2. use antlr4 as parser:
    • introduce antlr4 as build dependency
    • introduce antlr4-runtime as dependency
    • For GitHub release, static link antlr4-runtime
    • For Distro release, dynamic link antlr4-runtime
  3. Z3 support as test dependency.
    • antlr4 is used to parse a truth table.
    • a truth table can be converted to SMTLIB(like what we did in Chisel)
    • or even use Chisel as test dependency.
    • if user wanna verify on their own? we cannot ask them to install chisel.
    • so we might need a verification API in the future, introduce Z3 as dependency.
  4. we use chisel in the test dependency.
  5. espresso as a library(decouple frontend and backend)
    • data structure of TruthTable, as we did it in Chisel
    • parameter structure of espresso(really)
    • TBD in the 3.x
  6. Documentation
    • follow man rule
    • redirect contact information to GitHub issue.
    • add pla file(common/src/Synthesis/espresso/pla.5) this tar to man page?
  7. Espresso is for PLA
    • min term and max term are designed for PLA
    • So logic minimization is designed for AND(NAND) and OR(NOR) gates
    • And the minimization pass is optimized for local optimization(NAND, NOR)
    • So if we wanna optimized for XOR2 or even XOR3. this local optimization cannot get the best result.
    • In this case, synthesis tool like abc can replace a specific table to XOR, however this table is generated for pla, which is not optimized for a pla that contains XOR.
    • For example, this is what espresso cannot handle.
    • so this is a open question, let's leave this to espresso 5.X ;p