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

Files for FVF based OTA, Analog Vibes, Chipathon #359

Open
wants to merge 47 commits into
base: main
Choose a base branch
from

Conversation

Subhampal9
Copy link

Python and spice codes for FVF based super class AB OTA layout generation , PEX and post-layout simulation. Also contains Pcells used to create the OTA -

  1. Flipped Voltage Follower Pcell. PR for this was already created before.
  2. Transmission Gate
  3. Low Voltage Current Mirror

Some fixes and modifications were done in these already available Pcells - current_mirror, c_route, four_transistor_interdigitized. PRs for them were also created before this .

@Subhampal9 Subhampal9 changed the title Files for FVF based OTA Files for FVF based OTA, Analog Vibes, Chipathon Dec 24, 2024
@Subhampal9
Copy link
Author

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can attach the reports and other extra files in the PR body or in a comment and remove them from here to keep the repo clean.

global_current_bias_params: tuple[float,float,float]=(8.3,1.42,2)
) -> Component:
"""
creates a super class AB OTA using flipped voltage follower at biasing stage and local common mode feedback to give dynamic current and gain boost much less dependent on biasing current
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this docstring correct?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

umm what part are u referring to?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like it describes the OTA but it's for the nblock.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh I overlooked this..correcting it

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this is a standard PDK file, it would be better to import it from the pdk or from /openfasoc/common instead of creating a copy.


return component

#OTA = super_class_AB_OTA(sky130_mapped_pdk)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove these lines if they are not used.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one as well need not be copied.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These results also can be attached in the PR body instead of committing.

@@ -0,0 +1,37 @@
## FLIPPED VOLTAGE FOLLOWER CELL
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be good to include some more documentation such as a schematic, some code examples, or layout images.

sd_rmult: sd_rmult for both fets
**kwargs: any kwarg that is supported by nmos and pmos

Note- While using nmos, use with_dnwell=False
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this critical? If yes, it would be better to set it in the function.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pmos and nmos uses different parameter names for dnwell. This makes it hard to avoid code duplication. To set it in function, code duplication will happen

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I meant that instead of relying on the user to set dnwell=False, you can add an if statement that sets it to false if an nmos is used. Perhaps a warning can also be printed along with it.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants