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

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

Added a tool which generates tests for the LL/SC table, in the soft/ directory.

  • Property svn:executable set to *
File size: 2.7 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])
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        },
30        impls = [
31                SwTask('test_llsc_main_func',
32                           stack_size = 2048,
33                           sources = ['test_llsc_main.c', 'functions.c'],
34                           headers = ['functions.h'],
35                           defines = [])
36        ], 
37        uses = ['tty']
38        )
39
40
41test_llsc_no_tty = TaskModel(
42        'test_llsc_no_tty',
43        ports = {
44            'table':   MemspacePort(),
45            'barrier': BarrierPort(),
46            'id' : ConstPort(),
47        },
48        impls = [
49                SwTask('test_llsc_no_tty_func',
50                           stack_size = 2048,
51                           sources = ['test_llsc_no_tty.c', 'functions.c'],
52                           headers = ['functions.h'],
53                           defines = [])
54        ],
55        )
56 
57
58barrier = Barrier('barrier')
59memspace = Memspace('memspace', memspace_size)
60
61tasks = ()
62
63
64tasks += Task('task_llsc_main', 'test_llsc_main',
65            {
66               'table'   : memspace,
67               'barrier' : barrier,
68            },
69            defines = {} ),
70
71
72for i in range(1, nb_total_procs):
73   tasks += Task('task_llsc_no_tty_%d' % i, 'test_llsc_no_tty',
74            {
75               'table'   : memspace,
76               'barrier' : barrier,
77               'id' : i,
78            },
79            defines = {} ),
80
81
82
83
84tcg = dsx.Tcg('test_llsc', *tasks)
85
86mpr = Mapper(hd ,tcg) 
87
88mpr.map('task_llsc_main', cluster = 0, proc = 0, stack = "PSEG_RAM_0")
89
90for i in range(1, nb_total_procs):
91   #print "cluster = %d - proc = %d" % (int(i) / 4, i % 4)
92   mpr.map('task_llsc_no_tty_%d' % i, cluster = int(i) / 4, proc = int(i) % 4, stack = "PSEG_RAM_%d" % (int(i) / 4))
93
94for const in tcg.nodesOfType('const'):
95   mpr.map(const, pseg = 'PSEG_RAM_0')
96
97mpr.map('memspace', pseg = "PSEG_RAM_0")
98mpr.map('barrier', pseg = "PSEG_RAM_0")
99
100mpr.map(tcg, code = 'PSEG_RAM_0', data = 'PSEG_RAM_0', ptab = "PSEG_RAM_0")
101mpr.map('system', boot = 'PSEG_ROM', kernel = 'PSEG_RAM_0', scheduler = True)
102
103mpr.generate(dsx.Giet(outdir = '.', vaddr_replicated_peri_inc = 0x100000))
104
Note: See TracBrowser for help on using the repository browser.