29.01.2015 Views

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

270 Chapter 20<br />

reached states than implicit representation methods. But, more importantly,<br />

their per<strong>for</strong>mance is much less problem <strong>de</strong>pen<strong>de</strong>nt than that of BDDs or IDDs.<br />

The main problem of hash tables is the existence of collisions. When the<br />

table is finite, two or more in<strong>de</strong>xes can be mapped to the same table location,<br />

originating a collision. Several solutions can be applied, <strong>de</strong>pending on the<br />

kind of verification that has to be done. Since we need to store all the<br />

generated states, we must discard the use of recent methods such as the bitstate<br />

hashing [3] used in the SPIN tool [9] or hash compaction [10], in which<br />

collisions produce the loss of states. To tackle the collisions we will employ<br />

hash tables with subtables implemented by means of chained lists [6].<br />

5.1. New scheduling algorithm<br />

In our application, the concept of pre<strong>de</strong>cessor no<strong>de</strong> plays a key role. When a<br />

new marking is generated it is important to know whether it is irrelevant, what<br />

<strong>for</strong>ces to keep in<strong>for</strong>mation about its pre<strong>de</strong>cessors.<br />

Thus, it is essential to maintain the scheduling graph structure. In other<br />

words, it is not sufficient to keep a set of previously reached states. On the<br />

contrary, the or<strong>de</strong>r relations among the markings must be stored. Hence, we<br />

still keep the current portion of the reachability graph that constitutes a valid<br />

schedule.<br />

The scheduling algorithm after including the hash table remains basically<br />

the same. The only difference lies in the termination conditions presented in<br />

section 3.3. Now, a new termination criterion must be consi<strong>de</strong>red. The search<br />

will also be stopped whenever a new marking no<strong>de</strong> v has the same marking<br />

as a previously reached no<strong>de</strong> w. In this case the schedule from v will be<br />

i<strong>de</strong>ntical to that from w. Hence no<strong>de</strong> v will be merged to no<strong>de</strong> w.<br />

In the next sections we will <strong>de</strong>vise a process mo<strong>de</strong>l that will allow us to<br />

assess the amount of repeated states. Then we will per<strong>for</strong>m some experiments<br />

to show the practical benefits, in terms of algorithmic complexity reduction,<br />

obtained after the incorporation of the hash tables.<br />

5.2. Mo<strong>de</strong>ling the number of repeated states<br />

Our implementation is based on a hash table with a chaining scheme to handle<br />

the occurrence of collisions. We apply a hash function based on the xor logic<br />

function to the key string that <strong>de</strong>fines each marking. This function is inspired<br />

on that appearing in [1]. When the hash table is filled to a 75% of its capacity,<br />

it is enlarged one or<strong>de</strong>r of magnitu<strong>de</strong>. The amount of repetitions produced by<br />

the cyclic execution of a process, can be assessed analyzing each single<br />

connected component (SCC) of For the moment, we will assume there is<br />

only a conditional insi<strong>de</strong> the SCC. If we call the place that starts the cyclic<br />

execution of (entry point of ), we can consi<strong>de</strong>r that the conditional<br />

partitions the SCC in the following sections:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!