ハードウェアの気になるあれこれ

技術的に興味のあることを調べて書いてくブログ。主にハードウェアがネタ。

Chiselの文法 - 入門編 〜その10:Chiselのテスト機構〜

Chiselの文法入門の続きで今回は第10回目&最後 前回の終わりに書いたとおり、Chiselのテストの仕組みについてを解説します。 Chisel入門編〜その10:Chiselのテスト機構〜 PeekPokeTesterを使ったテスト用クラスの作成 PeekPokeTesterのテスト用メソッド Dr…

Chiselの文法 - 入門編 〜その9:I/Oポートのパラメタライズ〜

Chiselの文法入門の続きで今回は第9回目 前回の終わりに書いたとおり、I/Oポートのパラメタライズについて とは言いながら、I/O以外の例も示そうと思います。 Chisel入門編〜その9:回路のI/Oポートのパラメタライズ〜 I/Oのパラメタライズ パラメタライズし…

Chiselの文法 - 入門編 〜その8:回路のビット幅のパラメタライズとrequire〜

Chiselの文法入門の続きで今回は第8回目 前回までの記事でChiselの基本的な要素についての解説を一通り終えました。 今回からはChiselを使って論理回路を設計する際のメリットである回路のパラメタライズについての基本的な部分を紹介していきます。 Chisel…

Chiselの文法 - 入門編 〜その7:ChiselのBundle〜

前回の続きでChiselの文法入門編その7 今回はChiselにおける拡張型の続きとしてBundleについてを見ていきます Chisel入門編〜その7:Bundle〜 Bundleの宣言 例で見るBundleの使い方 IOで使うBundle

Chiselの文法 - 入門編 〜その6:ChiselのVec〜

前回の続きでChiselの文法入門編その6 今回はChiselにおける拡張型である`Vec`と`Bundle`の2つについてまとめて書こうを思ったのですが、思いの外膨らんだので、`Vec`メインにしました

Chiselの文法 - 入門編 〜その5:Chiselの制御構文〜

前回の続きでChiselの文法入門編その5。 5回目はChiselの制御構文についてです。

Chiselの文法 - 入門編 〜その4:Chiselの演算子〜

前回の続きでChiselの文法入門編その4。4回目はChiselの各演算子について。

Chiselの文法 - 入門編〜その3:Chiselのハードウェアの要素〜

前回の続きでChiselの文法入門編その3。 前回の冒頭に書いたChiselにおける3つ目の要素であるChiselのハードウェアの要素について見ていきます。

Chiselの文法 - 入門編〜その2:Scala/Chiselの基本的なデータ型〜

前回の続きでChiselの文法入門編その2 自分の理解ではChiselでハードウェアを実装する場合に、以下の3つの要素についての区別を理解する必要があると思っています。 1. Scalaの型 1. Chiselの型 1. Ciiselのハードウェアの要素 これは言い換えると、以下の…

Chiselの文法 - 入門編〜その1:モジュールの定義とエラボレート〜

前回はGW中に作ったRISC-Vの紹介をしてみましたが、その記事ではそのRISC-Vプロセッサの概要と作った所感についてをまとめただけでした。 まず最初の目標としていたのがこの取り組みだったため、ひとまず最初の目標は達成したというところ言う感じです。 そ…

Chiselで簡単なRISC-Vを作った話

今年のGWの自分宿題としてものすごく簡単なRISC-Vを作っていました。 ツイッター見てる方はご覧になってたかもしれませんが、GW中に一応riscv-tests位ならPASSするものが出来ています。 今回はその後にVivadoで合成してみた結果も取ることが出来たのでそれも…

C言語のstrtok関数でSEGVが起きてハマった話

C

唐突にC言語のネタ というのも最終的にCで書くことになるから、最初からCで書いとくか、、、、と言う話になって、そこでハマったから(T_T) C言語力が足りない(T_T)

自分で作ったBundleでレジスタ作ったらハマった話

今回は最近進めていたRISC-Vの実装の際にBundleの使い方でハマったのでそれについての話を Bundleのおさらい 基本的な使い方 BundleのインスタンスでRegを作る 本題:自分で作ったBundleでRegを作ったらハマった テストコードを作って確認 RTLはどうなってる…

Chiselで3次元メモリっぽいのを作る

今回もChiselのMemについての話。 元ネタは自分の以下のツイート。 因みにこの先は全部一緒でVecを入れ子にすれば、、、後はわかるな??— diningyo (@diningyo) 2019年4月30日 おそらくお察し頂けたとは思うが、3次元のメモリを作る場合についてまとめてお…

Chiselで2次元メモリっぽいのを作る(2)

令和になって最初の投稿。ほんとは昨日上げたかったんだけど。。 いずれにしても読んでくれてる方は引き続きどうぞよろしくですm(_ _)m 前回の記事の終わりに以下のようなこと書いた。 MemBaseにマスク付きのライトタスクが用意されているので、ひょっとする…

Chiselで2次元メモリっぽいのを作る(1)

今回はふとChiselで2次元のメモリは作れるのか??と思ったので試してみたのでそれをまとめてみようと思う Chiselで2次元のメモリ 試してみたことその1~Mem in Mem~ 試してみたことその2~じゃあBundleでくるんでみよう~ 試してみたことその3~それな…

ChiselのBundleをRegInitに渡すときに各フィールドを任意の値で初期化する方法(2)

今日は昨日の続き。 昨日はBundleをRegInitに渡すときにBundle内の各フィールドを任意の値で初期化する方法について考えた。 目的の処理は出来ることは分かったのだが、記述がイマイチなので今日はそれを少し整えてみようと思う。

ChiselのBundleをRegInitに渡すときに各フィールドを任意の値で初期化する方法(1)

以前にBunldeで構造化したデータを使ってレジスタをインスタンスする方法を紹介したのだがその記事を書いたときにもう一つコレ出来たらいいなっと思いながら出来なかったことがあった。 それは”Bundleを使ってレジスタ郡を作る際に、各フィールド毎に任意の…

Chiselのメモリにファイルのデータをロードする方法

今回もChiselのTips的なやつでChiselのメモリにファイルのデータをロードする方法についてを紹介する。

ChiselFlatSpecを使ったテストを並列化して高速に実行する方法

今日はChiselのテストの時にTips的なやつを。 ChiselFlatSpecを使って作ったテストクラス内の各テストは通常、実装した順に逐次実行される。 この単一クラス内のテストを並列に実行する方法はないのかしら??と探してみたところ、めちゃくちゃお手軽にテス…

Chisel Bootcamp - Module3.6(5) - 型クラスと使うジェネリクス型

今日は久しぶりにChisel-Bootcamp。 前回のChisel-Bootcampの学習ではジェネリクス型について学んだ。 今回はModule3.6の残りの部分を見ていく。ただエラーが出たりするので、そのへんは追って調査する事にして飛ばしていく。

Chisel-Bootcampの気になってたことを調べてみた

このブログでは自分のChiselの勉強を進めるための題材としてChisel-Bootcampを使わせてもらっている。 今回はChisel-Bootcampをやっていて今まで放置していた部分について、仕組みを調べてたのでそれをまとめてみる。 getVerilogって何よ? ソースコードを追…

Chiselで算術右シフトをするにはどうすればいいかを調査した

前回はChiselのBundleへのアクセスを簡単にする方法を紹介した。 www.tech-diningyo.info 今回はいま実装しているHWの処理の関係で算術右シフトが必要になった時に、どうすれば良いのか悩んだので、その話をまとめておく。 Chiselで算術右シフト Chiselでは…

ChiselのBundleをvalで受けるといろいろ便利だった話

前回のChiselのPeekPokeTesterにはIntをBigIntに変換するメソッドが合ったのでそrを紹介した。 www.tech-diningyo.info 今回も最近Chisel書いていて「あ、これ出来るんじゃん!」という気付きがあったので、それをまとめておこうと思う。ぶっちゃけScalaが…

ChiselのPeekPokeTesterにはIntをBigIntに変換するメソッドがあった話

前回のChiselのテスト実行時にプログラム引数を指定する方法についてを紹介した。 www.tech-diningyo.info 今日は以前に書いた”UIntの大きな定数を指定する方法”を書いた時には気づかなかったメソッドを見つけたのでそれを紹介しようと思う。 ChiselでUIntの…

Chisel使った開発環境でテスト実行時にプログラム引数を指定する方法

前回の記事でChiselFlatSpecを使ったBDDスタイルの開発例、、、、みたいな記事を書いてみた。 www.tech-diningyo.info その際にデバッグの時に引数とか追加できんのかいねー??とか思って、方法を探してみたのでそれを書いてみようと思う。 Chiselのテスト…

ChiselFlatSpecを使った振る舞い駆動開発(BDD)によるハードウェア実装とテストの例

前回の記事でChiselFlatSpecを使うための前段階として、ベースとなっているScalaのテストハーネスScalaTestについて気になっていた部分を調査していった。 www.tech-diningyo.info 前回の終わりに書いた通り、今日は簡単なChiselのモジュールを作成し、それ…

ChiselFlatSpec使うためにScalaTestのFlatSpecを調査した話

今日はChiselのためのScalaのお勉強ネタを。調べるのはScalaのテストハーネスの一種であるScalaTestについて。 事の発端はSCR1というRISC-Vの実装をChiselで書いてみようとしていて、その際にriscv- testsの各試験をChiselのテストハーネスであるChiselFlatS…

ChiselのBlackBoxの使い方のまとめ

前回のChiselの記事ではChisel-Bootcampを進めてModule3.6のジェネリクス型を学んでいった。 www.tech-diningyo.info 今回はChiselのTips的な話で、ネタになるのは自分がChiselを使って実装をしていた際に出くわしたVerilog HDLで実装されたモジュールをブラ…

Chisel Bootcamp - Module3.6(4) - Scalaの型パラメータ(ジェネリクス型)のChiselへの応用について

前回のChisel-Bootcampの学習ではChiselの異なる方同士の接続の法則についてを見ていった。 今回も引き続きModule3.6を見ていく。今日はジェネリクスとChiselの型の階層について。