Product Documentation
Spectre AMS Designer and Xcelium Simulator Mixed-Signal User Guide
Product Version 22.09, September 2022

Incremental Elaboration at SV-RNM Partition Boundary

Incremental elaboration is enabled for designs containing SystemVerilog User Defined Nettype (SV-UDN) ports at the partition boundaries. You can specify UDN ports at the primary partition boundary of a design; then, the UDN ports from the different secondary partitions are connected and merged into one simulation net.

Verilog-AMS and Spice instantiations can be instantiated within partitions; however, these ports are not allowed across partition boundaries.

The following example enables IE for the SV-UDN port type and xrun compiles the top.sv file. Module, top is the incremental partition and driver1 is the primary partition:

xrun -clean top.sv -primtop driver
//top.sv
//incremental
module top;
WUDNTYPE w;
assign w = 1.1;
driver1 d1(w);
endmodule

//primary
module driver1 (dr_1);
input dr_1;
WUDNTYPE dr_1;
Endmodule

The following are the port types that are supported for incremental elaboration at SV-RNM partition boundary:

import cds_rnm_pkg::*;
wrealsum w;
or
wrealavg w;

function automatic real FUNC(input real drivers[]);
begin
FUNC = 1.0;
foreach (drivers[j])
begin
$display("\nFUNC : drivers[%d] = {%f} ", j, drivers[j]);
FUNC += drivers[j];
end
end
endfunction

// A nettype declaration with datatype
nettype real WUDNTYPE with FUNC;

typedef struct {
real V;
} Rstruct;

function automatic Rstruct FUNC(input Rstruct drivers[]);
begin
FUNC = '{1.0};
foreach (drivers[j])
begin
$display("\nFUNC : drivers[%d] = {%f} ", j, drivers[j].V);
FUNC.V += drivers[j].V;
end
end
endfunction

// A nettype declaration with datatype
nettype Rstruct WUNDTYPE with FUNC;

typedef struct {
real field1;
real field2;
}T;

// user-defined resolution function Tsum
function automatic T Tsum (input T driver[]);
begin
Tsum.field1 = 0.0;
Tsum.field2 = 0.0;
foreach (driver[i])
begin
$display("driver[%d]{%f}{%f}", i, driver[i].field1, driver[i].field2);
Tsum.field1 += driver[i].field1 ;
Tsum.field2 += driver[i].field2 ;
end
$display("Tsum{%f}{%f}", Tsum.field1, Tsum.field2);
end
endfunction

// A nettype declaration with datatype and resolution function
nettype T WUDNTYPE with Tsum;
OR: 
import EE_pkg::*;
EEnet w;

nettype real WUDNTYPE;

The following are the restrictions of using SV-UDN ports at the partition boundaries:

Related Topics



 ⠀
X