Hardware

スポンサーリンク
svRegex

svRegex SystemVerilog 正規表現パッケージ v0.1.0

はじめにUVMにはDPI-Cを使用した正規表現メソッドuvm_re_matchがあります。uvm_re_matchはDPI-Cを使用しないとglobで動作するため、DPI-Cを使用しない正規表現メソッドを作りたいと思いsvRegexを作成し...
Systemverilog

SystemVerilog(UVM)で正規表現を使用する

はじめにSystemVerilogで正規表現を使用したいときがあり、標準で実装されているかを調べました。結論UVM(IEEE 1800.2-2020)にuvm_re_matchというメソッドがありました。正規表現で文字列検索を行うメソッドの...
SystemC

階層構造を出力する SystemC

はじめにデバッグ用にSystemCの階層構造(hierarchy)をprintfする関数を作成しました。解説print_hierarhy()を実行することで、インスタンスされているモジュール、ポート、スレッドを出力します。print_hie...
SystemC

SC_METHOD、SC_THREAD、SC_CTHREAD SystemC

はじめにSystemCでは3つのタイプのスレッドを持ちます。それぞれの違いについて説明します。sc_methodSC_METHODマクロを使用して定義します。通常のC関数と同じ動作をします。SC_METHOD(<method>)の後にsen...
SystemC

インスタンス SystemC

はじめにSystemCで階層設計(インスタンス)を行います。サンプルコードtopがdffというモジュールをインスタンスするサンプルコードです。sample.cpp#include <systemc.h>// D-FFを宣言SC_MODULE...
Systemverilog

VerilogでJSONフォーマットを読み込む

はじめにVerilogでJSONフォーマットを読み込みます。JsonのパースにはJSON11を使用します。JSON11はC++なので、VPIでVerilogとデータのやり取りを行います。サンプルコードまずはCコードを作成します。JSONフォ...
Systemverilog

VPIの計算速度 Verilog

はじめにVPIを使うことで演算をC側で行うことができます。計算回数や計算量によって実行時間がどうなるか気になったので試してみます。実行時間の比較VerilogとCで実行時間を比較します。演算は下記のような任意の値に足し算するだけのものです。...
Systemverilog

VPIで乗算器を作成する Verilog

はじめにVPIで2入力、1出力の乗算器を作成します。環境はIcarus Verilogです。作り方乗算するCコードを作成します。my_mult.cpp#include "vpi_user.h"// Taskint my_mult(char ...
Systemverilog

VPIを使ってみる Verilog

はじめにVPI(Verilog Procedural Interface)を試します。環境はIcarus Verilogです。Cコードの作成vpi_user.hをインクルードしてHello Worldを表示するSystemタスクを作成します...
SystemC

D-FFを作成する SystemC

SystemCでD-FF(Dフリップフロップ)を作成します。dff.cpp#include <systemc.h>SC_MODULE(DFF) { // ポート宣言 sc_in_clk clk; // クロック入力 sc_in<bool> ...
スポンサーリンク