Changes between Initial Version and Version 1 of DsxvmHardware


Ignore:
Timestamp:
Oct 12, 2012, 3:56:38 PM (12 years ago)
Author:
karaoui
Comment:

Initial Version

Legend:

Unmodified
Added
Removed
Modified
  • DsxvmHardware

    v1 v1  
     1''' Index by Title ''' | ''' [RecentChanges Index by Date] '''
     2
     3[[DsxvmHardware]]
     4
     5This page explain how to describe the hardware in Dsx-vm.
     6
     7== General description ==
     8
     9We first start by creating a Hardware object:
     10
     11{{{
     12Hardware(cluster_x, cluster_y, nb_proc)
     13}}}
     14 - `cluster_x` : number of cluster in the abscisse axe (int)
     15 - `cluster_y` : number of cluster in the ordinate axe (int)
     16 - `nb_proc` : number of proc by cluster
     17
     18Both cluster_x and cluster_y parameter represent the number of cluster in the platform. If you have a non-clustered platform, you should then set each value to 1.
     19
     20== Peripehrals ==
     21
     22Once we have described the platform, we could attach different peripheral to it:
     23
     24    * TIMER : a timer peripheral, useful for the scheduling of the processors
     25      Timer(name, pbase, channel_size, nb_channel)
     26    * ICU : a concentrator of interrupt line, mandatory if we got irqs on the platform
     27      ICU(name, pbase, channel_size, nb_channel)
     28    * XICU : a concentrator of interrupt line and a timer, this component and the couple !Timer/Icu can't be in the same platform   
     29      XICU(name, pbase, channel_size, nb_channel)
     30    * Dma : a dma component
     31      Dma(name, pbase, channel_size, nb_channel)
     32    * Tty : a multi-tty terminal
     33      Tty(name, pbase, channel_size, nb_channel)
     34    * Fbf : a frame-buffer
     35      Fbf(name, pbase, channel_size, nb_channel)
     36    * RAM : a RAM memory
     37      RAM(name, pbase, size)
     38    * ROM : a ROM memory, we must have one at 0xbfc00000 address with the a minimal size of 0x1000
     39      ROM(name, pbase, size)
     40    * !MwmrCoprocTaskWrapper : declare a coproc which is able to simulate the a C task by wrapping it in a SystemC coproc. The coproc (a SystemC module) will only be generated if a task have been mapped
     41    !MwmrCoprocTaskWrapper(name, pbase, channel_size, nb_channel, sc_name)
     42
     43The parameters are the following:
     44
     45    - name : name of the component
     46    - pbase : physical base address of the component
     47    - channel_size : the size of one channel, or the size of the component if it doesn't support multiple channel
     48    - nb_channel : number of channel, set to '1' if no channel
     49    - size : size of the memory
     50    - sc_name : the SystemC name of the coproc
     51
     52== Irqs ==
     53
     54This is a special component able who is able to describe the the routing of the interrupt line.
     55{{{
     56    Irq(proc_id, cluster_id, icu_irq_id, peri, channel_id)
     57}}}
     58
     59 - `proc_id` : the proc_id at which the irq is attached
     60 - `icu_id` : the icu_id line at which the irq is attached
     61 - `cluster_id` : the cluster_id which contain the proc, icu and the peri
     62 - `peri` : the class of the peripheral from which the request is sent
     63 - `channel_id` : the channel_id of the peripheral
     64
     65Here's an example for a one cluster platform:
     66
     67Another example for a multi-cluster platform: