next up previous contents
Next: isim_processorへのパケットの送信 Up: プロセッサから発行される要求に対する処理 Previous: isim_processorが扱うパケット

isim_processorから発行されるパケットの取得

isim_processor外部のシステムは、 isim_processorの外部出力ポート(outgoing_port) に発行されたパケットに記載されている情報を元に、そ れぞれに応じた処理を行う必要がある。 パケットに記載された情報は、次のようにすれば取得できる。 isim_processorの外部出力ポート(outgoing_port) にport_Aという名の 外部システムのポートが接続されているとする。
  if ( port_A.have_packet() && port_A.inst_id() != -1 ) {
      int inst_id      = port_A.inst_id();
      md_addr_t addr   = port_A.addr();
      word_t data      = port_A.data();
      word_t data2     = port_A.data2();
      half_t data_half = port_A.data_half();
      byte_t data_byte = port_A.data_byte();
      int data_size    = port_A.data_size();
      int rw           = port_A.rw();
      int puid         = port_A.puid();
	  
      /* パケットを取得したので、初期化する */
      port_A.reset_packet();

      /* パケットに応じた処理を以下に記述 */

                 ……………
                 ……………

  }

パケットの初期状態におけるinst_idの値は-1であり、 isim_processorから発行されるパケットのinst_idには 正の値が入るため、パケットの情報取得の条件に port_A.inst_id() != -1 を入れることによって、無駄な処理を省くことができる。 また、情報を取得した後、
  port_A.reset_packet();
とすることによって、パケットは初期化され、 isim_processorは新しいパケットを 外部出力ポート(outgoing_port)に発行できるようになる。



Toshiya Minai
平成17年2月1日