Browse Source

* mslib, spiceprm: Michael Widlok released new version of his


			
			
				pre-master-46
			
			
		
arno 26 years ago
parent
commit
06fa9efbc2
  1. 12
      contrib/ChangeLog
  2. 24
      contrib/mslib/inc_inp.c
  3. 77
      contrib/mslib/liblook
  4. 70
      contrib/mslib/libprm
  5. 14
      contrib/mslib/libprm_readme
  6. 7
      contrib/mslib/makefile
  7. 7
      contrib/spiceprm/CHANGES
  8. 5
      contrib/spiceprm/spiceprm

12
contrib/ChangeLog

@ -1,10 +1,16 @@
2000-03-22 Paolo Nenzi <p.nenzi@ieee.org>
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>
* 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.

24
contrib/mslib/inc_inp.c

@ -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,7 +129,16 @@ readlib(struct LSData *lib, FILE * tlib, \
case (SUBLLINE): case (SUBLLINE):
if (sub) if (sub)
{ {
if (checkname(sub, name))
if (wflag==WRITESUB)
{
/* subckt inside subckt
not so funny */
nextsub++;
fputs(buf, tlib);
break;
}
if (checkname(sub, name))
{ {
wflag = WRITESUB; wflag = WRITESUB;
numi++; numi++;
@ -150,12 +160,20 @@ readlib(struct LSData *lib, FILE * tlib, \
break; break;
case (ENDSLLINE): case (ENDSLLINE):
if (wflag == WRITESUB)
if (nextsub)
{
nextsub--;
fputs(buf, tlib);
break;
} else {
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)

77
contrib/mslib/liblook

@ -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

70
contrib/mslib/libprm

@ -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

14
contrib/mslib/libprm_readme

@ -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.

7
contrib/mslib/makefile

@ -7,6 +7,9 @@ HDRS= datadef.h
SRCC= inc_main.c inc_inp.c inc_LSD.c SRCC= inc_main.c inc_inp.c inc_LSD.c
mslib: $(OBJS) mslib: $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS)
$(OBJS): $(HDRS)
clean:
$(RM) $(OBJS) mslib
$(OBJS): $(HDRS)

7
contrib/spiceprm/CHANGES

@ -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
---------------------------------------------------------------------- ----------------------------------------------------------------------

5
contrib/spiceprm/spiceprm

@ -163,8 +163,9 @@ 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, $_);
@ -248,7 +249,7 @@ sub prm_wr {
last PRMWR_SCAN; last PRMWR_SCAN;
} }
if (/^\.ends/) { if (/^\.ends/) {
if (--$depth == 0) { $sublist = ''; }
if (--$depth == 0) { $sublist = ''; }
else { $sublist =~ s/(\#\w+)$//; } else { $sublist =~ s/(\#\w+)$//; }
} }
prm_wrline($_); prm_wrline($_);

Loading…
Cancel
Save