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

今回は、SCVを使った制約付きランダム生成(その2)です。
前回のデータを元に更に制約を加えてみたいと思います。

  • サンプルコード

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

  • $> ./main 
    
                 SystemC 2.2.0 --- Jan 15 2012 14:19:56
            Copyright (c) 1996-2006 by all Contributors
                        ALL RIGHTS RESERVED
    [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] new slower data = 56
    [SCV] new slower data = 92
    [SCV] new slower data = 55
    [SCV] new slower data = 93
    [SCV] new slower data = 55
    [SCV] new slower data = 91
    [SCV] new slower data = 93
    [SCV] new slower data = 96
    [SCV] new slower data = 60
    [SCV] new slower data = 93
    [SCV] new slower data = 99
    [SCV] new slower data = 96
    [SCV] new slower data = 96
    [SCV] new slower data = 94
    [SCV] new slower data = 60
    [SCV] new slower data = 55
    [SCV] new slower data = 100
    [SCV] new slower data = 58
    [SCV] new slower data = 93
    [SCV] new slower data = 58
    

新しく制約を追加したものは、制約通りに出力されています。
ちなみに、 SCV_BASE_CONSTRAINT(slower); を記載しないと、
ベースクラス(slower)の制約はなかったものとなります。

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

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

カレンダー
05 | 2017/06 | 07
- - - - 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 -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数