addloins - create a logical instance
This software belongs to the ALLIANCE CAD system from the CAO-VLSI team at
ASIM/LIP6/UPMC laboratory.
LIP6/ASIM
University P. et M. Curie
4, place Jussieu
75252 PARIS Cedex 05
FRANCE
Fax : {33/0} 1.44.27.62.86
E-mail support : alliance-support@asim.lip6.fr
#include mlo404.h"
loins_list *addloins(ptfig, insname, ptmodel, sigchain)
lofig_list *ptfig;
char *insname;
lofig_list *ptmodel;
chain_list *sigchain;
addloins creates a new instance, and adds it to the list of instances
pointed to by ptfig->LOINS. The new instance is added in front of the
list, and becomes itself the list head.
The parameter insname fills the INSNAME field of the loins structure.
The ptmodel is used for two purposes. First, the ptmodel->NAME fills the
FIGNAME field. Second, the connectors of the figure pointed to by ptmodel
are duplicated in the LOCON field, but the signals linked to each connector
are the one given in the sigchain argument. See chain(3)
for details
on chain_lists.
The matching is done in order, it means that the first connector is linked
to the first signal of the sigchain, and so on. Care must be taken when
instanciating in order to warranty the validity of the netlist. For
details on the structure, see loins(3)
.
addloins returns a pointer to the newly created instance.
*** mbk error *** addloins impossible : instance insname already exist in
figure ptfig->NAME"
The insname is the instance identifier. So it must be unique at a
given hierarchy level.
*** mbk error *** addloins impossible : instance model is the figure fig_name
itself"
The model of the instance has the same name that the figure where
the instantiation takes place. This check is only performed for a
single hierarchy level, in terms of its instances.
*** mbk error *** addloins impossible : connector number discrepancy
between figure ptmodel->NAME and instance insname in figure ptfig->NAME"
The number of signals in the sigchain is not equal to the number of
connectors of the model. The matching is not done correctly.
#include mlo404.h"
void add_na2_y(pt, in1, in2, out) /* add an instance of na2_y */
lofig_list *pt; /* pointer to the figure */
long in1, in2, out; /* signals indexes */
{
chain_list *signal = NULL;
/* get the pointer when signal index is known */
signal = addchain(signal, (void *)givelosig(pt, in1));
signal = addchain(signal, (void *)givelosig(pt, in2));
signal = addchain(signal, (void *)givelosig(pt, out));
/* get vdd and vss */
signal = addchain(signal, (void *)give_vdd(pt)
);
signal = addchain(signal, (void *)give_vss(pt)
);
/* reverse the list */
signal = reverse(signal);
addloins(pt, nand", getlofig("na2_y"), signal);
}
mbk(1) , lofig(3) , loins(3) , chain(3) , getloins(3) , delloins(3) .
This tool is under development at the ASIM/LIP6/UPMC laboratory, cao-vlsi
research team.
We need your feedbak to improve documentation and tools.
If you find bugs, please fill-in the form at
http://asim.lip6.fr/alliance/support/bug-report/
Thanks for doing this.