source: soft/giet_vm/applications/coproc/coproc.py @ 671

Last change on this file since 671 was 610, checked in by alain, 10 years ago

Rename the path to .elf file in the "appli.py" files,
because the "build" directory has been renamed to "bin" on virtual disk.

  • Property svn:executable set to *
File size: 3.1 KB
RevLine 
[533]1#!/usr/bin/env python
2
3from mapping import *
4
5##################################################################################
[589]6#   file   : coproc.py 
[533]7#   date   : march 2015
8#   author : Alain Greiner
9##################################################################################
10#  This file describes the mapping of the single thread "coproc" application.
11#  The main characteristic of this application is to use an hardware coprocessor.
12#  It can run on any processor of a multi-clusters / multi-processors
13#  architecture, as long as it exist a coprocessor in the same cluster as the
14#  calling task.
15#  This mapping uses 5 platform parameters, (obtained from the "mapping" argument)
16#    - x_size    : number of clusters in a row
17#    - y_size    : number of clusters in a column
18#    - x_width   : number of bits coding x coordinate
19#    - y_width   : number of bits coding y coordinate
20#    - nprocs    : number of processors per cluster
21##################################################################################
22
23######################
[589]24def extend( mapping ):
[533]25
26    x_size    = mapping.x_size
27    y_size    = mapping.y_size
28    nprocs    = mapping.nprocs
29    x_width   = mapping.x_width
30    y_width   = mapping.y_width
31
32    # define thread placement
[555]33    x = 0
34    y = 0
[533]35    p = 0
36
37    assert( (x < x_size) and (y < y_size) )
38
39    assert( mapping.clusters[x * y_size + y].procs != 0 )
40
41    # define vsegs base & size
42    code_base  = 0x10000000
43    code_size  = 0x00010000     # 64 Kbytes
44   
45    data_base  = 0x20000000
46    data_size  = 0x00010000     # 64 Kbytes
47
48    stack_base = 0x40000000 
49    stack_size = 0x00200000     # 2 Mbytes
50
51    # create vspace
52    vspace = mapping.addVspace( name = 'coproc', startname = 'coproc_data' )
53   
54    # data vseg in cluster[x,y]
55    mapping.addVseg( vspace, 'coproc_data', data_base , data_size, 
56                     'C_WU', vtype = 'ELF', x = x, y = y, pseg = 'RAM', 
[610]57                     binpath = 'bin/coproc/appli.elf',
[533]58                     local = False )
59
60    # code vseg in cluster[x,y]
61    mapping.addVseg( vspace, 'coproc_code', code_base , code_size,
62                     'CXWU', vtype = 'ELF', x = x, y = y, pseg = 'RAM', 
[610]63                     binpath = 'bin/coproc/appli.elf',
[533]64                     local = False )
65
66    # stack vseg in cluster [x,y]
67    mapping.addVseg( vspace, 'coproc_stack', stack_base, stack_size,
68                     'C_WU', vtype = 'BUFFER', x = x , y = y , pseg = 'RAM',
69                     local = False, big = True )
70
71    # one task on processor[x,y,0]
72    mapping.addTask( vspace, 'coproc', 0 , x , y , 0 ,
73                     'coproc_stack' , '' , 0 )
74
75    # extend mapping name
76    mapping.name += '_coproc'
77
78    return vspace  # useful for test
79           
80################################ test ############################################
81
82if __name__ == '__main__':
83
[589]84    vspace = extend( Mapping( 'test', 2, 2, 4 ) )
[533]85    print vspace.xml()
86
87
88# Local Variables:
89# tab-width: 4;
90# c-basic-offset: 4;
91# c-file-offsets:((innamespace . 0)(inline-open . 0));
92# indent-tabs-mode: nil;
93# End:
94#
95# vim: filetype=python:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
96
Note: See TracBrowser for help on using the repository browser.