Skip to content

Segmentation fault "$DYNAMATIC_OPT_BIN" "$F_HANDSHAKE_TRANSFORMED" #709

@KatCe

Description

@KatCe

Hello,
I get the error below with the program below, with Dynamatic e5cef14 and the following synthesis script:

set-clock-period 11
compile   --buffer-algorithm fpl22
write-hdl --hdl verilog

error:

/home////_design_0000/synth/../out/comp/handshake.mlir:1583:13: warning: Conflicting extension type given for operation result, optimization result may change circuit semantics.
    %1138 = mux %index_881 [%falseResult_723, %trueResult_820] {handshake.bb = 29 : ui32, handshake.name = "mux352"} : <i1>, [<i8>, <i8>] to <i8>
            ^
/home////_design_0000/synth/../out/comp/handshake.mlir:1583:13: note: see current operation: %1231 = handshake.mux %index_881 [%falseResult_723, %trueResult_820] {handshake.bb = 29 : ui32, handshake.name = "mux352"} : <i1>, [<i4>, <i4>] to <i4>
/home////_design_0000/synth/../out/comp/handshake.mlir:1582:13: warning: Conflicting extension type given for operation result, optimization result may change circuit semantics.
    %1137 = mux %index_881 [%falseResult_721, %trueResult_818] {handshake.bb = 29 : ui32, handshake.name = "mux351"} : <i1>, [<i8>, <i8>] to <i8>
            ^
/home////_design_0000/synth/../out/comp/handshake.mlir:1582:13: note: see current operation: %1228 = handshake.mux %index_881 [%falseResult_721, %trueResult_818] {handshake.bb = 29 : ui32, handshake.name = "mux351"} : <i1>, [<i5>, <i5>] to <i5>
/home////_design_0000/synth/../out/comp/handshake.mlir:1612:13: warning: Conflicting extension type given for operation result, optimization result may change circuit semantics.
    %1166 = subi %1138, %1137 {handshake.bb = 29 : ui32, handshake.name = "subi1"} : <i8>
            ^
/home////_design_0000/synth/../out/comp/handshake.mlir:1612:13: note: see current operation: %1283 = handshake.subi %1234, %1230 {handshake.bb = 29 : ui32, handshake.name = "subi1"} : <i6>
/home////_design_0000/synth/../out/comp/handshake.mlir:1566:13: warning: Conflicting extension type given for operation result, optimization result may change circuit semantics.
    %1121 = mux %index_881 [%falseResult_781, %trueResult_786] {handshake.bb = 29 : ui32, handshake.name = "mux335"} : <i1>, [<i8>, <i8>] to <i8>
            ^
/home////_design_0000/synth/../out/comp/handshake.mlir:1566:13: note: see current operation: %1196 = handshake.mux %index_881 [%falseResult_781, %1195] {handshake.bb = 29 : ui32, handshake.name = "mux335"} : <i1>, [<i4>, <i4>] to <i4>
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Program arguments: /data//workspace/dynamatic/bin/dynamatic-opt /home////_design_0000/synth/../out/comp/handshake_transformed.mlir --handshake-mark-fpu-impl=impl=flopoco --handshake-set-buffering-properties=version=fpga20 "--handshake-place-buffers=algorithm=fpl22 solver=gurobi frequencies=/home////_design_0000/synth/../out/comp/frequencies.csv timing-models=/data//workspace/dynamatic/data/components.json target-period=11.000 timeout=300 dump-logs     blif-files=/data//workspace/dynamatic/data/aig/ lut-delay=0.55 lut-size=6 acyclic-type"
 #0 0x000070ed0ec7c9f8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data//workspace/dynamatic/polygeist/llvm-project/build/./lib/libLLVMSupport.so.18git+0x1ca9f8)
 #1 0x000070ed0ec7a7de llvm::sys::RunSignalHandlers() (/data//workspace/dynamatic/polygeist/llvm-project/build/./lib/libLLVMSupport.so.18git+0x1c87de)
 #2 0x000070ed0ec7d0a8 SignalHandler(int) Signals.cpp:0:0
 #3 0x000070ed0e445330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
 #4 0x0000641fa072512b std::_Function_handler<bool (mlir::Operation*), isShiftByConstantImpl(mlir::Operation*)::$_0>::_M_invoke(std::_Any_data const&, mlir::Operation*&&) HandshakeInterfaces.cpp:0:0
 #5 0x0000641fa0725192 std::_Function_handler<bool (mlir::Operation*), isShiftByConstantImpl(mlir::Operation*)::$_0>::_M_invoke(std::_Any_data const&, mlir::Operation*&&) HandshakeInterfaces.cpp:0:0
 #6 0x0000641fa0724c50 dynamatic::handshake::ShLIOp::isShiftByConstant() (/data//workspace/dynamatic/bin/dynamatic-opt+0x29fc50)
 #7 0x0000641fa06ec51d dynamatic::handshake::detail::ShiftLikeArithOpInterfaceInterfaceTraits::Model<dynamatic::handshake::ShLIOp>::isShiftByConstant(dynamatic::handshake::detail::ShiftLikeArithOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*) HandshakeDialect.cpp:0:0
 #8 0x0000641fa05e3447 dynamatic::buffer::BufferPlacementMILP::addUnitTimingConstraints(mlir::Operation*, dynamatic::SignalType, std::function<bool (mlir::Value)> const&) (/data//workspace/dynamatic/bin/dynamatic-opt+0x15e447)
 #9 0x0000641fa06034d1 dynamatic::buffer::fpl22::OutOfCycleBuffers::setup() (/data//workspace/dynamatic/bin/dynamatic-opt+0x17e4d1)
#10 0x0000641fa05be6c0 dynamatic::buffer::HandshakePlaceBuffersPass::getBufferPlacement(dynamatic::buffer::FuncInfo&, dynamatic::TimingDatabase&, dynamatic::Logger*, llvm::MapVector<mlir::Value, dynamatic::buffer::PlacementResult, llvm::DenseMap<mlir::Value, unsigned int, llvm::DenseMapInfo<mlir::Value, void>, llvm::detail::DenseMapPair<mlir::Value, unsigned int>>, llvm::SmallVector<std::pair<mlir::Value, dynamatic::buffer::PlacementResult>, 0u>>&) (/data//workspace/dynamatic/bin/dynamatic-opt+0x1396c0)
#11 0x0000641fa05bbe5c dynamatic::buffer::HandshakePlaceBuffersPass::placeBuffers(dynamatic::buffer::FuncInfo&, dynamatic::TimingDatabase&, dynamatic::CFDFCAnalysis&) (/data//workspace/dynamatic/bin/dynamatic-opt+0x136e5c)
#12 0x0000641fa05b95d8 dynamatic::buffer::HandshakePlaceBuffersPass::placeUsingMILP() (/data//workspace/dynamatic/bin/dynamatic-opt+0x1345d8)
#13 0x0000641fa05b7d8e dynamatic::buffer::HandshakePlaceBuffersPass::runOnOperation() (/data//workspace/dynamatic/bin/dynamatic-opt+0x132d8e)
#14 0x000070ed10491542 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data//workspace/dynamatic/polygeist/llvm-project/build/./lib/libMLIRPass.so.18git+0x1c542)
#15 0x000070ed10494eeb mlir::PassManager::run(mlir::Operation*) (/data//workspace/dynamatic/polygeist/llvm-project/build/./lib/libMLIRPass.so.18git+0x1feeb)
#16 0x000070ed14d8804a performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#17 0x000070ed14d87236 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#18 0x000070ed0ece1432 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (/data//workspace/dynamatic/polygeist/llvm-project/build/./lib/libMLIRSupport.so.18git+0x14432)
#19 0x000070ed14d823a9 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data//workspace/dynamatic/polygeist/llvm-project/build/./lib/libMLIROptLib.so.18git+0xb3a9)
#20 0x000070ed14d8283a mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data//workspace/dynamatic/polygeist/llvm-project/build/./lib/libMLIROptLib.so.18git+0xb83a)
#21 0x0000641fa05af600 main (/data//workspace/dynamatic/bin/dynamatic-opt+0x12a600)
#22 0x000070ed0e42a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#23 0x000070ed0e42a28b call_init ./csu/../csu/libc-start.c:128:20
#24 0x000070ed0e42a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#25 0x0000641fa05af0d5 _start (/data//workspace/dynamatic/bin/dynamatic-opt+0x12a0d5)
/data//workspace/dynamatic/tools/dynamatic/scripts/compile.sh: line 309: 4047525 Segmentation fault      "$DYNAMATIC_OPT_BIN" "$F_HANDSHAKE_TRANSFORMED" --handshake-mark-fpu-impl="impl=$FPUNITS_GEN" --handshake-set-buffering-properties="version=fpga20" --handshake-place-buffers="algorithm=$BUFFER_ALGORITHM solver=$MILP_SOLVER frequencies=$F_FREQUENCIES timing-models=$DYNAMATIC_DIR/data/components.json target-period=$TARGET_CP timeout=300 dump-logs     blif-files=$DYNAMATIC_DIR/data/aig/ lut-delay=0.55 lut-size=6 acyclic-type" ${SHARING_PASS:+"$SHARING_PASS"} > "$F_HANDSHAKE_BUFFERED"

program:

// var_0,var_1,var_2,var_3_a,var_4_a,var_5_a,var_6_a

unsigned char myfunc(char var_0, unsigned int var_1, unsigned int var_2, char var_3_a, char var_4_a, char var_5_a, unsigned int var_6_a) {
  unsigned int var_7_a = (unsigned int) var_3_a;
  unsigned char var_8 = (unsigned char) var_2;
  unsigned char var_9_a = (unsigned char) var_3_a;
  char var_10_a = (char) var_6_a;
  unsigned int var_11 = (unsigned int) var_0;
  char var_12 = (char) var_0;
  unsigned char var_13 = (unsigned char) var_0;
  unsigned int var_14_a = (unsigned int) var_5_a;
  unsigned int var_15 = (unsigned int) var_2;
  char var_16 = (char) var_0;
  unsigned int var_17 = (unsigned int) var_1;
  unsigned char var_18_a = (unsigned char) var_3_a;
  char var_19 = (char) var_0;
  unsigned char var_20_a = (unsigned char) var_5_a;
  unsigned char var_21 = (unsigned char) var_1;
  unsigned int var_22 = (unsigned int) var_0;
  char var_23 = (char) var_2;
  unsigned int var_24 = (unsigned int) var_1;
  unsigned int var_25 = (unsigned int) var_0;
  char var_26 = (char) var_2;
  char var_27_a = (char) var_4_a;
  unsigned char var_28_a = (unsigned char) var_6_a;
  unsigned int var_29_a = (unsigned int) var_3_a;
  char var_30 = (char) var_0;
  unsigned int var_31_a = (unsigned int) var_3_a;
  char var_32 = (char) var_2;
  char var_33 = (char) var_1;
  unsigned char var_34_a = (unsigned char) var_6_a;
  unsigned char var_35 = (unsigned char) var_2;
  unsigned char var_36 = (unsigned char) var_1;
  unsigned int var_37_a = (unsigned int) var_3_a;
  unsigned int var_38_a = (unsigned int) var_6_a;
  unsigned int var_39 = (unsigned int) var_2;
  char var_40 = (char) var_1;
  unsigned char var_41 = (unsigned char) var_0;
  unsigned char var_42 = (unsigned char) var_1;
  unsigned char var_43 = (unsigned char) var_0;
  unsigned int var_44 = (unsigned int) var_0;
  unsigned int var_45_a = (unsigned int) var_4_a;
  unsigned int var_46_a = (unsigned int) var_6_a;
  char var_47 = (char) var_0;
  unsigned char var_48_a = (unsigned char) var_4_a;
  unsigned int var_49 = (unsigned int) var_0;
  unsigned char var_50 = (unsigned char) var_0;
  unsigned char var_51_a = (unsigned char) var_6_a;
  unsigned int var_52 = (unsigned int) var_1;
  unsigned char var_53 = (unsigned char) var_2;
  unsigned char var_54 = (unsigned char) var_1;
  unsigned char var_55 = (unsigned char) var_2;
  unsigned int var_56_a = (unsigned int) var_6_a;
  char var_57_a = (char) var_6_a;
  unsigned int var_58 = (unsigned int) var_1;
  unsigned char var_59_a = (unsigned char) var_6_a;
  char var_60 = (char) var_1;
  unsigned int var_61_a = (unsigned int) var_6_a;
  unsigned char var_62_a = (unsigned char) var_5_a;
  char var_63_a = (char) var_3_a;
  unsigned char var_64_a = (unsigned char) var_6_a;
  unsigned char var_65 = (unsigned char) var_0;
  char var_66 = (char) var_0;
  char var_67_a = (char) var_4_a;
  unsigned char var_68 = (unsigned char) var_1;
  unsigned int var_69 = (unsigned int) var_2;
  unsigned int var_70_a = (unsigned int) var_4_a;
  unsigned int var_71 = (unsigned int) var_1;
  unsigned int var_72_a = (unsigned int) var_5_a;
  char var_73 = (char) var_2;
  unsigned char var_74 = (unsigned char) var_1;
  unsigned char var_75 = (unsigned char) var_0;
  unsigned int var_76_a = (unsigned int) var_3_a;
  unsigned char var_77_a = (unsigned char) var_3_a;
  unsigned char var_78 = (unsigned char) var_2;
  unsigned char var_79 = (unsigned char) var_2;
  unsigned char var_80 = (unsigned char) var_2;
  char var_81_a = (char) var_3_a;
  char var_82_a = (char) var_4_a;
  unsigned int var_83 = (unsigned int) var_2;
  unsigned int var_84_a = (unsigned int) var_6_a;
  unsigned int var_85_a = (unsigned int) var_5_a;
  unsigned int var_86_a = (unsigned int) var_3_a;
  unsigned int var_87 = (unsigned int) var_2;
  char var_88_a = (char) var_4_a;
  unsigned int var_89 = (unsigned int) var_1;
  unsigned char var_90_a = (unsigned char) var_3_a;
  unsigned int var_91 = (unsigned int) var_2;
  unsigned char var_92_a = (unsigned char) var_4_a;
  var_72_a = var_2 * var_6_a;
  var_24 = var_2 << var_1;
  var_14_a = var_24 << var_6_a;
  var_70_a = var_72_a << var_14_a;
  if (var_1 <= var_0)
  {
      var_32 = 0;
      while (var_32 < 14)
      {
          var_73 = var_0 & var_32;
          var_15 = var_24 ^ var_2;
          if (var_32 < var_73)
            break;
          var_32++;
      }
  }
  var_44 = var_2 * var_15;
  var_60 = var_0 & var_73;
  var_84_a = var_72_a << var_14_a;
  var_38_a = var_24 & var_70_a;
  var_58 = var_24 << var_44;
  var_52 = 0;
  while (var_52 < 13)
  {
      var_49 = var_52 + var_44;
      if (var_52 < var_49)
        break;
      var_52++;
  }
  if (var_32 >> var_44)
  {
      if (var_1 >= var_24)
      {
          var_89 = var_52 >> var_1;
      }
  }
  var_86_a = var_49 ^ var_72_a;
  var_66 = var_60 & var_73;
  var_83 = var_89 << var_2;
  var_19 = var_60 * var_73;
  var_22 = var_2 | var_24;
  var_7_a = var_15 - var_84_a;
  var_65 = 0;
  while (var_65 < 11)
  {
      var_79 = 0;
      do
      {
          if (var_79 < var_65)
            break;
          var_79++;
      }
      while (var_79 < 4);
      if (var_65 < var_79)
        break;
      var_65++;
  }
  var_71 = 0;
  while (var_71 < 14)
  {
      var_76_a = var_22 << var_72_a;
      var_8 = var_79 << var_65;
      if (var_71 < var_1)
        break;
      var_71++;
  }
  var_43 = var_79 << var_65;
  var_91 = var_52 | var_15;
  var_33 = var_0 ^ var_19;
  var_57_a = var_66 >> var_5_a;
  var_68 = var_79 >> var_43;
  var_35 = var_43 ^ var_65;
  var_82_a = var_32 >> var_4_a;
  var_26 = var_66 << var_0;
  if (var_73 == var_26)
  {
      for_loop_1: for (var_11 = 0; var_11 < 4; var_11++)
      {
          var_29_a = var_89 >> var_7_a;
          if (var_11 < var_58)
            break;
      }
      var_42 = var_68 << var_8;
  }
  var_67_a = var_26 * var_82_a;
  var_80 = var_8 >> var_42;
  var_50 = var_68 >> var_35;
  var_41 = var_50 >> var_65;
  var_25 = var_1 - var_2;
  var_81_a = var_0 * var_4_a;
  switch (var_15)
  {
      case 71:
      ;
      var_88_a = var_82_a >> var_57_a;
      break;
      default:
      ;
      var_47 = var_19 >> var_60;
      var_17 = var_52 + var_1;
      var_61_a = var_15 << var_14_a;
      var_16 = var_0 ^ var_66;
  }
  var_85_a = var_15 ^ var_86_a;
  var_55 = var_68 | var_80;
  var_30 = var_33 ^ var_32;
  var_54 = var_79 - var_65;
  for_loop_2: for (var_21 = 0; var_21 < 5; var_21++)
  {
      var_36 = var_21 >> var_8;
      if (var_21 < var_43)
        break;
  }
  return (unsigned char) (var_0) + (unsigned char) (var_1) + (unsigned char) (var_2) + (unsigned char) (var_3_a) + (unsigned char) (var_4_a) + (unsigned char) (var_5_a) + (unsigned char) (var_6_a) + (unsigned char) (var_7_a) + (unsigned char) (var_8) + (unsigned char) (var_11) + (unsigned char) (var_14_a) + (unsigned char) (var_15) + (unsigned char) (var_16) + (unsigned char) (var_17) + (unsigned char) (var_19) + (unsigned char) (var_21) + (unsigned char) (var_22) + (unsigned char) (var_24) + (unsigned char) (var_25) + (unsigned char) (var_26) + (unsigned char) (var_29_a) + (unsigned char) (var_30) + (unsigned char) (var_32) + (unsigned char) (var_33) + (unsigned char) (var_35) + (unsigned char) (var_36) + (unsigned char) (var_38_a) + (unsigned char) (var_41) + (unsigned char) (var_42) + (unsigned char) (var_43) + (unsigned char) (var_44) + (unsigned char) (var_47) + (unsigned char) (var_49) + (unsigned char) (var_50) + (unsigned char) (var_52) + (unsigned char) (var_54) + (unsigned char) (var_55) + (unsigned char) (var_57_a) + (unsigned char) (var_58) + (unsigned char) (var_60) + (unsigned char) (var_61_a) + (unsigned char) (var_65) + (unsigned char) (var_66) + (unsigned char) (var_67_a) + (unsigned char) (var_68) + (unsigned char) (var_70_a) + (unsigned char) (var_71) + (unsigned char) (var_72_a) + (unsigned char) (var_73) + (unsigned char) (var_74) + (unsigned char) (var_76_a) + (unsigned char) (var_79) + (unsigned char) (var_80) + (unsigned char) (var_81_a) + (unsigned char) (var_82_a) + (unsigned char) (var_83) + (unsigned char) (var_84_a) + (unsigned char) (var_85_a) + (unsigned char) (var_86_a) + (unsigned char) (var_88_a) + (unsigned char) (var_89) + (unsigned char) (var_91);
}


#include <stdlib.h>
#include "dynamatic/Integration.h"
int main() {
  char var_0 = (char) rand();
  unsigned int var_1 = (unsigned int) rand();
  unsigned int var_2 = (unsigned int) rand();
  char var_3_a = (char) rand();
  char var_4_a = (char) rand();
  char var_5_a = (char) rand();
  unsigned int var_6_a = (unsigned int) rand();
  CALL_KERNEL(myfunc,var_0,var_1,var_2,var_3_a,var_4_a,var_5_a,var_6_a);
  return 0;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions