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

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

Verilog-HDL

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

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

Chiselで設計したハードウェアをVerilogのRTLに変換する流れのまとめ

前回のChiselの記事では`Bundle`を使ってオプションのIOポートをまとめて制御する方法を紹介した。 最近Chisel周りの調査をいろいろやっているが、ChiselのコードをVerilogのRTLに変換する方法についてを簡単にまとめた日本語の記事が見当たらない気がしたの…

ChiselのBundleとSomeを使ったデバッグ用インターフェースの作り方

前回のChiselの記事ではBundleの基本的な使い方についてをまとめたみた。 www.tech-diningyo.info 今回は前回まとめたBundleを使ってモジュールのIOポートをオプション化する方法についてをまとめておく。 ChiselでIOポートのオプション化するには? モジュ…

chisel-templateを使ったオリジナルデザインの作成 - テンプレートへの組み込みからVCD波形ダンプまで

前回のChiselの記事ではchisel-templateをIntellij IDEAのプロジェクトにしてChiselの開発環境を構築する方法についてを紹介した。 www.tech-diningyo.info 今回は前回の終わりに書いたとおり、構築したchisel-templateプロジェクトに自前のモジュールを追加…

Chisel Bootcamp - 幕間(7) - カウンタ(Counter)

前回のChiselの記事では標準ライブラリに含まれているマルチプレクサに関するブロック(PriorityMux/Mux1H)を紹介した。 今日は幕間で紹介されているChiselのライブラリとしては最後になる`Counter`について見ていく。

Chisel Bootcamp - 幕間(6) - マルチプレクサ(PriorityMuxとMux1H)

前回の記事ではChiselの標準ライブラリに含まれているOneHotエンコードに関するブロックを紹介した。 今日はChiselのライブラリに用意されている2つのマルチプレクサについて見ていく。

Chisel Bootcamp - 幕間(5) - OneHotなデータを扱うライブラリ(UIntToOHとOHToUInt)

前回の記事ではChiselの標準ライブラリに含まれているビット単位の操作を行うブロックをを紹介した。 今日はChiselからOneHotエンコードのユーティリティを勉強していく。

Chisel Bootcamp - 幕間(4) - PopCountとReverse

前回の記事ではChiselの標準ライブラリから`Arbiter`を紹介した。 今日も引き続きChiselの標準ライブラリを紹介していく。今日はChiselのユーティリティブロックからいくつかのモジュールを勉強する。

Chisel Bootcamp - 幕間(3) - ChiselのArbiter

前回の記事ではChiselの標準ライブラリからQueueを紹介した。 今日も引き続きChiselの標準ライブラリを紹介していく。今日はChiselのアービターだ。

Chisel Bootcamp - 幕間(2) - ChiselのQueue

前回の記事ではChisel BootcampはModule3.2のと3.3の幕間の章に入り、Chiselの標準ライブラリの紹介の導入としてDecoupledIOについてを学習した。 今日も引き続きChiselの標準ライブラリを紹介していく。今日はChiselの`Queue`だ。

Chisel Bootcamp - 幕間(1) - ChiselのAPI - Decoupled

前回の記事ではChisel Bootcamp]はModule3.2の練習問題でRISC-VのISA向けのレジスタファイルを作成した。 今日はModule3.2とModule3.3の間にある幕間の章でChiselの標準ライブラリについて紹介していく。最初はDecoupledIOから。

Chisel Bootcamp - Module3.2(6) - 練習問題:Vecを使ったRISC-Vのレジスタファイル

前回の記事ではChisel BootcampはChiselのコレクション型である`Vec`について調べた。 今日はModule3.2の締めくくりとして練習問題を見ていく。

Chisel Bootcamp - Module3.2(5) - Chiselのコレクション型"Vec"

前回の記事ではChisel BootcampはChiselで作成した4-tapのFIRフィルタ・ジェネレータをN-tap版FIRフィルタ・ジェネレータに変換する最後のフェイズとしてN-tap版のFIRフィルタ・ジェネレータのテストを作成した。 前回の終わりに書いたとおり、今日の記事で…

Chisel Bootcamp - Module3.2(4) - N-tap版FIRフィルタ・ジェネレータに対応したテストの実装

前回の記事ではChisel BootcampはModule3.2の続きでModule2で扱った4-tapのFIRフィルタ・ジェネレータをN-tap対応版に変更していった。 今回は一連の変更作業の最後のフェイズでN-tap版FIRフィルタ・ジェネレータに対応したChiselのテストを作成していく。

Chisel Bootcamp - Module3.2(3) - N-tap版FIRフィルタ・ジェネレータの作成

前回の記事ではChisel BootcampはModule3.2にの続きでScalaのFIRフィルタのリファレンスモデルをテストし、確認したモデルをChiselのテスト回路に組み込んでいった。 今回は作成したChiselモジュール用のテスト回路を使って4tap固定のFIRフィルタジェネレー…

Chisel Bootcamp - Module3.1(5) - オプション付きのI/Oポート宣言

前回の記事ではChisel BootcampのModule3.1でScalaの文法である`Match`文の復習とそれをChiselに適用するとどうなるかということについてを見ていった。 今日も引き続きModule3.1を見ていく。今日はオプション付きのIO宣言についてだ。

Chisel Bootcamp - Module3.1(3) - デフォルト引数とOptionクラス

前回の記事ではChisel BootcampのModule3.1のパラメタライズの2つ目の例について見ていった。 今日も引き続きModule3.1を見ていく。今日はパラメタライズの際に指定できるオプションとデフォルト引数についてだ。

Chisel Bootcamp - Module3.1(2) - パラメータを使った論理の変更

前回の記事ではChisel BootcampのModule3.1に入り、パラメタライズとエラボレーション時のアサーションである`require`について勉強した。 今日も引き続きModule3.1を見ていく。今日はModule2.3で扱ったsortモジュール、再びだ!!

Chisel Bootcamp - Module3.1(1) - パラメタライズを使ったジェネレータ

前回の記事ではChisel BootcampのModule2.5でFIRフィルタのジェネレータの実装について勉強した。 Module2.5の残りのトピックがあるのだが、一旦後回しにして今回からModule3.1に入っていく。 Module3からはジェネレータについてより深く学んでいくことにな…

Chisel Bootcamp - Module2.5 (2) - FIRフィルタ・ジェネレータ

前回の記事ではChisel BootcampのModule2.5の最初の練習問題であるChiselを使ったFIRフィルタの設計を行った。 今回もMoudle2.5の続きで、前回のFIRフィルタを生成するジェネレータを作っていく。 なお前回の終わりにも書いたし、こんなgithubのIssueも見つ…

Chisel Bootcamp - Module2.4 (3) - マルチクロック&マルチリセット

前回の記事ではChisel BootcampのModule2.4で学んだレジスタを使ったフロー制御を学んだ。 www.tech-diningyo.info 今回はModule2.4の残りである練習問題に取り組んでいく。 Module 2.4: 順序回路 練習問題 練習問題:シフトレジスタ 練習問題:パラメタライ…

Chisel Bootcamp - Module2.4 (2) - レジスタを使ったフロー制御

前回の記事ではChisel BootcampのModule2.4に入り、レジスタについてを学んだ。 今回はレジスタを使ったフロー制御を見ていく。

Chisel Bootcamp - Module2.4 (1) - レジスタ

前回の記事でChisel BootcampのModule2.3の学習が全て終了した。 今回は更に学習を進めてModule2.4に入っていく。 いよいよ「順序回路」だ!

Chisel Bootcamp - Module2.3 (2) - フロー制御(Wire)

前回の記事でChisel BootcampのModule2.3に入りChisel`when`/`elsewhen`/`otherwise`について勉強した。 今日からは引き続きModule2.3を進めていくが、今日扱うのChiselの`Wire`についてだ。

Chisel Bootcamp - Module2.3 (1) - フロー制御(when/elsewhen/otherwise)

前回の記事でChisel BootcampのModule2.2の組み合わせ回路の勉強が終わった。 今日からはModule2.3に入っていく。 タイトルは「フロー制御」だ。

Chisel Bootcamp - Module2.1 (3) - Verilog/FIRRTLの確認とprintfデバッグ

前回の記事ではChisel BootcampのModule2.1の大体の学習が終わったところだった。 今回はModule2.1の最初のモジュールの残りを片付ける。内容的には主にデバッグの際にどうすればいいかというものだ。

Chisel Bootcamp - Module2.1 (2) - 最初のジェネレータ

前回の記事でChisel BootcampのModule2.1の最初のモジュールの作成が終わった。 今回はModule2.1の最初のモジュールの2つ目の例からスタートしていく。いよいよChiselで作るジェネレータに関しての話題だ。

Chisel Bootcamp - Module 2.1(1) - 最初のモジュール

前回の記事でChisel BootcampのModule1がやっと終わった。 徐ろに、題名につけてた”Chiselの勉強”を省いてスタート。 ということで今日からはModule2に入っていよいよChiselを使ったHW設計について学んでいく。

RISC-Vの実装の1つ - SCR1の解析 - シミュレーション環境の疑問点の確認(1)

前回のSCR1ネタ最後に以下のように書いた。 ここまでに記載したようにとりあえず...の対策をいくつか施して動かした部分もあるし、実はこのシミュレーションも正常に終わってなかったりしているので、引き続きもう少しシミュレーション環境の調査を行ってい…