Skip to content

BinaryIndustry/IronSand

Repository files navigation

System Verilogのコードを生成したり、回路シミュレーションができるインタプリタです。
ironsand.exeを実行するとインタプリタが起動します。
ironsand.exeにコマンドライン引数を与えるとテキストファイルを実行します。(./ironsand.exe test.txt)
プログラム終了時にSystemVerilogコードはmain.svというファイル名で保存されます。
コメントアウトは未実装なので各行の//より前の文字列を入力し、エンターを押してください。
例:
CLK = in[] //ビット幅1の入力信号"CLK"を追加します。
LEDR = out[10] //ビット幅10の出力信号"LEDR"を追加します
printsv() //現在のSystem Verilogコードを表示します

at (pos CLK): //CLK信号の立ち上がりエッジに次の処理を実行します
  LEDR = ~LEDR //LEDRを反転する(タブまたはスペース二つでインデントしてください)
  
printsv()
clk = {$CLK} //リスト"clk"を生成し、信号"CLK"の値を格納する
led = {$LEDR}

for (i 100): //次の処理を100回繰り返します
  CLK $= $!CLK; //CLKの信号を反転し、信号の変化によって発生するイベントを処理します(ここでは;(セミコロン)はイベント処理演算子となる)
  clk.push($CLK) //CLKの現在の値を配列に追加します
  led.push($LEDR)

tchart(clk, led) //リストclk、ledを元にタイミングチャートをsvgファイルで生成します(./timingchart.svg)

quit() //インタプリタを終了します

予約語
  in, out, io, 
  at, pos, neg, 
  defun, 
  if, else, elif, 
  for,
  deftask,
  cwk

演算子(一部未実装)
  =, +, -, *, /, **, &, |, ^, &&, ||, ~, !, 
  +=, -=, *=, /=, **=, &=, |=, ^=, &&=, ||=
  ==, !=, >, >=, <, <=, 
  <<, >>, 
  [, ], (, ), {, },
  " ", \t, \n, 
  :, +:, -:, ",", 0x, 
  $, $=, 
  ., ;, :;, 

TO DO
・メモリリークの調査
・バグ探し
・Verilogモジュール呼び出し機能の実装
・実行速度の改善
・リファレンスの作成
・16進数
・文字列型
・組み合わせ回路
・Print関数で配列要素を表示できるようにする(print($a[0]) -> print(a[0]))

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages