|
ATTACH attribute |
Top Previous Next |
|
Some processing modules are made up from an FPGA and one or more processors attached to it. The links between such processors are often similar to the links between completely separate processors but may need to be managed in very different ways. For example, C6000 processors usually communicate with an FPGA using the external memory interface, EMIF. Rather than invent peculiar types of link to support these systems, Diamond handles the communications between attached processors itself. You still need to describe the physical connections (wires) between processors that are not attached.
You would usually declare all the processors involved and make the attachments explicitly.
PROCESSOR A MODULE_FPGA PROCESSOR B MODULE ATTACH=A PROCESSOR C MODULE ATTACH=A
Processor B and processor C are attached to processor A which must have a type that defines it can accept two (or more) attached processors of type MODULE. Such definitions are usually provided as part of the standard set of processor types in your edition of Diamond.
If a processor needs to be attached to another processor but you do not make that attachment explicit, Diamond attempts to make the attachment for you. The configurer can silently create 'implicit processors' for you. These are just like the processors you declare but they are completely invisible. When the configurer makes an attachment for you it searches through any implicit processors and uses the most recently-declared one it finds of the appropriate type that has not had its full quota of processors attached. If no such processor can be found, the configurer silently declares a new implicit one for you. The example above could be rewritten in the following way:
PROCESSOR B MY_DSP ! attachment to a new implicit processor PROCESSOR C MY_DSP ! attachment to the previous implicit processor
Some processors may be attached to one of a selection of other processors. For example, a processor of type SMQ_DSP may be attached to a processor of type SMQ_LX80_FPGA, SMQ_LX100_FPGA, or SMQ_LX160_FPGA. When Diamond has to create an implicit processor in such cases, it must choose an appropriate processor type. The 'LyrtechDefaults' utility allows you to set assumed FPGA and Lyrio+ processor types to be used for declarations of these implicit processors. You can execute LyrtechDefaults from the start menu: start/All Programs/3L Diamond/Lyrtech Defaults. This utility is also launched during Diamond installation to allow you to describe your hardware.
You start by selecting the default DSP processor type that corresponds to your Lyrtech board: SignalMasterQuad or SignalMaster Dual. This can be used in configuration files by giving the processor type DEFAULT. You then can choose the type to be assumed for the FPGA to which these DSPs are attached if you do not declare that FPGA explicitly. The available options depend on the type of DSP you have chosen. Finally you can select an assumed type for Lyrio+ daughter modules.
If you have selected <none> and yet require an implicit processor of that type, Diamond picks one of the available types and issues a warning.
You can always declare your FPGA and Lyrio+ processors explicitly and select any available type.
The configurer's verbose option shows you when implied processors are created and how automatic attachments have been made.
There can be a hardware significance on certain modules to the order in which processors are attached to an FPGA. For example, the first attached processor may be the only one that is capable of loading its parent FPGA. The order in which you declare attached processors in the configuration file corresponds to the manufacturer-defined ordering of processors on the module.
When you have a structure of attached processors, the configurer automatically invents implicit wires for you to connect the component processors as necessary; you never need to declare wires connecting attached processors.
There is a difference between the way explicit (user-declared) processors and implicit (configurer-declared) processors are treated. The definitions of FPGA processor types include a description of the standard link connections that correspond to the default bitstreams; other connections can be made, but new bitstreams will be needed to achieve them. The configurer creates these new bitstreams if you have declared the FPGA explicitly, but it never attempts to change the bitstream for an implicit processor. Implicit processors are therefore restricted to using standard connections. This can sometimes mean that there may not be enough wires to carry all the channels that your application requests, and the configurer will report that it is unable to route the channel. If this happens, you can either declare the FPGA explicitly and let the configurer invent the extra connections, or you will have to simplify the channel structure of your application. This is discussed further under the WIRE statement.
|