Changes between Version 74 and Version 75 of Writing Rules/Tlmt
- Timestamp:
- Nov 15, 2008, 6:49:31 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Writing Rules/Tlmt
v74 v75 295 295 defining if it should participate to the arbitration. This '''active''' flag is always set to true for general purpose processors. 296 296 Any arbitration thread receiving a timed request is resumed. It must obtain an up to date timing & activity information for all its input channels before making any decision. 297 To do that, the LocalTime and ActivityStatus of all VCI initiators are considered as global variables, that can be accessed (forread only) by all arbitration threads.297 To do that, the !LocalTime and !ActivityStatus of all VCI initiators are considered as global variables, that can be accessed (read only) by all arbitration threads. 298 298 The arbitration policy is the following : The arbitration thread scans all its input channels, and selects the smallest time between the active initiators. 299 299 If there is a request, this request is forwarded to the target, and the arbitration thread local time is updated. 300 If not, the thread is descheduled and will be resumed when it receives a new request.300 If there is no request from this initiator, the thread is descheduled and will be resumed when it receives a new request. 301 301 302 302 For efficiency reasons, in this implementation, each arbitration thread constructs - during elaboration of the simulation - two local array of pointers (indexed 303 by the input channel index) to access the LocalTime andActivityStatus variables of the corresponding VCI initiators. To get this information, each arbitration thread303 by the input channel index) to access the !LocalTime and !ActivityStatus variables of the corresponding VCI initiators. To get this information, each arbitration thread 304 304 uses the '''nb_transport_bw()''' function on all its VCI target ports, with a a dedicated value for the phase called '''soclib::tlmt::TLMT_INFO'''. The payload argument refers to the same 305 305 '''tlmt_vci_transaction''' object as the two other phase values (TLMT_CMD and TLMT_RSP). … … 309 309 phase = soclib::tlmt::TLMT_INFO; 310 310 m_RspArbCmdRout[i]->p_vci->nb_transport_bw(payload, phase, rspTime); 311 m_array[i]. activity= payload.get_activity_ptr();312 m_array[i]. time = payload.get_local_time_ptr();311 m_array[i].ActivityStatus = payload.get_activity_ptr(); 312 m_array[i].LocalTime = payload.get_local_time_ptr(); 313 313 } 314 314 }}}