Changes between Version 8 and Version 9 of DsxDocumentation
- Timestamp:
- Jan 28, 2008, 12:30:39 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
DsxDocumentation
v8 v9 25 25 * The software tasks are supposed to be written in C or C++, but - for portability reasons - the tasks must use an abstract '''System Resource Layer (SRL)''' API to access the communication and synchronizations resources. 26 26 * Each task in the TCG can be implemented as a '''software task''' (software running on an embedded processor), or can be implemented as an '''hardware task''', (running as a dedicated hardware coprocessor). 27 * DSX allows the programmer to use unprotected shared memory spaces, but the prefered inter-tasks communication mechanism use the '''MWMR middleware'''. The MWMR (Multi-Writer, Multi-Reader) channels, are implemented as software FIFOs and can be shared by ''software tasks'', and by ''hardware tasks''.27 * DSX allows the programmer to use unprotected shared memory spaces, but the prefered inter-tasks communication mechanism use the '''MWMR middleware'''. The MWMR (Multi-Writer, Multi-Reader)communication channels, are implemented as software FIFOs and can be shared by ''software tasks'', and by ''hardware tasks''. 28 28 * DSX provides classical synchronization mechanisms such as barriers and locks, but inter-task synchronisation is mainly done through the data availability in the MWMR channels. 29 29 * The target hardware architecture is a shared memory multi-processor system on chip (MP-SoC) using the SoCLib library of IP cores. But - in order to validate the multi-threaded software application - DSX is able to generate an executable binary code for a standard POSIX workstation. … … 83 83 == C) Defining the software application == 84 84 85 This chapterdescribes the DSX/L syntax used to define the Task & Communication Graph structure.85 This section describes the DSX/L syntax used to define the Task & Communication Graph structure. 86 86 The TCG is a bipartite graph: the two types of nodes are the tasks and the communication channels. 87 87 … … 165 165 In the mapping section of the DSX/L program, the lock can be explicitely placed in the memory space. 166 166 167 === C6) Signal definition === 168 169 The DSX signals are used to signal a special event that is not synchronized with the data. The signal is transmitted 170 to all registered tasks. The tasks are interrupted to execute the corresponding signal handler. Signals are mainlly 171 used to implement soft real time constraints, a task can receive a signal, but cannot send a signal. 172 {{{ 173 My_Signal = Signal( 'signal_name' ) 174 }}} 175 There is nothing to place in the mapping section. 176 177 === C7) Task instanciation === 167 === C6) Task instanciation === 178 168 179 169 A task is an instance of a task model. The constructor arguments are the task name ''task_name'', the task model 180 ''Task_Model'' (created by the TaskModel() function), a list of resources (MWMR channels, synchronization barriers, 181 locks or memspaces), and the list of the signals that can be received by the task . DSX performs type checking between the port name and the associated resource. 170 ''Task_Model'' (created by the TaskModel() function), and a list of resources (MWMR channels, synchronization barriers, locks or memspaces), that must be associated to the task ports. DSX performs type checking between the port name and the associated resource. 182 171 {{{ 183 172 My_Task = Task( 'task_name', 184 173 Task_Model , 185 { 'port_name' : My_Channel, 'barrier_name' : My_Barrier, ... } , 186 { 'signal_name : My_Signal, ... } ) 174 portmap = { 'port_name' : My_Channel, 'barrier_name' : My_Barrier, ... } ) 187 175 }}} 188 176 In the mapping section of the DSX/L program, 4 software objects must be placed : … … 192 180 1. ''run'' : processor running the task 193 181 194 A task that has real time constraints must be instanciated by a special constructor. 195 There is two extra arguments : ''cond_activate'' is the signal definig the activation condition, and ''cond_deadline'' 196 is the signal defining the dead_line condition. 197 {{{ 198 My_Rt_Task = RtTask( 'task_name', 199 Task_Model , 200 { 'port_name' : My_Channel, 'barrier_name' : My_Barrier, ... } , 201 { 'signal_name : My_Signal, ... } , 202 cond_activate , 203 cond_deadline ) 182 === C8) TCG definition === 183 184 The Task and Communication Graph must be defined : 185 {{{ 186 My_Tcg = Tcg( 187 Task( 'task_name1, 188 Task_Model1, 189 portmap = { ’in’:input, ’out’:output } ), 190 Task( 'task2', 191 Task_Model2, 192 portmap = { ’in’:input2, ’out’:output2 } ) 193 ... ) 204 194 }}} 205 195 206 196 == D) Defining the hardware architecture == 207 197 198 This section describes the DSX/L syntax used to define the MP-SoC hardware architecture, 199 using the hardware components defined in the SoCLib library. 200 201 === D1) SoCLib components definition === 202 203 In the present version of DSX, each hardware component must be described by a PYTHON 204 class that defines the component interface, and the component parameters. The instance 205 name is mandatory, but all other parameters have default values and can be skipped: 206 {{{ 207 # creation of a MIPS R3000 processor core 208 MY_proc0 = Mips( 'proc0' ) 209 210 # creation of a generic cache 211 }}} 212 213 === D2) Connecting the components === 214 215 === D3) Address space segmentation === 216 217 === D4) Hardware architecture definition === 218 219 === D5) Mapping table === 220 221 === D6) Generic platforms === 222 208 223 == E) Mapping the software on the hardware == 209 224 225 This section describes the DSX/L syntax used to map the software objects on the hardware architecture. 226 227 === E1) Mapper declaration === 228 229 === E2) Mapper definition === 230 210 231 == F) Code generation == 211 232