RegisterLogin  
Update Profile
   
You are here: Forum  
Minimize 
SVUG Community Forum
Subject: Original Post: telemarkguru
Prev Next
You are not authorized to post a reply.

Author Messages
forumUser is Offline

Posts:0

04/27/2007 5:38 PM  

I just learned that the modport_hierarchical_ports_declaration syntax from the Accellera LRM is
missing in the IEEE 1800 LRM. Without this feature it is not clear (at least to me) how one
could express hierarchical interfaces in a useful way. E.g:

interface part1;
logical foo, bar;
modport master(output foo, input bar);
modport slave(input foo, output bar);
endinterface

interface combined;
part1 p1(), p2();
modport master(p1.master, p2.master); // this is not allowed in the IEEE LRM
modport slave(p1.slave, p2.slave);
endinterface

module masters(combined.master m);
master1 m1(.m(m.p1));
master2 m2(.m(m.p2));
endmodule

Does anyone have any idea how to express this in a synthesizable way in
IEEE 1800 SystemVerilog ?

-stefan

forumUser is Offline

Posts:0

04/27/2007 5:38 PM  

Stefan,

This was a major issue during the IEEE balloting process. See http://www.eda-stds.org/svdb/bug_view_page.php?bug_id=0000629 (guest/guest)

The issue boils down to how the composition of the interface is seen from the master: Does it see the modport hierarchy, or are the nested modports promoted up with an OO-like inheritance? Ultimately, the committee could not come to consensus and took the feature out. It could be added back in once an agreement is reached, or it could be replaced with something completely different.

Today, you will have to use modport expressions to get the synthesizable code you are looking for.

interface combined;
part1 p1(), p2();
modport master(output .p1_foo(p1.foo), .p2_foo(p2.foo), input .p1_bar(p1.bar). p2_bar(p2.bar));
modport slave(input .p1_foo(p1.foo) .p2_foo(p2.foo), output .p1_bar(p1.bar), p2_bar(p2.bar));

endinterface

- Dave

forumUser is Offline

Posts:0

04/27/2007 5:38 PM  

Thanks for the answer.

So the conclusion is that there is no practical support for hierarchical interfaces in IEEE 1800 SystemVerilog. Modport expressions does not solve the problem as one would like to connect
entire sub-interfaces to sub-modules (module master in the example). And this also suggests that
the OO-inheritance like promotion of signals is no good solution (it also gives potential name conflicts).

Well, I guess we'll have to stick with flat interfaces for now.

-stefan

You are not authorized to post a reply.
Forums > SVUG Archive > Hierarchical interfaces > Original Post: telemarkguru



ActiveForums 3.7
  

 Copyright 2008 by SystemVerilog User Group Contact Us    Privacy Statement