dyumnin / NCGPythonCocotb

Written test for Python + Cocotb QC developer
2 stars 14 forks source link

About Driver and scoreboard #3

Open shubhi704 opened 3 years ago

shubhi704 commented 3 years ago

Respected Sir, Can you please explain little bit about _driver_sends, scoreboard, monitor and put/get? How they are related to design modules? And little bit guide to implement them.

jahagirdar commented 3 years ago

Get Put are standardized TLM(Transaction level modeline) interfaces for communicating between modules. (e.g. SystemC, BSV, UVM)

A Get Interface provides data. A Put interface accepts data. The interface via which a module accepts data is modelled as a Put interface since we are "Putting data into the module" The interface via which a module provides data is modelled as a Get interface since we are "Getting data from the module"

At a very basic level the scoreboard is a checklist. When a set of transactions are applied to a port, we eventually expect a set of transactions at another port after some time. This list of expected transaction forms a scoreboard component, The other component of the scoreboard hooks to the destination port collects received transactions and checks off the corresponding entry in the list of a match is found. If match is not found it registers an error.

_driver_send is an abstract function defined in the cocotb bus model. We are expected to override it in our code to generate the cycle level transactions