1
\$\begingroup\$

For the first time, I am approaching the world of Verification by using SystemVerilog, and I have learnt about the TB components only recently (Generator, Driver, Monitor etc.). My actual task right now is to realize a testbench in SV, creating all those components, for an Asynchronous FIFO, which you can find at the following link:

http://www.sunburst-design.com/papers/CummingsSNUG2002SJ_FIFO1.pdf

I know when it comes to realize a testbench in Verilog for a design, I should only focus on the top_level of the design, even if there are multiple modules instantiated inside. But, since now I need to realize the Transaction class, the Scoreboard, etc., I would like to be sure on what I need to focus.

\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

Yes, for a design this small, you should focus on the top-level of the design, not the submodules.

Referring specifically to section "6.1 fifo1.v - FIFO top-level module" in the document, the top-level module (named fifo1) has a simple interfaces: input and output data busses, input controls and output status. The submodules are very simple: synchronizers, memory model and flag control logic. I don't think it is worth building models for each of those.

The focus should be to create a driver to send data into the FIFO. For this, you need a data transaction model, an interface and a generator to create the transactions. For the output, you need a monitor, an interface and a scoreboard to compare the input data to the output data.

If you eventually create a larger design that instantiates this FIFO module and includes other bulky design modules (like SPI/UART serial logic), then you would also create top-level models for these other design blocks.


Se also: SystemVerilog testbench tutorial example

\$\endgroup\$
0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.