lana555 / dynamatic

MIT License
86 stars 38 forks source link

Getting `Assertion `entryBB != invalidDataflowID' failed`. #19

Open ealione opened 8 months ago

ealione commented 8 months ago

I am using the provided VM and trying to test the following code:

#include <stdlib.h>
#include <cmath>

# define N 4
#define sincos(t, s, c) *s=sin(t); *c=cos(t)

int christoffel(double dst[4][4][4], double const pos[4])
{
  const double spin_ = 0;
  const double a2_=spin_*spin_;
  int a, mu, nu;
  for (a=0; a<4; ++a)
    for(mu=0; mu<4; ++mu)
      for(nu=0; nu<4; ++nu)
    dst[a][mu][nu]=0.;

  double r = pos[1];
  double sth, cth;
  sincos(pos[2], &sth, &cth);
  double
    sth2 = sth*sth, cth2 = cth*cth, sth4=sth2*sth2,
    s2th = 2.*sth*cth, c2th=cth2-sth2,
    s4th = 2.*s2th*c2th,
    s2th2= s2th*s2th, ctgth=cth/sth;
  double r2=r*r, r4=r2*r2, r6=r4*r2;
  double Sigma=r2+a2_*cth2, Sigma2=Sigma*Sigma;
  double Delta=r2-2.*r+a2_;
  double Deltam1=1./Delta,
    Sigmam1=1./Sigma,
    Sigmam2=Sigmam1*Sigmam1,
    Sigmam3=Sigmam2*Sigmam1,
    a2cthsth=a2_*cth*sth,
    rSigmam1=r*Sigmam1,
    Deltam1Sigmam2=Deltam1*Sigmam2,
    r2plusa2 = r2+a2_;
  dst[1][1][1]=(1.-r)*Deltam1+rSigmam1;
  dst[1][2][1]=dst[1][1][2]=-a2cthsth*Sigmam1;
  dst[1][2][2]=-Delta*rSigmam1;
  dst[1][3][3]=-Delta*sth2*(r+(a2_*(-2.*r2+Sigma)*sth2)/Sigma2)/Sigma;
  dst[1][3][0]=dst[1][0][3]=spin_*Delta*(-2*r2+Sigma)*sth2*Sigmam3;
  dst[1][0][0]=-Delta*(-2.*r2+Sigma)*Sigmam3;
  dst[2][1][1]=a2cthsth*Deltam1*Sigmam1;
  dst[2][2][1]=dst[2][1][2]=rSigmam1;
  dst[2][2][2]=-a2cthsth*Sigmam1;
  dst[2][3][3]=
    -sth*cth*Sigmam3 * (Delta*Sigma2 + 2.*r*r2plusa2*r2plusa2);
  dst[2][0][3]=dst[2][3][0]=spin_*r*r2plusa2*s2th*Sigmam3;
  dst[2][0][0]=-2.*a2cthsth*r*Sigmam3;
  dst[3][3][1]=dst[3][1][3]=
    Deltam1*Sigmam2 * (r*Sigma*(Sigma-2.*r) + a2_*(Sigma-2.*r2)*sth2);
  dst[3][3][2]=dst[3][2][3]=
    Sigmam2*ctgth * (-(Sigma+Delta)*a2_*sth2 + r2plusa2*r2plusa2);
  dst[3][0][1]=dst[3][1][0]=spin_*(2.*r2-Sigma)*Deltam1Sigmam2;
  dst[3][0][2]=dst[3][2][0]=-2.*spin_*r*ctgth*Sigmam2;
  dst[0][3][1]=dst[0][1][3]=
    -spin_*sth2*Deltam1Sigmam2 * (2.*r2*r2plusa2 + Sigma*(r2-a2_));
  dst[0][3][2]=dst[0][2][3]=Sigmam2*spin_*a2_*r*sth2*s2th;
  dst[0][0][1]=dst[0][1][0]=(a2_+r2)*(2.*r2-Sigma)*Deltam1Sigmam2;
  dst[0][0][2]=dst[0][2][0]=-a2_*r*s2th*Sigmam2;

  return 0;
} 

int main ( void )
{
    double pos[N]; // Random position array
        double dst[4][4][4]; // Output array
    for ( int indx = 0; indx < N ; indx ++ )
    {
        pos[indx] = rand() % 100;
    }
    christoffel(dst, pos);
    return 0;
}

using this synthesis script:

set_project .
set_top_file main.cpp
set_period 15.0
analyze
elaborate
synthesize
optimize
write_hdl
exit

I am getting the following error though:

Adding elastic buffers with period=15 and buffer_delay=0

======================
ADDING ELASTIC BUFFERS
======================
Extracting marked graphs
buffers: src/DFnetlsit_BasicBlocks.cpp:269: bool Dataflow::BasicBlockGraph::calculateBackArcs(): Assertion `entryBB != invalidDataflowID' failed.
Aborted (core dumped)

mv: cannot stat './reports/main_elaborated_graph_buf.dot': No such file or directory
Error: dot: can't open ./reports/main_elaborated_optimized.dot
Done 
Write hdl
write_hdl  . ./reports/main_elaborated_optimized

Is there some obvious error on my part, or a way to get more information on what's going on?