RE: [sv-ec] Program Block / Reactive Region Use Cases & Requirements

From: <Ryan.S.Warner_at_.....>
Date: Thu Dec 07 2006 - 10:22:53 PST
With the discussion of the region a task runs in being ruled by where the
thread was started, let me propose an alternative to the possibility for
the program block.  It should just define a reactive process.  So the
following would be equivalent:

// P1800
program tb;
  initial begin
    // reactive process
  end
endprogram

// suggested change
module tb;
  program begin
    //reactive process
  end
endmodule

This is essentially what is being proposed anyway, correct?  This always
seemed the most natural representation of a program to me anyway.  It is a
thread (or set of threads), not a physical piece of hierarchy.

Please correct me if I'm wrong here.  But under the current proposal, I
could put my entire testbench in modules (using classes if desired) and
have it run in the reactive region.  I'd just need an artificial level of
hierarchy containing the program to start the testbench thread.  In other
words:

class sys_env extends rvm_env;
  // blah blah
endclass

//------------------------------------------------------------------------
//What I want to happen based on what I expect SV3.1 and P1800 today
automatic program sys_tb;
  sys_env env;
  initial begin
    env = new;
    env.run();
  end
endprogram

module top;
  sys_tb tb;
endmodule

//------------------------------------------------------------------------
// Proposed change allows
program start_tb;
  initial begin
    top.env = new;
    top.env.run();
  end
endprogram

module top;
  sys_env env;
  start_tb start;
endmodule


//------------------------------------------------------------------------
// I propose
module top;
  sys_env env;
  program begin
    env = new;
    env.run();
  end
endmodule

Regards,
Ryan Warner
ryan.s.warner@seagate.com
Received on Thu Dec 7 10:24:25 2006

This archive was generated by hypermail 2.1.8 : Thu Dec 07 2006 - 10:24:49 PST