RTimothyEdwards / open_pdks

PDK installer for open-source EDA tools and toolchains. Distributed with setups for the SkyWater 130nm and Global Foundries 180nm open processes.
http://opencircuitdesign.com/open_pdks
Apache License 2.0
292 stars 86 forks source link

Device Width and Fingers in mos generator seems incorrect. #464

Open christoph-weiser opened 2 weeks ago

christoph-weiser commented 2 weeks ago

Problem

The way magic generates mos devices is not respecting the Fingers field. It should divide the total Width by Fingers to give the correct width of each individual finger. The total width of the device should still be what was typed in the Width field.

Implications

The problem is that this bug renders magics SPICE import function unusable without modifying the netlist manually before importing.

Example

The input to the generator: image

This is the layout generated: image

RTimothyEdwards commented 2 weeks ago

Within the dialog window, "Width" means "width per finger" (although it would probably be useful to add a message indicating it as such, or a checkbox to toggle behavior between total width and width per finger, or a separate message widget to display the total width).

"SPICE import" is independent of the dialog window. SPICE import will correctly interpret W in a SPICE netlist as total width.

RTimothyEdwards commented 2 weeks ago

I'm sure I implemented a "total width" message display some time ago, but it probably was not for the sky130 process. It's not difficult to implement.

christoph-weiser commented 2 weeks ago

Ahh ok, i assumed the SPICE netlist would be directly plugged into the device generator without any preprocessing.

That makes sense then, but I think it would be good to indicate the Width means width per finger to avoid confusion, as it differs from what one would typically write in the schematic.

RTimothyEdwards commented 2 weeks ago

Agreed. Feel free to leave the issue open until I get around to implementing it.