Bug 888 - ls180 PLL port to sky130 needed
Summary: ls180 PLL port to sky130 needed
Status: RESOLVED FIXED
Alias: None
Product: Libre-SOC's second ASIC
Classification: Unclassified
Component: source code (show other bugs)
Version: unspecified
Hardware: Other Linux
: --- enhancement
Assignee: Dimitri Galayko
URL:
Depends on:
Blocks: 850
  Show dependency treegraph
 
Reported: 2022-07-12 13:09 BST by Luke Kenneth Casson Leighton
Modified: 2022-11-09 11:48 GMT (History)
2 users (show)

See Also:
NLnet milestone: NGI.POINTER.Gigabit.ASIC
total budget (EUR) for completion of task and all subtasks: 10000
budget (EUR) for this task, excluding subtasks' budget: 10000
parent task for budget allocation: 912
child tasks for budget allocation:
The table of payments (in EUR) for this task; TOML format:
dimitry=10000


Attachments
Output PLL frequency versus time : plot of a typical power-off transient response of the designed PLL with Fref=20MHz (125.08 KB, image/png)
2022-10-29 23:03 BST, Dimitri Galayko
Details
Output PLL frequency versus time : plot of a typical power-off transient response of the designed PLL with Fref=25 MHz (395.90 KB, image/png)
2022-10-30 00:09 BST, Dimitri Galayko
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Luke Kenneth Casson Leighton 2022-07-12 13:09:37 BST
the PLL from ls180 which was under TSMC NDA 180nm needs porting to
sky130 and entirely Libre-Licensed this time.
(condition of NGI POINTER contract)
Comment 1 Dimitri Galayko 2022-10-29 23:03:29 BST
Created attachment 185 [details]
Output PLL frequency versus time : plot of a typical power-off transient response of the designed PLL with Fref=20MHz

The displayed output of the PLL is a divided-by-two the frequency of the VCO and the multiplied-by-12 the frequency of the input reference.
Comment 2 Dimitri Galayko 2022-10-29 23:05:40 BST
I have succeeded to port the generator written for the PLL in 180nm TSMC technology to skywriter 130 technology. The new generator is based on the ngspice tool and python libraries, which makes it fully "open source". 

The generator based on Jupiter notebooks provides a working PLL ngspice netlist defined as a sub circuit, which is ready to be tested under different conditions (Vdd, input reference frequency, etc.). 

The developed design methodology is described in the attached documents. 

The netlist of one version of the generated PLL is given here. The full sources of the generator allowing one to generate netlists with different parameters are about to be provided on the GitHub of LIP6, the link will be given shortly.
Comment 3 Luke Kenneth Casson Leighton 2022-10-29 23:24:01 BST
(In reply to Dimitri Galayko from comment #2)
> I have succeeded to port the generator written for the PLL in 180nm TSMC
> technology to skywriter 130 technology. The new generator is based on the
> ngspice tool and python libraries, which makes it fully "open source". 

that's fantastic, a big deal.

> The generator based on Jupiter notebooks provides a working PLL ngspice
> netlist defined as a sub circuit, which is ready to be tested under
> different conditions (Vdd, input reference frequency, etc.). 

interesting approach, using jupiter.

> The developed design methodology is described in the attached documents. 

hm, some attachment types are limited, can you email them to me, i will
put them online rather than in the bugtracker PostgreSQL database
Comment 4 Dimitri Galayko 2022-10-30 00:09:23 BST
Created attachment 186 [details]
Output PLL frequency versus time : plot of a typical power-off transient response of the designed PLL with Fref=25 MHz

Different outputs of the divider are selected, yelling different multiples of the ref. frequency at the output.
Comment 5 Dimitri Galayko 2022-10-30 00:51:23 BST
To be done on the PLL:
 
-- The current reference generator (a CMOS quad or a bandgap). Some difficulties with the analog models of the transistors in the sky13O PDK delayed this implementation. The present model of the PLL uses an ideal current source instead. That should be fixed soon. 

-- Integration of ngspice and python: I used the shared library allowing one to manage the ngspice from a python code (https://pyspice.fabrice-salvaire.fr/releases/v1.3/api/PySpice/Spice/NgSpice/Shared.html).  That works pretty well, but poorly documented, and the netlist/simulations are very difficult to debug: the ngspice messages and errors are not displayed. Some effort is required from the community to provide a full console output of ngspice when running from a python code.
Comment 6 Luke Kenneth Casson Leighton 2022-11-09 11:09:04 GMT
from professor galayko

Please find attached the three report files (to start from the file on PLL) describing the PLL design with their blocks.

One of the versions of the generated PLL, which works well and whose specs correspond to the design done for the first LibreSOC chip (tsmc180), but here implemented in sky130. The readme file provides information about how to simulate it.

In addition to these files, there are generators themselves (the notebooks), which will also be published on LIP6 GitHub, and which allows one to generate a PLL for a range of specifications. We will publish it on GitHub of LIP6, since, I believe, updates will be necessary. I would like to find a beta tester for all that.
Comment 7 Luke Kenneth Casson Leighton 2022-11-09 11:16:51 GMT
full reports here 

https://ftp.libre-soc.org/ngi_pointer_888_lip6_sky130_pll.zip
Comment 8 Jacob Lifshay 2022-11-09 11:48:51 GMT
while reading the report i noticed that in the charge pump pdf in figures 2 and 3 schematic of the cmos charge pump that M31 is missing the circle indicating it's a pmos transistor.

you may want to fix that.