スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SCV:制約付ランダムデータ生成(その1)

今回は、SCVを使った制約付きランダム生成(その1)です。
今までの keep_only/keep_outの記述を
SCV_CONSTRANT を使って書くことができます。

  • サンプルコード

  •  1|#include <scv.h>
     2|
     3|// fast simple constraint.
     4|// Valid values for a are 10-20, 50-60, 90-100
     5|class faster : public scv_constraint_base {
     6|public:
     7|  scv_smart_ptr <int> a;
     8|  SCV_CONSTRAINT_CTOR(faster) {
     9|    a->keep_only(10100);
    10|    a->keep_out(2149);
    11|    a->keep_out(6189);
    12|  }
    13|};
    14|
    15|class slower : public scv_constraint_base {
    16|public:
    17|  scv_smart_ptr <int> a;
    18|  SCV_CONSTRAINT_CTOR(slower) {
    19|    SCV_CONSTRAINT(
    20|       (a() >= 10 && a() <= 100) &&
    21|      !(a() >= 21 && a() <= 49) &&
    22|      !(a() >= 61 && a() <= 89) );
    23|  }
    24|};
    25|
    26|int sc_mainint argc, char* argv[] ) {
    27|
    28|  faster f_hoge("faster");
    29|  slower s_hoge("slower");
    30|
    31|  for (int i=0; i<10; i++) {
    32|    f_hoge.next(); printf( "[SCV] faster data = %d\n", f_hoge.a->read() );
    33|  }
    34|  printf("\n");
    35|  for (int i=0; i<10; i++) {
    36|    s_hoge.next(); printf( "[SCV] slower data = %d\n", s_hoge.a->read() );
    37|  }
    38|
    39|  return 0;
    40|}
  • 実行結果

  • $> ./main 
                 SystemC 2.2.0 --- Jan 15 2012 14:19:56
            Copyright (c) 1996-2006 by all Contributors
                        ALL RIGHTS RESERVED
    [SCV] faster data = 98
    [SCV] faster data = 57
    [SCV] faster data = 57
    [SCV] faster data = 14
    [SCV] faster data = 95
    [SCV] faster data = 92
    [SCV] faster data = 56
    [SCV] faster data = 14
    [SCV] faster data = 94
    [SCV] faster data = 97
    
    [SCV] slower data = 94
    [SCV] slower data = 99
    [SCV] slower data = 55
    [SCV] slower data = 94
    [SCV] slower data = 99
    [SCV] slower data = 55
    [SCV] slower data = 15
    [SCV] slower data = 99
    [SCV] slower data = 91
    [SCV] slower data = 100
    

っといった感じになります。
SCVのマニュアルを見ると、クラス名どおり
keep_only/keep_outを使ったほうが処理速度は早いらしいです。

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。