Advertisement
Guest User

Top.cpp commented

a guest
Nov 28th, 2014
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.98 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. ////////////////////////////////////////////////////////////////////
  5. // Part 1 : Include files                                         //
  6. ////////////////////////////////////////////////////////////////////
  7.  
  8. // MIPS est une architecture pour système embarqué.
  9. // Ce fichier .h correspond donc à un ensemble de macros pour cette architecture particulière.
  10. #include "mips32.h"
  11.  
  12. // VCI Protocole qui permet d’échanger des données entre plusieurs composant par le biai du bus de données.
  13. // Ce fichier sert donc à la définition de VciXcacheWrapper qui sert à gérer le cache du protocole VCI.
  14. #include "vci_xcache_wrapper.h"
  15.  
  16.  
  17. #include "mapping_table.h"
  18.  
  19. #include "vci_ram.h"
  20. #include "vci_multi_tty.h"
  21. #include "vci_vgmn.h"
  22.  
  23. #include "segmentation.h"
  24.  
  25. int _main(int argc, char *argv[])
  26. {
  27.     using namespace sc_core;
  28.     // Avoid repeating these everywhere
  29.     using soclib::common::IntTab;
  30.     using soclib::common::Segment;
  31.  
  32.         ////////////////////////////////////////////////////////////////////
  33.         // Part 2 : Mapping table                                         //
  34.         ////////////////////////////////////////////////////////////////////
  35.  
  36.     // Define our VCI parameters
  37.     typedef soclib::caba::VciParams<4,9,32,1,1,1,8,1,1,1> vci_param;
  38.  
  39.     // Mapping table
  40.  
  41.     soclib::common::MappingTable maptab(32, IntTab(8), IntTab(8), 0x00300000);
  42.  
  43.     maptab.add(Segment("reset", RESET_BASE, RESET_SIZE, IntTab(0), false));
  44.     maptab.add(Segment("excep", EXCEP_BASE, EXCEP_SIZE, IntTab(0), false));
  45.     maptab.add(Segment("text" , TEXT_BASE , TEXT_SIZE , IntTab(0), false));
  46.     maptab.add(Segment("data" , DATA_BASE , DATA_SIZE , IntTab(0), false));
  47.  
  48.     maptab.add(Segment("tty"  , TTY_BASE  , TTY_SIZE  , IntTab(1), false));
  49.  
  50.         ////////////////////////////////////////////////////////////////////
  51.         // Part 3 : signals                                               //
  52.         ////////////////////////////////////////////////////////////////////
  53.  
  54.     sc_clock    signal_clk("signal_clk");
  55.     sc_signal<bool> signal_resetn("signal_resetn");
  56.  
  57.     sc_signal<bool> signal_mips0_it0("signal_mips0_it0");
  58.     sc_signal<bool> signal_mips0_it1("signal_mips0_it1");
  59.     sc_signal<bool> signal_mips0_it2("signal_mips0_it2");
  60.     sc_signal<bool> signal_mips0_it3("signal_mips0_it3");
  61.     sc_signal<bool> signal_mips0_it4("signal_mips0_it4");
  62.     sc_signal<bool> signal_mips0_it5("signal_mips0_it5");
  63.  
  64.     sc_signal<bool> signal_tty_irq0("signal_tty_irq0");
  65.  
  66.     soclib::caba::VciSignals<vci_param> signal_vci_m0("signal_vci_m0");
  67.  
  68.     soclib::caba::VciSignals<vci_param> signal_vci_vcimultiram0("signal_vci_vcimultiram0");
  69.     soclib::caba::VciSignals<vci_param> signal_vci_tty("signal_vci_tty");
  70.  
  71.  
  72.         ////////////////////////////////////////////////////////////////////
  73.         // Part 4 : instances                                             //
  74.         ////////////////////////////////////////////////////////////////////
  75.  
  76.     soclib::caba::VciXcacheWrapper<vci_param, soclib::common::Mips32ElIss > cache0("cache0", 0, maptab,IntTab(0), 4,1,8, 4,1,8);
  77.  
  78.     soclib::common::Loader loader("soft/bin.soft");
  79.     soclib::caba::VciRam<vci_param> vcimultiram0("vcimultiram0", IntTab(0), maptab, loader);
  80.     soclib::caba::VciMultiTty<vci_param> vcitty("vcitty",   IntTab(1), maptab, "vcitty0", NULL);
  81.  
  82.     soclib::caba::VciVgmn<vci_param> vgmn("vgmn",maptab, 1, 2, 2, 8);
  83.  
  84.         ////////////////////////////////////////////////////////////////////
  85.         // Part 5 : netlist                                               //
  86.         ////////////////////////////////////////////////////////////////////
  87.  
  88.     cache0.p_clk(signal_clk);
  89.     cache0.p_resetn(signal_resetn);
  90.     cache0.p_irq[0](signal_mips0_it0);
  91.     cache0.p_irq[1](signal_mips0_it1);
  92.     cache0.p_irq[2](signal_mips0_it2);
  93.     cache0.p_irq[3](signal_mips0_it3);
  94.     cache0.p_irq[4](signal_mips0_it4);
  95.     cache0.p_irq[5](signal_mips0_it5);
  96.     cache0.p_vci(signal_vci_m0);
  97.  
  98.     vcimultiram0.p_clk(signal_clk);
  99.     vcimultiram0.p_resetn(signal_resetn);
  100.     vcimultiram0.p_vci(signal_vci_vcimultiram0);
  101.  
  102.     vcitty.p_clk(signal_clk);
  103.     vcitty.p_resetn(signal_resetn);
  104.     vcitty.p_irq[0](signal_tty_irq0);
  105.     vcitty.p_vci(signal_vci_tty);
  106.  
  107.     vgmn.p_clk(signal_clk);
  108.     vgmn.p_resetn(signal_resetn);
  109.     vgmn.p_to_initiator[0](signal_vci_m0);
  110.     vgmn.p_to_target[0](signal_vci_vcimultiram0);
  111.     vgmn.p_to_target[1](signal_vci_tty);
  112.  
  113.     sc_start(sc_core::sc_time(0, SC_NS));
  114.     signal_resetn = false;
  115.     sc_start(sc_core::sc_time(1, SC_NS));
  116.     signal_resetn = true;
  117.  
  118.         ////////////////////////////////////////////////////////////////////
  119.         // Part 6 : simulate                                              //
  120.         ////////////////////////////////////////////////////////////////////
  121.  
  122.     sc_start();
  123.     return EXIT_SUCCESS;
  124. }
  125.  
  126. int sc_main (int argc, char *argv[])
  127. {
  128.     try {
  129.         return _main(argc, argv);
  130.     } catch (std::exception &e) {
  131.         std::cout << e.what() << std::endl;
  132.     } catch (...) {
  133.         std::cout << "Unknown exception occured" << std::endl;
  134.         throw;
  135.     }
  136.     return 1;
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement