source: trunk/IPs/systemC/processor/Morpheo/Script/list_sensitive.sh @ 132

Last change on this file since 132 was 132, checked in by rosiere, 15 years ago

1) add constant method - compatibility with SystemC
2) add Script to test sensitive list
3) fix bug in sensitive list

  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 2.9 KB
Line 
1#!/bin/bash
2
3#-----------------------------------------------------------
4# $Id: list_sensitive.sh 132 2009-07-11 16:39:35Z rosiere $
5#-----------------------------------------------------------
6declare path;
7declare path_src;
8declare entity;
9declare _path_src="src";
10declare remove_comments="${MORPHEO_SCRIPT}/remove_comments.sed"
11
12#-----[ usage ]---------------------------------------------
13function usage ()
14{
15    echo "Usage     : ${0}";
16
17    exit;
18}
19
20#-----[ test_usage ]----------------------------------------
21function test_usage ()
22{
23    if test -z "${MORPHEO_SCRIPT}"; then
24        echo "Environment variable MORPHEO_SCRIPT is not set";
25        distexe_usage;
26    fi;
27
28    if test ! -d ${path_src}; then
29        echo "Directory ${path_src} don't exist";
30        usage ${*};
31    fi;
32}
33
34#-----[ list_sensitive ]------------------------------------
35function list_sensitive ()
36{
37    path=${PWD};
38    path_src=${path}/${_path_src};
39    entity=$(basename ${path});
40
41    test_usage ${*};
42
43    echo "  * ${entity}";
44
45    # 1) Erase comment
46    # 2) Erase all newline
47    # 3) Add newline before each SC_METHOD
48    # 4) Replace all tab by space
49    # 5) Erase all space
50
51    export file1=${path_src}/${entity}.cpp;
52
53    sc_methods=$(sed -f ${remove_comments} ${file1}  | tr -d '\n' |sed s/SC_METHOD/\\nSC_METHOD/g |sed s/\\t/\ /g | sed s/\ //g | grep SC_METHOD)
54
55    for sc_method in ${sc_methods}; do
56        method=$(echo ${sc_method} |sed s/SC_METHOD\(//g |cut -d ')' -f 1);
57        echo "    * ${method}";
58
59        file2=${path_src}/${entity}_${method}.cpp;
60
61        #  1) erase comment
62        #  2) Replace all tab by space
63        #  3) Erase all space
64        #  4) add a previous newline before each port_read.
65        #  5) add an space before each )
66        #  6) replace all space by an newline
67        #  7) grep PORT_READ(
68        #  8) replace PORT_READ( by nothing
69        #  9) erase array
70        # 10) sort
71        # 11) erase duplicate port
72        ports_read=$(sed -f ${remove_comments} ${file2} |sed s/\\t/\ /g | sed s/\ //g | sed s/PORT_READ/\\nPORT_READ/g | sed s/\)/\ /g | sed s/\ /\\n/g | grep PORT_READ | sed s/PORT_READ\(//g |cut -d '[' -f 1 |sort |uniq);
73
74        # 1) add space before (*(
75        list_sensitives=$(echo ${sc_method} |sed s/\(\\*\(/\\n/g);
76        list_sensitive="";
77
78        local -i first=1;
79        for sensitive in ${list_sensitives}; do
80            if test ${first} -eq 0; then
81                signal=$(echo ${sensitive} |cut -d '[' -f 1 |cut -d ')' -f 1);
82
83                list_sensitive=${list_sensitive}" "${signal};
84
85#               echo -n "    * ${signal}";
86
87#               if test $(echo ${ports_read} | grep -c ${signal}) -eq 0; then
88#                   echo "    * ${signal} in sensitive list, not in file";
89##              else
90##                  echo " ... OK";
91#               fi;
92            else
93                first=0;
94            fi;
95        done;
96
97        if test "${method}" != "transition" -a "${method}" != "constant" ; then
98            for port in ${ports_read}; do
99                if test $(echo ${list_sensitive} | grep -c ${port}) -eq 0; then
100                    echo "      * ${port} in file, not in sensitive list";
101                fi;
102            done;
103        fi;
104
105    done;
106}
107
108#-----[ Corps ]---------------------------------------------
109list_sensitive ${*};
Note: See TracBrowser for help on using the repository browser.