アダルト・ヴァイオリン May the force be with you..

2009年3月7日

SFL拡張書式の追加

Filed under: Weblog — い~ぐる @ 6:11 PM

sfl2vlにSFLの拡張書式を追加した。
今回の追加は、par文とrelay文に関するもの。

まず、par文は並列動作を記述するための構文だけれど、ハードウェアは基本が並列であり、特に断わりない限り、物事は並列に動作する。そこで、「par」を省略可としてみた。

次に、ステージ中の、他タスクの呼び出しには、relayやgenerateを使うが、こちらも、ほとんどのケースで、relayしか使う必要がないことから、もっと見た目に綺麗な書式にしたいと思っていた。今回、「relay」を省略可能にしてみた。

これらの省略形を用いると、先日のm8のアドレスモードデコードのステージは、↓のようになる。

stage decode {
any {
OPR_IMM: { exec.run(mr(pc).i);
pc := alu.exe(ADD, pc, 0x01).o;}
OPR_MEM: { memory.run(mr(pc).i);
pc := alu.exe(ADD, pc, 0x01).o;}
OPR_PC : exec.run(pc);
OPR_ACC: exec.run(acc);
OPR_ZER: exec.run(0x00);
}
}

主観だが、かなりすっきりして、気持ち良くなったと思う。

20090307版からのベータ版でのサポートとなる

3/11追記

generateだけ残るのは気持ち悪いので、generateかrelayなのかをツール側で判定するようにして、generateも省略可能とした。
ステージ中では、基本としてrelay扱いとなり、ステージ外では、generateと扱う。

上に絡むが、instrselfとinstroutは、起動しない時には0を保証するので、同時ONのチェック対象外とした。relayを同時に複数のステージに発行する時、ステージのリセット信号でハザードが発生していたのを抑止。
この結果、これらの信号は設計者のチェックに任せるので、多少気を付けないといけない。

Powered by WordPress