I noticed that the vvc_genertor.py script generates a vvc_cmd_pkg.
If I look into some of the examples there is also a transaction_pkg.vhd, which doesn’t come with the generator files.
And in the examples the vvc_cmd_pkg is using a lot of the transaction_pkg.vhd.
Can the python generator also creates this way of code / file style?
It makes the examples much easier to follow, when creating your own VVC.
Hi Eric,
The transaction_pkg.vhd adds extended features to the VVCs, such as transaction info, and the script will generate this file and everything else necessary when you select to generate a VVC with extended UVVM features (1st step in the generator flow). You will also have to select “Add transaction info to VVC” for the package to be generated. See my example:
√ vvc_generator % py vvc_generator.py (development)uvvm_internal
Please enter the VVC Name (e.g. SBI, UART, axilite): MY_IF
The VVC is generated with basic code for running with UVVM as default, but can be
generated with extended UVVM features such as Scoreboard, transaction info and activity watchdog.
Generate VVC with extended UVVM features? [y/n]: y
Add scoreboard to VVC? [y/n]: y
Add activity watchdog to VVC? [y/n]: y
Add transaction info to VVC? [y/n]: y
Multiple channels can be used to emulate concurrent channels in the VIP, e.g. concurrent RX and TX channels.
Set the number of concurrent channels to use [1-99], press enter for default(1): 1
Multiple executors (and queues) are used when concurrent command operations are needed.
E.g. Avalon MM uses two executors because multiple read requests might be sent before receiving the responses.
Thus the first executor is sending out the commands, whereas the second executor is receiving the response.
Both are required because the first executor may be busy issuing a new command at the same time the second executor is receiving a response on a previous command.
Shall the VVC have multiple executors? [y/n]: n
The vvc_generator script is now finished
The generated VVC can be found in the output folder
Note: generated code is provided as starting point for building a VVC.
Please follow the instructions marked '--<USER_INPUT>' in the generated files.
And the generated files:
√ vvc_generator % ll output (development)uvvm_internal
total 128
drwxr-xr-x@ 8 marius staff 256B Sep 10 09:46 .
drwxr-xr-x@ 6 marius staff 192B Aug 18 15:17 ..
-rw-r--r-- 1 marius staff 2.9K Sep 10 09:46 my_if_bfm_pkg.vhd
-rw-r--r-- 1 marius staff 20K Sep 10 09:46 my_if_vvc.vhd
-rw-r--r-- 1 marius staff 4.1K Sep 10 09:46 transaction_pkg.vhd
-rw-r--r-- 1 marius staff 6.1K Sep 10 09:46 vvc_cmd_pkg.vhd
-rw-r--r-- 1 marius staff 627B Sep 10 09:46 vvc_context.vhd
-rw-r--r-- 1 marius staff 16K Sep 10 09:46 vvc_methods_pkg.vhd
I will make a ticket to better explain how the VVC generator script works and how to use it. Thank you for telling us your experience with using UVVM - its highly appreciated!