

今月度はコンサルティング業務が一息つくと期待していたのですが、引き続き多忙を極め、mhdlおよびCodeSqueezer関連では、ほとんど進捗がありません。ただ、リンク関連の仕様とテンソル記法について、簡単なまとめを行っております。これについて、以下簡単にご紹介しておきます。
------
・リンク:論理的な信号線を表し、信号線の束(リンクリスト)もリンクとして扱う。
・リンクのデータ構造
- 名前
- 値Valueへのポインタ;リンクリストの場合はnullptr。Valueは整数を表すman, exp, nan, of, ufの5つのWireクラスへのポインタからなる
- リンクリスト:リンクのリストで、リンクリストでない場合はnullptr
・リンクリストの要素の指定
- ドット(.)に続けて名前で指定するか、アット(@)に続けて番号を指定する
- 名前、番号がリスト形式で指定された場合は複数の要素を含むリストで返される
- ドットの後には定数で番号を指定してもよく、アットの後の番号は式で指定しても良い
・右辺の型が左辺を決めるが、左辺がリンクリストの場合は要素を明示することとする
- x = (a, b, c)としてx@0 = a, x@1 = b, x@2 = cとすることは認めない
- これを行いたい場合は、x@(0:2) = (a, b, c)と記述する
・テンソルの添字と定数の宣言
- #define #k (0;2)、#define #k 0:2のように行い、#を変数の前につける
- #define #k 2のように、スカラーで定義された場合は、#kは定数として宣言される
- ?リストの要素番号を定数にしたい場合に、#define @height 2のような宣言も許すか?
・テンソル添字、定数の利用
- #kが定数でない場合、x#kはテンソルの演算規則に従って解釈される
- #kが定数の場合、x#kという書き方は許さない。#k番目の要素を指定したければx@#kとする
- テンソル添字は定数添字と同様に用いられているため、x#2という書き方は許す
- ならば、#kが定数の場合、x##kという記法が許されることになる。これは認めてもよさそう
------
このあたりは、暇をみながら、ぼちぼちと考えてまいります。