チラシの裏は意外と白くない

最近忘れっぽくなったので調べたことをチラシの裏に書きます

技術メモ

pythonからC++を呼び出して、jsonファイルをやり取りする②

前回、C++で書いた関数をpythonモジュールにして、それをpythonから呼び出すプロトタイプを作成した。続いて、jsonファイルをやり取りする方法を検討する。C++向けのjsonパーサとしてはjansson,picojson等いろいろあるのだが、janssonが直感的でAPIリファレ…

pythonからC++を呼び出して、jsonファイルをやり取りする①

背景 新しいデータベースの形としてjsonを採用した jsonといえばpython 過去資産はC++で書かれているし、bit精度を考慮するとC++を使いたい というようなせめぎあいの結果、とりあえず方式を調査することに。 あとで絶対わからなくなるので、ここにまとめる…

クラスに関して③:仮想関数と完全仮想関数

たまに関数の頭にvirtualがついているのを見かけるので、それの内容。 仮想関数 cpp-lang.sevendays-study.com を参考にちょっと変更したコードを作成。 bird.h #ifndef __BIRD_H__ #define __BIRD_H__ #include <iostream> #include <string> using namespace std; class CBir</string></iostream>…

クラスに関して②:コンストラクタとデストラクタ

クラスの特殊なメンバ関数としてコンストラクタとデストラクタがある。 コンストラクタ クラスをインスタンス化するときに自動的に呼ばれる。先の例ではコンストラクタの記述をしていないが、その場合デフォルトコンストラクタが呼ばれる。コンストラクタは…

クラスに関して①:基本的なところ

クラスの話。これも今更感があるけどメモ。 構成 基本の基本から。とりあえず”人”クラスで、年齢・身長・体重をprivateに、これらをセットする関数とゲットする関数を用意。 ファイル 内容 man.h CManクラスの定義 man.cpp CManの実装 main.cpp CManの利用 …

C++あれこれ

今更感があるが、C++のいくつかの内容についてまとめておく。 関数のオーバーロード 例えば、以下のようなint型の引数2つの平均値をint型で返す関数を考える。 int average(int a, int b) { return (a+b)/2; } Cでは、float型同士の平均を求めたい場合には新…

SystemC基本構文③

シミュレーション構文 4bitカウンタを作成した際に見てきた内容が多いが改めて。 時間単位の設定 sc_set_default_time_unit(値)でシミュレーションの時間単位を指定する sc_set_default_time_unit(1, SC_PS); で1ps単位になる デフォルトは1ns sc_get_defaul…

SystemC基本構文②

データ型から続きを。 データ型 基本的にsc_***。C++のデータ型であるbool, int, char, doubleも使用可能。代表的なデータ型は、 データ型 内容 sc_int<N> N bit符号付き32bit整数 sc_uint<N> N bit符号なし32bit整数 sc_bit '0','1'の2値 sc_logic '0','1','x',z'</n></n>…

ステートマシン①

ミーリタイプとムーアタイプ 順序回路の分類。これは今まで全く意識したことがなかった。 タイプ 次の状態 ミーリタイプ 保持している状態と、その時点での入力信号によって決定される ムーアタイプ 保持している状態のみによって決定される と言われてもわ…

順序回路とか

順序回路 組み合わせ回路の出力は過去の状態に影響されないのに対し、順序回路は過去の状態によって出力が変わる。always文を使うやつ。 D-FF フリップフロップにはD,SR,JK,Tがあるが、D-FFが最も基本的なFFなので、これの動作を復習しておく。 クロックの立…

組み合わせ回路とか

新人研修と一時期を除いてしばらくVerilogを書いておらず、最近は雰囲気だけで読んでいたところもあって、SystemCの本だけでは行き詰まるところが出てきた。 すこしVerilogの復習をしておく。とりあえずcounter回路をモチーフにVCS,Verdiの環境を作っておい…

sc_in同士の演算

もう少し理解が進んだところで、全体における位置づけが明確になると期待して、気づいたことを書いておく。 以下の通り、入力信号in0, in1を加算して出力信号outにアサインするという単純なモデルを作ってみた。dont_initialize()がついていたりSC_METHODに…

SystemC基本構文①

第3章 SystemC基本構文の1回目。プロセスまでを勉強。 ファイル構造 特別な規則はないが慣習的に、 SC_MODULE宣言部を***.h アルゴリズム記述を***.cpp SC_MODULE SC_MODULEはVerilogでいうところのmoduleで、構成部品は モジュール名 入出力ポート宣言 入力…

RGB2YUV回路(BCA)

前回TLMで作成したRGB2YUV回路をBCAに変更する。 変更概要 いくつかの記述はSystemC2.3.3では使用不可になっている。これはCQ出版の正誤表に記載有 tbとdutで画像データをやり取りするチャネルについて、TLMではsc_fifoを使用していたがBCAではsc_signalでデ…

RGB2YUV回路(TLM)

「SystemCを使ったハードウェア設計」という本を入手できたので、第2章に従ってTLM→BCAの流れを確認する。 TLM(Transaction Level Modeling) データの流れのみを定義したレベル。バス構造やインタフェース機能はモデリングしない。特に重要な点がFIFOの表現…

SystemCで4bitカウンタを作ってみた②

前回作った4bitカウンタを少し変えつつ、もう少し理解を深める。 SC_THREADのsensitivityについて SC_THREADでsensitivityがない件について、SC_THREADはクロック同期しておらず、プロセス側でクロックを待っているのでは?という予想を立てた。とすると、プ…

SystemCで4bitカウンタを作ってみた①

SystemCに同梱されているexampleを勉強するつもりだったけど、結構複雑で言語のお作法がわからないときつい感じだったので、簡単なカウンタ回路をフルスクラッチで作ってみた。これで基本的な構成を理解したい。環境構築にあたって、以下のサイトを大いに参…

SystemCのexample

手始めに/usr/local/systemc/2.3.3/examples/の中身を見てみることにする。 まずはmake とりあえずbuild-unix/というディレクトリ以下でmakeできるようなので、makeしてみた。 $ make make[1]: ディレクトリ `/home/XXXX/sandbox/systemc/tutorial/examples/…

SystemCの環境構築

SystemC。名前と何となくは知っていたけど、日本語の文献があまりにも少ないor高いことから躊躇していたけど、どうもある程度理解しないといけない雰囲気になってきている。今更感がすごいけど。 今回は環境の勉強も兼ねてWSLにSystemCをいれて、Hello Wolrd…

データフォルトと格闘した記録その2

前回の続きの解決編。

データフォルトと格闘した記録その1

背景・前提 LSIの検証プログラムで解決困難なエラーが発生したため、ある程度一般的な内容と思われるので記録と解析のモチベーションにするため記事にしてみた。 元々プログラムは動作していて、そこからある変更をしたらCPUが例外を吐いて止まるようになっ…