* mslib, spiceprm: Michael Widlok released new version of his
programs.
This commit is contained in:
parent
a6d0a5cdca
commit
06fa9efbc2
|
|
@ -1,10 +1,16 @@
|
||||||
|
2000-10-10 Arno W. Peters <A.W.Peters@ieee.org>
|
||||||
|
|
||||||
|
* mslib, spiceprm: Michael Widlok released new version of his
|
||||||
|
programs.
|
||||||
|
|
||||||
2000-03-22 Paolo Nenzi <p.nenzi@ieee.org>
|
2000-03-22 Paolo Nenzi <p.nenzi@ieee.org>
|
||||||
|
|
||||||
* mslib: Major update. M. Widlok sent the new version of it's programs.
|
* mslib: Major update. M. Widlok sent the new version of it's
|
||||||
|
programs.
|
||||||
|
|
||||||
* spiceprm: Major update. See above line.
|
* spiceprm: Major update. See above line.
|
||||||
|
|
||||||
1999-09-14 Arno <A.W.Peters@ieee.org>
|
1999-09-14 Arno W. Peters <A.W.Peters@ieee.org>
|
||||||
|
|
||||||
* mslib: Added.
|
* mslib: Added.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,10 +92,11 @@ readlib(struct LSData *lib, FILE * tlib, \
|
||||||
{
|
{
|
||||||
|
|
||||||
char name[BSIZE];
|
char name[BSIZE];
|
||||||
int numi, wflag;
|
int numi, wflag, nextsub;
|
||||||
|
|
||||||
numi = 0;
|
numi = 0;
|
||||||
wflag = NOWRITE;
|
wflag = NOWRITE;
|
||||||
|
nextsub = 0;
|
||||||
|
|
||||||
while (fgets(buf, bsizer, lib->filedes))
|
while (fgets(buf, bsizer, lib->filedes))
|
||||||
{
|
{
|
||||||
|
|
@ -128,6 +129,15 @@ readlib(struct LSData *lib, FILE * tlib, \
|
||||||
case (SUBLLINE):
|
case (SUBLLINE):
|
||||||
if (sub)
|
if (sub)
|
||||||
{
|
{
|
||||||
|
if (wflag==WRITESUB)
|
||||||
|
{
|
||||||
|
/* subckt inside subckt
|
||||||
|
not so funny */
|
||||||
|
nextsub++;
|
||||||
|
fputs(buf, tlib);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (checkname(sub, name))
|
if (checkname(sub, name))
|
||||||
{
|
{
|
||||||
wflag = WRITESUB;
|
wflag = WRITESUB;
|
||||||
|
|
@ -150,12 +160,20 @@ readlib(struct LSData *lib, FILE * tlib, \
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (ENDSLLINE):
|
case (ENDSLLINE):
|
||||||
|
if (nextsub)
|
||||||
|
{
|
||||||
|
nextsub--;
|
||||||
|
fputs(buf, tlib);
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
|
||||||
if (wflag == WRITESUB)
|
if (wflag == WRITESUB)
|
||||||
{
|
{
|
||||||
fprintf(tlib, "%s\n* End Subckt\n\n", buf);
|
fprintf(tlib, "%s\n* End Subckt\n\n", buf);
|
||||||
}
|
}
|
||||||
wflag = NOWRITE;
|
wflag = NOWRITE;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case (CONTLLINE):
|
case (CONTLLINE):
|
||||||
if (wflag != NOWRITE)
|
if (wflag != NOWRITE)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,77 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#set -x -v
|
||||||
|
|
||||||
|
# MW. Lib search / show program
|
||||||
|
|
||||||
|
# usage liblook libname [text_to_find] [l_before] [l_after]
|
||||||
|
|
||||||
|
LIBPATH=/usr/local/lib
|
||||||
|
|
||||||
|
function trapper()
|
||||||
|
{
|
||||||
|
echo User break!
|
||||||
|
echo Exiting . . .
|
||||||
|
unset LIBPATH
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
trap trapper SIGINT SIGQUIT
|
||||||
|
|
||||||
|
function operror()
|
||||||
|
{
|
||||||
|
echo Incorrect parameters: $*, $#
|
||||||
|
echo Usage: liblook libname [text_to_find] [l_before] [l_after]
|
||||||
|
unset LIBPATH
|
||||||
|
exit 2
|
||||||
|
}
|
||||||
|
|
||||||
|
function showlib()
|
||||||
|
{
|
||||||
|
if test -f $LIBPATH/$1; then
|
||||||
|
less $LIBPATH/$1; exit 0; fi
|
||||||
|
|
||||||
|
if test -f [C./$1; then
|
||||||
|
less ./$1; exit 0; fi
|
||||||
|
|
||||||
|
echo Searching $1 in ~/ . . .
|
||||||
|
less $(find ~/ -name $1)
|
||||||
|
}
|
||||||
|
|
||||||
|
function searchlib()
|
||||||
|
{
|
||||||
|
if test -f $LIBPATH/$1; then
|
||||||
|
echo File: $1; echo;
|
||||||
|
grep -B"$3" -A"$4" --ignore-case -e "$2" $LIBPATH/$1;
|
||||||
|
echo; exit 0; fi
|
||||||
|
|
||||||
|
if test -f ./$1; then
|
||||||
|
echo File: $1; echo;
|
||||||
|
grep -B"$3" -A"$4" --ignore-case -e "$2" ./$1;
|
||||||
|
echo; exit 0; fi
|
||||||
|
|
||||||
|
#if *.lib or sth like this
|
||||||
|
|
||||||
|
echo Searching $1 in ~/ . . .;echo;
|
||||||
|
if (grep -B"$3" -A"$4" --ignore-case -e "$2" $(find ~/ -name $1)); then
|
||||||
|
echo; exit 0; fi
|
||||||
|
|
||||||
|
echo Searching $1 in $LIBPATH;echo;
|
||||||
|
if (grep -B"$3" -A"$4" --ignore-case -e "$2" $(find $LIBPATH -name $1)); then
|
||||||
|
echo; exit 0; fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Main body
|
||||||
|
if test $# -lt 1 -o $# -gt 4; then operror $*; fi
|
||||||
|
|
||||||
|
case $# in
|
||||||
|
1) showlib $*;;
|
||||||
|
2) searchlib $1 $2 2 2;;
|
||||||
|
3) searchlib $1 $2 $3 2;;
|
||||||
|
4) searchlib $1 $2 $3 $4;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
unset LIBPATH
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#set -x -v
|
||||||
|
|
||||||
|
# MW. Lip / Param parsing program for spice
|
||||||
|
|
||||||
|
# -n normal, -f full (keep everything), -r replace original file
|
||||||
|
# -e new addition start with editor, then like normal
|
||||||
|
|
||||||
|
export TMPLP=/tmp/LibPrm.$$-
|
||||||
|
|
||||||
|
function trapper()
|
||||||
|
{
|
||||||
|
echo User break!
|
||||||
|
echo Exiting . . .
|
||||||
|
rm -f -v ${TMPLP}*
|
||||||
|
unset TMPLP
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
trap trapper SIGINT SIGQUIT
|
||||||
|
|
||||||
|
function operror()
|
||||||
|
{
|
||||||
|
echo Incorrect parameters: $*, $#
|
||||||
|
unset TMPLP
|
||||||
|
exit 2
|
||||||
|
}
|
||||||
|
|
||||||
|
function repnormpl()
|
||||||
|
{
|
||||||
|
mslib $1 ${TMPLP}1
|
||||||
|
sed -n -e 'p' -e "1r ${TMPLP}1" $1 >${TMPLP}2
|
||||||
|
spiceprm ${TMPLP}2 $2
|
||||||
|
}
|
||||||
|
|
||||||
|
function keepall()
|
||||||
|
{
|
||||||
|
mslib $1
|
||||||
|
sed -n -e 'p' -e "1r $1.lib" $1 >${TMPLP}2
|
||||||
|
spiceprm ${TMPLP}2 $2
|
||||||
|
}
|
||||||
|
|
||||||
|
function withedit()
|
||||||
|
{
|
||||||
|
joe $1
|
||||||
|
mslib $1 ${TMPLP}1
|
||||||
|
sed -n -e 'p' -e "1r ${TMPLP}1" $1 >${TMPLP}2
|
||||||
|
spiceprm ${TMPLP}2 $2
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Main body
|
||||||
|
if test $# -lt 2 -o $# -gt 3; then operror $*; fi
|
||||||
|
if !(test -f $2); then operror $*; fi
|
||||||
|
|
||||||
|
case $1$# in
|
||||||
|
-r3) operror $*;;
|
||||||
|
-n2) repnormpl $2 ${2%.cir}.ckt;;
|
||||||
|
-n3) repnormpl $2 $3;;
|
||||||
|
-r2) repnormpl $2 $2;;
|
||||||
|
-f2) keepall $2 ${2%.cir}.ckt;;
|
||||||
|
-f3) keepall $2 $3;;
|
||||||
|
-e2) withedit $2 ${2%.cir}.ckt;;
|
||||||
|
-e3) withedit $2 $3;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
rm -f ${TMPLP}*
|
||||||
|
unset TMPLP
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
So, this is my idea of using parametrized subckts with spice3f4.
|
||||||
|
|
||||||
|
First I create an input file like foo.cir and I include commands for
|
||||||
|
mslib (*MOD, *SUB, *LIB) in it. Then I run "libprm -n foo.cir". Libprm then
|
||||||
|
runs mslib first to get all models and subckts form given libraries and then
|
||||||
|
runs spiceprm to evaluate all used parameters.
|
||||||
|
This works quite right for me, and I hope that You will find my idea
|
||||||
|
useful. Spiceprm is not my program (I get it from Internet), but I think
|
||||||
|
that it will better to enclose all used programs in this packet. Spiceprm
|
||||||
|
has it's own directory with very good readme and examples. If You want to
|
||||||
|
find out more about libprm or mslib look for the source code. These are rather
|
||||||
|
short and easy programs - they are all that I could write in quite short
|
||||||
|
time.
|
||||||
|
|
||||||
|
|
@ -9,4 +9,7 @@ SRCC= inc_main.c inc_inp.c inc_LSD.c
|
||||||
mslib: $(OBJS)
|
mslib: $(OBJS)
|
||||||
$(CC) $(LDFLAGS) -o $@ $(OBJS)
|
$(CC) $(LDFLAGS) -o $@ $(OBJS)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(RM) $(OBJS) mslib
|
||||||
|
|
||||||
$(OBJS): $(HDRS)
|
$(OBJS): $(HDRS)
|
||||||
|
|
@ -1,3 +1,10 @@
|
||||||
|
-------------------------------
|
||||||
|
MW. 01-10-2000
|
||||||
|
Bugs Fixes -
|
||||||
|
-----------
|
||||||
|
.subckt inside another parametrized .subckt works right now.
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Version 0.11 January 2, 1996
|
Version 0.11 January 2, 1996
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -163,9 +163,10 @@ sub prm_scan {
|
||||||
}
|
}
|
||||||
$hasprm = 0;
|
$hasprm = 0;
|
||||||
undef @list; $sublist = '';
|
undef @list; $sublist = '';
|
||||||
}
|
|
||||||
last PRM_TST;
|
last PRM_TST;
|
||||||
}
|
}
|
||||||
|
# MW. 'last PRM_TST' should be inside 'if' loop to allow nestle subckts.
|
||||||
|
}
|
||||||
if ($depth) {
|
if ($depth) {
|
||||||
push(@list, $_);
|
push(@list, $_);
|
||||||
last PRM_TST;
|
last PRM_TST;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue