Skip to content

[FPGA20] Infeasible model for simple code #992

Description

@zero9178

Given the following C Code:

#include "dynamatic/Integration.h"
#include <stdint.h>
#ifdef HLS_FUZZER_VERIFY
constexpr
#endif
    int32_t
    test28(uint16_t var4, int16_t var5, int32_t, int16_t, float, int32_t,
           uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
           int32_t, int16_t, int16_t, float[6], double[8], uint32_t var6[6],
           double[2]) {
  var6[0] = var6[(uint16_t)(var5 >> (var4 & 5))];
  return 0;
}
#ifdef HLS_FUZZER_VERIFY
constexpr
#endif
    void
    test_bench() {
  uint16_t var4 = 0;
  int16_t var5 = 0;
  int32_t var7 = 0;
  int16_t var8 = 0;
  int32_t var11 = 0;
  uint8_t var12 = 0;
  int32_t var13 = 0;
  uint32_t var14 = 0;
  int32_t var15 = 0;
  int16_t var16 = 0;
  uint16_t var17 = 0;
  int16_t var18 = 0;
  int32_t var19 = 0;
  int16_t var20 = 0;
  int16_t var21 = 0;
  float var2[1];
  double var3[1], var10[1];
  uint32_t var6[6] = {};
  CALL_KERNEL(test28, var4, var5, var7, var8, 0, var11, var12, var13, var14,
              var15, var16, var17, var18, var19, var20, var21, var2, var3, var6,
              var10);
}
int main() { test_bench(); }

Compiling with dynamatic and FPGA20 buffering leads to smart buffer placement failing:

dynamatic> set-src test28.c
dynamatic> compile --buffer-algorithm fpga20 
[INFO] Copied C source
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:7:48: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    7 |     test28(uint16_t var4, int16_t var5, int32_t, int16_t, float, int32_t,
      |                                                ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:7:57: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    7 |     test28(uint16_t var4, int16_t var5, int32_t, int16_t, float, int32_t,
      |                                                         ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:7:64: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    7 |     test28(uint16_t var4, int16_t var5, int32_t, int16_t, float, int32_t,
      |                                                                ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:7:73: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    7 |     test28(uint16_t var4, int16_t var5, int32_t, int16_t, float, int32_t,
      |                                                                         ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:8:19: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    8 |            uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
      |                   ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:8:28: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    8 |            uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
      |                            ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:8:38: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    8 |            uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
      |                                      ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:8:47: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    8 |            uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
      |                                               ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:8:56: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    8 |            uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
      |                                                        ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:8:66: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    8 |            uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
      |                                                                  ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:8:75: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    8 |            uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
      |                                                                           ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:9:19: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    9 |            int32_t, int16_t, int16_t, float[6], double[8], uint32_t var6[6],
      |                   ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:9:28: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    9 |            int32_t, int16_t, int16_t, float[6], double[8], uint32_t var6[6],
      |                            ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:9:37: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    9 |            int32_t, int16_t, int16_t, float[6], double[8], uint32_t var6[6],
      |                                     ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:9:44: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    9 |            int32_t, int16_t, int16_t, float[6], double[8], uint32_t var6[6],
      |                                            ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:9:55: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    9 |            int32_t, int16_t, int16_t, float[6], double[8], uint32_t var6[6],
      |                                                       ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:10:18: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
   10 |            double[2]) {
      |                  ^
17 warnings generated.
[INFO] Disabled short-circuiting
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:7:48: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    7 |     test28(uint16_t var4, int16_t var5, int32_t, int16_t, float, int32_t,
      |                                                ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:7:57: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    7 |     test28(uint16_t var4, int16_t var5, int32_t, int16_t, float, int32_t,
      |                                                         ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:7:64: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    7 |     test28(uint16_t var4, int16_t var5, int32_t, int16_t, float, int32_t,
      |                                                                ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:7:73: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    7 |     test28(uint16_t var4, int16_t var5, int32_t, int16_t, float, int32_t,
      |                                                                         ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:8:19: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    8 |            uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
      |                   ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:8:28: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    8 |            uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
      |                            ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:8:38: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    8 |            uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
      |                                      ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:8:47: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    8 |            uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
      |                                               ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:8:56: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    8 |            uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
      |                                                        ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:8:66: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    8 |            uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
      |                                                                  ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:8:75: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    8 |            uint8_t, int32_t, uint32_t, int32_t, int16_t, uint16_t, int16_t,
      |                                                                           ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:9:19: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    9 |            int32_t, int16_t, int16_t, float[6], double[8], uint32_t var6[6],
      |                   ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:9:28: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    9 |            int32_t, int16_t, int16_t, float[6], double[8], uint32_t var6[6],
      |                            ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:9:37: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    9 |            int32_t, int16_t, int16_t, float[6], double[8], uint32_t var6[6],
      |                                     ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:9:44: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    9 |            int32_t, int16_t, int16_t, float[6], double[8], uint32_t var6[6],
      |                                            ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:9:55: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
    9 |            int32_t, int16_t, int16_t, float[6], double[8], uint32_t var6[6],
      |                                                       ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/test28.c:10:18: warning: omitting the parameter name in a function definition is a C23 extension [-Wc23-extensions]
   10 |            double[2]) {
      |                  ^
17 warnings generated.
[INFO] Compiled to LLVM IR
[INFO] Optimized LLVM IR
[INFO] Applied memory dependency analysis to LLVM IR
[INFO] Converted to std dialect
[INFO] Applied CF transformations
[INFO] Marked memory accesses with the corresponding interfaces in cf
[INFO] Compiled cf to handshake
[INFO] Applied transformations to handshake
[INFO] Built kernel for profiling
[INFO] Ran kernel for profiling
[INFO] Profiled cf-level
[INFO] Set to use "gurobi" to solve buffer placement MILP!
[INFO] Running smart buffer placement with CP = 4.000 and algorithm = 'fpga20'
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:4:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg20 {handshake.name = "sink0"} : <>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:4:5: note: see current operation: handshake.sink %arg20 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink0"} : <>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:5:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg18 {handshake.name = "sink1"} : <>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:5:5: note: see current operation: handshake.sink %arg18 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink1"} : <>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:6:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg17 {handshake.name = "sink2"} : <>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:6:5: note: see current operation: handshake.sink %arg17 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink2"} : <>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:7:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg15 {handshake.name = "sink3"} : <i16>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:7:5: note: see current operation: handshake.sink %arg15 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink3"} : <i16>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:8:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg14 {handshake.name = "sink4"} : <i16>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:8:5: note: see current operation: handshake.sink %arg14 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink4"} : <i16>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:9:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg13 {handshake.name = "sink5"} : <i32>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:9:5: note: see current operation: handshake.sink %arg13 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink5"} : <i32>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:10:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg12 {handshake.name = "sink6"} : <i16>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:10:5: note: see current operation: handshake.sink %arg12 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink6"} : <i16>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:11:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg11 {handshake.name = "sink7"} : <i16>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:11:5: note: see current operation: handshake.sink %arg11 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink7"} : <i16>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:12:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg10 {handshake.name = "sink8"} : <i16>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:12:5: note: see current operation: handshake.sink %arg10 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink8"} : <i16>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:13:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg9 {handshake.name = "sink9"} : <i32>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:13:5: note: see current operation: handshake.sink %arg9 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink9"} : <i32>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:14:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg8 {handshake.name = "sink10"} : <i32>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:14:5: note: see current operation: handshake.sink %arg8 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink10"} : <i32>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:15:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg7 {handshake.name = "sink11"} : <i32>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:15:5: note: see current operation: handshake.sink %arg7 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink11"} : <i32>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:16:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg6 {handshake.name = "sink12"} : <i8>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:16:5: note: see current operation: handshake.sink %arg6 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink12"} : <i8>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:17:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg5 {handshake.name = "sink13"} : <i32>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:17:5: note: see current operation: handshake.sink %arg5 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink13"} : <i32>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:18:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg4 {handshake.name = "sink14"} : <f32>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:18:5: note: see current operation: handshake.sink %arg4 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink14"} : <f32>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:19:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg3 {handshake.name = "sink15"} : <i16>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:19:5: note: see current operation: handshake.sink %arg3 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink15"} : <i16>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:20:5: warning: TimingDatabase::getLatency: no timing model for op
    sink %arg2 {handshake.name = "sink16"} : <i32>
    ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:20:5: note: see current operation: handshake.sink %arg2 {handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "sink16"} : <i32>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:21:10: warning: TimingDatabase::getLatency: no timing model for op
    %1 = trunci %arg0 {handshake.bb = 0 : ui32, handshake.name = "trunci0"} : <i16> to <i3>
         ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:21:10: note: see current operation: %1 = handshake.trunci %arg0 {handshake.bb = 0 : ui32, handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "trunci0"} : <i16> to <i3>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:22:10: warning: TimingDatabase::getLatency: no timing model for op
    %2 = constant %4 {handshake.bb = 0 : ui32, handshake.name = "constant4", value = -3 : i3} : <>, <i3>
         ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:22:10: note: see current operation: %2 = handshake.constant %4 {handshake.bb = 0 : ui32, handshake.name = "constant4", value = -3 : i3} : <>, <i3>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:23:25: warning: TimingDatabase::getLatency: no timing model for op
    %outputs, %memEnd = mem_controller[%arg16 : memref<6xi32>] %arg19 (%3, %addressResult, %addressResult_0, %dataResult_1) %0#1 {connectedBlocks = [0 : i32], handshake.name = "mem_controller0"} :    (!handshake.channel<i32>, !handshake.channel<i3>, !handshake.channel<i3>, !handshake.channel<i32>) -> !handshake.channel<i32>
                        ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:23:25: note: see current operation: %outputs, %memEnd = handshake.mem_controller[%arg16 : memref<6xi32>] %arg19 (%3, %addressResult, %addressResult_0, %dataResult_1) %0#1 {connectedBlocks = [0 : i32], handshake.bufProps = #handshake<bufProps{"0": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00, "1": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00, "2": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00, "3": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00, "4": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00, "5": [0,0], [0,0], 0, 0.000000e+00, 0.000000e+00, 0.000000e+00}>, handshake.name = "mem_controller0"} :    (!handshake.channel<i32>, !handshake.channel<i3>, !handshake.channel<i3>, !handshake.channel<i32>) -> !handshake.channel<i32>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:24:10: warning: TimingDatabase::getLatency: no timing model for op
    %3 = constant %0#2 {handshake.bb = 0 : ui32, handshake.name = "constant3", value = 1 : i32} : <>, <i32>
         ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:24:10: note: see current operation: %3 = handshake.constant %0#2 {handshake.bb = 0 : ui32, handshake.name = "constant3", value = 1 : i32} : <>, <i32>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:25:10: warning: TimingDatabase::getLatency: no timing model for op
    %4 = source {handshake.bb = 0 : ui32, handshake.name = "source0"} : <>
         ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:25:10: note: see current operation: %4 = handshake.source {handshake.bb = 0 : ui32, handshake.name = "source0"} : <>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:26:10: warning: TimingDatabase::getLatency: no timing model for op
    %5 = source {handshake.bb = 0 : ui32, handshake.name = "source1"} : <>
         ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:26:10: note: see current operation: %5 = handshake.source {handshake.bb = 0 : ui32, handshake.name = "source1"} : <>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:27:10: warning: TimingDatabase::getLatency: no timing model for op
    %6 = constant %5 {handshake.bb = 0 : ui32, handshake.name = "constant1", value = 0 : i32} : <>, <i32>
         ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:27:10: note: see current operation: %6 = handshake.constant %5 {handshake.bb = 0 : ui32, handshake.name = "constant1", value = 0 : i32} : <>, <i32>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:29:10: warning: TimingDatabase::getLatency: no timing model for op
    %8 = extui %7 {handshake.bb = 0 : ui32, handshake.name = "extui1"} : <i3> to <i16>
         ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:29:10: note: see current operation: %8 = handshake.extui %7 {handshake.bb = 0 : ui32, handshake.name = "extui1"} : <i3> to <i16>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:31:11: warning: TimingDatabase::getLatency: no timing model for op
    %10 = trunci %9 {handshake.bb = 0 : ui32, handshake.name = "trunci1"} : <i16> to <i3>
          ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:31:11: note: see current operation: %10 = handshake.trunci %9 {handshake.bb = 0 : ui32, handshake.name = "trunci1"} : <i16> to <i3>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:33:11: warning: TimingDatabase::getLatency: no timing model for op
    %11 = constant %0#0 {handshake.bb = 0 : ui32, handshake.name = "constant5", value = 0 : i3} : <>, <i3>
          ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:33:11: note: see current operation: %11 = handshake.constant %0#0 {handshake.bb = 0 : ui32, handshake.name = "constant5", value = 0 : i3} : <>, <i3>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:35:11: warning: TimingDatabase::getLatency: no timing model for op
    %12 = source {handshake.bb = 0 : ui32, handshake.name = "source2"} : <>
          ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:35:11: note: see current operation: %12 = handshake.source {handshake.bb = 0 : ui32, handshake.name = "source2"} : <>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:36:11: warning: TimingDatabase::getLatency: no timing model for op
    %13 = source {handshake.bb = 0 : ui32, handshake.name = "source3"} : <>
          ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:36:11: note: see current operation: %13 = handshake.source {handshake.bb = 0 : ui32, handshake.name = "source3"} : <>
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:37:11: warning: TimingDatabase::getLatency: no timing model for op
    %14 = source {handshake.bb = 0 : ui32, handshake.name = "source4"} : <>
          ^
/home/mboeck/dynamatic/build/bin/bug155/out/comp/handshake_transformed.mlir:37:11: note: see current operation: %14 = handshake.source {handshake.bb = 0 : ui32, handshake.name = "source4"} : <>
The model is infeasible!
[FATAL] Failed to place smart buffers

Metadata

Metadata

Assignees

No one assigned

    Labels

    compiler-crashThe given code causes the compiler to crashfuzzer-foundBugs found using an automated fuzzer

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions