-
Notifications
You must be signed in to change notification settings - Fork 42
Open
Description
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
Labels
No labels