/** * <copyright> * Copyright (c) 2009-2012, IETR/INSA of Rennes * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of the IETR/INSA of Rennes nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * </copyright> */ package net.sf.orcc.backends.llvm.tta.architecture; import java.util.Map; import net.sf.orcc.df.Connection; import net.sf.orcc.graph.Vertex; import org.eclipse.emf.common.util.EList; /** * <!-- begin-user-doc --> A representation of the model object ' * <em><b>Processor</b></em>'. <!-- end-user-doc --> * * <p> * The following features are supported: * <ul> * <li>{@link net.sf.orcc.backends.llvm.tta.architecture.Processor#getGcu <em>Gcu</em>}</li> * <li>{@link net.sf.orcc.backends.llvm.tta.architecture.Processor#getBuses <em>Buses</em>}</li> * <li>{@link net.sf.orcc.backends.llvm.tta.architecture.Processor#getBridges <em>Bridges</em>}</li> * <li>{@link net.sf.orcc.backends.llvm.tta.architecture.Processor#getSockets <em>Sockets</em>}</li> * <li>{@link net.sf.orcc.backends.llvm.tta.architecture.Processor#getFunctionUnits <em>Function Units</em>}</li> * <li>{@link net.sf.orcc.backends.llvm.tta.architecture.Processor#getRegisterFiles <em>Register Files</em>}</li> * <li>{@link net.sf.orcc.backends.llvm.tta.architecture.Processor#getROM <em>ROM</em>}</li> * <li>{@link net.sf.orcc.backends.llvm.tta.architecture.Processor#getLocalRAMs <em>Local RA Ms</em>}</li> * <li>{@link net.sf.orcc.backends.llvm.tta.architecture.Processor#getSharedRAMs <em>Shared RA Ms</em>}</li> * <li>{@link net.sf.orcc.backends.llvm.tta.architecture.Processor#getMappedActors <em>Mapped Actors</em>}</li> * <li>{@link net.sf.orcc.backends.llvm.tta.architecture.Processor#getConfiguration <em>Configuration</em>}</li> * </ul> * </p> * * @see net.sf.orcc.backends.llvm.tta.architecture.ArchitecturePackage#getProcessor() * @model * @generated */ public interface Processor extends Component { /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @model * @generated */ FunctionUnit connect(Memory sharedMemory); /** * Returns the number used to identified the address-space where is mapped * the given connection. * * @param connection * a connection * @return the id of the address-space. */ Integer getAddrSpaceId(Connection connection); /** * Returns the value of the '<em><b>Bridges</b></em>' containment reference * list. The list contents are of type * {@link net.sf.orcc.backends.llvm.tta.architecture.Bridge}. <!-- * begin-user-doc --> * <p> * If the meaning of the '<em>Bridges</em>' containment reference list isn't * clear, there really should be more of a description here... * </p> * <!-- end-user-doc --> * * @return the value of the '<em>Bridges</em>' containment reference list. * @see net.sf.orcc.backends.llvm.tta.architecture.ArchitecturePackage#getProcessor_Bridges() * @model containment="true" * @generated */ EList<Bridge> getBridges(); /** * Returns the value of the '<em><b>Buses</b></em>' containment reference * list. The list contents are of type * {@link net.sf.orcc.backends.llvm.tta.architecture.Bus}. <!-- * begin-user-doc --> * <p> * If the meaning of the '<em>Buses</em>' containment reference list isn't * clear, there really should be more of a description here... * </p> * <!-- end-user-doc --> * * @return the value of the '<em>Buses</em>' containment reference list. * @see net.sf.orcc.backends.llvm.tta.architecture.ArchitecturePackage#getProcessor_Buses() * @model containment="true" * @generated */ EList<Bus> getBuses(); /** * Returns the value of the '<em><b>Configuration</b></em>' attribute. * The literals are from the enumeration {@link net.sf.orcc.backends.llvm.tta.architecture.ProcessorConfiguration}. * <!-- begin-user-doc --> * <p> * If the meaning of the '<em>Configuration</em>' attribute isn't clear, * there really should be more of a description here... * </p> * <!-- end-user-doc --> * @return the value of the '<em>Configuration</em>' attribute. * @see net.sf.orcc.backends.llvm.tta.architecture.ProcessorConfiguration * @see #setConfiguration(ProcessorConfiguration) * @see net.sf.orcc.backends.llvm.tta.architecture.ArchitecturePackage#getProcessor_Configuration() * @model * @generated */ ProcessorConfiguration getConfiguration(); /** * Returns the functional unit with the given name. * * @param name * a name * @return The functional unit with the given name. */ FunctionUnit getFunctionUnit(String name); /** * Returns the value of the '<em><b>Function Units</b></em>' containment * reference list. The list contents are of type * {@link net.sf.orcc.backends.llvm.tta.architecture.FunctionUnit}. <!-- * begin-user-doc --> * <p> * If the meaning of the '<em>Function Units</em>' containment reference * list isn't clear, there really should be more of a description here... * </p> * <!-- end-user-doc --> * * @return the value of the '<em>Function Units</em>' containment reference * list. * @see net.sf.orcc.backends.llvm.tta.architecture.ArchitecturePackage#getProcessor_FunctionUnits() * @model containment="true" * @generated */ EList<FunctionUnit> getFunctionUnits(); /** * Returns the value of the '<em><b>Gcu</b></em>' containment reference. * <!-- begin-user-doc --> * <p> * If the meaning of the '<em>Gcu</em>' containment reference isn't clear, * there really should be more of a description here... * </p> * <!-- end-user-doc --> * @return the value of the '<em>Gcu</em>' containment reference. * @see #setGcu(GlobalControlUnit) * @see net.sf.orcc.backends.llvm.tta.architecture.ArchitecturePackage#getProcessor_Gcu() * @model containment="true" * @generated */ GlobalControlUnit getGcu(); /** * Returns the value of the '<em><b>Local RA Ms</b></em>' containment * reference list. The list contents are of type * {@link net.sf.orcc.backends.llvm.tta.architecture.Memory}. <!-- * begin-user-doc --> * <p> * If the meaning of the '<em>Local RA Ms</em>' containment reference list * isn't clear, there really should be more of a description here... * </p> * <!-- end-user-doc --> * * @return the value of the '<em>Local RA Ms</em>' containment reference * list. * @see net.sf.orcc.backends.llvm.tta.architecture.ArchitecturePackage#getProcessor_LocalRAMs() * @model containment="true" * @generated */ EList<Memory> getLocalRAMs(); /** * Returns the value of the '<em><b>Mapped Actors</b></em>' reference list. * The list contents are of type {@link net.sf.orcc.graph.Vertex}. <!-- * begin-user-doc --> * <p> * If the meaning of the '<em>Mapped Actors</em>' reference list isn't * clear, there really should be more of a description here... * </p> * <!-- end-user-doc --> * * @return the value of the '<em>Mapped Actors</em>' reference list. * @see net.sf.orcc.backends.llvm.tta.architecture.ArchitecturePackage#getProcessor_MappedActors() * @model * @generated */ EList<Vertex> getMappedActors(); /** * Returns the reference of the Memory where is mapped the given connection. * * @param connection * a connection * @return the reference of the associated memory */ Memory getMemory(Connection connection); /** * Returns the memory shared with the given processor. * * @param processor * the given processor * @return the memory shared with the given processor or null if it is not * existing */ Memory getMemorySharedWith(Processor processor); /** * Return the map associating each memory to its own address-space id. * * @return the map */ Map<Memory, Integer> getMemToAddrSpaceIdMap(); /** * Returns the value of the '<em><b>Register Files</b></em>' containment * reference list. The list contents are of type * {@link net.sf.orcc.backends.llvm.tta.architecture.RegisterFile}. <!-- * begin-user-doc --> * <p> * If the meaning of the '<em>Register Files</em>' containment reference * list isn't clear, there really should be more of a description here... * </p> * <!-- end-user-doc --> * * @return the value of the '<em>Register Files</em>' containment reference * list. * @see net.sf.orcc.backends.llvm.tta.architecture.ArchitecturePackage#getProcessor_RegisterFiles() * @model containment="true" * @generated */ EList<RegisterFile> getRegisterFiles(); /** * Returns the register file with the given name. * * @param name * the given name * @return the register file with the given name */ RegisterFile getRegisterFile(String name); /** * Returns the value of the '<em><b>ROM</b></em>' containment reference. * <!-- begin-user-doc --> * <p> * If the meaning of the '<em>ROM</em>' containment reference isn't clear, * there really should be more of a description here... * </p> * <!-- end-user-doc --> * @return the value of the '<em>ROM</em>' containment reference. * @see #setROM(Memory) * @see net.sf.orcc.backends.llvm.tta.architecture.ArchitecturePackage#getProcessor_ROM() * @model containment="true" * @generated */ Memory getROM(); /** * Returns the value of the '<em><b>Shared RA Ms</b></em>' reference list. * The list contents are of type * {@link net.sf.orcc.backends.llvm.tta.architecture.Memory}. <!-- * begin-user-doc --> * <p> * If the meaning of the '<em>Shared RA Ms</em>' reference list isn't clear, * there really should be more of a description here... * </p> * <!-- end-user-doc --> * * @return the value of the '<em>Shared RA Ms</em>' reference list. * @see net.sf.orcc.backends.llvm.tta.architecture.ArchitecturePackage#getProcessor_SharedRAMs() * @model transient="true" changeable="false" volatile="true" derived="true" * @generated */ EList<Memory> getSharedRAMs(); /** * Returns the value of the '<em><b>Sockets</b></em>' containment reference * list. The list contents are of type * {@link net.sf.orcc.backends.llvm.tta.architecture.Socket}. <!-- * begin-user-doc --> * <p> * If the meaning of the '<em>Sockets</em>' containment reference list isn't * clear, there really should be more of a description here... * </p> * <!-- end-user-doc --> * * @return the value of the '<em>Sockets</em>' containment reference list. * @see net.sf.orcc.backends.llvm.tta.architecture.ArchitecturePackage#getProcessor_Sockets() * @model containment="true" * @generated */ EList<Socket> getSockets(); /** * Sets the value of the '{@link net.sf.orcc.backends.llvm.tta.architecture.Processor#getConfiguration <em>Configuration</em>}' attribute. * <!-- begin-user-doc --> <!-- * end-user-doc --> * @param value the new value of the '<em>Configuration</em>' attribute. * @see net.sf.orcc.backends.llvm.tta.architecture.ProcessorConfiguration * @see #getConfiguration() * @generated */ void setConfiguration(ProcessorConfiguration value); /** * Sets the value of the '{@link net.sf.orcc.backends.llvm.tta.architecture.Processor#getGcu <em>Gcu</em>}' containment reference. * <!-- begin-user-doc --> <!-- * end-user-doc --> * @param value the new value of the '<em>Gcu</em>' containment reference. * @see #getGcu() * @generated */ void setGcu(GlobalControlUnit value); /** * Sets the value of the '{@link net.sf.orcc.backends.llvm.tta.architecture.Processor#getROM <em>ROM</em>}' containment reference. * <!-- begin-user-doc --> <!-- * end-user-doc --> * @param value the new value of the '<em>ROM</em>' containment reference. * @see #getROM() * @generated */ void setROM(Memory value); } // Processor