Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Think about mosfet symbols #19

Open
pepijndevos opened this issue Sep 21, 2021 · 1 comment
Open

Think about mosfet symbols #19

pepijndevos opened this issue Sep 21, 2021 · 1 comment
Labels
abstract Idle musings and ideas enhancement New feature or request low priority

Comments

@pepijndevos
Copy link
Collaborator

the symbol itself

Mosfets are the bread and butter of IC design, so having a good icon for them is super important. There are so many styles though.

This seems to be the most common one in datasheets and papers. Nice and simple, but hides the bulk connection.
image

Some more variants.
I don't like the ones with the arrow/ball at the gate because it doesn't make much physical sense. It does convey the symmetric nature of a mosfet, which on the one hand is nice, but doesn't communicate design intent well in terms of the side with the high/low impedance.
The ones with the bulk line are more explicit, but more "busy"
image

Current design: explicit bulk connection. I choose it because it's the closest to what is physically happening. Downside: often the bulk connection isn't very "interesting"
image

It also prevents connections like this which are very common in current mirrors and the like
image

So I think ideally we'd have the first example for the common case where I suppose the bulk connection is specified in the properties pane, rather than in the schematic. And then the 4 terminal case is there if you want to do something fancy with backgates and tripple wells and such.

In the 4 terminal case you should be able to do this with a better UX than what I did here, which is draw a single segment wire, add a label to it, give it a name, and then drag it under the bulk terminal. It can still be that under the hood, but the UX should be more like a proper "label" element.

image

anotations

Besides the mosfet itself there is a bunch of info you might want to show in the schematic. On the one hand you want to keep the schematic as clean as in a datasheet or paper, so you can focus on the core topology, on the other hand you also want to see all the important design info at a glance.

Cadence goes for the all out verbose mode, which isn't great IMO.
image

Currently, no annotations are implemented at all, so even more bare than the paper "M1" label. Also not great maybe.

An amazing thing EveryCircuit does is that it shows the mosfet operating region. I would love to steal this. Not so sure about the real-time dots racing around the circuit, I think it doesn't scale very well to more complex simulations. But as discussed in #18 the little mini plots could be a useful annotation.
image

Another key thing to annotate might be the W/L ratio. But the range of sizes is such that literally scaling the mosfets would look quite ridiculous. But what if it had a little rectangle? Doesn't really convey the absolute size, but dunno it seems kinda cute.
mosfet

For other things I think some generic templating language might be perfect. Like you just add a little textbox with gm: {op.m1.gm} and it shows you the gm from the operating point simulation or whatever. Good idea or too hacky/finicky?

@pepijndevos
Copy link
Collaborator Author

Another important thing to consider is how to easily tell PMOS and NMOS appart. Currently these have their own background color which works better than trying to remember which way the arrow points.

@pepijndevos pepijndevos added enhancement New feature or request abstract Idle musings and ideas low priority labels Apr 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
abstract Idle musings and ideas enhancement New feature or request low priority
Projects
None yet
Development

No branches or pull requests

1 participant