OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_47/] [or1ksim/] [cuc/] [timings.c] - Diff between revs 932 and 997

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 932 Rev 997
Line 74... Line 74...
    }
    }
    d[i] = md + insn_time (&bb->insn[i]);
    d[i] = md + insn_time (&bb->insn[i]);
    if (d[i] > max_d) max_d = d[i];
    if (d[i] > max_d) max_d = d[i];
  }
  }
  free (d);
  free (d);
  //printf ("max_d%i=%f\n", b, max_d);
  //PRINTF ("max_d%i=%f\n", b, max_d);
  return max_d;
  return max_d;
}
}
 
 
/* Calculates memory delay of a single run of a basic block */
/* Calculates memory delay of a single run of a basic block */
static int memory_delay (cuc_func *f, int b)
static int memory_delay (cuc_func *f, int b)
Line 93... Line 93...
      } else if (f->mtype[i] & MT_LOAD) {
      } else if (f->mtype[i] & MT_LOAD) {
        if (!(f->mtype[i] & MT_BURST) || f->mtype[i] & MT_BURSTE) d += runtime.cuc.mdelay[0];
        if (!(f->mtype[i] & MT_BURST) || f->mtype[i] & MT_BURSTE) d += runtime.cuc.mdelay[0];
        else d += runtime.cuc.mdelay[1];
        else d += runtime.cuc.mdelay[1];
      }
      }
    }
    }
  //printf ("md%i=%i\n", b, d);
  //PRINTF ("md%i=%i\n", b, d);
  return d;
  return d;
}
}
 
 
/* Cuts the tree and marks registers */
/* Cuts the tree and marks registers */
void cut_tree (cuc_func *f, int b, double sd)
void cut_tree (cuc_func *f, int b, double sd)
Line 127... Line 127...
            if (t > md) md = t;
            if (t > md) md = t;
          }
          }
        }
        }
      }
      }
    }
    }
    //printf ("%2x md%.1f ", i, md);
    //PRINTF ("%2x md%.1f ", i, md);
    md += insn_time (&bb->insn[i]);
    md += insn_time (&bb->insn[i]);
    //printf ("md%.1f mg%i %.1f\n", md, mg, sd);
    //PRINTF ("md%.1f mg%i %.1f\n", md, mg, sd);
    bb->insn[i].tmp = mg;
    bb->insn[i].tmp = mg;
    if (md > sd) {
    if (md > sd) {
      bb->insn[i].type |= IT_CUT;
      bb->insn[i].type |= IT_CUT;
      if (md > runtime.cuc.cycle_duration)
      if (md > runtime.cuc.cycle_duration)
        log ("WARNING: operation t%x_%x may need to be registered inbetween\n", b, i);
        log ("WARNING: operation t%x_%x may need to be registered inbetween\n", b, i);
Line 277... Line 277...
      }
      }
    assert (index <= II_LAST);
    assert (index <= II_LAST);
    i = index;
    i = index;
    if (fscanf (fi, "%lf%lf%lf%lf\n", &timing_table[i].size,
    if (fscanf (fi, "%lf%lf%lf%lf\n", &timing_table[i].size,
                &timing_table[i].sizei, &timing_table[i].delay, &timing_table[i].delayi) != 4) break;
                &timing_table[i].sizei, &timing_table[i].delay, &timing_table[i].delayi) != 4) break;
    /*printf ("!%s size %f,%f delay %f,%f\n", known[i].name, timing_table[i].size,
    /*PRINTF ("!%s size %f,%f delay %f,%f\n", known[i].name, timing_table[i].size,
                    timing_table[i].sizei, timing_table[i].delay, timing_table[i].delayi);*/
                    timing_table[i].sizei, timing_table[i].delay, timing_table[i].delayi);*/
  }
  }
 
 
  /* Was everything initialized? */
  /* Was everything initialized? */
  for (i = 0; i <= II_LAST; i++) {
  for (i = 0; i <= II_LAST; i++) {
    assert (timing_table[i].size >= 0 && timing_table[i].sizei >= 0
    assert (timing_table[i].size >= 0 && timing_table[i].sizei >= 0
     && timing_table[i].delay >= 0 && timing_table[i].delayi >= 0);
     && timing_table[i].delay >= 0 && timing_table[i].delayi >= 0);
    /*printf ("%s size %f,%f delay %f,%f\n", known[i], timing_table[i].size,
    /*PRINTF ("%s size %f,%f delay %f,%f\n", known[i], timing_table[i].size,
                    timing_table[i].sizei, timing_table[i].delay, timing_table[i].delayi);*/
                    timing_table[i].sizei, timing_table[i].delay, timing_table[i].delayi);*/
  }
  }
 
 
  fclose (fi);
  fclose (fi);
}
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.