Subject: RE: Handling of "implicit" declarations
From: Peter Flake (flake@co-design.com)
Date: Mon Oct 08 2001 - 06:33:29 PDT
Stefen,
Thanks for your explanations. I would just like to point out that by using
parameters (possibly with generate), including 'type' parameters, an
interface can be made very flexible. At the lowest level, it can be just a
bundle of wires.
Peter.
At 12:04 PM 9/24/01 -0700, Stefen Boyd wrote:
>At 11:23 AM 9/24/2001 -0700, David Smith wrote:
> >How does this work for a netlist description of a cell based design that
> has to be used to drive place and route?
> >
> >Are you saying that all cells have to be re-written to use interfaces?
>David,
>
>No, you don't have to rewrite cells to use interfaces.
>My option 2 was directed at this problem. For example,
>let's talk to an ethernet phy:
>
>module eth_phy (input clk, data, output tx_ok);
>...
>endmodule
>
>if we want to connect to this module, we have several
>options. Let's assume that the interface contains
>the three wires we need.
>
>1) instantiate using the wires of the interface:
> eth_phy eth_phy(ethint.clk, ethint.data, ethint.tx_ok);
>
>2) instantiate with modport
> eth_phy eth_phy(ethint.tx_modport);
>
>3) instantiate without modport (all wires in interface are
> hooked up... so you'll only be allowed to have the
> three used by the transmitting phy).
> eth_phy eth_phy(ethint);
>
>
>At 11:24 AM 9/24/2001 -0700, David Smith wrote:
> >Also, how do you do partial change of an interface? I have one branch I
> want to modify to be implemented at the cell level and the rest at the
> system level. I have to change the definition of just those interfaces do
> I not? Is this not similar to having to change declarations? Help me
> understand since it is not clear.
>
>Keep in mind that an interface is only declared
>at one place and it is passed everywhere else
>as an "interface" declaration. Huh??? Let me
>show an example:
>
>module top;
> env_ctl env_ctl;
> exp_fifo lan2wan_data1;
> eth2pl3 eth_intf1;
>
> eth_gen eth1(eth_intf1, lan2wan_data1, env_ctl);
>...
>endmodule
>
>I have an eth_gen module with three interfaces connected.
>If I look at the eth_gen module header:
>
>module eth_gen(interface send2dut,
> interface checker_pkts,
> interface env_ctl);
>...
>endmodule
>
>Notice that send2dut is simply of type "interface." If
>I have five of them and wanted one of those five to
>use a physical implementation on one side, I can do
>it two different ways:
>
>1) create a new interface that has the physical
> implementation and connect that to the one
> instance that needs a low level interface.
> For example:
> eth2pl3_low_level eth_intf_LL;
> eth_gen eth1(eth_intf_LL, lan2wan_data1, env_ctl);
>
>2) create a 'split-personality' interface. It would
> have tasks and functions to call for high level
> interfaces, but would also include the wires
> needed for the low level implementation.
>
>Either way, you can work with mixed levels of
>representation in the design.
>
>Stefen
>
>
>--------------------
>Stefen Boyd Boyd Technology, Inc.
>stefen@BoydTechInc.com (408)739-BOYD
>www.BoydTechInc.com (408)739-1402 (fax)
This archive was generated by hypermail 2b28 : Mon Oct 08 2001 - 08:34:58 PDT