Many bus specifications differentiate between master and slave devices. A master device initiates transactions on a bus and a slave device performs an action in response to a transaction initiated by a master device. Master transactions are used to model transactions initiated by a master device, where the user makes an Apply call to initiate a single transaction. Slave transactions, by contrast, run continuously after an Apply call is made, so they are typically designed to block until a master transaction is initiated to the slave device, respond appropriately, then resume waiting for another master transaction.
For TestBencher, any timing diagram can be a Master or a Slave transactor by appropriately setting the Diagram Execution radio buttons in the Diagram Settings dialog (see Section 9.8: Diagram Setting Dialog for more information about the Diagram Execution settings). TestBencher generates appropriate transaction calls for each timing diagram based on this setting. The following table describes the typical operations available for master and slave transactions:
Desired Operation |
Method call to initiate operation |
Initiate a single master transaction |
Apply |
Execute pipelined master transactions |
Consecutive Apply-nowait calls (pipeling controlled by pipeline markers within the diagrams) |
Abort a master transaction |
Abort |
Start slave device or clock generator |
Apply-looping_nowait |
Stop slave device or clock generator |
Abort |
Section 7.1: Template, Sequencer, and Transaction Calls has more information about the Insert Diagram Subroutine Call dialog. The PCI example in the SynaptiCAD>Examples>TestBencher directory has both the master and slave diagrams drawn for the specification. You can load the project for your particular language and experiment with the transactions.