In the monolithic elaboration flow of Xcelium, the entire design hierarchy is elaborated. This leads to repetitive work for designs that have a high replication factor.
The cloning enhancement improves elaboration performance in designs where a module in the design hierarchy is instantiated many times. Cloning the replicated module ensures that only one instance of the replicated module is elaborated in the form of a snapshot, and the same snapshot is then cloned to fill in for other instances. Therefore, the tool avoids elaborating repetitive instances of the same module.
In mixed-signal designs, you can clone a replicated module using the following two command-line options:
-replicated_top <arg>: Allows you to specify the module that has to be cloned. You must specify the module name using the<arg>parameter.
You can also specify multiple modules that are anticipated to have high replication as shown below:-REPLICATED_TOP mod_a \-REPLICATED_TOP mod_b \-REPLICATED_TOP mod_c \…
Internally, Xcelium would skip elaborating repetitive instances of these specified modules and clone the first elaborated snapshot of each such module whenever further instantiations are encountered.-
-autoreplicated_top: Specifies the tool to automatically clone a replicated module. Then, the tool elaborates the replicated module only once and re-uses the elaborated snapshot by cloning and stitching these clones towards the end of the elaboration process. If two or more modules are instantiated multiple times in a design, the tool chooses to clone the highest instantiated module.Currently, the
-autoreplicated_topoption is supported only for module instances that are in the range, 2 to 64.
The following are some limitations with the cloning of modules:
- Replication by an array of instances (AOI)
- Designs that have enabled programmable coercion off/on
- Instance-based
iecard setting or cell setting that covers replicated top - SPICE and VAMS designs
Examples
The following is an example of a manual instance replication using the -autoreplicated_top option, where the module driver1 has been instantiated three times.
xrun top.sv -rnm_tech -autoreplicated_top module top; import cds_rnm_pkg::*; wrealsum w; driver1 d1(w); driver1 d2(w); driver1 d3(w); endmodule // primary module driver1 (dr_1); import cds_rnm_pkg::*; inout dr_1; wire dr_1; endmodule
The following is an example of a for-loop construct replication using the -autoreplicated_top option, where the module items have been instantiated multiple times.
xrun top.sv -rnm_tech -autoreplicated_top import cds_rnm_pkg::*; module top(); wrealsum a; genvar i; for(i=0; i<31;i++) mid x1_0(a); endmodule module mid(inout clk); wire clk; endmodule
