verilog実習2

ban[80]という盤面。初手配置はban[8*9+0]=1
ただし駒は歩兵のみ(1/0のbitboard)
先手後手の手番なし

クロックが立ち上がる度に歩兵が1マスづつ上に上がっていく(だけ)
合法手が1の場合は先手・後手互いに1手指すだけなので、
いわゆるバックトラックが発生しないので末端で評価関数を計算するだけ
合法手2手を処理するには、スタックがいるなあ(^^;
要するに、再帰を使わずにスタックを自作して探索できないといけない


verilogの文法自体がまだ解ってないんですが、ある程度理解できたら
やねうらおさんのLisp使ってverilogを生成したらカッケーかもしれないけど
問題はLispもよく判らないということです(汗
begin/endと書くのが嫌なのでcppでも使えればなあ


FPGAだって三角配列を定義しておけばPVは出せるんじゃないですかね?

class Te { char to,char from };
Te GoodTe[32][32]
 ↓
output [32*32*16:0] GoodTe
C:\iv>vvp a.out
VCD info: dumpfile sft.vcd opened for output.
clk=0,depth=  0,ban=100000000000000000000
clk=1,depth=  1,ban=000800000000000000000
clk=0,depth=  1,ban=000800000000000000000
clk=1,depth=  2,ban=000004000000000000000
clk=0,depth=  2,ban=000004000000000000000
clk=1,depth=  3,ban=000000020000000000000
clk=0,depth=  3,ban=000000020000000000000
clk=1,depth=  4,ban=000000000100000000000
clk=0,depth=  4,ban=000000000100000000000
clk=1,depth=  5,ban=000000000000800000000
clk=0,depth=  5,ban=000000000000800000000
clk=1,depth=  6,ban=000000000000004000000
clk=0,depth=  6,ban=000000000000004000000
clk=1,depth=  7,ban=000000000000000020000
clk=0,depth=  7,ban=000000000000000020000
clk=1,depth=  8,ban=000000000000000000100

スキルを度外視して夢だけで言えば「非同期データフロー回路」とかで作れたらカッケーw