PAT 2.6.0的新增功能
在此版本中,Real-Time System模块通过更多的定时语法进行了改进。CSP和RTS模块支持原子事件序列。对于用户界面,PAT在窗口工具栏中提供了更好的文档管理菜单。模拟器的图形生成被放入一个附加线程中,该线程不会挂起用户界面。其他更新新示例和错误修复。
原子序列
关键字atomic允许用户定义一个进程,如果可能的话,该进程总是取得最大的进展。语法是原子{P},其中P是任何进程定义。
如果语句序列包含在括号中,并以关键字atomic作为前缀,则表示该序列将作为一个超级步骤执行,与其他进程无关。在进程执行的交错中,从原子序列的第一条语句执行到最后一条启用的语句完成,没有其他进程可以执行语句。序列可以包含任意的过程语句,并且可能是非确定性的。
在原子序列开始之前,它与其他进程竞争。一旦原子序列启动,它就会进入活动状态,并继续执行,直到终止或阻塞。如果原子序列中的任何语句被阻塞(例如,由于同步通道输出事件或并行屏障同步),原子性将丢失,然后允许其他进程开始执行语句。当被阻止的语句再次变为可执行语句时,原子序列的执行将立即恢复。如果启用了多个活动的原子进程,那么它们将交错执行。在下面的示例中,进程P(或Q)一旦处于活动状态,就会被同步通道事件阻塞。同步事件发生后,P和Q都处于活动状态,然后执行b->c->Skip和e->f->Skipp,因为没有原子。
信道ch0;
P=原子{a->ch!0->b->c->Skip};
Q=原子{d->ch?0->e->f->Skip};
系统=P|||Q;
注意:原子序列可以用于模型检查的状态简化,特别是当进程与其他进程并行组成时。状态数可能会成倍减少。在某种程度上,通过使用原子,我们可以手动减少部分订单(没有计算开销)。
注意:其他原子序列中的原子序列根本没有影响。
注意:RTS模块支持原子序列,原子组中所有参与的事件都不需要时间。
LTL中的同步信道
在LTL中,如果存在同步通道,则解析后其输入(?)或输出(!)事件将重命名为同步事件(.)。
[](c1!2-><>c2?3)将更改为[](c 1.2-><>c2.3)
用户界面更新
1窗口工具栏下的选项卡管理,它提供了与其他IDE类似的行为。
2 Simulator中的图形生成功能移动到独立线程。当你生成一个大图形时,模拟器不会挂起。
3“打开文件”对话框将使用默认建模语言文件类型作为默认文件过滤器。
其他
1用户手册更新为最新版本。
2增加了实时系统示例。
3修复乳胶生成函数中的错误,并更改乳胶中的“refines”、“refines<F>”和“refiness<FD>”符号