Continue to Site

# Multiplicity in HSPICE and its use in subcircuit defenition

Status
Not open for further replies.

#### electronics20

##### Full Member level 1
Hi to all,
I am gonna design a 128*128 memory array with use of a parameter in HSPICE called "multiplicity".
But I don't know how to develop my code. Plz guide me through your useful advice if you have a record in this issue.
Thanks

The "multiplicity" parameter m (or M) is the shunt multiplicity factor of an instance, that is, the number of identical devices that are combined in parallel - see any HSPICE manual. You can't use it for an array.

electronics20

### electronics20

Points: 2
Thanks. But I want to apply this method to a 128*128 array while I don't know how to assign this parameter to a row and a column. Would you mind guiding me more?
Regards,

See above! You can't use it for an array!

See above! You can't use it for an array!

- - - Updated - - -

But I found a PDF file on the internet whose link is provided below implies that it is possible to implement an SRAM array through this method. (on the first page of below link).

https://docencia.ac.upc.edu/master/MIRI/NCD/lab/NCD-MIRI-Session2.pdf

I also provided this piece of writing below:

We will simulate a 256x32 bit memory array (256 rows and 32 columns). Each memory array has
three components: bitline conditioning circuitry (aka. precharge logic), the memory array, the write
driver and the sense amplifiers. In our experiments, as all of these components interact with the
bitlines, we can simplify our designs by carefully defining/reading the bitline values. Thus, we need
not to simulate the entire circuit, just the memory array.
Useful functionalities of spice:
1) M=xx (multiplier). Add this to an instantiation of a module/subcircuit to reflect that there are
xx of these modules/subcircuits in parallel.
2) Define initial values of nodes with the IC command.

1) M=xx (multiplier). Add this to an instantiation of a module/subcircuit to reflect that there are xx of these modules/subcircuits in parallel.

Ok, then ... you could define your cell as an array memcell<1:128>,<1:128> (or memcell<0:127>,<0:127>) - the exact type of braces and the separator depends on your design system.

I don't know if SPICE supports such 2-dimensional arrays (if ever a 1-dimensional array). I found an Undocumented LTspice note, that seems to support at least a 1-dimensional array.

And then you'd have to connect all nodes WL[0,0] ... WL[127,127], as well as BL[0,0] ... BL[127,127] and BL_bar[0,0] ... BL_bar[127,127], i.e. 3*16384 nodes to the correct places. This could only be done with a schematic design system and a SPICE netlister. Anyway I'd suggest to begin with a 2*2 or 4*4 array - s. here e.g.: View attachment zemi_main117.pdf

This array terminology actually has nothing to do with multiplicity and its multiplier M, because this one would connect all cells - i.e. all their inputs and outputs in parallel.

electronics20

Points: 2