sfl2vlでは、seqブロックは、何が何でも 🙂 1クロックずつ進む構文としていたが、NSLでは、procを呼び出した場合には、procが終了するまで次に進まないようにしようとしている。
現在、20090922版(アルファ版)でのみサポートしているが、こうすることで、手続き的な記述がシンプルになる(はず)。
たとえば、下のコードで、ackが帰るまで、p1は終わらないので、p2の起動はそれまで待たせる。
もちろん、proc中にseqを使うこともできるけれど、procは、終了条件が発生するまでは、動作し続けるので、seqが何度も起動されることを防ぐ工夫が必要なので、使い方に注意がいる。
module seqtest { func_in ex,ack; output f[8]; proc_name p1; proc_name p2; function ex seq { p1(); p2(); } proc p1 { f=0x01; if(ack) finish;} proc p2 { f=0x02; finish;} }