2019-01-01から1年間の記事一覧
今回はふとChiselで2次元のメモリは作れるのか??と思ったので試してみたのでそれをまとめてみようと思う Chiselで2次元のメモリ 試してみたことその1~Mem in Mem~ 試してみたことその2~じゃあBundleでくるんでみよう~ 試してみたことその3~それな…
今日は昨日の続き。 昨日はBundleをRegInitに渡すときにBundle内の各フィールドを任意の値で初期化する方法について考えた。 目的の処理は出来ることは分かったのだが、記述がイマイチなので今日はそれを少し整えてみようと思う。
以前にBunldeで構造化したデータを使ってレジスタをインスタンスする方法を紹介したのだがその記事を書いたときにもう一つコレ出来たらいいなっと思いながら出来なかったことがあった。 それは”Bundleを使ってレジスタ郡を作る際に、各フィールド毎に任意の…
今回もChiselのTips的なやつでChiselのメモリにファイルのデータをロードする方法についてを紹介する。
今日はChiselのテストの時にTips的なやつを。 ChiselFlatSpecを使って作ったテストクラス内の各テストは通常、実装した順に逐次実行される。 この単一クラス内のテストを並列に実行する方法はないのかしら??と探してみたところ、めちゃくちゃお手軽にテス…
今日は久しぶりにChisel-Bootcamp。 前回のChisel-Bootcampの学習ではジェネリクス型について学んだ。 今回はModule3.6の残りの部分を見ていく。ただエラーが出たりするので、そのへんは追って調査する事にして飛ばしていく。
このブログでは自分のChiselの勉強を進めるための題材としてChisel-Bootcampを使わせてもらっている。 今回はChisel-Bootcampをやっていて今まで放置していた部分について、仕組みを調べてたのでそれをまとめてみる。 getVerilogって何よ? ソースコードを追…
前回はChiselのBundleへのアクセスを簡単にする方法を紹介した。 www.tech-diningyo.info 今回はいま実装しているHWの処理の関係で算術右シフトが必要になった時に、どうすれば良いのか悩んだので、その話をまとめておく。 Chiselで算術右シフト Chiselでは…
前回のChiselのPeekPokeTesterにはIntをBigIntに変換するメソッドが合ったのでそrを紹介した。 www.tech-diningyo.info 今回も最近Chisel書いていて「あ、これ出来るんじゃん!」という気付きがあったので、それをまとめておこうと思う。ぶっちゃけScalaが…
前回のChiselのテスト実行時にプログラム引数を指定する方法についてを紹介した。 www.tech-diningyo.info 今日は以前に書いた”UIntの大きな定数を指定する方法”を書いた時には気づかなかったメソッドを見つけたのでそれを紹介しようと思う。 ChiselでUIntの…
前回の記事でChiselFlatSpecを使ったBDDスタイルの開発例、、、、みたいな記事を書いてみた。 www.tech-diningyo.info その際にデバッグの時に引数とか追加できんのかいねー??とか思って、方法を探してみたのでそれを書いてみようと思う。 Chiselのテスト…
前回の記事でChiselFlatSpecを使うための前段階として、ベースとなっているScalaのテストハーネスScalaTestについて気になっていた部分を調査していった。 www.tech-diningyo.info 前回の終わりに書いた通り、今日は簡単なChiselのモジュールを作成し、それ…
今日はChiselのためのScalaのお勉強ネタを。調べるのはScalaのテストハーネスの一種であるScalaTestについて。 事の発端はSCR1というRISC-Vの実装をChiselで書いてみようとしていて、その際にriscv- testsの各試験をChiselのテストハーネスであるChiselFlatS…
前回のChiselの記事ではChisel-Bootcampを進めてModule3.6のジェネリクス型を学んでいった。 www.tech-diningyo.info 今回はChiselのTips的な話で、ネタになるのは自分がChiselを使って実装をしていた際に出くわしたVerilog HDLで実装されたモジュールをブラ…
前回のChisel-Bootcampの学習ではChiselの異なる方同士の接続の法則についてを見ていった。 今回も引き続きModule3.6を見ていく。今日はジェネリクスとChiselの型の階層について。
前回のChisel-Bootcampの学習ではScalaの`unapply`と部分関数についてを見ていった。 今回も引き続きModule3.6を見ていく。今日はChiselの型についてもう少し詳しく見ていく。
前回はChisel-Bootcampの学習に戻りModule3.6を見ていった。 www.tech-diningyo.info 今回も引き続きModule3.6を進めていく。今日はScalaのunapplyだ。 ジェネレータ:型について unapply 部分関数
前回は久々のChisel-Bootcampの学習を勧めModule3.5の残りを見ていった。 www.tech-diningyo.info 今回はModule3.6に入りScalaとChiselの”型”についてを学習していく。 ジェネレータ:型について モチベーション 静的な"型" ScalaとChiselの型 IntとUInt Boo…
前回のChiselの記事ではFIRRTLを可視化するツールdiagrammerを試してみた内容をまとめた。 今回はしばらく進めていなかったChisel-Bootcampに戻り、Module3.5の残りを見ていく。 オブジェクト指向プログラミングをChiselに適用すると??という話だ。
少し前にChiselの公式ツイッターがツイートしていたdiagrammerというChiselから生成されるFIRRTLをグラフにして可視化するツールを試してみた内容を書いてみる。
前回のChiselの記事では今更ではあるがChiselでデザインしたハードウェアをVerilogのRTLに変換するためにやることについてをまとめた。 今日はついでなので、前回の続きというかその前の段階とかに位置しているはずのChiselで作っているハードウェアをそのま…
前回のChiselの記事では`Bundle`を使ってオプションのIOポートをまとめて制御する方法を紹介した。 最近Chisel周りの調査をいろいろやっているが、ChiselのコードをVerilogのRTLに変換する方法についてを簡単にまとめた日本語の記事が見当たらない気がしたの…
前回のChiselの記事ではBundleの基本的な使い方についてをまとめたみた。 www.tech-diningyo.info 今回は前回まとめたBundleを使ってモジュールのIOポートをオプション化する方法についてをまとめておく。 ChiselでIOポートのオプション化するには? モジュ…
前回のChiselの記事では出力ポートに`0xdeadbeaf`を定数で入れたらエラーが出てハマったので解決方法について調べた。 今回はChisel-Bootcampではサラッと流されているChiselの`Bundle`を使ったデータの構造化についてをまとめてみる。
前回のChiselの記事ではChisel-bootcampのModule3.5のコンパニオン・オブジェクトとケース・クラスについてを勉強した。 今回はちょっとChisel-Bootcampから離れてChiselを試していたハマったUIntの大きい定数値の扱いについてを紹介していく。
前回のChiselの記事ではChisel-bootcampのModule3.5に入りScalaのオブジェクト指向言語としての特徴からクラスとトレイトについてを見ていった。・ 今回も引き続きModule3.5に取り組んでいく。前回の最後に記載したとおり今日はScalaのオブジェクト。
前回のChiselの記事ではChisel-bootcampのModule3.4の練習問題でニューラルネットワークのニューロン回路を実装するという問題に取り組んだ。 www.tech-diningyo.info 今回はModule3.5に入っていく。ここで扱うトピックはScalaの関数型言語とは別に存在する…
前回のChiselの記事ではChisel-bootcampのModule3.4でScalaの持つ関数型言語としての特徴をChiselにどう活かすかについてを勉強した。 www.tech-diningyo.info 前回の終わりにも書いたとおり、今日はModule3.4の残している練習問題に取り組んでいく。 Chisel…
前回のChiselの記事ではChisel-bootcampのModule3.4に入りChiselのベースになっているScalaの関数型言語としての特徴についてを確認した。 今日も引き続きModule3.4を勉強するが、今日はいよいよ関数型言語の特徴をどうChiselに活かすかという部分についてを…
前回のChiselの記事ではChisel-bootcampのModule3.3の高階関数を使った設計の仕上げとして練習問題に取り組んだ。 今日からModule3.4に入る。Module3.4は関数型言語についてだ。