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

Simulation Front End (SFE) Parser

The AMS Designer simulator uses the simulation front end (SFE) analog parser. With the SFE parser, the Spectre solver of the AMS Designer simulator use the same analog parser as the Spectre circuit simulator. The SFE parser provides enhanced performance and additional features, including the option to run in 64-bit mode.

If you currently use the AMS Designer simulator with the old Spectre parser and are upgrading from a version prior to IUS 6.11, you need to review important information about Migrating from the Old Spectre Parser so that you can evaluate the differences between the old Spectre parser and the SFE parser carefully. If you have any questions, contact Cadence.

The SFE parser provides:

While the software changes the names of Verilog-AMS modules, nets, and variables belonging to analog behavioral blocks, you can continue to reference these objects using their original names in Tcl probe and value commands.

Including Structural Verilog-A in a Spectre Netlist

Using the AMS Designer simulator with the simulation front end (SFE) parser, you can include instances of structural Verilog-A in SPICE and Spectre blocks using an ahdl_include statement. A structural module is one that instantiates another module.

The following file (res.va) contains module res and module vastruct. Because module vastruct instantiates module res, it is a structural module.

// res.va -- Verilog-A file containing a structural module, vastruct 

`include "discipline.vams"
`include "constants.vams"

module res(vp, vn);
inout vp, vn;
electrical vp, vn;
parameter real r = 0;
    analog begin
        V(vp, vn) <+ r*I(vp, vn);
        $display("Verilog-A resistor:\n");
        $display(    "Voltage=%f, Current=%f\n", V(vp, vn), I(vp, vn));
    end
endmodule

module vastruct(p, n);        // structural Verilog-A module
inout p; electrical p;
inout n; electrical n;
parameter real r=0;
    res #(.r(r)) Rva (p, n);  // instantiates module res
endmodule

You can include the file containing the structural module in a Spectre netlist file using the ahdl_include statement as follows:

global gnd
simulator lang=spectre
ahdl_include "res.va" // Includes a structural Verilog-A module

subckt sub (p n)
parameters r=500
    Rsp p int1 resistor r = r
    Rva int1 n vastruct r=r // Instantiates the structural Verilog-A module
ends

You can elaborate this design structure using the SFE parser.

Using SPICE and Spectre User-Defined Functions

Using the AMS Designer simulator with the simulation front end (SFE) parser, you can have SPICE and Spectre user-defined functions on analog instances inside Verilog-AMS modules. For example:

module foo
    ...
    vsource #(.dc(spiceUDF(5.0)) v1(in, out);
               // spiceUDF is a user-defined function inside SPICE
    ...
endmodule

You might use such a function in the calculation of instance parameter values such as ps, pd, ad, or as. For example, you might define a function f_mod as

real f_mod(real a, real b) {
    return (a-b*int((a+0.5)/b)) ;
}

and use this function in the calculation of instance parameter ad like this:

ad=f_mod*iPar("l")

You cannot mix a user-defined function with a digital function in an expression.

Using Simplified Input Commands with the Simulation Front End Parser

Using the AMS Designer simulator with the simulation front end (SFE) parser, you do not need to run the Spectre preprocessor and the input commands are simpler.

An example of a simplified elaboration command is:

xmelab -MODELPATH subckts.m

Migrating from the Old Spectre Parser

If you were using the old Spectre parser in a previous release, you should be aware of the following differences when using the simulation front end (SFE) parser, which is turned on by default:





 ⠀
X