Skip to content

Commit

Permalink
WIP: [ImportVerilog] Slang frontend integration
Browse files Browse the repository at this point in the history
Co-authored-by: Fabian Schuiki <fabian@schuiki.ch>
Co-authored-by: ShiZuoye <albertethon@163.com>
Co-authored-by: hunterzju <hunter_ht@zju.edu.cn>
Co-authored-by: Hailong Sun <hailong.sun@terapines.com>

* [ImportVerilog] This PR is aimed at showing the features that Moore supports now. (#26)

* WIP: [ImportVerilog] Slang frontend integration

* [ImportVerilog] Add some new types which are equivalent to PredefinedIntegerType in slang::ast.

* [ImportVerilog] Add some new test cases to detect.

* [ImportVerilog] Add support for the RealType that is equivalent to FloatingType from slang::ast namespace.

* [ImportVerilog] Add some new test cases for RealType.

* [ImportVerilog] Add support for the moore::UnpackedUnsizedDim and moore::UnpackedRangeDim

* [ImportVerilog] Add some new test cases and adjust the order of CHECK-LABEL in this file.

* Add support for the moore::UnpackedAssocDim and moore::UnpackedQueueDim.

* Add some new test cases for UnpackedAssocDim and UnpackedQueueDim.

* Adjust the order of test cases to pass FileCheck correctly.

* [ImportVerilog] Add support for the NetType.

* [ImportVerilog] Add new test cases for the NetType.

* [ImportVerilog] Add support for the moore::EnumType, but there are no related test cases.

* [ImportVerilog] Some unnecessary semicolons were removed.

* [ImportVerilog] The handling of some IntTypes was deleted due to an earlier error and is now restored.

* [ImportVerilog] Able to handle 32-bit assignment Op.

* [ImportVerilog] Able to handle 32-bit assignment Op and handle single blocking assignment in always_comb block.

* [ImportVerilog] About the definition of Moore::AlwaysCombOp.

* [ImportVerilog] WIP:Can't handle cases where the right side of an AssignOp is a variable.

* [ImportVerilog] Add support for the moore::AlwaysCombOp and a new file called Statement.cpp is created, which is used for slang statement conversion.

* [ImportVerilog] Create a new file called Statement.cpp which is related to Slang statement conversion.

* [ImportVerilog] Change break in the case statement to call mlir::emitError().

* [ImportVerilog] There are tweaks to the framework for handling expressions. Andadd new supported for the handling varibles and nets.

* [ImportVerilog] Add a new file to handle expression specially.

* [ImportVerilog] Add a new line at the end of Expression.cpp.

* [ImportVerilog] Add a new line at the end of Expression.cpp.

* [ImportVerilog] Tweak a little detail.

* [ImportVerilog] Support continuous assignment, but rhs can not a variable.

* [ImportVerilog] Add support for the moore::IfOp.

* [ImportVerilog] Add two new files for slang statements and expressions conversion.  And now can support conversion of the alwaysCombOp, initialOp, and ifOp.

* Update CMakeLists.txt

* Update MooreOps.cpp

* Update Structure.cpp

* Update Structure.cpp

* [ImportVerilog] A lot of things, review the details at the framework branch.

* [ImportVerilog] Add EqualityOp to handle four equal operator.

* [ImportVerilog] Implement the body of the visitBinaryOp func for choosing which op will be used.

* [ImportVerilog] Implement the body of the visitSignalEvent func.

* [ImportVerilog] Add moore::IfOp and modify the type of AssignOp.

* [ImportVerilog] Support the relational and shift operators and introduce the scf::IfOp.

* [ImportVerilog] Add the moore::LogicalOp to handle four logical operators.

* [ImportVerilog] About the unaryOp, binaryOp, netOp and conversionOp. And add the test.sv file for testing existing feature.

* [ImportVerilog] Support AddOp, MulOp and improved assignment Op (#27)

* [ImportVerilog] add PCassignOp and fix test.sv

 Create pcassign op when expr is Procedural continuals
 assignment.
 Tweak `test.sv` to pass the FileCheck.
 Clean up unnecessary functions.

* [ImportVerilog] Support AddOp and MulOp

AddOp and MulOp support variadic operands.
The element of operands should be same.

WIP: Add procedure tests, add missing bail-on-error

WIP: Remove lvalue/rvalue type distinction

WIP: Clean up ops and make tests more focused

WIP: Minor restructuring

WIP: Improve cast op and add more tests

WIP: Use visitor to handle expressions

WIP: Remove unneeded conversion ops

WIP: Make ConstantOp more strict, add verifiers and builders

WIP: Refactor and add missing unary operators

WIP: Add more dedicated binary ops, add wildcard eq/neq, refactor

Squash: Drop MIR statements file

Squash: Move concat op

Squash: Update logical and, or, implication, equivalence

Squash: Rework shift operations

Squash: Remove MIR expressions file

[ImportVerilog] Add Assignment operator (#30)

Add lvalueStack to handle lvalue in
assignment operator like:
+= -= *= /=

Co-authored-by: ShiZuoye <albertethon@163.com>

[ImportVerilog] Support Loop Statement (#34)

* [ImportVerilog] Support whileOp

Added support for WhileLoop and DoWhileLoop
using scf::whileOp.

* [ImportVerilog] Support forLoop

Support forLoop by using scf::whileOp.
Handle StatementBlockSymbol in Structure.cpp

* [ImportVerilog] Support RepeatLoop

* [NFC] Use Visitor to handle Statement

* [ImportVerilog] Support foreachLoop

* [ImportVerilog] Support foreachLoop
foreachLoop generated nested `scf::whileOp`
instead of `scf::forOp` now.

Co-authored-by: ShiZuoye <albertethon@163.com>

Squash: If test rearrangement

Co-authored-by: ShiZuoye <albertethon@163.com>
  • Loading branch information
fabianschuiki and albertethon committed Mar 5, 2024
1 parent c01677b commit 66c24c3
Show file tree
Hide file tree
Showing 23 changed files with 1,944 additions and 197 deletions.
92 changes: 0 additions & 92 deletions include/circt/Dialect/Moore/MIRExpressions.td

This file was deleted.

Loading

0 comments on commit 66c24c3

Please sign in to comment.