A collection of repositories used to realise various end-to-end high-level synthesis (HLS) flows centering around the CIRCT project.

Overview

circt-hls

What is this?: A collection of repositories used to realise various end-to-end high-level synthesis (HLS) flows centering around the CIRCT project.

The fud driver within Calyx is used as a general driver for the entire flow.

HLS flows

These are the (intended) end-to-end flows that can be run from this directory:

  • C
    • Polygeist
      • CIRCT
        • Staticlogic (Statically scheduled HLS)
          • Calyx
            • Calyx native compiler (not circt)
              • Verilog
        • Handshake (dynamically scheduled HLS)
          • FIRRTL
            • HW
              • Verilog
    • Vivado ("Classical" HLS)
      • Verilog

Setup

Build CIRCT

If you don't already have a CIRCT/MLIR build locally, checkout https://github.com/llvm/circt and go follow the instructions.

Build Polygeist

We'll build Polygeist using our existing MLIR/LLVM/Clang build.
NOTE: modify these paths to point to your own CIRCT/MLIR builds.

cd Polygeist
mkdir build
cd build
cmake -G Ninja .. \
  -DMLIR_DIR=$PWD/../circt/llvm-project/build/lib/cmake/mlir \
  -DCLANG_DIR=$PWD/../circt/llvm-project/build/lib/cmake/clang \
  -DLLVM_TARGETS_TO_BUILD="host" \
  -DLLVM_ENABLE_ASSERTIONS=ON \
  -DCMAKE_BUILD_TYPE=DEBUG
ninja
ninja check-mlir-clang

Build Calyx

Note: skip this step if you already have a Calyx build available.

building the rust compiler:

cd calyx
cargo build

building the Calyx driver:

Install Flit:

pip3 install flit

Install fud:

cd calyx
flit -f fud/pyproject.toml install -s

Configure fud:

cd calyx
fud config global.futil_directory $(pwd)/target/debug/futil

Check the fud configuration:

fud check

If anything relevant is missing, make sure you have the corresponding application installed and available in your path.

Setting up the HLS fud stages

Setup Polygeist/MLIR/CIRCT stages:
NOTE: modify these paths to point to your own CIRCT/MLIR builds.

fud register polygeist -p $(pwd)/stages/Polygeist/stage.py
fud config external-stages.polygeist.exec $(pwd)/Polygeist/build/mlir-clang/mlir-clang

fud register circt -p $(pwd)/stages/CIRCT/stage.py
fud config external-stages.circt.bin_dir $(pwd)/../circt/build/bin

fud register mlir -p $(pwd)/stages/MLIR/stage.py
fud config external-stages.mlir.bin_dir $(pwd)/../circt/llvm/build/bin

We use the setting

fud config stages.circt_hls.toplevel ${toplevel}

to keep track of the top-level function to be compiled. This should match a function name in the input .c file. This will further be used as the top-level function when lowering SCFToCalyx.

To initialize this, please run:

fud config stages.circt_hls.toplevel ""

finally, run fud config to ensure that the variables were written correctly.

Usage

The following lists example commands for exercising the available flows. If you're interested about the specific passes that are getting executed through fud, add --verbose to the command line.

Statically scheduled

  • Polygeist to mlir (scf)
fud exec "Polygeist/mlir-clang/Test/aff.c"  \
  --from c                                  \
  --to mlir-scf                             \
  -s circt_hls.toplevel "kernel_deriche"
fud exec "Polygeist/mlir-clang/Test/aff.c"  \
  --from c                                  \
  --to mlir-calyx                           \
  -s circt_hls.toplevel "kernel_deriche"
  • Polygeist to calyx
    Error: invalid lowering of comb groups
fud exec "Polygeist/mlir-clang/Test/aff.c"  \
  --from c                                  \
  --to futil                                \
  -s circt_hls.toplevel "kernel_deriche"

Dynamically scheduled

  • Polygeist to mlir (handshake)
    Error: issues in lowering the memref.alloc ops in standard to handshake. I think this goes back to what https://github.com/llvm/circt/pull/1538 is trying to solve.
fud exec "examples/c/fir/fir.c" \
  --from c                      \
  --to mlir-handshake           \
  -s circt_hls.toplevel fir
  • Polygeist to mlir (FIRRTL)
    error: issues in FIRRTL with unbounded memories
fud exec "examples/c/fir/fir.c" \
  --from c                      \
  --to mlir-firrtl              \
  -s circt_hls.toplevel fir

Vivado

...

Comments
  • Running the simulation ends with compilation failure

    Running the simulation ends with compilation failure

    I tried to use your suggested commands to execute a simulation.

    Already the first command failed while running ninja in to compile the generated project.

    ../build/bin/hlstool --rebuild  --kernel_name top --tb_file tst_top.c --kernel_file top_handshake.mlir dynamic-polygeist --hs_kernel --run_sim 
    

    Running ninja directly uncovers the following problems:

    1. A missing include of optional in include/circt-hls/Tools/hlt/Simulator/MemoryInterface.h
    2. Function resolution issue in include/circt-hls/Tools/hlt/Simulator/SimInterface.h
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/SimInterface.h: In instantiation of ‘T* circt::hlt::SimInterface<TInput, TOutput>::addOutputPort(Args ...) [with T = circt::hlt::HandshakeDataOutPort<unsigned char>; Args = {const char*, unsigned char*, unsigned char*, long unsigned int*}; TInput = std::tuple<>; TOutput = std::tuple<unsigned char>]’:
    /home/dinistro/mlir-dev/circt-hls/playground/top.cpp:33:47:   required from here
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/SimInterface.h:148:16: error: no matching function for call to ‘circt::hlt::HandshakeDataOutPort<unsigned char>::HandshakeDataOutPort(const char*&, unsigned char*&, unsigned char*&, long unsigned int*&)’
      148 |     auto ptr = new T(args...);
          |                ^~~~~~~~~~~~~~
    In file included from /home/dinistro/mlir-dev/circt-hls/playground/top.cpp:3:
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/HandshakeSimInterface.h:121:3: note: candidate: ‘circt::hlt::HandshakeDataPort<TData, THandshakeIOPort>::HandshakeDataPort(CData*, CData*, TData*) [with TData = unsigned char; THandshakeIOPort = circt::hlt::HandshakeOutPort; CData = unsigned char]’
      121 |   HandshakeDataPort(CData *readySig, CData *validSig, TData *dataSig)
          |   ^~~~~~~~~~~~~~~~~
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/HandshakeSimInterface.h:146:32: note:   inherited here
      146 |   using HandshakeDataPortImpl::HandshakeDataPortImpl;
          |                                ^~~~~~~~~~~~~~~~~~~~~
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/HandshakeSimInterface.h:146:32: note:   candidate expects 3 arguments, 4 provided
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/HandshakeSimInterface.h:123:3: note: candidate: ‘circt::hlt::HandshakeDataPort<TData, THandshakeIOPort>::HandshakeDataPort(const string&, CData*, CData*, TData*) [with TData = unsigned char; THandshakeIOPort = circt::hlt::HandshakeOutPort; std::string = std::__cxx11::basic_string<char>; CData = unsigned char]’
      123 |   HandshakeDataPort(const std::string &name, CData *readySig, CData *validSig,
          |   ^~~~~~~~~~~~~~~~~
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/HandshakeSimInterface.h:146:32: note:   inherited here
      146 |   using HandshakeDataPortImpl::HandshakeDataPortImpl;
          |                                ^~~~~~~~~~~~~~~~~~~~~
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/HandshakeSimInterface.h:124:28: note:   no known conversion for argument 4 from ‘long unsigned int*’ to ‘unsigned char*’
      124 |                     TData *dataSig)
          |                     ~~~~~~~^~~~~~~
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/HandshakeSimInterface.h:119:8: note: candidate: ‘circt::hlt::HandshakeDataPort<unsigned char, circt::hlt::HandshakeOutPort>::HandshakeDataPort(circt::hlt::HandshakeDataPort<unsigned char, circt::hlt::HandshakeOutPort>&&)’
      119 | struct HandshakeDataPort : public THandshakeIOPort {
          |        ^~~~~~~~~~~~~~~~~
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/HandshakeSimInterface.h:146:32: note:   inherited here
      146 |   using HandshakeDataPortImpl::HandshakeDataPortImpl;
          |                                ^~~~~~~~~~~~~~~~~~~~~
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/HandshakeSimInterface.h:146:32: note:   candidate expects 1 argument, 4 provided
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/HandshakeSimInterface.h:144:8: note: candidate: ‘circt::hlt::HandshakeDataOutPort<unsigned char>::HandshakeDataOutPort()’
      144 | struct HandshakeDataOutPort : HandshakeDataPort<TData, HandshakeOutPort> {
          |        ^~~~~~~~~~~~~~~~~~~~
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/HandshakeSimInterface.h:144:8: note:   candidate expects 0 arguments, 4 provided
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/HandshakeSimInterface.h:144:8: note: candidate: ‘circt::hlt::HandshakeDataOutPort<unsigned char>::HandshakeDataOutPort(circt::hlt::HandshakeDataOutPort<unsigned char>&&)’
    /home/dinistro/mlir-dev/circt-hls/include/circt-hls/Tools/hlt/Simulator/HandshakeSimInterface.h:144:8: note:   candidate expects 1 argument, 4 provided
    

    The first one is easy to fix, but no clue what to do to solve the second issue.

    opened by Dinistro 7
  • Missing Files

    Missing Files

    While setting up this project locally I found some minor things that break the build.

    First of all, there are imports of circt-hls/Dialect/Cosim/CosimEnums.(h|cpp).inc" which is not generated by TableGen. I'm assuming that there are no enums in Cosim and thus no such files are generated.

    Secondly, lib/Transforms/CMakeLists.txt references a CleanUnregisteredAttrs.cpp which does not exist. Removing this resolves the compilation error, but results in a linker error. The pass CleanUnregisteredAttrs pass is declared in include/circt-hls/Transforms/Passes.td, but there is no definition of the "constructor" function -> Linker error. Was this file just not commited or is this a leftover?

    opened by Dinistro 3
  • Fix build for circt 2500cf570bbc6c6d45940466f9421e93d3a49132

    Fix build for circt 2500cf570bbc6c6d45940466f9421e93d3a49132

    This was in reference to https://github.com/circt-hls/circt-hls/issues/11

    All tests pass except for cosim insertion_sort (hanging in mlir-cpu-runner):

    "Timed Out Test: CIRCT-HLS cosim :: suites/Dynamatic/insertion_sort/tst_insertion_sort.c"

    I also added a bash build script "build.sh" for Ubuntu 22.04.1 LTS

    Let me know if this is helpful or if further steps/updates should be done. Also open to debugging insertion_sort.c further if you have any hints.

    Best regards, -Tedd

    opened by tshadley 2
  • compiling error

    compiling error

    Hello, I'm very interested in this project, so I tried to compile it. But I met the cmake error in compiling circt-hls as following:

    CMake Error at /home/dj/new-circt/circt/llvm/build/lib/cmake/llvm/AddLLVM.cmake:532 (add_dependencies):
      The dependency target "MLIRControlFlow" of target "obj.HLSTransforms" does
      not exist.
    Call Stack (most recent call first):
      /home/dj/new-circt/circt/llvm/build/lib/cmake/mlir/AddMLIR.cmake:303 (llvm_add_library)
      lib/Transforms/CMakeLists.txt:1 (add_mlir_library)
    
    
    CMake Error at /home/dj/new-circt/circt/llvm/build/lib/cmake/llvm/AddLLVM.cmake:532 (add_dependencies):
      The dependency target "MLIRMemRef" of target "obj.HLSTransforms" does not
      exist.
    Call Stack (most recent call first):
      /home/dj/new-circt/circt/llvm/build/lib/cmake/mlir/AddMLIR.cmake:303 (llvm_add_library)
      lib/Transforms/CMakeLists.txt:1 (add_mlir_library)
    
    
    CMake Error at /home/dj/new-circt/circt/llvm/build/lib/cmake/llvm/AddLLVM.cmake:532 (add_dependencies):
      The dependency target "MLIRControlFlow" of target "obj.HLSCosim" does not
      exist.
    Call Stack (most recent call first):
      /home/dj/new-circt/circt/llvm/build/lib/cmake/mlir/AddMLIR.cmake:303 (llvm_add_library)
      /home/dj/new-circt/circt/llvm/build/lib/cmake/mlir/AddMLIR.cmake:580 (add_mlir_library)
      lib/Dialect/Cosim/CMakeLists.txt:6 (add_mlir_dialect_library)
    
    
    CMake Error at /home/dj/new-circt/circt/llvm/build/lib/cmake/llvm/AddLLVM.cmake:532 (add_dependencies):
      The dependency target "MLIRSCF" of target "obj.HLSCosim" does not exist.
    Call Stack (most recent call first):
      /home/dj/new-circt/circt/llvm/build/lib/cmake/mlir/AddMLIR.cmake:303 (llvm_add_library)
      /home/dj/new-circt/circt/llvm/build/lib/cmake/mlir/AddMLIR.cmake:580 (add_mlir_library)
      lib/Dialect/Cosim/CMakeLists.txt:6 (add_mlir_dialect_library)
    

    I have built the latest version of llvm, circt, Polygeist.

    opened by rxd1999 2
  • error: ‘class mlir::MemRefType’ has no member named ‘getAffineMaps’

    error: ‘class mlir::MemRefType’ has no member named ‘getAffineMaps’

    Hi,

    Polygeist in circt-hls is out of sync with CIRCT's MLIR:

    [1/7] Building CXX object lib/polygeist/Passes/CMakeFiles/obj.MLIRPolygeistTransforms.dir/ParallelLoopDistribute.cpp.o
    FAILED: lib/polygeist/Passes/CMakeFiles/obj.MLIRPolygeistTransforms.dir/ParallelLoopDistribute.cpp.o
    /usr/sbin/c++ -DGTEST_HAS_RTTI=0 -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/ryutas/packages/circt/circt/llvm/llvm/include -I/home/ryutas/packages/circt/build/include -I/home/ryutas/packages/circt/circt/llvm/clang/include -I/home/ryutas/packages/circt/build/tools/clang/include -I/home/ryutas/packages/circt/circt/llvm/mlir/include -I/home/ryutas/packages/circt/build/tools/mlir/include -I/home/ryutas/packages/circt-hls/circt-hls/Polygeist/include -I/home/ryutas/packages/circt-hls/build/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -Wimplicit-fallthrough -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wmisleading-indentation -fdiagnostics-color -g   -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS  -fno-exceptions -fno-rtti -std=gnu++14 -MD -MT lib/polygeist/Passes/CMakeFiles/obj.MLIRPolygeistTransforms.dir/ParallelLoopDistribute.cpp.o -MF lib/polygeist/Passes/CMakeFiles/obj.MLIRPolygeistTransforms.dir/ParallelLoopDistribute.cpp.o.d -o lib/polygeist/Passes/CMakeFiles/obj.MLIRPolygeistTransforms.dir/ParallelLoopDistribute.cpp.o -c /home/ryutas/packages/circt-hls/circt-hls/Polygeist/lib/polygeist/Passes/ParallelLoopDistribute.cpp
    /home/ryutas/packages/circt-hls/circt-hls/Polygeist/lib/polygeist/Passes/ParallelLoopDistribute.cpp: In member function ‘virtual mlir::LogicalResult {anonymous}::DistributeAroundBarrier::matchAndRewrite(mlir::scf::ParallelOp, mlir::PatternRewriter&) const’:
    /home/ryutas/packages/circt-hls/circt-hls/Polygeist/lib/polygeist/Passes/ParallelLoopDistribute.cpp:733:37: error: ‘class mlir::MemRefType’ has no member named ‘getAffineMaps’
      733 |                                 mt0.getAffineMaps(), mt0.getMemorySpace());
          |                                     ^~~~~~~~~~~~~
    ninja: build stopped: subcommand failed.
    

    Bumping Polygeist should fix this issue.

    https://github.com/wsmoses/Polygeist/blob/2e6bb368ff4894993eb2102c1da3389fa18e49ef/lib/polygeist/Passes/ParallelLoopDistribute.cpp#L731-L732

    opened by oroppas 2
  • fix build against latest circt

    fix build against latest circt

    I had to fiddle to get hls-opt to compile against circt main (i.e., bbe0104fcb1c67190c929c3da8ab2e9f8f0e33fd). in general i'm not sure if you're pinning against some circt version...

    opened by makslevental 1
  •  fatal error: 'mlir/Dialect/Arithmetic/IR/Arithmetic.h' file not found

    fatal error: 'mlir/Dialect/Arithmetic/IR/Arithmetic.h' file not found

    The following is using https://github.com/nektos/act to run the .github workflow. Is circt supposed to be using the Arith->Arithmetic change yet? It doesn't seem so if currently linked to llvm @ 8c8775e

    [Build CIRCT-HLS/Build Release ubuntu-latest Object] | /usr/bin/clang++ -DGTEST_HAS_RTTI=0 -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I../circt/llvm/llvm/include -I../circt/llvm/build/include -I../circt/llvm/mlir/include -I../circt/llvm/build/tools/mlir/include -I../circt/include -I../circt/build/include -I../include -Iinclude -fno-exceptions -fno-rtti -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -fno-exceptions -fno-rtti -UNDEBUG -std=gnu++17 -MD -MT lib/Transforms/CMakeFiles/obj.HLSTransforms.dir/PushConstants.cpp.o -MF lib/Transforms/CMakeFiles/obj.HLSTransforms.dir/PushConstants.cpp.o.d -o lib/Transforms/CMakeFiles/obj.HLSTransforms.dir/PushConstants.cpp.o -c ../lib/Transforms/PushConstants.cpp

    Build CIRCT-HLS/Build Release ubuntu-latest Object] | ../lib/Transforms/PushConstants.cpp:14:10: fatal error: 'mlir/Dialect/Arithmetic/IR/Arithmetic.h' file not found [Build CIRCT-HLS/Build Release ubuntu-latest Object] | #include "mlir/Dialect/Arithmetic/IR/Arithmetic.h" [Build CIRCT-HLS/Build Release ubuntu-latest Object] | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [Build CIRCT-HLS/Build Release ubuntu-latest Object] | 1 error generated.

    [Build CIRCT-HLS/Build Release ubuntu-latest Object] | [13/36] Building CXX object lib/Transforms/CMakeFiles/obj.HLSTransforms.dir/AsyncifyCalls.cpp.o

    [Build CIRCT-HLS/Build Release ubuntu-latest Object] | FAILED: lib/Transforms/CMakeFiles/obj.HLSTransforms.dir/AsyncifyCalls.cpp.o

    opened by tshadley 3
  • Polygeist and CIRCT are out of sync

    Polygeist and CIRCT are out of sync

    Hi,

    I frequently update CIRCT. Polygeist is not in sync with CIRCT's MLIR. I've recently got the following error where AbstractOperation no longer exists in Polygeist/llvm-project/mlir/include/mlir/IR/OperationSupport.h

    [1/4] Building CXX object tools/mlir-clang/CMakeFiles/mlir-clang.dir/Lib/utils.cc.o
    FAILED: tools/mlir-clang/CMakeFiles/mlir-clang.dir/Lib/utils.cc.o
    /usr/sbin/c++ -DGTEST_HAS_RTTI=0 -DLLVM_OBJ_ROOT=\"/home/ryutas/packages/circt/build\" -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/ryutas/packages/circt/circt/llvm/llvm/include -I/home/ryutas/packages/circt/build/include -I/home/ryutas/packages/circt/circt/llvm/clang/include -I/home/ryutas/packages/circt/build/tools/clang/include -I/home/ryutas/packages/circt/circt/llvm/mlir/include -I/home/ryutas/packages/circt/build/tools/mlir/include -I/home/ryutas/packages/circt-hls/circt-hls/Polygeist/include -I/home/ryutas/packages/circt-hls/circt-hls/Polygeist/build/include -I/home/ryutas/packages/circt-hls/circt-hls/Polygeist/llvm-project/llvm/../clang/include -I/home/ryutas/packages/circt-hls/circt-hls/Polygeist/build/tools/clang/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -Wimplicit-fallthrough -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wmisleading-indentation -fdiagnostics-color -g   -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS  -fno-exceptions -fno-rtti -std=gnu++14 -MD -MT tools/mlir-clang/CMakeFiles/mlir-clang.dir/Lib/utils.cc.o -MF tools/mlir-clang/CMakeFiles/mlir-clang.dir/Lib/utils.cc.o.d -o tools/mlir-clang/CMakeFiles/mlir-clang.dir/Lib/utils.cc.o -c /home/ryutas/packages/circt-hls/circt-hls/Polygeist/tools/mlir-clang/Lib/utils.cc
    /home/ryutas/packages/circt-hls/circt-hls/Polygeist/tools/mlir-clang/Lib/utils.cc: In function ‘mlir::Operation* mlirclang::buildLinalgOp(const mlir::AbstractOperation*, mlir::OpBuilder&, llvm::SmallVectorImpl<mlir::Value>&, llvm::SmallVectorImpl<mlir::Value>&)’:
    /home/ryutas/packages/circt-hls/circt-hls/Polygeist/tools/mlir-clang/Lib/utils.cc:34:22: error: invalid use of incomplete type ‘const class mlir::AbstractOperation’
       34 |   StringRef name = op->name;
          |                      ^~
    In file included from /home/ryutas/packages/circt-hls/circt-hls/Polygeist/tools/mlir-clang/Lib/utils.cc:9:
    /home/ryutas/packages/circt-hls/circt-hls/Polygeist/tools/mlir-clang/Lib/utils.h:19:7: note: forward declaration of ‘class mlir::AbstractOperation’
       19 | class AbstractOperation;
          |       ^~~~~~~~~~~~~~~~~
    /home/ryutas/packages/circt-hls/circt-hls/Polygeist/tools/mlir-clang/Lib/utils.cc: In function ‘mlir::Operation* mlirclang::replaceFuncByOperation(mlir::FuncOp, llvm::StringRef, mlir::OpBuilder&, llvm::SmallVectorImpl<mlir::Value>&, llvm::SmallVectorImpl<mlir::Value>&)’:
    /home/ryutas/packages/circt-hls/circt-hls/Polygeist/tools/mlir-clang/Lib/utils.cc:53:52: error: incomplete type ‘mlir::AbstractOperation’ used in nested name specifier
       53 |   const AbstractOperation *op = AbstractOperation::lookup(opName, ctx);
          |                                                    ^~~~~~
    /home/ryutas/packages/circt-hls/circt-hls/Polygeist/tools/mlir-clang/Lib/utils.cc:59:47: error: invalid use of incomplete type ‘const class mlir::AbstractOperation’
       59 |   OperationState opState(b.getUnknownLoc(), op->name, input,
          |                                               ^~
    In file included from /home/ryutas/packages/circt-hls/circt-hls/Polygeist/tools/mlir-clang/Lib/utils.cc:9:
    /home/ryutas/packages/circt-hls/circt-hls/Polygeist/tools/mlir-clang/Lib/utils.h:19:7: note: forward declaration of ‘class mlir::AbstractOperation’
       19 | class AbstractOperation;
          |       ^~~~~~~~~~~~~~~~~
    ninja: build stopped: subcommand failed.
    

    Any suggestions to resolve this conflict?

    opened by oroppas 3
Owner
null
A example project's description is a high-level overview of why you’re doing a project.

A example project's description is a high-level overview of why you’re doing a project.

Nikita Matyukhin 12 Mar 23, 2022
Wrapper around anjlab's Android In-app Billing Version 3 to be used in Kivy apps

IABwrapper Wrapper around anjlab's Android In-app Billing Version 3 to be used in Kivy apps Install pip install iabwrapper Important ( Add these into

Shashi Ranjan 8 May 23, 2022
A QGIS integration plugin for Kart repositories

QGIS Kart Plugin A plugin to work with Kart repositories Installation The Kart plugin is available in the QGIS Plugins server. To install the latest v

Koordinates 27 Jan 4, 2023
Alfred 4 Workflow to search through your maintained/watched/starred GitHub repositories.

Alfred 4 Workflow to search through your maintained/watched/starred GitHub repositories. Setup This workflow requires a number of Python modules. Thes

Bᴇʀɴᴅ Sᴄʜᴏʀɢᴇʀs 1 Oct 14, 2022
A collection of Workflows samples for various use cases

Workflows Samples Workflows allow you to orchestrate and automate Google Cloud and HTTP-based API services with serverless workflows.

Google Cloud Platform 76 Jan 7, 2023
Multtable is a collection of multiplication table generators in various languages.

Multtable Multtable is a collection of multiplication table generators in various languages. This project was created as a joke based on one of my bro

pollen__ 7 Mar 5, 2022
My collection of mini-projects in various languages

Mini-Projects My collection of mini-projects in various languages About: This repository consists of a number of small projects. Most of these "mini-p

Siddhant Attavar 1 Jul 11, 2022
Malicious Document IoC Extractor is a collection of scripts that helps extracting IoCs from various maldoc families.

MDIExtractor Malicious Document IoC Extractor (MDIExtractor) is a collection of scripts that helps extracting IoCs from various maldoc families. Prere

Malwrologist 14 Nov 25, 2022
This is a Saleae Logic custom high level analyzer that allows you to search and mark specific packets.

SaleaePacketParser This is a Saleae Logic custom high level analyzer that allows you to search and mark specific packets. Field "Search For" is used f

null 1 Dec 16, 2021
A complex language with high level programming and moderate syntax.

zsq a complex language with high level programming and moderate syntax.

an aspirin 6 Jun 25, 2022
High-level bindings to the Valhalla framework.

Valhalla for Python This spin-off project simply offers improved Python bindings to the fantastic Valhalla project. Installation pip install valhalla

GIS • OPS 20 Dec 13, 2022
A collection of UIKit components that can be used as a Wagtail StreamField block.

Wagtail UIKit Blocks A collection of UIKit components that can be used as a Wagtail StreamField block. Available UIKit components Container Grid Headi

Krishna Prasad K 13 Dec 15, 2022
APRS Track Direct is a collection of tools that can be used to run an APRS website

APRS Track Direct APRS Track Direct is a collection of tools that can be used to run an APRS website. You can use data from APRS-IS, CWOP-IS, OGN, HUB

Per Qvarforth 42 Dec 29, 2022
MySQL Connectivity based project. Contains various functions of a Store-Management-System

An Intermediate Level Python - MySQL Connectivity based project. Contains various functions of a Store-Management-System.

Yash Wadhvani 2 Nov 21, 2022
An end-to-end encrypted chat

An end-to-end encrypted chat, that allows users to anonymously talk without ip logs, personal info, or need for registration.

Privalise 1 Nov 27, 2021
An end-to-end Python-based Infrastructure as Code framework for network automation and orchestration.

Nectl An end-to-end Python-based Infrastructure as Code framework for network automation and orchestration. Features Data modelling and validation. Da

Adam Kirchberger 15 Oct 14, 2022
Originally used during Marketplace.tf's open period, this program was used to get the profit of items bought with keys and sold for dollars.

Originally used during Marketplace.tf's open period, this program was used to get the profit of items bought with keys and sold for dollars. Practically useless for me now, but can be used as an example of tkinter.

BoggoTV 1 Dec 11, 2021
A Python wrapper around Bacting

pybacting Python wrapper around bacting. Usage Based on the example from the bacting page, you can do: from pybacting import cdk print(cdk.fromSMILES

Charles Tapley Hoyt 5 Jan 3, 2022
Wrappers around the most common maya.cmds and maya.api use cases

Maya FunctionSet (maya_fn) A package that decompose core maya.cmds and maya.api features to a set of simple functions. Tests The recommended approach

Ryan Porter 9 Mar 12, 2022