Advertisement
Guest User

top.cc timer

a guest
Nov 28th, 2014
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.95 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. ////////////////////////////////////////////////////////////////////
  5. // Part 1 : Include files                                         //
  6. ////////////////////////////////////////////////////////////////////
  7.  
  8. #include "mips32.h"
  9. #include "vci_xcache_wrapper.h"
  10. #include "vci_xicu.h"
  11. #include "vci_vgmn.h"
  12. #include "vci_ram.h"
  13. #include "vci_rom.h"
  14. #include "mapping_table.h"
  15. #include "vci_multi_tty.h"
  16.  
  17.  
  18. int _main(int argc, char *argv[])
  19. {
  20.     using namespace sc_core;
  21.     // Avoid repeating these everywhere
  22.     using soclib::common::IntTab;
  23.     using soclib::common::Segment;
  24.         typedef soclib::common::Mips32ElIss Processor;
  25.  
  26.     // Define our VCI parameters
  27.     typedef soclib::caba::VciParams<4,9,32,1,1,1,8,1,1,1> vci_param;
  28.  
  29.  
  30.         ////////////////////////////////////////////////////////////////////
  31.         // Part 2 : Mapping table                                         //
  32.         ////////////////////////////////////////////////////////////////////
  33.  
  34.     soclib::common::MappingTable maptab(32, IntTab(8), IntTab(8), 0xf0000000);
  35.     maptab.add(Segment("xicu",   0xd2200000, 0x00001000, IntTab(3), false));
  36.         maptab.add(Segment("tty",    0xd0200000, 0x00000040, IntTab(2), false));
  37.         maptab.add(Segment("ram",   0x70000000, 0x00100000, IntTab(1), false));
  38.     maptab.add(Segment("bootrom",   0xbfc00000, 0x00001000, IntTab(0), false));
  39.         maptab.add(Segment("datarom",   0x60000000, 0x00100000, IntTab(0), false));
  40.  
  41.         ////////////////////////////////////////////////////////////////////
  42.         // Part 3 : signals                                               //
  43.         ////////////////////////////////////////////////////////////////////
  44.  
  45.     sc_clock    signal_clk("signal_clk");
  46.     sc_signal<bool> signal_resetn("signal_resetn");
  47.         sc_signal<bool> signal_cpu_it[Processor::n_irq];
  48.     sc_signal<bool> signal_tty_irq0("signal_tty_irq0");
  49.  
  50.     soclib::caba::VciSignals<vci_param> signal_vci_proc("signal_vci_proc");
  51.     soclib::caba::VciSignals<vci_param> signal_vci_xicu("signal_vci_xicu");
  52.     soclib::caba::VciSignals<vci_param> signal_vci_tty("signal_vci_tty");
  53.     soclib::caba::VciSignals<vci_param> signal_vci_ram("signal_vci_ram");
  54.     soclib::caba::VciSignals<vci_param> signal_vci_rom("signal_vci_rom");
  55.  
  56.         ////////////////////////////////////////////////////////////////////
  57.         // Part 4 : instances                                             //
  58.         ////////////////////////////////////////////////////////////////////
  59.  
  60.     soclib::common::Loader loader("mutekh/kernel-soclib-mips32el.out");
  61.     soclib::caba::VciXcacheWrapper<vci_param, Processor> cpu("cpu", 0, maptab, IntTab(0), 1, 8, 4, 1, 8, 4);
  62.     soclib::caba::VciXicu<vci_param> vcixicu("vcixicu", maptab, IntTab(3), 4, 0, 0, 1);
  63.     soclib::caba::VciMultiTty<vci_param> vcitty("vcitty",   IntTab(2), maptab, "vcitty0", NULL);
  64.     soclib::caba::VciRam<vci_param> ram("ram", IntTab(1), maptab, loader);
  65.     soclib::caba::VciRom<vci_param> rom("rom", IntTab(0), maptab, loader);
  66.     soclib::caba::VciVgmn<vci_param> vgmn("vgmn", maptab, 1, 4, 2, 8);
  67.  
  68.         ////////////////////////////////////////////////////////////////////
  69.         // Part 5 : netlist                                               //
  70.         ////////////////////////////////////////////////////////////////////
  71.  
  72.     cpu.p_clk(signal_clk);
  73.     cpu.p_resetn(signal_resetn);
  74.         for ( size_t irq=0; irq<Processor::n_irq; ++irq )
  75.           cpu.p_irq[irq](signal_cpu_it[irq]);
  76.     cpu.p_vci(signal_vci_proc);
  77.  
  78.     vcixicu.p_clk(signal_clk);
  79.     vcixicu.p_resetn(signal_resetn);
  80.     vcixicu.p_vci(signal_vci_xicu);
  81.     vcixicu.p_irq[0](signal_cpu_it[0]);
  82.  
  83. //sc_trace_file * my_trace_file;
  84. //my_trace_file = sc_create_vcd_trace_file("system_trace");
  85. //sc_trace(my_trace_file, signal_vci_xicu, "test");
  86.  
  87.     rom.p_clk(signal_clk);
  88.     rom.p_resetn(signal_resetn);
  89.     rom.p_vci(signal_vci_rom);
  90.  
  91.     ram.p_clk(signal_clk);
  92.     ram.p_resetn(signal_resetn);
  93.     ram.p_vci(signal_vci_ram);
  94.  
  95.     vcitty.p_clk(signal_clk);
  96.     vcitty.p_resetn(signal_resetn);
  97.     vcitty.p_vci(signal_vci_tty);
  98.         vcitty.p_irq[0](signal_tty_irq0);
  99.  
  100.     vgmn.p_clk(signal_clk);
  101.     vgmn.p_resetn(signal_resetn);
  102.     vgmn.p_to_initiator[0](signal_vci_proc);
  103.     vgmn.p_to_target[0](signal_vci_rom);
  104.     vgmn.p_to_target[1](signal_vci_ram);
  105.     vgmn.p_to_target[2](signal_vci_tty);
  106.     vgmn.p_to_target[3](signal_vci_xicu);
  107.  
  108.     sc_start(sc_core::sc_time(0, SC_NS));
  109.     signal_resetn = false;
  110.     sc_start(sc_core::sc_time(1, SC_NS));
  111.     signal_resetn = true;
  112.  
  113.         ////////////////////////////////////////////////////////////////////
  114.         // Part 6 : simulate                                              //
  115.         ////////////////////////////////////////////////////////////////////
  116.  
  117.     sc_start();
  118.     return EXIT_SUCCESS;
  119. }
  120.  
  121. int sc_main (int argc, char *argv[])
  122. {
  123.     try {
  124.         return _main(argc, argv);
  125.     } catch (std::exception &e) {
  126.         std::cout << e.what() << std::endl;
  127.     } catch (...) {
  128.         std::cout << "Unknown exception occured" << std::endl;
  129.         throw;
  130.     }
  131.     return 1;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement