Hardware

スポンサーリンク
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> ...
SystemC

SC_MODULEでサンプル回路を作成する SystemC

SystemCの勉強がてらSC_MODULEを使ったサンプルコードを作成しました。簡単な回路で、Producerがデータを送信してConsumerでデータを受け取って標準出力させます。#include <systemc.h>SC_MODUL...
スポンサーリンク