モジュール共通のFSMを実現できるように、状態の持ち方を大幅に変更した。下記の例のような記述が可能。{ } 内に状態の定義があれば、そのブロックはローカルな状態を有するとみなして、別の状態変数で状態を回す。stage/segmentはSFLでは状態を持つと定義されているので、この中で状態を回すには、必ずstate_nameによる定義が必要(グローバルなスコープは持たない)。
module test { func_in ex; output f[2]; state_name st1,st2,st3; { state st3 { f = 0b11; goto st1; } } function ex { state st1 { f = 0b01; goto st2; } state st2 { f = 0b10; goto st3; } } }
今回も、アルファ版と考えていたが、このバージョンのテスト中に、過去のSFL基礎教育の例題が動かないshow stopper発見。過去のものをどう対処するかは検討中だが、とりあえず、このバージョンはベータ版としておく。
不具合は、サブモジュールインスタンスを複数 ‘,’ で区切って定義するところ、’,’をパースできず、シンタックスエラーとなる。1行に1インスタンスとすれば動作するので、致命的ではないにせよ、以前動いていたものが動かない可能性が高いので、できれば、ベータ版にバージョンアップして欲しい。