Ejemplo n.º 1
0
int sc_main(int ac, char *av[])
{

  //!  ISA simulator
  mips mips_proc1("mips");

#ifdef AC_DEBUG
  ac_trace("mips_proc1.trace");
#endif 

  mips_proc1.init(ac, av);
  cerr << endl;

  sc_start();

  mips_proc1.PrintStat();
  cerr << endl;

#ifdef AC_STATS
  ac_stats_base::print_all_stats(std::cerr);
#endif 

#ifdef AC_DEBUG
  ac_close_trace();
#endif 

  return mips_proc1.ac_exit_status;
}
Ejemplo n.º 2
0
int sc_main(int ac, char *av[])
{

  //!  ISA simulator
  mips mips_proc1("mips");
  //! Bus
  ac_tlm_bus bus("bus");
  // Memory
  ac_tlm_mem mem("mem");

#ifdef AC_DEBUG
  ac_trace("mips1_proc1.trace");
#endif 

  mips_proc1.DM(bus.target_export);
  bus.MEM_port(mem.target_export);

  mips_proc1.init(ac, av);
  mips_proc1.set_prog_args();
  cerr << endl;

  sc_start();

  mips_proc1.PrintStat();
  cerr << endl;

#ifdef AC_STATS
  mips1_proc1.ac_sim_stats.time = sc_simulation_time();
  mips1_proc1.ac_sim_stats.print();
#endif 

#ifdef AC_DEBUG
  ac_close_trace();
#endif 

  return mips_proc1.ac_exit_status;
}
Ejemplo n.º 3
0
int sc_main(int ac, char *av[])
{

  //!  ISA simulator
  // adicionados novos processadores
  mips mips1_proc1("mips1");
  mips mips2_proc2("mips2");
  mips mips3_proc3("mips3");
  mips mips4_proc4("mips4");
  mips mips5_proc5("mips5");
  mips mips6_proc6("mips6");
  mips mips7_proc7("mips7");
  mips mips8_proc8("mips8");
  
  //! Memory
  ac_tlm_mem mem("mem");
  
  
  
  //! Novos modulos do P3
  user::bw_hardware bw("bw_hardware1");
  user::bar_mem bar("bar_mem1");
  user::mutex_token mutex("mutex_token1");
  
  bar.DM_port(mem.target_export);
  bar.BW_port(bw.target_export);
  bar.MUTEX_port(mutex.target_export);
  
  
#ifdef AC_DEBUG
  ac_trace("mips1_proc1.trace");
#endif 
  
  //conecta os processadores no barramento
  mips1_proc1.DM_port(bar.target_export1);
  mips2_proc2.DM_port(bar.target_export2);
  mips3_proc3.DM_port(bar.target_export3);
  mips4_proc4.DM_port(bar.target_export4);
  mips5_proc5.DM_port(bar.target_export5);
  mips6_proc6.DM_port(bar.target_export6);
  mips7_proc7.DM_port(bar.target_export7);
  mips8_proc8.DM_port(bar.target_export8);
  
  char * program = av[1];

  //inicia os processadores
  mips1_proc1.init(ac, av);

  av[1] = program;
  mips2_proc2.init(ac, av);

  av[1] = program;
  mips3_proc3.init(ac, av);

  av[1] = program;
  mips4_proc4.init(ac, av);

  av[1] = program;
  mips5_proc5.init(ac, av);

  av[1] = program;
  mips6_proc6.init(ac, av);

  av[1] = program;
  mips7_proc7.init(ac, av);

  av[1] = program;
  mips8_proc8.init(ac, av);
  
  cerr << endl;

  sc_start();
  
  //imprime o status dos processadores
  mips1_proc1.PrintStat();
  mips2_proc2.PrintStat();
  mips3_proc3.PrintStat();
  mips4_proc4.PrintStat();
  mips5_proc5.PrintStat();
  mips6_proc6.PrintStat();
  mips7_proc7.PrintStat();
  mips8_proc8.PrintStat();
  cerr << endl;

#ifdef AC_STATS
  mips1_proc1.ac_sim_stats.time = sc_simulation_time();
  mips1_proc1.ac_sim_stats.print();
#endif 

#ifdef AC_DEBUG
  ac_close_trace();
#endif 

  return mips1_proc1.ac_exit_status;
}
Ejemplo n.º 4
0
int sc_main(int ac, char *av[])
{

  //!  ISA simulator
  // Cria todos os modulos
  mips1 mips1_proc0("mips0");
  mips1 mips1_proc1("mips1");
  mips1 mips1_proc2("mips2");
  mips1 mips1_proc3("mips3");
  mips1 mips1_proc4("mips4");
  mips1 mips1_proc5("mips5");
  mips1 mips1_proc6("mips6");
  mips1 mips1_proc7("mips7");
  ac_tlm_mem mem("mem");
  ac_tlm_bus bus("bus");
  ac_tlm_mutex mutex("mutex");
  ac_tlm_offload offload("offload");

#ifdef AC_DEBUG
  ac_trace("mips1_proc0.trace");
  ac_trace("mips1_proc1.trace");
  ac_trace("mips1_proc2.trace");
  ac_trace("mips1_proc3.trace");
  ac_trace("mips1_proc4.trace");
  ac_trace("mips1_proc5.trace");
  ac_trace("mips1_proc6.trace");
  ac_trace("mips1_proc7.trace");
#endif 

  // Conecta as CPUs as bus
  mips1_proc0.DM_port(bus.cpu0_target_export);
  mips1_proc1.DM_port(bus.cpu1_target_export);
  mips1_proc2.DM_port(bus.cpu2_target_export);
  mips1_proc3.DM_port(bus.cpu3_target_export);
  mips1_proc4.DM_port(bus.cpu4_target_export);
  mips1_proc5.DM_port(bus.cpu5_target_export);
  mips1_proc6.DM_port(bus.cpu6_target_export);
  mips1_proc7.DM_port(bus.cpu7_target_export);

  // Conecta a bus aos outros modulos
  bus.mem_port(mem.target_export);
  bus.mutex_port(mutex.target_export);
  bus.offload_port(offload.target_export);

  // Gera argc e argv para os processadores

  char **av2 = (char **)malloc(ac*sizeof(char *));
  for(int i = 0; i < ac; i++)
      av2[i] = (char *)malloc(strlen(av[i])*sizeof(char));
  
  avcpy(ac, av2, av);
  mips1_proc0.init(ac, av2);
  avcpy(ac, av2, av);
  mips1_proc1.init(ac, av2);
  avcpy(ac, av2, av);
  mips1_proc2.init(ac, av2);
  avcpy(ac, av2, av);
  mips1_proc3.init(ac, av2);
  avcpy(ac, av2, av);
  mips1_proc4.init(ac, av2);
  avcpy(ac, av2, av);
  mips1_proc5.init(ac, av2);
  avcpy(ac, av2, av);
  mips1_proc6.init(ac, av2);
  avcpy(ac, av2, av);
  mips1_proc7.init(ac, av2);
  cerr << endl;

  sc_start();

  mips1_proc0.PrintStat();
  mips1_proc1.PrintStat();
  mips1_proc2.PrintStat();
  mips1_proc3.PrintStat();
  mips1_proc4.PrintStat();
  mips1_proc5.PrintStat();
  mips1_proc6.PrintStat();
  mips1_proc7.PrintStat();
  cerr << endl;

#ifdef AC_STATS
  mips1_proc0.ac_sim_stats.time = sc_simulation_time();
  mips1_proc0.ac_sim_stats.print();
  mips1_proc1.ac_sim_stats.print();
  mips1_proc2.ac_sim_stats.print();
  mips1_proc3.ac_sim_stats.print();
  mips1_proc4.ac_sim_stats.print();
  mips1_proc5.ac_sim_stats.print();
  mips1_proc6.ac_sim_stats.print();
  mips1_proc7.ac_sim_stats.print();
#endif 

#ifdef AC_DEBUG
  ac_close_trace();
#endif 

  return mips1_proc0.ac_exit_status;
}