[aadl]: Modelling best practices

dominique.blouin dominique.blouin at univ-ubs.fr
Wed Nov 2 09:22:38 EDT 2011


Hi Julien,

Here is some concrete example using AADL V1 :-( .

The first layer (highest genericity) captures the fact that a FPGA 
always contain a configurable component (conf_space) and that there is a 
data port of type "Bitstream" to transfer the FPGA configuration data. 
We also provide specific types for components that are synthesizable in 
the FPGA configurable component (not shown here).

/system Generic_FPGA/
/    features/
/      icap_port: in data port FPGA_Bitstream.impl;/
/  end Generic_FPGA;/
//
/ system FPGA_Conf_Space/
/    features/
/      icap_port: in data port FPGA_Bitstream.impl;/
/      bus_access: provides bus access FPGA_Bus.impl;/
/  end FPGA_Conf_Space;/
//
/system implementation Generic_FPGA.impl/
/    subcomponents/
/      conf_space: system;/
/  end Generic_FPGA.impl;/

At the next refinement level, the generic FPGA component is extended to 
provide a description for a specific FPGA model (/XC5VFX100T /in this 
case, but there could also be in-between layers to define a product 
family). This provides a description of the components that are also 
included in the FPGA such as PowerPC processors besides the configurable 
component.

/  system implementation XC5VFX100T_FPGA.impl
     extends generic_fpga::Generic_FPGA.impl
     subcomponents
       powerPC_0: processor PowerPC440.impl;
       powerPC_1: processor PowerPC440.impl;
       ethernet_ctrl: device Ethernet_Ctrl.impl;
       sysACE_ctrl: device SysACE_Ctrl.impl;
       -- Still needs to refine it otherwise error when refining the 
extended
       conf_space: refined to system;
     properties
       Power_Properties::Power_Avg_Max_Supported => 5.5 W;
   end XC5VFX100T_FPGA.impl;

/The generic configurable component is also redefined at this level to 
specify its features and the amount of available resources for 
configuration such as the number of memory and logical element basic blocks.
/
system XC5VFX100T_Conf_Space
     extends generic_fpga::FPGA_Conf_Space
     features
       icap_port: refined to in data port XC5VFX100T_Bitstream.impl;
       bus_access: refined to provides bus access XC5VFX100T_Bus.PLB;
       bus_access1: provides bus access XC5VFX100T_Bus.PLB;
       busAccPPC0_inst: provides bus access XC5VFX100T_Bus.PLB;
       busAccPPC0_data: provides bus access XC5VFX100T_Bus.PLB;
...
     properties
       FPGA_Properties::FPGA_Surface => 102400 cle;
   end XC5VFX100T_Conf_Space;
/
The next layer actually provides the configuration of the configurable 
component, using modes to model dynamic reconfiguration.

/  system implementation XC5VFX100T_Conf_Space_Conf.impl
     extends xc5vfx100t::XC5VFX100T_Conf_Space.impl
     subcomponents
       bram_memory: memory xc5vfx100t::BRAM.impl;
       plb_bus: bus xc5vfx100t::XC5VFX100T_Bus.PLB;
       opb_bus: bus xc5vfx100t::XC5VFX100T_Bus.OPB;
       ip_block_1: processor IP_Block.impl_1 in modes (all_ip_blocks_on, 
ip_block_1_on, ip_block_1_3_on, ip_block_1_2_on);
       ip_block_2: processor IP_Block.impl_2 in modes (all_ip_blocks_on, 
ip_block_2_on, ip_block_2_3_on, ip_block_1_2_on);
       ip_block_3: processor IP_Block.impl_3 in modes (all_ip_blocks_on, 
ip_block_3_on, ip_block_2_3_on, ip_block_1_3_on);
     connections
       bus access plb_bus -> bram_memory.Bus_Access;
       bus access plb_bus -> ip_block_1.bus_access in modes 
(all_ip_blocks_on, ip_block_1_on, ip_block_1_3_on, ip_block_1_2_on);
       bus access plb_bus -> ip_block_2.bus_access in modes 
(all_ip_blocks_on, ip_block_2_on, ip_block_2_3_on, ip_block_1_2_on);
       bus access plb_bus -> ip_block_3.bus_access in modes 
(all_ip_blocks_on, ip_block_3_on, ip_block_2_3_on, ip_block_1_3_on);
...
     modes
       no_ip_blocks_on: initial mode ;
       ip_block_3_on: mode ;
...
   end XC5VFX100T_Conf_Space_Conf.impl;
/
The FPGA is again extended and the configurable component is refined to 
the specific classifier presented above.

/  system implementation XC5VFX100T_FPGA_Configured.impl
     extends xc5vfx100t::XC5VFX100T_FPGA.impl
     subcomponents
       conf_space: refined to system XC5VFX100T_Conf_Space_Conf.impl;
     connections
       data port icap_port -> conf_space.icap_port;
       event port ip_block_on_to_ip_block_off -> 
conf_space.ip_block_on_to_ip_block_off;
       event port ip_block_off_to_ip_block_on -> 
conf_space.ip_block_off_to_ip_block_on;
   end XC5VFX100T_FPGA_Configured.impl;
/
The advantage of this approach is a clear separation of what is known at 
each layer so that analyses can be performed on the component of the 
proper layer containing the information needed for the analysis. Also, 
once a model library has been created for a given FPGA platform, it can 
be made read only and reuse with distinct configurable component 
configurations over which design space exploration can be performed.

If you need more details, the sources of this example are provided with 
the requirements tool that was used to define a number of non-functional 
requirements on configurable component resources, power consumption, etc.

Cheers,

D.

Le 01/11/2011 09:45, julien.delange at esa.int a écrit :
> Dear Dominique,
>
> Thanks for your answer. Unfortunately, it is difficult to retrieve in such
> a big paper the example that would really highlight the modelling pattern.
> Would it be possible to give a simple example of your modelling pattern ?
> Just with one or two components that show exactly what workaround you used
> ?
>
> Thanks again for your feedback,
>
>
>
>
>
> From:
> "dominique.blouin"<dominique.blouin at univ-ubs.fr>
> To:
> julien.delange at esa.int
> Cc:
> sae-aadl-users at lists.sei.cmu.edu
> Date:
> 31/10/2011 19:55
> Subject:
> Re: [aadl]: Modelling best practices
>
>
>
> Hi Julien,
>
> We have worked on a similar approach for modeling FPGA components with
> AADL. We use three layers of extension according to different genericity
> levels, using the AADL extend and refined to mechanisms. Basically, the
> first level is very generic and captures the fact that every FPGA may
> contain static (or built-in) components and a configurable component.
> The second level, defines the actual static components for a specific
> platform (e.g.: Xilinx Virtex ...). The third level captures the actual
> synthesized design of the configurable component.
>
> More info is available here:
> http://www.hindawi.com/journals/ijrc/2011/425401/. Hope this helps,
>
> D.
>
> Le 31/10/2011 14:57, julien.delange at esa.int a écrit :
>> Dear all,
>>
>> I am currently using AADL to capture a system architecture. It is
> composed
>> of many heterogeneous components.Then, I am wondering about the best
>> modelling patterns and I think this could interest different persons on
>> this list. The thing is that for some components, there is only few
>> variability but they share a lot of common properties/requirements.
>> For example, imagine a monitoring system with camera and an audio
>> recorder. These devices have some properties and constraints and are
>> connected to a network using a 100M ethernet link. The vendor also has
> the
>> SAME devices but with a wireless link.
>>
>> So, one approach would be to first model generic components like
>>
>> device generic_camera
>> properties
>>       ....
>> end generic_camera;
>>
>> device generic_recorder
>> properties
>>       ....
>> end generic_recorder;
>>
>> And then, create new device components that extend the generic one.
>>
>> device camera_eth extends generic_camera
>> features
>>      link : requires bus access ethernet_bus;
>> end camera_eth;
>>
>> device camera_wifi extends generic_camera
>> features
>>      link : requires bus access wifi_bus;
>> end camera_wifi;
>>
>> device recorder_eth extends generic_recorder
>> features
>>      link : requires bus access ethernet_bus;
>> end recorder_eth;
>>
>> device recorder_wifi extends generic_camera
>> features
>>      link : requires bus access wifi_bus;
>> end recorder_wifi;
>>
>>
>> But on the other hand, it forces to redeclare the features access while
> it
>> could be declared only in one generic component and then, be inherited.
>>
>> So, we could add
>> device generic_eth
>> features
>>      link : requires bus access ethernet_bus
>> end generic_eth;
>>
>> And then, if we have multiple inheritance, one would be able to write
>> device camera_ethernet extends generic_camera, generic_eth
>> end camera_ethernet;
>>
>> This would ensure that devices using the same network have the same
>> properties each other. Otherwise, network-related properties and
>> requirements must be duplicated, which could be error-prone. On the
> other
>> hand, adding multiple inheritance would raise new issues.
>>
>> So, I'm wondering what are the best practices to model such components
>> with few variability. I'm quite sure that some AADL users already face
>> such issues and so, having a feedback about existing experience would be
>> nice ! On the other hand, I hope this could be useful for other people
> and
>> then, show some useful modelling patterns !
>>
>> Thanks for any comment/suggestion,

-- 
Dominique BLOUIN

Ingénieur de Recherche / Research Engineer

Université de Bretagne Sud
Lab-STICC / CNRS UMR 3192

Centre de Recherches
BP92116 / 56321 LORIENT Cedex
Tel:0297874616 / Fax:0297874527

http://www.labsticc.fr/

-------------- next part --------------
HTML attachment scrubbed and removed


More information about the Sae-aadl-users mailing list