SuperSpice and new component

On Mon, 21 Mar 2005 14:24:35 -0800, ldg <asfd@hotmail.com> wrote:

On Sun, 20 Mar 2005 23:36:12 -0800, ldg <asfd@hotmail.com> wrote:

dg, You harp about things that you know not about. LTSpice can run
ANY netlist... you're just too much the amateur to understand how.


For completeness, I suppose I should include an example of the
resistor error messages when the resistor is specified with w/l and a
model.

LTspice is apparently looking for the original spice syntax for the
various parameters in the model and doesn't utilize much of the
foundry supplied resistor model.

The fact that it works for "semiconductor resistors" is not
documented:


Syntax: Rxxx n1 n2 <value> [tc=tc1, tc2, ...]

The resistor supplies a simple linear resistance between nodes n1 and
n2. A temperature dependence can be defined for each resistor
instance with the parameter tc. The resistance, R, at will be

R = R0 * (1. + dt * tc1 + dt**2 * tc2 + dt**3 * tc3 + ...)

where R0 is the resistance at the nominal temperature and dt is the
difference between the resistor's temperature and the nominal
temperature.


Running this file shows the error messages the simulator kicks out.
It does find the sheet resistance and that provides an accurate
nominal simulation in the rc below:



LTSPICE test

V1 1 0 pulse(0 5 10u 1n 1n 1)
R1 1 2 1e4
C1 2 0 1e-9
XR2 1 3 rny10k
C3 3 0 1e-9

.SUBCKT RNY10K a b
RR10 N_1 b NY W=4.4U L=88U
RR9 N_2 N_1 NY W=4.4U L=88U
RR8 N_3 N_2 NY W=4.4U L=88U
RR7 N_4 N_3 NY W=4.4U L=88U
RR6 N_5 N_4 NY W=4.4U L=88U
RR5 N_6 N_5 NY W=4.4U L=88U
RR4 N_7 N_6 NY W=4.4U L=88U
RR3 N_8 N_7 NY W=4.4U L=88U
RR2 N_9 N_8 NY W=4.4U L=88U
RR1 a N_9 NY W=4.4U L=88U
.ENDS RNY10K
.tran 1u 0.1m

.model ny r rsh = 50
+ dw = 0.08e-6 dlr = -0.8e-6
+ cox = 1.3e-4 capsw = 0.060e-9
+ tc1r = 4.0e-4 tc2r = 1.1e-6
+ tref = 25
*

.end

Again, this works fine in Smartspice. No subcircuits needed :)

Regards,
Larry
Take it up with Mikey. You've wasted several hours of my time. No
more. Fookin' amateur ;-)

...Jim Thompson
--
| James E.Thompson, P.E. | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona Voice:(480)460-2350 | |
| E-mail Address at Website Fax:(480)460-2142 | Brass Rat |
| http://www.analog-innovations.com | 1962 |

I love to cook with wine. Sometimes I even put it in the food.
 
On Mon, 21 Mar 2005 15:27:08 -0700, Jim Thompson
<thegreatone@example.com> wrote:

Take it up with Mikey. You've wasted several hours of my time. No
more. Fookin' amateur ;-)

...Jim Thompson
--
To JIM:

Take your lithium. Rent Napoleon Dynamite. Grab a good cabernet and
enjoy life :)

You may want to reconsider saying things like this to others - "You
harp about things that you know not about". I was curious at that
point what you might actually know. Not curious now. :)

TO THE GROUP:

Hopefully the exchange might provide some insight to others on the
various topics and wasn't too distracting. If so, let me apologize.

Sorry for taking over the thread.

I had fun though. :)

Regards,
Larry
 
On Fri, 25 Mar 2005 22:00:04 +0000 (UTC), kensmith@green.rahul.net
(Ken Smith) wrote:

In article <1jrt31dugusf979slo3ndso49t0opn1kkv@4ax.com>,
ldg <asfd@hotmail.com> wrote:
[....]
Actually, I was wondering how wine itself works as an emulator.

Wine works very well indeed as an emulator even though it is in fact not
an emulator but a port of the windows API onto linux.

I'm
supposing it adds another layer between the application and the
hardware and would incur some overhead. Is this not the case?

Consider the case of a request to write to a file:

The typical Windows application does this:

(1) The object that is requesting to be written calls its virtual method
that is used for writing.

(2) The write virtual method calls the virtual method for each of its
component parts.

(3) Each component part calls the virtual method that is part of the file
handling stuff in MFC.

(4) The file handling stuff creates the needed structure to pass to the
windows API.

(5) The windows API recieves the request and burries it in warm peat for
aging.

(6) The windows API hands the request to the 32 bit DOS function.

(7) The 32 bit DOS function calls the section of the device driver that
does writing

(8) The device driver waits for the tubes in the disk drive to warm up and
then dribbles the data into the srive.

Under wine, items 5 to 8 change to this:

(5) The wine code recieves the request.

(6) wine passes the request to the kernal function

(7) The kernal transfers the data to a buffer and flags it as needing to
be written.

(8) When time permits or there are not enough buffers left, the Kernal
calls the code for writing on this type of disk.

(9) The write actually happens.

Some companies have good programmers and others don't. In some cases, it
isn't that the software will not work just fine on some other system, it
just that the maker only tests it on one version and makes their install
script test for that specific version.


So you have to solve the problem caused by the various distro vendors
by writing different install scripts?

In many cases, it is just a matter of using the software from the good
programmers and ignoring the software from the bad ones.

I believe there actually is an
attempt to solve this problem by normalizing the libraries so 3rd
party software can always find them.

It is less about normalizing and more about picking a minimum standard and
going with that.

RANT
Bad programmers assume that the target machine has all the latest stuff.
Good programmers only enforce the requirements that actually matter in
their code. Bad programmers hard code the locations and versions of
everything. Good programmers allow for things to be specified at install
time.
\RANT

This seems like a better
solution, but so far the various vendors haven't complied. Redhat
probably thinks their user base is "captured" by the way they have
these libraries arranged. The other vendors apparently refuse to
follow Redhat.

Dead Rat has lots of silly ideas. But then so do lots of other folks.
Altera just brought out a version of Quartus that runs under Linux, if you
have the right version of Read Hat and if you have the right version of QT
and if you have the right version of Glibc and if you place your left hand
on top of your head while you install it. All Quartus really is, is a
compiler and a text editor. They could have left the editor out. There
is no reason a compiler needs any such specifics about the machine it will
run on.

[...]

One of the issues with switching to linux is that 3rd party software
vendors seem to not want to port their code to it. Nero did recently
and has been taking flack because their code is proprietary. If the
linux community wants linux to grow, they should encourage such
things. It also means they should take steps to ensure easy
operability between distros I think.

Nero comes free with many DVD burners etc. The free version is not the
Linux version. I think this is why they are getting flack. If they gave
you the Linux version when you bought the DVD burner, most users would not
care that they did not get the source code.

[...]
So far I've tried Fedora, Xandros, and SuSE. SuSE seemed to set up
the hardware more easily, though Xandros was also very good. Using a
memory stick on Fedora meant creating a special mount directory and
going through that process. SuSE and Xandros seemed to just recognize
a memory stick automatically. Only Xandros automatically set up Samba
so that it would function on my lan with win2k machines.


My work machine runs SuSE 9.2. It almost got samba right on the first
try. At home I run SuSE 8.2. The samba set up in it was completely
broken. There are signs of progress.

--
Thanks for the thoughtful reply!

Regards,
Larry
 
In article <1jrt31dugusf979slo3ndso49t0opn1kkv@4ax.com>,
ldg <asfd@hotmail.com> wrote:
[....]
Actually, I was wondering how wine itself works as an emulator.
Wine works very well indeed as an emulator even though it is in fact not
an emulator but a port of the windows API onto linux.

I'm
supposing it adds another layer between the application and the
hardware and would incur some overhead. Is this not the case?
Consider the case of a request to write to a file:

The typical Windows application does this:

(1) The object that is requesting to be written calls its virtual method
that is used for writing.

(2) The write virtual method calls the virtual method for each of its
component parts.

(3) Each component part calls the virtual method that is part of the file
handling stuff in MFC.

(4) The file handling stuff creates the needed structure to pass to the
windows API.

(5) The windows API recieves the request and burries it in warm peat for
aging.

(6) The windows API hands the request to the 32 bit DOS function.

(7) The 32 bit DOS function calls the section of the device driver that
does writing

(8) The device driver waits for the tubes in the disk drive to warm up and
then dribbles the data into the srive.

Under wine, items 5 to 8 change to this:

(5) The wine code recieves the request.

(6) wine passes the request to the kernal function

(7) The kernal transfers the data to a buffer and flags it as needing to
be written.

(8) When time permits or there are not enough buffers left, the Kernal
calls the code for writing on this type of disk.

(9) The write actually happens.

Some companies have good programmers and others don't. In some cases, it
isn't that the software will not work just fine on some other system, it
just that the maker only tests it on one version and makes their install
script test for that specific version.


So you have to solve the problem caused by the various distro vendors
by writing different install scripts?
In many cases, it is just a matter of using the software from the good
programmers and ignoring the software from the bad ones.

I believe there actually is an
attempt to solve this problem by normalizing the libraries so 3rd
party software can always find them.
It is less about normalizing and more about picking a minimum standard and
going with that.

<RANT>
Bad programmers assume that the target machine has all the latest stuff.
Good programmers only enforce the requirements that actually matter in
their code. Bad programmers hard code the locations and versions of
everything. Good programmers allow for things to be specified at install
time.
<\RANT>

This seems like a better
solution, but so far the various vendors haven't complied. Redhat
probably thinks their user base is "captured" by the way they have
these libraries arranged. The other vendors apparently refuse to
follow Redhat.
Dead Rat has lots of silly ideas. But then so do lots of other folks.
Altera just brought out a version of Quartus that runs under Linux, if you
have the right version of Read Hat and if you have the right version of QT
and if you have the right version of Glibc and if you place your left hand
on top of your head while you install it. All Quartus really is, is a
compiler and a text editor. They could have left the editor out. There
is no reason a compiler needs any such specifics about the machine it will
run on.

[...]

One of the issues with switching to linux is that 3rd party software
vendors seem to not want to port their code to it. Nero did recently
and has been taking flack because their code is proprietary. If the
linux community wants linux to grow, they should encourage such
things. It also means they should take steps to ensure easy
operability between distros I think.
Nero comes free with many DVD burners etc. The free version is not the
Linux version. I think this is why they are getting flack. If they gave
you the Linux version when you bought the DVD burner, most users would not
care that they did not get the source code.

[...]
So far I've tried Fedora, Xandros, and SuSE. SuSE seemed to set up
the hardware more easily, though Xandros was also very good. Using a
memory stick on Fedora meant creating a special mount directory and
going through that process. SuSE and Xandros seemed to just recognize
a memory stick automatically. Only Xandros automatically set up Samba
so that it would function on my lan with win2k machines.

My work machine runs SuSE 9.2. It almost got samba right on the first
try. At home I run SuSE 8.2. The samba set up in it was completely
broken. There are signs of progress.

--
--
kensmith@rahul.net forging knowledge
 
Schematics has some resistors and 'special type'
of (coax)amplifiers. All that I know about those amplifiers is that
their U*I=22,5Watt, but that should be all that I need.

This don't seem to mean much. Amps have all sorts of specs, like
gain,
bandwidth, noise, slew rate etc.
but I really don't need all that. When I try to solve it manually, I
write down Kirchhoffs rules and equations for componenets, use math
program for numerical solving of system and thats ALL.
I just want program to make it easier for me when for eg. removing one
resistor.
To me, (coax) amplifier is a 'strange' resistor with U=22/I. Its a
'black box' with two wires and I don't wanna know more about it. My
problem is
calculating ONLY power supply of amps, so it should be really simple
to solve it.

It is
connected to power supply =63V DC.
I want to know the (DC)current that those amplifiers are using and
their voltage.

How do I add that type of amplifiers to SuperSpice component
database?

I presume you mean the specific amp model which is a ".subckt".
".subckt" models are placed in library text files, usually with the
extension .lib. You need to find out what the amp model is.
yes, (but its not really an 'amp' to me, at least not now)
 
On Sun, 20 Mar 2005 20:23:13 -0700, Jim Dynamite
<thegreatone@example.com> wrote:

dg, You harp about things that you know not about. LTSpice can run
ANY netlist... you're just too much the amateur to understand how.
Really? :)

Didn't know I was harping. What things are you worried about? Just
the parts about devices?

I said:
o LTspice can't handle resistor and capacitors specified with w/l and
models. (It can actually run resistors this way with various error
messages, but it's undocumented.) You can use undocumented features
if you like. I usually choose not to.

I have run circuits in ltspice with resistors to use the graphics, but
always have checked the results with other simulators. I like using
multiple simulators anyway as a cross check so this isn't unusual. I
don't like seeing the error messages LTspice gives with these models.

Caps don't seem to work at all specified this way, but aren't supposed
to:

Syntax: Cnnn n1 n2 <capacitance> [ic=<value>]
+ [Rser=<value>] [Lser=<value>] [Rpar=<value>]

+ [Cpar=<value>] [m=<value>]
+ [RLshunt=<value>]

**********

LTSPICE test
*********************************************************
..model pp c cox=9e-04 capsw=2.5e-11 del=0.045e-6
+ tref=25 tc1=22e-6 tc2=0.0

*********************************************************

V1 1 0 pulse(0 5 5u 1n 1n 1)
R1 1 2 1e5
C1 2 0 5p m=1
R3 1 3 1e5
C3 3 0 PP W=33.33U L=33.33U M=5
*c3 3 0 1p m=5
..tran 1u 15u

..end

*********************************************************

Perhaps you can show me how to run this netlist in LTspice? It will
run in smartspice just fine. I guess it literally "runs" in
LTspice, but seems to give the wrong answer when the cap is specified
by w/l and uses a typical foundry model.

A lot of this is preference. I did my own layouts for years and now
hire others to do it. I've found it more accurate to design resistors
and capacitors myself rather than giving the layout person so much
leeway by specifying values. I also use the foundry specified models
for these devices during simulation.

I'd be interested in how a professional organizes their workflow. How
about teaching me a few things? As I recall you use the old Microsim
schematic capture for layout and simulate in pspice. Is this the
perfect solution (and we should all copy) or do you do this for some
other reason? Do you do your own layout? What tools do you use?

o No M= on Bipolars?

**********
Symbol Names: NPN, PNP, NPN2, PNP2

Syntax: Qxxx Collector Base Emitter [Substrate Node] model [area]
+ [off] [IC=<Vbe, Vce>] [temp=<T>]

**********

I don't see it in the documentation. It may by now be an undocumented
feature and I haven't tried this lately.

Again, you're free to draw as many parallel devices and work-arounds
as you like. I'm trying to avoid this.

Thanks for any professional advice :)

Regards,
Larry
 
On Sun, 20 Mar 2005 23:36:12 -0800, ldg <asfd@hotmail.com> wrote:

On Sun, 20 Mar 2005 20:23:13 -0700, Jim Dynamite
thegreatone@example.com> wrote:

dg, You harp about things that you know not about. LTSpice can run
ANY netlist... you're just too much the amateur to understand how.

Really? :)

Didn't know I was harping. What things are you worried about? Just
the parts about devices?

I said:
o LTspice can't handle resistor and capacitors specified with w/l and
models. (It can actually run resistors this way with various error
messages, but it's undocumented.) You can use undocumented features
if you like. I usually choose not to.
Sure it can. In most Spices, it's done with subcircuits...

xR node1 node2 <stray nodes> ModelName Params: L=100u W=2u M=4

I have run circuits in ltspice with resistors to use the graphics, but
always have checked the results with other simulators. I like using
multiple simulators anyway as a cross check so this isn't unusual. I
don't like seeing the error messages LTspice gives with these models.
HSpice and "Smart"Spice tend to run NON-SPICE-STANDARD notation just
to be ass-holes and thwart portability.

But my particular schematic capture can write out netlists in multiple
templates, so I can presently write in PSpice, LVS (for any layout
editor) and SmartSpice/HSpice formats.

There IS an issue with computational notation, {...} or '...' , but
that was solved this weekend (see below).

Caps don't seem to work at all specified this way, but aren't supposed
to:

Syntax: Cnnn n1 n2 <capacitance> [ic=<value>]
+ [Rser=<value>] [Lser=<value>] [Rpar=<value>]

+ [Cpar=<value>] [m=<value>]
+ [RLshunt=<value>]
Done the same way as R's...

xC node1 node2 <stray nodes> ModelName Params: L=100u W=20u (Some
nutcases use an M here, I don't, it's confusing... for segmented R's I
may adopt "S")

**********

LTSPICE test
*********************************************************
.model pp c cox=9e-04 capsw=2.5e-11 del=0.045e-6
+ tref=25 tc1=22e-6 tc2=0.0

*********************************************************

V1 1 0 pulse(0 5 5u 1n 1n 1)
R1 1 2 1e5
C1 2 0 5p m=1
R3 1 3 1e5
C3 3 0 PP W=33.33U L=33.33U M=5
*c3 3 0 1p m=5
.tran 1u 15u

.end

*********************************************************

Perhaps you can show me how to run this netlist in LTspice? It will
run in smartspice just fine. I guess it literally "runs" in
LTspice, but seems to give the wrong answer when the cap is specified
by w/l and uses a typical foundry model.

A lot of this is preference. I did my own layouts for years and now
hire others to do it.
Same here.

I've found it more accurate to design resistors
and capacitors myself rather than giving the layout person so much
leeway by specifying values.
Likewise. Amazing how fast a digital layout guy can screw-up an
Analog layout.

I also use the foundry specified models
for these devices during simulation.
(I have models for well over 100 processes/foundries.)

I'm a circuit designer, thus I THINK in values, NOT physical
dimensions. Layout people like dimensions (naturally :).

I can netlist that way (using alternate templates), backing out the
dimensions by Algebraic computations {...functions...}, but this
doesn't help the layout guy (we like to minimize human intervention
:).

So, this weekend, my oldest son wrote an executable for me that reads
in a netlist, computes all the {...} and fills in numbers for L and W,
making for a clean, untouched by human hands, LVS netlist.

After refinement, we will put it up for sale on his website.

I'd be interested in how a professional organizes their workflow. How
about teaching me a few things? As I recall you use the old Microsim
schematic capture for layout and simulate in pspice. Is this the
perfect solution (and we should all copy) or do you do this for some
other reason? Do you do your own layout? What tools do you use?

o No M= on Bipolars?
Spice STANDARD is A= , but the literal is assumed, not written...

Q1 C B E [SUB} ModelName 5 <<---

**********
Symbol Names: NPN, PNP, NPN2, PNP2

Syntax: Qxxx Collector Base Emitter [Substrate Node] model [area]
+ [off] [IC=<Vbe, Vce>] [temp=<T>]

**********

I don't see it in the documentation. It may by now be an undocumented
feature and I haven't tried this lately.

Again, you're free to draw as many parallel devices and work-arounds
as you like. I'm trying to avoid this.
Just showed you how above ;-)

Thanks for any professional advice :)

Regards,
Larry

...Jim Thompson
--
| James E.Thompson, P.E. | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona Voice:(480)460-2350 | |
| E-mail Address at Website Fax:(480)460-2142 | Brass Rat |
| http://www.analog-innovations.com | 1962 |

I love to cook with wine. Sometimes I even put it in the food.
 
On Mon, 21 Mar 2005 08:57:04 +0100, "Helmut Sennewald"
<HelmutSennewald@t-online.de> wrote:

Hello Larry,
the multiplier for Q is now in the LTspice documentation and it's
implemeted.
I wonder why it is exactly the same text as you posted.


---- From the manual -------

Q. Bipolar transistor

Symbol Names: NPN, PNP, NPN2, PNP2

Syntax: Qxxx Collector Base Emitter [Substrate Node] model [area]
+ [off] [IC=<Vbe, Vce>] [temp=<T>]
Thanks Helmut,

This is very useful to know. You say it is in the LTspice
documentation, but where? I know I'm needing better glasses, but I'm
having trouble finding the [M=<M>] in the above text. Is there other
documentation posted for this simulator other than the help file?

Like I said, LTspice keeps getting better :)

Regards,
Larry
 
On Mon, 21 Mar 2005 08:44:34 -0700, Jim Thompson
<thegreatone@example.com> wrote:

" is a number, it IS NOT SPECIFIED as M=, except in
non-standard-conforming shit-for-brains simulators.
Really? How interesting. It's not an accepted spice "lexicon"?

Since Helmut says this has been implemented in LTspice now, this
simulator also is bad?

So using a 6 bit dac example again, you wouldn't weight the
transistors 1,2,4,8,16,32? Or you would just place 64 transistors?

Perhaps you'd write a subcircuit to create the M= function yourself?
Or maybe you'd try to make the transistors physically larger so the
current densities would match?

The dacs I've done seemed to be help greatly by doing these arrays.
It also seemed to me that if you want things to match they should be
the same, hence the arrays. Using M= greatly simplifies this.

Regards,
Larry
 
On Sun, 20 Mar 2005 23:36:12 -0800, ldg <asfd@hotmail.com> wrote:

dg, You harp about things that you know not about. LTSpice can run
ANY netlist... you're just too much the amateur to understand how.

For completeness, I suppose I should include an example of the
resistor error messages when the resistor is specified with w/l and a
model.

LTspice is apparently looking for the original spice syntax for the
various parameters in the model and doesn't utilize much of the
foundry supplied resistor model.

The fact that it works for "semiconductor resistors" is not
documented:


Syntax: Rxxx n1 n2 <value> [tc=tc1, tc2, ...]

The resistor supplies a simple linear resistance between nodes n1 and
n2. A temperature dependence can be defined for each resistor
instance with the parameter tc. The resistance, R, at will be

R = R0 * (1. + dt * tc1 + dt**2 * tc2 + dt**3 * tc3 + ...)

where R0 is the resistance at the nominal temperature and dt is the
difference between the resistor's temperature and the nominal
temperature.


Running this file shows the error messages the simulator kicks out.
It does find the sheet resistance and that provides an accurate
nominal simulation in the rc below:



LTSPICE test

V1 1 0 pulse(0 5 10u 1n 1n 1)
R1 1 2 1e4
C1 2 0 1e-9
XR2 1 3 rny10k
C3 3 0 1e-9

..SUBCKT RNY10K a b
RR10 N_1 b NY W=4.4U L=88U
RR9 N_2 N_1 NY W=4.4U L=88U
RR8 N_3 N_2 NY W=4.4U L=88U
RR7 N_4 N_3 NY W=4.4U L=88U
RR6 N_5 N_4 NY W=4.4U L=88U
RR5 N_6 N_5 NY W=4.4U L=88U
RR4 N_7 N_6 NY W=4.4U L=88U
RR3 N_8 N_7 NY W=4.4U L=88U
RR2 N_9 N_8 NY W=4.4U L=88U
RR1 a N_9 NY W=4.4U L=88U
..ENDS RNY10K
..tran 1u 0.1m

..model ny r rsh = 50
+ dw = 0.08e-6 dlr = -0.8e-6
+ cox = 1.3e-4 capsw = 0.060e-9
+ tc1r = 4.0e-4 tc2r = 1.1e-6
+ tref = 25
*

..end

Again, this works fine in Smartspice. No subcircuits needed :)

Regards,
Larry
 
On Mon, 21 Mar 2005 15:18:03 -0800, ldg <asfd@hotmail.com> wrote:

On Mon, 21 Mar 2005 15:27:08 -0700, Jim Thompson
thegreatone@example.com> wrote:

Take it up with Mikey. You've wasted several hours of my time. No
more. Fookin' amateur ;-)

...Jim Thompson
--

To JIM:

Take your lithium. Rent Napoleon Dynamite. Grab a good cabernet and
enjoy life :)

You may want to reconsider saying things like this to others - "You
harp about things that you know not about". I was curious at that
point what you might actually know. Not curious now. :)

TO THE GROUP:

Hopefully the exchange might provide some insight to others on the
various topics and wasn't too distracting. If so, let me apologize.

Sorry for taking over the thread.

I had fun though. :)

Regards,
Larry
Bwahahahahaha!

Fookin' amateur!

Though I'm a Scot, not Irish, I like that phrase "Fookin' amateur";
have to add it to my repertoire ;-)

...Jim Thompson
--
| James E.Thompson, P.E. | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona Voice:(480)460-2350 | |
| E-mail Address at Website Fax:(480)460-2142 | Brass Rat |
| http://www.analog-innovations.com | 1962 |

I love to cook with wine. Sometimes I even put it in the food.
 

Welcome to EDABoard.com

Sponsor

Back
Top