Changes between Version 1 and Version 5 of MjpegCourse/VgmnNoirqMono


Ignore:
Timestamp:
Mar 12, 2008, 9:44:21 AM (16 years ago)
Author:
Nicolas Pouillon
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MjpegCourse/VgmnNoirqMono

    v1 v5  
    1 [[Image(vgmn_noirq_mono.png, align=right)]]
     1{{{
     2import soclib
    23
    3 {{{
    4 from dsx.hardware import *
    5 from soclib import *
     4def VgmnNoirqMono():
     5        pf = soclib.Architecture(cell_size = 4,
     6                                                         plen_size = 1,
     7                                                         addr_size = 32,
     8                                                         rerror_size = 1,
     9                                                         clen_size = 1,
     10                                                         rflag_size = 1,
     11                                                         srcid_size = 8,
     12                                                         pktid_size = 1,
     13                                                         trdid_size = 1,
     14                                                         wrplen_size = 1
     15                                                         )
     16        pf.create('common:mapping_table',
     17                          'mapping_table',
     18                          addr_bits = [8],
     19                          srcid_bits = [8],
     20                          cacheability_mask = 0xc00000)
     21        pf.create('common:elf_loader', 'loader')
    622
    7 class VgmnNoirqMono(SoclibGenericArchitecture):
    8   def architecture(self):
    9                
    10 # Définition des segments
    11                
    12     cram0 = Segment("cram0", Cached)
    13     uram0 = Segment("uram0", Uncached)
    14     cram1 = Segment("cram1", __remplir__)
    15     uram1 = Segment("uram1", __remplir__)
    16     reset = Segment("reset", Cached, addr = 0xbfc00000)
    17     excep = Segment("excep", Cached, addr = __remplir__)
    18                
    19 # Instanciation des composants matériels
    20                
    21     vgmn = Vgmn("vgmn",__remplir__)
    22     xcache = Xcache("xcache", __remplir__)
    23     processor = Mips("processor")
    24     tty = MultiTty("tty", __remplir__)
    25     ram0 = MultiRam("ram0", cram0, uram0, excep)
    26     ram1 = MultiRam("ram0", __remplir__)
    27     locks = Locks("locks")
    28                
    29 # Définition de la net-list (connexions)
    30                
    31     processor.cache // xcache.cache
    32     xcache.vci // vgmn.getTarget()
    33     tty.vci // vgmn.getInit()
    34     ram0.vci // __remplir__
    35     ram1.vci // __remplir__
    36     locks.vci // __remplir__
    37     tty.irq[0] // processor.irq[0]
     23        vgmn = pf.create('caba:vci_vgmn', 'vgmn0', *** remplir ***)
    3824
    39 # Construction architecture et creation mapping table
     25        mips = pf.create('caba:iss_wrapper', 'mips0', iss_t='common:mipsel', *** remplir ***)
     26        xcache = pf.create('caba:vci_xcache', 'xcache0',
     27                                           icache_lines = 16,
     28                                           icache_words = 8,
     29                                           dcache_lines = 16,
     30                                           dcache_words = 8)
     31        mips.dcache // xcache.dcache
     32        mips.icache // xcache.icache
    4033
    41     self.setBase(vgmn)
     34        vgmn.to_initiator.new() // xcache.vci
    4235
    43 # Exportation des variables locales
    44  
    45     self.cram0 = cram0
    46     self.uram0 = uram0
    47     self.cram1 = cram1
    48     self.uram1 = uram1
    49     self.reset = reset
    50     self.excep = excep
    51                
    52     self.vgmn = vgmn
    53     self.xcache = xcache
    54     self.processor = processor
    55     self.tty = tty
    56     self.locks = locks
    57     self.ram0 = ram0
    58     self.ram1 = ram1
     36        for i in range(2):
     37                ram = pf.create('caba:vci_ram', 'ram%d'%i)
     38                base = 0x10000000*i+0x10000000
     39                ram.addSegment('cram%d'%i, base, 0x100000, True)
     40                ram.addSegment('uram%d'%i, base + 0x200000, 0x100000, False)
     41                ram.vci // vgmn.to_target.new()
     42        ram.addSegment('boot', *** remplir ***) # Mips boot address, 0x100 octets, cacheable
     43        ram.addSegment('excep', *** remplir ***) # Mips exception address, 0x100 octets, cacheable
    5944
     45        tty = pf.create('caba:vci_multi_tty', 'tty0', names = ['tty0'])
     46        tty.addSegment('tty0', 0x90000000, 0x20, False)
     47        tty.vci // vgmn.to_target.new()
     48
     49        return pf
    6050}}}