2019年6月24日月曜日

[SVA] 6. サンプル

SVA (SystemVerilog Assertion) 並列アサーションの簡単なサンプル集。必要に応じて negedge にしたり disable iff を入れたりしてください。
  @(negedge clk)  ...;
  @(posedge clk) disable iff (rst)  ...;

2019年6月20日木曜日

[SVA] 5. その他

SVA (SystemVerilog Assertion) の基本的な記述方法について、前回までの内容を見ていただければなんとなく理解していただけるのではないかと思います。高位合成が流行るにつれてSVAを使う機会がどうなっていくのか私には想像できませんが、あと数年は使うことになるのではないでしょうか。

今回の記事は SVA に関連あるけど、知らなくてもおそらく問題ない内容となっています。

2019年6月15日土曜日

[SVA] 4. system function と control task

SVA で使えるシステムファンクションとコントロールタスクの基本的な記述方法についてまとめます。省略している箇所も多々ありますので、詳細については IEEE Std 1800-2017 を参照ください。

2019年6月11日火曜日

[SVA] 3. プロパティ (property)

SVAの並列アサーションで使用する プロパティ(property) の構文について、よく使うものを挙げています。
 property <プロパティ名> ( (<引数1>, <引数2>, ...);
    @(posedge clock)  disable iff ( <条件> ) ...;
  endproperty

( (<引数1>, <引数2>, ...)disable iff ( <条件> ) は省略できます。
また、<引数> は型やbit数を指定する必要はありません。

[ 注釈 ]
本記事中の P, S, B の意味は以下になります。
 P : サブプロパティ もしくは シーケンス, ブーリアン
  S : シーケンス もしくは ブーリアン
  B : ブーリアン (条件式)

2019年6月10日月曜日

[SVA] 2. シーケンス (sequence)

SVAの並列アサーションで使用する シーケンス(sequence) の構文について、簡単にですがまとめます。sequence で使用する構文は property でも使えますので、property のみでアサーションを記述することもできます。
 sequence <シーケンス名> (<引数1>, <引数2>, ...);
    ....;
  endsequence

<注釈>
本記事中の S, B の意味は以下になります。
 S : サブシーケンス もしくは ブーリアン
  B : ブーリアン (条件式)

2019年6月7日金曜日

[SVA] 1. SystemVerilog アサーション

SVA (SystemVerilog Assertion) は論理回路の検証手法の一つです。
SVA を使う主な目的としては「目視による確認漏れを減らす」や「バグの早期発見」だと思いますが、その辺りの話は放り投げて、記述方法についてを数回に分けてまとめたいと思います。

私は基本的なことしか書けないので、詳細について知りたい方は IEEE Std 1800-2017 を参照してください。(私はあまり読みたくないです。1300ページ超えてますし...)

今回は SVA の構文について。SVA には 即時アサーション (Immediate assertion) と 並列アサーション (Concurrent assertion) があります。

2019年5月21日火曜日

[Perl] 11. その他

Perl に関するメモはこれで最後かな。
私は基本的かつ断片的な知識しかないけれど、振り返ってみると思っていたよりも書くことが多かったです。また Perl を使う機会があったら見直してみようと思います。

2019年5月16日木曜日

[Perl] 08. 実行方法

Perlスクリプトの実行方法に関するメモ。今更感がすごい。
(どうでもいい話だけど、ターミナルの先頭表現は > にした。見にくかったので...)

2019年5月15日水曜日

[Perl] 07. サブルーチン

サブルーチン(関数)の作り方に関するメモ。サブルーチン名を sub_*** としているのは私の趣味。

2019年5月14日火曜日

[Perl] 06. 文字列出力

今回は文字列出力に関するメモ。
print 関数、printf 関数を使って文字列を出力する。ついでに sprintf 関数についてもメモしておく。
ファイルへの出力 (ファイルハンドル) については、前前前回(?)の記事を参照。

2019年5月10日金曜日

[Perl] 04. 正規表現

今回はPerlの正規表現についてのメモ。
正規表現とは、文字列の集まりを別の文字列を使って表現する方法のこと。ワイルドカード (*, ?) の上位互換という認識。パターンマッチ構文(=~)で正規表現を使う場合を例として、メモしておく。

パターンマッチは、文字列が正規表現で書かれたパターンを含む場合に真とする。
if (<文字列> =~ <正規表現>) {
  処理
}

2019年5月9日木曜日

[Perl] 03. ファイル/ディレクトリ操作

今回はファイル/ディレクトリの操作についてのメモ。
拡張モジュールの話が出てくるが、モジュールのインストール方法ついては こちら を参照。

2019年5月8日水曜日

[Perl] 02. 条件分岐とループ

条件分岐とループについてのメモ。色々な言語に手を出せば出すほど書き方が分からなくなる。きっと"あるある"だと思う。

2019年5月7日火曜日

[Perl] 01. 型

Perl をファイル処理を行う際の便利ツールとして使用していたのですが、最近は他のスクリプト言語を使う機会が増えてきました。脳内メモリ容量が少ないので、忘れそうな内容をメモしておこうと思います。
今回はPerlで使う型について。

Perlの変数の型は、スカラー、配列、ハッシュ(連想配列)の3種類に大きき分けられ、変数の頭にそれぞれ $, @, % を付加することで判別する。
整数/浮動小数点/文字列 などを自動で判別してくれる。

2019年4月23日火曜日

PICT - 組み合わせテストケース作成

組み合わせテストケースを生成する際に「直行表を書くのめんどくさいよー...」と思ったのが事の始まり。

調べてみたところ、直行表とは別にペアワイズ法(Pairiwise)というやり方があり、フリーのツールを使って簡単にテストケースを生成できるらしい。ペアワイズ法は2因子網羅を満たすことに注力しているため、直行表よりも3因子網羅率が下がるみたい。つまりテストケース数も減るってことかな。
ツールは色々あるらしいのですが、私が使ったのは Microsoft 社の PICT。オプションで3因子網羅を満たすことも可能であり、禁則処理も容易にできるとのこと。これは使うしかない!!
ちなみに、ペアワイズ法はオール・ペア法(All-Pairs)とも呼ばれるらしいです。

[ 注釈 ]
因子:パラメータ名
水準:パラメータ値
禁則:ありえないパターンを除くための制約

2019年4月19日金曜日

GNU Make - Windows で make コマンドを使う

GNU Make というフリーのツールを使うことで Windows で make コマンドを使えるようになります。

2019年4月10日水曜日

Incisive の環境を Xcelium に移行してみた

Incisive Enterprise Simulator(IES) 15.2 が2020/12/31にサポート終了予定とのことで、Xcelium Parallel Simulator への移行を試みました。Xcelium の読み方はエクセリウムかな。