Working with Multiple Instances of vr_ad Registers

The devices that we verify often have multiple instances of a certain register type. These registers are instantiated in a regular structure inside the design. In our tests, we want to be able to access each of them.


This is a companion discussion topic for the original entry at https://verificationgentleman.netlify.app/2014/11/25/working-with-multiple-insts-of-vrad-regs.html

One thing that I use to make my “as computed” code more readable is this:

var los : list of string = <<#:
{
var static_triangles := driver.addr_map.get_regs_by_kind(TRIANGLE);
assert <(idx)> in [0…static_triangles.size() - 1];
<(operation)> { .static_item == static_triangles[<(idx)>] } <(reg)> <(block)>;
};
end #;

That looks pretty clean. I guess <<# means treat every line as string from now on and <(reg)> means replace this block with the value of ‘reg’, am I right?

Could you point us out to where we can find this syntax in the documentation?

Hi Tudor,

you can search in documentation after “Inline Text Expansion”. In INCISIV 14.10 you will get a relevant result in “Specman Deprecation and Backwards Compatibility” document where Cadence presents some changes to this syntax.

Other then this, it looks like they did not documented this syntax anywhere else.

Best regards,
Cristi