凡人の日々の経過を記録
カレンダー
カテゴリー
リンク
最新記事
(03/21)
(03/11)
(03/05)
(03/02)
(02/06)
ブログ内検索
コガネモチ
構造体もランダムを生成することができる.
次のような構造体がすでにあるとする。 struct data_t { sc_uint<12> addr; unsigned char payload[5]; }; addrとpayload[5]の6つの変数の値をランダムとするには、次を別途用意する。 template<> class scv_extensions<data_t> : public scv_extensions_base<data_t> { public: sc_extensions<sc_uint12> > addr; sc_extensions<unsigned char [5]> payload; SCV_EXTENSIONS_CTOR( data_t ) { SCV_FIELD( addr ); SCV_FIELD( paylaod ); } }; 使い方はつぎのようになる。 scv_smart<data_t> data_p( "data_p" ); data_p->addr.keep_out(0, 100); for (int i=0; i<5; ++i) data_p->payload[i].keep_only( 0, 100 ); for (int i=0; i<10; ++i) { data->next(); printf( "addr = %d, ", (int)data_p->addr ); printf( "payload = " ); printf( "%d, ", (int)data_p->payload[0] ); printf( "%d, ", (int)data_p->payload[1] ); printf( "%d, ", (int)data_p->payload[2] ); printf( "%d, ", (int)data_p->payload[3] ); printf( "%d\n", (int)data_p->payload[4] ); } 実行結果 ------------------------------------ addr = 31, payload = 84, 33, 24, 48, 65 addr = 85, payload = 41, 16, 72, 21, 81 addr = 99, payload = 80, 9, 53, 68, 20 addr = 64, payload = 68, 47, 13, 53, 53 addr = 38, payload = 58, 68, 83, 4, 11 addr = 33, payload = 98, 71, 90, 41, 80 addr = 58, payload = 24, 19, 58, 62, 99 addr = 96, payload = 21, 18, 27, 69, 47 addr = 25, payload = 70, 49, 23, 24, 41 addr = 11, payload = 71, 42, 55, 9, 19 ------------------------------------ PR この記事にコメントする
|