QuarkGuide
Master Controlled Quarks
| quark | data type | Group |
| | | || | |
| data field | sc_uint<X>* or sc_uint<X> (or equal representations like vector<sc_uint<X> > and stuff like that) (X is an int) | Basic |
| address field | sc_unit<Y> | Basic |
| data width | int | Basic |
| addr width | int | Basic |
| Read/Write Flag | bool or sc_bit | Basic |
| masterID | tlm_tag (part of request base) | Basic |
| Byte Enable | vector<sc_uint<X> > (size of vector equals number of datachunks, X is data width/8) | Simple Extension |
| buslock flag | bool or sc_bit | Simple Extension |
| priority | int (the higher the int the higher the priority) | Simple Extension |
| burst flag | bool or sc_bit | Burst Extension |
| fixed burst flag | bool or sc_bit | Burst Extension |
| burst lenght | int (only valid if fixed burst flag is set) | Burst Extension |
| Other flags | bool or sc_bit (e.g. ordered flag, guarded flag, compressed flag,...) | User Extensions |
Slave Controlled Quarks
| quark | data type | Group |
| | | || | |
| data field | sc_uint<X>* or sc_uint<X> (or equal representations like vector<sc_uint<X> > and stuff like that) (X is an int) | Basic |
| ack type | int, where 1=AACK, 2=DACK, 3=RETRY, 4=SPLIT. All other values will be treated as errors and will be passed to the user modules. Encoding of other values is bus and/or user dependend Examples: BTERM (Burst termination by slave), REARB (rearbitration command to arbiter) | Basic |
The Quark grouping is closely related to the signal grouping in the OCP (Open Core Protocol). All members of the Basic group are mandatory. The members of the Simple Extension group are optional. The members of the Burst Extension Group are also optional, but as soon as one of them is used, the existance of the others becomes mandatory. User Extensions are all individually optional (just like the simple extensions).
This list is still "work in progress". Further Quarks (and Quark groups) may be added in the future.
Posted January 8th, 2008 by WolfgangKlingauf