Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | \r |
2 | The basic rules for all the interfaces in the TLM 2.0 kit are effective pass by\r | |
3 | value.Effective pass-by-value is used to implement message passing semantics.\r | |
4 | \r | |
5 | However, an exception is made for the pointer versions of tlm_request and\r | |
6 | tlm_response. These use pass by pointer for the data and byte enable fields.\r | |
7 | However, the basic message passing semantics will be preserved by obeying the\r | |
8 | rules below.\r | |
9 | \r | |
10 | 1. Allocate and Deallocation\r | |
11 | \r | |
12 | 1.1 If a process deallocates the arrays, the same process must deallocate the\r | |
13 | arrays.\r | |
14 | \r | |
15 | 1.2 If you can't or won't deallocate, use pass-by-val\r | |
16 | \r | |
17 | 1.3 People may call you a master, system initiator or whatever if you allocate\r | |
18 | \r | |
19 | 2 Read / Write Permissions\r | |
20 | \r | |
21 | 2.1 If you're a master and the transaction is a write, you have write\r | |
22 | permission on the arrays in the request\r | |
23 | \r | |
24 | 2.2 If you're a master and the transaction is a read, you have read permission\r | |
25 | on the arrays in the response\r | |
26 | \r | |
27 | 2.3 If you're a slave and the transaction is a write, you have read permission\r | |
28 | on the data in the request\r | |
29 | \r | |
30 | 2.4 If you're a slave and the transaction is a read, you have write permission\r | |
31 | on the data in the response\r | |
32 | \r | |
33 | 2.5 No other read or write permissions are granted on the arrays other than\r | |
34 | those specified above. \r | |
35 | \r | |
36 | 3 Request / Response matching\r | |
37 | \r | |
38 | 3.1 The slave must copy the pointers to the arrays from request to response.\r | |
39 | \r | |
40 | 3.2 The arrival of the response back at the master is used to determine when\r | |
41 | to deallocate or reuse the arrays.\r | |
42 | \r | |
43 | 4 Analysis\r | |
44 | \r | |
45 | 4.1 If you're doing analysis you must use the analysis interface ( eg\r | |
46 | monitoring, functional coverage, performance analysis, scoreboarding )\r | |
47 | \r | |
48 | 4.2 If you're designing a life extending analysis component ( eg a scoreboard )\r | |
49 | then you must use analysis_fifo or analysis_buffer with the by-val variants of\r | |
50 | the request and response datastructures.\r | |
51 | \r | |
52 | 4.3 If you're connecting a by-pointer TLM to a life extending analysis\r | |
53 | component, you must convert from by-pointer to by-val.\r | |
54 | \r |