PAT:过程分析工具包

一种用于并发和实时系统的增强模拟器、模型检查器和优化检查器

月度档案2012年2月

2012年2月4日:PAT 3.4.2发布!

1改进了代码生成,并支持CSP模块的更多语法(基于QP平台的测试版)
2改进了对CSP模块的BDD支持。BDD不支持将中断编码为LTS,但可以使用合成函数对其进行编码。
3添加了大多数BEEM数据库示例(正在进行中)
修复了4个RTS模块错误。
5返回最大值或最小值可达性的单调引擎
“搜索引擎:使用宽度优先搜索和单调有值的最短见证跟踪”
6 PRTS支持奖励计算,PRTS对解析器进行了改进。
7所有模块都支持索引事件。
8改进了所有模块的宏定义用法。

宏可以接受如下定义的参数。调用宏时,使用关键字调用。宏表达式可以是PAT中的任何可能表达式(if,局部变量声明,while,赋值)。

#定义多(i,j)i*j;
系统=if(call(multi,3,4)>12){a->Skip}else{b->Skip};

请注意,PAT中还允许使用以下宏定义,这意味着宏定义可以是模型中使用的代码片段。

var x=0;
var y=0;
var z=0;
#定义重置1{x=0;y=0};
#定义重置(i){x=i;y=i};
P=e1{z=0;重置1}->跳过;
Q=e2{z=2;调用(重置,1)}->跳过;

9更新了原子进程语义
自PAT 3.4.2以来,原子进程的语义略有变化。在下面的示例中,在PAT 3.4.2中之前,当进程Sys启动时,事件a和d同时启用。在PAT 3.4.2中,只启用了d,因为启用的原子进程的优先级高于启用的事件。我们所做的更改是为了使PAT中实时模块中原子进程的语义易于表达。

P=a->原子{b->c->Skip};
Q=原子{d->e->f->Skip};
系统=P|||Q

使用这种新语法,并行事件可以具有上面的a和d之类的优先级。

在RTS模块中,原子进程现在可以包含定时结构。考虑以下内容:
P=原子{Wait[5];a->Skip}|||Q;
Q=b->Q;

Wait[5]生成的tau(时间刻度)转换将比b和tau具有更高的优先级,事件a将捆绑在一起。