In SystemVerilog, a parameterized covergroup allows defining a generic coverage model that can be instantiated with different arguments. Arguments can be passed by value (actual values) or by reference (using the 'ref' keyword to pass pointers to variables). When instantiated, the covergroup samples the specified variables and creates bins based on the provided parameters, enabling flexible and reusable coverage verification across different variables and scenarios.
Deep Dive
Prerequisite Knowledge
- No data available.
Where to go next
- No data available.
Deep Dive
Course : Systemverilog Verification 5 : L12.1 : Parameterized Covergroup
Added:now you will be learning parameters how group usage and system will log so systemville allows you to define a parameterized curve group so like you can define a generic cover group and use different flowers of the same group while instantiating with different set of arguments so remember that you cannot pass a trigger into a cow group instance but all other arguments can be passed but if you really wanted to use or pass trigger as an argument then you can write the cover group within a class and pass the trigger when you create the constructor of that class then you need to use the dot sample instead of a cloaking event and also you can pass an argument to a cover group either by password of value or by pathway reference you will see an example in the next slide if you remember this was the first generalized form of a cover group that we had learned in the first session and till then we were not specifying any optional argument list so we are only specifying the curve group our group name and is optional sampling even like a positive clock and we have never used the optional argument list in our group examples and parameters cover group is nothing but making use of this optional argument list now we will see an example here a cover group is defined within a module and you can see that after the cover group name i had given an argument list to this curve group uh which is two integer values so there are two initial variable variables low and high and after that the clocking of the sampling event is specified as a positive or give clock and if you see here this low and high is used in the bin definition so once you pass the low and highest integer variable this will be available here within the coverage group definition now we will be defining uh first cover group for the adr one variable which is by default available within this module and we specify that the bins the first bin is uh coming something between zero and low minus one whether low is the past value of this past argument of this group and the second bin is the value mid-range is between low and high and the higher range is between high plus 1 to dollar as we already discussed dollar indicate the maximum value in this context next the cover point for a ddr2 variable is also defined in the same way and finally in an initial begin when you instantiate this bus value cover group say with names b1 b2 b3 etc and when you actually create it using a new constructor you can pass this argument so b1 is equal to new phi comma 10 will instantiate the cover group b1 with lower values 5 and higher strength such that the bins are created as listed in the command and the next uh cover group instance b2 will be in scientific with the different set of value and also you can change the options uh the coverage options with for different instances like v1.option.com with a different command and so on so this is an example of a parameterized half group where we pass the parameter value by using the pass by value of method here if you you have seen that both these carbon definitions are almost looking same and the only difference is the variable which which is sampling so in the first one it was sampling hddr one variable and second one was sampling hddr2 variable so here by passing the values you were able to define or generalize the values within the bins but if you actually wanted to generalize the variable itself which is getting sampled then you should use the password reference method this we will learn in the next slide so this was example in the previous slide and i have made a slight modification for this cover group definition like in the cover group the first argument is a reference variable and i am indicating it it is a reference variable by using the rough keyword in systematic so rough logic thirty-one number zero bus a variable called bus is passed as a reference argument to this cover group and two integer variables are passed by value mother that which are low on highway high variables now in the cover point definition you can see that instead of using the addr1 and ldr2 variables specifically i have used the sampling variable as the bus so bus is an option an argument which is passed to this cover point and uh this bus street is getting sampled for this means which are uh first bin is between zero two or minus one and next is uh between low to high and so on as you know the rough keyword in system analog is used to pass the pointer to the variable not the variable value thus when you actually create the instance of the cover group say in an initial begin like best values a1 a2 etc and when you knew them and the variable we are passing will be passed as a reference to this curve group and in effect that variable will be sampled here in this group thus here the first statement a1 is equal to nu addr1 phi comma 10 is equivalent of creating a cover group instance with this specific our group where the low and high variables are 510 so in the same way the second second statement a2 new added to 5 comma 10 will be sampling the ada2 variable uh with the values five and then for low and high range and in the same way you can see that many flavors of different variables are created for this car group and it's a nice way of using the parameters of group and using the reference keyword to create a generalized group and create multiple instances of circle group for the different variables to get covered in the actual simulation
Related Videos
LBF101 Creating an XML Changelog
liquibase7511
3K views•2026-06-15
Alta Labs Cloud Dashboard Real time Network & Xnet Insights!
ShinyTechThings
158 views•2026-06-17
Wait... Group Policy Not Applying? Check This First!
keeplearning_iT
144 views•2026-06-15
Leetcode Weekly Contest 506 | Life's boring these days
Pudeesht
2K views•2026-06-14
microJAM: MAKING A MICRO GAME FOR A GAME JAM IN CLOJURESCRIPT AND TOTALLY NOT C
janetacarr
156 views•2026-06-18
Partitioning vs Bucketing vs Clustering: How to Make Queries 100x Faster
thedataandaiguy
194 views•2026-06-16
Design Claude Code Like a Senior Engineer
hayk.simonyan
344 views•2026-06-19
Linus Torvalds: AI Won’t Replace Understanding Code
SavvyNik
140 views•2026-06-19











