[sv-ec] interface classes and pre_randomize post_randomize

From: Daniel Mlynek <danielm@aldec.com.pl>
Date: Tue Apr 22 2014 - 04:11:10 PDT
LRM says:

    /"Interface classes contain two built-in empty virtual methods
    pre_randomize()and post_randomize() that are automatically called
    before and after randomization. These methods can be overridden. As
    a special case, pre_randomize()and post_randomize()shall not cause
    method name conflicts.//"/


1. Later on LRM says that pre/post randomize are not virtual so using 
virtual in above sentense seem to be an error (LRM: "The 
pre_randomize()and post_randomize()methods are not virtual.")

2. I assume that above quotation allows to define A and B like this:

    interface class A;
         parameter p=0;
         function void pre_randomize();
             $display("A");
         endfunction
    endclass

    interface class B;
         parameter p=0;
         function void pre_randomize();
             $display("B");
         endfunction
    endclass


But what should happened when class C implements both A and B  and 
randomize on C object is called via A,B or C handle?

    class C implements A, implements B;
    endclass
    C c=new;
    A a=c;
    B b=c;
    a.randomize; //A::pre_randomze is called?
    b.randomize;//B::pre_randomze is called?
    c.randomize;//A::pre_randomze and B::pre_randomze is called?


I cannot see where LRM defines this behaviour.



DANiel


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Tue Apr 22 04:12:26 2014

This archive was generated by hypermail 2.1.8 : Tue Apr 22 2014 - 04:12:41 PDT