The ie statement also supports dynamic voltage supply. It supports the connect rule parameters of the built-in CR_dynsup_full_fast connect rule that you can use to specify the dynamic voltage supply. For example:
ie [connrules=CR_dynsup_full_fast] vddnet=<value> vssnet=<value> [other parameters]
The software automatically builds the dynsup_full_fast connect rule with the dynamic voltage supply that you specify.
Parameter connrules is optional. However, it is mandatory to specify both vddnet and vssnet parameters to point to the dynamic power supply net and ground net in the design hierarchy. For example:
ie connrules=CR_dynsup_full_fast //illegal; parameters vddnet and vssnet are not specified
ie vddnet="top.e1" vssnet="top.e0" //legal
ie connrules=CR_dynsup_full_fast vddnet="top.e1" // illegal; parameter vssnet is not specified
ie connrules=CR_dynsup_full_fast vssnet="top.e0" // illegal; parameter vddnet is not specified
You can also specify hierarchical dynamic voltage supply for Verilog-AMS electrical and wreal nodes/nets. Hierarchical dynamic voltage supply provides similar functionality like the supply-sensitive connect modules where a block uses its own voltage supply for the connect modules.
Hierarchical dynamic voltage supply only supports a single identifier (for example, vddnet=vdd1) rather than hierarchical paths (for example, top.vdd1). along with appropriate cell or inst scope assignments. For example,
amsd{
ie vddnet= "vdd1" vssnet="vss1" cell="foo"
}
In this example, vdd1 and vss1 can be the ports of cell foo , as specified by the cell scope assignment. This means that all DVS connect modules inserted within the scope of any instance of foo will have their vddnet/vssnet set to vdd1 and vss1 respectively. Refer to the Examples section below for a detailed example on hierarchical dynamic voltage supply.
Hierarchical dynamic voltage supply is enabled by using the xrun option -hier_dvs and can work together with normal dynamic voltage supply specification.
Parameters vddnet, vssnet, cell, and inst also support Linux environment variables as values. For example, you can specify the following Linux environment variables:
setenv vdd_cell1 tb.avddsetenv vss_cell1 tb.avsssetenv vdd_cell2 tb.vddcsetenv vss_cell2 tb.dvsssetenv CELL1 cell1_wrapsetenv CELL2 cell2_wrapsetenv INST1 tb.dut.I0
You can reuse the already defined environment variables in the AMSD control file, amsd block, and ie card statements using the $ character followed by the environment variable name. For example:
ie vddnet=$vdd_cell1 vssnet=$vss_cell1 cell=$CELL1ie vddnet=$vdd_cell2 vssnet=$vss_cell2 cell=$CELL2ie vddnet=tb.avdd vssnet=tb.avss instport=duv.tb.oomr_observe_net inst=$INST1
