source: trunk/softs/test_llsc/scripts/test_llsc.py @ 778

Last change on this file since 778 was 571, checked in by meunier, 11 years ago

Correction of the "double barrier" problem from the user point of view for the generated llsc tests (use of 2 distinct barriers)

  • Property svn:executable set to *
File size: 3.0 KB
Line 
1#!/usr/bin/env python
2
3import sys
4import dsx
5from tsarch import TSArch
6from dsx.mapper.mapper import Mapper
7from dsx import *
8
9
10
11if len(sys.argv) < 4 or sys.argv[1] == '' or sys.argv[2] == '':
12   print "Usage: ", sys.argv[0], "<nb_clusters_x> <nb_clusters_y> <memspace_size>"
13   exit()
14
15cluster_x = int(sys.argv[1])
16cluster_y = int(sys.argv[2])
17memspace_size = int(sys.argv[3]) * 4
18
19nb_procs = 4
20nb_total_procs = nb_procs * cluster_x * cluster_y
21
22hd = TSArch(cluster_x = cluster_x, cluster_y = cluster_y, nb_proc = nb_procs, nb_tty = 4)
23
24test_llsc = TaskModel(
25        'test_llsc_main',
26        ports = {
27            'table':   MemspacePort(),
28            'barrier': BarrierPort(),
29            'barrier2': BarrierPort(),
30        },
31        impls = [
32                SwTask('test_llsc_main_func',
33                           stack_size = 2048,
34                           sources = ['test_llsc_main.c', 'functions.c'],
35                           headers = ['functions.h'],
36                           defines = [])
37        ], 
38        uses = ['tty']
39        )
40
41
42test_llsc_no_tty = TaskModel(
43        'test_llsc_no_tty',
44        ports = {
45            'table':   MemspacePort(),
46            'barrier': BarrierPort(),
47            'barrier2': BarrierPort(),
48            'id' : ConstPort(),
49        },
50        impls = [
51                SwTask('test_llsc_no_tty_func',
52                           stack_size = 2048,
53                           sources = ['test_llsc_no_tty.c', 'functions.c'],
54                           headers = ['functions.h'],
55                           defines = [])
56        ],
57        )
58 
59
60barrier = Barrier('barrier')
61barrier2 = Barrier('barrier2')
62memspace = Memspace('memspace', memspace_size)
63
64tasks = ()
65
66
67tasks += Task('task_llsc_main', 'test_llsc_main',
68            {
69               'table'   : memspace,
70               'barrier' : barrier,
71               'barrier2' : barrier2,
72            },
73            defines = {} ),
74
75
76for i in range(1, nb_total_procs):
77   tasks += Task('task_llsc_no_tty_%d' % i, 'test_llsc_no_tty',
78            {
79               'table'   : memspace,
80               'barrier' : barrier,
81               'barrier2' : barrier2,
82               'id' : i,
83            },
84            defines = {} ),
85
86tcg = dsx.Tcg('test_llsc', *tasks)
87
88mpr = Mapper(hd, tcg) 
89
90mpr.map('task_llsc_main', cluster = 0, proc = 0, stack = "PSEG_RAM_0")
91
92for i in range(1, nb_total_procs):
93   #print "cluster = %d - proc = %d" % (int(i) / 4, i % 4)
94   mpr.map('task_llsc_no_tty_%d' % i, cluster = int(i) / 4, proc = int(i) % 4, stack = "PSEG_RAM_%d" % (int(i) / 4))
95
96for const in tcg.nodesOfType('const'):
97   mpr.map(const, pseg = 'PSEG_RAM_0')
98
99
100mpr.map('memspace', pseg = "PSEG_RAM_0")
101mpr.map('barrier', pseg = "PSEG_RAM_0")
102mpr.map('barrier2', pseg = "PSEG_RAM_0")
103
104mpr.map(tcg, code = 'PSEG_RAM_0', data = 'PSEG_RAM_0', ptab = "PSEG_RAM_0")
105mpr.map('system', boot = 'PSEG_RAM_0', kernel = 'PSEG_RAM_0', scheduler = True)
106
107mpr.generate(dsx.Giet(outdir = '.', vaddr_replicated_peri_inc = 0x2000, debug = False))
108
Note: See TracBrowser for help on using the repository browser.