From 01f26b8ba06b0cc4aef387cbb535eda390933cab Mon Sep 17 00:00:00 2001 From: PhillipRambo Date: Tue, 16 Jun 2026 14:40:18 +0200 Subject: [PATCH] push new schematic for OTA --- .../part_1_OTA/testbenches/ota_testbench.sch | 38 +- .../__pycache__/__init__.cpython-310.pyc | Bin 225 -> 225 bytes .../util_gds_reader.cpython-310.pyc | Bin 5926 -> 5926 bytes .../util_meshlines.cpython-310.pyc | Bin 9661 -> 9661 bytes .../util_simulation_setup.cpython-310.pyc | Bin 7255 -> 7255 bytes .../util_stackup_reader.cpython-310.pyc | Bin 7303 -> 7303 bytes .../util_utilities.cpython-310.pyc | Bin 4427 -> 4427 bytes .../run_t_con_50GHZ_data/sub-1/port_it_1 | 71 +- .../run_t_con_50GHZ_data/sub-1/port_it_2 | 71 +- .../run_t_con_50GHZ_data/sub-1/port_it_3 | 71 +- .../run_t_con_50GHZ_data/sub-1/port_ut_1 | 71 +- .../run_t_con_50GHZ_data/sub-1/port_ut_2 | 71 +- .../run_t_con_50GHZ_data/sub-1/port_ut_3 | 71 +- .../sub-1/run_t_con_50GHZ.xml | 20 + .../testbench/LC_Oscillator_tb.sch | 96 +- .../testbench/simulations/LC_Oscillator.save | 119 +++ .../simulations/LC_Oscillator_tb.save | 144 ++- .../LC_Oscillator/xschem/LC_Oscillator.sch | 827 +++++++++++++++--- .../LC_Oscillator/xschem/LC_Oscillator.sym | 45 +- .../cace/differential_oscillator.yaml | 85 -- .../scripts/__pycache__/freq.cpython-310.pyc | Bin 704 -> 0 bytes .../diff_Roscillator/cace/scripts/freq.py | 30 - .../cace/templates/diff_oscillator_tb.sch | 65 -- .../diff_Roscillator/cace/templates/xschemrc | 18 - .../docs/diff_ring_oscillator.md | 50 -- .../schematic/frequency.png | Bin 42515 -> 0 bytes .../docs/diff_ring_oscillator_schematic.md | 15 - .../docs/diff_ring_oscillator_schematic.svg | 160 ---- .../docs/diff_ring_oscillator_symbol.svg | 160 ---- .../Frequency/diff_oscillator_tb.sch | 42 - .../parameters/Frequency/frequency.png | Bin 16308 -> 0 bytes .../parameters/Frequency/run_0/.spiceinit | 30 - .../Frequency/run_0/conditions.yaml | 8 - .../Frequency/run_0/diff_oscillator_tb.sch | 42 - .../Frequency/run_0/diff_oscillator_tb_0.data | 208 ----- .../Frequency/run_0/diff_ring_oscillator.sym | 27 - .../Frequency/simulation_summary.csv | 2 - .../Frequency/simulation_summary.md | 5 - .../runs/RUN_2025-08-20_14-36-06/summary.md | 9 - .../Frequency/diff_oscillator_tb.sch | 42 - .../parameters/Frequency/frequency.png | Bin 16308 -> 0 bytes .../parameters/Frequency/run_0/.spiceinit | 30 - .../Frequency/run_0/conditions.yaml | 8 - .../Frequency/run_0/diff_oscillator_tb.sch | 42 - .../Frequency/run_0/diff_oscillator_tb_0.data | 208 ----- .../Frequency/run_0/diff_ring_oscillator.sym | 27 - .../Frequency/simulation_summary.csv | 2 - .../Frequency/simulation_summary.md | 5 - .../runs/RUN_2025-08-20_14-53-50/summary.md | 9 - .../Frequency/diff_oscillator_tb.sch | 42 - .../parameters/Frequency/frequency.png | Bin 15407 -> 0 bytes .../parameters/Frequency/run_0/.spiceinit | 30 - .../Frequency/run_0/conditions.yaml | 8 - .../Frequency/run_0/diff_oscillator_tb.sch | 42 - .../Frequency/run_0/diff_oscillator_tb_0.data | 208 ----- .../Frequency/run_0/diff_ring_oscillator.sym | 27 - .../Frequency/simulation_summary.csv | 2 - .../Frequency/simulation_summary.md | 5 - .../runs/RUN_2025-08-20_14-54-56/summary.md | 9 - .../Frequency/diff_oscillator_tb.sch | 61 -- .../parameters/Frequency/run_0/.spiceinit | 30 - .../Frequency/run_0/conditions.yaml | 8 - .../Frequency/run_0/diff_oscillator_tb.sch | 61 -- .../Frequency/run_0/diff_ring_oscillator.sym | 27 - .../runs/RUN_2025-08-20_15-04-40/summary.md | 9 - .../Frequency/diff_oscillator_tb.sch | 60 -- .../parameters/Frequency/frequency.png | Bin 16308 -> 0 bytes .../parameters/Frequency/run_0/.spiceinit | 30 - .../Frequency/run_0/conditions.yaml | 8 - .../Frequency/run_0/diff_oscillator_tb.sch | 60 -- .../Frequency/run_0/diff_oscillator_tb_0.data | 208 ----- .../Frequency/run_0/diff_ring_oscillator.sym | 27 - .../Frequency/simulation_summary.csv | 2 - .../Frequency/simulation_summary.md | 5 - .../runs/RUN_2025-08-20_15-04-51/summary.md | 9 - .../Frequency/diff_oscillator_tb.sch | 65 -- .../parameters/Frequency/frequency.png | Bin 44016 -> 0 bytes .../parameters/Frequency/run_0/.spiceinit | 30 - .../Frequency/run_0/conditions.yaml | 8 - .../Frequency/run_0/diff_oscillator_tb.sch | 65 -- .../Frequency/run_0/diff_oscillator_tb_0.data | 208 ----- .../Frequency/run_0/diff_ring_oscillator.sym | 27 - .../Frequency/simulation_summary.csv | 2 - .../Frequency/simulation_summary.md | 5 - .../runs/RUN_2025-08-20_15-27-09/summary.md | 9 - .../Frequency/diff_oscillator_tb.sch | 65 -- .../parameters/Frequency/frequency.png | Bin 44016 -> 0 bytes .../parameters/Frequency/run_0/.spiceinit | 30 - .../Frequency/run_0/conditions.yaml | 8 - .../Frequency/run_0/diff_oscillator_tb.sch | 65 -- .../Frequency/run_0/diff_oscillator_tb_0.data | 208 ----- .../Frequency/run_0/diff_ring_oscillator.sym | 27 - .../Frequency/simulation_summary.csv | 2 - .../Frequency/simulation_summary.md | 5 - .../runs/RUN_2025-08-20_15-28-35/summary.md | 9 - .../Frequency/diff_oscillator_tb.sch | 65 -- .../parameters/Frequency/frequency.png | Bin 44016 -> 0 bytes .../parameters/Frequency/run_0/.spiceinit | 30 - .../Frequency/run_0/conditions.yaml | 8 - .../Frequency/run_0/diff_oscillator_tb.sch | 65 -- .../Frequency/run_0/diff_oscillator_tb_0.data | 208 ----- .../Frequency/run_0/diff_ring_oscillator.sym | 27 - .../Frequency/simulation_summary.csv | 2 - .../Frequency/simulation_summary.md | 5 - .../runs/RUN_2025-08-20_15-29-02/summary.md | 9 - .../Frequency/diff_oscillator_tb.sch | 65 -- .../parameters/Frequency/frequency.png | Bin 44016 -> 0 bytes .../parameters/Frequency/run_0/.spiceinit | 30 - .../Frequency/run_0/conditions.yaml | 8 - .../Frequency/run_0/diff_oscillator_tb.sch | 65 -- .../Frequency/run_0/diff_oscillator_tb_0.data | 208 ----- .../Frequency/run_0/diff_ring_oscillator.sym | 27 - .../Frequency/simulation_summary.csv | 2 - .../Frequency/simulation_summary.md | 5 - .../runs/RUN_2025-08-20_17-00-02/summary.md | 9 - .../Frequency/diff_oscillator_tb.sch | 65 -- .../parameters/Frequency/frequency.png | Bin 43353 -> 0 bytes .../parameters/Frequency/run_0/.spiceinit | 30 - .../Frequency/run_0/conditions.yaml | 8 - .../Frequency/run_0/diff_oscillator_tb.sch | 65 -- .../Frequency/run_0/diff_oscillator_tb_0.data | 185 ---- .../Frequency/run_0/diff_ring_oscillator.sym | 27 - .../Frequency/simulation_summary.csv | 2 - .../Frequency/simulation_summary.md | 5 - .../runs/RUN_2025-08-28_13-03-04/summary.md | 9 - .../Frequency/diff_oscillator_tb.sch | 65 -- .../parameters/Frequency/frequency.png | Bin 43353 -> 0 bytes .../parameters/Frequency/run_0/.spiceinit | 30 - .../Frequency/run_0/conditions.yaml | 8 - .../Frequency/run_0/diff_oscillator_tb.sch | 65 -- .../Frequency/run_0/diff_oscillator_tb_0.data | 185 ---- .../Frequency/run_0/diff_ring_oscillator.sym | 27 - .../Frequency/simulation_summary.csv | 2 - .../Frequency/simulation_summary.md | 5 - .../runs/RUN_2025-08-28_13-08-46/summary.md | 9 - .../Frequency/diff_oscillator_tb.sch | 65 -- .../parameters/Frequency/frequency.png | Bin 42515 -> 0 bytes .../parameters/Frequency/run_0/.spiceinit | 30 - .../Frequency/run_0/conditions.yaml | 8 - .../Frequency/run_0/diff_oscillator_tb.sch | 65 -- .../Frequency/run_0/diff_oscillator_tb_0.data | 185 ---- .../Frequency/run_0/diff_ring_oscillator.sym | 27 - .../Frequency/simulation_summary.csv | 2 - .../Frequency/simulation_summary.md | 5 - .../runs/RUN_2025-11-11_14-28-29/summary.md | 9 - .../Frequency/diff_oscillator_tb.sch | 65 -- .../parameters/Frequency/frequency.png | Bin 42515 -> 0 bytes .../parameters/Frequency/run_0/.spiceinit | 30 - .../Frequency/run_0/conditions.yaml | 8 - .../Frequency/run_0/diff_oscillator_tb.sch | 65 -- .../Frequency/run_0/diff_oscillator_tb_0.data | 185 ---- .../Frequency/run_0/diff_ring_oscillator.sym | 27 - .../Frequency/simulation_summary.csv | 2 - .../Frequency/simulation_summary.md | 5 - .../runs/RUN_2025-11-11_17-40-06/summary.md | 9 - .../testbench/diff_oscillator_tb.sch | 113 --- .../testbench/diff_oscillator_tb.sym | 14 - .../diff_Roscillator/testbench/python/freq.py | 54 -- .../testbench/python/pn_spectrum.py | 186 ---- .../simulations/diff_oscillator_tb.save | 62 -- .../differential_output_phase_noise.png | Bin 141938 -> 0 bytes .../diff_Roscillator/testbench/xschemrc | 18 - .../xschem/diff_ring_oscillator.sch | 37 - .../xschem/diff_ring_oscillator.sym | 27 - .../xschem/differential_core.sch | 82 -- .../xschem/differential_core.sym | 30 - .../diff_Roscillator/xschem/xschemrc | 18 - 167 files changed, 1078 insertions(+), 6845 deletions(-) create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/testbench/simulations/LC_Oscillator.save delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/cace/differential_oscillator.yaml delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/cace/scripts/__pycache__/freq.cpython-310.pyc delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/cace/scripts/freq.py delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/cace/templates/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/cace/templates/xschemrc delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator/schematic/frequency.png delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator_schematic.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator_schematic.svg delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator_symbol.svg delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/frequency.png delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/.spiceinit delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/conditions.yaml delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/diff_oscillator_tb_0.data delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/diff_ring_oscillator.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/simulation_summary.csv delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/simulation_summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/frequency.png delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/.spiceinit delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/conditions.yaml delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/diff_oscillator_tb_0.data delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/diff_ring_oscillator.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/simulation_summary.csv delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/simulation_summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/frequency.png delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/.spiceinit delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/conditions.yaml delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/diff_oscillator_tb_0.data delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/diff_ring_oscillator.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/simulation_summary.csv delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/simulation_summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/.spiceinit delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/conditions.yaml delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/diff_ring_oscillator.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/frequency.png delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/.spiceinit delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/conditions.yaml delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/diff_oscillator_tb_0.data delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/diff_ring_oscillator.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/simulation_summary.csv delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/simulation_summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/parameters/Frequency/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/parameters/Frequency/frequency.png delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/parameters/Frequency/run_0/.spiceinit delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/parameters/Frequency/run_0/conditions.yaml delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/parameters/Frequency/run_0/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/parameters/Frequency/run_0/diff_oscillator_tb_0.data delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/parameters/Frequency/run_0/diff_ring_oscillator.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/parameters/Frequency/simulation_summary.csv delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/parameters/Frequency/simulation_summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-28-35/parameters/Frequency/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-28-35/parameters/Frequency/frequency.png delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-28-35/parameters/Frequency/run_0/.spiceinit delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-28-35/parameters/Frequency/run_0/conditions.yaml delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-28-35/parameters/Frequency/run_0/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-28-35/parameters/Frequency/run_0/diff_oscillator_tb_0.data delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-28-35/parameters/Frequency/run_0/diff_ring_oscillator.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-28-35/parameters/Frequency/simulation_summary.csv delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-28-35/parameters/Frequency/simulation_summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-28-35/summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-29-02/parameters/Frequency/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-29-02/parameters/Frequency/frequency.png delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-29-02/parameters/Frequency/run_0/.spiceinit delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-29-02/parameters/Frequency/run_0/conditions.yaml delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-29-02/parameters/Frequency/run_0/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-29-02/parameters/Frequency/run_0/diff_oscillator_tb_0.data delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-29-02/parameters/Frequency/run_0/diff_ring_oscillator.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-29-02/parameters/Frequency/simulation_summary.csv delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-29-02/parameters/Frequency/simulation_summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-29-02/summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_17-00-02/parameters/Frequency/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_17-00-02/parameters/Frequency/frequency.png delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_17-00-02/parameters/Frequency/run_0/.spiceinit delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_17-00-02/parameters/Frequency/run_0/conditions.yaml delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_17-00-02/parameters/Frequency/run_0/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_17-00-02/parameters/Frequency/run_0/diff_oscillator_tb_0.data delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_17-00-02/parameters/Frequency/run_0/diff_ring_oscillator.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_17-00-02/parameters/Frequency/simulation_summary.csv delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_17-00-02/parameters/Frequency/simulation_summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_17-00-02/summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/frequency.png delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/.spiceinit delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/conditions.yaml delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/diff_oscillator_tb_0.data delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/diff_ring_oscillator.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/simulation_summary.csv delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/simulation_summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/frequency.png delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/.spiceinit delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/conditions.yaml delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/diff_oscillator_tb_0.data delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/diff_ring_oscillator.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/simulation_summary.csv delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/simulation_summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/frequency.png delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/.spiceinit delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/conditions.yaml delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/diff_oscillator_tb_0.data delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/diff_ring_oscillator.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/simulation_summary.csv delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/simulation_summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/frequency.png delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/.spiceinit delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/conditions.yaml delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/diff_oscillator_tb_0.data delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/diff_ring_oscillator.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/simulation_summary.csv delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/simulation_summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/summary.md delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/testbench/diff_oscillator_tb.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/testbench/diff_oscillator_tb.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/testbench/python/freq.py delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/testbench/python/pn_spectrum.py delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/testbench/simulations/diff_oscillator_tb.save delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/testbench/spectrum/differential_output_phase_noise.png delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/testbench/xschemrc delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/xschem/diff_ring_oscillator.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/xschem/diff_ring_oscillator.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/xschem/differential_core.sch delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/xschem/differential_core.sym delete mode 100644 modules/module_4_type_2_PLL/diff_Roscillator/xschem/xschemrc diff --git a/modules/module_1_bandgap_reference/part_1_OTA/testbenches/ota_testbench.sch b/modules/module_1_bandgap_reference/part_1_OTA/testbenches/ota_testbench.sch index a1f51de1..e2175dfa 100644 --- a/modules/module_1_bandgap_reference/part_1_OTA/testbenches/ota_testbench.sch +++ b/modules/module_1_bandgap_reference/part_1_OTA/testbenches/ota_testbench.sch @@ -12,7 +12,7 @@ ypos2=2 divy=5 subdivy=4 unity=1 -x1=-0.22184875 +x1=0 divx=5 subdivx=8 @@ -38,37 +38,37 @@ y2=33.964 y1=-136.006 color=4 node=ph(vout) -x2=-0.22184875} +x2=7} B 2 680 -1295 1480 -895 {flags=graph -y1=27 +y1=0.024 y2=71 ypos1=0 ypos2=2 divy=5 subdivy=1 unity=1 -x1=-0.22184875 +x1=0 divx=5 subdivx=8 xlabmag=1.0 ylabmag=1.0 -node=av +node="av db20()" color=4 dataset=-1 unitx=1 logx=1 logy=0 -x2=-0.22184875} +x2=7} B 2 1535 -1295 2335 -895 {flags=graph -y1=37 -y2=86 +y1=21 +y2=67 ypos1=0 ypos2=2 divy=5 subdivy=1 unity=1 -x1=-0.22184875 +x1=0 divx=5 subdivx=8 @@ -80,18 +80,18 @@ dataset=-1 unitx=1 logx=1 logy=0 -x2=-0.22184875 +x2=7 color=4 -node=cmrr} +node="cmrr db20()"} B 2 1525 -875 2325 -475 {flags=graph -y1=0.055 -y2=30 +y1=-30 +y2=21 ypos1=0 ypos2=2 divy=5 subdivy=1 unity=1 -x1=-0.22184875 +x1=0 divx=5 subdivx=8 @@ -103,9 +103,9 @@ dataset=-1 unitx=1 logx=1 logy=0 -x2=-0.22184875 +x2=7 color=4 -node=psrr} +node="psrr db20()"} N 775 -265 775 -235 { lab=vp} N 1010 -265 1010 -235 { @@ -237,9 +237,9 @@ write tb_OTA_op.raw op ac dec 100 1 10e6 save all -let Av = db(v(vout)) -let PSRR = db(v(vout2)/v(VDDac)) -let CMRR = db((v(vout)/v(vp))/(v(vout1)/v(vp))) +let Av = v(vout) +let PSRR = v(VDDac)/v(vout2) +let CMRR = (v(vout)/v(vp))/(v(vout1)/v(vp)) let phase = 180*cph(vout)/pi write output_file.raw .endc diff --git a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/modules/__pycache__/__init__.cpython-310.pyc b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/modules/__pycache__/__init__.cpython-310.pyc index cd36dea7b77b0f095e24a5ca039aa8d3c76b79ac..fef518e5b65be1bebbeb9872064e62ee34e2e6ed 100644 GIT binary patch delta 20 acmaFJ_>hq&pO=@50SMY1eq>JMxe5R|0|ov7 delta 20 acmaFJ_>hq&pO=@50SIInpQKOZxe5R@Hw8Zc diff --git a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/modules/__pycache__/util_gds_reader.cpython-310.pyc b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/modules/__pycache__/util_gds_reader.cpython-310.pyc index 849430980ac30ce51438d65d2b6398b746dd9362..0b2b78e509fd5eb3fa10d6510e50b5ddf42d8b21 100644 GIT binary patch delta 21 bcmZ3cw@i;GpO=@50SMY1eq?UskrD?0JD3Gt delta 21 bcmZ3cw@i;GpO=@50SIInpQLZ(krD?0HVp)y diff --git a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/modules/__pycache__/util_meshlines.cpython-310.pyc b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/modules/__pycache__/util_meshlines.cpython-310.pyc index 7f5377f330d0f4eb6b0eed83fd3f8e724d223bcf..be3bb7e4da71991229f75746f36496c7a6ba7ab8 100644 GIT binary patch delta 21 bcmdn%z1N#3pO=@50SMY1eq?Us*{BKtM7joR delta 21 bcmdn%z1N#3pO=@50SIInpQLZ(*{BKtKQ9HW diff --git a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/modules/__pycache__/util_simulation_setup.cpython-310.pyc b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/modules/__pycache__/util_simulation_setup.cpython-310.pyc index e647e9b33d9e01478d7a0fec1357424ff5b82e21..391d8b66ab16b537224e5e6a9bd6c3dbfb0bf60b 100644 GIT binary patch delta 21 bcmca^aovI^pO=@50SMY1eq?Us@s [24,56,58] % stop-coordinates: (-6.4035e-05,-2.302e-05,0.00016018) m -> [27,67,58] % t/s current 1.58035417582e-16 0 3.57002008318e-13 -3.32401363379e-11 7.13845981218e-13 -4.26827219402e-11 -1.07068995412e-12 -1.15469630385e-11 -1.42753392702e-12 1.28272045763e-10 -1.78437789992e-12 4.92824114851e-10 -2.14122187282e-12 1.22304888439e-09 -2.49806584572e-12 2.40535791285e-09 -2.85490981862e-12 3.90713772447e-09 -3.21175379152e-12 5.14581577349e-09 -3.56859776442e-12 4.88882268002e-09 -3.92544173732e-12 1.27088128909e-09 -4.28228571022e-12 -7.75372743789e-09 -4.63912968312e-12 -2.34194459381e-08 -4.99597365602e-12 -4.47970407436e-08 -5.35281762892e-12 -6.76611406902e-08 -5.70966160182e-12 -8.43924468086e-08 -6.06650557472e-12 -8.55964827906e-08 -6.42334954762e-12 -6.34122230281e-08 -6.78019352052e-12 -1.54920432038e-08 -7.13703749342e-12 5.2177583143e-08 -7.49388146632e-12 1.25397065176e-07 -7.85072543922e-12 1.85489810178e-07 -8.20756941213e-12 2.1558149399e-07 -8.56441338503e-12 2.06850316431e-07 -8.92125735793e-12 1.61934281095e-07 -9.27810133083e-12 9.38859727739e-08 -9.63494530373e-12 2.11816733042e-08 -9.99178927663e-12 -3.88927183792e-08 -1.03486332495e-11 -7.55960769538e-08 -1.07054772224e-11 -8.68508323038e-08 -1.10623211953e-11 -7.78715190108e-08 -1.14191651682e-11 -5.76044136835e-08 -1.17760091411e-11 -3.48938407058e-08 -1.2132853114e-11 -1.58921711346e-08 -1.24896970869e-11 -3.26074944823e-09 -1.28465410598e-11 3.17439385888e-09 -1.32033850327e-11 5.11991604668e-09 -1.35602290056e-11 4.59640991934e-09 -1.39170729785e-11 3.19178039554e-09 -1.42739169514e-11 1.82721904274e-09 -1.46307609243e-11 8.60494175914e-10 -1.49876048972e-11 3.10181963448e-10 -1.53444488701e-11 5.83031470325e-11 -1.5701292843e-11 -2.53698624608e-11 -1.60581368159e-11 -3.48647742621e-11 -1.64149807888e-11 -2.30279389307e-11 -1.67718247617e-11 -1.98810464619e-11 -1.71286687346e-11 -2.10201248768e-11 -1.74855127075e-11 -2.22916129999e-11 -1.78423566804e-11 -2.3029574775e-11 -1.81992006533e-11 -2.20328113393e-11 -1.85560446262e-11 -2.08315222711e-11 -1.89128885991e-11 -2.02046088194e-11 -1.9269732572e-11 -2.10653022803e-11 -1.96265765449e-11 -2.2743310707e-11 -1.99834205178e-11 -2.37191030705e-11 -2.03402644907e-11 -2.36548575866e-11 -2.06971084636e-11 -2.20733206019e-11 -2.10539524365e-11 -2.11111440829e-11 -2.14107964094e-11 -2.11820110063e-11 -2.17676403823e-11 -2.24418469918e-11 -2.21244843552e-11 -2.36605336018e-11 -2.24813283281e-11 -2.42407240114e-11 -2.2838172301e-11 -2.34206491007e-11 -2.31950162739e-11 -2.222480186e-11 -2.35518602468e-11 -2.16637437156e-11 -2.39087042197e-11 -2.22931759858e-11 -2.42655481926e-11 -2.38845696693e-11 -2.46223921655e-11 -2.46983145741e-11 -2.49792361384e-11 -2.45045025937e-11 -2.53360801113e-11 -2.32521710219e-11 diff --git a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_it_2 b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_it_2 index 75b0e1aa..67178b9f 100644 --- a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_it_2 +++ b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_it_2 @@ -1,76 +1,7 @@ -% time-domain current integration by openEMS v0.0.35-108-gc651cce @Wed May 21 16:07:12 2025 +% time-domain current integration by openEMS v0.0.35-108-gc651cce @Mon May 11 15:39:38 2026 % start-coordinates: (-4.5205e-05,-2.62176e-05,0.00016018) m -> [92,56,58] % stop-coordinates: (-4.4505e-05,-2.302e-05,0.00016018) m -> [95,67,58] % t/s current 1.58035417582e-16 0 3.57002008318e-13 1.5002360465e-11 7.13845981218e-13 2.1680070933e-11 -1.07068995412e-12 1.50565723084e-11 -1.42753392702e-12 -3.39342443034e-11 -1.78437789992e-12 -1.77420148018e-10 -2.14122187282e-12 -4.85599727096e-10 -2.49806584572e-12 -1.01879549241e-09 -2.85490981862e-12 -1.75398029434e-09 -3.21175379152e-12 -2.47559706068e-09 -3.56859776442e-12 -2.6588204971e-09 -3.92544173732e-12 -1.43508538386e-09 -4.28228571022e-12 2.25162977152e-09 -4.63912968312e-12 9.2148422226e-09 -4.99597365602e-12 1.93671709781e-08 -5.35281762892e-12 3.1068321249e-08 -5.70966160182e-12 4.0882365937e-08 -6.06650557472e-12 4.41421477149e-08 -6.42334954762e-12 3.64304035827e-08 -6.78019352052e-12 1.56018611364e-08 -7.13703749342e-12 -1.65126348151e-08 -7.49388146632e-12 -5.36968762788e-08 -7.85072543922e-12 -8.67756284606e-08 -8.20756941213e-12 -1.06589581605e-07 -8.56441338503e-12 -1.0733743494e-07 -8.92125735793e-12 -8.8815198751e-08 -9.27810133083e-12 -5.6490044642e-08 -9.63494530373e-12 -1.93776017454e-08 -9.99178927663e-12 1.32694788491e-08 -1.03486332495e-11 3.49871562833e-08 -1.07054772224e-11 4.36437659346e-08 -1.10623211953e-11 4.11378699994e-08 -1.14191651682e-11 3.17606208e-08 -1.17760091411e-11 2.01817265122e-08 -1.2132853114e-11 9.92816850953e-09 -1.24896970869e-11 2.75605516187e-09 -1.28465410598e-11 -1.14805387419e-09 -1.32033850327e-11 -2.54057352933e-09 -1.35602290056e-11 -2.46094700174e-09 -1.39170729785e-11 -1.78697201481e-09 -1.42739169514e-11 -1.06188280391e-09 -1.46307609243e-11 -5.20837484252e-10 -1.49876048972e-11 -1.99658553579e-10 -1.53444488701e-11 -4.62897081777e-11 -1.5701292843e-11 8.71659775609e-12 -1.60581368159e-11 1.79492670727e-11 -1.64149807888e-11 1.24794055298e-11 -1.67718247617e-11 9.27510932641e-12 -1.71286687346e-11 1.01709283357e-11 -1.74855127075e-11 1.10770706843e-11 -1.78423566804e-11 1.14389496139e-11 -1.81992006533e-11 1.07016964734e-11 -1.85560446262e-11 9.85042603041e-12 -1.89128885991e-11 9.58953663005e-12 -1.9269732572e-11 1.01905168332e-11 -1.96265765449e-11 1.13053394771e-11 -1.99834205178e-11 1.18830674467e-11 -2.03402644907e-11 1.14333568654e-11 -2.06971084636e-11 1.05975297982e-11 -2.10539524365e-11 9.84451235808e-12 -2.14107964094e-11 1.03430632115e-11 -2.17676403823e-11 1.10844666779e-11 -2.21244843552e-11 1.21155334029e-11 -2.24813283281e-11 1.2076948816e-11 -2.2838172301e-11 1.11743600484e-11 -2.31950162739e-11 1.02675029937e-11 -2.35518602468e-11 1.04323060607e-11 -2.39087042197e-11 1.10146596705e-11 -2.42655481926e-11 1.21176410919e-11 -2.46223921655e-11 1.25236938875e-11 -2.49792361384e-11 1.19218012198e-11 -2.53360801113e-11 1.09201900994e-11 diff --git a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_it_3 b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_it_3 index bebe7def..f8c1d160 100644 --- a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_it_3 +++ b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_it_3 @@ -1,76 +1,7 @@ -% time-domain current integration by openEMS v0.0.35-108-gc651cce @Wed May 21 16:07:12 2025 +% time-domain current integration by openEMS v0.0.35-108-gc651cce @Mon May 11 15:39:38 2026 % start-coordinates: (-5.62176e-05,-3.622e-05,0.00016018) m -> [54,24,58] % stop-coordinates: (-5.302e-05,-3.552e-05,0.00016018) m -> [65,27,58] % t/s current 1.58035417582e-16 0 3.57002008318e-13 1.62728632652e-11 7.13845981218e-13 2.23327727839e-11 -1.07068995412e-12 1.30059123193e-11 -1.42753392702e-12 -4.23324326981e-11 -1.78437789992e-12 -1.98753014047e-10 -2.14122187282e-12 -5.29328303411e-10 -2.49806584572e-12 -1.0897373004e-09 -2.85490981862e-12 -1.84448878393e-09 -3.21175379152e-12 -2.550662348e-09 -3.56859776442e-12 -2.64500377156e-09 -3.92544173732e-12 -1.22072696396e-09 -4.28228571022e-12 2.78878742321e-09 -4.63912968312e-12 1.01493506932e-08 -4.99597365602e-12 2.06451655771e-08 -5.35281762892e-12 3.24393525375e-08 -5.70966160182e-12 4.18945340641e-08 -6.06650557472e-12 4.42387673161e-08 -6.42334954762e-12 3.51443176783e-08 -6.78019352052e-12 1.27923547311e-08 -7.13703749342e-12 -2.04954844207e-08 -7.49388146632e-12 -5.80188235233e-08 -7.85072543922e-12 -9.03422758824e-08 -8.20756941213e-12 -1.08412180566e-07 -8.56441338503e-12 -1.06900294838e-07 -8.92125735793e-12 -8.62712212779e-08 -9.27810133083e-12 -5.25963592679e-08 -9.63494530373e-12 -1.52037760159e-08 -9.99178927663e-12 1.67258491501e-08 -1.03486332495e-11 3.71099986296e-08 -1.07054772224e-11 4.43151719765e-08 -1.10623211953e-11 4.06572411293e-08 -1.14191651682e-11 3.06377430093e-08 -1.17760091411e-11 1.89189108823e-08 -1.2132853114e-11 8.87038620334e-09 -1.24896970869e-11 2.05275907383e-09 -1.28465410598e-11 -1.5069334669e-09 -1.32033850327e-11 -2.65079913575e-09 -1.35602290056e-11 -2.43394038257e-09 -1.39170729785e-11 -1.7104327954e-09 -1.42739169514e-11 -9.87241177697e-10 -1.46307609243e-11 -4.68162841827e-10 -1.49876048972e-11 -1.69818270557e-10 -1.53444488701e-11 -3.23349090559e-11 -1.5701292843e-11 1.39929821202e-11 -1.60581368159e-11 1.97191863532e-11 -1.64149807888e-11 1.30521825986e-11 -1.67718247617e-11 1.00900902217e-11 -1.71286687346e-11 1.03369656584e-11 -1.74855127075e-11 1.10013049018e-11 -1.78423566804e-11 1.15151941801e-11 -1.81992006533e-11 1.17060423854e-11 -1.85560446262e-11 1.11534019867e-11 -1.89128885991e-11 1.05404964271e-11 -1.9269732572e-11 1.04566971401e-11 -1.96265765449e-11 1.09032505247e-11 -1.99834205178e-11 1.14426922798e-11 -2.03402644907e-11 1.18443501534e-11 -2.06971084636e-11 1.17865673818e-11 -2.10539524365e-11 1.13071331811e-11 -2.14107964094e-11 1.09594399528e-11 -2.17676403823e-11 1.09148289365e-11 -2.21244843552e-11 1.14104463725e-11 -2.24813283281e-11 1.20035049608e-11 -2.2838172301e-11 1.21353040464e-11 -2.31950162739e-11 1.21620855748e-11 -2.35518602468e-11 1.15953002408e-11 -2.39087042197e-11 1.11054464236e-11 -2.42655481926e-11 1.10293024713e-11 -2.46223921655e-11 1.16293025557e-11 -2.49792361384e-11 1.23677196956e-11 -2.53360801113e-11 1.24685270789e-11 diff --git a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_ut_1 b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_ut_1 index 94612ddd..5b30ba9f 100644 --- a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_ut_1 +++ b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_ut_1 @@ -1,76 +1,7 @@ -% time-domain voltage integration by openEMS v0.0.35-108-gc651cce @Wed May 21 16:07:12 2025 +% time-domain voltage integration by openEMS v0.0.35-108-gc651cce @Mon May 11 15:39:38 2026 % start-coordinates: (-6.42725e-05,-2.452e-05,0.00015727) m -> [26,62,53] % stop-coordinates: (-6.42725e-05,-2.452e-05,0.00016498) m -> [26,62,63] % t/s voltage 0 -0 3.568439729e-13 -1.40548766722e-09 7.13687945801e-13 -1.13371022639e-09 -1.0705319187e-12 1.21941588771e-09 -1.4273758916e-12 8.67570318364e-09 -1.7842198645e-12 2.54052996418e-08 -2.1410638374e-12 5.52716992175e-08 -2.4979078103e-12 9.77822796067e-08 -2.8547517832e-12 1.41508240237e-07 -3.2115957561e-12 1.56937654872e-07 -3.568439729e-12 9.37422703906e-08 -3.9252837019e-12 -1.10746472881e-07 -4.2821276748e-12 -5.06189406835e-07 -4.6389716477e-12 -1.08935296694e-06 -4.9958156206e-12 -1.76385614026e-06 -5.35265959351e-12 -2.32458335603e-06 -5.70950356641e-12 -2.4921188384e-06 -6.06634753931e-12 -2.00465653677e-06 -6.42319151221e-12 -7.43497729161e-07 -6.78003548511e-12 1.16290769725e-06 -7.13687945801e-12 3.31864482916e-06 -7.49372343091e-12 5.15760319786e-06 -7.85056740381e-12 6.13595209131e-06 -8.20741137671e-12 5.94127361353e-06 -8.56425534961e-12 4.62169948889e-06 -8.92109932251e-12 2.57037185492e-06 -9.27794329541e-12 3.71477256067e-07 -9.63478726831e-12 -1.41891793604e-06 -9.99163124121e-12 -2.4570703232e-06 -1.03484752141e-11 -2.68727747255e-06 -1.0705319187e-11 -2.29579684685e-06 -1.10621631599e-11 -1.58731910105e-06 -1.14190071328e-11 -8.52325793943e-07 -1.17758511057e-11 -2.8030689414e-07 -1.21326950786e-11 6.19153581738e-08 -1.24895390515e-11 2.00890995394e-07 -1.28463830244e-11 2.07410606023e-07 -1.32032269973e-11 1.53689958537e-07 -1.35600709702e-11 9.01812646781e-08 -1.39169149431e-11 4.1413780516e-08 -1.4273758916e-11 1.27674462114e-08 -1.46306028889e-11 -4.9418580339e-11 -1.49874468618e-11 -3.67656810552e-09 -1.53442908347e-11 -3.37167950504e-09 -1.57011348076e-11 -2.14083148431e-09 -1.60579787805e-11 -1.15862250696e-09 -1.64148227534e-11 -7.17547217824e-10 -1.67716667263e-11 -8.82847347311e-10 -1.71285106992e-11 -8.26261069981e-10 -1.74853546721e-11 -7.64643643542e-10 -1.7842198645e-11 -7.26070481516e-10 -1.81990426179e-11 -7.74260084865e-10 -1.85558865908e-11 -8.35505022806e-10 -1.89127305637e-11 -8.66230778079e-10 -1.92695745366e-11 -8.27062651004e-10 -1.96264185095e-11 -7.42047499835e-10 -1.99832624824e-11 -6.93042253794e-10 -2.03401064553e-11 -6.94373806717e-10 -2.06969504282e-11 -7.71677811928e-10 -2.10537944011e-11 -8.21741516846e-10 -2.1410638374e-11 -8.20237702412e-10 -2.17674823469e-11 -7.57925595549e-10 -2.21243263198e-11 -6.94439686311e-10 -2.24811702927e-11 -6.66568206881e-10 -2.28380142656e-11 -7.04980383098e-10 -2.31948582385e-11 -7.67543428121e-10 -2.35517022114e-11 -7.96619176874e-10 -2.39085461843e-11 -7.64938543063e-10 -2.42653901572e-11 -6.84767260256e-10 -2.46222341301e-11 -6.43126484359e-10 -2.4979078103e-11 -6.52909863327e-10 -2.53359220759e-11 -7.13787712964e-10 diff --git a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_ut_2 b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_ut_2 index 753815d4..f57da4d4 100644 --- a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_ut_2 +++ b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_ut_2 @@ -1,76 +1,7 @@ -% time-domain voltage integration by openEMS v0.0.35-108-gc651cce @Wed May 21 16:07:12 2025 +% time-domain voltage integration by openEMS v0.0.35-108-gc651cce @Mon May 11 15:39:38 2026 % start-coordinates: (-4.47425e-05,-2.452e-05,0.00015727) m -> [94,62,53] % stop-coordinates: (-4.47425e-05,-2.452e-05,0.00016498) m -> [94,62,63] % t/s voltage 0 -0 3.568439729e-13 -7.47173625054e-10 7.13687945801e-13 -1.08128933932e-09 -1.0705319187e-12 -7.64390783309e-10 -1.4273758916e-12 1.61679338667e-09 -1.7842198645e-12 8.67305424701e-09 -2.1410638374e-12 2.38952635456e-08 -2.4979078103e-12 5.03332671098e-08 -2.8547517832e-12 8.69518255175e-08 -3.2115957561e-12 1.23219491055e-07 -3.568439729e-12 1.33216276677e-07 -3.9252837019e-12 7.38296304093e-08 -4.2821276748e-12 -1.07725161236e-07 -4.6389716477e-12 -4.52602312961e-07 -4.9958156206e-12 -9.57609010754e-07 -5.35265959351e-12 -1.54241570982e-06 -5.70950356641e-12 -2.03683482169e-06 -6.06634753931e-12 -2.20817329932e-06 -6.42319151221e-12 -1.83448734248e-06 -6.78003548511e-12 -8.05482770261e-07 -7.13687945801e-12 7.91542623446e-07 -7.49372343091e-12 2.64961241214e-06 -7.85056740381e-12 4.31169898718e-06 -8.20741137671e-12 5.31830089301e-06 -8.56425534961e-12 5.3749251947e-06 -8.92109932251e-12 4.46560861178e-06 -9.27794329541e-12 2.85893361252e-06 -9.63478726831e-12 1.00365951639e-06 -9.99163124121e-12 -6.36343180815e-07 -1.03484752141e-11 -1.73427935124e-06 -1.0705319187e-11 -2.1792721725e-06 -1.10621631599e-11 -2.06298574312e-06 -1.14190071328e-11 -1.59857763293e-06 -1.17758511057e-11 -1.01997265034e-06 -1.21326950786e-11 -5.04995714579e-07 -1.24895390515e-11 -1.43175400869e-07 -1.28463830244e-11 5.4908345648e-08 -1.32032269973e-11 1.26485220076e-07 -1.35600709702e-11 1.23484861003e-07 -1.39169149431e-11 9.00635011014e-08 -1.4273758916e-11 5.37199393857e-08 -1.46306028889e-11 2.64554139151e-08 -1.49874468618e-11 1.02054760753e-08 -1.53442908347e-11 2.40644564692e-09 -1.57011348076e-11 -4.1125835723e-10 -1.60579787805e-11 -9.01099962008e-10 -1.64148227534e-11 -6.29677599992e-10 -1.67716667263e-11 -4.66165354582e-10 -1.71285106992e-11 -5.07963933069e-10 -1.74853546721e-11 -5.5323715574e-10 -1.7842198645e-11 -5.71835591032e-10 -1.81990426179e-11 -5.37465412453e-10 -1.85558865908e-11 -4.9645439322e-10 -1.89127305637e-11 -4.78006616927e-10 -1.92695745366e-11 -5.12593014909e-10 -1.96264185095e-11 -5.64795760508e-10 -1.99832624824e-11 -5.93826009199e-10 -2.03401064553e-11 -5.72835013798e-10 -2.06969504282e-11 -5.30044551653e-10 -2.10537944011e-11 -4.94057178849e-10 -2.1410638374e-11 -5.17378114309e-10 -2.17674823469e-11 -5.55999716753e-10 -2.21243263198e-11 -6.04615212063e-10 -2.24811702927e-11 -6.03521458503e-10 -2.28380142656e-11 -5.60846862008e-10 -2.31948582385e-11 -5.15101053825e-10 -2.35517022114e-11 -5.2035617655e-10 -2.39085461843e-11 -5.50478789288e-10 -2.42653901572e-11 -6.06066764483e-10 -2.46222341301e-11 -6.24157335191e-10 -2.4979078103e-11 -5.99245923716e-10 -2.53359220759e-11 -5.4752538961e-10 diff --git a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_ut_3 b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_ut_3 index 94de8287..eb19c49b 100644 --- a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_ut_3 +++ b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/port_ut_3 @@ -1,76 +1,7 @@ -% time-domain voltage integration by openEMS v0.0.35-108-gc651cce @Wed May 21 16:07:12 2025 +% time-domain voltage integration by openEMS v0.0.35-108-gc651cce @Mon May 11 15:39:38 2026 % start-coordinates: (-5.452e-05,-3.57575e-05,0.00015727) m -> [60,26,53] % stop-coordinates: (-5.452e-05,-3.57575e-05,0.00016498) m -> [60,26,63] % t/s voltage 0 -0 3.568439729e-13 -8.00494630651e-10 7.13687945801e-13 -1.11070533326e-09 -1.0705319187e-12 -6.76339081962e-10 -1.4273758916e-12 2.02641575048e-09 -1.7842198645e-12 9.72329292082e-09 -2.1410638374e-12 2.60521814122e-08 -2.4979078103e-12 5.38477809009e-08 -2.8547517832e-12 9.14600919444e-08 -3.2115957561e-12 1.27009258222e-07 -3.568439729e-12 1.32663989127e-07 -3.9252837019e-12 6.33818957319e-08 -4.2821276748e-12 -1.34183813838e-07 -4.6389716477e-12 -4.98878437227e-07 -4.9958156206e-12 -1.02117172318e-06 -5.35265959351e-12 -1.61096340889e-06 -5.70950356641e-12 -2.08797674617e-06 -6.06634753931e-12 -2.21414373414e-06 -6.42319151221e-12 -1.77175745364e-06 -6.78003548511e-12 -6.66606494448e-07 -7.13687945801e-12 9.89579628907e-07 -7.49372343091e-12 2.86558150009e-06 -7.85056740381e-12 4.49103808364e-06 -8.20741137671e-12 5.41136230936e-06 -8.56425534961e-12 5.35535093604e-06 -8.92109932251e-12 4.34037141872e-06 -9.27794329541e-12 2.66535518278e-06 -9.63478726831e-12 7.95017975008e-07 -9.99163124121e-12 -8.10008330632e-07 -1.03484752141e-11 -1.84172374418e-06 -1.0705319187e-11 -2.2141427749e-06 -1.10621631599e-11 -2.03989927172e-06 -1.14190071328e-11 -1.54289614329e-06 -1.17758511057e-11 -9.5685446766e-07 -1.21326950786e-11 -4.51870608487e-07 -1.24895390515e-11 -1.0768544989e-07 -1.28463830244e-11 7.31357860939e-08 -1.32032269973e-11 1.32183795465e-07 -1.35600709702e-11 1.22227312715e-07 -1.39169149431e-11 8.6262111898e-08 -1.4273758916e-11 4.99780314911e-08 -1.46306028889e-11 2.38013969089e-08 -1.49874468618e-11 8.69458946506e-09 -1.53442908347e-11 1.69917924175e-09 -1.57011348076e-11 -6.81016255541e-10 -1.60579787805e-11 -9.89004531049e-10 -1.64148227534e-11 -6.609396936e-10 -1.67716667263e-11 -5.05631505415e-10 -1.71285106992e-11 -5.15427152348e-10 -1.74853546721e-11 -5.50320825368e-10 -1.7842198645e-11 -5.77224190321e-10 -1.81990426179e-11 -5.85737389147e-10 -1.85558865908e-11 -5.59003409534e-10 -1.89127305637e-11 -5.29261023896e-10 -1.92695745366e-11 -5.22711911949e-10 -1.96264185095e-11 -5.43804546532e-10 -1.99832624824e-11 -5.71896344517e-10 -2.03401064553e-11 -5.92108527139e-10 -2.06969504282e-11 -5.90350579185e-10 -2.10537944011e-11 -5.65704162334e-10 -2.1410638374e-11 -5.50202626515e-10 -2.17674823469e-11 -5.45138875013e-10 -2.21243263198e-11 -5.70372658826e-10 -2.24811702927e-11 -6.0024674467e-10 -2.28380142656e-11 -6.07424808369e-10 -2.31948582385e-11 -6.06971577166e-10 -2.35517022114e-11 -5.81108739253e-10 -2.39085461843e-11 -5.55554919776e-10 -2.42653901572e-11 -5.50422037809e-10 -2.46222341301e-11 -5.80960864485e-10 -2.4979078103e-11 -6.18158890395e-10 -2.53359220759e-11 -6.23615352066e-10 diff --git a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/run_t_con_50GHZ.xml b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/run_t_con_50GHZ.xml index 9a8aae23..93afedd9 100644 --- a/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/run_t_con_50GHZ.xml +++ b/modules/module_2_50GHz_MPA/part_4_layout_EMsims/T_connection_2/openems/output/run_t_con_50GHZ_data/sub-1/run_t_con_50GHZ.xml @@ -13,6 +13,7 @@ + @@ -27,22 +28,26 @@ + + + + @@ -57,6 +62,7 @@ + @@ -69,6 +75,7 @@ + @@ -81,6 +88,7 @@ + @@ -93,6 +101,7 @@ + @@ -105,6 +114,7 @@ + @@ -117,6 +127,7 @@ + @@ -127,6 +138,7 @@ + @@ -138,6 +150,7 @@ + @@ -148,6 +161,7 @@ + @@ -158,6 +172,7 @@ + @@ -168,6 +183,7 @@ + @@ -178,6 +194,7 @@ + @@ -188,6 +205,7 @@ + @@ -198,6 +216,7 @@ + @@ -208,6 +227,7 @@ + diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/testbench/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/testbench/LC_Oscillator_tb.sch index 4224a885..4e131623 100644 --- a/modules/module_4_type_2_PLL/LC_Oscillator/testbench/LC_Oscillator_tb.sch +++ b/modules/module_4_type_2_PLL/LC_Oscillator/testbench/LC_Oscillator_tb.sch @@ -12,8 +12,8 @@ ypos2=2 divy=5 subdivy=1 unity=1 -x1=3.9785566e-09 -x2=4.2974576e-09 +x1=3.9626115e-09 +x2=4.2815126e-09 divx=5 subdivx=1 xlabmag=1.0 @@ -33,8 +33,8 @@ ypos2=2 divy=5 subdivy=1 unity=1 -x1=3.9785566e-09 -x2=4.2974576e-09 +x1=3.9626115e-09 +x2=4.2815126e-09 divx=5 subdivx=1 xlabmag=1.0 @@ -45,19 +45,32 @@ logx=0 logy=0 color=4 node=vo_diff} -N 1040 -530 1040 -500 {lab=vdd} -N 1040 -440 1040 -410 {lab=GND} -N 740 -520 740 -500 {lab=GND} -N 700 -530 700 -500 {lab=vdd} -N 610 -390 630 -390 {lab=Voplus} -N 610 -430 630 -430 {lab=Vominus} -N 820 -410 860 -410 {lab=#net1} -N 860 -350 860 -320 {lab=GND} -C {code_shown.sym} 240 -1160 0 0 {name=transient_tb only_toplevel=false +N 540 -200 540 -170 {lab=VCC_oscillator} +N 540 -110 540 -80 {lab=GND} +N 460 -390 670 -390 {lab=Vominus} +N 460 -430 670 -430 {lab=Voplus} +N 660 -200 660 -170 {lab=VCC_Buffer} +N 660 -110 660 -80 {lab=GND} +N 860 -310 920 -310 {lab=VCC_oscillator} +N 860 -290 920 -290 {lab=VCC_Buffer} +N 860 -270 920 -270 {lab=VCC_oscillator} +N 860 -250 920 -250 {lab=bias} +N 860 -230 920 -230 {lab=GND} +N 740 -110 740 -80 {lab=GND} +N 740 -200 740 -170 {lab=bias} +N 550 -530 680 -530 {lab=Vo_buff+} +N 550 -510 680 -510 {lab=Vo_buff-} +N 620 -450 660 -450 {lab=GND} +N 620 -590 660 -590 {lab=GND} +N 860 -410 1000 -410 {lab=Vctrl} +N 810 -110 810 -80 {lab=GND} +N 810 -200 810 -170 {lab=Vctrl} +N 640 -320 670 -320 {lab=V_initial_C} +C {code_shown.sym} 50 -1190 0 0 {name=transient_tb only_toplevel=false value=" .include LC_Oscillator_tb.save .param temp=27 -.ic V(Voplus)=1.2 +.ic V(V_initial_C)=2.5 .control set noaskquit set numdgt=12 @@ -86,9 +99,13 @@ unset wr_vecnames write LC_Oscillator_tb.raw .endc "} -C {devices/code_shown.sym} 810 -1130 0 0 {name=MODEL only_toplevel=true +C {devices/code_shown.sym} 610 -1140 0 0 {name=MODEL only_toplevel=true format="tcleval( @value )" -value=".lib cornerMOSlv.lib mos_ss +value=" +.lib cornerHBT.lib hbt_typ +.lib cornerRES.lib res_typ +.lib $::MODELS_NGSPICE/cornerCAP.lib cap_typ +.lib cornerMOShv.lib mos_tt " } C {devices/launcher.sym} 1190 -250 0 0 {name=h1 @@ -99,12 +116,10 @@ C {launcher.sym} 1190 -170 0 0 {name=h5 descr="load waves" tclcommand="xschem raw_read $netlist_dir/LC_Oscillator_tb.raw tran" } -C {vsource.sym} 1040 -470 0 0 {name=V1 value= 1.2 savecurrent=false} -C {gnd.sym} 1040 -410 0 0 {name=l2 lab=GND} -C {lab_pin.sym} 1040 -530 0 0 {name=p2 sig_type=std_logic lab=vdd} -C {opin.sym} 610 -390 2 0 {name=p6 lab=Voplus} -C {gnd.sym} 740 -520 2 0 {name=l3 lab=GND} -C {lab_pin.sym} 700 -530 2 1 {name=p7 sig_type=std_logic lab=vdd} +C {vsource.sym} 540 -140 0 0 {name=V1 value= 2.5 savecurrent=false} +C {gnd.sym} 540 -80 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 540 -200 0 0 {name=p2 sig_type=std_logic lab=VCC_oscillator} +C {opin.sym} 460 -430 2 0 {name=p6 lab=Voplus} C {launcher.sym} 1190 -210 0 0 {name=h2 descr=SimulateNGSPICE tclcommand=" @@ -129,7 +144,36 @@ write_data [save_params] $netlist_dir/[file rootname [file tail [xschem get curr xschem netlist simulate "} -C {opin.sym} 610 -430 0 1 {name=p9 lab=Vominus} -C {LC_Oscillator.sym} 720 -410 2 0 {name=x1} -C {vsource.sym} 860 -380 0 0 {name=V2 value= 0.2 savecurrent=false} -C {gnd.sym} 860 -320 0 0 {name=l1 lab=GND} +C {opin.sym} 460 -390 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 760 -410 0 1 {name=x1} +C {vsource.sym} 740 -140 0 0 {name=V2 value= 2.1 savecurrent=false} +C {vsource.sym} 660 -140 0 0 {name=V3 value= 3.3 savecurrent=false} +C {gnd.sym} 660 -80 0 0 {name=l3 lab=GND} +C {lab_pin.sym} 660 -200 0 0 {name=p1 sig_type=std_logic lab=VCC_Buffer} +C {gnd.sym} 740 -80 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 740 -200 0 0 {name=p3 sig_type=std_logic lab=bias} +C {gnd.sym} 920 -230 0 0 {name=l4 lab=GND} +C {lab_pin.sym} 920 -310 0 1 {name=p4 sig_type=std_logic lab=VCC_oscillator} +C {lab_pin.sym} 920 -270 0 1 {name=p5 sig_type=std_logic lab=VCC_oscillator} +C {lab_pin.sym} 920 -290 0 1 {name=p7 sig_type=std_logic lab=VCC_Buffer} +C {lab_pin.sym} 920 -250 0 1 {name=p8 sig_type=std_logic lab=bias} +C {res.sym} 620 -560 2 0 {name=R1 +value=50 +footprint=1206 +device=resistor +m=1} +C {res.sym} 620 -480 0 0 {name=R2 +value=50 +footprint=1206 +device=resistor +m=1} +C {gnd.sym} 660 -450 3 0 {name=l5 lab=GND} +C {gnd.sym} 660 -590 3 1 {name=l6 lab=GND} +C {vsource.sym} 810 -140 0 0 {name=V4 value= 1.65 savecurrent=false} +C {gnd.sym} 810 -80 0 0 {name=l7 lab=GND +value=1.65} +C {lab_pin.sym} 810 -200 0 0 {name=p10 sig_type=std_logic lab=Vctrl} +C {lab_pin.sym} 1000 -410 0 1 {name=p11 sig_type=std_logic lab=Vctrl} +C {opin.sym} 550 -530 2 0 {name=p12 lab=Vo_buff+} +C {opin.sym} 550 -510 2 0 {name=p13 lab=Vo_buff-} +C {lab_pin.sym} 640 -320 0 0 {name=p14 sig_type=std_logic lab=V_initial_C} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/testbench/simulations/LC_Oscillator.save b/modules/module_4_type_2_PLL/LC_Oscillator/testbench/simulations/LC_Oscillator.save new file mode 100644 index 00000000..14622c65 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/testbench/simulations/LC_Oscillator.save @@ -0,0 +1,119 @@ +* Place this .save file with a .include line in your testbench + +.save @q.xq1.qnpn13g2[gm] +.save @q.xq1.qnpn13g2[go] +.save @q.xq1.qnpn13g2[gmu] +.save @q.xq1.qnpn13g2[gpi] +.save @q.xq1.qnpn13g2[gx] +.save @q.xq1.qnpn13g2[vbe] +.save @q.xq1.qnpn13g2[vbc] +.save @q.xq1.qnpn13g2[ib] +.save @q.xq1.qnpn13g2[ic] +.save @q.xq1.qnpn13g2[cbe] +.save @q.xq1.qnpn13g2[cbc] +.save @q.xq1.qnpn13g2[cbep] +.save @q.xq1.qnpn13g2[cbcp] +.save @q.xq2.qnpn13g2[gm] +.save @q.xq2.qnpn13g2[go] +.save @q.xq2.qnpn13g2[gmu] +.save @q.xq2.qnpn13g2[gpi] +.save @q.xq2.qnpn13g2[gx] +.save @q.xq2.qnpn13g2[vbe] +.save @q.xq2.qnpn13g2[vbc] +.save @q.xq2.qnpn13g2[ib] +.save @q.xq2.qnpn13g2[ic] +.save @q.xq2.qnpn13g2[cbe] +.save @q.xq2.qnpn13g2[cbc] +.save @q.xq2.qnpn13g2[cbep] +.save @q.xq2.qnpn13g2[cbcp] +.save @q.xq3.qnpn13g2[gm] +.save @q.xq3.qnpn13g2[go] +.save @q.xq3.qnpn13g2[gmu] +.save @q.xq3.qnpn13g2[gpi] +.save @q.xq3.qnpn13g2[gx] +.save @q.xq3.qnpn13g2[vbe] +.save @q.xq3.qnpn13g2[vbc] +.save @q.xq3.qnpn13g2[ib] +.save @q.xq3.qnpn13g2[ic] +.save @q.xq3.qnpn13g2[cbe] +.save @q.xq3.qnpn13g2[cbc] +.save @q.xq3.qnpn13g2[cbep] +.save @q.xq3.qnpn13g2[cbcp] +.save @q.xq5.qnpn13g2[gm] +.save @q.xq5.qnpn13g2[go] +.save @q.xq5.qnpn13g2[gmu] +.save @q.xq5.qnpn13g2[gpi] +.save @q.xq5.qnpn13g2[gx] +.save @q.xq5.qnpn13g2[vbe] +.save @q.xq5.qnpn13g2[vbc] +.save @q.xq5.qnpn13g2[ib] +.save @q.xq5.qnpn13g2[ic] +.save @q.xq5.qnpn13g2[cbe] +.save @q.xq5.qnpn13g2[cbc] +.save @q.xq5.qnpn13g2[cbep] +.save @q.xq5.qnpn13g2[cbcp] +.save @q.xq6.qnpn13g2[gm] +.save @q.xq6.qnpn13g2[go] +.save @q.xq6.qnpn13g2[gmu] +.save @q.xq6.qnpn13g2[gpi] +.save @q.xq6.qnpn13g2[gx] +.save @q.xq6.qnpn13g2[vbe] +.save @q.xq6.qnpn13g2[vbc] +.save @q.xq6.qnpn13g2[ib] +.save @q.xq6.qnpn13g2[ic] +.save @q.xq6.qnpn13g2[cbe] +.save @q.xq6.qnpn13g2[cbc] +.save @q.xq6.qnpn13g2[cbep] +.save @q.xq6.qnpn13g2[cbcp] +.save @q.xq4.qnpn13g2[gm] +.save @q.xq4.qnpn13g2[go] +.save @q.xq4.qnpn13g2[gmu] +.save @q.xq4.qnpn13g2[gpi] +.save @q.xq4.qnpn13g2[gx] +.save @q.xq4.qnpn13g2[vbe] +.save @q.xq4.qnpn13g2[vbc] +.save @q.xq4.qnpn13g2[ib] +.save @q.xq4.qnpn13g2[ic] +.save @q.xq4.qnpn13g2[cbe] +.save @q.xq4.qnpn13g2[cbc] +.save @q.xq4.qnpn13g2[cbep] +.save @q.xq4.qnpn13g2[cbcp] +.save @q.xq7.qnpn13g2[gm] +.save @q.xq7.qnpn13g2[go] +.save @q.xq7.qnpn13g2[gmu] +.save @q.xq7.qnpn13g2[gpi] +.save @q.xq7.qnpn13g2[gx] +.save @q.xq7.qnpn13g2[vbe] +.save @q.xq7.qnpn13g2[vbc] +.save @q.xq7.qnpn13g2[ib] +.save @q.xq7.qnpn13g2[ic] +.save @q.xq7.qnpn13g2[cbe] +.save @q.xq7.qnpn13g2[cbc] +.save @q.xq7.qnpn13g2[cbep] +.save @q.xq7.qnpn13g2[cbcp] +.save @q.xq8.qnpn13g2[gm] +.save @q.xq8.qnpn13g2[go] +.save @q.xq8.qnpn13g2[gmu] +.save @q.xq8.qnpn13g2[gpi] +.save @q.xq8.qnpn13g2[gx] +.save @q.xq8.qnpn13g2[vbe] +.save @q.xq8.qnpn13g2[vbc] +.save @q.xq8.qnpn13g2[ib] +.save @q.xq8.qnpn13g2[ic] +.save @q.xq8.qnpn13g2[cbe] +.save @q.xq8.qnpn13g2[cbc] +.save @q.xq8.qnpn13g2[cbep] +.save @q.xq8.qnpn13g2[cbcp] +.save @q.xq9.qnpn13g2[gm] +.save @q.xq9.qnpn13g2[go] +.save @q.xq9.qnpn13g2[gmu] +.save @q.xq9.qnpn13g2[gpi] +.save @q.xq9.qnpn13g2[gx] +.save @q.xq9.qnpn13g2[vbe] +.save @q.xq9.qnpn13g2[vbc] +.save @q.xq9.qnpn13g2[ib] +.save @q.xq9.qnpn13g2[ic] +.save @q.xq9.qnpn13g2[cbe] +.save @q.xq9.qnpn13g2[cbc] +.save @q.xq9.qnpn13g2[cbep] +.save @q.xq9.qnpn13g2[cbcp] diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/testbench/simulations/LC_Oscillator_tb.save b/modules/module_4_type_2_PLL/LC_Oscillator/testbench/simulations/LC_Oscillator_tb.save index 17c91aaf..e181df96 100644 --- a/modules/module_4_type_2_PLL/LC_Oscillator/testbench/simulations/LC_Oscillator_tb.save +++ b/modules/module_4_type_2_PLL/LC_Oscillator/testbench/simulations/LC_Oscillator_tb.save @@ -1,42 +1,106 @@ * Place this .save file with a .include line in your testbench -.save @n.x1.xm1.nsg13_lv_nmos[ids] -.save @n.x1.xm1.nsg13_lv_nmos[gm] -.save @n.x1.xm1.nsg13_lv_nmos[gds] -.save @n.x1.xm1.nsg13_lv_nmos[vth] -.save @n.x1.xm1.nsg13_lv_nmos[vgs] -.save @n.x1.xm1.nsg13_lv_nmos[vdss] -.save @n.x1.xm1.nsg13_lv_nmos[vds] -.save @n.x1.xm1.nsg13_lv_nmos[cgg] -.save @n.x1.xm1.nsg13_lv_nmos[cgsol] -.save @n.x1.xm1.nsg13_lv_nmos[cgdol] -.save @n.x1.xm2.nsg13_lv_nmos[ids] -.save @n.x1.xm2.nsg13_lv_nmos[gm] -.save @n.x1.xm2.nsg13_lv_nmos[gds] -.save @n.x1.xm2.nsg13_lv_nmos[vth] -.save @n.x1.xm2.nsg13_lv_nmos[vgs] -.save @n.x1.xm2.nsg13_lv_nmos[vdss] -.save @n.x1.xm2.nsg13_lv_nmos[vds] -.save @n.x1.xm2.nsg13_lv_nmos[cgg] -.save @n.x1.xm2.nsg13_lv_nmos[cgsol] -.save @n.x1.xm2.nsg13_lv_nmos[cgdol] -.save @n.x1.xm3.nsg13_lv_nmos[ids] -.save @n.x1.xm3.nsg13_lv_nmos[gm] -.save @n.x1.xm3.nsg13_lv_nmos[gds] -.save @n.x1.xm3.nsg13_lv_nmos[vth] -.save @n.x1.xm3.nsg13_lv_nmos[vgs] -.save @n.x1.xm3.nsg13_lv_nmos[vdss] -.save @n.x1.xm3.nsg13_lv_nmos[vds] -.save @n.x1.xm3.nsg13_lv_nmos[cgg] -.save @n.x1.xm3.nsg13_lv_nmos[cgsol] -.save @n.x1.xm3.nsg13_lv_nmos[cgdol] -.save @n.x1.xm4.nsg13_lv_nmos[ids] -.save @n.x1.xm4.nsg13_lv_nmos[gm] -.save @n.x1.xm4.nsg13_lv_nmos[gds] -.save @n.x1.xm4.nsg13_lv_nmos[vth] -.save @n.x1.xm4.nsg13_lv_nmos[vgs] -.save @n.x1.xm4.nsg13_lv_nmos[vdss] -.save @n.x1.xm4.nsg13_lv_nmos[vds] -.save @n.x1.xm4.nsg13_lv_nmos[cgg] -.save @n.x1.xm4.nsg13_lv_nmos[cgsol] -.save @n.x1.xm4.nsg13_lv_nmos[cgdol] +.save @q.x1.xq2.qnpn13g2[gm] +.save @q.x1.xq2.qnpn13g2[go] +.save @q.x1.xq2.qnpn13g2[gmu] +.save @q.x1.xq2.qnpn13g2[gpi] +.save @q.x1.xq2.qnpn13g2[gx] +.save @q.x1.xq2.qnpn13g2[vbe] +.save @q.x1.xq2.qnpn13g2[vbc] +.save @q.x1.xq2.qnpn13g2[ib] +.save @q.x1.xq2.qnpn13g2[ic] +.save @q.x1.xq2.qnpn13g2[cbe] +.save @q.x1.xq2.qnpn13g2[cbc] +.save @q.x1.xq2.qnpn13g2[cbep] +.save @q.x1.xq2.qnpn13g2[cbcp] +.save @q.x1.xq3.qnpn13g2[gm] +.save @q.x1.xq3.qnpn13g2[go] +.save @q.x1.xq3.qnpn13g2[gmu] +.save @q.x1.xq3.qnpn13g2[gpi] +.save @q.x1.xq3.qnpn13g2[gx] +.save @q.x1.xq3.qnpn13g2[vbe] +.save @q.x1.xq3.qnpn13g2[vbc] +.save @q.x1.xq3.qnpn13g2[ib] +.save @q.x1.xq3.qnpn13g2[ic] +.save @q.x1.xq3.qnpn13g2[cbe] +.save @q.x1.xq3.qnpn13g2[cbc] +.save @q.x1.xq3.qnpn13g2[cbep] +.save @q.x1.xq3.qnpn13g2[cbcp] +.save @q.x1.xq5.qnpn13g2[gm] +.save @q.x1.xq5.qnpn13g2[go] +.save @q.x1.xq5.qnpn13g2[gmu] +.save @q.x1.xq5.qnpn13g2[gpi] +.save @q.x1.xq5.qnpn13g2[gx] +.save @q.x1.xq5.qnpn13g2[vbe] +.save @q.x1.xq5.qnpn13g2[vbc] +.save @q.x1.xq5.qnpn13g2[ib] +.save @q.x1.xq5.qnpn13g2[ic] +.save @q.x1.xq5.qnpn13g2[cbe] +.save @q.x1.xq5.qnpn13g2[cbc] +.save @q.x1.xq5.qnpn13g2[cbep] +.save @q.x1.xq5.qnpn13g2[cbcp] +.save @q.x1.xq6.qnpn13g2[gm] +.save @q.x1.xq6.qnpn13g2[go] +.save @q.x1.xq6.qnpn13g2[gmu] +.save @q.x1.xq6.qnpn13g2[gpi] +.save @q.x1.xq6.qnpn13g2[gx] +.save @q.x1.xq6.qnpn13g2[vbe] +.save @q.x1.xq6.qnpn13g2[vbc] +.save @q.x1.xq6.qnpn13g2[ib] +.save @q.x1.xq6.qnpn13g2[ic] +.save @q.x1.xq6.qnpn13g2[cbe] +.save @q.x1.xq6.qnpn13g2[cbc] +.save @q.x1.xq6.qnpn13g2[cbep] +.save @q.x1.xq6.qnpn13g2[cbcp] +.save @q.x1.xq4.qnpn13g2[gm] +.save @q.x1.xq4.qnpn13g2[go] +.save @q.x1.xq4.qnpn13g2[gmu] +.save @q.x1.xq4.qnpn13g2[gpi] +.save @q.x1.xq4.qnpn13g2[gx] +.save @q.x1.xq4.qnpn13g2[vbe] +.save @q.x1.xq4.qnpn13g2[vbc] +.save @q.x1.xq4.qnpn13g2[ib] +.save @q.x1.xq4.qnpn13g2[ic] +.save @q.x1.xq4.qnpn13g2[cbe] +.save @q.x1.xq4.qnpn13g2[cbc] +.save @q.x1.xq4.qnpn13g2[cbep] +.save @q.x1.xq4.qnpn13g2[cbcp] +.save @q.x1.xq7.qnpn13g2[gm] +.save @q.x1.xq7.qnpn13g2[go] +.save @q.x1.xq7.qnpn13g2[gmu] +.save @q.x1.xq7.qnpn13g2[gpi] +.save @q.x1.xq7.qnpn13g2[gx] +.save @q.x1.xq7.qnpn13g2[vbe] +.save @q.x1.xq7.qnpn13g2[vbc] +.save @q.x1.xq7.qnpn13g2[ib] +.save @q.x1.xq7.qnpn13g2[ic] +.save @q.x1.xq7.qnpn13g2[cbe] +.save @q.x1.xq7.qnpn13g2[cbc] +.save @q.x1.xq7.qnpn13g2[cbep] +.save @q.x1.xq7.qnpn13g2[cbcp] +.save @q.x1.xq8.qnpn13g2[gm] +.save @q.x1.xq8.qnpn13g2[go] +.save @q.x1.xq8.qnpn13g2[gmu] +.save @q.x1.xq8.qnpn13g2[gpi] +.save @q.x1.xq8.qnpn13g2[gx] +.save @q.x1.xq8.qnpn13g2[vbe] +.save @q.x1.xq8.qnpn13g2[vbc] +.save @q.x1.xq8.qnpn13g2[ib] +.save @q.x1.xq8.qnpn13g2[ic] +.save @q.x1.xq8.qnpn13g2[cbe] +.save @q.x1.xq8.qnpn13g2[cbc] +.save @q.x1.xq8.qnpn13g2[cbep] +.save @q.x1.xq8.qnpn13g2[cbcp] +.save @q.x1.xq9.qnpn13g2[gm] +.save @q.x1.xq9.qnpn13g2[go] +.save @q.x1.xq9.qnpn13g2[gmu] +.save @q.x1.xq9.qnpn13g2[gpi] +.save @q.x1.xq9.qnpn13g2[gx] +.save @q.x1.xq9.qnpn13g2[vbe] +.save @q.x1.xq9.qnpn13g2[vbc] +.save @q.x1.xq9.qnpn13g2[ib] +.save @q.x1.xq9.qnpn13g2[ic] +.save @q.x1.xq9.qnpn13g2[cbe] +.save @q.x1.xq9.qnpn13g2[cbc] +.save @q.x1.xq9.qnpn13g2[cbep] +.save @q.x1.xq9.qnpn13g2[cbcp] diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/xschem/LC_Oscillator.sch b/modules/module_4_type_2_PLL/LC_Oscillator/xschem/LC_Oscillator.sch index b85cdd13..55c87be5 100644 --- a/modules/module_4_type_2_PLL/LC_Oscillator/xschem/LC_Oscillator.sch +++ b/modules/module_4_type_2_PLL/LC_Oscillator/xschem/LC_Oscillator.sch @@ -4,138 +4,725 @@ K {} V {} S {} E {} -N 310 -500 310 -440 {lab=#net1} -N 420 -440 530 -440 {lab=#net1} -N 530 -500 530 -440 {lab=#net1} -N 310 -720 310 -690 {lab=vdd} -N 420 -720 530 -720 {lab=vdd} -N 530 -720 530 -690 {lab=vdd} -N 310 -440 420 -440 {lab=#net1} -N 420 -330 420 -290 {lab=gnd} -N 420 -740 420 -720 {lab=vdd} -N 310 -720 420 -720 {lab=vdd} -N 530 -530 580 -530 {lab=gnd} -N 250 -530 310 -530 {lab=gnd} -N 420 -440 420 -390 {lab=#net1} -N 460 -530 490 -530 {lab=Voplus} -N 310 -590 310 -560 {lab=Voplus} -N 350 -530 380 -530 {lab=Vominus} -N 380 -530 530 -630 {lab=Vominus} -N 310 -630 460 -530 {lab=Voplus} -N 530 -690 600 -690 {lab=vdd} -N 530 -630 600 -630 {lab=Vominus} -N 240 -690 310 -690 {lab=vdd} -N 240 -630 310 -630 {lab=Voplus} -N 310 -630 310 -590 {lab=Voplus} -N 530 -590 530 -560 {lab=Vominus} -N 70 -590 70 -580 {lab=Voplus} -N 70 -520 70 -490 {lab=gnd} -N 770 -590 770 -580 {lab=Vominus} -N 770 -520 770 -490 {lab=gnd} -N 140 -590 310 -590 {lab=Voplus} -N 680 -590 770 -590 {lab=Vominus} -N 530 -630 530 -590 {lab=Vominus} -N 680 -590 680 -560 {lab=Vominus} -N 530 -590 680 -590 {lab=Vominus} -N 140 -590 140 -560 {lab=Voplus} -N 70 -590 140 -590 {lab=Voplus} -N 650 -520 650 -460 {lab=Vcont} -N 680 -460 710 -460 {lab=Vcont} -N 710 -520 710 -460 {lab=Vcont} -N 680 -520 680 -460 {lab=Vcont} -N 650 -460 680 -460 {lab=Vcont} -N 110 -520 110 -460 {lab=Vcont} -N 140 -460 170 -460 {lab=Vcont} -N 170 -520 170 -460 {lab=Vcont} -N 140 -520 140 -460 {lab=Vcont} -N 110 -460 140 -460 {lab=Vcont} -N 140 -460 140 -420 {lab=Vcont} -N 140 -420 680 -420 {lab=Vcont} -N 680 -460 680 -420 {lab=Vcont} -N 680 -420 770 -420 {lab=Vcont} -C {sg13g2_pr/sg13_lv_nmos.sym} 330 -530 0 1 {name=M1 -l=0.13u -w=16u -ng=4 -m=1 -model=sg13_lv_nmos +N 280 -1950 420 -1950 {lab=#net1} +N 420 -1950 420 -1880 {lab=#net1} +N 420 -1450 520 -1450 {lab=V_ic} +N 580 -1450 680 -1450 {lab=#net2} +N 420 -1450 420 -1310 {lab=V_ic} +N 420 -1310 620 -1310 {lab=V_ic} +N 420 -1670 680 -1670 {lab=V_ic} +N 420 -1670 420 -1450 {lab=V_ic} +N 280 -1950 280 -1150 {lab=#net1} +N 420 -2020 420 -1950 {lab=#net1} +N 1330 -1950 1470 -1950 {lab=#net3} +N 1330 -1950 1330 -1880 {lab=#net3} +N 1230 -1450 1330 -1450 {lab=V_tank_-} +N 1070 -1450 1170 -1450 {lab=#net4} +N 1330 -1450 1330 -1310 {lab=V_tank_-} +N 1130 -1310 1330 -1310 {lab=V_tank_-} +N 1070 -1670 1330 -1670 {lab=V_tank_-} +N 1330 -1670 1330 -1450 {lab=V_tank_-} +N 1470 -1950 1470 -1150 {lab=#net3} +N 1330 -2020 1330 -1950 {lab=#net3} +N 740 -1670 820 -1670 {lab=#net5} +N 900 -1670 1010 -1670 {lab=#net6} +N 740 -1450 820 -1450 {lab=#net7} +N 900 -1450 1010 -1450 {lab=#net8} +N 320 -1120 500 -1120 {lab=#net9} +N 500 -1120 500 -1090 {lab=#net9} +N 500 -1010 500 -990 {lab=Vo-} +N 380 -1010 500 -1010 {lab=Vo-} +N 500 -1030 500 -1010 {lab=Vo-} +N 500 -1120 680 -1120 {lab=#net9} +N 680 -1060 680 -990 {lab=bias} +N 1250 -1120 1430 -1120 {lab=#net10} +N 1250 -1120 1250 -1090 {lab=#net10} +N 1250 -1010 1250 -990 {lab=Vo+} +N 1250 -1010 1370 -1010 {lab=Vo+} +N 1250 -1030 1250 -1010 {lab=Vo+} +N 1070 -1120 1250 -1120 {lab=#net10} +N 1070 -1060 1070 -990 {lab=bias} +N 680 -990 1070 -990 {lab=bias} +N 530 -1060 530 -960 {lab=gnd} +N 1220 -1060 1220 -960 {lab=gnd} +N 680 -1310 1070 -1120 {lab=#net10} +N 680 -1120 1070 -1310 {lab=#net9} +N 500 -930 500 -860 {lab=VCC_oscillator} +N 1250 -930 1250 -860 {lab=VCC_oscillator} +N 500 -860 1250 -860 {lab=VCC_oscillator} +N 420 -2230 420 -2080 {lab=VCC_oscillator} +N 420 -2230 1330 -2230 {lab=VCC_oscillator} +N 1330 -2230 1330 -2080 {lab=VCC_oscillator} +N 280 -1090 280 -620 {lab=#net11} +N 1470 -1090 1470 -620 {lab=#net11} +N 1280 -620 1470 -620 {lab=#net11} +N 870 -620 870 -480 {lab=#net11} +N 280 -620 870 -620 {lab=#net11} +N 1280 -620 1280 -480 {lab=#net11} +N 870 -620 1280 -620 {lab=#net11} +N 1280 -420 1280 -20 {lab=gnd} +N 870 -390 870 -240 {lab=#net12} +N 870 -180 870 -130 {lab=#net13} +N 870 -70 870 -20 {lab=gnd} +N 160 -180 160 -130 {lab=#net14} +N 160 -20 870 -20 {lab=gnd} +N 160 -70 160 -20 {lab=gnd} +N 160 -280 160 -240 {lab=#net15} +N 160 -500 160 -400 {lab=VCC_Bias_Oscillator} +N 160 -340 160 -280 {lab=#net15} +N 230 -280 230 -210 {lab=#net15} +N 230 -210 830 -210 {lab=#net15} +N 1250 -20 1280 -20 {lab=gnd} +N 870 -390 1080 -390 {lab=#net12} +N 870 -420 870 -390 {lab=#net12} +N 1080 -390 1080 -380 {lab=#net12} +N 1080 -320 1080 -20 {lab=gnd} +N 870 -20 1080 -20 {lab=gnd} +N 80 -210 160 -210 {lab=sub!} +N 870 -210 950 -210 {lab=sub!} +N 650 -1420 710 -1420 {lab=gnd} +N 650 -1420 650 -1340 {lab=gnd} +N 550 -1420 650 -1420 {lab=gnd} +N 1100 -1420 1200 -1420 {lab=gnd} +N 1100 -1420 1100 -1340 {lab=gnd} +N 1040 -1420 1100 -1420 {lab=gnd} +N 420 -1820 420 -1670 {lab=V_ic} +N 1330 -1820 1330 -1670 {lab=V_tank_-} +N 710 -1640 710 -1620 {lab=gnd} +N 1040 -1640 1040 -1620 {lab=gnd} +N 710 -1620 1040 -1620 {lab=gnd} +N 860 -1520 860 -1480 {lab=Vctrl} +N 820 -1520 860 -1520 {lab=Vctrl} +N 860 -1740 860 -1700 {lab=Vctrl} +N 820 -1740 860 -1740 {lab=Vctrl} +N 200 -1120 280 -1120 {lab=sub!} +N 1470 -1120 1550 -1120 {lab=sub!} +N 160 -280 230 -280 {lab=#net15} +N 200 -210 230 -210 {lab=#net15} +N 1930 -1980 1930 -1970 {lab=Vo_Buffer_-} +N 1930 -1910 1930 -1620 {lab=gnd} +N 1970 -2020 2090 -2020 {lab=Vo-} +N 2090 -2060 2090 -2020 {lab=Vo-} +N 2090 -2140 2090 -2120 {lab=#net16} +N 2090 -2230 2090 -2200 {lab=VCC_Buffer} +N 1930 -2230 2090 -2230 {lab=VCC_Buffer} +N 1930 -2230 1930 -2050 {lab=VCC_Buffer} +N 2090 -2020 2090 -1980 {lab=Vo-} +N 1930 -1620 2090 -1620 {lab=gnd} +N 2090 -1680 2090 -1620 {lab=gnd} +N 2090 -1760 2090 -1740 {lab=#net17} +N 2090 -1840 2090 -1820 {lab=#net18} +N 2090 -1920 2090 -1900 {lab=#net19} +N 1850 -2020 1930 -2020 {lab=sub!} +N 1760 -1980 1930 -1980 {lab=Vo_Buffer_-} +N 1930 -1990 1930 -1980 {lab=Vo_Buffer_-} +N 2540 -1980 2540 -1970 {lab=Vo_Buffer_+} +N 2540 -1910 2540 -1620 {lab=gnd} +N 2380 -2020 2500 -2020 {lab=Vo+} +N 2380 -2060 2380 -2020 {lab=Vo+} +N 2380 -2140 2380 -2120 {lab=#net20} +N 2380 -2230 2380 -2200 {lab=VCC_Buffer} +N 2380 -2230 2540 -2230 {lab=VCC_Buffer} +N 2540 -2230 2540 -2050 {lab=VCC_Buffer} +N 2380 -2020 2380 -1980 {lab=Vo+} +N 2380 -1620 2540 -1620 {lab=gnd} +N 2380 -1680 2380 -1620 {lab=gnd} +N 2380 -1760 2380 -1740 {lab=#net21} +N 2380 -1840 2380 -1820 {lab=#net22} +N 2380 -1920 2380 -1900 {lab=#net23} +N 2540 -2020 2620 -2020 {lab=sub!} +N 2540 -1980 2710 -1980 {lab=Vo_Buffer_+} +N 2540 -1990 2540 -1980 {lab=Vo_Buffer_+} +N 1930 -1310 1930 -1300 {lab=Vo_Divider_-} +N 1970 -1350 2090 -1350 {lab=Vo-} +N 2090 -1390 2090 -1350 {lab=Vo-} +N 2090 -1470 2090 -1450 {lab=#net24} +N 2090 -1560 2090 -1530 {lab=VCC_Buffer} +N 1930 -1560 2090 -1560 {lab=VCC_Buffer} +N 1930 -1560 1930 -1380 {lab=VCC_Buffer} +N 2060 -1140 2090 -1140 {lab=gnd} +N 1850 -1350 1930 -1350 {lab=sub!} +N 1760 -1310 1930 -1310 {lab=Vo_Divider_-} +N 1930 -1320 1930 -1310 {lab=Vo_Divider_-} +N 2540 -1310 2540 -1300 {lab=Vo_Divider_+} +N 2380 -1350 2500 -1350 {lab=Vo+} +N 2380 -1390 2380 -1350 {lab=Vo+} +N 2380 -1470 2380 -1450 {lab=#net25} +N 2380 -1560 2380 -1530 {lab=VCC_Buffer} +N 2380 -1560 2540 -1560 {lab=VCC_Buffer} +N 2540 -1560 2540 -1380 {lab=VCC_Buffer} +N 2380 -1350 2380 -1280 {lab=Vo+} +N 2410 -1140 2540 -1140 {lab=gnd} +N 2540 -1350 2620 -1350 {lab=sub!} +N 2540 -1310 2710 -1310 {lab=Vo_Divider_+} +N 2540 -1320 2540 -1310 {lab=Vo_Divider_+} +N 1930 -1240 1930 -1140 {lab=gnd} +N 2540 -1240 2540 -1140 {lab=gnd} +N 2090 -1350 2090 -1280 {lab=Vo-} +N 2090 -1220 2090 -1140 {lab=gnd} +N 2380 -1220 2380 -1140 {lab=gnd} +N 2410 -1250 2410 -1140 {lab=gnd} +N 2380 -1140 2410 -1140 {lab=gnd} +N 2060 -1250 2060 -1140 {lab=gnd} +N 1930 -1140 2060 -1140 {lab=gnd} +N 1110 -350 1110 -20 {lab=gnd} +N 1080 -20 1110 -20 {lab=gnd} +N 1250 -450 1250 -20 {lab=gnd} +N 1110 -20 1250 -20 {lab=gnd} +N 1940 -1000 1940 -980 {lab=sub!} +N 2420 -1000 2540 -1000 {lab=sub!} +N 2540 -1000 2540 -980 {lab=sub!} +N 2420 -1000 2420 -980 {lab=sub!} +N 2300 -1000 2420 -1000 {lab=sub!} +N 2300 -1000 2300 -980 {lab=sub!} +N 2180 -1000 2300 -1000 {lab=sub!} +N 2180 -1000 2180 -980 {lab=sub!} +N 2060 -1000 2180 -1000 {lab=sub!} +N 2060 -1000 2060 -980 {lab=sub!} +N 1940 -1000 2060 -1000 {lab=sub!} +N 1940 -920 1940 -900 {lab=gnd} +N 2060 -920 2060 -900 {lab=gnd} +N 2180 -920 2180 -900 {lab=gnd} +N 2300 -920 2300 -900 {lab=gnd} +N 2420 -920 2420 -900 {lab=gnd} +N 2540 -920 2540 -900 {lab=gnd} +N 2420 -900 2540 -900 {lab=gnd} +N 1940 -900 2060 -900 {lab=gnd} +N 2060 -900 2180 -900 {lab=gnd} +N 2180 -900 2300 -900 {lab=gnd} +N 2300 -900 2420 -900 {lab=gnd} +C {lab_pin.sym} 530 -1010 2 0 {name=p3 sig_type=std_logic lab=gnd +} +C {iopin.sym} 420 -2230 2 0 {name=p24 lab=VCC_oscillator} +C {iopin.sym} 160 -500 0 1 {name=p25 lab=VCC_Bias_Oscillator} +C {opin.sym} 1760 -1980 2 0 {name=p8 lab=Vo_Buffer_-} +C {sg13g2_pr/cap_rfcmim.sym} 710 -1670 3 0 {name=C5 +model=cap_rfcmim +lvs_model=rfcmim +w=7.24e-6 +l=7.24e-6 +wfeed=5.0e-6 +spiceprefix=X} +C {sg13g2_pr/npn13G2.sym} 300 -1120 0 1 {name=Q2 +model=npn13G2 spiceprefix=X +Nx=1 } -C {sg13g2_pr/sg13_lv_nmos.sym} 510 -530 0 0 {name=M2 -l=0.13u -w=16u -ng=4 -m=1 -model=sg13_lv_nmos +C {sg13g2_pr/cap_rfcmim.sym} 650 -1310 3 1 {name=C2 +model=cap_rfcmim +lvs_model=rfcmim +w=9.065e-6 +l=9.065e-6 +wfeed=3.0e-6 +spiceprefix=X} +C {sg13g2_pr/npn13G2.sym} 1450 -1120 0 0 {name=Q3 +model=npn13G2 spiceprefix=X +Nx=3 } -C {res.sym} 600 -660 0 0 {name=R2 -value=393 -footprint=1206 -device=resistor -m=1} -C {isource.sym} 420 -360 0 0 {name=I0 value=1m} -C {lab_pin.sym} 420 -290 2 0 {name=p3 sig_type=std_logic lab=gnd -} -C {lab_pin.sym} 420 -740 2 0 {name=p9 sig_type=std_logic lab=vdd -} -C {iopin.sym} 230 -370 2 0 {name=p24 lab=vdd} -C {iopin.sym} 230 -350 2 0 {name=p25 lab=gnd} -C {ind.sym} 530 -660 0 0 {name=L1 +C {ind.sym} 1330 -2050 0 1 {name=L5 m=1 -value=1.56n +value=62.5p footprint=1206 device=inductor} -C {lab_pin.sym} 580 -530 2 0 {name=p1 sig_type=std_logic lab=gnd -} -C {lab_pin.sym} 250 -530 0 0 {name=p5 sig_type=std_logic lab=gnd -} -C {res.sym} 240 -660 0 1 {name=R1 -value=393 -footprint=1206 -device=resistor -m=1} -C {ind.sym} 310 -660 0 1 {name=L2 +C {ind.sym} 1330 -1850 0 1 {name=L6 m=1 -value=1.56n +value=62.5p footprint=1206 device=inductor} -C {capa.sym} 70 -550 0 0 {name=C1 -m=1 -value=300f -footprint=1206 -device="ceramic capacitor"} -C {lab_pin.sym} 70 -490 0 0 {name=p2 sig_type=std_logic lab=gnd -} -C {capa.sym} 770 -550 0 1 {name=C2 -m=1 -value=300f -footprint=1206 -device="ceramic capacitor"} -C {lab_pin.sym} 770 -490 0 1 {name=p4 sig_type=std_logic lab=gnd -} -C {lab_pin.sym} 770 -590 2 0 {name=p6 sig_type=std_logic lab=Vominus -} -C {lab_pin.sym} 70 -590 0 0 {name=p7 sig_type=std_logic lab=Voplus -} -C {opin.sym} 230 -330 2 0 {name=p8 lab=Voplus} -C {opin.sym} 230 -310 2 0 {name=p10 lab=Vominus} -C {sg13g2_pr/sg13_lv_nmos.sym} 140 -540 3 1 {name=M3 -l=1u -w=16u -ng=4 -m=1 -model=sg13_lv_nmos +C {sg13g2_pr/sg13_svaricap.sym} 860 -1670 0 0 {name=C13 +model=sg13_hv_svaricap +w=9.74u +l=0.8u +Nx=10 spiceprefix=X } -C {sg13g2_pr/sg13_lv_nmos.sym} 680 -540 3 1 {name=M4 -l=1u -w=16u -ng=4 -m=1 -model=sg13_lv_nmos +C {sg13g2_pr/sg13_svaricap.sym} 860 -1450 0 0 {name=C14 +model=sg13_hv_svaricap +w=9.74u +l=0.8u +Nx=10 spiceprefix=X } -C {lab_pin.sym} 770 -420 2 0 {name=p11 sig_type=std_logic lab=Vcont +C {sg13g2_pr/cap_rfcmim.sym} 500 -1060 0 1 {name=C15 +model=cap_rfcmim +lvs_model=rfcmim +w=18.195e-6 +l=18.195e-6 +wfeed=3.0e-6 +spiceprefix=X} +C {sg13g2_pr/cap_rfcmim.sym} 500 -960 0 1 {name=C16 +model=cap_rfcmim +lvs_model=rfcmim +w=18.195e-6 +l=18.195e-6 +wfeed=3.0e-6 +spiceprefix=X} +C {sg13g2_pr/rppd.sym} 680 -1090 0 0 {name=R1 +w=820e-9 +l=1e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=4 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) } -C {ipin.sym} 230 -290 0 0 {name=p12 lab=Vcont} +C {sg13g2_pr/cap_rfcmim.sym} 1250 -1060 0 0 {name=C17 +model=cap_rfcmim +lvs_model=rfcmim +w=18.195e-6 +l=18.195e-6 +wfeed=3.0e-6 +spiceprefix=X} +C {sg13g2_pr/cap_rfcmim.sym} 1250 -960 0 0 {name=C18 +model=cap_rfcmim +lvs_model=rfcmim +w=18.195e-6 +l=18.195e-6 +wfeed=3.0e-6 +spiceprefix=X} +C {sg13g2_pr/rppd.sym} 1070 -1090 0 1 {name=R2 +w=820e-9 +l=1e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=4 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {ind.sym} 870 -450 0 1 {name=L7 +m=1 +value=50p +footprint=1206 +device=inductor} +C {sg13g2_pr/cap_rfcmim.sym} 1280 -450 0 0 {name=C19 +model=cap_rfcmim +lvs_model=rfcmim +w=7.2e-6 +l=7.2e-6 +wfeed=3.0e-6 +spiceprefix=X} +C {sg13g2_pr/npn13G2.sym} 850 -210 0 0 {name=Q5 +model=npn13G2 +spiceprefix=X +Nx=4 +} +C {sg13g2_pr/npn13G2.sym} 180 -210 0 1 {name=Q6 +model=npn13G2 +spiceprefix=X +Nx=1 +} +C {sg13g2_pr/rppd.sym} 870 -100 0 1 {name=R4 +w=1.3e-6 +l=4.55e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=12 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 160 -100 0 1 {name=R5 +w=1.3e-6 +l=4.55e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=4 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 160 -370 0 1 {name=R6 +w=1.3e-6 +l=4.55e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=4 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/cap_rfcmim.sym} 1080 -350 0 1 {name=C20 +model=cap_rfcmim +lvs_model=rfcmim +w=9.1e-6 +l=9.1e-6 +wfeed=3.0e-6 +spiceprefix=X} +C {lab_pin.sym} 80 -210 0 0 {name=p1 sig_type=std_logic lab=sub!} +C {lab_pin.sym} 950 -210 0 1 {name=p2 sig_type=std_logic lab=sub!} +C {lab_pin.sym} 880 -860 3 0 {name=p6 sig_type=std_logic lab=VCC_oscillator} +C {iopin.sym} 160 -20 0 1 {name=p5 lab=gnd} +C {lab_pin.sym} 1220 -1010 2 1 {name=p7 sig_type=std_logic lab=gnd +} +C {sg13g2_pr/cap_rfcmim.sym} 550 -1450 3 0 {name=C21 +model=cap_rfcmim +lvs_model=rfcmim +w=11.485e-6 +l=11.485e-6 +wfeed=3.0e-6 +spiceprefix=X} +C {sg13g2_pr/cap_rfcmim.sym} 710 -1450 3 0 {name=C1 +model=cap_rfcmim +lvs_model=rfcmim +w=11.485e-6 +l=11.485e-6 +wfeed=3.0e-6 +spiceprefix=X} +C {sg13g2_pr/cap_rfcmim.sym} 1100 -1310 1 0 {name=C3 +model=cap_rfcmim +lvs_model=rfcmim +w=9.065e-6 +l=9.065e-6 +wfeed=3.0e-6 +spiceprefix=X} +C {sg13g2_pr/cap_rfcmim.sym} 1200 -1450 1 1 {name=C7 +model=cap_rfcmim +lvs_model=rfcmim +w=11.485e-6 +l=11.485e-6 +wfeed=3.0e-6 +spiceprefix=X} +C {sg13g2_pr/cap_rfcmim.sym} 1040 -1450 1 1 {name=C8 +model=cap_rfcmim +lvs_model=rfcmim +w=11.485e-6 +l=11.485e-6 +wfeed=3.0e-6 +spiceprefix=X} +C {lab_pin.sym} 650 -1380 0 0 {name=p9 sig_type=std_logic lab=gnd +} +C {lab_pin.sym} 1100 -1380 0 1 {name=p13 sig_type=std_logic lab=gnd +} +C {sg13g2_pr/cap_rfcmim.sym} 1040 -1670 1 1 {name=C6 +model=cap_rfcmim +lvs_model=rfcmim +w=7.24e-6 +l=7.24e-6 +wfeed=5.0e-6 +spiceprefix=X} +C {lab_pin.sym} 870 -1620 3 0 {name=p14 sig_type=std_logic lab=gnd +} +C {lab_pin.sym} 820 -1520 0 0 {name=p15 sig_type=std_logic lab=Vctrl +} +C {ipin.sym} 820 -1740 0 0 {name=p16 lab=Vctrl} +C {ind.sym} 420 -1850 0 0 {name=L1 +m=1 +value=62.5p +footprint=1206 +device=inductor} +C {ind.sym} 420 -2050 0 0 {name=L2 +m=1 +value=62.5p +footprint=1206 +device=inductor} +C {lab_pin.sym} 200 -1120 0 0 {name=p17 sig_type=std_logic lab=sub!} +C {lab_pin.sym} 1550 -1120 0 1 {name=p18 sig_type=std_logic lab=sub!} +C {lab_pin.sym} 1370 -1010 0 1 {name=p12 sig_type=std_logic lab=Vo+} +C {sg13g2_pr/npn13G2.sym} 1950 -2020 0 1 {name=Q4 +model=npn13G2 +spiceprefix=X +Nx=6 +} +C {sg13g2_pr/rppd.sym} 1930 -1940 0 1 {name=R3 +w=2e-6 +l=10.955e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=4 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2090 -2090 0 0 {name=R8 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2090 -2170 0 0 {name=R9 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2090 -1950 0 0 {name=R10 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2090 -1870 0 0 {name=R11 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2090 -1790 0 0 {name=R12 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2090 -1710 0 0 {name=R13 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {lab_pin.sym} 1850 -2020 0 0 {name=p19 sig_type=std_logic lab=sub!} +C {iopin.sym} 2280 -2260 2 0 {name=p20 lab=VCC_Buffer} +C {lab_pin.sym} 1930 -2230 0 0 {name=p21 sig_type=std_logic lab=VCC_Buffer +} +C {lab_pin.sym} 1930 -1620 2 1 {name=p22 sig_type=std_logic lab=gnd +} +C {opin.sym} 2710 -1980 2 1 {name=p23 lab=Vo_Buffer_+} +C {sg13g2_pr/npn13G2.sym} 2520 -2020 0 0 {name=Q7 +model=npn13G2 +spiceprefix=X +Nx=6 +} +C {sg13g2_pr/rppd.sym} 2540 -1940 0 0 {name=R14 +w=2e-6 +l=10.955e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=4 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2380 -2090 0 1 {name=R16 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2380 -2170 0 1 {name=R17 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2380 -1950 0 1 {name=R18 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2380 -1870 0 1 {name=R19 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2380 -1790 0 1 {name=R20 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2380 -1710 0 1 {name=R21 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {lab_pin.sym} 2620 -2020 0 1 {name=p26 sig_type=std_logic lab=sub!} +C {lab_pin.sym} 2540 -2230 0 1 {name=p27 sig_type=std_logic lab=VCC_Buffer +} +C {lab_pin.sym} 2540 -1620 2 0 {name=p28 sig_type=std_logic lab=gnd +} +C {lab_pin.sym} 380 -1010 0 0 {name=p29 sig_type=std_logic lab=Vo-} +C {lab_pin.sym} 2090 -2020 2 0 {name=p30 sig_type=std_logic lab=Vo-} +C {lab_pin.sym} 2380 -2020 2 1 {name=p31 sig_type=std_logic lab=Vo+} +C {opin.sym} 1760 -1310 2 0 {name=p10 lab=Vo_Divider_-} +C {sg13g2_pr/npn13G2.sym} 1950 -1350 0 1 {name=Q8 +model=npn13G2 +spiceprefix=X +Nx=6 +} +C {sg13g2_pr/rppd.sym} 1930 -1270 0 1 {name=R7 +w=2e-6 +l=10.955e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=4 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2090 -1420 0 0 {name=R15 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2090 -1500 0 0 {name=R22 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {lab_pin.sym} 1850 -1350 0 0 {name=p32 sig_type=std_logic lab=sub!} +C {lab_pin.sym} 1930 -1560 0 0 {name=p34 sig_type=std_logic lab=VCC_Buffer +} +C {lab_pin.sym} 1930 -1140 2 1 {name=p35 sig_type=std_logic lab=gnd +} +C {opin.sym} 2710 -1310 2 1 {name=p36 lab=Vo_Divider_+} +C {sg13g2_pr/npn13G2.sym} 2520 -1350 0 0 {name=Q9 +model=npn13G2 +spiceprefix=X +Nx=6 +} +C {sg13g2_pr/rppd.sym} 2540 -1270 0 0 {name=R27 +w=2e-6 +l=10.955e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=4 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2380 -1420 0 1 {name=R28 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {sg13g2_pr/rppd.sym} 2380 -1500 0 1 {name=R29 +w=0.5e-6 +l=1.675e-6 +model=rppd +body=sub! +spiceprefix=X +b=0 +m=2 +value=expr_eng( ( 70.0e-6 / @w + 260.0 * ( (@b + 1)* @l + ( 1.081*( @w + 6.0e-9 ) + 0.18e-6 )*@b ) / ( @w + 6.0e-9 ) ) / @m ) +} +C {lab_pin.sym} 2620 -1350 0 1 {name=p37 sig_type=std_logic lab=sub!} +C {lab_pin.sym} 2540 -1560 0 1 {name=p38 sig_type=std_logic lab=VCC_Buffer +} +C {lab_pin.sym} 2540 -1140 2 0 {name=p39 sig_type=std_logic lab=gnd +} +C {lab_pin.sym} 2090 -1350 2 0 {name=p40 sig_type=std_logic lab=Vo-} +C {lab_pin.sym} 2380 -1350 2 1 {name=p41 sig_type=std_logic lab=Vo+} +C {sg13g2_pr/cap_rfcmim.sym} 2090 -1250 0 0 {name=C9 +model=cap_rfcmim +lvs_model=rfcmim +w=18.195e-6 +l=18.195e-6 +wfeed=3.0e-6 +spiceprefix=X} +C {sg13g2_pr/cap_rfcmim.sym} 2380 -1250 0 1 {name=C10 +model=cap_rfcmim +lvs_model=rfcmim +w=18.195e-6 +l=18.195e-6 +wfeed=3.0e-6 +spiceprefix=X} +C {lab_pin.sym} 1330 -1450 2 0 {name=p33 sig_type=std_logic lab=V_tank_-} +C {iopin.sym} 880 -990 1 0 {name=p43 lab=bias} +C {sg13g2_pr/ptap1.sym} 2540 -950 2 0 {name=R23 +model=ptap1 +spiceprefix=X +w=0.78e-6 +l=0.78e-6 +} +C {sg13g2_pr/ptap1.sym} 2420 -950 2 0 {name=R24 +model=ptap1 +spiceprefix=X +w=0.78e-6 +l=0.78e-6 +} +C {sg13g2_pr/ptap1.sym} 2300 -950 2 0 {name=R25 +model=ptap1 +spiceprefix=X +w=0.78e-6 +l=0.78e-6 +} +C {sg13g2_pr/ptap1.sym} 2180 -950 2 0 {name=R26 +model=ptap1 +spiceprefix=X +w=0.78e-6 +l=0.78e-6 +} +C {sg13g2_pr/ptap1.sym} 2060 -950 2 0 {name=R30 +model=ptap1 +spiceprefix=X +w=0.78e-6 +l=0.78e-6 +} +C {sg13g2_pr/ptap1.sym} 1940 -950 2 0 {name=R31 +model=ptap1 +spiceprefix=X +w=0.78e-6 +l=0.78e-6 +} +C {lab_pin.sym} 1940 -900 2 1 {name=p4 sig_type=std_logic lab=gnd +} +C {lab_pin.sym} 1940 -1000 0 0 {name=p44 sig_type=std_logic lab=sub!} +C {iopin.sym} 420 -1450 0 1 {name=p45 lab=V_ic} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/xschem/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/xschem/LC_Oscillator.sym index 4d1a7d8b..6ea6e241 100644 --- a/modules/module_4_type_2_PLL/LC_Oscillator/xschem/LC_Oscillator.sym +++ b/modules/module_4_type_2_PLL/LC_Oscillator/xschem/LC_Oscillator.sym @@ -10,21 +10,42 @@ E {} L 4 70 -20 90 -20 {} L 4 70 20 90 20 {} L 4 -100 0 -80 0 {} -L 7 20 70 20 90 {} -L 7 -20 70 -20 90 {} -B 5 87.5 -22.5 92.5 -17.5 {name=Voplus dir=out} -B 5 17.5 87.5 22.5 92.5 {name=vdd dir=inout} -B 5 -22.5 87.5 -17.5 92.5 {name=gnd dir=inout} -B 5 87.5 17.5 92.5 22.5 {name=Vominus dir=out} -B 5 -102.5 -2.5 -97.5 2.5 {name=Vcont dir=in} +L 4 60 -100 80 -100 {} +L 4 60 -120 80 -120 {} +L 7 -100 100 -80 100 {} +L 7 -100 180 -80 180 {} +L 7 -100 160 -80 160 {} +L 7 -100 120 -80 120 {} +L 7 -100 140 -80 140 {} +L 7 70 90 90 90 {} +B 5 87.5 -22.5 92.5 -17.5 {name=Vo_Divider_+ + dir=out} +B 5 -102.5 97.5 -97.5 102.5 {name=VCC_oscillator dir=inout} +B 5 -102.5 177.5 -97.5 182.5 {name=gnd dir=inout} +B 5 87.5 17.5 92.5 22.5 {name=Vo_Divider_- + dir=out} +B 5 -102.5 -2.5 -97.5 2.5 {name=Vctrl dir=in} +B 5 -102.5 157.5 -97.5 162.5 {name=bias dir=inout} +B 5 -102.5 117.5 -97.5 122.5 {name=VCC_Buffer dir=inout} +B 5 -102.5 137.5 -97.5 142.5 {name=VCC_Bias_Oscillator dir=inout} +B 5 77.5 -102.5 82.5 -97.5 {name=Vo_Buffer_- dir=out} +B 5 77.5 -122.5 82.5 -117.5 {name=Vo_Buffer_+ dir=out} +B 5 87.5 87.5 92.5 92.5 {name=V_ic dir=inout} A 4 -1.666666666666714 1.666666666666714 71.68604389202189 287.5924245621816 360 {} A 4 -30 27.5 40.69705149024927 42.51044707800085 94.97910584399833 {} A 4 30 -27.5 40.69705149024927 222.5104470780009 94.97910584399833 {} T {@symname} -40.5 -56 0 0 0.1 0.1 {} T {@name} -40 -47 0 0 0.1 0.1 { } -T {Voplus} 65 -24 0 1 0.2 0.2 {} -T {vdd} 5 64 2 1 0.2 0.2 {} -T {gnd} -35 64 2 1 0.2 0.2 {} -T {Vominus} 65 16 0 1 0.2 0.2 {} -T {Vcont} -75 4 2 1 0.2 0.2 {} +T {Vo_Divider_+} 65 -24 0 1 0.2 0.2 {} +T {VCC_oscillator} -80 104 2 1 0.2 0.2 {} +T {gnd} -80 189 2 1 0.2 0.2 {} +T {Vo_Divider_- +} 65 16 0 1 0.2 0.2 {} +T {Vctrl} -75 4 2 1 0.2 0.2 {} +T {bias} -80 166.5 2 1 0.2 0.2 {} +T {VCC_Buffer} -80 116 0 0 0.2 0.2 {} +T {VCC_Bias_Oscillator} -80 136 0 0 0.2 0.2 {} +T {Vo_Buffer_-} 55 -106.5 0 1 0.2 0.2 {} +T {Vo_Buffer_+} 55 -126.5 0 1 0.2 0.2 {} +T {V_ic} 70 94 2 0 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/cace/differential_oscillator.yaml b/modules/module_4_type_2_PLL/diff_Roscillator/cace/differential_oscillator.yaml deleted file mode 100644 index 579a7f72..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/cace/differential_oscillator.yaml +++ /dev/null @@ -1,85 +0,0 @@ -#-------------------------------------------------------------- -# CACE circuit characterization file -#-------------------------------------------------------------- - -name: diff_ring_oscillator -description: Differential Ring oscillator testbench -PDK: ihp-sg13g2 - -cace_format: 5.2 - -authorship: - designer: - company: - creation_date: - license: Apache 2.0 - -paths: - root: .. - schematic: xschem/ - netlist: xschem/simulations - documentation: docs - -pins: - vdd: - description: Positive analog power supply - type: power - direction: inout - Vmin: 0.8 - Vmax: 1.8 - gnd: - description: Analog ground - type: ground - direction: inout - -default_conditions: - vdd: - description: Analog power supply voltage - display: Vdd - unit: V - typical: 1.2 - corner: - description: Process corner - display: Corner - typical: tt - temperature: - description: Ambient temperature - display: Temp - unit: °C - typical: 27 - -parameters: - Frequency: - description: Analysing the frequency of the oscillator - display: Freq - unit: GHz - spec: - frequency: - minimum: - value: 4.2 - typical: - value: 5.4 - maximum: - value: 7.1 - tool: - ngspice: - template: diff_oscillator_tb.sch - format: ascii - suffix: .data - variables: [time_axis, vo_diff] - script: freq.py - script_variables: [frequency] - - plot: - frequency: - xaxis: time_axis - yaxis: vo_diff - conditions: - vdd: - typical: 1.2 - temperature: - typical: 27 - corner: - typical: tt - - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/cace/scripts/__pycache__/freq.cpython-310.pyc b/modules/module_4_type_2_PLL/diff_Roscillator/cace/scripts/__pycache__/freq.cpython-310.pyc deleted file mode 100644 index c822efd54c364624050e0abebbda502aa6ed7d18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 704 zcmYjPJ#W-N5Z&2buYH%~L=h0jSMP>MR1^q-kSNon;+m83t`FyYw%Of_VrgB4mj95e z5LEo0X{quTsF=M(A|uW7%+8zV*^ln%Xv)Zby#D>=p&)H{olD)JBH?iYb)*AQr?IorX=?=qT$GU0g;SD?k3+qsrHSwRhF zu|tr{z;{3_sa23q*_e2Co?Is()E$q^=-Hoqp$I8dB1fV;0ho&Doez zM;cU&V@HU27SxVr8YfzY$?bph>=Y-y-k4=^SvyQGx}~nG$^z{ICzUl{x27$J6{UN- zi3K_#(D?*;+hbB#TMQ@~)1us%f-nl8s49;sLDWD|e5Ru->}pe7=2J@-%B&)QdAy(!i|nSDn5zsF@!niE&ry7%rRa$oiX9`v2_z3oclT$FWB z2xfc+hkVK(@C+V_W5`4XGnk2~v@fWfXQ=$p*X_#2yTqj3Zu-F<#F(~FdKAuElub>a e*sveq9z2iC?9Har+s3?&=i=fcIAj^T;{O23jjhW7 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/cace/scripts/freq.py b/modules/module_4_type_2_PLL/diff_Roscillator/cace/scripts/freq.py deleted file mode 100644 index 1014da4a..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/cace/scripts/freq.py +++ /dev/null @@ -1,30 +0,0 @@ -from typing import Any -import numpy as np - -def postprocess(results: dict[str, list], conditions: dict[str, Any]) -> dict[str, list]: - # Extract waveform - t = np.array(results['time_axis']) - y = np.array(results['vo_diff']) - - if len(y) == 0: - # Fallback if waveform is empty - return {'frequency': [0.0]} - - dt = np.mean(np.diff(t)) - fs = 1 / dt - - # FFT - Y = np.fft.fft(y - np.mean(y)) # remove DC - freqs = np.fft.fftfreq(len(Y), d=dt) - - # Only positive frequencies - mask = freqs > 0 - freqs = freqs[mask] - Y = np.abs(Y[mask]) - - # Find frequency with maximum magnitude - freq_peak = freqs[np.argmax(Y)] # convert to GHz - - - # Return as a list for compatibility with sweep/postprocessing tools - return {'frequency': [freq_peak]} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/cace/templates/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/cace/templates/diff_oscillator_tb.sch deleted file mode 100644 index 8b2e4f89..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/cace/templates/diff_oscillator_tb.sch +++ /dev/null @@ -1,65 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -N 390 -280 390 -250 {lab=GND} -N 390 -370 390 -340 {lab=vdd} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 10 -1170 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -* Keep this if your manual run has it — parity matters - -.ic V(Voplus)=1.2 -.control -* Stability & parity options -set noaskquit -set numdgt=12 - -* Save vectors and run -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n 160p - -* Define explicit vectors (avoid V(...) on calculated vectors) -let vo_p = v(Voplus) -let vo_m = v(Vominus) -let vo_diff = vo_p - vo_m - -* --- Main file that CACE reads: 2 columns (time, vo_diff) --- -set wr_singlescale -wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff - -* --- Extra debug file (CACE ignores): 4 columns w/ names --- -set wr_vecnames -wrdata CACE\{simpath\}/debug_CACE\{N\}.dat time vo_p vo_m vo_diff -unset wr_vecnames - -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/models/cornerMOSlv.lib mos_CACE\{corner\} - -.include CACE\{DUT_path\} - -.temp CACE\{temperature\} -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} -C {vsource.sym} 390 -310 0 0 {name=V1 value=1.2 savecurrent=false} -C {gnd.sym} 390 -250 0 0 {name=l1 lab=GND} -C {lab_pin.sym} 390 -370 2 0 {name=p5 sig_type=std_logic lab=vdd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/cace/templates/xschemrc b/modules/module_4_type_2_PLL/diff_Roscillator/cace/templates/xschemrc deleted file mode 100644 index 88fd1465..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/cace/templates/xschemrc +++ /dev/null @@ -1,18 +0,0 @@ -# xschemrc - Custom configuration file for xschem -# This file sources another xschemrc file from a known location - -# Source the base configuration from a known location -source $::env(PDK_ROOT)/$::env(PDK)/libs.tech/xschem/xschemrc - -# (Optional) Add any custom overrides or extensions below -# set xschem_library_path /home/user/my_libs -# set xschem_gui_font "Monospace 10" - -#### include skywater libraries. Here I use [pwd]. This works if I start xschem from here. -###only if you dont have this setup already ### -###append XSCHEM_LIBRARY_PATH :[file dirname [info script]] - - -#### Add custom libraries (directories with .lib files) -append XSCHEM_LIBRARY_PATH :../../xschem/ - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator.md b/modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator.md deleted file mode 100644 index 43b5c6fd..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator.md +++ /dev/null @@ -1,50 +0,0 @@ -# diff_ring_oscillator - -- Description: Differential Ring oscillator testbench -- PDK: ihp-sg13g2 - -## Authorship - -- Designer: None -- Company: None -- Created: None -- License: Apache 2.0 -- Last modified: None - -## Pins - -- vdd - + Description: Positive analog power supply - + Type: power - + Direction: inout - + Vmin: 0.8 - + Vmax: 1.8 -- gnd - + Description: Analog ground - + Type: ground - + Direction: inout - -## Default Conditions - -- vdd - + Description: Analog power supply voltage - + Display: Vdd - + Unit: V - + Typical: 1.2 -- corner - + Description: Process corner - + Display: Corner - + Typical: tt -- temperature - + Description: Ambient temperature - + Display: Temp - + Unit: °C - + Typical: 27 - -## Symbol - -![Symbol of diff_ring_oscillator](diff_ring_oscillator_symbol.svg) - -## Schematic - -![Schematic of diff_ring_oscillator](diff_ring_oscillator_schematic.svg) diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator/schematic/frequency.png b/modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator/schematic/frequency.png deleted file mode 100644 index d2bd4121ca10b5af73f837a89c772ae0f2bb88bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42515 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 ppp`w~_ps)s!V++p9XtPRN)O}Xd? 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 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator_schematic.md b/modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator_schematic.md deleted file mode 100644 index b83728f3..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator_schematic.md +++ /dev/null @@ -1,15 +0,0 @@ - -# CACE Summary for diff_ring_oscillator - -**netlist source**: schematic - -| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | -| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | -| Freq | ngspice | frequency | 4.2 GHz | 5.414 GHz | 5.4 GHz | 5.414 GHz | 7.1 GHz | 5.414 GHz | Pass ✅ | - - -## Plots - -## frequency - -![frequency](./diff_ring_oscillator/schematic/frequency.png) diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator_schematic.svg b/modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator_schematic.svg deleted file mode 100644 index 5de9a6fa..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator_schematic.svg +++ /dev/null @@ -1,160 +0,0 @@ - - - - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator_symbol.svg b/modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator_symbol.svg deleted file mode 100644 index 5de9a6fa..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/docs/diff_ring_oscillator_symbol.svg +++ /dev/null @@ -1,160 +0,0 @@ - - - - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/diff_oscillator_tb.sch deleted file mode 100644 index 8007d3ee..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/diff_oscillator_tb.sch +++ /dev/null @@ -1,42 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=#net1} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 0 -840 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -.ic V(Voplus)=1.2 -.control -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n -save all -let vo_diff = v(Voplus) - v(Vominus) -set wr_singlescale -wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data V(vo_diff) -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/models/cornerMOSlv.lib mos_CACE\{corner\} - -.include CACE\{DUT_path\} - -.temp CACE\{temperature\} -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/frequency.png b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/frequency.png deleted file mode 100644 index f8b9f9a1995d7312aa812aff345a01896b3ac690..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16308 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 NmXN=nbNA8n{{ynKz!Lxf diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/.spiceinit b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/.spiceinit deleted file mode 100644 index 02b902fb..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/.spiceinit +++ /dev/null @@ -1,30 +0,0 @@ -* a custom spiceinit file for IHP-Open-PDK - -* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc -* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK -* export PDK=ihp-sg13g2 - -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice ) -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice ) -*echo $sourcepath - -*option tnom=28 -*option list - -* KLU solver still do not work correctly for every simulation -*option klu - -*option node -*option opts -*option warn=1 -*option maxwarns=10 -*option savecurrents - -*set ngbehavior=hsa -*set noinit - -* add OSDI -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi' - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/conditions.yaml b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/conditions.yaml deleted file mode 100644 index 8eb2ce14..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/conditions.yaml +++ /dev/null @@ -1,8 +0,0 @@ -DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice -N: 0 -PDK: ihp-sg13g2 -PDK_ROOT: /home/pedersen/IHP-Open-PDK -corner: tt -filename: diff_oscillator_tb -simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0 -temperature: '27' diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/diff_oscillator_tb.sch deleted file mode 100644 index 36d01301..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/diff_oscillator_tb.sch +++ /dev/null @@ -1,42 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=#net1} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 0 -840 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -.ic V(Voplus)=1.2 -.control -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n -save all -let vo_diff = v(Voplus) - v(Vominus) -set wr_singlescale -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/diff_oscillator_tb_0.data V(vo_diff) -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt - -.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice - -.temp 27 -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/diff_oscillator_tb_0.data b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/diff_oscillator_tb_0.data deleted file mode 100644 index fbaae6a4..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/diff_oscillator_tb_0.data +++ /dev/null @@ -1,208 +0,0 @@ - 0.00000000e+00 1.50149049e+00 - 1.00000000e-13 1.49305933e+00 - 2.00000000e-13 1.48762993e+00 - 4.00000000e-13 1.47835377e+00 - 8.00000000e-13 1.46164680e+00 - 1.60000000e-12 1.42856559e+00 - 3.20000000e-12 1.36698463e+00 - 6.40000000e-12 1.25782460e+00 - 1.28000000e-11 1.08329184e+00 - 2.28000000e-11 8.71035493e-01 - 3.28000000e-11 7.01254834e-01 - 4.28000000e-11 5.69268666e-01 - 5.28000000e-11 4.67472873e-01 - 6.28000000e-11 3.88133688e-01 - 7.28000000e-11 3.25963336e-01 - 8.28000000e-11 2.75833402e-01 - 9.28000000e-11 2.35272475e-01 - 1.02800000e-10 2.01449017e-01 - 1.12800000e-10 1.72976489e-01 - 1.22800000e-10 1.48257979e-01 - 1.32800000e-10 1.26851615e-01 - 1.42800000e-10 1.07852737e-01 - 1.52800000e-10 9.13049778e-02 - 1.62800000e-10 7.66490286e-02 - 1.72800000e-10 6.40805814e-02 - 1.82800000e-10 5.31111453e-02 - 1.92800000e-10 4.39141630e-02 - 2.02800000e-10 3.59896484e-02 - 2.12800000e-10 2.94857246e-02 - 2.22800000e-10 2.39196602e-02 - 2.32800000e-10 1.94468223e-02 - 2.42800000e-10 1.56224285e-02 - 2.52800000e-10 1.26211750e-02 - 2.62800000e-10 1.00396496e-02 - 2.72800000e-10 8.07228591e-03 - 2.82800000e-10 6.35363179e-03 - 2.92800000e-10 5.09412630e-03 - 3.02800000e-10 3.96077425e-03 - 3.12800000e-10 3.17515852e-03 - 3.22800000e-10 2.43103839e-03 - 3.32800000e-10 1.95645853e-03 - 3.42800000e-10 1.46686012e-03 - 3.52800000e-10 1.19281616e-03 - 3.62800000e-10 8.67310196e-04 - 3.72800000e-10 7.20419269e-04 - 3.82800000e-10 4.99475012e-04 - 3.92800000e-10 4.31886194e-04 - 4.02800000e-10 2.76956531e-04 - 4.12800000e-10 2.57956889e-04 - 4.22800000e-10 1.44433763e-04 - 4.32800000e-10 1.54585536e-04 - 4.42800000e-10 6.69535287e-05 - 4.52800000e-10 9.41142808e-05 - 4.62800000e-10 2.26996257e-05 - 4.72800000e-10 5.93807102e-05 - 4.82800000e-10 -1.78612241e-06 - 4.92800000e-10 3.98585351e-05 - 5.02800000e-10 -1.47083610e-05 - 5.12800000e-10 2.91690709e-05 - 5.22800000e-10 -2.10064243e-05 - 5.32800000e-10 2.34975240e-05 - 5.42800000e-10 -2.36122120e-05 - 5.52800000e-10 2.05966110e-05 - 5.62800000e-10 -2.42373428e-05 - 5.72800000e-10 1.91662809e-05 - 5.82800000e-10 -2.38606720e-05 - 5.92800000e-10 1.84715158e-05 - 6.02800000e-10 -2.30271287e-05 - 6.12800000e-10 1.81092938e-05 - 6.22800000e-10 -2.20289175e-05 - 6.32800000e-10 1.78681053e-05 - 6.42800000e-10 -2.10140792e-05 - 6.52800000e-10 1.76443427e-05 - 6.62800000e-10 -2.00506354e-05 - 6.72800000e-10 1.73932875e-05 - 6.82800000e-10 -1.91638592e-05 - 6.92800000e-10 1.71009105e-05 - 7.02800000e-10 -1.83574797e-05 - 7.12800000e-10 1.67680328e-05 - 7.22800000e-10 -1.76254120e-05 - 7.32800000e-10 1.64017176e-05 - 7.42800000e-10 -1.69579955e-05 - 7.52800000e-10 1.60108123e-05 - 7.62800000e-10 -1.63451157e-05 - 7.72800000e-10 1.56038138e-05 - 7.82800000e-10 -1.57776080e-05 - 7.92800000e-10 1.51879916e-05 - 8.02800000e-10 -1.52477524e-05 - 8.12800000e-10 1.47691590e-05 - 8.22800000e-10 -1.47493166e-05 - 8.32800000e-10 1.43517499e-05 - 8.42800000e-10 -1.42773992e-05 - 8.52800000e-10 1.39390192e-05 - 8.62800000e-10 -1.38282052e-05 - 8.72800000e-10 1.35332720e-05 - 8.82800000e-10 -1.33988187e-05 - 8.92800000e-10 1.31360780e-05 - 9.02800000e-10 -1.29870020e-05 - 9.12800000e-10 1.27484537e-05 - 9.22800000e-10 -1.25910299e-05 - 9.32800000e-10 1.23710090e-05 - 9.42800000e-10 -1.22095585e-05 - 9.52800000e-10 1.20040604e-05 - 9.62800000e-10 -1.18415246e-05 - 9.72800000e-10 1.16477172e-05 - 9.82800000e-10 -1.14860712e-05 - 9.92800000e-10 1.13019442e-05 - 1.00280000e-09 -1.11424911e-05 - 1.01280000e-09 1.09666084e-05 - 1.02280000e-09 -1.08101874e-05 - 1.03280000e-09 1.06415116e-05 - 1.04280000e-09 -1.04886439e-05 - 1.05280000e-09 1.03264143e-05 - 1.06280000e-09 -1.01774042e-05 - 1.07280000e-09 1.00210517e-05 - 1.08280000e-09 -9.87605735e-06 - 1.09280000e-09 9.72514526e-06 - 1.10280000e-09 -9.58422695e-06 - 1.11280000e-09 9.43841071e-06 - 1.12280000e-09 -9.30156383e-06 - 1.13280000e-09 9.16056303e-06 - 1.14280000e-09 -9.02774079e-06 - 1.15280000e-09 8.89132013e-06 - 1.16280000e-09 -8.76244881e-06 - 1.17280000e-09 8.63040506e-06 - 1.18280000e-09 -8.50539433e-06 - 1.19280000e-09 8.37754749e-06 - 1.20280000e-09 -8.25629736e-06 - 1.21280000e-09 8.13248451e-06 - 1.22280000e-09 -8.01488990e-06 - 1.23280000e-09 7.89496117e-06 - 1.24280000e-09 -7.78091494e-06 - 1.25280000e-09 7.66473063e-06 - 1.26280000e-09 -7.55412554e-06 - 1.27280000e-09 7.44155422e-06 - 1.28280000e-09 -7.33428425e-06 - 1.29280000e-09 7.22520127e-06 - 1.30280000e-09 -7.12116247e-06 - 1.31280000e-09 7.01544909e-06 - 1.32280000e-09 -6.91453993e-06 - 1.33280000e-09 6.81208267e-06 - 1.34280000e-09 -6.71420446e-06 - 1.35280000e-09 6.61489446e-06 - 1.36280000e-09 -6.51995139e-06 - 1.37280000e-09 6.42368417e-06 - 1.38280000e-09 -6.33158344e-06 - 1.39280000e-09 6.23825850e-06 - 1.40280000e-09 -6.14891024e-06 - 1.41280000e-09 6.05843085e-06 - 1.42280000e-09 -5.97174817e-06 - 1.43280000e-09 5.88402118e-06 - 1.44280000e-09 -5.79992000e-06 - 1.45280000e-09 5.71485565e-06 - 1.46280000e-09 -5.63325474e-06 - 1.47280000e-09 5.55076647e-06 - 1.48280000e-09 -5.47158728e-06 - 1.49280000e-09 5.39159165e-06 - 1.50280000e-09 -5.31475827e-06 - 1.51280000e-09 5.23717479e-06 - 1.52280000e-09 -5.16261385e-06 - 1.53280000e-09 5.08736485e-06 - 1.54280000e-09 -5.01500544e-06 - 1.55280000e-09 4.94201599e-06 - 1.56280000e-09 -4.87178954e-06 - 1.57280000e-09 4.80098734e-06 - 1.58280000e-09 -4.73282758e-06 - 1.59280000e-09 4.66414285e-06 - 1.60280000e-09 -4.59798569e-06 - 1.61280000e-09 4.53135104e-06 - 1.62280000e-09 -4.46713454e-06 - 1.63280000e-09 4.40248494e-06 - 1.64280000e-09 -4.34014921e-06 - 1.65280000e-09 4.27742183e-06 - 1.66280000e-09 -4.21690894e-06 - 1.67280000e-09 4.15604313e-06 - 1.68280000e-09 -4.09729707e-06 - 1.69280000e-09 4.03823423e-06 - 1.70280000e-09 -3.98120084e-06 - 1.71280000e-09 3.92388436e-06 - 1.72280000e-09 -3.86851124e-06 - 1.73280000e-09 3.81288648e-06 - 1.74280000e-09 -3.75912291e-06 - 1.75280000e-09 3.70513701e-06 - 1.76280000e-09 -3.65293401e-06 - 1.77280000e-09 3.60053592e-06 - 1.78280000e-09 -3.54984600e-06 - 1.79280000e-09 3.49898643e-06 - 1.80280000e-09 -3.44976368e-06 - 1.81280000e-09 3.40039490e-06 - 1.82280000e-09 -3.35259493e-06 - 1.83280000e-09 3.30467088e-06 - 1.84280000e-09 -3.25825066e-06 - 1.85280000e-09 3.21172679e-06 - 1.86280000e-09 -3.16664472e-06 - 1.87280000e-09 3.12147793e-06 - 1.88280000e-09 -3.07769371e-06 - 1.89280000e-09 3.03384239e-06 - 1.90280000e-09 -2.99131704e-06 - 1.91280000e-09 2.94874091e-06 - 1.92280000e-09 -2.90743663e-06 - 1.93280000e-09 2.86609674e-06 - 1.94280000e-09 -2.82597704e-06 - 1.95280000e-09 2.78583567e-06 - 1.96280000e-09 -2.74686516e-06 - 1.97280000e-09 2.70788585e-06 - 1.98280000e-09 -2.67003028e-06 - 1.99280000e-09 2.63217780e-06 - 2.00000000e-09 -2.57652890e-06 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/diff_ring_oscillator.sym b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/diff_ring_oscillator.sym deleted file mode 100644 index e632b156..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/run_0/diff_ring_oscillator.sym +++ /dev/null @@ -1,27 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {type=primitive -format="@name @pinlist @symname" -template="name=x1" -} -V {} -S {} -E {} -L 4 70 -20 90 -20 {} -L 4 70 20 90 20 {} -L 7 20 70 20 90 {} -L 7 -20 70 -20 90 {} -B 5 87.5 -22.5 92.5 -17.5 {name=Voplus dir=out} -B 5 17.5 87.5 22.5 92.5 {name=vdd dir=inout} -B 5 -22.5 87.5 -17.5 92.5 {name=gnd dir=inout} -B 5 87.5 17.5 92.5 22.5 {name=Vominus dir=out} -A 4 -1.666666666666714 1.666666666666714 71.68604389202189 287.5924245621816 360 {} -A 4 -30 27.5 40.69705149024927 42.51044707800085 94.97910584399833 {} -A 4 30 -27.5 40.69705149024927 222.5104470780009 94.97910584399833 {} -T {@symname} -40.5 -56 0 0 0.1 0.1 {} -T {@name} -40 -47 0 0 0.1 0.1 { -} -T {Voplus} 65 -24 0 1 0.2 0.2 {} -T {vdd} 5 64 2 1 0.2 0.2 {} -T {gnd} -35 64 2 1 0.2 0.2 {} -T {Vominus} 65 16 0 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/simulation_summary.csv b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/simulation_summary.csv deleted file mode 100644 index f0e1ddca..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/simulation_summary.csv +++ /dev/null @@ -1,2 +0,0 @@ -run,time_axis,vo_diff,frequency -run_0,"[0.000, 1.000e-13, 2.000e-13, …]","[1.501, 1.493, 1.488, …]",4.976e+08 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/simulation_summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/simulation_summary.md deleted file mode 100644 index fba78079..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/parameters/Frequency/simulation_summary.md +++ /dev/null @@ -1,5 +0,0 @@ -# Simulation Summary for Freq - -| run | time_axis | vo_diff | frequency | -| :-- | --------: | ------: | --------: | -| run_0 | [0.000, 1.000e-13, 2.000e-13, …] | [1.501, 1.493, 1.488, …] | 4.976e+08 | diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/summary.md deleted file mode 100644 index 13a3fa51..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-36-06/summary.md +++ /dev/null @@ -1,9 +0,0 @@ - -# CACE Summary for diff_ring_oscillator - -**netlist source**: schematic - -| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | -| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | -| Freq | ngspice | frequency | any | 0.498 GHz | any | 0.498 GHz | any | 0.498 GHz | Pass ✅ | - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/diff_oscillator_tb.sch deleted file mode 100644 index 35552a14..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/diff_oscillator_tb.sch +++ /dev/null @@ -1,42 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 0 -840 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -.ic V(Voplus)=1.2 -.control -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n -save all -let vo_diff = v(Voplus) - v(Vominus) -set wr_singlescale -wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/models/cornerMOSlv.lib mos_CACE\{corner\} - -.include CACE\{DUT_path\} - -.temp CACE\{temperature\} -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/frequency.png b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/frequency.png deleted file mode 100644 index f8b9f9a1995d7312aa812aff345a01896b3ac690..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16308 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 NmXN=nbNA8n{{ynKz!Lxf diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/.spiceinit b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/.spiceinit deleted file mode 100644 index 02b902fb..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/.spiceinit +++ /dev/null @@ -1,30 +0,0 @@ -* a custom spiceinit file for IHP-Open-PDK - -* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc -* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK -* export PDK=ihp-sg13g2 - -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice ) -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice ) -*echo $sourcepath - -*option tnom=28 -*option list - -* KLU solver still do not work correctly for every simulation -*option klu - -*option node -*option opts -*option warn=1 -*option maxwarns=10 -*option savecurrents - -*set ngbehavior=hsa -*set noinit - -* add OSDI -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi' - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/conditions.yaml b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/conditions.yaml deleted file mode 100644 index e9db1781..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/conditions.yaml +++ /dev/null @@ -1,8 +0,0 @@ -DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice -N: 0 -PDK: ihp-sg13g2 -PDK_ROOT: /home/pedersen/IHP-Open-PDK -corner: tt -filename: diff_oscillator_tb -simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0 -temperature: '27' diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/diff_oscillator_tb.sch deleted file mode 100644 index 94bdb520..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/diff_oscillator_tb.sch +++ /dev/null @@ -1,42 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 0 -840 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -.ic V(Voplus)=1.2 -.control -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n -save all -let vo_diff = v(Voplus) - v(Vominus) -set wr_singlescale -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/diff_oscillator_tb_0.data vo_diff -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt - -.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice - -.temp 27 -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/diff_oscillator_tb_0.data b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/diff_oscillator_tb_0.data deleted file mode 100644 index fbaae6a4..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/diff_oscillator_tb_0.data +++ /dev/null @@ -1,208 +0,0 @@ - 0.00000000e+00 1.50149049e+00 - 1.00000000e-13 1.49305933e+00 - 2.00000000e-13 1.48762993e+00 - 4.00000000e-13 1.47835377e+00 - 8.00000000e-13 1.46164680e+00 - 1.60000000e-12 1.42856559e+00 - 3.20000000e-12 1.36698463e+00 - 6.40000000e-12 1.25782460e+00 - 1.28000000e-11 1.08329184e+00 - 2.28000000e-11 8.71035493e-01 - 3.28000000e-11 7.01254834e-01 - 4.28000000e-11 5.69268666e-01 - 5.28000000e-11 4.67472873e-01 - 6.28000000e-11 3.88133688e-01 - 7.28000000e-11 3.25963336e-01 - 8.28000000e-11 2.75833402e-01 - 9.28000000e-11 2.35272475e-01 - 1.02800000e-10 2.01449017e-01 - 1.12800000e-10 1.72976489e-01 - 1.22800000e-10 1.48257979e-01 - 1.32800000e-10 1.26851615e-01 - 1.42800000e-10 1.07852737e-01 - 1.52800000e-10 9.13049778e-02 - 1.62800000e-10 7.66490286e-02 - 1.72800000e-10 6.40805814e-02 - 1.82800000e-10 5.31111453e-02 - 1.92800000e-10 4.39141630e-02 - 2.02800000e-10 3.59896484e-02 - 2.12800000e-10 2.94857246e-02 - 2.22800000e-10 2.39196602e-02 - 2.32800000e-10 1.94468223e-02 - 2.42800000e-10 1.56224285e-02 - 2.52800000e-10 1.26211750e-02 - 2.62800000e-10 1.00396496e-02 - 2.72800000e-10 8.07228591e-03 - 2.82800000e-10 6.35363179e-03 - 2.92800000e-10 5.09412630e-03 - 3.02800000e-10 3.96077425e-03 - 3.12800000e-10 3.17515852e-03 - 3.22800000e-10 2.43103839e-03 - 3.32800000e-10 1.95645853e-03 - 3.42800000e-10 1.46686012e-03 - 3.52800000e-10 1.19281616e-03 - 3.62800000e-10 8.67310196e-04 - 3.72800000e-10 7.20419269e-04 - 3.82800000e-10 4.99475012e-04 - 3.92800000e-10 4.31886194e-04 - 4.02800000e-10 2.76956531e-04 - 4.12800000e-10 2.57956889e-04 - 4.22800000e-10 1.44433763e-04 - 4.32800000e-10 1.54585536e-04 - 4.42800000e-10 6.69535287e-05 - 4.52800000e-10 9.41142808e-05 - 4.62800000e-10 2.26996257e-05 - 4.72800000e-10 5.93807102e-05 - 4.82800000e-10 -1.78612241e-06 - 4.92800000e-10 3.98585351e-05 - 5.02800000e-10 -1.47083610e-05 - 5.12800000e-10 2.91690709e-05 - 5.22800000e-10 -2.10064243e-05 - 5.32800000e-10 2.34975240e-05 - 5.42800000e-10 -2.36122120e-05 - 5.52800000e-10 2.05966110e-05 - 5.62800000e-10 -2.42373428e-05 - 5.72800000e-10 1.91662809e-05 - 5.82800000e-10 -2.38606720e-05 - 5.92800000e-10 1.84715158e-05 - 6.02800000e-10 -2.30271287e-05 - 6.12800000e-10 1.81092938e-05 - 6.22800000e-10 -2.20289175e-05 - 6.32800000e-10 1.78681053e-05 - 6.42800000e-10 -2.10140792e-05 - 6.52800000e-10 1.76443427e-05 - 6.62800000e-10 -2.00506354e-05 - 6.72800000e-10 1.73932875e-05 - 6.82800000e-10 -1.91638592e-05 - 6.92800000e-10 1.71009105e-05 - 7.02800000e-10 -1.83574797e-05 - 7.12800000e-10 1.67680328e-05 - 7.22800000e-10 -1.76254120e-05 - 7.32800000e-10 1.64017176e-05 - 7.42800000e-10 -1.69579955e-05 - 7.52800000e-10 1.60108123e-05 - 7.62800000e-10 -1.63451157e-05 - 7.72800000e-10 1.56038138e-05 - 7.82800000e-10 -1.57776080e-05 - 7.92800000e-10 1.51879916e-05 - 8.02800000e-10 -1.52477524e-05 - 8.12800000e-10 1.47691590e-05 - 8.22800000e-10 -1.47493166e-05 - 8.32800000e-10 1.43517499e-05 - 8.42800000e-10 -1.42773992e-05 - 8.52800000e-10 1.39390192e-05 - 8.62800000e-10 -1.38282052e-05 - 8.72800000e-10 1.35332720e-05 - 8.82800000e-10 -1.33988187e-05 - 8.92800000e-10 1.31360780e-05 - 9.02800000e-10 -1.29870020e-05 - 9.12800000e-10 1.27484537e-05 - 9.22800000e-10 -1.25910299e-05 - 9.32800000e-10 1.23710090e-05 - 9.42800000e-10 -1.22095585e-05 - 9.52800000e-10 1.20040604e-05 - 9.62800000e-10 -1.18415246e-05 - 9.72800000e-10 1.16477172e-05 - 9.82800000e-10 -1.14860712e-05 - 9.92800000e-10 1.13019442e-05 - 1.00280000e-09 -1.11424911e-05 - 1.01280000e-09 1.09666084e-05 - 1.02280000e-09 -1.08101874e-05 - 1.03280000e-09 1.06415116e-05 - 1.04280000e-09 -1.04886439e-05 - 1.05280000e-09 1.03264143e-05 - 1.06280000e-09 -1.01774042e-05 - 1.07280000e-09 1.00210517e-05 - 1.08280000e-09 -9.87605735e-06 - 1.09280000e-09 9.72514526e-06 - 1.10280000e-09 -9.58422695e-06 - 1.11280000e-09 9.43841071e-06 - 1.12280000e-09 -9.30156383e-06 - 1.13280000e-09 9.16056303e-06 - 1.14280000e-09 -9.02774079e-06 - 1.15280000e-09 8.89132013e-06 - 1.16280000e-09 -8.76244881e-06 - 1.17280000e-09 8.63040506e-06 - 1.18280000e-09 -8.50539433e-06 - 1.19280000e-09 8.37754749e-06 - 1.20280000e-09 -8.25629736e-06 - 1.21280000e-09 8.13248451e-06 - 1.22280000e-09 -8.01488990e-06 - 1.23280000e-09 7.89496117e-06 - 1.24280000e-09 -7.78091494e-06 - 1.25280000e-09 7.66473063e-06 - 1.26280000e-09 -7.55412554e-06 - 1.27280000e-09 7.44155422e-06 - 1.28280000e-09 -7.33428425e-06 - 1.29280000e-09 7.22520127e-06 - 1.30280000e-09 -7.12116247e-06 - 1.31280000e-09 7.01544909e-06 - 1.32280000e-09 -6.91453993e-06 - 1.33280000e-09 6.81208267e-06 - 1.34280000e-09 -6.71420446e-06 - 1.35280000e-09 6.61489446e-06 - 1.36280000e-09 -6.51995139e-06 - 1.37280000e-09 6.42368417e-06 - 1.38280000e-09 -6.33158344e-06 - 1.39280000e-09 6.23825850e-06 - 1.40280000e-09 -6.14891024e-06 - 1.41280000e-09 6.05843085e-06 - 1.42280000e-09 -5.97174817e-06 - 1.43280000e-09 5.88402118e-06 - 1.44280000e-09 -5.79992000e-06 - 1.45280000e-09 5.71485565e-06 - 1.46280000e-09 -5.63325474e-06 - 1.47280000e-09 5.55076647e-06 - 1.48280000e-09 -5.47158728e-06 - 1.49280000e-09 5.39159165e-06 - 1.50280000e-09 -5.31475827e-06 - 1.51280000e-09 5.23717479e-06 - 1.52280000e-09 -5.16261385e-06 - 1.53280000e-09 5.08736485e-06 - 1.54280000e-09 -5.01500544e-06 - 1.55280000e-09 4.94201599e-06 - 1.56280000e-09 -4.87178954e-06 - 1.57280000e-09 4.80098734e-06 - 1.58280000e-09 -4.73282758e-06 - 1.59280000e-09 4.66414285e-06 - 1.60280000e-09 -4.59798569e-06 - 1.61280000e-09 4.53135104e-06 - 1.62280000e-09 -4.46713454e-06 - 1.63280000e-09 4.40248494e-06 - 1.64280000e-09 -4.34014921e-06 - 1.65280000e-09 4.27742183e-06 - 1.66280000e-09 -4.21690894e-06 - 1.67280000e-09 4.15604313e-06 - 1.68280000e-09 -4.09729707e-06 - 1.69280000e-09 4.03823423e-06 - 1.70280000e-09 -3.98120084e-06 - 1.71280000e-09 3.92388436e-06 - 1.72280000e-09 -3.86851124e-06 - 1.73280000e-09 3.81288648e-06 - 1.74280000e-09 -3.75912291e-06 - 1.75280000e-09 3.70513701e-06 - 1.76280000e-09 -3.65293401e-06 - 1.77280000e-09 3.60053592e-06 - 1.78280000e-09 -3.54984600e-06 - 1.79280000e-09 3.49898643e-06 - 1.80280000e-09 -3.44976368e-06 - 1.81280000e-09 3.40039490e-06 - 1.82280000e-09 -3.35259493e-06 - 1.83280000e-09 3.30467088e-06 - 1.84280000e-09 -3.25825066e-06 - 1.85280000e-09 3.21172679e-06 - 1.86280000e-09 -3.16664472e-06 - 1.87280000e-09 3.12147793e-06 - 1.88280000e-09 -3.07769371e-06 - 1.89280000e-09 3.03384239e-06 - 1.90280000e-09 -2.99131704e-06 - 1.91280000e-09 2.94874091e-06 - 1.92280000e-09 -2.90743663e-06 - 1.93280000e-09 2.86609674e-06 - 1.94280000e-09 -2.82597704e-06 - 1.95280000e-09 2.78583567e-06 - 1.96280000e-09 -2.74686516e-06 - 1.97280000e-09 2.70788585e-06 - 1.98280000e-09 -2.67003028e-06 - 1.99280000e-09 2.63217780e-06 - 2.00000000e-09 -2.57652890e-06 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/diff_ring_oscillator.sym b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/diff_ring_oscillator.sym deleted file mode 100644 index e632b156..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/run_0/diff_ring_oscillator.sym +++ /dev/null @@ -1,27 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {type=primitive -format="@name @pinlist @symname" -template="name=x1" -} -V {} -S {} -E {} -L 4 70 -20 90 -20 {} -L 4 70 20 90 20 {} -L 7 20 70 20 90 {} -L 7 -20 70 -20 90 {} -B 5 87.5 -22.5 92.5 -17.5 {name=Voplus dir=out} -B 5 17.5 87.5 22.5 92.5 {name=vdd dir=inout} -B 5 -22.5 87.5 -17.5 92.5 {name=gnd dir=inout} -B 5 87.5 17.5 92.5 22.5 {name=Vominus dir=out} -A 4 -1.666666666666714 1.666666666666714 71.68604389202189 287.5924245621816 360 {} -A 4 -30 27.5 40.69705149024927 42.51044707800085 94.97910584399833 {} -A 4 30 -27.5 40.69705149024927 222.5104470780009 94.97910584399833 {} -T {@symname} -40.5 -56 0 0 0.1 0.1 {} -T {@name} -40 -47 0 0 0.1 0.1 { -} -T {Voplus} 65 -24 0 1 0.2 0.2 {} -T {vdd} 5 64 2 1 0.2 0.2 {} -T {gnd} -35 64 2 1 0.2 0.2 {} -T {Vominus} 65 16 0 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/simulation_summary.csv b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/simulation_summary.csv deleted file mode 100644 index f0e1ddca..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/simulation_summary.csv +++ /dev/null @@ -1,2 +0,0 @@ -run,time_axis,vo_diff,frequency -run_0,"[0.000, 1.000e-13, 2.000e-13, …]","[1.501, 1.493, 1.488, …]",4.976e+08 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/simulation_summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/simulation_summary.md deleted file mode 100644 index fba78079..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/parameters/Frequency/simulation_summary.md +++ /dev/null @@ -1,5 +0,0 @@ -# Simulation Summary for Freq - -| run | time_axis | vo_diff | frequency | -| :-- | --------: | ------: | --------: | -| run_0 | [0.000, 1.000e-13, 2.000e-13, …] | [1.501, 1.493, 1.488, …] | 4.976e+08 | diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/summary.md deleted file mode 100644 index 13a3fa51..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-53-50/summary.md +++ /dev/null @@ -1,9 +0,0 @@ - -# CACE Summary for diff_ring_oscillator - -**netlist source**: schematic - -| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | -| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | -| Freq | ngspice | frequency | any | 0.498 GHz | any | 0.498 GHz | any | 0.498 GHz | Pass ✅ | - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/diff_oscillator_tb.sch deleted file mode 100644 index 7a5b911e..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/diff_oscillator_tb.sch +++ /dev/null @@ -1,42 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 0 -840 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -.ic V(Voplus)=1.2 -.control -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n -save all -let vo_diff = v(Vominus) -set wr_singlescale -wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/models/cornerMOSlv.lib mos_CACE\{corner\} - -.include CACE\{DUT_path\} - -.temp CACE\{temperature\} -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/frequency.png b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/frequency.png deleted file mode 100644 index 98cf514eceb1e104b3855a47188f5e39333f498a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15407 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 K(yu>w{{H|KyIQCK diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/.spiceinit b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/.spiceinit deleted file mode 100644 index 02b902fb..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/.spiceinit +++ /dev/null @@ -1,30 +0,0 @@ -* a custom spiceinit file for IHP-Open-PDK - -* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc -* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK -* export PDK=ihp-sg13g2 - -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice ) -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice ) -*echo $sourcepath - -*option tnom=28 -*option list - -* KLU solver still do not work correctly for every simulation -*option klu - -*option node -*option opts -*option warn=1 -*option maxwarns=10 -*option savecurrents - -*set ngbehavior=hsa -*set noinit - -* add OSDI -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi' - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/conditions.yaml b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/conditions.yaml deleted file mode 100644 index 8b95e613..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/conditions.yaml +++ /dev/null @@ -1,8 +0,0 @@ -DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice -N: 0 -PDK: ihp-sg13g2 -PDK_ROOT: /home/pedersen/IHP-Open-PDK -corner: tt -filename: diff_oscillator_tb -simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0 -temperature: '27' diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/diff_oscillator_tb.sch deleted file mode 100644 index b9a76f33..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/diff_oscillator_tb.sch +++ /dev/null @@ -1,42 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 0 -840 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -.ic V(Voplus)=1.2 -.control -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n -save all -let vo_diff = v(Vominus) -set wr_singlescale -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/diff_oscillator_tb_0.data vo_diff -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt - -.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice - -.temp 27 -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/diff_oscillator_tb_0.data b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/diff_oscillator_tb_0.data deleted file mode 100644 index 94a10bb1..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/diff_oscillator_tb_0.data +++ /dev/null @@ -1,208 +0,0 @@ - 0.00000000e+00 -3.01490490e-01 - 1.00000000e-13 -3.02202826e-01 - 2.00000000e-13 -3.03217377e-01 - 4.00000000e-13 -3.05487354e-01 - 8.00000000e-13 -3.10275218e-01 - 1.60000000e-12 -3.19403583e-01 - 3.20000000e-12 -3.36524442e-01 - 6.40000000e-12 -3.64521958e-01 - 1.28000000e-11 -3.98981227e-01 - 2.28000000e-11 -4.43228477e-01 - 3.28000000e-11 -4.93037785e-01 - 4.28000000e-11 -5.39656031e-01 - 5.28000000e-11 -5.82569960e-01 - 6.28000000e-11 -6.19247599e-01 - 7.28000000e-11 -6.50724716e-01 - 8.28000000e-11 -6.75840014e-01 - 9.28000000e-11 -6.95891563e-01 - 1.02800000e-10 -7.11431033e-01 - 1.12800000e-10 -7.23499559e-01 - 1.22800000e-10 -7.32486459e-01 - 1.32800000e-10 -7.39227962e-01 - 1.42800000e-10 -7.44106441e-01 - 1.52800000e-10 -7.47706778e-01 - 1.62800000e-10 -7.50297462e-01 - 1.72800000e-10 -7.52247704e-01 - 1.82800000e-10 -7.53705550e-01 - 1.92800000e-10 -7.54885573e-01 - 2.02800000e-10 -7.55847028e-01 - 2.12800000e-10 -7.56709052e-01 - 2.22800000e-10 -7.57478760e-01 - 2.32800000e-10 -7.58222730e-01 - 2.42800000e-10 -7.58922387e-01 - 2.52800000e-10 -7.59617923e-01 - 2.62800000e-10 -7.60280787e-01 - 2.72800000e-10 -7.60939179e-01 - 2.82800000e-10 -7.61562746e-01 - 2.92800000e-10 -7.62174903e-01 - 3.02800000e-10 -7.62747147e-01 - 3.12800000e-10 -7.63301297e-01 - 3.22800000e-10 -7.63811913e-01 - 3.32800000e-10 -7.64300339e-01 - 3.42800000e-10 -7.64744245e-01 - 3.52800000e-10 -7.65164667e-01 - 3.62800000e-10 -7.65541965e-01 - 3.72800000e-10 -7.65896671e-01 - 3.82800000e-10 -7.66211317e-01 - 3.92800000e-10 -7.66505656e-01 - 4.02800000e-10 -7.66763929e-01 - 4.12800000e-10 -7.67004885e-01 - 4.22800000e-10 -7.67214108e-01 - 4.32800000e-10 -7.67409200e-01 - 4.42800000e-10 -7.67576833e-01 - 4.52800000e-10 -7.67733389e-01 - 4.62800000e-10 -7.67866462e-01 - 4.72800000e-10 -7.67991198e-01 - 4.82800000e-10 -7.68096006e-01 - 4.92800000e-10 -7.68194826e-01 - 5.02800000e-10 -7.68276812e-01 - 5.12800000e-10 -7.68354753e-01 - 5.22800000e-10 -7.68418504e-01 - 5.32800000e-10 -7.68479766e-01 - 5.42800000e-10 -7.68529072e-01 - 5.52800000e-10 -7.68577103e-01 - 5.62800000e-10 -7.68615050e-01 - 5.72800000e-10 -7.68652640e-01 - 5.82800000e-10 -7.68681710e-01 - 5.92800000e-10 -7.68711097e-01 - 6.02800000e-10 -7.68733266e-01 - 6.12800000e-10 -7.68756227e-01 - 6.22800000e-10 -7.68773059e-01 - 6.32800000e-10 -7.68790999e-01 - 6.42800000e-10 -7.68803722e-01 - 6.52800000e-10 -7.68817744e-01 - 6.62800000e-10 -7.68827316e-01 - 6.72800000e-10 -7.68838283e-01 - 6.82800000e-10 -7.68845452e-01 - 6.92800000e-10 -7.68854035e-01 - 7.02800000e-10 -7.68859379e-01 - 7.12800000e-10 -7.68866101e-01 - 7.22800000e-10 -7.68870067e-01 - 7.32800000e-10 -7.68875334e-01 - 7.42800000e-10 -7.68878265e-01 - 7.52800000e-10 -7.68882392e-01 - 7.62800000e-10 -7.68884551e-01 - 7.72800000e-10 -7.68887781e-01 - 7.82800000e-10 -7.68889372e-01 - 7.92800000e-10 -7.68891893e-01 - 8.02800000e-10 -7.68893068e-01 - 8.12800000e-10 -7.68895026e-01 - 8.22800000e-10 -7.68895903e-01 - 8.32800000e-10 -7.68897411e-01 - 8.42800000e-10 -7.68898078e-01 - 8.52800000e-10 -7.68899224e-01 - 8.62800000e-10 -7.68899749e-01 - 8.72800000e-10 -7.68900600e-01 - 8.82800000e-10 -7.68901033e-01 - 8.92800000e-10 -7.68901643e-01 - 9.02800000e-10 -7.68902021e-01 - 9.12800000e-10 -7.68902432e-01 - 9.22800000e-10 -7.68902783e-01 - 9.32800000e-10 -7.68903027e-01 - 9.42800000e-10 -7.68903372e-01 - 9.52800000e-10 -7.68903474e-01 - 9.62800000e-10 -7.68903828e-01 - 9.72800000e-10 -7.68903809e-01 - 9.82800000e-10 -7.68904182e-01 - 9.92800000e-10 -7.68904059e-01 - 1.00280000e-09 -7.68904458e-01 - 1.01280000e-09 -7.68904244e-01 - 1.02280000e-09 -7.68904674e-01 - 1.03280000e-09 -7.68904379e-01 - 1.04280000e-09 -7.68904844e-01 - 1.05280000e-09 -7.68904478e-01 - 1.06280000e-09 -7.68904979e-01 - 1.07280000e-09 -7.68904549e-01 - 1.08280000e-09 -7.68905086e-01 - 1.09280000e-09 -7.68904598e-01 - 1.10280000e-09 -7.68905172e-01 - 1.11280000e-09 -7.68904632e-01 - 1.12280000e-09 -7.68905242e-01 - 1.13280000e-09 -7.68904654e-01 - 1.14280000e-09 -7.68905299e-01 - 1.15280000e-09 -7.68904667e-01 - 1.16280000e-09 -7.68905345e-01 - 1.17280000e-09 -7.68904673e-01 - 1.18280000e-09 -7.68905384e-01 - 1.19280000e-09 -7.68904675e-01 - 1.20280000e-09 -7.68905417e-01 - 1.21280000e-09 -7.68904674e-01 - 1.22280000e-09 -7.68905444e-01 - 1.23280000e-09 -7.68904671e-01 - 1.24280000e-09 -7.68905468e-01 - 1.25280000e-09 -7.68904665e-01 - 1.26280000e-09 -7.68905488e-01 - 1.27280000e-09 -7.68904659e-01 - 1.28280000e-09 -7.68905506e-01 - 1.29280000e-09 -7.68904652e-01 - 1.30280000e-09 -7.68905521e-01 - 1.31280000e-09 -7.68904645e-01 - 1.32280000e-09 -7.68905535e-01 - 1.33280000e-09 -7.68904638e-01 - 1.34280000e-09 -7.68905546e-01 - 1.35280000e-09 -7.68904632e-01 - 1.36280000e-09 -7.68905557e-01 - 1.37280000e-09 -7.68904625e-01 - 1.38280000e-09 -7.68905566e-01 - 1.39280000e-09 -7.68904619e-01 - 1.40280000e-09 -7.68905575e-01 - 1.41280000e-09 -7.68904613e-01 - 1.42280000e-09 -7.68905582e-01 - 1.43280000e-09 -7.68904607e-01 - 1.44280000e-09 -7.68905588e-01 - 1.45280000e-09 -7.68904602e-01 - 1.46280000e-09 -7.68905594e-01 - 1.47280000e-09 -7.68904598e-01 - 1.48280000e-09 -7.68905599e-01 - 1.49280000e-09 -7.68904594e-01 - 1.50280000e-09 -7.68905603e-01 - 1.51280000e-09 -7.68904590e-01 - 1.52280000e-09 -7.68905607e-01 - 1.53280000e-09 -7.68904587e-01 - 1.54280000e-09 -7.68905610e-01 - 1.55280000e-09 -7.68904585e-01 - 1.56280000e-09 -7.68905613e-01 - 1.57280000e-09 -7.68904582e-01 - 1.58280000e-09 -7.68905615e-01 - 1.59280000e-09 -7.68904581e-01 - 1.60280000e-09 -7.68905617e-01 - 1.61280000e-09 -7.68904579e-01 - 1.62280000e-09 -7.68905618e-01 - 1.63280000e-09 -7.68904578e-01 - 1.64280000e-09 -7.68905619e-01 - 1.65280000e-09 -7.68904578e-01 - 1.66280000e-09 -7.68905619e-01 - 1.67280000e-09 -7.68904577e-01 - 1.68280000e-09 -7.68905620e-01 - 1.69280000e-09 -7.68904578e-01 - 1.70280000e-09 -7.68905619e-01 - 1.71280000e-09 -7.68904578e-01 - 1.72280000e-09 -7.68905619e-01 - 1.73280000e-09 -7.68904579e-01 - 1.74280000e-09 -7.68905618e-01 - 1.75280000e-09 -7.68904580e-01 - 1.76280000e-09 -7.68905617e-01 - 1.77280000e-09 -7.68904581e-01 - 1.78280000e-09 -7.68905615e-01 - 1.79280000e-09 -7.68904582e-01 - 1.80280000e-09 -7.68905614e-01 - 1.81280000e-09 -7.68904584e-01 - 1.82280000e-09 -7.68905612e-01 - 1.83280000e-09 -7.68904586e-01 - 1.84280000e-09 -7.68905610e-01 - 1.85280000e-09 -7.68904588e-01 - 1.86280000e-09 -7.68905607e-01 - 1.87280000e-09 -7.68904591e-01 - 1.88280000e-09 -7.68905605e-01 - 1.89280000e-09 -7.68904593e-01 - 1.90280000e-09 -7.68905602e-01 - 1.91280000e-09 -7.68904596e-01 - 1.92280000e-09 -7.68905599e-01 - 1.93280000e-09 -7.68904599e-01 - 1.94280000e-09 -7.68905596e-01 - 1.95280000e-09 -7.68904602e-01 - 1.96280000e-09 -7.68905593e-01 - 1.97280000e-09 -7.68904606e-01 - 1.98280000e-09 -7.68905590e-01 - 1.99280000e-09 -7.68904609e-01 - 2.00000000e-09 -7.68905584e-01 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/diff_ring_oscillator.sym b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/diff_ring_oscillator.sym deleted file mode 100644 index e632b156..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/run_0/diff_ring_oscillator.sym +++ /dev/null @@ -1,27 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {type=primitive -format="@name @pinlist @symname" -template="name=x1" -} -V {} -S {} -E {} -L 4 70 -20 90 -20 {} -L 4 70 20 90 20 {} -L 7 20 70 20 90 {} -L 7 -20 70 -20 90 {} -B 5 87.5 -22.5 92.5 -17.5 {name=Voplus dir=out} -B 5 17.5 87.5 22.5 92.5 {name=vdd dir=inout} -B 5 -22.5 87.5 -17.5 92.5 {name=gnd dir=inout} -B 5 87.5 17.5 92.5 22.5 {name=Vominus dir=out} -A 4 -1.666666666666714 1.666666666666714 71.68604389202189 287.5924245621816 360 {} -A 4 -30 27.5 40.69705149024927 42.51044707800085 94.97910584399833 {} -A 4 30 -27.5 40.69705149024927 222.5104470780009 94.97910584399833 {} -T {@symname} -40.5 -56 0 0 0.1 0.1 {} -T {@name} -40 -47 0 0 0.1 0.1 { -} -T {Voplus} 65 -24 0 1 0.2 0.2 {} -T {vdd} 5 64 2 1 0.2 0.2 {} -T {gnd} -35 64 2 1 0.2 0.2 {} -T {Vominus} 65 16 0 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/simulation_summary.csv b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/simulation_summary.csv deleted file mode 100644 index acee6e8f..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/simulation_summary.csv +++ /dev/null @@ -1,2 +0,0 @@ -run,time_axis,vo_diff,frequency -run_0,"[0.000, 1.000e-13, 2.000e-13, …]","[-3.015e-01, -3.022e-01, -3.032e-01, …]",4.976e+08 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/simulation_summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/simulation_summary.md deleted file mode 100644 index dc805474..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/parameters/Frequency/simulation_summary.md +++ /dev/null @@ -1,5 +0,0 @@ -# Simulation Summary for Freq - -| run | time_axis | vo_diff | frequency | -| :-- | --------: | ------: | --------: | -| run_0 | [0.000, 1.000e-13, 2.000e-13, …] | [-3.015e-01, -3.022e-01, -3.032e-01, …] | 4.976e+08 | diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/summary.md deleted file mode 100644 index 13a3fa51..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_14-54-56/summary.md +++ /dev/null @@ -1,9 +0,0 @@ - -# CACE Summary for diff_ring_oscillator - -**netlist source**: schematic - -| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | -| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | -| Freq | ngspice | frequency | any | 0.498 GHz | any | 0.498 GHz | any | 0.498 GHz | Pass ✅ | - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/diff_oscillator_tb.sch deleted file mode 100644 index 8fa9c421..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/diff_oscillator_tb.sch +++ /dev/null @@ -1,61 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 50 -1230 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -* Keep this if your manual run has it — parity matters -.include diff_oscillator_tb.save - -.ic V(Voplus)=1.2 -.control -* Stability & parity options -set noaskquit -set numdgt=12 - -* Save vectors and run -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n - -* Define explicit vectors (avoid V(...) on calculated vectors) -let vo_p = v(Voplus) -let vo_m = v(Vominus) -let vo_diff = vo_p - vo_m - -* --- Main file that CACE reads: 2 columns (time, vo_diff) --- -set wr_singlescale -wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff - -* --- Extra debug file (CACE ignores): 4 columns w/ names --- -set wr_vecnames -wrdata CACE\{simpath\}/debug_CACE\{N\}.dat time vo_p vo_m vo_diff -unset wr_vecnames - -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/models/cornerMOSlv.lib mos_CACE\{corner\} - -.include CACE\{DUT_path\} - -.temp CACE\{temperature\} -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/.spiceinit b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/.spiceinit deleted file mode 100644 index 02b902fb..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/.spiceinit +++ /dev/null @@ -1,30 +0,0 @@ -* a custom spiceinit file for IHP-Open-PDK - -* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc -* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK -* export PDK=ihp-sg13g2 - -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice ) -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice ) -*echo $sourcepath - -*option tnom=28 -*option list - -* KLU solver still do not work correctly for every simulation -*option klu - -*option node -*option opts -*option warn=1 -*option maxwarns=10 -*option savecurrents - -*set ngbehavior=hsa -*set noinit - -* add OSDI -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi' - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/conditions.yaml b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/conditions.yaml deleted file mode 100644 index ae3cb591..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/conditions.yaml +++ /dev/null @@ -1,8 +0,0 @@ -DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice -N: 0 -PDK: ihp-sg13g2 -PDK_ROOT: /home/pedersen/IHP-Open-PDK -corner: tt -filename: diff_oscillator_tb -simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0 -temperature: '27' diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/diff_oscillator_tb.sch deleted file mode 100644 index 8070d016..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/diff_oscillator_tb.sch +++ /dev/null @@ -1,61 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 50 -1230 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -* Keep this if your manual run has it — parity matters -.include diff_oscillator_tb.save - -.ic V(Voplus)=1.2 -.control -* Stability & parity options -set noaskquit -set numdgt=12 - -* Save vectors and run -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n - -* Define explicit vectors (avoid V(...) on calculated vectors) -let vo_p = v(Voplus) -let vo_m = v(Vominus) -let vo_diff = vo_p - vo_m - -* --- Main file that CACE reads: 2 columns (time, vo_diff) --- -set wr_singlescale -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/diff_oscillator_tb_0.data vo_diff - -* --- Extra debug file (CACE ignores): 4 columns w/ names --- -set wr_vecnames -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/debug_0.dat time vo_p vo_m vo_diff -unset wr_vecnames - -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt - -.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice - -.temp 27 -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/diff_ring_oscillator.sym b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/diff_ring_oscillator.sym deleted file mode 100644 index e632b156..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/parameters/Frequency/run_0/diff_ring_oscillator.sym +++ /dev/null @@ -1,27 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {type=primitive -format="@name @pinlist @symname" -template="name=x1" -} -V {} -S {} -E {} -L 4 70 -20 90 -20 {} -L 4 70 20 90 20 {} -L 7 20 70 20 90 {} -L 7 -20 70 -20 90 {} -B 5 87.5 -22.5 92.5 -17.5 {name=Voplus dir=out} -B 5 17.5 87.5 22.5 92.5 {name=vdd dir=inout} -B 5 -22.5 87.5 -17.5 92.5 {name=gnd dir=inout} -B 5 87.5 17.5 92.5 22.5 {name=Vominus dir=out} -A 4 -1.666666666666714 1.666666666666714 71.68604389202189 287.5924245621816 360 {} -A 4 -30 27.5 40.69705149024927 42.51044707800085 94.97910584399833 {} -A 4 30 -27.5 40.69705149024927 222.5104470780009 94.97910584399833 {} -T {@symname} -40.5 -56 0 0 0.1 0.1 {} -T {@name} -40 -47 0 0 0.1 0.1 { -} -T {Voplus} 65 -24 0 1 0.2 0.2 {} -T {vdd} 5 64 2 1 0.2 0.2 {} -T {gnd} -35 64 2 1 0.2 0.2 {} -T {Vominus} 65 16 0 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/summary.md deleted file mode 100644 index 6072c5cc..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-40/summary.md +++ /dev/null @@ -1,9 +0,0 @@ - -# CACE Summary for diff_ring_oscillator - -**netlist source**: schematic - -| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | -| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | -| Freq | ngspice | frequency | any | ​ | any | ​ | any | ​ | Error ❗ | - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/diff_oscillator_tb.sch deleted file mode 100644 index 5c9d54d2..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/diff_oscillator_tb.sch +++ /dev/null @@ -1,60 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 50 -1230 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -* Keep this if your manual run has it — parity matters - -.ic V(Voplus)=1.2 -.control -* Stability & parity options -set noaskquit -set numdgt=12 - -* Save vectors and run -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n - -* Define explicit vectors (avoid V(...) on calculated vectors) -let vo_p = v(Voplus) -let vo_m = v(Vominus) -let vo_diff = vo_p - vo_m - -* --- Main file that CACE reads: 2 columns (time, vo_diff) --- -set wr_singlescale -wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff - -* --- Extra debug file (CACE ignores): 4 columns w/ names --- -set wr_vecnames -wrdata CACE\{simpath\}/debug_CACE\{N\}.dat time vo_p vo_m vo_diff -unset wr_vecnames - -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/models/cornerMOSlv.lib mos_CACE\{corner\} - -.include CACE\{DUT_path\} - -.temp CACE\{temperature\} -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/frequency.png b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/frequency.png deleted file mode 100644 index f8b9f9a1995d7312aa812aff345a01896b3ac690..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16308 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 NmXN=nbNA8n{{ynKz!Lxf diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/.spiceinit b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/.spiceinit deleted file mode 100644 index 02b902fb..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/.spiceinit +++ /dev/null @@ -1,30 +0,0 @@ -* a custom spiceinit file for IHP-Open-PDK - -* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc -* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK -* export PDK=ihp-sg13g2 - -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice ) -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice ) -*echo $sourcepath - -*option tnom=28 -*option list - -* KLU solver still do not work correctly for every simulation -*option klu - -*option node -*option opts -*option warn=1 -*option maxwarns=10 -*option savecurrents - -*set ngbehavior=hsa -*set noinit - -* add OSDI -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi' - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/conditions.yaml b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/conditions.yaml deleted file mode 100644 index f855aa1f..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/conditions.yaml +++ /dev/null @@ -1,8 +0,0 @@ -DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice -N: 0 -PDK: ihp-sg13g2 -PDK_ROOT: /home/pedersen/IHP-Open-PDK -corner: tt -filename: diff_oscillator_tb -simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0 -temperature: '27' diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/diff_oscillator_tb.sch deleted file mode 100644 index a8e9d5b2..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/diff_oscillator_tb.sch +++ /dev/null @@ -1,60 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 50 -1230 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -* Keep this if your manual run has it — parity matters - -.ic V(Voplus)=1.2 -.control -* Stability & parity options -set noaskquit -set numdgt=12 - -* Save vectors and run -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n - -* Define explicit vectors (avoid V(...) on calculated vectors) -let vo_p = v(Voplus) -let vo_m = v(Vominus) -let vo_diff = vo_p - vo_m - -* --- Main file that CACE reads: 2 columns (time, vo_diff) --- -set wr_singlescale -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/diff_oscillator_tb_0.data vo_diff - -* --- Extra debug file (CACE ignores): 4 columns w/ names --- -set wr_vecnames -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/debug_0.dat time vo_p vo_m vo_diff -unset wr_vecnames - -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt - -.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice - -.temp 27 -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/diff_oscillator_tb_0.data b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/diff_oscillator_tb_0.data deleted file mode 100644 index 4a0b5ac2..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/diff_oscillator_tb_0.data +++ /dev/null @@ -1,208 +0,0 @@ - 0.000000000000e+00 1.501490489952e+00 - 1.000000000000e-13 1.493059332822e+00 - 2.000000000000e-13 1.487629932209e+00 - 4.000000000000e-13 1.478353768016e+00 - 8.000000000000e-13 1.461646802601e+00 - 1.600000000000e-12 1.428565592219e+00 - 3.200000000000e-12 1.366984627607e+00 - 6.400000000000e-12 1.257824602026e+00 - 1.280000000000e-11 1.083291838740e+00 - 2.280000000000e-11 8.710354931983e-01 - 3.280000000000e-11 7.012548342612e-01 - 4.280000000000e-11 5.692686657539e-01 - 5.280000000000e-11 4.674728734214e-01 - 6.280000000000e-11 3.881336879207e-01 - 7.280000000000e-11 3.259633362701e-01 - 8.280000000000e-11 2.758334023214e-01 - 9.280000000000e-11 2.352724747795e-01 - 1.028000000000e-10 2.014490165507e-01 - 1.128000000000e-10 1.729764887031e-01 - 1.228000000000e-10 1.482579790988e-01 - 1.328000000000e-10 1.268516151810e-01 - 1.428000000000e-10 1.078527366224e-01 - 1.528000000000e-10 9.130497780307e-02 - 1.628000000000e-10 7.664902855206e-02 - 1.728000000000e-10 6.408058136449e-02 - 1.828000000000e-10 5.311114526166e-02 - 1.928000000000e-10 4.391416298544e-02 - 2.028000000000e-10 3.598964843066e-02 - 2.128000000000e-10 2.948572457647e-02 - 2.228000000000e-10 2.391966019122e-02 - 2.328000000000e-10 1.944682229659e-02 - 2.428000000000e-10 1.562242854644e-02 - 2.528000000000e-10 1.262117501377e-02 - 2.628000000000e-10 1.003964957631e-02 - 2.728000000000e-10 8.072285909579e-03 - 2.828000000000e-10 6.353631794527e-03 - 2.928000000000e-10 5.094126301006e-03 - 3.028000000000e-10 3.960774252123e-03 - 3.128000000000e-10 3.175158522702e-03 - 3.228000000000e-10 2.431038392751e-03 - 3.328000000000e-10 1.956458525826e-03 - 3.428000000000e-10 1.466860117281e-03 - 3.528000000000e-10 1.192816155690e-03 - 3.628000000000e-10 8.673101959982e-04 - 3.728000000000e-10 7.204192692291e-04 - 3.828000000000e-10 4.994750120545e-04 - 3.928000000000e-10 4.318861942222e-04 - 4.028000000000e-10 2.769565308169e-04 - 4.128000000000e-10 2.579568886254e-04 - 4.228000000000e-10 1.444337625361e-04 - 4.328000000000e-10 1.545855356601e-04 - 4.428000000000e-10 6.695352871566e-05 - 4.528000000000e-10 9.411428076378e-05 - 4.628000000000e-10 2.269962569268e-05 - 4.728000000000e-10 5.938071020783e-05 - 4.828000000000e-10 -1.786122408753e-06 - 4.928000000000e-10 3.985853511801e-05 - 5.028000000000e-10 -1.470836099826e-05 - 5.128000000000e-10 2.916907092532e-05 - 5.228000000000e-10 -2.100642431524e-05 - 5.328000000000e-10 2.349752400843e-05 - 5.428000000000e-10 -2.361221195224e-05 - 5.528000000000e-10 2.059661099585e-05 - 5.628000000000e-10 -2.423734279522e-05 - 5.728000000000e-10 1.916628093812e-05 - 5.828000000000e-10 -2.386067200999e-05 - 5.928000000000e-10 1.847151578238e-05 - 6.028000000000e-10 -2.302712873670e-05 - 6.128000000000e-10 1.810929381141e-05 - 6.228000000000e-10 -2.202891751879e-05 - 6.328000000000e-10 1.786810534277e-05 - 6.428000000000e-10 -2.101407922339e-05 - 6.528000000000e-10 1.764434272822e-05 - 6.628000000000e-10 -2.005063535315e-05 - 6.728000000000e-10 1.739328754791e-05 - 6.828000000000e-10 -1.916385916301e-05 - 6.928000000000e-10 1.710091054175e-05 - 7.028000000000e-10 -1.835747965595e-05 - 7.128000000000e-10 1.676803280681e-05 - 7.228000000000e-10 -1.762541197881e-05 - 7.328000000000e-10 1.640171764550e-05 - 7.428000000000e-10 -1.695799551626e-05 - 7.528000000000e-10 1.601081233293e-05 - 7.628000000000e-10 -1.634511571857e-05 - 7.728000000000e-10 1.560381375043e-05 - 7.828000000000e-10 -1.577760799520e-05 - 7.928000000000e-10 1.518799157274e-05 - 8.028000000000e-10 -1.524775235184e-05 - 8.128000000000e-10 1.476915897591e-05 - 8.228000000000e-10 -1.474931656797e-05 - 8.328000000000e-10 1.435174987197e-05 - 8.428000000000e-10 -1.427739921545e-05 - 8.528000000000e-10 1.393901916680e-05 - 8.628000000000e-10 -1.382820520168e-05 - 8.728000000000e-10 1.353327195985e-05 - 8.828000000000e-10 -1.339881866980e-05 - 8.928000000000e-10 1.313607799325e-05 - 9.028000000000e-10 -1.298700201535e-05 - 9.128000000000e-10 1.274845373045e-05 - 9.228000000000e-10 -1.259102994633e-05 - 9.328000000000e-10 1.237100900031e-05 - 9.428000000000e-10 -1.220955849468e-05 - 9.528000000000e-10 1.200406044899e-05 - 9.628000000000e-10 -1.184152464995e-05 - 9.728000000000e-10 1.164771719997e-05 - 9.828000000000e-10 -1.148607117096e-05 - 9.928000000000e-10 1.130194420718e-05 - 1.002800000000e-09 -1.114249112399e-05 - 1.012800000000e-09 1.096660837263e-05 - 1.022800000000e-09 -1.081018744209e-05 - 1.032800000000e-09 1.064151162311e-05 - 1.042800000000e-09 -1.048864387188e-05 - 1.052800000000e-09 1.032641430831e-05 - 1.062800000000e-09 -1.017740419751e-05 - 1.072800000000e-09 1.002105167147e-05 - 1.082800000000e-09 -9.876057346259e-06 - 1.092800000000e-09 9.725145261541e-06 - 1.102800000000e-09 -9.584226945858e-06 - 1.112800000000e-09 9.438410707774e-06 - 1.122800000000e-09 -9.301563827502e-06 - 1.132800000000e-09 9.160563030908e-06 - 1.142800000000e-09 -9.027740791145e-06 - 1.152800000000e-09 8.891320125715e-06 - 1.162800000000e-09 -8.762448812982e-06 - 1.172800000000e-09 8.630405064824e-06 - 1.182800000000e-09 -8.505394331504e-06 - 1.192800000000e-09 8.377547491611e-06 - 1.202800000000e-09 -8.256297357567e-06 - 1.212800000000e-09 8.132484513035e-06 - 1.222800000000e-09 -8.014889896324e-06 - 1.232800000000e-09 7.894961171484e-06 - 1.242800000000e-09 -7.780914935585e-06 - 1.252800000000e-09 7.664730634294e-06 - 1.262800000000e-09 -7.554125537435e-06 - 1.272800000000e-09 7.441554215393e-06 - 1.282800000000e-09 -7.334284250926e-06 - 1.292800000000e-09 7.225201268501e-06 - 1.302800000000e-09 -7.121162471257e-06 - 1.312800000000e-09 7.015449091319e-06 - 1.322800000000e-09 -6.914539934288e-06 - 1.332800000000e-09 6.812082669394e-06 - 1.342800000000e-09 -6.714204455416e-06 - 1.352800000000e-09 6.614894461632e-06 - 1.362800000000e-09 -6.519951391781e-06 - 1.372800000000e-09 6.423684174472e-06 - 1.382800000000e-09 -6.331583441765e-06 - 1.392800000000e-09 6.238258495772e-06 - 1.402800000000e-09 -6.148910241865e-06 - 1.412800000000e-09 6.058430853551e-06 - 1.422800000000e-09 -5.971748166966e-06 - 1.432800000000e-09 5.884021181624e-06 - 1.442800000000e-09 -5.799920003269e-06 - 1.452800000000e-09 5.714855647487e-06 - 1.462800000000e-09 -5.633254736237e-06 - 1.472800000000e-09 5.550766467022e-06 - 1.482800000000e-09 -5.471587278483e-06 - 1.492800000000e-09 5.391591650694e-06 - 1.502800000000e-09 -5.314758271147e-06 - 1.512800000000e-09 5.237174787509e-06 - 1.522800000000e-09 -5.162613846865e-06 - 1.532800000000e-09 5.087364853162e-06 - 1.542800000000e-09 -5.015005435038e-06 - 1.552800000000e-09 4.942015990217e-06 - 1.562800000000e-09 -4.871789542116e-06 - 1.572800000000e-09 4.800987341902e-06 - 1.582800000000e-09 -4.732827582177e-06 - 1.592800000000e-09 4.664142846167e-06 - 1.602800000000e-09 -4.597985687416e-06 - 1.612800000000e-09 4.531351042836e-06 - 1.622800000000e-09 -4.467134543940e-06 - 1.632800000000e-09 4.402484940158e-06 - 1.642800000000e-09 -4.340149208248e-06 - 1.652800000000e-09 4.277421828847e-06 - 1.662800000000e-09 -4.216908940147e-06 - 1.672800000000e-09 4.156043125314e-06 - 1.682800000000e-09 -4.097297067740e-06 - 1.692800000000e-09 4.038234226900e-06 - 1.702800000000e-09 -3.981200836667e-06 - 1.712800000000e-09 3.923884363544e-06 - 1.722800000000e-09 -3.868511237570e-06 - 1.732800000000e-09 3.812886476329e-06 - 1.742800000000e-09 -3.759122911395e-06 - 1.752800000000e-09 3.705137014531e-06 - 1.762800000000e-09 -3.652934007503e-06 - 1.772800000000e-09 3.600535924630e-06 - 1.782800000000e-09 -3.549846003148e-06 - 1.792800000000e-09 3.498986428596e-06 - 1.802800000000e-09 -3.449763679053e-06 - 1.812800000000e-09 3.400394904207e-06 - 1.822800000000e-09 -3.352594933781e-06 - 1.832800000000e-09 3.304670882387e-06 - 1.842800000000e-09 -3.258250656057e-06 - 1.852800000000e-09 3.211726785857e-06 - 1.862800000000e-09 -3.166644716113e-06 - 1.872800000000e-09 3.121477931800e-06 - 1.882800000000e-09 -3.077693713549e-06 - 1.892800000000e-09 3.033842391531e-06 - 1.902800000000e-09 -2.991317038625e-06 - 1.912800000000e-09 2.948740905895e-06 - 1.922800000000e-09 -2.907436633337e-06 - 1.932800000000e-09 2.866096736276e-06 - 1.942800000000e-09 -2.825977035048e-06 - 1.952800000000e-09 2.785835670593e-06 - 1.962800000000e-09 -2.746865162440e-06 - 1.972800000000e-09 2.707885854991e-06 - 1.982800000000e-09 -2.670030278207e-06 - 1.992800000000e-09 2.632177803608e-06 - 2.000000000000e-09 -2.576528895126e-06 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/diff_ring_oscillator.sym b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/diff_ring_oscillator.sym deleted file mode 100644 index e632b156..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/run_0/diff_ring_oscillator.sym +++ /dev/null @@ -1,27 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {type=primitive -format="@name @pinlist @symname" -template="name=x1" -} -V {} -S {} -E {} -L 4 70 -20 90 -20 {} -L 4 70 20 90 20 {} -L 7 20 70 20 90 {} -L 7 -20 70 -20 90 {} -B 5 87.5 -22.5 92.5 -17.5 {name=Voplus dir=out} -B 5 17.5 87.5 22.5 92.5 {name=vdd dir=inout} -B 5 -22.5 87.5 -17.5 92.5 {name=gnd dir=inout} -B 5 87.5 17.5 92.5 22.5 {name=Vominus dir=out} -A 4 -1.666666666666714 1.666666666666714 71.68604389202189 287.5924245621816 360 {} -A 4 -30 27.5 40.69705149024927 42.51044707800085 94.97910584399833 {} -A 4 30 -27.5 40.69705149024927 222.5104470780009 94.97910584399833 {} -T {@symname} -40.5 -56 0 0 0.1 0.1 {} -T {@name} -40 -47 0 0 0.1 0.1 { -} -T {Voplus} 65 -24 0 1 0.2 0.2 {} -T {vdd} 5 64 2 1 0.2 0.2 {} -T {gnd} -35 64 2 1 0.2 0.2 {} -T {Vominus} 65 16 0 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/simulation_summary.csv b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/simulation_summary.csv deleted file mode 100644 index f0e1ddca..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/simulation_summary.csv +++ /dev/null @@ -1,2 +0,0 @@ -run,time_axis,vo_diff,frequency -run_0,"[0.000, 1.000e-13, 2.000e-13, …]","[1.501, 1.493, 1.488, …]",4.976e+08 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/simulation_summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/simulation_summary.md deleted file mode 100644 index fba78079..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/parameters/Frequency/simulation_summary.md +++ /dev/null @@ -1,5 +0,0 @@ -# Simulation Summary for Freq - -| run | time_axis | vo_diff | frequency | -| :-- | --------: | ------: | --------: | -| run_0 | [0.000, 1.000e-13, 2.000e-13, …] | [1.501, 1.493, 1.488, …] | 4.976e+08 | diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/summary.md deleted file mode 100644 index 13a3fa51..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-04-51/summary.md +++ /dev/null @@ -1,9 +0,0 @@ - -# CACE Summary for diff_ring_oscillator - -**netlist source**: schematic - -| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | -| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | -| Freq | ngspice | frequency | any | 0.498 GHz | any | 0.498 GHz | any | 0.498 GHz | Pass ✅ | - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/parameters/Frequency/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/parameters/Frequency/diff_oscillator_tb.sch deleted file mode 100644 index 2816ca3f..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/parameters/Frequency/diff_oscillator_tb.sch +++ /dev/null @@ -1,65 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -N 390 -280 390 -250 {lab=GND} -N 390 -370 390 -340 {lab=vdd} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 10 -1170 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -* Keep this if your manual run has it — parity matters - -.ic V(Voplus)=1.2 -.control -* Stability & parity options -set noaskquit -set numdgt=12 - -* Save vectors and run -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n - -* Define explicit vectors (avoid V(...) on calculated vectors) -let vo_p = v(Voplus) -let vo_m = v(Vominus) -let vo_diff = vo_p - vo_m - -* --- Main file that CACE reads: 2 columns (time, vo_diff) --- -set wr_singlescale -wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff - -* --- Extra debug file (CACE ignores): 4 columns w/ names --- -set wr_vecnames -wrdata CACE\{simpath\}/debug_CACE\{N\}.dat time vo_p vo_m vo_diff -unset wr_vecnames - -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/models/cornerMOSlv.lib mos_CACE\{corner\} - -.include CACE\{DUT_path\} - -.temp CACE\{temperature\} -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} -C {vsource.sym} 390 -310 0 0 {name=V1 value=1.2 savecurrent=false} -C {gnd.sym} 390 -250 0 0 {name=l1 lab=GND} -C {lab_pin.sym} 390 -370 2 0 {name=p5 sig_type=std_logic lab=vdd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/parameters/Frequency/frequency.png b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-20_15-27-09/parameters/Frequency/frequency.png deleted file mode 100644 index 50dc9b77b8188075160763b47b30286c60beebd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44016 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%0D~44mt3o7Ku+D5;ItLY*AO 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%0D~44mt3o7Ku+D5;ItLY*AO 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%0D~44mt3o7Ku+D5;ItLY*AO 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%0D~44mt3o7Ku+D5;ItLY*AO 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 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/.spiceinit b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/.spiceinit deleted file mode 100644 index 02b902fb..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/.spiceinit +++ /dev/null @@ -1,30 +0,0 @@ -* a custom spiceinit file for IHP-Open-PDK - -* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc -* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK -* export PDK=ihp-sg13g2 - -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice ) -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice ) -*echo $sourcepath - -*option tnom=28 -*option list - -* KLU solver still do not work correctly for every simulation -*option klu - -*option node -*option opts -*option warn=1 -*option maxwarns=10 -*option savecurrents - -*set ngbehavior=hsa -*set noinit - -* add OSDI -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi' - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/conditions.yaml b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/conditions.yaml deleted file mode 100644 index 04ec32c2..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/conditions.yaml +++ /dev/null @@ -1,8 +0,0 @@ -DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice -N: 0 -PDK: ihp-sg13g2 -PDK_ROOT: /home/pedersen/IHP-Open-PDK -corner: tt -filename: diff_oscillator_tb -simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0 -temperature: '27' diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/diff_oscillator_tb.sch deleted file mode 100644 index 8f8f4675..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/diff_oscillator_tb.sch +++ /dev/null @@ -1,65 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -N 390 -280 390 -250 {lab=GND} -N 390 -370 390 -340 {lab=vdd} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 10 -1170 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -* Keep this if your manual run has it — parity matters - -.ic V(Voplus)=1.2 -.control -* Stability & parity options -set noaskquit -set numdgt=12 - -* Save vectors and run -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n 160p - -* Define explicit vectors (avoid V(...) on calculated vectors) -let vo_p = v(Voplus) -let vo_m = v(Vominus) -let vo_diff = vo_p - vo_m - -* --- Main file that CACE reads: 2 columns (time, vo_diff) --- -set wr_singlescale -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/diff_oscillator_tb_0.data vo_diff - -* --- Extra debug file (CACE ignores): 4 columns w/ names --- -set wr_vecnames -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/debug_0.dat time vo_p vo_m vo_diff -unset wr_vecnames - -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt - -.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice - -.temp 27 -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} -C {vsource.sym} 390 -310 0 0 {name=V1 value=1.2 savecurrent=false} -C {gnd.sym} 390 -250 0 0 {name=l1 lab=GND} -C {lab_pin.sym} 390 -370 2 0 {name=p5 sig_type=std_logic lab=vdd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/diff_oscillator_tb_0.data b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/diff_oscillator_tb_0.data deleted file mode 100644 index b960892f..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/diff_oscillator_tb_0.data +++ /dev/null @@ -1,185 +0,0 @@ - 1.628000000000e-10 -2.292252894521e-02 - 1.728000000000e-10 -1.721878995476e-01 - 1.828000000000e-10 -3.003971530482e-01 - 1.928000000000e-10 -4.209827688535e-01 - 2.028000000000e-10 -5.322027853128e-01 - 2.128000000000e-10 -5.791583227387e-01 - 2.228000000000e-10 -5.110033194175e-01 - 2.328000000000e-10 -3.457576287601e-01 - 2.428000000000e-10 -1.607196798900e-01 - 2.528000000000e-10 1.365547887835e-02 - 2.628000000000e-10 1.638016925338e-01 - 2.728000000000e-10 2.919305498126e-01 - 2.828000000000e-10 4.124239288433e-01 - 2.928000000000e-10 5.263166298848e-01 - 3.028000000000e-10 5.824106149717e-01 - 3.128000000000e-10 5.252174273130e-01 - 3.228000000000e-10 3.651459872532e-01 - 3.328000000000e-10 1.795084214438e-01 - 3.428000000000e-10 3.226267600252e-03 - 3.528000000000e-10 -1.496702035742e-01 - 3.628000000000e-10 -2.792887178681e-01 - 3.728000000000e-10 -4.000019021719e-01 - 3.828000000000e-10 -5.160190704246e-01 - 3.928000000000e-10 -5.816500208715e-01 - 4.028000000000e-10 -5.372846837038e-01 - 4.128000000000e-10 -3.848834507397e-01 - 4.228000000000e-10 -1.993014483184e-01 - 4.328000000000e-10 -2.125168120944e-02 - 4.428000000000e-10 1.345897939599e-01 - 4.528000000000e-10 2.660516467047e-01 - 4.628000000000e-10 3.871267719337e-01 - 4.728000000000e-10 5.047282820024e-01 - 4.828000000000e-10 5.793062880329e-01 - 4.928000000000e-10 5.480670992790e-01 - 5.028000000000e-10 4.046247574272e-01 - 5.128000000000e-10 2.194567139019e-01 - 5.228000000000e-10 3.978854030163e-02 - 5.328000000000e-10 -1.190134240033e-01 - 5.428000000000e-10 -2.525512770557e-01 - 5.528000000000e-10 -3.741228468393e-01 - 5.628000000000e-10 -4.927999203803e-01 - 5.728000000000e-10 -5.755235861382e-01 - 5.828000000000e-10 -5.574109039140e-01 - 5.928000000000e-10 -4.240101965476e-01 - 6.028000000000e-10 -2.397070733991e-01 - 6.128000000000e-10 -5.859311656156e-02 - 6.228000000000e-10 1.031069489747e-01 - 6.328000000000e-10 2.389202178782e-01 - 6.428000000000e-10 3.611164053835e-01 - 6.528000000000e-10 4.804511503358e-01 - 6.628000000000e-10 5.703927182427e-01 - 6.728000000000e-10 5.651995411624e-01 - 6.828000000000e-10 4.426884649777e-01 - 6.928000000000e-10 2.598493744117e-01 - 7.028000000000e-10 7.747657769560e-02 - 7.128000000000e-10 -8.699618736653e-02 - 7.228000000000e-10 -2.252447884331e-01 - 7.328000000000e-10 -3.481970680463e-01 - 7.428000000000e-10 -4.678842164117e-01 - 7.528000000000e-10 -5.640875390474e-01 - 7.628000000000e-10 -5.714336476059e-01 - 7.728000000000e-10 -4.604185473907e-01 - 7.828000000000e-10 -2.797750138125e-01 - 7.928000000000e-10 -9.633858138806e-02 - 8.028000000000e-10 7.073777814255e-02 - 8.128000000000e-10 2.115493094061e-01 - 8.228000000000e-10 3.353876046363e-01 - 8.328000000000e-10 4.552524923411e-01 - 8.428000000000e-10 5.567938616314e-01 - 8.528000000000e-10 5.762058661922e-01 - 8.628000000000e-10 4.770908355033e-01 - 8.728000000000e-10 2.994880974607e-01 - 8.828000000000e-10 1.151828864331e-01 - 8.928000000000e-10 -5.431208395594e-02 - 9.028000000000e-10 -1.977861602727e-01 - 9.128000000000e-10 -3.226531529049e-01 - 9.228000000000e-10 -4.427347421602e-01 - 9.328000000000e-10 -5.488327643130e-01 - 9.428000000000e-10 -5.797041909504e-01 - 9.528000000000e-10 -4.927265308101e-01 - 9.628000000000e-10 -3.191097454976e-01 - 9.728000000000e-10 -1.342181141771e-01 - 9.828000000000e-10 3.744993884902e-02 - 9.928000000000e-10 1.836370942174e-01 - 1.002800000000e-09 3.096940812427e-01 - 1.012800000000e-09 4.298817640101e-01 - 1.022800000000e-09 5.397599749883e-01 - 1.032800000000e-09 5.817861936754e-01 - 1.042800000000e-09 5.074041226008e-01 - 1.052800000000e-09 3.388664774534e-01 - 1.062800000000e-09 1.535104608579e-01 - 1.072800000000e-09 -2.024845785028e-02 - 1.082800000000e-09 -1.692491421902e-01 - 1.092800000000e-09 -2.967013757932e-01 - 1.102800000000e-09 -4.171073443425e-01 - 1.112800000000e-09 -5.301213512093e-01 - 1.122800000000e-09 -5.826820342472e-01 - 1.132800000000e-09 -5.208927839223e-01 - 1.142800000000e-09 -3.582851623030e-01 - 1.152800000000e-09 -1.726179318326e-01 - 1.162800000000e-09 3.001935102304e-03 - 1.172800000000e-09 1.548738889534e-01 - 1.182800000000e-09 2.838707642593e-01 - 1.192800000000e-09 4.044922095117e-01 - 1.202800000000e-09 5.198180562761e-01 - 1.212800000000e-09 5.821632166084e-01 - 1.222800000000e-09 5.332184734218e-01 - 1.232800000000e-09 3.779624918474e-01 - 1.242800000000e-09 1.922988577092e-01 - 1.252800000000e-09 1.486703325848e-02 - 1.262800000000e-09 -1.399496932386e-01 - 1.272800000000e-09 -2.707197504860e-01 - 1.282800000000e-09 -3.916660474216e-01 - 1.292800000000e-09 -5.087606367752e-01 - 1.302800000000e-09 -5.803016232270e-01 - 1.312800000000e-09 -5.444413186477e-01 - 1.322800000000e-09 -3.977418947932e-01 - 1.332800000000e-09 -2.123689566689e-01 - 1.342800000000e-09 -3.326433605185e-02 - 1.352800000000e-09 1.245198660865e-01 - 1.362800000000e-09 2.572914801001e-01 - 1.372800000000e-09 3.786884397038e-01 - 1.382800000000e-09 4.970287842619e-01 - 1.392800000000e-09 5.770140673465e-01 - 1.402800000000e-09 5.543068732670e-01 - 1.412800000000e-09 4.172944393038e-01 - 1.422800000000e-09 2.326135914048e-01 - 1.432800000000e-09 5.200031629165e-02 - 1.442800000000e-09 -1.087117173734e-01 - 1.452800000000e-09 -2.436934942172e-01 - 1.462800000000e-09 -3.656702152799e-01 - 1.472800000000e-09 -4.848025482630e-01 - 1.482800000000e-09 -5.723385369588e-01 - 1.492800000000e-09 -5.626458033125e-01 - 1.502800000000e-09 -4.362543636943e-01 - 1.512800000000e-09 -2.528118155371e-01 - 1.522800000000e-09 -7.087265053387e-02 - 1.532800000000e-09 9.266186071927e-02 - 1.542800000000e-09 2.300274395412e-01 - 1.552800000000e-09 3.527140919248e-01 - 1.562800000000e-09 4.722911338649e-01 - 1.572800000000e-09 5.664223472519e-01 - 1.582800000000e-09 5.694169369289e-01 - 1.592800000000e-09 4.543351006071e-01 - 1.602800000000e-09 2.728185799251e-01 - 1.612800000000e-09 8.974653097500e-02 - 1.622800000000e-09 -7.645342918533e-02 - 1.632800000000e-09 -2.163412758022e-01 - 1.642800000000e-09 -3.398672125281e-01 - 1.652800000000e-09 -4.596702740436e-01 - 1.662800000000e-09 -5.594547917655e-01 - 1.672800000000e-09 -5.746885318592e-01 - 1.682800000000e-09 -4.713817902736e-01 - 1.692800000000e-09 -2.925998303757e-01 - 1.702800000000e-09 -1.085902848019e-01 - 1.712800000000e-09 6.009271011551e-02 - 1.722800000000e-09 2.026110402562e-01 - 1.732800000000e-09 3.271137583800e-01 - 1.742800000000e-09 4.470366757261e-01 - 1.752800000000e-09 5.516024260258e-01 - 1.762800000000e-09 5.785682691472e-01 - 1.772800000000e-09 4.872997263391e-01 - 1.782800000000e-09 3.121706971956e-01 - 1.792800000000e-09 1.275093354174e-01 - 1.802800000000e-09 -4.339966691138e-02 - 1.812800000000e-09 -1.885914489076e-01 - 1.822800000000e-09 -3.142192224600e-01 - 1.832800000000e-09 -4.343522534326e-01 - 1.842800000000e-09 -5.430041650422e-01 - 1.852800000000e-09 -5.811837349212e-01 - 1.862800000000e-09 -5.023856761573e-01 - 1.872800000000e-09 -3.319418855515e-01 - 1.882800000000e-09 -1.467398868003e-01 - 1.892800000000e-09 2.631801497144e-02 - 1.902800000000e-09 1.743391836774e-01 - 1.912800000000e-09 3.012879943958e-01 - 1.922800000000e-09 4.215592295324e-01 - 1.932800000000e-09 5.336096259357e-01 - 1.942800000000e-09 5.825911854269e-01 - 1.952800000000e-09 5.163685478590e-01 - 1.962800000000e-09 3.514506166310e-01 - 1.972800000000e-09 1.658449567189e-01 - 1.982800000000e-09 -9.123570295392e-03 - 1.992800000000e-09 -1.599641527363e-01 - 2.000000000000e-09 -2.536669268561e-01 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/diff_ring_oscillator.sym b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/diff_ring_oscillator.sym deleted file mode 100644 index e632b156..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/run_0/diff_ring_oscillator.sym +++ /dev/null @@ -1,27 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {type=primitive -format="@name @pinlist @symname" -template="name=x1" -} -V {} -S {} -E {} -L 4 70 -20 90 -20 {} -L 4 70 20 90 20 {} -L 7 20 70 20 90 {} -L 7 -20 70 -20 90 {} -B 5 87.5 -22.5 92.5 -17.5 {name=Voplus dir=out} -B 5 17.5 87.5 22.5 92.5 {name=vdd dir=inout} -B 5 -22.5 87.5 -17.5 92.5 {name=gnd dir=inout} -B 5 87.5 17.5 92.5 22.5 {name=Vominus dir=out} -A 4 -1.666666666666714 1.666666666666714 71.68604389202189 287.5924245621816 360 {} -A 4 -30 27.5 40.69705149024927 42.51044707800085 94.97910584399833 {} -A 4 30 -27.5 40.69705149024927 222.5104470780009 94.97910584399833 {} -T {@symname} -40.5 -56 0 0 0.1 0.1 {} -T {@name} -40 -47 0 0 0.1 0.1 { -} -T {Voplus} 65 -24 0 1 0.2 0.2 {} -T {vdd} 5 64 2 1 0.2 0.2 {} -T {gnd} -35 64 2 1 0.2 0.2 {} -T {Vominus} 65 16 0 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/simulation_summary.csv b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/simulation_summary.csv deleted file mode 100644 index 8f65c459..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/simulation_summary.csv +++ /dev/null @@ -1,2 +0,0 @@ -run,time_axis,vo_diff,frequency -run_0,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.292e-02, -1.722e-01, -3.004e-01, …]",5.414e+09 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/simulation_summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/simulation_summary.md deleted file mode 100644 index a45b7af4..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/parameters/Frequency/simulation_summary.md +++ /dev/null @@ -1,5 +0,0 @@ -# Simulation Summary for Freq - -| run | time_axis | vo_diff | frequency | -| :-- | --------: | ------: | --------: | -| run_0 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.292e-02, -1.722e-01, -3.004e-01, …] | 5.414e+09 | diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/summary.md deleted file mode 100644 index a5320ec1..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-03-04/summary.md +++ /dev/null @@ -1,9 +0,0 @@ - -# CACE Summary for diff_ring_oscillator - -**netlist source**: schematic - -| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | -| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | -| Freq | ngspice | frequency | 4.2 GHz | 5.414 GHz | 5.4 GHz | 5.414 GHz | 7.1 GHz | 5.414 GHz | Pass ✅ | - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/diff_oscillator_tb.sch deleted file mode 100644 index 8b2e4f89..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/diff_oscillator_tb.sch +++ /dev/null @@ -1,65 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -N 390 -280 390 -250 {lab=GND} -N 390 -370 390 -340 {lab=vdd} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 10 -1170 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -* Keep this if your manual run has it — parity matters - -.ic V(Voplus)=1.2 -.control -* Stability & parity options -set noaskquit -set numdgt=12 - -* Save vectors and run -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n 160p - -* Define explicit vectors (avoid V(...) on calculated vectors) -let vo_p = v(Voplus) -let vo_m = v(Vominus) -let vo_diff = vo_p - vo_m - -* --- Main file that CACE reads: 2 columns (time, vo_diff) --- -set wr_singlescale -wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff - -* --- Extra debug file (CACE ignores): 4 columns w/ names --- -set wr_vecnames -wrdata CACE\{simpath\}/debug_CACE\{N\}.dat time vo_p vo_m vo_diff -unset wr_vecnames - -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/models/cornerMOSlv.lib mos_CACE\{corner\} - -.include CACE\{DUT_path\} - -.temp CACE\{temperature\} -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} -C {vsource.sym} 390 -310 0 0 {name=V1 value=1.2 savecurrent=false} -C {gnd.sym} 390 -250 0 0 {name=l1 lab=GND} -C {lab_pin.sym} 390 -370 2 0 {name=p5 sig_type=std_logic lab=vdd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/frequency.png b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/frequency.png deleted file mode 100644 index c624000fa7f7e38dbd0b124bef68498c0b894429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43353 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 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/.spiceinit b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/.spiceinit deleted file mode 100644 index 02b902fb..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/.spiceinit +++ /dev/null @@ -1,30 +0,0 @@ -* a custom spiceinit file for IHP-Open-PDK - -* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc -* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK -* export PDK=ihp-sg13g2 - -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice ) -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice ) -*echo $sourcepath - -*option tnom=28 -*option list - -* KLU solver still do not work correctly for every simulation -*option klu - -*option node -*option opts -*option warn=1 -*option maxwarns=10 -*option savecurrents - -*set ngbehavior=hsa -*set noinit - -* add OSDI -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi' - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/conditions.yaml b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/conditions.yaml deleted file mode 100644 index 7a0b728f..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/conditions.yaml +++ /dev/null @@ -1,8 +0,0 @@ -DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice -N: 0 -PDK: ihp-sg13g2 -PDK_ROOT: /home/pedersen/IHP-Open-PDK -corner: tt -filename: diff_oscillator_tb -simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0 -temperature: '27' diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/diff_oscillator_tb.sch deleted file mode 100644 index e18d29c4..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/diff_oscillator_tb.sch +++ /dev/null @@ -1,65 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -N 390 -280 390 -250 {lab=GND} -N 390 -370 390 -340 {lab=vdd} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 10 -1170 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -* Keep this if your manual run has it — parity matters - -.ic V(Voplus)=1.2 -.control -* Stability & parity options -set noaskquit -set numdgt=12 - -* Save vectors and run -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n 160p - -* Define explicit vectors (avoid V(...) on calculated vectors) -let vo_p = v(Voplus) -let vo_m = v(Vominus) -let vo_diff = vo_p - vo_m - -* --- Main file that CACE reads: 2 columns (time, vo_diff) --- -set wr_singlescale -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/diff_oscillator_tb_0.data vo_diff - -* --- Extra debug file (CACE ignores): 4 columns w/ names --- -set wr_vecnames -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/debug_0.dat time vo_p vo_m vo_diff -unset wr_vecnames - -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt - -.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice - -.temp 27 -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} -C {vsource.sym} 390 -310 0 0 {name=V1 value=1.2 savecurrent=false} -C {gnd.sym} 390 -250 0 0 {name=l1 lab=GND} -C {lab_pin.sym} 390 -370 2 0 {name=p5 sig_type=std_logic lab=vdd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/diff_oscillator_tb_0.data b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/diff_oscillator_tb_0.data deleted file mode 100644 index b960892f..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/diff_oscillator_tb_0.data +++ /dev/null @@ -1,185 +0,0 @@ - 1.628000000000e-10 -2.292252894521e-02 - 1.728000000000e-10 -1.721878995476e-01 - 1.828000000000e-10 -3.003971530482e-01 - 1.928000000000e-10 -4.209827688535e-01 - 2.028000000000e-10 -5.322027853128e-01 - 2.128000000000e-10 -5.791583227387e-01 - 2.228000000000e-10 -5.110033194175e-01 - 2.328000000000e-10 -3.457576287601e-01 - 2.428000000000e-10 -1.607196798900e-01 - 2.528000000000e-10 1.365547887835e-02 - 2.628000000000e-10 1.638016925338e-01 - 2.728000000000e-10 2.919305498126e-01 - 2.828000000000e-10 4.124239288433e-01 - 2.928000000000e-10 5.263166298848e-01 - 3.028000000000e-10 5.824106149717e-01 - 3.128000000000e-10 5.252174273130e-01 - 3.228000000000e-10 3.651459872532e-01 - 3.328000000000e-10 1.795084214438e-01 - 3.428000000000e-10 3.226267600252e-03 - 3.528000000000e-10 -1.496702035742e-01 - 3.628000000000e-10 -2.792887178681e-01 - 3.728000000000e-10 -4.000019021719e-01 - 3.828000000000e-10 -5.160190704246e-01 - 3.928000000000e-10 -5.816500208715e-01 - 4.028000000000e-10 -5.372846837038e-01 - 4.128000000000e-10 -3.848834507397e-01 - 4.228000000000e-10 -1.993014483184e-01 - 4.328000000000e-10 -2.125168120944e-02 - 4.428000000000e-10 1.345897939599e-01 - 4.528000000000e-10 2.660516467047e-01 - 4.628000000000e-10 3.871267719337e-01 - 4.728000000000e-10 5.047282820024e-01 - 4.828000000000e-10 5.793062880329e-01 - 4.928000000000e-10 5.480670992790e-01 - 5.028000000000e-10 4.046247574272e-01 - 5.128000000000e-10 2.194567139019e-01 - 5.228000000000e-10 3.978854030163e-02 - 5.328000000000e-10 -1.190134240033e-01 - 5.428000000000e-10 -2.525512770557e-01 - 5.528000000000e-10 -3.741228468393e-01 - 5.628000000000e-10 -4.927999203803e-01 - 5.728000000000e-10 -5.755235861382e-01 - 5.828000000000e-10 -5.574109039140e-01 - 5.928000000000e-10 -4.240101965476e-01 - 6.028000000000e-10 -2.397070733991e-01 - 6.128000000000e-10 -5.859311656156e-02 - 6.228000000000e-10 1.031069489747e-01 - 6.328000000000e-10 2.389202178782e-01 - 6.428000000000e-10 3.611164053835e-01 - 6.528000000000e-10 4.804511503358e-01 - 6.628000000000e-10 5.703927182427e-01 - 6.728000000000e-10 5.651995411624e-01 - 6.828000000000e-10 4.426884649777e-01 - 6.928000000000e-10 2.598493744117e-01 - 7.028000000000e-10 7.747657769560e-02 - 7.128000000000e-10 -8.699618736653e-02 - 7.228000000000e-10 -2.252447884331e-01 - 7.328000000000e-10 -3.481970680463e-01 - 7.428000000000e-10 -4.678842164117e-01 - 7.528000000000e-10 -5.640875390474e-01 - 7.628000000000e-10 -5.714336476059e-01 - 7.728000000000e-10 -4.604185473907e-01 - 7.828000000000e-10 -2.797750138125e-01 - 7.928000000000e-10 -9.633858138806e-02 - 8.028000000000e-10 7.073777814255e-02 - 8.128000000000e-10 2.115493094061e-01 - 8.228000000000e-10 3.353876046363e-01 - 8.328000000000e-10 4.552524923411e-01 - 8.428000000000e-10 5.567938616314e-01 - 8.528000000000e-10 5.762058661922e-01 - 8.628000000000e-10 4.770908355033e-01 - 8.728000000000e-10 2.994880974607e-01 - 8.828000000000e-10 1.151828864331e-01 - 8.928000000000e-10 -5.431208395594e-02 - 9.028000000000e-10 -1.977861602727e-01 - 9.128000000000e-10 -3.226531529049e-01 - 9.228000000000e-10 -4.427347421602e-01 - 9.328000000000e-10 -5.488327643130e-01 - 9.428000000000e-10 -5.797041909504e-01 - 9.528000000000e-10 -4.927265308101e-01 - 9.628000000000e-10 -3.191097454976e-01 - 9.728000000000e-10 -1.342181141771e-01 - 9.828000000000e-10 3.744993884902e-02 - 9.928000000000e-10 1.836370942174e-01 - 1.002800000000e-09 3.096940812427e-01 - 1.012800000000e-09 4.298817640101e-01 - 1.022800000000e-09 5.397599749883e-01 - 1.032800000000e-09 5.817861936754e-01 - 1.042800000000e-09 5.074041226008e-01 - 1.052800000000e-09 3.388664774534e-01 - 1.062800000000e-09 1.535104608579e-01 - 1.072800000000e-09 -2.024845785028e-02 - 1.082800000000e-09 -1.692491421902e-01 - 1.092800000000e-09 -2.967013757932e-01 - 1.102800000000e-09 -4.171073443425e-01 - 1.112800000000e-09 -5.301213512093e-01 - 1.122800000000e-09 -5.826820342472e-01 - 1.132800000000e-09 -5.208927839223e-01 - 1.142800000000e-09 -3.582851623030e-01 - 1.152800000000e-09 -1.726179318326e-01 - 1.162800000000e-09 3.001935102304e-03 - 1.172800000000e-09 1.548738889534e-01 - 1.182800000000e-09 2.838707642593e-01 - 1.192800000000e-09 4.044922095117e-01 - 1.202800000000e-09 5.198180562761e-01 - 1.212800000000e-09 5.821632166084e-01 - 1.222800000000e-09 5.332184734218e-01 - 1.232800000000e-09 3.779624918474e-01 - 1.242800000000e-09 1.922988577092e-01 - 1.252800000000e-09 1.486703325848e-02 - 1.262800000000e-09 -1.399496932386e-01 - 1.272800000000e-09 -2.707197504860e-01 - 1.282800000000e-09 -3.916660474216e-01 - 1.292800000000e-09 -5.087606367752e-01 - 1.302800000000e-09 -5.803016232270e-01 - 1.312800000000e-09 -5.444413186477e-01 - 1.322800000000e-09 -3.977418947932e-01 - 1.332800000000e-09 -2.123689566689e-01 - 1.342800000000e-09 -3.326433605185e-02 - 1.352800000000e-09 1.245198660865e-01 - 1.362800000000e-09 2.572914801001e-01 - 1.372800000000e-09 3.786884397038e-01 - 1.382800000000e-09 4.970287842619e-01 - 1.392800000000e-09 5.770140673465e-01 - 1.402800000000e-09 5.543068732670e-01 - 1.412800000000e-09 4.172944393038e-01 - 1.422800000000e-09 2.326135914048e-01 - 1.432800000000e-09 5.200031629165e-02 - 1.442800000000e-09 -1.087117173734e-01 - 1.452800000000e-09 -2.436934942172e-01 - 1.462800000000e-09 -3.656702152799e-01 - 1.472800000000e-09 -4.848025482630e-01 - 1.482800000000e-09 -5.723385369588e-01 - 1.492800000000e-09 -5.626458033125e-01 - 1.502800000000e-09 -4.362543636943e-01 - 1.512800000000e-09 -2.528118155371e-01 - 1.522800000000e-09 -7.087265053387e-02 - 1.532800000000e-09 9.266186071927e-02 - 1.542800000000e-09 2.300274395412e-01 - 1.552800000000e-09 3.527140919248e-01 - 1.562800000000e-09 4.722911338649e-01 - 1.572800000000e-09 5.664223472519e-01 - 1.582800000000e-09 5.694169369289e-01 - 1.592800000000e-09 4.543351006071e-01 - 1.602800000000e-09 2.728185799251e-01 - 1.612800000000e-09 8.974653097500e-02 - 1.622800000000e-09 -7.645342918533e-02 - 1.632800000000e-09 -2.163412758022e-01 - 1.642800000000e-09 -3.398672125281e-01 - 1.652800000000e-09 -4.596702740436e-01 - 1.662800000000e-09 -5.594547917655e-01 - 1.672800000000e-09 -5.746885318592e-01 - 1.682800000000e-09 -4.713817902736e-01 - 1.692800000000e-09 -2.925998303757e-01 - 1.702800000000e-09 -1.085902848019e-01 - 1.712800000000e-09 6.009271011551e-02 - 1.722800000000e-09 2.026110402562e-01 - 1.732800000000e-09 3.271137583800e-01 - 1.742800000000e-09 4.470366757261e-01 - 1.752800000000e-09 5.516024260258e-01 - 1.762800000000e-09 5.785682691472e-01 - 1.772800000000e-09 4.872997263391e-01 - 1.782800000000e-09 3.121706971956e-01 - 1.792800000000e-09 1.275093354174e-01 - 1.802800000000e-09 -4.339966691138e-02 - 1.812800000000e-09 -1.885914489076e-01 - 1.822800000000e-09 -3.142192224600e-01 - 1.832800000000e-09 -4.343522534326e-01 - 1.842800000000e-09 -5.430041650422e-01 - 1.852800000000e-09 -5.811837349212e-01 - 1.862800000000e-09 -5.023856761573e-01 - 1.872800000000e-09 -3.319418855515e-01 - 1.882800000000e-09 -1.467398868003e-01 - 1.892800000000e-09 2.631801497144e-02 - 1.902800000000e-09 1.743391836774e-01 - 1.912800000000e-09 3.012879943958e-01 - 1.922800000000e-09 4.215592295324e-01 - 1.932800000000e-09 5.336096259357e-01 - 1.942800000000e-09 5.825911854269e-01 - 1.952800000000e-09 5.163685478590e-01 - 1.962800000000e-09 3.514506166310e-01 - 1.972800000000e-09 1.658449567189e-01 - 1.982800000000e-09 -9.123570295392e-03 - 1.992800000000e-09 -1.599641527363e-01 - 2.000000000000e-09 -2.536669268561e-01 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/diff_ring_oscillator.sym b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/diff_ring_oscillator.sym deleted file mode 100644 index e632b156..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/run_0/diff_ring_oscillator.sym +++ /dev/null @@ -1,27 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {type=primitive -format="@name @pinlist @symname" -template="name=x1" -} -V {} -S {} -E {} -L 4 70 -20 90 -20 {} -L 4 70 20 90 20 {} -L 7 20 70 20 90 {} -L 7 -20 70 -20 90 {} -B 5 87.5 -22.5 92.5 -17.5 {name=Voplus dir=out} -B 5 17.5 87.5 22.5 92.5 {name=vdd dir=inout} -B 5 -22.5 87.5 -17.5 92.5 {name=gnd dir=inout} -B 5 87.5 17.5 92.5 22.5 {name=Vominus dir=out} -A 4 -1.666666666666714 1.666666666666714 71.68604389202189 287.5924245621816 360 {} -A 4 -30 27.5 40.69705149024927 42.51044707800085 94.97910584399833 {} -A 4 30 -27.5 40.69705149024927 222.5104470780009 94.97910584399833 {} -T {@symname} -40.5 -56 0 0 0.1 0.1 {} -T {@name} -40 -47 0 0 0.1 0.1 { -} -T {Voplus} 65 -24 0 1 0.2 0.2 {} -T {vdd} 5 64 2 1 0.2 0.2 {} -T {gnd} -35 64 2 1 0.2 0.2 {} -T {Vominus} 65 16 0 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/simulation_summary.csv b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/simulation_summary.csv deleted file mode 100644 index 8f65c459..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/simulation_summary.csv +++ /dev/null @@ -1,2 +0,0 @@ -run,time_axis,vo_diff,frequency -run_0,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.292e-02, -1.722e-01, -3.004e-01, …]",5.414e+09 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/simulation_summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/simulation_summary.md deleted file mode 100644 index a45b7af4..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/parameters/Frequency/simulation_summary.md +++ /dev/null @@ -1,5 +0,0 @@ -# Simulation Summary for Freq - -| run | time_axis | vo_diff | frequency | -| :-- | --------: | ------: | --------: | -| run_0 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.292e-02, -1.722e-01, -3.004e-01, …] | 5.414e+09 | diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/summary.md deleted file mode 100644 index a5320ec1..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-08-28_13-08-46/summary.md +++ /dev/null @@ -1,9 +0,0 @@ - -# CACE Summary for diff_ring_oscillator - -**netlist source**: schematic - -| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | -| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | -| Freq | ngspice | frequency | 4.2 GHz | 5.414 GHz | 5.4 GHz | 5.414 GHz | 7.1 GHz | 5.414 GHz | Pass ✅ | - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/diff_oscillator_tb.sch deleted file mode 100644 index 8b2e4f89..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/diff_oscillator_tb.sch +++ /dev/null @@ -1,65 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -N 390 -280 390 -250 {lab=GND} -N 390 -370 390 -340 {lab=vdd} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 10 -1170 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -* Keep this if your manual run has it — parity matters - -.ic V(Voplus)=1.2 -.control -* Stability & parity options -set noaskquit -set numdgt=12 - -* Save vectors and run -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n 160p - -* Define explicit vectors (avoid V(...) on calculated vectors) -let vo_p = v(Voplus) -let vo_m = v(Vominus) -let vo_diff = vo_p - vo_m - -* --- Main file that CACE reads: 2 columns (time, vo_diff) --- -set wr_singlescale -wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff - -* --- Extra debug file (CACE ignores): 4 columns w/ names --- -set wr_vecnames -wrdata CACE\{simpath\}/debug_CACE\{N\}.dat time vo_p vo_m vo_diff -unset wr_vecnames - -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/models/cornerMOSlv.lib mos_CACE\{corner\} - -.include CACE\{DUT_path\} - -.temp CACE\{temperature\} -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} -C {vsource.sym} 390 -310 0 0 {name=V1 value=1.2 savecurrent=false} -C {gnd.sym} 390 -250 0 0 {name=l1 lab=GND} -C {lab_pin.sym} 390 -370 2 0 {name=p5 sig_type=std_logic lab=vdd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/frequency.png b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/frequency.png deleted file mode 100644 index d2bd4121ca10b5af73f837a89c772ae0f2bb88bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42515 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 ppp`w~_ps)s!V++p9XtPRN)O}Xd? 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 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/.spiceinit b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/.spiceinit deleted file mode 100644 index 02b902fb..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/.spiceinit +++ /dev/null @@ -1,30 +0,0 @@ -* a custom spiceinit file for IHP-Open-PDK - -* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc -* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK -* export PDK=ihp-sg13g2 - -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice ) -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice ) -*echo $sourcepath - -*option tnom=28 -*option list - -* KLU solver still do not work correctly for every simulation -*option klu - -*option node -*option opts -*option warn=1 -*option maxwarns=10 -*option savecurrents - -*set ngbehavior=hsa -*set noinit - -* add OSDI -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi' - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/conditions.yaml b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/conditions.yaml deleted file mode 100644 index c9e97c56..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/conditions.yaml +++ /dev/null @@ -1,8 +0,0 @@ -DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice -N: 0 -PDK: ihp-sg13g2 -PDK_ROOT: /home/pedersen/IHP-Open-PDK -corner: tt -filename: diff_oscillator_tb -simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0 -temperature: '27' diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/diff_oscillator_tb.sch deleted file mode 100644 index e297ca60..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/diff_oscillator_tb.sch +++ /dev/null @@ -1,65 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -N 390 -280 390 -250 {lab=GND} -N 390 -370 390 -340 {lab=vdd} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 10 -1170 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -* Keep this if your manual run has it — parity matters - -.ic V(Voplus)=1.2 -.control -* Stability & parity options -set noaskquit -set numdgt=12 - -* Save vectors and run -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n 160p - -* Define explicit vectors (avoid V(...) on calculated vectors) -let vo_p = v(Voplus) -let vo_m = v(Vominus) -let vo_diff = vo_p - vo_m - -* --- Main file that CACE reads: 2 columns (time, vo_diff) --- -set wr_singlescale -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/diff_oscillator_tb_0.data vo_diff - -* --- Extra debug file (CACE ignores): 4 columns w/ names --- -set wr_vecnames -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/debug_0.dat time vo_p vo_m vo_diff -unset wr_vecnames - -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt - -.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice - -.temp 27 -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} -C {vsource.sym} 390 -310 0 0 {name=V1 value=1.2 savecurrent=false} -C {gnd.sym} 390 -250 0 0 {name=l1 lab=GND} -C {lab_pin.sym} 390 -370 2 0 {name=p5 sig_type=std_logic lab=vdd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/diff_oscillator_tb_0.data b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/diff_oscillator_tb_0.data deleted file mode 100644 index b960892f..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/diff_oscillator_tb_0.data +++ /dev/null @@ -1,185 +0,0 @@ - 1.628000000000e-10 -2.292252894521e-02 - 1.728000000000e-10 -1.721878995476e-01 - 1.828000000000e-10 -3.003971530482e-01 - 1.928000000000e-10 -4.209827688535e-01 - 2.028000000000e-10 -5.322027853128e-01 - 2.128000000000e-10 -5.791583227387e-01 - 2.228000000000e-10 -5.110033194175e-01 - 2.328000000000e-10 -3.457576287601e-01 - 2.428000000000e-10 -1.607196798900e-01 - 2.528000000000e-10 1.365547887835e-02 - 2.628000000000e-10 1.638016925338e-01 - 2.728000000000e-10 2.919305498126e-01 - 2.828000000000e-10 4.124239288433e-01 - 2.928000000000e-10 5.263166298848e-01 - 3.028000000000e-10 5.824106149717e-01 - 3.128000000000e-10 5.252174273130e-01 - 3.228000000000e-10 3.651459872532e-01 - 3.328000000000e-10 1.795084214438e-01 - 3.428000000000e-10 3.226267600252e-03 - 3.528000000000e-10 -1.496702035742e-01 - 3.628000000000e-10 -2.792887178681e-01 - 3.728000000000e-10 -4.000019021719e-01 - 3.828000000000e-10 -5.160190704246e-01 - 3.928000000000e-10 -5.816500208715e-01 - 4.028000000000e-10 -5.372846837038e-01 - 4.128000000000e-10 -3.848834507397e-01 - 4.228000000000e-10 -1.993014483184e-01 - 4.328000000000e-10 -2.125168120944e-02 - 4.428000000000e-10 1.345897939599e-01 - 4.528000000000e-10 2.660516467047e-01 - 4.628000000000e-10 3.871267719337e-01 - 4.728000000000e-10 5.047282820024e-01 - 4.828000000000e-10 5.793062880329e-01 - 4.928000000000e-10 5.480670992790e-01 - 5.028000000000e-10 4.046247574272e-01 - 5.128000000000e-10 2.194567139019e-01 - 5.228000000000e-10 3.978854030163e-02 - 5.328000000000e-10 -1.190134240033e-01 - 5.428000000000e-10 -2.525512770557e-01 - 5.528000000000e-10 -3.741228468393e-01 - 5.628000000000e-10 -4.927999203803e-01 - 5.728000000000e-10 -5.755235861382e-01 - 5.828000000000e-10 -5.574109039140e-01 - 5.928000000000e-10 -4.240101965476e-01 - 6.028000000000e-10 -2.397070733991e-01 - 6.128000000000e-10 -5.859311656156e-02 - 6.228000000000e-10 1.031069489747e-01 - 6.328000000000e-10 2.389202178782e-01 - 6.428000000000e-10 3.611164053835e-01 - 6.528000000000e-10 4.804511503358e-01 - 6.628000000000e-10 5.703927182427e-01 - 6.728000000000e-10 5.651995411624e-01 - 6.828000000000e-10 4.426884649777e-01 - 6.928000000000e-10 2.598493744117e-01 - 7.028000000000e-10 7.747657769560e-02 - 7.128000000000e-10 -8.699618736653e-02 - 7.228000000000e-10 -2.252447884331e-01 - 7.328000000000e-10 -3.481970680463e-01 - 7.428000000000e-10 -4.678842164117e-01 - 7.528000000000e-10 -5.640875390474e-01 - 7.628000000000e-10 -5.714336476059e-01 - 7.728000000000e-10 -4.604185473907e-01 - 7.828000000000e-10 -2.797750138125e-01 - 7.928000000000e-10 -9.633858138806e-02 - 8.028000000000e-10 7.073777814255e-02 - 8.128000000000e-10 2.115493094061e-01 - 8.228000000000e-10 3.353876046363e-01 - 8.328000000000e-10 4.552524923411e-01 - 8.428000000000e-10 5.567938616314e-01 - 8.528000000000e-10 5.762058661922e-01 - 8.628000000000e-10 4.770908355033e-01 - 8.728000000000e-10 2.994880974607e-01 - 8.828000000000e-10 1.151828864331e-01 - 8.928000000000e-10 -5.431208395594e-02 - 9.028000000000e-10 -1.977861602727e-01 - 9.128000000000e-10 -3.226531529049e-01 - 9.228000000000e-10 -4.427347421602e-01 - 9.328000000000e-10 -5.488327643130e-01 - 9.428000000000e-10 -5.797041909504e-01 - 9.528000000000e-10 -4.927265308101e-01 - 9.628000000000e-10 -3.191097454976e-01 - 9.728000000000e-10 -1.342181141771e-01 - 9.828000000000e-10 3.744993884902e-02 - 9.928000000000e-10 1.836370942174e-01 - 1.002800000000e-09 3.096940812427e-01 - 1.012800000000e-09 4.298817640101e-01 - 1.022800000000e-09 5.397599749883e-01 - 1.032800000000e-09 5.817861936754e-01 - 1.042800000000e-09 5.074041226008e-01 - 1.052800000000e-09 3.388664774534e-01 - 1.062800000000e-09 1.535104608579e-01 - 1.072800000000e-09 -2.024845785028e-02 - 1.082800000000e-09 -1.692491421902e-01 - 1.092800000000e-09 -2.967013757932e-01 - 1.102800000000e-09 -4.171073443425e-01 - 1.112800000000e-09 -5.301213512093e-01 - 1.122800000000e-09 -5.826820342472e-01 - 1.132800000000e-09 -5.208927839223e-01 - 1.142800000000e-09 -3.582851623030e-01 - 1.152800000000e-09 -1.726179318326e-01 - 1.162800000000e-09 3.001935102304e-03 - 1.172800000000e-09 1.548738889534e-01 - 1.182800000000e-09 2.838707642593e-01 - 1.192800000000e-09 4.044922095117e-01 - 1.202800000000e-09 5.198180562761e-01 - 1.212800000000e-09 5.821632166084e-01 - 1.222800000000e-09 5.332184734218e-01 - 1.232800000000e-09 3.779624918474e-01 - 1.242800000000e-09 1.922988577092e-01 - 1.252800000000e-09 1.486703325848e-02 - 1.262800000000e-09 -1.399496932386e-01 - 1.272800000000e-09 -2.707197504860e-01 - 1.282800000000e-09 -3.916660474216e-01 - 1.292800000000e-09 -5.087606367752e-01 - 1.302800000000e-09 -5.803016232270e-01 - 1.312800000000e-09 -5.444413186477e-01 - 1.322800000000e-09 -3.977418947932e-01 - 1.332800000000e-09 -2.123689566689e-01 - 1.342800000000e-09 -3.326433605185e-02 - 1.352800000000e-09 1.245198660865e-01 - 1.362800000000e-09 2.572914801001e-01 - 1.372800000000e-09 3.786884397038e-01 - 1.382800000000e-09 4.970287842619e-01 - 1.392800000000e-09 5.770140673465e-01 - 1.402800000000e-09 5.543068732670e-01 - 1.412800000000e-09 4.172944393038e-01 - 1.422800000000e-09 2.326135914048e-01 - 1.432800000000e-09 5.200031629165e-02 - 1.442800000000e-09 -1.087117173734e-01 - 1.452800000000e-09 -2.436934942172e-01 - 1.462800000000e-09 -3.656702152799e-01 - 1.472800000000e-09 -4.848025482630e-01 - 1.482800000000e-09 -5.723385369588e-01 - 1.492800000000e-09 -5.626458033125e-01 - 1.502800000000e-09 -4.362543636943e-01 - 1.512800000000e-09 -2.528118155371e-01 - 1.522800000000e-09 -7.087265053387e-02 - 1.532800000000e-09 9.266186071927e-02 - 1.542800000000e-09 2.300274395412e-01 - 1.552800000000e-09 3.527140919248e-01 - 1.562800000000e-09 4.722911338649e-01 - 1.572800000000e-09 5.664223472519e-01 - 1.582800000000e-09 5.694169369289e-01 - 1.592800000000e-09 4.543351006071e-01 - 1.602800000000e-09 2.728185799251e-01 - 1.612800000000e-09 8.974653097500e-02 - 1.622800000000e-09 -7.645342918533e-02 - 1.632800000000e-09 -2.163412758022e-01 - 1.642800000000e-09 -3.398672125281e-01 - 1.652800000000e-09 -4.596702740436e-01 - 1.662800000000e-09 -5.594547917655e-01 - 1.672800000000e-09 -5.746885318592e-01 - 1.682800000000e-09 -4.713817902736e-01 - 1.692800000000e-09 -2.925998303757e-01 - 1.702800000000e-09 -1.085902848019e-01 - 1.712800000000e-09 6.009271011551e-02 - 1.722800000000e-09 2.026110402562e-01 - 1.732800000000e-09 3.271137583800e-01 - 1.742800000000e-09 4.470366757261e-01 - 1.752800000000e-09 5.516024260258e-01 - 1.762800000000e-09 5.785682691472e-01 - 1.772800000000e-09 4.872997263391e-01 - 1.782800000000e-09 3.121706971956e-01 - 1.792800000000e-09 1.275093354174e-01 - 1.802800000000e-09 -4.339966691138e-02 - 1.812800000000e-09 -1.885914489076e-01 - 1.822800000000e-09 -3.142192224600e-01 - 1.832800000000e-09 -4.343522534326e-01 - 1.842800000000e-09 -5.430041650422e-01 - 1.852800000000e-09 -5.811837349212e-01 - 1.862800000000e-09 -5.023856761573e-01 - 1.872800000000e-09 -3.319418855515e-01 - 1.882800000000e-09 -1.467398868003e-01 - 1.892800000000e-09 2.631801497144e-02 - 1.902800000000e-09 1.743391836774e-01 - 1.912800000000e-09 3.012879943958e-01 - 1.922800000000e-09 4.215592295324e-01 - 1.932800000000e-09 5.336096259357e-01 - 1.942800000000e-09 5.825911854269e-01 - 1.952800000000e-09 5.163685478590e-01 - 1.962800000000e-09 3.514506166310e-01 - 1.972800000000e-09 1.658449567189e-01 - 1.982800000000e-09 -9.123570295392e-03 - 1.992800000000e-09 -1.599641527363e-01 - 2.000000000000e-09 -2.536669268561e-01 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/diff_ring_oscillator.sym b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/diff_ring_oscillator.sym deleted file mode 100644 index e632b156..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/run_0/diff_ring_oscillator.sym +++ /dev/null @@ -1,27 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {type=primitive -format="@name @pinlist @symname" -template="name=x1" -} -V {} -S {} -E {} -L 4 70 -20 90 -20 {} -L 4 70 20 90 20 {} -L 7 20 70 20 90 {} -L 7 -20 70 -20 90 {} -B 5 87.5 -22.5 92.5 -17.5 {name=Voplus dir=out} -B 5 17.5 87.5 22.5 92.5 {name=vdd dir=inout} -B 5 -22.5 87.5 -17.5 92.5 {name=gnd dir=inout} -B 5 87.5 17.5 92.5 22.5 {name=Vominus dir=out} -A 4 -1.666666666666714 1.666666666666714 71.68604389202189 287.5924245621816 360 {} -A 4 -30 27.5 40.69705149024927 42.51044707800085 94.97910584399833 {} -A 4 30 -27.5 40.69705149024927 222.5104470780009 94.97910584399833 {} -T {@symname} -40.5 -56 0 0 0.1 0.1 {} -T {@name} -40 -47 0 0 0.1 0.1 { -} -T {Voplus} 65 -24 0 1 0.2 0.2 {} -T {vdd} 5 64 2 1 0.2 0.2 {} -T {gnd} -35 64 2 1 0.2 0.2 {} -T {Vominus} 65 16 0 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/simulation_summary.csv b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/simulation_summary.csv deleted file mode 100644 index 8f65c459..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/simulation_summary.csv +++ /dev/null @@ -1,2 +0,0 @@ -run,time_axis,vo_diff,frequency -run_0,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.292e-02, -1.722e-01, -3.004e-01, …]",5.414e+09 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/simulation_summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/simulation_summary.md deleted file mode 100644 index a45b7af4..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/parameters/Frequency/simulation_summary.md +++ /dev/null @@ -1,5 +0,0 @@ -# Simulation Summary for Freq - -| run | time_axis | vo_diff | frequency | -| :-- | --------: | ------: | --------: | -| run_0 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.292e-02, -1.722e-01, -3.004e-01, …] | 5.414e+09 | diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/summary.md deleted file mode 100644 index a5320ec1..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_14-28-29/summary.md +++ /dev/null @@ -1,9 +0,0 @@ - -# CACE Summary for diff_ring_oscillator - -**netlist source**: schematic - -| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | -| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | -| Freq | ngspice | frequency | 4.2 GHz | 5.414 GHz | 5.4 GHz | 5.414 GHz | 7.1 GHz | 5.414 GHz | Pass ✅ | - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/diff_oscillator_tb.sch deleted file mode 100644 index 8b2e4f89..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/diff_oscillator_tb.sch +++ /dev/null @@ -1,65 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -N 390 -280 390 -250 {lab=GND} -N 390 -370 390 -340 {lab=vdd} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 10 -1170 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -* Keep this if your manual run has it — parity matters - -.ic V(Voplus)=1.2 -.control -* Stability & parity options -set noaskquit -set numdgt=12 - -* Save vectors and run -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n 160p - -* Define explicit vectors (avoid V(...) on calculated vectors) -let vo_p = v(Voplus) -let vo_m = v(Vominus) -let vo_diff = vo_p - vo_m - -* --- Main file that CACE reads: 2 columns (time, vo_diff) --- -set wr_singlescale -wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff - -* --- Extra debug file (CACE ignores): 4 columns w/ names --- -set wr_vecnames -wrdata CACE\{simpath\}/debug_CACE\{N\}.dat time vo_p vo_m vo_diff -unset wr_vecnames - -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/models/cornerMOSlv.lib mos_CACE\{corner\} - -.include CACE\{DUT_path\} - -.temp CACE\{temperature\} -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} -C {vsource.sym} 390 -310 0 0 {name=V1 value=1.2 savecurrent=false} -C {gnd.sym} 390 -250 0 0 {name=l1 lab=GND} -C {lab_pin.sym} 390 -370 2 0 {name=p5 sig_type=std_logic lab=vdd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/frequency.png b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/frequency.png deleted file mode 100644 index d2bd4121ca10b5af73f837a89c772ae0f2bb88bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42515 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 ppp`w~_ps)s!V++p9XtPRN)O}Xd? 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 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/.spiceinit b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/.spiceinit deleted file mode 100644 index 02b902fb..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/.spiceinit +++ /dev/null @@ -1,30 +0,0 @@ -* a custom spiceinit file for IHP-Open-PDK - -* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc -* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK -* export PDK=ihp-sg13g2 - -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice ) -setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice ) -*echo $sourcepath - -*option tnom=28 -*option list - -* KLU solver still do not work correctly for every simulation -*option klu - -*option node -*option opts -*option warn=1 -*option maxwarns=10 -*option savecurrents - -*set ngbehavior=hsa -*set noinit - -* add OSDI -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi' -osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi' - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/conditions.yaml b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/conditions.yaml deleted file mode 100644 index 111ef545..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/conditions.yaml +++ /dev/null @@ -1,8 +0,0 @@ -DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice -N: 0 -PDK: ihp-sg13g2 -PDK_ROOT: /home/pedersen/IHP-Open-PDK -corner: tt -filename: diff_oscillator_tb -simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0 -temperature: '27' diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/diff_oscillator_tb.sch deleted file mode 100644 index 94d8601e..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/diff_oscillator_tb.sch +++ /dev/null @@ -1,65 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 760 -230 760 -210 {lab=vdd} -N 720 -230 720 -210 {lab=gnd} -N 830 -340 850 -340 {lab=Voplus} -N 830 -300 850 -300 {lab=Vominus} -N 390 -280 390 -250 {lab=GND} -N 390 -370 390 -340 {lab=vdd} -C {opin.sym} 850 -340 0 0 {name=p3 lab=Voplus} -C {opin.sym} 850 -300 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 10 -1170 0 0 {name=transient_tb only_toplevel=false -value=" -.param temp=27 -* Keep this if your manual run has it — parity matters - -.ic V(Voplus)=1.2 -.control -* Stability & parity options -set noaskquit -set numdgt=12 - -* Save vectors and run -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 2n 160p - -* Define explicit vectors (avoid V(...) on calculated vectors) -let vo_p = v(Voplus) -let vo_m = v(Vominus) -let vo_diff = vo_p - vo_m - -* --- Main file that CACE reads: 2 columns (time, vo_diff) --- -set wr_singlescale -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/diff_oscillator_tb_0.data vo_diff - -* --- Extra debug file (CACE ignores): 4 columns w/ names --- -set wr_vecnames -wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/debug_0.dat time vo_p vo_m vo_diff -unset wr_vecnames - -write diff_oscillator_tb.raw -.endc -"} -C {iopin.sym} 760 -210 0 0 {name=p1 lab=vdd} -C {devices/code_shown.sym} 10 -510 0 0 {name=MODEL1 only_toplevel=true -format="tcleval( @value )" -value=" -.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt - -.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/diff_Roscillator/xschem/simulations/schematic/diff_ring_oscillator.spice - -.temp 27 -" -} -C {diff_ring_oscillator.sym} 740 -320 0 0 {name=x1} -C {iopin.sym} 720 -210 2 0 {name=p2 lab=gnd} -C {vsource.sym} 390 -310 0 0 {name=V1 value=1.2 savecurrent=false} -C {gnd.sym} 390 -250 0 0 {name=l1 lab=GND} -C {lab_pin.sym} 390 -370 2 0 {name=p5 sig_type=std_logic lab=vdd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/diff_oscillator_tb_0.data b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/diff_oscillator_tb_0.data deleted file mode 100644 index b960892f..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/diff_oscillator_tb_0.data +++ /dev/null @@ -1,185 +0,0 @@ - 1.628000000000e-10 -2.292252894521e-02 - 1.728000000000e-10 -1.721878995476e-01 - 1.828000000000e-10 -3.003971530482e-01 - 1.928000000000e-10 -4.209827688535e-01 - 2.028000000000e-10 -5.322027853128e-01 - 2.128000000000e-10 -5.791583227387e-01 - 2.228000000000e-10 -5.110033194175e-01 - 2.328000000000e-10 -3.457576287601e-01 - 2.428000000000e-10 -1.607196798900e-01 - 2.528000000000e-10 1.365547887835e-02 - 2.628000000000e-10 1.638016925338e-01 - 2.728000000000e-10 2.919305498126e-01 - 2.828000000000e-10 4.124239288433e-01 - 2.928000000000e-10 5.263166298848e-01 - 3.028000000000e-10 5.824106149717e-01 - 3.128000000000e-10 5.252174273130e-01 - 3.228000000000e-10 3.651459872532e-01 - 3.328000000000e-10 1.795084214438e-01 - 3.428000000000e-10 3.226267600252e-03 - 3.528000000000e-10 -1.496702035742e-01 - 3.628000000000e-10 -2.792887178681e-01 - 3.728000000000e-10 -4.000019021719e-01 - 3.828000000000e-10 -5.160190704246e-01 - 3.928000000000e-10 -5.816500208715e-01 - 4.028000000000e-10 -5.372846837038e-01 - 4.128000000000e-10 -3.848834507397e-01 - 4.228000000000e-10 -1.993014483184e-01 - 4.328000000000e-10 -2.125168120944e-02 - 4.428000000000e-10 1.345897939599e-01 - 4.528000000000e-10 2.660516467047e-01 - 4.628000000000e-10 3.871267719337e-01 - 4.728000000000e-10 5.047282820024e-01 - 4.828000000000e-10 5.793062880329e-01 - 4.928000000000e-10 5.480670992790e-01 - 5.028000000000e-10 4.046247574272e-01 - 5.128000000000e-10 2.194567139019e-01 - 5.228000000000e-10 3.978854030163e-02 - 5.328000000000e-10 -1.190134240033e-01 - 5.428000000000e-10 -2.525512770557e-01 - 5.528000000000e-10 -3.741228468393e-01 - 5.628000000000e-10 -4.927999203803e-01 - 5.728000000000e-10 -5.755235861382e-01 - 5.828000000000e-10 -5.574109039140e-01 - 5.928000000000e-10 -4.240101965476e-01 - 6.028000000000e-10 -2.397070733991e-01 - 6.128000000000e-10 -5.859311656156e-02 - 6.228000000000e-10 1.031069489747e-01 - 6.328000000000e-10 2.389202178782e-01 - 6.428000000000e-10 3.611164053835e-01 - 6.528000000000e-10 4.804511503358e-01 - 6.628000000000e-10 5.703927182427e-01 - 6.728000000000e-10 5.651995411624e-01 - 6.828000000000e-10 4.426884649777e-01 - 6.928000000000e-10 2.598493744117e-01 - 7.028000000000e-10 7.747657769560e-02 - 7.128000000000e-10 -8.699618736653e-02 - 7.228000000000e-10 -2.252447884331e-01 - 7.328000000000e-10 -3.481970680463e-01 - 7.428000000000e-10 -4.678842164117e-01 - 7.528000000000e-10 -5.640875390474e-01 - 7.628000000000e-10 -5.714336476059e-01 - 7.728000000000e-10 -4.604185473907e-01 - 7.828000000000e-10 -2.797750138125e-01 - 7.928000000000e-10 -9.633858138806e-02 - 8.028000000000e-10 7.073777814255e-02 - 8.128000000000e-10 2.115493094061e-01 - 8.228000000000e-10 3.353876046363e-01 - 8.328000000000e-10 4.552524923411e-01 - 8.428000000000e-10 5.567938616314e-01 - 8.528000000000e-10 5.762058661922e-01 - 8.628000000000e-10 4.770908355033e-01 - 8.728000000000e-10 2.994880974607e-01 - 8.828000000000e-10 1.151828864331e-01 - 8.928000000000e-10 -5.431208395594e-02 - 9.028000000000e-10 -1.977861602727e-01 - 9.128000000000e-10 -3.226531529049e-01 - 9.228000000000e-10 -4.427347421602e-01 - 9.328000000000e-10 -5.488327643130e-01 - 9.428000000000e-10 -5.797041909504e-01 - 9.528000000000e-10 -4.927265308101e-01 - 9.628000000000e-10 -3.191097454976e-01 - 9.728000000000e-10 -1.342181141771e-01 - 9.828000000000e-10 3.744993884902e-02 - 9.928000000000e-10 1.836370942174e-01 - 1.002800000000e-09 3.096940812427e-01 - 1.012800000000e-09 4.298817640101e-01 - 1.022800000000e-09 5.397599749883e-01 - 1.032800000000e-09 5.817861936754e-01 - 1.042800000000e-09 5.074041226008e-01 - 1.052800000000e-09 3.388664774534e-01 - 1.062800000000e-09 1.535104608579e-01 - 1.072800000000e-09 -2.024845785028e-02 - 1.082800000000e-09 -1.692491421902e-01 - 1.092800000000e-09 -2.967013757932e-01 - 1.102800000000e-09 -4.171073443425e-01 - 1.112800000000e-09 -5.301213512093e-01 - 1.122800000000e-09 -5.826820342472e-01 - 1.132800000000e-09 -5.208927839223e-01 - 1.142800000000e-09 -3.582851623030e-01 - 1.152800000000e-09 -1.726179318326e-01 - 1.162800000000e-09 3.001935102304e-03 - 1.172800000000e-09 1.548738889534e-01 - 1.182800000000e-09 2.838707642593e-01 - 1.192800000000e-09 4.044922095117e-01 - 1.202800000000e-09 5.198180562761e-01 - 1.212800000000e-09 5.821632166084e-01 - 1.222800000000e-09 5.332184734218e-01 - 1.232800000000e-09 3.779624918474e-01 - 1.242800000000e-09 1.922988577092e-01 - 1.252800000000e-09 1.486703325848e-02 - 1.262800000000e-09 -1.399496932386e-01 - 1.272800000000e-09 -2.707197504860e-01 - 1.282800000000e-09 -3.916660474216e-01 - 1.292800000000e-09 -5.087606367752e-01 - 1.302800000000e-09 -5.803016232270e-01 - 1.312800000000e-09 -5.444413186477e-01 - 1.322800000000e-09 -3.977418947932e-01 - 1.332800000000e-09 -2.123689566689e-01 - 1.342800000000e-09 -3.326433605185e-02 - 1.352800000000e-09 1.245198660865e-01 - 1.362800000000e-09 2.572914801001e-01 - 1.372800000000e-09 3.786884397038e-01 - 1.382800000000e-09 4.970287842619e-01 - 1.392800000000e-09 5.770140673465e-01 - 1.402800000000e-09 5.543068732670e-01 - 1.412800000000e-09 4.172944393038e-01 - 1.422800000000e-09 2.326135914048e-01 - 1.432800000000e-09 5.200031629165e-02 - 1.442800000000e-09 -1.087117173734e-01 - 1.452800000000e-09 -2.436934942172e-01 - 1.462800000000e-09 -3.656702152799e-01 - 1.472800000000e-09 -4.848025482630e-01 - 1.482800000000e-09 -5.723385369588e-01 - 1.492800000000e-09 -5.626458033125e-01 - 1.502800000000e-09 -4.362543636943e-01 - 1.512800000000e-09 -2.528118155371e-01 - 1.522800000000e-09 -7.087265053387e-02 - 1.532800000000e-09 9.266186071927e-02 - 1.542800000000e-09 2.300274395412e-01 - 1.552800000000e-09 3.527140919248e-01 - 1.562800000000e-09 4.722911338649e-01 - 1.572800000000e-09 5.664223472519e-01 - 1.582800000000e-09 5.694169369289e-01 - 1.592800000000e-09 4.543351006071e-01 - 1.602800000000e-09 2.728185799251e-01 - 1.612800000000e-09 8.974653097500e-02 - 1.622800000000e-09 -7.645342918533e-02 - 1.632800000000e-09 -2.163412758022e-01 - 1.642800000000e-09 -3.398672125281e-01 - 1.652800000000e-09 -4.596702740436e-01 - 1.662800000000e-09 -5.594547917655e-01 - 1.672800000000e-09 -5.746885318592e-01 - 1.682800000000e-09 -4.713817902736e-01 - 1.692800000000e-09 -2.925998303757e-01 - 1.702800000000e-09 -1.085902848019e-01 - 1.712800000000e-09 6.009271011551e-02 - 1.722800000000e-09 2.026110402562e-01 - 1.732800000000e-09 3.271137583800e-01 - 1.742800000000e-09 4.470366757261e-01 - 1.752800000000e-09 5.516024260258e-01 - 1.762800000000e-09 5.785682691472e-01 - 1.772800000000e-09 4.872997263391e-01 - 1.782800000000e-09 3.121706971956e-01 - 1.792800000000e-09 1.275093354174e-01 - 1.802800000000e-09 -4.339966691138e-02 - 1.812800000000e-09 -1.885914489076e-01 - 1.822800000000e-09 -3.142192224600e-01 - 1.832800000000e-09 -4.343522534326e-01 - 1.842800000000e-09 -5.430041650422e-01 - 1.852800000000e-09 -5.811837349212e-01 - 1.862800000000e-09 -5.023856761573e-01 - 1.872800000000e-09 -3.319418855515e-01 - 1.882800000000e-09 -1.467398868003e-01 - 1.892800000000e-09 2.631801497144e-02 - 1.902800000000e-09 1.743391836774e-01 - 1.912800000000e-09 3.012879943958e-01 - 1.922800000000e-09 4.215592295324e-01 - 1.932800000000e-09 5.336096259357e-01 - 1.942800000000e-09 5.825911854269e-01 - 1.952800000000e-09 5.163685478590e-01 - 1.962800000000e-09 3.514506166310e-01 - 1.972800000000e-09 1.658449567189e-01 - 1.982800000000e-09 -9.123570295392e-03 - 1.992800000000e-09 -1.599641527363e-01 - 2.000000000000e-09 -2.536669268561e-01 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/diff_ring_oscillator.sym b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/diff_ring_oscillator.sym deleted file mode 100644 index e632b156..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/run_0/diff_ring_oscillator.sym +++ /dev/null @@ -1,27 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {type=primitive -format="@name @pinlist @symname" -template="name=x1" -} -V {} -S {} -E {} -L 4 70 -20 90 -20 {} -L 4 70 20 90 20 {} -L 7 20 70 20 90 {} -L 7 -20 70 -20 90 {} -B 5 87.5 -22.5 92.5 -17.5 {name=Voplus dir=out} -B 5 17.5 87.5 22.5 92.5 {name=vdd dir=inout} -B 5 -22.5 87.5 -17.5 92.5 {name=gnd dir=inout} -B 5 87.5 17.5 92.5 22.5 {name=Vominus dir=out} -A 4 -1.666666666666714 1.666666666666714 71.68604389202189 287.5924245621816 360 {} -A 4 -30 27.5 40.69705149024927 42.51044707800085 94.97910584399833 {} -A 4 30 -27.5 40.69705149024927 222.5104470780009 94.97910584399833 {} -T {@symname} -40.5 -56 0 0 0.1 0.1 {} -T {@name} -40 -47 0 0 0.1 0.1 { -} -T {Voplus} 65 -24 0 1 0.2 0.2 {} -T {vdd} 5 64 2 1 0.2 0.2 {} -T {gnd} -35 64 2 1 0.2 0.2 {} -T {Vominus} 65 16 0 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/simulation_summary.csv b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/simulation_summary.csv deleted file mode 100644 index 8f65c459..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/simulation_summary.csv +++ /dev/null @@ -1,2 +0,0 @@ -run,time_axis,vo_diff,frequency -run_0,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.292e-02, -1.722e-01, -3.004e-01, …]",5.414e+09 diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/simulation_summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/simulation_summary.md deleted file mode 100644 index a45b7af4..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/parameters/Frequency/simulation_summary.md +++ /dev/null @@ -1,5 +0,0 @@ -# Simulation Summary for Freq - -| run | time_axis | vo_diff | frequency | -| :-- | --------: | ------: | --------: | -| run_0 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.292e-02, -1.722e-01, -3.004e-01, …] | 5.414e+09 | diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/summary.md b/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/summary.md deleted file mode 100644 index a5320ec1..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/runs/RUN_2025-11-11_17-40-06/summary.md +++ /dev/null @@ -1,9 +0,0 @@ - -# CACE Summary for diff_ring_oscillator - -**netlist source**: schematic - -| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | -| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | -| Freq | ngspice | frequency | 4.2 GHz | 5.414 GHz | 5.4 GHz | 5.414 GHz | 7.1 GHz | 5.414 GHz | Pass ✅ | - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/testbench/diff_oscillator_tb.sch b/modules/module_4_type_2_PLL/diff_Roscillator/testbench/diff_oscillator_tb.sch deleted file mode 100644 index 40030ac1..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/testbench/diff_oscillator_tb.sch +++ /dev/null @@ -1,113 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -B 2 1060 -700 1860 -300 {flags=graph -y1=-0.023 -y2=0.7 -ypos1=0 -ypos2=2 -divy=5 -subdivy=1 -unity=1 -x1=2.2231151e-07 -x2=2.2291988e-07 -divx=5 -subdivx=1 -xlabmag=1.0 -ylabmag=1.0 -dataset=-1 -unitx=1 -logx=0 -logy=0 -color="4 7 12" -node="voplus -vominus -vo_diff"} -N 350 -300 350 -270 {lab=vdd} -N 350 -210 350 -180 {lab=GND} -N 600 -290 600 -270 {lab=GND} -N 640 -290 640 -270 {lab=vdd} -N 710 -400 740 -400 {lab=Voplus} -N 710 -360 740 -360 {lab=Vominus} -C {opin.sym} 740 -400 0 0 {name=p3 lab=Voplus} -C {opin.sym} 740 -360 2 1 {name=p4 lab=Vominus} -C {code_shown.sym} 10 -1120 0 0 {name=transient_tb only_toplevel=false -value=" -.include diff_oscillator_tb.save -.param temp=27 -.ic V(Voplus)=1.2 -.control -set noaskquit -set numdgt=12 - -* Save & simulate -save all -op -write diff_oscillator_tb.raw -set appendwrite -tran 10p 1u 160p -save all - -* Explicit vectors -let vo_p = v(Voplus) -let vo_m = v(Vominus) -let vo_diff = vo_p - vo_m - -* --- Main output (mimic CACE naming, just to compare) --- -set wr_singlescale -wrdata differential_output.txt vo_diff - -* --- Extra debug (like we did for CACE) --- -set wr_vecnames -wrdata manual_debug.dat time vo_p vo_m vo_diff -unset wr_vecnames - -write diff_oscillator_tb.raw -.endc -"} -C {devices/code_shown.sym} 10 -460 0 0 {name=MODEL only_toplevel=true -format="tcleval( @value )" -value=".lib cornerMOSlv.lib mos_tt -" -} -C {launcher.sym} 1120 -240 0 0 {name=h3 -descr=SimulateNGSPICE -tclcommand=" -# Setup the default simulation commands if not already set up -# for example by already launched simulations. -set_sim_defaults -puts $sim(spice,1,cmd) - -# Change the Xyce command. In the spice category there are currently -# 5 commands (0, 1, 2, 3, 4). Command 3 is the Xyce batch -# you can get the number by querying $sim(spice,n) -set sim(spice,1,cmd) \{ngspice \\"$N\\" -a\} - -# change the simulator to be used (Xyce) -set sim(spice,default) 0 - -# Create FET and BIP .save file -mkdir -p $netlist_dir -write_data [save_params] $netlist_dir/[file rootname [file tail [xschem get current_name]]].save - -# run netlist and simulation -xschem netlist -simulate -"} -C {devices/launcher.sym} 1120 -280 0 0 {name=h1 -descr="OP annotate" -tclcommand="xschem annotate_op" -} -C {launcher.sym} 1120 -190 0 0 {name=h5 -descr="load waves" -tclcommand="xschem raw_read $netlist_dir/diff_oscillator_tb.raw tran" -} -C {vsource.sym} 350 -240 0 0 {name=V1 value=1.2 savecurrent=false} -C {gnd.sym} 350 -180 0 0 {name=l2 lab=GND} -C {lab_pin.sym} 350 -300 0 0 {name=p2 sig_type=std_logic lab=vdd} -C {diff_ring_oscillator.sym} 620 -380 0 0 {name=x1} -C {gnd.sym} 600 -270 0 0 {name=l1 lab=GND} -C {lab_pin.sym} 640 -270 0 1 {name=p1 sig_type=std_logic lab=vdd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/testbench/diff_oscillator_tb.sym b/modules/module_4_type_2_PLL/diff_Roscillator/testbench/diff_oscillator_tb.sym deleted file mode 100644 index 35d2073e..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/testbench/diff_oscillator_tb.sym +++ /dev/null @@ -1,14 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -K {type=subcircuit -format="@name @pinlist @symname" -template="name=x1" -} -T {@symname} -99 -6 0 0 0.3 0.3 {} -T {@name} 135 -32 0 0 0.2 0.2 {} -P 4 5 130 -20 -130 -20 -130 20 130 20 130 -20 {} -B 5 147.5 -12.5 152.5 -7.5 {name=Voplus dir=out} -L 4 130 -10 150 -10 {} -T {Voplus} 125 -14 0 1 0.2 0.2 {} -B 5 147.5 7.5 152.5 12.5 {name=Vominus dir=out} -L 4 130 10 150 10 {} -T {Vominus} 125 6 0 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/testbench/python/freq.py b/modules/module_4_type_2_PLL/diff_Roscillator/testbench/python/freq.py deleted file mode 100644 index 5fe904f3..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/testbench/python/freq.py +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env python3 -import sys -import numpy as np -import matplotlib -matplotlib.use("Agg") # Use non-GUI backend for batch plotting -import matplotlib.pyplot as plt - -def main(): - if len(sys.argv) < 2: - print("Usage: python plot_diffout.py data.txt") - sys.exit(1) - - filename = sys.argv[1] - - # Load data (two columns: time, differential output) - data = np.loadtxt(filename) - t = data[:, 0] - y = data[:, 1] - - # Plot - plt.figure(figsize=(8,5)) - plt.plot(t, y, label="Differential Output") - plt.xlabel("Time (s)") - plt.ylabel("Differential Output (V)") - plt.title("Differential Output vs Time") - plt.legend() - plt.grid(True) - - # Save plot as PNG - outname = filename.replace(".txt", ".png") - plt.savefig(outname, dpi=300) - plt.close() - print(f"Saved plot as {outname}") - - # Estimate frequency using FFT - # Compute sampling interval - dt = np.mean(np.diff(t)) - fs = 1/dt # sampling frequency - - # FFT - Y = np.fft.fft(y - np.mean(y)) # remove DC component - freqs = np.fft.fftfreq(len(Y), d=dt) - - # Only positive frequencies - mask = freqs > 0 - freqs = freqs[mask] - Y = np.abs(Y[mask]) - - # Find frequency with maximum magnitude - freq_peak = freqs[np.argmax(Y)] - print(f"Estimated frequency: {freq_peak:.3e} Hz") - -if __name__ == "__main__": - main() diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/testbench/python/pn_spectrum.py b/modules/module_4_type_2_PLL/diff_Roscillator/testbench/python/pn_spectrum.py deleted file mode 100644 index 203f4622..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/testbench/python/pn_spectrum.py +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/env python3 -""" -pn_batch.py - -Usage: - python pn_batch.py data1.txt data2.txt ... - -Input format: - - Two columns: time[s] v[t] - - Three columns: time[s] vp[t] vn[t] (script will use vp - vn) - -Outputs: - - ./spectrum/_phase_noise.png - - printed summary: carrier freq estimate, fs (after resample), record length, samples -""" - -import sys -from pathlib import Path -import numpy as np -import matplotlib.pyplot as plt -from scipy.signal import welch, butter, filtfilt -from scipy.interpolate import interp1d - -# --------- Parameters you can tweak ---------- -RESAMPLE = True # resample to uniform grid if input isn't uniform -TARGET_SAMPLES = 200000 # target samples when resampling (tradeoff mem / res) -LPF_BW = None # if None, autopick based on carrier (see code). Bandwidth for baseband LPF (Hz) -NPERSEG = None # if None, will choose based on record length (see code) -OVERLAP = 0.5 # fraction for Welch overlap -# ------------------------------------------------ - -def load_data(fname): - data = np.loadtxt(fname) - if data.ndim == 1 or data.shape[1] == 1: - raise ValueError("File must have 2 or 3 columns (time, v) or (time, vp, vn)") - t = data[:,0] - if data.shape[1] == 2: - v = data[:,1] - else: - v = data[:,1] - data[:,2] - return t, v - -def uniform_resample(t, v, target_samples=200000): - # build uniform grid from min->max with target_samples (bounded) - t0, t1 = float(t[0]), float(t[-1]) - dt_median = np.median(np.diff(t)) - if dt_median == 0: - raise ValueError("Median dt is zero: check the input file for repeated timestamps.") - N = min(target_samples, max(1024, int((t1 - t0) / dt_median))) - tu = np.linspace(t0, t1, N) - interp = interp1d(t, v, kind='cubic', bounds_error=False, fill_value="extrapolate") - vu = interp(tu) - return tu, vu - -def estimate_carrier_freq(t, v, fs_est=None): - # Quick FFT-based estimate (uses zero-padding for better resolution) - N = len(t) - i0, i1 = N//4, 3*N//4 - x = v[i0:i1] * np.hanning(i1-i0) - nfft = 1 << (int(np.ceil(np.log2(len(x)))) + 3) - X = np.fft.rfft(x, n=nfft) - freqs = np.fft.rfftfreq(nfft, d=(t[1]-t[0])) - mag = np.abs(X) - idx = np.argmax(mag) - # parabolic refine around peak - if 1 <= idx < len(mag)-1: - alpha = mag[idx-1] - beta = mag[idx] - gamma = mag[idx+1] - p = 0.5*(alpha - gamma)/(alpha - 2*beta + gamma) - peak_freq = (freqs[idx] + p*(freqs[1]-freqs[0])) - else: - peak_freq = freqs[idx] - return peak_freq - -def lowpass_iq(t, v, fc, fs_bb): - # Mix down to baseband using the estimated fc, then lowpass to fs_bb/2 - t = np.asarray(t) - carrier = 2*np.pi*fc*t - I = v * np.cos(carrier) - Q = -v * np.sin(carrier) - - nyq = 0.5 * (1.0/(t[1]-t[0])) - cutoff = min(0.5*fs_bb, nyq*0.9) - b, a = butter(4, cutoff/nyq) - I_f = filtfilt(b, a, I) - Q_f = filtfilt(b, a, Q) - - t_start, t_end = t[0], t[-1] - num = int(np.floor((t_end - t_start) * fs_bb)) - if num < 16: - raise ValueError("fs_bb too high or record too short for downsampling. Decrease fs_bb.") - tb = np.linspace(t_start, t_end, num) - I_interp = interp1d(t, I_f, kind='cubic')(tb) - Q_interp = interp1d(t, Q_f, kind='cubic')(tb) - return tb, I_interp, Q_interp - -def compute_phase_from_iq(I, Q): - phase = np.unwrap(np.arctan2(Q, I)) - return phase - -def phase_to_LdBcHz(phase, fs_bb, nperseg=None, overlap=0.5): - if nperseg is None: - nperseg = min(len(phase), 2**14) - noverlap = int(nperseg * overlap) - f, Pphi = welch(phase, fs=fs_bb, nperseg=nperseg, noverlap=noverlap, scaling='density', window='hann') - L = 10*np.log10(0.5 * Pphi) - return f, L - -def process_file(fname): - fname = Path(fname) - t, v = load_data(fname) - sort_idx = np.argsort(t) - t = t[sort_idx] - v = v[sort_idx] - - if RESAMPLE: - t_u, v_u = uniform_resample(t, v, target_samples=TARGET_SAMPLES) - else: - dt = np.diff(t) - if np.max(dt) - np.min(dt) > 1e-12: - t_u, v_u = uniform_resample(t, v, target_samples=TARGET_SAMPLES) - else: - t_u, v_u = t, v - - dt = t_u[1] - t_u[0] - fs = 1.0 / dt - T = t_u[-1] - t_u[0] - - fc = estimate_carrier_freq(t_u, v_u, fs_est=fs) - - if LPF_BW is None: - fs_bb = min(1e6, max(200000.0, fs/20)) - else: - fs_bb = max(1000.0, LPF_BW*4) - - nyq_orig = 0.5*fs - if fs_bb > nyq_orig*0.9: - fs_bb = nyq_orig*0.9 - - try: - tb, Ibb, Qbb = lowpass_iq(t_u, v_u, fc, fs_bb) - except Exception as e: - raise RuntimeError("IQ demod failed: " + str(e)) - - phase = compute_phase_from_iq(Ibb, Qbb) - p = np.polyfit(tb, phase, 1) - phase_dev = phase - np.polyval(p, tb) - - if NPERSEG is None: - nperseg = int(max(256, min(len(phase_dev), int(fs_bb * (T/8.0))))) - nperseg = 1 << int(np.floor(np.log2(nperseg))) - else: - nperseg = NPERSEG - - f, L = phase_to_LdBcHz(phase_dev, fs_bb, nperseg=nperseg, overlap=OVERLAP) - - outdir = Path("spectrum") - outdir.mkdir(parents=True, exist_ok=True) - out_png = outdir / (fname.stem + "_phase_noise.png") - - plt.figure(figsize=(6.5,4)) - plt.semilogx(f, L) - plt.xlim(max(1.0, f[1]), f[-1]) - plt.xlabel("Offset frequency [Hz]") - plt.ylabel("Phase noise [dBc/Hz]") - plt.title(f"{fname.name} fc~{fc/1e6:.6f} MHz fs_bb={fs_bb/1e3:.1f} kHz T={T*1e6:.3f} µs") - plt.grid(True, which='both', ls=':', alpha=0.6) - plt.tight_layout() - plt.savefig(out_png, dpi=150) - plt.close() - - print(f"{fname.name}: fc={fc:.3f} Hz, fs={fs:.1f} Hz, T={T:.6f} s, samples={len(t_u)}") - -def main(): - if len(sys.argv) < 2: - print("Usage: python pn_batch.py data1.txt data2.txt ...") - sys.exit(1) - for f in sys.argv[1:]: - try: - process_file(f) - except Exception as e: - print(f"Error processing {f}: {e}") - -if __name__ == "__main__": - main() diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/testbench/simulations/diff_oscillator_tb.save b/modules/module_4_type_2_PLL/diff_Roscillator/testbench/simulations/diff_oscillator_tb.save deleted file mode 100644 index 235abce2..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/testbench/simulations/diff_oscillator_tb.save +++ /dev/null @@ -1,62 +0,0 @@ -* Place this .save file with a .include line in your testbench - -.save @n.x1.x1.xm1.nsg13_lv_nmos[ids] -.save @n.x1.x1.xm1.nsg13_lv_nmos[gm] -.save @n.x1.x1.xm1.nsg13_lv_nmos[gds] -.save @n.x1.x1.xm1.nsg13_lv_nmos[vth] -.save @n.x1.x1.xm1.nsg13_lv_nmos[vgs] -.save @n.x1.x1.xm1.nsg13_lv_nmos[vdss] -.save @n.x1.x1.xm1.nsg13_lv_nmos[vds] -.save @n.x1.x1.xm1.nsg13_lv_nmos[cgg] -.save @n.x1.x1.xm1.nsg13_lv_nmos[cgsol] -.save @n.x1.x1.xm1.nsg13_lv_nmos[cgdol] -.save @n.x1.x1.xm2.nsg13_lv_nmos[ids] -.save @n.x1.x1.xm2.nsg13_lv_nmos[gm] -.save @n.x1.x1.xm2.nsg13_lv_nmos[gds] -.save @n.x1.x1.xm2.nsg13_lv_nmos[vth] -.save @n.x1.x1.xm2.nsg13_lv_nmos[vgs] -.save @n.x1.x1.xm2.nsg13_lv_nmos[vdss] -.save @n.x1.x1.xm2.nsg13_lv_nmos[vds] -.save @n.x1.x1.xm2.nsg13_lv_nmos[cgg] -.save @n.x1.x1.xm2.nsg13_lv_nmos[cgsol] -.save @n.x1.x1.xm2.nsg13_lv_nmos[cgdol] -.save @n.x1.x2.xm1.nsg13_lv_nmos[ids] -.save @n.x1.x2.xm1.nsg13_lv_nmos[gm] -.save @n.x1.x2.xm1.nsg13_lv_nmos[gds] -.save @n.x1.x2.xm1.nsg13_lv_nmos[vth] -.save @n.x1.x2.xm1.nsg13_lv_nmos[vgs] -.save @n.x1.x2.xm1.nsg13_lv_nmos[vdss] -.save @n.x1.x2.xm1.nsg13_lv_nmos[vds] -.save @n.x1.x2.xm1.nsg13_lv_nmos[cgg] -.save @n.x1.x2.xm1.nsg13_lv_nmos[cgsol] -.save @n.x1.x2.xm1.nsg13_lv_nmos[cgdol] -.save @n.x1.x2.xm2.nsg13_lv_nmos[ids] -.save @n.x1.x2.xm2.nsg13_lv_nmos[gm] -.save @n.x1.x2.xm2.nsg13_lv_nmos[gds] -.save @n.x1.x2.xm2.nsg13_lv_nmos[vth] -.save @n.x1.x2.xm2.nsg13_lv_nmos[vgs] -.save @n.x1.x2.xm2.nsg13_lv_nmos[vdss] -.save @n.x1.x2.xm2.nsg13_lv_nmos[vds] -.save @n.x1.x2.xm2.nsg13_lv_nmos[cgg] -.save @n.x1.x2.xm2.nsg13_lv_nmos[cgsol] -.save @n.x1.x2.xm2.nsg13_lv_nmos[cgdol] -.save @n.x1.x3.xm1.nsg13_lv_nmos[ids] -.save @n.x1.x3.xm1.nsg13_lv_nmos[gm] -.save @n.x1.x3.xm1.nsg13_lv_nmos[gds] -.save @n.x1.x3.xm1.nsg13_lv_nmos[vth] -.save @n.x1.x3.xm1.nsg13_lv_nmos[vgs] -.save @n.x1.x3.xm1.nsg13_lv_nmos[vdss] -.save @n.x1.x3.xm1.nsg13_lv_nmos[vds] -.save @n.x1.x3.xm1.nsg13_lv_nmos[cgg] -.save @n.x1.x3.xm1.nsg13_lv_nmos[cgsol] -.save @n.x1.x3.xm1.nsg13_lv_nmos[cgdol] -.save @n.x1.x3.xm2.nsg13_lv_nmos[ids] -.save @n.x1.x3.xm2.nsg13_lv_nmos[gm] -.save @n.x1.x3.xm2.nsg13_lv_nmos[gds] -.save @n.x1.x3.xm2.nsg13_lv_nmos[vth] -.save @n.x1.x3.xm2.nsg13_lv_nmos[vgs] -.save @n.x1.x3.xm2.nsg13_lv_nmos[vdss] -.save @n.x1.x3.xm2.nsg13_lv_nmos[vds] -.save @n.x1.x3.xm2.nsg13_lv_nmos[cgg] -.save @n.x1.x3.xm2.nsg13_lv_nmos[cgsol] -.save @n.x1.x3.xm2.nsg13_lv_nmos[cgdol] diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/testbench/spectrum/differential_output_phase_noise.png b/modules/module_4_type_2_PLL/diff_Roscillator/testbench/spectrum/differential_output_phase_noise.png deleted file mode 100644 index e6a42d1b20f3743f67aa9d0c5760265faf49b810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141938 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%0APC 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 X6R%sTcZ?diBy_guZcg5K=*<5D_0hUz diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/testbench/xschemrc b/modules/module_4_type_2_PLL/diff_Roscillator/testbench/xschemrc deleted file mode 100644 index 34b6db6d..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/testbench/xschemrc +++ /dev/null @@ -1,18 +0,0 @@ -# xschemrc - Custom configuration file for xschem -# This file sources another xschemrc file from a known location - -# Source the base configuration from a known location -source $::env(PDK_ROOT)/$::env(PDK)/libs.tech/xschem/xschemrc - -# (Optional) Add any custom overrides or extensions below -# set xschem_library_path /home/user/my_libs -# set xschem_gui_font "Monospace 10" - -#### include skywater libraries. Here I use [pwd]. This works if I start xschem from here. -###only if you dont have this setup already ### -###append XSCHEM_LIBRARY_PATH :[file dirname [info script]] - - -#### Add custom libraries (directories with .lib files) -append XSCHEM_LIBRARY_PATH :../xschem/ - diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/xschem/diff_ring_oscillator.sch b/modules/module_4_type_2_PLL/diff_Roscillator/xschem/diff_ring_oscillator.sch deleted file mode 100644 index f52c0e30..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/xschem/diff_ring_oscillator.sch +++ /dev/null @@ -1,37 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 560 -430 610 -430 {lab=#net1} -N 560 -350 610 -350 {lab=#net2} -N 760 -430 810 -430 {lab=#net3} -N 760 -350 810 -350 {lab=#net4} -N 460 -480 460 -460 {lab=vdd} -N 660 -480 860 -480 {lab=vdd} -N 860 -480 860 -460 {lab=vdd} -N 660 -480 660 -460 {lab=vdd} -N 460 -480 660 -480 {lab=vdd} -N 460 -320 460 -300 {lab=gnd} -N 460 -300 660 -300 {lab=gnd} -N 660 -320 660 -300 {lab=gnd} -N 660 -300 860 -300 {lab=gnd} -N 860 -320 860 -300 {lab=gnd} -N 390 -430 410 -430 {lab=#net5} -N 390 -520 980 -520 {lab=#net5} -N 960 -430 980 -430 {lab=#net5} -N 390 -520 390 -430 {lab=#net5} -N 980 -520 980 -430 {lab=#net5} -N 980 -350 980 -260 {lab=Voplus} -N 960 -350 980 -350 {lab=Voplus} -N 390 -350 410 -350 {lab=Voplus} -N 390 -350 390 -260 {lab=Voplus} -N 390 -260 980 -260 {lab=Voplus} -C {differential_core.sym} 560 -390 0 0 {name=x1} -C {differential_core.sym} 760 -390 0 0 {name=x2} -C {differential_core.sym} 960 -390 0 0 {name=x3} -C {opin.sym} 980 -260 0 0 {name=p3 lab=Voplus} -C {opin.sym} 980 -510 2 1 {name=p4 lab=Vominus} -C {iopin.sym} 860 -480 0 0 {name=p1 lab=vdd} -C {iopin.sym} 860 -300 0 0 {name=p2 lab=gnd} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/xschem/diff_ring_oscillator.sym b/modules/module_4_type_2_PLL/diff_Roscillator/xschem/diff_ring_oscillator.sym deleted file mode 100644 index b9399769..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/xschem/diff_ring_oscillator.sym +++ /dev/null @@ -1,27 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {type=subcircuit -format="@name @pinlist @symname" -template="name=x1" -} -V {} -S {} -E {} -L 4 70 -20 90 -20 {} -L 4 70 20 90 20 {} -L 7 20 70 20 90 {} -L 7 -20 70 -20 90 {} -B 5 87.5 -22.5 92.5 -17.5 {name=Voplus dir=out} -B 5 17.5 87.5 22.5 92.5 {name=vdd dir=inout} -B 5 -22.5 87.5 -17.5 92.5 {name=gnd dir=inout} -B 5 87.5 17.5 92.5 22.5 {name=Vominus dir=out} -A 4 -1.666666666666714 1.666666666666714 71.68604389202189 287.5924245621816 360 {} -A 4 -30 27.5 40.69705149024927 42.51044707800085 94.97910584399833 {} -A 4 30 -27.5 40.69705149024927 222.5104470780009 94.97910584399833 {} -T {@symname} -40.5 -56 0 0 0.1 0.1 {} -T {@name} -40 -47 0 0 0.1 0.1 { -} -T {Voplus} 65 -24 0 1 0.2 0.2 {} -T {vdd} 5 64 2 1 0.2 0.2 {} -T {gnd} -35 64 2 1 0.2 0.2 {} -T {Vominus} 65 16 0 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/xschem/differential_core.sch b/modules/module_4_type_2_PLL/diff_Roscillator/xschem/differential_core.sch deleted file mode 100644 index 0dcc4282..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/xschem/differential_core.sch +++ /dev/null @@ -1,82 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {} -V {} -S {} -E {} -N 150 -100 150 -50 {lab=#net1} -N 280 -50 410 -50 {lab=#net1} -N 410 -100 410 -50 {lab=#net1} -N 280 -50 280 -20 {lab=#net1} -N 150 -50 280 -50 {lab=#net1} -N 150 -220 150 -160 {lab=Out-} -N 410 -220 410 -160 {lab=Out+} -N 150 -330 150 -290 {lab=vdd} -N 410 -330 410 -290 {lab=vdd} -N 280 -330 410 -330 {lab=vdd} -N 80 -130 110 -130 {lab=In+} -N 450 -130 480 -130 {lab=In-} -N 150 -330 280 -330 {lab=vdd} -N 280 -370 280 -330 {lab=vdd} -N 150 -130 200 -130 {lab=gnd} -N 360 -130 410 -130 {lab=gnd} -N 0 -220 150 -220 {lab=Out-} -N 150 -230 150 -220 {lab=Out-} -N -0 -220 -0 -200 {lab=Out-} -N -30 -220 0 -220 {lab=Out-} -N -0 -140 -0 -120 {lab=gnd} -N 410 -220 560 -220 {lab=Out+} -N 560 -220 560 -200 {lab=Out+} -N 560 -220 590 -220 {lab=Out+} -N 560 -140 560 -120 {lab=gnd} -N 410 -240 410 -220 {lab=Out+} -N 280 40 280 60 {lab=gnd} -C {sg13g2_pr/sg13_lv_nmos.sym} 430 -130 0 1 {name=M1 -l=0.26u -w=2.6u -ng=1 -m=1 -model=sg13_lv_nmos -spiceprefix=X -} -C {sg13g2_pr/sg13_lv_nmos.sym} 130 -130 0 0 {name=M2 -l=0.26u -w=2.6u -ng=1 -m=1 -model=sg13_lv_nmos -spiceprefix=X -} -C {res.sym} 150 -260 0 0 {name=R1 -value=5k -footprint=1206 -device=resistor -m=1} -C {res.sym} 410 -260 0 0 {name=R2 -value=5k -footprint=1206 -device=resistor -m=1} -C {ipin.sym} 80 -130 0 0 {name=p3 lab=In+} -C {iopin.sym} 280 -370 2 0 {name=p5 lab=vdd} -C {iopin.sym} 280 60 2 0 {name=p1 lab=gnd} -C {lab_pin.sym} 360 -130 0 0 {name=p2 sig_type=std_logic lab=gnd} -C {lab_pin.sym} 200 -130 2 0 {name=p6 sig_type=std_logic lab=gnd} -C {capa.sym} 0 -170 0 0 {name=C1 -m=1 -value=0.5f -footprint=1206 -device="ceramic capacitor"} -C {lab_pin.sym} 0 -120 0 0 {name=p7 sig_type=std_logic lab=gnd} -C {ipin.sym} 480 -130 0 1 {name=p8 lab=In-} -C {capa.sym} 560 -170 0 1 {name=C2 -m=1 -value=0.5f -footprint=1206 -device="ceramic capacitor"} -C {lab_pin.sym} 560 -120 0 1 {name=p9 sig_type=std_logic lab=gnd} -C {opin.sym} 590 -220 0 0 {name=p10 lab=Out+} -C {opin.sym} -30 -220 0 1 {name=p11 lab=Out-} -C {isource.sym} 280 10 0 0 {name=I0 value=200u} -C {sg13g2_pr/annotate_fet_params.sym} 700 -230 0 0 {name=annot1 ref=M1} -C {sg13g2_pr/annotate_fet_params.sym} 810 -230 0 0 {name=annot2 ref=M2} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/xschem/differential_core.sym b/modules/module_4_type_2_PLL/diff_Roscillator/xschem/differential_core.sym deleted file mode 100644 index 0fcc760d..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/xschem/differential_core.sym +++ /dev/null @@ -1,30 +0,0 @@ -v {xschem version=3.4.6 file_version=1.2} -G {} -K {type=subcircuit -format="@name @pinlist @symname" -template="name=x1" -} -V {} -S {} -E {} -L 4 -20 40 0 40 {} -L 4 -20 -40 0 -40 {} -L 4 -150 -40 -130 -40 {} -L 4 -150 40 -130 40 {} -L 7 -100 -70 -100 -50 {} -L 7 -100 50 -100 70 {} -B 5 -102.5 -72.5 -97.5 -67.5 {name=vdd dir=inout} -B 5 -2.5 37.5 2.5 42.5 {name=Out+ dir=out} -B 5 -2.5 -42.5 2.5 -37.5 {name=Out- dir=out} -B 5 -152.5 -42.5 -147.5 -37.5 {name=In+ dir=in} -B 5 -152.5 37.5 -147.5 42.5 {name=In- dir=in} -B 5 -102.5 67.5 -97.5 72.5 {name=gnd dir=inout} -P 4 5 0 0 -130 -60 -130 60 0 0 0 0 {} -T {@symname} -124.5 4 0 0 0.1 0.1 {} -T {@name} -68.75 4.25 0 0 0.1 0.1 {} -T {vdd} -105 -26 2 1 0.2 0.2 {} -T {Out+} -25 36 0 1 0.2 0.2 {} -T {Out-} -25 -44 0 1 0.2 0.2 {} -T {In+} -125 -44 0 0 0.2 0.2 {} -T {In-} -125 36 0 0 0.2 0.2 {} -T {gnd} -105 44 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/diff_Roscillator/xschem/xschemrc b/modules/module_4_type_2_PLL/diff_Roscillator/xschem/xschemrc deleted file mode 100644 index 34b6db6d..00000000 --- a/modules/module_4_type_2_PLL/diff_Roscillator/xschem/xschemrc +++ /dev/null @@ -1,18 +0,0 @@ -# xschemrc - Custom configuration file for xschem -# This file sources another xschemrc file from a known location - -# Source the base configuration from a known location -source $::env(PDK_ROOT)/$::env(PDK)/libs.tech/xschem/xschemrc - -# (Optional) Add any custom overrides or extensions below -# set xschem_library_path /home/user/my_libs -# set xschem_gui_font "Monospace 10" - -#### include skywater libraries. Here I use [pwd]. This works if I start xschem from here. -###only if you dont have this setup already ### -###append XSCHEM_LIBRARY_PATH :[file dirname [info script]] - - -#### Add custom libraries (directories with .lib files) -append XSCHEM_LIBRARY_PATH :../xschem/ -