Clocking Block vs Program Block

Hi All,

According to Chris Spear’s System Verilog for Verification. It’s mentioned that Clocking blocks are used to create the synchronization between DUT and TB signals. In the next section, inside Program block the same statement is mentioned that program blocks are used to avoid race condition between DUT and TB. The basic difference between CB and Programming block is that CB runs in Observed region and PB runs in Reactive. These things I know.

So my question is, can someone tell me the application difference between CB and PB. Also, most of the EDA Vendors’ guidelines say that “Do not use PB”. what is the reason for that.

Thanks,

Mukul

In reply to mukul1996:

Read this article.

Hi @cgales ,
The above link is not working, I have confusion regarding this question.
Please help me to know the solution.

Yes, You are right about the region of executions. The other reasons why we use clocking block over program block is,

  1. Clocking block provides an input and output skews to sample and drive, program block doesn’t.
  2. Clocking block helps in handling clock skew and jitter, program block doesn’t.

Link is fixed