From ecce5eea7c0262d15a32012a54c14ce1f76c0563 Mon Sep 17 00:00:00 2001 From: Phillip Ferreira Baade-Pedersen Date: Tue, 18 Nov 2025 14:17:02 +0100 Subject: [PATCH] add LC oscillator --- .../scripts/__pycache__/freq.cpython-312.pyc | Bin 0 -> 1649 bytes .../cace/templates/CML_core_tb.sch | 8 +- .../parameters/ac_params/CML_core_tb.sch | 71 ++ .../parameters/ac_params/run_00/.spiceinit | 30 + .../ac_params/run_00/CML_core_tb.sch | 71 ++ .../ac_params/run_00/CML_core_tb_0.data | 85 ++ .../ac_params/run_00/CML_divider.sym | 30 + .../ac_params/run_00/conditions.yaml | 9 + .../parameters/ac_params/run_01/.spiceinit | 30 + .../ac_params/run_01/CML_core_tb.sch | 71 ++ .../ac_params/run_01/CML_core_tb_1.data | 85 ++ .../ac_params/run_01/CML_divider.sym | 30 + .../ac_params/run_01/conditions.yaml | 9 + .../parameters/ac_params/run_02/.spiceinit | 30 + .../ac_params/run_02/CML_core_tb.sch | 71 ++ .../ac_params/run_02/CML_core_tb_2.data | 85 ++ .../ac_params/run_02/CML_divider.sym | 30 + .../ac_params/run_02/conditions.yaml | 9 + .../parameters/ac_params/run_03/.spiceinit | 30 + .../ac_params/run_03/CML_core_tb.sch | 71 ++ .../ac_params/run_03/CML_core_tb_3.data | 85 ++ .../ac_params/run_03/CML_divider.sym | 30 + .../ac_params/run_03/conditions.yaml | 9 + .../parameters/ac_params/run_04/.spiceinit | 30 + .../ac_params/run_04/CML_core_tb.sch | 71 ++ .../ac_params/run_04/CML_core_tb_4.data | 85 ++ .../ac_params/run_04/CML_divider.sym | 30 + .../ac_params/run_04/conditions.yaml | 9 + .../parameters/ac_params/run_05/.spiceinit | 30 + .../ac_params/run_05/CML_core_tb.sch | 71 ++ .../ac_params/run_05/CML_core_tb_5.data | 85 ++ .../ac_params/run_05/CML_divider.sym | 30 + .../ac_params/run_05/conditions.yaml | 9 + .../parameters/ac_params/run_06/.spiceinit | 30 + .../ac_params/run_06/CML_core_tb.sch | 71 ++ .../ac_params/run_06/CML_core_tb_6.data | 85 ++ .../ac_params/run_06/CML_divider.sym | 30 + .../ac_params/run_06/conditions.yaml | 9 + .../parameters/ac_params/run_07/.spiceinit | 30 + .../ac_params/run_07/CML_core_tb.sch | 71 ++ .../ac_params/run_07/CML_core_tb_7.data | 85 ++ .../ac_params/run_07/CML_divider.sym | 30 + .../ac_params/run_07/conditions.yaml | 9 + .../parameters/ac_params/run_08/.spiceinit | 30 + .../ac_params/run_08/CML_core_tb.sch | 71 ++ .../ac_params/run_08/CML_core_tb_8.data | 85 ++ .../ac_params/run_08/CML_divider.sym | 30 + .../ac_params/run_08/conditions.yaml | 9 + .../parameters/ac_params/run_09/.spiceinit | 30 + .../ac_params/run_09/CML_core_tb.sch | 71 ++ .../ac_params/run_09/CML_core_tb_9.data | 85 ++ .../ac_params/run_09/CML_divider.sym | 30 + .../ac_params/run_09/conditions.yaml | 9 + .../parameters/ac_params/run_10/.spiceinit | 30 + .../ac_params/run_10/CML_core_tb.sch | 71 ++ .../ac_params/run_10/CML_core_tb_10.data | 85 ++ .../ac_params/run_10/CML_divider.sym | 30 + .../ac_params/run_10/conditions.yaml | 9 + .../parameters/ac_params/run_11/.spiceinit | 30 + .../ac_params/run_11/CML_core_tb.sch | 71 ++ .../ac_params/run_11/CML_core_tb_11.data | 85 ++ .../ac_params/run_11/CML_divider.sym | 30 + .../ac_params/run_11/conditions.yaml | 9 + .../parameters/ac_params/run_12/.spiceinit | 30 + .../ac_params/run_12/CML_core_tb.sch | 71 ++ .../ac_params/run_12/CML_core_tb_12.data | 85 ++ .../ac_params/run_12/CML_divider.sym | 30 + .../ac_params/run_12/conditions.yaml | 9 + .../parameters/ac_params/run_13/.spiceinit | 30 + .../ac_params/run_13/CML_core_tb.sch | 71 ++ .../ac_params/run_13/CML_core_tb_13.data | 85 ++ .../ac_params/run_13/CML_divider.sym | 30 + .../ac_params/run_13/conditions.yaml | 9 + .../parameters/ac_params/run_14/.spiceinit | 30 + .../ac_params/run_14/CML_core_tb.sch | 71 ++ .../ac_params/run_14/CML_core_tb_14.data | 85 ++ .../ac_params/run_14/CML_divider.sym | 30 + .../ac_params/run_14/conditions.yaml | 9 + .../parameters/ac_params/run_15/.spiceinit | 30 + .../ac_params/run_15/CML_core_tb.sch | 71 ++ .../ac_params/run_15/CML_core_tb_15.data | 85 ++ .../ac_params/run_15/CML_divider.sym | 30 + .../ac_params/run_15/conditions.yaml | 9 + .../parameters/ac_params/run_16/.spiceinit | 30 + .../ac_params/run_16/CML_core_tb.sch | 71 ++ .../ac_params/run_16/CML_core_tb_16.data | 85 ++ .../ac_params/run_16/CML_divider.sym | 30 + .../ac_params/run_16/conditions.yaml | 9 + .../parameters/ac_params/run_17/.spiceinit | 30 + .../ac_params/run_17/CML_core_tb.sch | 71 ++ .../ac_params/run_17/CML_core_tb_17.data | 85 ++ .../ac_params/run_17/CML_divider.sym | 30 + .../ac_params/run_17/conditions.yaml | 9 + .../parameters/ac_params/run_18/.spiceinit | 30 + .../ac_params/run_18/CML_core_tb.sch | 71 ++ .../ac_params/run_18/CML_core_tb_18.data | 85 ++ .../ac_params/run_18/CML_divider.sym | 30 + .../ac_params/run_18/conditions.yaml | 9 + .../parameters/ac_params/run_19/.spiceinit | 30 + .../ac_params/run_19/CML_core_tb.sch | 71 ++ .../ac_params/run_19/CML_core_tb_19.data | 85 ++ .../ac_params/run_19/CML_divider.sym | 30 + .../ac_params/run_19/conditions.yaml | 9 + .../parameters/ac_params/run_20/.spiceinit | 30 + .../ac_params/run_20/CML_core_tb.sch | 71 ++ .../ac_params/run_20/CML_core_tb_20.data | 85 ++ .../ac_params/run_20/CML_divider.sym | 30 + .../ac_params/run_20/conditions.yaml | 9 + .../parameters/ac_params/run_21/.spiceinit | 30 + .../ac_params/run_21/CML_core_tb.sch | 71 ++ .../ac_params/run_21/CML_core_tb_21.data | 85 ++ .../ac_params/run_21/CML_divider.sym | 30 + .../ac_params/run_21/conditions.yaml | 9 + .../parameters/ac_params/run_22/.spiceinit | 30 + .../ac_params/run_22/CML_core_tb.sch | 71 ++ .../ac_params/run_22/CML_core_tb_22.data | 85 ++ .../ac_params/run_22/CML_divider.sym | 30 + .../ac_params/run_22/conditions.yaml | 9 + .../parameters/ac_params/run_23/.spiceinit | 30 + .../ac_params/run_23/CML_core_tb.sch | 71 ++ .../ac_params/run_23/CML_core_tb_23.data | 85 ++ .../ac_params/run_23/CML_divider.sym | 30 + .../ac_params/run_23/conditions.yaml | 9 + .../parameters/ac_params/run_24/.spiceinit | 30 + .../ac_params/run_24/CML_core_tb.sch | 71 ++ .../ac_params/run_24/CML_core_tb_24.data | 85 ++ .../ac_params/run_24/CML_divider.sym | 30 + .../ac_params/run_24/conditions.yaml | 9 + .../parameters/ac_params/run_25/.spiceinit | 30 + .../ac_params/run_25/CML_core_tb.sch | 71 ++ .../ac_params/run_25/CML_core_tb_25.data | 85 ++ .../ac_params/run_25/CML_divider.sym | 30 + .../ac_params/run_25/conditions.yaml | 9 + .../parameters/ac_params/run_26/.spiceinit | 30 + .../ac_params/run_26/CML_core_tb.sch | 71 ++ .../ac_params/run_26/CML_core_tb_26.data | 85 ++ .../ac_params/run_26/CML_divider.sym | 30 + .../ac_params/run_26/conditions.yaml | 9 + .../ac_params/simulation_summary.csv | 28 + .../ac_params/simulation_summary.md | 31 + .../parameters/ac_params/vo_diff_vs_time.png | Bin 0 -> 225402 bytes .../runs/RUN_2025-11-17_08-34-33/summary.md | 11 + .../parameters/ac_params/CML_core_tb.sch | 71 ++ .../parameters/ac_params/run_00/.spiceinit | 30 + .../ac_params/run_00/CML_core_tb.sch | 71 ++ .../ac_params/run_00/CML_core_tb_0.data | 85 ++ .../ac_params/run_00/CML_divider.sym | 30 + .../ac_params/run_00/conditions.yaml | 9 + .../parameters/ac_params/run_01/.spiceinit | 30 + .../ac_params/run_01/CML_core_tb.sch | 71 ++ .../ac_params/run_01/CML_core_tb_1.data | 85 ++ .../ac_params/run_01/CML_divider.sym | 30 + .../ac_params/run_01/conditions.yaml | 9 + .../parameters/ac_params/run_02/.spiceinit | 30 + .../ac_params/run_02/CML_core_tb.sch | 71 ++ .../ac_params/run_02/CML_core_tb_2.data | 85 ++ .../ac_params/run_02/CML_divider.sym | 30 + .../ac_params/run_02/conditions.yaml | 9 + .../parameters/ac_params/run_03/.spiceinit | 30 + .../ac_params/run_03/CML_core_tb.sch | 71 ++ .../ac_params/run_03/CML_core_tb_3.data | 85 ++ .../ac_params/run_03/CML_divider.sym | 30 + .../ac_params/run_03/conditions.yaml | 9 + .../parameters/ac_params/run_04/.spiceinit | 30 + .../ac_params/run_04/CML_core_tb.sch | 71 ++ .../ac_params/run_04/CML_core_tb_4.data | 85 ++ .../ac_params/run_04/CML_divider.sym | 30 + .../ac_params/run_04/conditions.yaml | 9 + .../parameters/ac_params/run_05/.spiceinit | 30 + .../ac_params/run_05/CML_core_tb.sch | 71 ++ .../ac_params/run_05/CML_core_tb_5.data | 85 ++ .../ac_params/run_05/CML_divider.sym | 30 + .../ac_params/run_05/conditions.yaml | 9 + .../parameters/ac_params/run_06/.spiceinit | 30 + .../ac_params/run_06/CML_core_tb.sch | 71 ++ .../ac_params/run_06/CML_core_tb_6.data | 85 ++ .../ac_params/run_06/CML_divider.sym | 30 + .../ac_params/run_06/conditions.yaml | 9 + .../parameters/ac_params/run_07/.spiceinit | 30 + .../ac_params/run_07/CML_core_tb.sch | 71 ++ .../ac_params/run_07/CML_core_tb_7.data | 85 ++ .../ac_params/run_07/CML_divider.sym | 30 + .../ac_params/run_07/conditions.yaml | 9 + .../parameters/ac_params/run_08/.spiceinit | 30 + .../ac_params/run_08/CML_core_tb.sch | 71 ++ .../ac_params/run_08/CML_core_tb_8.data | 85 ++ .../ac_params/run_08/CML_divider.sym | 30 + .../ac_params/run_08/conditions.yaml | 9 + .../parameters/ac_params/run_09/.spiceinit | 30 + .../ac_params/run_09/CML_core_tb.sch | 71 ++ .../ac_params/run_09/CML_core_tb_9.data | 85 ++ .../ac_params/run_09/CML_divider.sym | 30 + .../ac_params/run_09/conditions.yaml | 9 + .../parameters/ac_params/run_10/.spiceinit | 30 + .../ac_params/run_10/CML_core_tb.sch | 71 ++ .../ac_params/run_10/CML_core_tb_10.data | 85 ++ .../ac_params/run_10/CML_divider.sym | 30 + .../ac_params/run_10/conditions.yaml | 9 + .../parameters/ac_params/run_11/.spiceinit | 30 + .../ac_params/run_11/CML_core_tb.sch | 71 ++ .../ac_params/run_11/CML_core_tb_11.data | 85 ++ .../ac_params/run_11/CML_divider.sym | 30 + .../ac_params/run_11/conditions.yaml | 9 + .../parameters/ac_params/run_12/.spiceinit | 30 + .../ac_params/run_12/CML_core_tb.sch | 71 ++ .../ac_params/run_12/CML_core_tb_12.data | 85 ++ .../ac_params/run_12/CML_divider.sym | 30 + .../ac_params/run_12/conditions.yaml | 9 + .../parameters/ac_params/run_13/.spiceinit | 30 + .../ac_params/run_13/CML_core_tb.sch | 71 ++ .../ac_params/run_13/CML_core_tb_13.data | 85 ++ .../ac_params/run_13/CML_divider.sym | 30 + .../ac_params/run_13/conditions.yaml | 9 + .../parameters/ac_params/run_14/.spiceinit | 30 + .../ac_params/run_14/CML_core_tb.sch | 71 ++ .../ac_params/run_14/CML_core_tb_14.data | 85 ++ .../ac_params/run_14/CML_divider.sym | 30 + .../ac_params/run_14/conditions.yaml | 9 + .../parameters/ac_params/run_15/.spiceinit | 30 + .../ac_params/run_15/CML_core_tb.sch | 71 ++ .../ac_params/run_15/CML_core_tb_15.data | 85 ++ .../ac_params/run_15/CML_divider.sym | 30 + .../ac_params/run_15/conditions.yaml | 9 + .../parameters/ac_params/run_16/.spiceinit | 30 + .../ac_params/run_16/CML_core_tb.sch | 71 ++ .../ac_params/run_16/CML_core_tb_16.data | 85 ++ .../ac_params/run_16/CML_divider.sym | 30 + .../ac_params/run_16/conditions.yaml | 9 + .../parameters/ac_params/run_17/.spiceinit | 30 + .../ac_params/run_17/CML_core_tb.sch | 71 ++ .../ac_params/run_17/CML_core_tb_17.data | 85 ++ .../ac_params/run_17/CML_divider.sym | 30 + .../ac_params/run_17/conditions.yaml | 9 + .../parameters/ac_params/run_18/.spiceinit | 30 + .../ac_params/run_18/CML_core_tb.sch | 71 ++ .../ac_params/run_18/CML_core_tb_18.data | 85 ++ .../ac_params/run_18/CML_divider.sym | 30 + .../ac_params/run_18/conditions.yaml | 9 + .../parameters/ac_params/run_19/.spiceinit | 30 + .../ac_params/run_19/CML_core_tb.sch | 71 ++ .../ac_params/run_19/CML_core_tb_19.data | 85 ++ .../ac_params/run_19/CML_divider.sym | 30 + .../ac_params/run_19/conditions.yaml | 9 + .../parameters/ac_params/run_20/.spiceinit | 30 + .../ac_params/run_20/CML_core_tb.sch | 71 ++ .../ac_params/run_20/CML_core_tb_20.data | 85 ++ .../ac_params/run_20/CML_divider.sym | 30 + .../ac_params/run_20/conditions.yaml | 9 + .../parameters/ac_params/run_21/.spiceinit | 30 + .../ac_params/run_21/CML_core_tb.sch | 71 ++ .../ac_params/run_21/CML_core_tb_21.data | 85 ++ .../ac_params/run_21/CML_divider.sym | 30 + .../ac_params/run_21/conditions.yaml | 9 + .../parameters/ac_params/run_22/.spiceinit | 30 + .../ac_params/run_22/CML_core_tb.sch | 71 ++ .../ac_params/run_22/CML_core_tb_22.data | 85 ++ .../ac_params/run_22/CML_divider.sym | 30 + .../ac_params/run_22/conditions.yaml | 9 + .../parameters/ac_params/run_23/.spiceinit | 30 + .../ac_params/run_23/CML_core_tb.sch | 71 ++ .../ac_params/run_23/CML_core_tb_23.data | 85 ++ .../ac_params/run_23/CML_divider.sym | 30 + .../ac_params/run_23/conditions.yaml | 9 + .../parameters/ac_params/run_24/.spiceinit | 30 + .../ac_params/run_24/CML_core_tb.sch | 71 ++ .../ac_params/run_24/CML_core_tb_24.data | 85 ++ .../ac_params/run_24/CML_divider.sym | 30 + .../ac_params/run_24/conditions.yaml | 9 + .../parameters/ac_params/run_25/.spiceinit | 30 + .../ac_params/run_25/CML_core_tb.sch | 71 ++ .../ac_params/run_25/CML_core_tb_25.data | 85 ++ .../ac_params/run_25/CML_divider.sym | 30 + .../ac_params/run_25/conditions.yaml | 9 + .../parameters/ac_params/run_26/.spiceinit | 30 + .../ac_params/run_26/CML_core_tb.sch | 71 ++ .../ac_params/run_26/CML_core_tb_26.data | 85 ++ .../ac_params/run_26/CML_divider.sym | 30 + .../ac_params/run_26/conditions.yaml | 9 + .../ac_params/simulation_summary.csv | 28 + .../ac_params/simulation_summary.md | 31 + .../parameters/ac_params/vo_diff_vs_time.png | Bin 0 -> 225402 bytes .../runs/RUN_2025-11-17_08-38-33/summary.md | 11 + .../parameters/ac_params/CML_core_tb.sch | 71 ++ .../parameters/ac_params/run_00/.spiceinit | 30 + .../ac_params/run_00/CML_core_tb.sch | 71 ++ .../ac_params/run_00/CML_core_tb_0.data | 85 ++ .../ac_params/run_00/CML_divider.sym | 30 + .../ac_params/run_00/conditions.yaml | 9 + .../parameters/ac_params/run_01/.spiceinit | 30 + .../ac_params/run_01/CML_core_tb.sch | 71 ++ .../ac_params/run_01/CML_core_tb_1.data | 85 ++ .../ac_params/run_01/CML_divider.sym | 30 + .../ac_params/run_01/conditions.yaml | 9 + .../parameters/ac_params/run_02/.spiceinit | 30 + .../ac_params/run_02/CML_core_tb.sch | 71 ++ .../ac_params/run_02/CML_core_tb_2.data | 85 ++ .../ac_params/run_02/CML_divider.sym | 30 + .../ac_params/run_02/conditions.yaml | 9 + .../parameters/ac_params/run_03/.spiceinit | 30 + .../ac_params/run_03/CML_core_tb.sch | 71 ++ .../ac_params/run_03/CML_core_tb_3.data | 85 ++ .../ac_params/run_03/CML_divider.sym | 30 + .../ac_params/run_03/conditions.yaml | 9 + .../parameters/ac_params/run_04/.spiceinit | 30 + .../ac_params/run_04/CML_core_tb.sch | 71 ++ .../ac_params/run_04/CML_core_tb_4.data | 85 ++ .../ac_params/run_04/CML_divider.sym | 30 + .../ac_params/run_04/conditions.yaml | 9 + .../parameters/ac_params/run_05/.spiceinit | 30 + .../ac_params/run_05/CML_core_tb.sch | 71 ++ .../ac_params/run_05/CML_core_tb_5.data | 85 ++ .../ac_params/run_05/CML_divider.sym | 30 + .../ac_params/run_05/conditions.yaml | 9 + .../parameters/ac_params/run_06/.spiceinit | 30 + .../ac_params/run_06/CML_core_tb.sch | 71 ++ .../ac_params/run_06/CML_core_tb_6.data | 85 ++ .../ac_params/run_06/CML_divider.sym | 30 + .../ac_params/run_06/conditions.yaml | 9 + .../parameters/ac_params/run_07/.spiceinit | 30 + .../ac_params/run_07/CML_core_tb.sch | 71 ++ .../ac_params/run_07/CML_core_tb_7.data | 85 ++ .../ac_params/run_07/CML_divider.sym | 30 + .../ac_params/run_07/conditions.yaml | 9 + .../parameters/ac_params/run_08/.spiceinit | 30 + .../ac_params/run_08/CML_core_tb.sch | 71 ++ .../ac_params/run_08/CML_core_tb_8.data | 85 ++ .../ac_params/run_08/CML_divider.sym | 30 + .../ac_params/run_08/conditions.yaml | 9 + .../parameters/ac_params/run_09/.spiceinit | 30 + .../ac_params/run_09/CML_core_tb.sch | 71 ++ .../ac_params/run_09/CML_core_tb_9.data | 85 ++ .../ac_params/run_09/CML_divider.sym | 30 + .../ac_params/run_09/conditions.yaml | 9 + .../parameters/ac_params/run_10/.spiceinit | 30 + .../ac_params/run_10/CML_core_tb.sch | 71 ++ .../ac_params/run_10/CML_core_tb_10.data | 85 ++ .../ac_params/run_10/CML_divider.sym | 30 + .../ac_params/run_10/conditions.yaml | 9 + .../parameters/ac_params/run_11/.spiceinit | 30 + .../ac_params/run_11/CML_core_tb.sch | 71 ++ .../ac_params/run_11/CML_core_tb_11.data | 85 ++ .../ac_params/run_11/CML_divider.sym | 30 + .../ac_params/run_11/conditions.yaml | 9 + .../parameters/ac_params/run_12/.spiceinit | 30 + .../ac_params/run_12/CML_core_tb.sch | 71 ++ .../ac_params/run_12/CML_core_tb_12.data | 85 ++ .../ac_params/run_12/CML_divider.sym | 30 + .../ac_params/run_12/conditions.yaml | 9 + .../parameters/ac_params/run_13/.spiceinit | 30 + .../ac_params/run_13/CML_core_tb.sch | 71 ++ .../ac_params/run_13/CML_core_tb_13.data | 85 ++ .../ac_params/run_13/CML_divider.sym | 30 + .../ac_params/run_13/conditions.yaml | 9 + .../parameters/ac_params/run_14/.spiceinit | 30 + .../ac_params/run_14/CML_core_tb.sch | 71 ++ .../ac_params/run_14/CML_core_tb_14.data | 85 ++ .../ac_params/run_14/CML_divider.sym | 30 + .../ac_params/run_14/conditions.yaml | 9 + .../parameters/ac_params/run_15/.spiceinit | 30 + .../ac_params/run_15/CML_core_tb.sch | 71 ++ .../ac_params/run_15/CML_core_tb_15.data | 85 ++ .../ac_params/run_15/CML_divider.sym | 30 + .../ac_params/run_15/conditions.yaml | 9 + .../parameters/ac_params/run_16/.spiceinit | 30 + .../ac_params/run_16/CML_core_tb.sch | 71 ++ .../ac_params/run_16/CML_core_tb_16.data | 85 ++ .../ac_params/run_16/CML_divider.sym | 30 + .../ac_params/run_16/conditions.yaml | 9 + .../parameters/ac_params/run_17/.spiceinit | 30 + .../ac_params/run_17/CML_core_tb.sch | 71 ++ .../ac_params/run_17/CML_core_tb_17.data | 85 ++ .../ac_params/run_17/CML_divider.sym | 30 + .../ac_params/run_17/conditions.yaml | 9 + .../parameters/ac_params/run_18/.spiceinit | 30 + .../ac_params/run_18/CML_core_tb.sch | 71 ++ .../ac_params/run_18/CML_core_tb_18.data | 85 ++ .../ac_params/run_18/CML_divider.sym | 30 + .../ac_params/run_18/conditions.yaml | 9 + .../parameters/ac_params/run_19/.spiceinit | 30 + .../ac_params/run_19/CML_core_tb.sch | 71 ++ .../ac_params/run_19/CML_core_tb_19.data | 85 ++ .../ac_params/run_19/CML_divider.sym | 30 + .../ac_params/run_19/conditions.yaml | 9 + .../parameters/ac_params/run_20/.spiceinit | 30 + .../ac_params/run_20/CML_core_tb.sch | 71 ++ .../ac_params/run_20/CML_core_tb_20.data | 85 ++ .../ac_params/run_20/CML_divider.sym | 30 + .../ac_params/run_20/conditions.yaml | 9 + .../parameters/ac_params/run_21/.spiceinit | 30 + .../ac_params/run_21/CML_core_tb.sch | 71 ++ .../ac_params/run_21/CML_core_tb_21.data | 85 ++ .../ac_params/run_21/CML_divider.sym | 30 + .../ac_params/run_21/conditions.yaml | 9 + .../parameters/ac_params/run_22/.spiceinit | 30 + .../ac_params/run_22/CML_core_tb.sch | 71 ++ .../ac_params/run_22/CML_core_tb_22.data | 85 ++ .../ac_params/run_22/CML_divider.sym | 30 + .../ac_params/run_22/conditions.yaml | 9 + .../parameters/ac_params/run_23/.spiceinit | 30 + .../ac_params/run_23/CML_core_tb.sch | 71 ++ .../ac_params/run_23/CML_core_tb_23.data | 85 ++ .../ac_params/run_23/CML_divider.sym | 30 + .../ac_params/run_23/conditions.yaml | 9 + .../parameters/ac_params/run_24/.spiceinit | 30 + .../ac_params/run_24/CML_core_tb.sch | 71 ++ .../ac_params/run_24/CML_core_tb_24.data | 85 ++ .../ac_params/run_24/CML_divider.sym | 30 + .../ac_params/run_24/conditions.yaml | 9 + .../parameters/ac_params/run_25/.spiceinit | 30 + .../ac_params/run_25/CML_core_tb.sch | 71 ++ .../ac_params/run_25/CML_core_tb_25.data | 85 ++ .../ac_params/run_25/CML_divider.sym | 30 + .../ac_params/run_25/conditions.yaml | 9 + .../parameters/ac_params/run_26/.spiceinit | 30 + .../ac_params/run_26/CML_core_tb.sch | 71 ++ .../ac_params/run_26/CML_core_tb_26.data | 85 ++ .../ac_params/run_26/CML_divider.sym | 30 + .../ac_params/run_26/conditions.yaml | 9 + .../ac_params/simulation_summary.csv | 28 + .../ac_params/simulation_summary.md | 31 + .../parameters/ac_params/vo_diff_vs_time.png | Bin 0 -> 225402 bytes .../runs/RUN_2025-11-17_08-40-01/summary.md | 11 + .../parameters/ac_params/CML_core_tb.sch | 73 ++ .../parameters/ac_params/run_00/.spiceinit | 30 + .../ac_params/run_00/CML_core_tb.sch | 73 ++ .../ac_params/run_00/CML_core_tb_0.data | 85 ++ .../ac_params/run_00/CML_divider.sym | 30 + .../ac_params/run_00/conditions.yaml | 9 + .../parameters/ac_params/run_01/.spiceinit | 30 + .../ac_params/run_01/CML_core_tb.sch | 73 ++ .../ac_params/run_01/CML_core_tb_1.data | 85 ++ .../ac_params/run_01/CML_divider.sym | 30 + .../ac_params/run_01/conditions.yaml | 9 + .../parameters/ac_params/run_02/.spiceinit | 30 + .../ac_params/run_02/CML_core_tb.sch | 73 ++ .../ac_params/run_02/CML_core_tb_2.data | 85 ++ .../ac_params/run_02/CML_divider.sym | 30 + .../ac_params/run_02/conditions.yaml | 9 + .../parameters/ac_params/run_03/.spiceinit | 30 + .../ac_params/run_03/CML_core_tb.sch | 73 ++ .../ac_params/run_03/CML_core_tb_3.data | 85 ++ .../ac_params/run_03/CML_divider.sym | 30 + .../ac_params/run_03/conditions.yaml | 9 + .../parameters/ac_params/run_04/.spiceinit | 30 + .../ac_params/run_04/CML_core_tb.sch | 73 ++ .../ac_params/run_04/CML_core_tb_4.data | 85 ++ .../ac_params/run_04/CML_divider.sym | 30 + .../ac_params/run_04/conditions.yaml | 9 + .../parameters/ac_params/run_05/.spiceinit | 30 + .../ac_params/run_05/CML_core_tb.sch | 73 ++ .../ac_params/run_05/CML_core_tb_5.data | 85 ++ .../ac_params/run_05/CML_divider.sym | 30 + .../ac_params/run_05/conditions.yaml | 9 + .../parameters/ac_params/run_06/.spiceinit | 30 + .../ac_params/run_06/CML_core_tb.sch | 73 ++ .../ac_params/run_06/CML_core_tb_6.data | 85 ++ .../ac_params/run_06/CML_divider.sym | 30 + .../ac_params/run_06/conditions.yaml | 9 + .../parameters/ac_params/run_07/.spiceinit | 30 + .../ac_params/run_07/CML_core_tb.sch | 73 ++ .../ac_params/run_07/CML_core_tb_7.data | 85 ++ .../ac_params/run_07/CML_divider.sym | 30 + .../ac_params/run_07/conditions.yaml | 9 + .../parameters/ac_params/run_08/.spiceinit | 30 + .../ac_params/run_08/CML_core_tb.sch | 73 ++ .../ac_params/run_08/CML_core_tb_8.data | 85 ++ .../ac_params/run_08/CML_divider.sym | 30 + .../ac_params/run_08/conditions.yaml | 9 + .../parameters/ac_params/run_09/.spiceinit | 30 + .../ac_params/run_09/CML_core_tb.sch | 73 ++ .../ac_params/run_09/CML_core_tb_9.data | 85 ++ .../ac_params/run_09/CML_divider.sym | 30 + .../ac_params/run_09/conditions.yaml | 9 + .../parameters/ac_params/run_10/.spiceinit | 30 + .../ac_params/run_10/CML_core_tb.sch | 73 ++ .../ac_params/run_10/CML_core_tb_10.data | 85 ++ .../ac_params/run_10/CML_divider.sym | 30 + .../ac_params/run_10/conditions.yaml | 9 + .../parameters/ac_params/run_11/.spiceinit | 30 + .../ac_params/run_11/CML_core_tb.sch | 73 ++ .../ac_params/run_11/CML_core_tb_11.data | 85 ++ .../ac_params/run_11/CML_divider.sym | 30 + .../ac_params/run_11/conditions.yaml | 9 + .../parameters/ac_params/run_12/.spiceinit | 30 + .../ac_params/run_12/CML_core_tb.sch | 73 ++ .../ac_params/run_12/CML_core_tb_12.data | 85 ++ .../ac_params/run_12/CML_divider.sym | 30 + .../ac_params/run_12/conditions.yaml | 9 + .../parameters/ac_params/run_13/.spiceinit | 30 + .../ac_params/run_13/CML_core_tb.sch | 73 ++ .../ac_params/run_13/CML_core_tb_13.data | 85 ++ .../ac_params/run_13/CML_divider.sym | 30 + .../ac_params/run_13/conditions.yaml | 9 + .../parameters/ac_params/run_14/.spiceinit | 30 + .../ac_params/run_14/CML_core_tb.sch | 73 ++ .../ac_params/run_14/CML_core_tb_14.data | 85 ++ .../ac_params/run_14/CML_divider.sym | 30 + .../ac_params/run_14/conditions.yaml | 9 + .../parameters/ac_params/run_15/.spiceinit | 30 + .../ac_params/run_15/CML_core_tb.sch | 73 ++ .../ac_params/run_15/CML_core_tb_15.data | 85 ++ .../ac_params/run_15/CML_divider.sym | 30 + .../ac_params/run_15/conditions.yaml | 9 + .../parameters/ac_params/run_16/.spiceinit | 30 + .../ac_params/run_16/CML_core_tb.sch | 73 ++ .../ac_params/run_16/CML_core_tb_16.data | 85 ++ .../ac_params/run_16/CML_divider.sym | 30 + .../ac_params/run_16/conditions.yaml | 9 + .../parameters/ac_params/run_17/.spiceinit | 30 + .../ac_params/run_17/CML_core_tb.sch | 73 ++ .../ac_params/run_17/CML_core_tb_17.data | 85 ++ .../ac_params/run_17/CML_divider.sym | 30 + .../ac_params/run_17/conditions.yaml | 9 + .../parameters/ac_params/run_18/.spiceinit | 30 + .../ac_params/run_18/CML_core_tb.sch | 73 ++ .../ac_params/run_18/CML_core_tb_18.data | 85 ++ .../ac_params/run_18/CML_divider.sym | 30 + .../ac_params/run_18/conditions.yaml | 9 + .../parameters/ac_params/run_19/.spiceinit | 30 + .../ac_params/run_19/CML_core_tb.sch | 73 ++ .../ac_params/run_19/CML_core_tb_19.data | 85 ++ .../ac_params/run_19/CML_divider.sym | 30 + .../ac_params/run_19/conditions.yaml | 9 + .../parameters/ac_params/run_20/.spiceinit | 30 + .../ac_params/run_20/CML_core_tb.sch | 73 ++ .../ac_params/run_20/CML_core_tb_20.data | 85 ++ .../ac_params/run_20/CML_divider.sym | 30 + .../ac_params/run_20/conditions.yaml | 9 + .../parameters/ac_params/run_21/.spiceinit | 30 + .../ac_params/run_21/CML_core_tb.sch | 73 ++ .../ac_params/run_21/CML_core_tb_21.data | 85 ++ .../ac_params/run_21/CML_divider.sym | 30 + .../ac_params/run_21/conditions.yaml | 9 + .../parameters/ac_params/run_22/.spiceinit | 30 + .../ac_params/run_22/CML_core_tb.sch | 73 ++ .../ac_params/run_22/CML_core_tb_22.data | 85 ++ .../ac_params/run_22/CML_divider.sym | 30 + .../ac_params/run_22/conditions.yaml | 9 + .../parameters/ac_params/run_23/.spiceinit | 30 + .../ac_params/run_23/CML_core_tb.sch | 73 ++ .../ac_params/run_23/CML_core_tb_23.data | 85 ++ .../ac_params/run_23/CML_divider.sym | 30 + .../ac_params/run_23/conditions.yaml | 9 + .../parameters/ac_params/run_24/.spiceinit | 30 + .../ac_params/run_24/CML_core_tb.sch | 73 ++ .../ac_params/run_24/CML_core_tb_24.data | 85 ++ .../ac_params/run_24/CML_divider.sym | 30 + .../ac_params/run_24/conditions.yaml | 9 + .../parameters/ac_params/run_25/.spiceinit | 30 + .../ac_params/run_25/CML_core_tb.sch | 73 ++ .../ac_params/run_25/CML_core_tb_25.data | 85 ++ .../ac_params/run_25/CML_divider.sym | 30 + .../ac_params/run_25/conditions.yaml | 9 + .../parameters/ac_params/run_26/.spiceinit | 30 + .../ac_params/run_26/CML_core_tb.sch | 73 ++ .../ac_params/run_26/CML_core_tb_26.data | 85 ++ .../ac_params/run_26/CML_divider.sym | 30 + .../ac_params/run_26/conditions.yaml | 9 + .../ac_params/simulation_summary.csv | 28 + .../ac_params/simulation_summary.md | 31 + .../parameters/ac_params/vo_diff_vs_time.png | Bin 0 -> 225402 bytes .../runs/RUN_2025-11-17_08-42-46/summary.md | 11 + .../parameters/ac_params/CML_core_tb.sch | 73 ++ .../parameters/ac_params/run_00/.spiceinit | 30 + .../ac_params/run_00/CML_core_tb.sch | 73 ++ .../ac_params/run_00/CML_core_tb_0.data | 85 ++ .../ac_params/run_00/CML_divider.sym | 30 + .../ac_params/run_00/conditions.yaml | 9 + .../parameters/ac_params/run_01/.spiceinit | 30 + .../ac_params/run_01/CML_core_tb.sch | 73 ++ .../ac_params/run_01/CML_core_tb_1.data | 85 ++ .../ac_params/run_01/CML_divider.sym | 30 + .../ac_params/run_01/conditions.yaml | 9 + .../parameters/ac_params/run_02/.spiceinit | 30 + .../ac_params/run_02/CML_core_tb.sch | 73 ++ .../ac_params/run_02/CML_core_tb_2.data | 85 ++ .../ac_params/run_02/CML_divider.sym | 30 + .../ac_params/run_02/conditions.yaml | 9 + .../parameters/ac_params/run_03/.spiceinit | 30 + .../ac_params/run_03/CML_core_tb.sch | 73 ++ .../ac_params/run_03/CML_core_tb_3.data | 85 ++ .../ac_params/run_03/CML_divider.sym | 30 + .../ac_params/run_03/conditions.yaml | 9 + .../parameters/ac_params/run_04/.spiceinit | 30 + .../ac_params/run_04/CML_core_tb.sch | 73 ++ .../ac_params/run_04/CML_core_tb_4.data | 85 ++ .../ac_params/run_04/CML_divider.sym | 30 + .../ac_params/run_04/conditions.yaml | 9 + .../parameters/ac_params/run_05/.spiceinit | 30 + .../ac_params/run_05/CML_core_tb.sch | 73 ++ .../ac_params/run_05/CML_core_tb_5.data | 85 ++ .../ac_params/run_05/CML_divider.sym | 30 + .../ac_params/run_05/conditions.yaml | 9 + .../parameters/ac_params/run_06/.spiceinit | 30 + .../ac_params/run_06/CML_core_tb.sch | 73 ++ .../ac_params/run_06/CML_core_tb_6.data | 85 ++ .../ac_params/run_06/CML_divider.sym | 30 + .../ac_params/run_06/conditions.yaml | 9 + .../parameters/ac_params/run_07/.spiceinit | 30 + .../ac_params/run_07/CML_core_tb.sch | 73 ++ .../ac_params/run_07/CML_core_tb_7.data | 85 ++ .../ac_params/run_07/CML_divider.sym | 30 + .../ac_params/run_07/conditions.yaml | 9 + .../parameters/ac_params/run_08/.spiceinit | 30 + .../ac_params/run_08/CML_core_tb.sch | 73 ++ .../ac_params/run_08/CML_core_tb_8.data | 85 ++ .../ac_params/run_08/CML_divider.sym | 30 + .../ac_params/run_08/conditions.yaml | 9 + .../parameters/ac_params/run_09/.spiceinit | 30 + .../ac_params/run_09/CML_core_tb.sch | 73 ++ .../ac_params/run_09/CML_core_tb_9.data | 85 ++ .../ac_params/run_09/CML_divider.sym | 30 + .../ac_params/run_09/conditions.yaml | 9 + .../parameters/ac_params/run_10/.spiceinit | 30 + .../ac_params/run_10/CML_core_tb.sch | 73 ++ .../ac_params/run_10/CML_core_tb_10.data | 85 ++ .../ac_params/run_10/CML_divider.sym | 30 + .../ac_params/run_10/conditions.yaml | 9 + .../parameters/ac_params/run_11/.spiceinit | 30 + .../ac_params/run_11/CML_core_tb.sch | 73 ++ .../ac_params/run_11/CML_core_tb_11.data | 85 ++ .../ac_params/run_11/CML_divider.sym | 30 + .../ac_params/run_11/conditions.yaml | 9 + .../parameters/ac_params/run_12/.spiceinit | 30 + .../ac_params/run_12/CML_core_tb.sch | 73 ++ .../ac_params/run_12/CML_core_tb_12.data | 85 ++ .../ac_params/run_12/CML_divider.sym | 30 + .../ac_params/run_12/conditions.yaml | 9 + .../parameters/ac_params/run_13/.spiceinit | 30 + .../ac_params/run_13/CML_core_tb.sch | 73 ++ .../ac_params/run_13/CML_core_tb_13.data | 85 ++ .../ac_params/run_13/CML_divider.sym | 30 + .../ac_params/run_13/conditions.yaml | 9 + .../parameters/ac_params/run_14/.spiceinit | 30 + .../ac_params/run_14/CML_core_tb.sch | 73 ++ .../ac_params/run_14/CML_core_tb_14.data | 85 ++ .../ac_params/run_14/CML_divider.sym | 30 + .../ac_params/run_14/conditions.yaml | 9 + .../parameters/ac_params/run_15/.spiceinit | 30 + .../ac_params/run_15/CML_core_tb.sch | 73 ++ .../ac_params/run_15/CML_core_tb_15.data | 85 ++ .../ac_params/run_15/CML_divider.sym | 30 + .../ac_params/run_15/conditions.yaml | 9 + .../parameters/ac_params/run_16/.spiceinit | 30 + .../ac_params/run_16/CML_core_tb.sch | 73 ++ .../ac_params/run_16/CML_core_tb_16.data | 85 ++ .../ac_params/run_16/CML_divider.sym | 30 + .../ac_params/run_16/conditions.yaml | 9 + .../parameters/ac_params/run_17/.spiceinit | 30 + .../ac_params/run_17/CML_core_tb.sch | 73 ++ .../ac_params/run_17/CML_core_tb_17.data | 85 ++ .../ac_params/run_17/CML_divider.sym | 30 + .../ac_params/run_17/conditions.yaml | 9 + .../parameters/ac_params/run_18/.spiceinit | 30 + .../ac_params/run_18/CML_core_tb.sch | 73 ++ .../ac_params/run_18/CML_core_tb_18.data | 85 ++ .../ac_params/run_18/CML_divider.sym | 30 + .../ac_params/run_18/conditions.yaml | 9 + .../parameters/ac_params/run_19/.spiceinit | 30 + .../ac_params/run_19/CML_core_tb.sch | 73 ++ .../ac_params/run_19/CML_core_tb_19.data | 85 ++ .../ac_params/run_19/CML_divider.sym | 30 + .../ac_params/run_19/conditions.yaml | 9 + .../parameters/ac_params/run_20/.spiceinit | 30 + .../ac_params/run_20/CML_core_tb.sch | 73 ++ .../ac_params/run_20/CML_core_tb_20.data | 85 ++ .../ac_params/run_20/CML_divider.sym | 30 + .../ac_params/run_20/conditions.yaml | 9 + .../parameters/ac_params/run_21/.spiceinit | 30 + .../ac_params/run_21/CML_core_tb.sch | 73 ++ .../ac_params/run_21/CML_core_tb_21.data | 85 ++ .../ac_params/run_21/CML_divider.sym | 30 + .../ac_params/run_21/conditions.yaml | 9 + .../parameters/ac_params/run_22/.spiceinit | 30 + .../ac_params/run_22/CML_core_tb.sch | 73 ++ .../ac_params/run_22/CML_core_tb_22.data | 85 ++ .../ac_params/run_22/CML_divider.sym | 30 + .../ac_params/run_22/conditions.yaml | 9 + .../parameters/ac_params/run_23/.spiceinit | 30 + .../ac_params/run_23/CML_core_tb.sch | 73 ++ .../ac_params/run_23/CML_core_tb_23.data | 85 ++ .../ac_params/run_23/CML_divider.sym | 30 + .../ac_params/run_23/conditions.yaml | 9 + .../parameters/ac_params/run_24/.spiceinit | 30 + .../ac_params/run_24/CML_core_tb.sch | 73 ++ .../ac_params/run_24/CML_core_tb_24.data | 85 ++ .../ac_params/run_24/CML_divider.sym | 30 + .../ac_params/run_24/conditions.yaml | 9 + .../parameters/ac_params/run_25/.spiceinit | 30 + .../ac_params/run_25/CML_core_tb.sch | 73 ++ .../ac_params/run_25/CML_core_tb_25.data | 85 ++ .../ac_params/run_25/CML_divider.sym | 30 + .../ac_params/run_25/conditions.yaml | 9 + .../parameters/ac_params/run_26/.spiceinit | 30 + .../ac_params/run_26/CML_core_tb.sch | 73 ++ .../ac_params/run_26/CML_core_tb_26.data | 85 ++ .../ac_params/run_26/CML_divider.sym | 30 + .../ac_params/run_26/conditions.yaml | 9 + .../ac_params/simulation_summary.csv | 28 + .../ac_params/simulation_summary.md | 31 + .../parameters/ac_params/vo_diff_vs_time.png | Bin 0 -> 314899 bytes .../runs/RUN_2025-11-17_08-43-29/summary.md | 11 + .../CML_divider/testbench/CML_core_tb.sch | 29 +- .../CML_divider/xschem/CML_divider.sch | 7 +- .../LC_Oscillator/cace/LC_Oscillator.yaml | 115 ++ .../scripts/__pycache__/freq.cpython-310.pyc | Bin 0 -> 863 bytes .../LC_Oscillator/cace/scripts/freq.py | 41 + .../cace/templates/LC_Oscillator_tb.sch | 57 + .../LC_Oscillator/cace/templates/xschemrc | 1 + .../LC_Oscillator/docs/CML_divider.md | 54 + .../docs/CML_divider/schematic/frequency.png | Bin 0 -> 187075 bytes .../CML_divider/schematic/vo_diff_vs_time.png | Bin 0 -> 188877 bytes .../docs/CML_divider_schematic.md | 17 + .../docs/CML_divider_schematic.svg | 160 +++ .../LC_Oscillator/docs/CML_divider_symbol.svg | 160 +++ .../LC_Oscillator/docs/LC VCO.md | 54 + .../LC_Oscillator/docs/LC VCO_schematic.md | 13 + .../parameters/ac_params/LC_Oscillator_tb.sch | 57 + .../parameters/ac_params/run_00/.spiceinit | 30 + .../ac_params/run_00/LC_Oscillator.sym | 27 + .../ac_params/run_00/LC_Oscillator_tb.sch | 57 + .../ac_params/run_00/conditions.yaml | 9 + .../parameters/ac_params/run_01/.spiceinit | 30 + .../ac_params/run_01/LC_Oscillator.sym | 27 + .../ac_params/run_01/LC_Oscillator_tb.sch | 57 + .../ac_params/run_01/LC_Oscillator_tb_1.data | 985 ++++++++++++++++++ .../ac_params/run_01/conditions.yaml | 9 + .../parameters/ac_params/run_02/.spiceinit | 30 + .../ac_params/run_02/LC_Oscillator.sym | 27 + .../ac_params/run_02/LC_Oscillator_tb.sch | 57 + .../ac_params/run_02/conditions.yaml | 9 + .../parameters/ac_params/run_03/.spiceinit | 30 + .../ac_params/run_03/LC_Oscillator.sym | 27 + .../ac_params/run_03/LC_Oscillator_tb.sch | 57 + .../ac_params/run_03/conditions.yaml | 9 + .../parameters/ac_params/run_04/.spiceinit | 30 + .../ac_params/run_04/LC_Oscillator.sym | 27 + .../ac_params/run_04/LC_Oscillator_tb.sch | 57 + .../ac_params/run_04/LC_Oscillator_tb_4.data | 985 ++++++++++++++++++ .../ac_params/run_04/conditions.yaml | 9 + .../parameters/ac_params/run_05/.spiceinit | 30 + .../ac_params/run_05/LC_Oscillator.sym | 27 + .../ac_params/run_05/LC_Oscillator_tb.sch | 57 + .../ac_params/run_05/conditions.yaml | 9 + .../parameters/ac_params/run_06/.spiceinit | 30 + .../ac_params/run_06/LC_Oscillator.sym | 27 + .../ac_params/run_06/LC_Oscillator_tb.sch | 57 + .../ac_params/run_06/conditions.yaml | 9 + .../parameters/ac_params/run_07/.spiceinit | 30 + .../ac_params/run_07/LC_Oscillator.sym | 27 + .../ac_params/run_07/LC_Oscillator_tb.sch | 57 + .../ac_params/run_07/LC_Oscillator_tb_7.data | 985 ++++++++++++++++++ .../ac_params/run_07/conditions.yaml | 9 + .../parameters/ac_params/run_08/.spiceinit | 30 + .../ac_params/run_08/LC_Oscillator.sym | 27 + .../ac_params/run_08/LC_Oscillator_tb.sch | 57 + .../ac_params/run_08/conditions.yaml | 9 + .../parameters/ac_params/run_09/.spiceinit | 30 + .../ac_params/run_09/LC_Oscillator.sym | 27 + .../ac_params/run_09/LC_Oscillator_tb.sch | 57 + .../ac_params/run_09/conditions.yaml | 9 + .../parameters/ac_params/run_10/.spiceinit | 30 + .../ac_params/run_10/LC_Oscillator.sym | 27 + .../ac_params/run_10/LC_Oscillator_tb.sch | 57 + .../ac_params/run_10/LC_Oscillator_tb_10.data | 985 ++++++++++++++++++ .../ac_params/run_10/conditions.yaml | 9 + .../parameters/ac_params/run_11/.spiceinit | 30 + .../ac_params/run_11/LC_Oscillator.sym | 27 + .../ac_params/run_11/LC_Oscillator_tb.sch | 57 + .../ac_params/run_11/conditions.yaml | 9 + .../parameters/ac_params/run_12/.spiceinit | 30 + .../ac_params/run_12/LC_Oscillator.sym | 27 + .../ac_params/run_12/LC_Oscillator_tb.sch | 57 + .../ac_params/run_12/conditions.yaml | 9 + .../parameters/ac_params/run_13/.spiceinit | 30 + .../ac_params/run_13/LC_Oscillator.sym | 27 + .../ac_params/run_13/LC_Oscillator_tb.sch | 57 + .../ac_params/run_13/LC_Oscillator_tb_13.data | 985 ++++++++++++++++++ .../ac_params/run_13/conditions.yaml | 9 + .../parameters/ac_params/run_14/.spiceinit | 30 + .../ac_params/run_14/LC_Oscillator.sym | 27 + .../ac_params/run_14/LC_Oscillator_tb.sch | 57 + .../ac_params/run_14/conditions.yaml | 9 + .../parameters/ac_params/run_15/.spiceinit | 30 + .../ac_params/run_15/LC_Oscillator.sym | 27 + .../ac_params/run_15/LC_Oscillator_tb.sch | 57 + .../ac_params/run_15/conditions.yaml | 9 + .../parameters/ac_params/run_16/.spiceinit | 30 + .../ac_params/run_16/LC_Oscillator.sym | 27 + .../ac_params/run_16/LC_Oscillator_tb.sch | 57 + .../ac_params/run_16/LC_Oscillator_tb_16.data | 985 ++++++++++++++++++ .../ac_params/run_16/conditions.yaml | 9 + .../parameters/ac_params/run_17/.spiceinit | 30 + .../ac_params/run_17/LC_Oscillator.sym | 27 + .../ac_params/run_17/LC_Oscillator_tb.sch | 57 + .../ac_params/run_17/conditions.yaml | 9 + .../parameters/ac_params/run_18/.spiceinit | 30 + .../ac_params/run_18/LC_Oscillator.sym | 27 + .../ac_params/run_18/LC_Oscillator_tb.sch | 57 + .../ac_params/run_18/conditions.yaml | 9 + .../parameters/ac_params/run_19/.spiceinit | 30 + .../ac_params/run_19/LC_Oscillator.sym | 27 + .../ac_params/run_19/LC_Oscillator_tb.sch | 57 + .../ac_params/run_19/LC_Oscillator_tb_19.data | 985 ++++++++++++++++++ .../ac_params/run_19/conditions.yaml | 9 + .../parameters/ac_params/run_20/.spiceinit | 30 + .../ac_params/run_20/LC_Oscillator.sym | 27 + .../ac_params/run_20/LC_Oscillator_tb.sch | 57 + .../ac_params/run_20/conditions.yaml | 9 + .../parameters/ac_params/run_21/.spiceinit | 30 + .../ac_params/run_21/LC_Oscillator.sym | 27 + .../ac_params/run_21/LC_Oscillator_tb.sch | 57 + .../ac_params/run_21/conditions.yaml | 9 + .../parameters/ac_params/run_22/.spiceinit | 30 + .../ac_params/run_22/LC_Oscillator.sym | 27 + .../ac_params/run_22/LC_Oscillator_tb.sch | 57 + .../ac_params/run_22/LC_Oscillator_tb_22.data | 985 ++++++++++++++++++ .../ac_params/run_22/conditions.yaml | 9 + .../parameters/ac_params/run_23/.spiceinit | 30 + .../ac_params/run_23/LC_Oscillator.sym | 27 + .../ac_params/run_23/LC_Oscillator_tb.sch | 57 + .../ac_params/run_23/conditions.yaml | 9 + .../parameters/ac_params/run_24/.spiceinit | 30 + .../ac_params/run_24/LC_Oscillator.sym | 27 + .../ac_params/run_24/LC_Oscillator_tb.sch | 57 + .../ac_params/run_24/conditions.yaml | 9 + .../parameters/ac_params/run_25/.spiceinit | 30 + .../ac_params/run_25/LC_Oscillator.sym | 27 + .../ac_params/run_25/LC_Oscillator_tb.sch | 57 + .../ac_params/run_25/LC_Oscillator_tb_25.data | 985 ++++++++++++++++++ .../ac_params/run_25/conditions.yaml | 9 + .../parameters/ac_params/run_26/.spiceinit | 30 + .../ac_params/run_26/LC_Oscillator.sym | 27 + .../ac_params/run_26/LC_Oscillator_tb.sch | 57 + .../ac_params/run_26/conditions.yaml | 9 + .../runs/RUN_2025-11-17_09-25-51/summary.md | 11 + .../testbench/LC_Oscillator_tb.sch | 132 +++ .../simulations/LC_Oscillator_tb.save | 22 + .../LC_Oscillator/testbench/xschemrc | 18 + .../LC_Oscillator/xschem/LC_Oscillator.sch | 105 ++ .../LC_Oscillator/xschem/LC_Oscillator.sym | 27 + .../LC_Oscillator/xschem/xschemrc | 12 + 842 files changed, 44458 insertions(+), 20 deletions(-) create mode 100644 modules/module_4_type_2_PLL/CML_divider/cace/scripts/__pycache__/freq.cpython-312.pyc create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_00/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_00/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_00/CML_core_tb_0.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_00/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_00/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_01/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_01/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_01/CML_core_tb_1.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_01/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_01/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_02/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_02/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_02/CML_core_tb_2.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_02/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_02/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_03/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_03/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_03/CML_core_tb_3.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_03/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_03/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_04/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_04/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_04/CML_core_tb_4.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_04/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_04/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_05/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_05/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_05/CML_core_tb_5.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_05/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_05/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_06/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_06/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_06/CML_core_tb_6.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_06/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_06/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_07/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_07/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_07/CML_core_tb_7.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_07/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_07/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_08/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_08/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_08/CML_core_tb_8.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_08/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_08/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_09/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_09/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_09/CML_core_tb_9.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_09/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_09/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_10/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_10/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_10/CML_core_tb_10.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_10/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_10/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_11/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_11/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_11/CML_core_tb_11.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_11/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_11/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_12/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_12/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_12/CML_core_tb_12.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_12/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_12/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_13/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_13/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_13/CML_core_tb_13.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_13/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_13/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_14/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_14/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_14/CML_core_tb_14.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_14/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_14/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_15/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_15/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_15/CML_core_tb_15.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_15/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_15/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_16/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_16/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_16/CML_core_tb_16.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_16/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_16/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_17/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_17/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_17/CML_core_tb_17.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_17/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_17/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_18/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_18/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_18/CML_core_tb_18.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_18/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_18/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_19/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_19/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_19/CML_core_tb_19.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_19/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_19/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_20/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_20/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_20/CML_core_tb_20.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_20/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_20/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_21/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_21/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_21/CML_core_tb_21.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_21/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_21/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_22/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_22/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_22/CML_core_tb_22.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_22/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_22/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_23/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_23/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_23/CML_core_tb_23.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_23/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_23/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_24/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_24/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_24/CML_core_tb_24.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_24/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_24/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_25/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_25/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_25/CML_core_tb_25.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_25/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_25/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_26/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_26/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_26/CML_core_tb_26.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_26/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/run_26/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/simulation_summary.csv create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/simulation_summary.md create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/parameters/ac_params/vo_diff_vs_time.png create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/summary.md create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/CML_core_tb_0.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/CML_core_tb_1.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/CML_core_tb_2.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/CML_core_tb_3.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/CML_core_tb_4.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/CML_core_tb_5.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/CML_core_tb_6.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/CML_core_tb_7.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/CML_core_tb_8.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/CML_core_tb_9.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/CML_core_tb_10.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/CML_core_tb_11.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/CML_core_tb_12.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/CML_core_tb_13.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/CML_core_tb_14.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/CML_core_tb_15.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/CML_core_tb_16.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/CML_core_tb_17.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/CML_core_tb_18.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/CML_core_tb_19.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/CML_core_tb_20.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/CML_core_tb_21.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/CML_core_tb_22.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/CML_core_tb_23.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/CML_core_tb_24.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/CML_core_tb_25.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/CML_core_tb_26.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/simulation_summary.csv create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/simulation_summary.md create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/vo_diff_vs_time.png create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/summary.md create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/CML_core_tb_0.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/CML_core_tb_1.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/CML_core_tb_2.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/CML_core_tb_3.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/CML_core_tb_4.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/CML_core_tb_5.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/CML_core_tb_6.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/CML_core_tb_7.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/CML_core_tb_8.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/CML_core_tb_9.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/CML_core_tb_10.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/CML_core_tb_11.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/CML_core_tb_12.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/CML_core_tb_13.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/CML_core_tb_14.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/CML_core_tb_15.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/CML_core_tb_16.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/CML_core_tb_17.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/CML_core_tb_18.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/CML_core_tb_19.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/CML_core_tb_20.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/CML_core_tb_21.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/CML_core_tb_22.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/CML_core_tb_23.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/CML_core_tb_24.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/CML_core_tb_25.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/CML_core_tb_26.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/simulation_summary.csv create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/simulation_summary.md create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/vo_diff_vs_time.png create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/summary.md create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/CML_core_tb_0.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/CML_core_tb_1.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/CML_core_tb_2.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/CML_core_tb_3.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/CML_core_tb_4.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/CML_core_tb_5.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/CML_core_tb_6.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/CML_core_tb_7.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/CML_core_tb_8.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/CML_core_tb_9.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/CML_core_tb_10.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/CML_core_tb_11.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/CML_core_tb_12.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/CML_core_tb_13.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/CML_core_tb_14.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/CML_core_tb_15.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/CML_core_tb_16.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/CML_core_tb_17.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/CML_core_tb_18.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/CML_core_tb_19.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/CML_core_tb_20.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/CML_core_tb_21.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/CML_core_tb_22.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/CML_core_tb_23.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/CML_core_tb_24.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/CML_core_tb_25.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/CML_core_tb_26.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/simulation_summary.csv create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/simulation_summary.md create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/vo_diff_vs_time.png create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/summary.md create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/CML_core_tb_0.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/CML_core_tb_1.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/CML_core_tb_2.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/CML_core_tb_3.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/CML_core_tb_4.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/CML_core_tb_5.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/CML_core_tb_6.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/CML_core_tb_7.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/CML_core_tb_8.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/CML_core_tb_9.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/CML_core_tb_10.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/CML_core_tb_11.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/CML_core_tb_12.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/CML_core_tb_13.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/CML_core_tb_14.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/CML_core_tb_15.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/CML_core_tb_16.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/CML_core_tb_17.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/CML_core_tb_18.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/CML_core_tb_19.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/CML_core_tb_20.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/CML_core_tb_21.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/CML_core_tb_22.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/CML_core_tb_23.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/CML_core_tb_24.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/CML_core_tb_25.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/.spiceinit create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/CML_core_tb.sch create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/CML_core_tb_26.data create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/CML_divider.sym create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/simulation_summary.csv create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/simulation_summary.md create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/vo_diff_vs_time.png create mode 100644 modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/summary.md create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/cace/LC_Oscillator.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/cace/scripts/__pycache__/freq.cpython-310.pyc create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/cace/scripts/freq.py create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/cace/templates/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/cace/templates/xschemrc create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider.md create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider/schematic/frequency.png create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider/schematic/vo_diff_vs_time.png create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider_schematic.md create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider_schematic.svg create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider_symbol.svg create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/docs/LC VCO.md create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/docs/LC VCO_schematic.md create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/LC_Oscillator_tb_1.data create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/LC_Oscillator_tb_4.data create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/LC_Oscillator_tb_7.data create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/LC_Oscillator_tb_10.data create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/LC_Oscillator_tb_13.data create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/LC_Oscillator_tb_16.data create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/LC_Oscillator_tb_19.data create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/LC_Oscillator_tb_22.data create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/LC_Oscillator_tb_25.data create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/.spiceinit create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/conditions.yaml create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/summary.md create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/testbench/LC_Oscillator_tb.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/testbench/simulations/LC_Oscillator_tb.save create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/testbench/xschemrc create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/xschem/LC_Oscillator.sch create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/xschem/LC_Oscillator.sym create mode 100644 modules/module_4_type_2_PLL/LC_Oscillator/xschem/xschemrc diff --git a/modules/module_4_type_2_PLL/CML_divider/cace/scripts/__pycache__/freq.cpython-312.pyc b/modules/module_4_type_2_PLL/CML_divider/cace/scripts/__pycache__/freq.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9966062bd924e4970ad600ca6b8c35ee2c005fb7 GIT binary patch literal 1649 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

dwtbz8yz+lR|QF zzT2Y00mTnh-es#PaNM^Z`-fG@eW3zYyS`6T;J}SE8zLq zd3moZI;GEuBjJaDU*%q10pRc|D=T68ClXA{MC534#x^2=G?Uz$GC?v95}nF96Ahd` z@Jk`_&A?J2G|I^Bws^=8ja<9f3vk=3bD6)5xZA*0OC{_~3eG!3lUwlq{Tno_#EV@` zAw=t4T8e9u`a!02-pb#2hnHcW4ef*g~F_Pe;xk6&QCMTEzfC!trb0X&IEbaF%9 z+qh*Y|I2G%mXj0U{3lA2vP$pPb+^@^(GB5*TT0JWIiT)bcb1LowR6_Lgl&Rx-JZ>U zpObNE%t#|yP5&C)VJG&l8+En^Fwc z%%xgAYYeL0XbB2=i6dVgwKRikAY`l;>HH^0DRO1h`6|EjT0zV7k$HKU8NhNT3yHG`Ygll!NkDJxhsJg_E$J@ zj&7-suCpi-Fcc=7eSsZHU>9!=JpXfrAQL#%0j%QDC}skO*`KTvwWtLjSEZJch={itn@r&wz1z zpm1BjzWr>e!Fy=%oSj3}P!_Nohd)0)BE@aE)E@+F;o{-J^+gEPT_)sl2OjWcn_1%8E$m)uMy^H4_JG+FWj~`S)+g2M{fEJ3 z5AFo`9qAdY&W=AC+y6Iah=Qbu!`7(&3V_{tL|2NG&wgoj$ zJCA7fU_u?za6R51V8X@)fJv+{@Q_Z!(oijCJM@A{-@xDizFMK5#t3^0Uq-L(1iT*d ze&Df%is%XifqX$)g799o0s{jVtkJumnT+s*AltBpJ2*Kd*&$?2YF6_lC>V zUg9e)ADjR_0ksSWK~4oJD$=i6>V%6^^EtgVkjrQ^BCeL8y(QRlf$sy6-!5I1m6ndF z4+{oL(Q+c&8KwCb zK9NE!GO;9@q}R)|gyjdN@d6@h400qhm@PMss*JurK|94a;9wVKtZ&q|dGjrq^_X6S z<@{re5^so$aPuAF&z_%jT2Bbpz&2zg7;(EZWNY=+*J*KTPhz{+Ua$I&n|HgPFmr2S zREZn!zg-e=G1@&A)0nkx!txy1`Z(dC-L*gK9D8?%=N62tx3-TjoXWeZ-Bl5i<4jW! ztQ8G&B)qy5vt=O{H!KU#a-9~an*W(|YWv&4-8uDS?BNew^gkc=4FGLJCTsfRC*#)Q}P8Y-o0-p}o4QY@zb0;u$kVHBL&gm+Rvt55l&_qnKcSGj@-4d*xNDwH> zD7ZDC=TrkxnXUf2!wAd@sAzrQ7$`OmV4>!->_S11I=2oHDA+^aev*WK5TRLM|Ly

PPh4mll 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%0D%)4R(^doNn(` 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 MBMnaKPhIo>0jtU(g#Z8m literal 0 HcmV?d00001 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/summary.md b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/summary.md new file mode 100644 index 00000000..a11c2c65 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-34-33/summary.md @@ -0,0 +1,11 @@ + +# CACE Summary for CML_divider + +**netlist source**: schematic + +| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | +| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | +| Frequency | ngspice | frequency | 4.3 GHz | 4.722 GHz | 5.0 GHz | 4.722 GHz | 5.2 GHz | 4.722 GHz | Pass ✅ | +| Amplitude | ngspice | amplitude | 0.2 V | 0.648 V | 0.4 V | 0.771 V | 0.6 V | 0.860 V | Fail ❌ | +| Voltage swing | ngspice | voltage_swing | 0.4 V | 1.295 V | 0.8 V | 1.543 V | 1.2 V | 1.720 V | Fail ❌ | + diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/CML_core_tb.sch new file mode 100644 index 00000000..48f6f0bb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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 {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=CACE\{vdd\} savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/CML_core_tb.sch new file mode 100644 index 00000000..bdaed397 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/CML_core_tb_0.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/CML_core_tb_0.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/CML_core_tb_0.data new file mode 100644 index 00000000..6e5c755c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/CML_core_tb_0.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.952325246460e-01 + 1.728000000000e-10 -6.043942197180e-02 + 1.828000000000e-10 1.817064006720e-01 + 1.928000000000e-10 3.985392356515e-01 + 2.028000000000e-10 5.562505249699e-01 + 2.128000000000e-10 6.572874178466e-01 + 2.228000000000e-10 7.087352858161e-01 + 2.328000000000e-10 7.029522511861e-01 + 2.428000000000e-10 6.344368312078e-01 + 2.528000000000e-10 5.013241237787e-01 + 2.628000000000e-10 3.030080742176e-01 + 2.728000000000e-10 6.578821975767e-02 + 2.828000000000e-10 -1.781586778972e-01 + 2.928000000000e-10 -3.964040373443e-01 + 3.028000000000e-10 -5.555461653242e-01 + 3.128000000000e-10 -6.571022283471e-01 + 3.228000000000e-10 -7.092808909864e-01 + 3.328000000000e-10 -7.040843150938e-01 + 3.428000000000e-10 -6.362469325195e-01 + 3.528000000000e-10 -5.032364212786e-01 + 3.628000000000e-10 -3.051350358226e-01 + 3.728000000000e-10 -6.762904380973e-02 + 3.828000000000e-10 1.763878132349e-01 + 3.928000000000e-10 3.951284969670e-01 + 4.028000000000e-10 5.545978983505e-01 + 4.128000000000e-10 6.566315830069e-01 + 4.228000000000e-10 7.089962487465e-01 + 4.328000000000e-10 7.042633111532e-01 + 4.428000000000e-10 6.365365170049e-01 + 4.528000000000e-10 5.037912579488e-01 + 4.628000000000e-10 3.056253251435e-01 + 4.728000000000e-10 6.823087043489e-02 + 4.828000000000e-10 -1.759620590786e-01 + 4.928000000000e-10 -3.946766675460e-01 + 5.028000000000e-10 -5.543918551335e-01 + 5.128000000000e-10 -6.564106038653e-01 + 5.228000000000e-10 -7.089804674794e-01 + 5.328000000000e-10 -7.042284637667e-01 + 5.428000000000e-10 -6.366831677063e-01 + 5.528000000000e-10 -5.038654128054e-01 + 5.628000000000e-10 -3.058301627321e-01 + 5.728000000000e-10 -6.832081314378e-02 + 5.828000000000e-10 1.757744687450e-01 + 5.928000000000e-10 3.946207346164e-01 + 6.028000000000e-10 5.542681653143e-01 + 6.128000000000e-10 6.564162326939e-01 + 6.228000000000e-10 7.089102158365e-01 + 6.328000000000e-10 7.042850183822e-01 + 6.428000000000e-10 6.366586213363e-01 + 6.528000000000e-10 5.039505543903e-01 + 6.628000000000e-10 3.058219717524e-01 + 6.728000000000e-10 6.840961740524e-02 + 6.828000000000e-10 -1.757862033444e-01 + 6.928000000000e-10 -3.945467987447e-01 + 7.028000000000e-10 -5.542929102277e-01 + 7.128000000000e-10 -6.563603422698e-01 + 7.228000000000e-10 -7.089481650220e-01 + 7.328000000000e-10 -7.042424683005e-01 + 7.428000000000e-10 -6.367078290897e-01 + 7.528000000000e-10 -5.039165471509e-01 + 7.628000000000e-10 -3.058753018579e-01 + 7.728000000000e-10 -6.837707225292e-02 + 7.828000000000e-10 1.757345833407e-01 + 7.928000000000e-10 3.945785215449e-01 + 8.028000000000e-10 5.542482652542e-01 + 8.128000000000e-10 6.563959408481e-01 + 8.228000000000e-10 7.089082113076e-01 + 8.328000000000e-10 7.042817797830e-01 + 8.428000000000e-10 6.366719399828e-01 + 8.528000000000e-10 5.039573608246e-01 + 8.628000000000e-10 3.058408732486e-01 + 8.728000000000e-10 6.841772818469e-02 + 8.828000000000e-10 -1.757686495942e-01 + 8.928000000000e-10 -3.945419964750e-01 + 9.028000000000e-10 -5.542809328797e-01 + 9.128000000000e-10 -6.563614885531e-01 + 9.228000000000e-10 -7.089411806967e-01 + 9.328000000000e-10 -7.042479976407e-01 + 9.428000000000e-10 -6.367051444468e-01 + 9.528000000000e-10 -5.039245834310e-01 + 9.628000000000e-10 -3.058742220339e-01 + 9.728000000000e-10 -6.838526492007e-02 + 9.828000000000e-10 1.757358039920e-01 + 9.928000000000e-10 3.945718167364e-01 + 1.000000000000e-09 5.155910006549e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/conditions.yaml new file mode 100644 index 00000000..0b7f398a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 0 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_00 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/CML_core_tb.sch new file mode 100644 index 00000000..6d814da2 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/CML_core_tb_1.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/CML_core_tb_1.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/CML_core_tb_1.data new file mode 100644 index 00000000..94a2849c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/CML_core_tb_1.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.647956442563e-01 + 1.728000000000e-10 -3.672466403620e-02 + 1.828000000000e-10 1.978055322165e-01 + 1.928000000000e-10 4.056017943518e-01 + 2.028000000000e-10 5.547344088879e-01 + 2.128000000000e-10 6.487490848065e-01 + 2.228000000000e-10 6.923653634957e-01 + 2.328000000000e-10 6.780886353961e-01 + 2.428000000000e-10 6.039598047192e-01 + 2.528000000000e-10 4.698168410475e-01 + 2.628000000000e-10 2.751260896566e-01 + 2.728000000000e-10 4.430157580526e-02 + 2.828000000000e-10 -1.925038311834e-01 + 2.928000000000e-10 -4.023301580756e-01 + 3.028000000000e-10 -5.533152551340e-01 + 3.128000000000e-10 -6.481954476962e-01 + 3.228000000000e-10 -6.930655672739e-01 + 3.328000000000e-10 -6.800540209913e-01 + 3.428000000000e-10 -6.070129146880e-01 + 3.528000000000e-10 -4.732295235615e-01 + 3.628000000000e-10 -2.788311309623e-01 + 3.728000000000e-10 -4.769207273318e-02 + 3.828000000000e-10 1.893739393663e-01 + 3.928000000000e-10 3.999895682405e-01 + 4.028000000000e-10 5.516914161753e-01 + 4.128000000000e-10 6.473194453459e-01 + 4.228000000000e-10 6.926967113745e-01 + 4.328000000000e-10 6.804409619078e-01 + 4.428000000000e-10 6.077344291363e-01 + 4.528000000000e-10 4.743209278754e-01 + 4.628000000000e-10 2.799315218230e-01 + 4.728000000000e-10 4.887682675205e-02 + 4.828000000000e-10 -1.884058832182e-01 + 4.928000000000e-10 -3.991237321070e-01 + 5.028000000000e-10 -5.511979674959e-01 + 5.128000000000e-10 -6.469402879887e-01 + 5.228000000000e-10 -6.926225993557e-01 + 5.328000000000e-10 -6.804805060919e-01 + 5.428000000000e-10 -6.080204415279e-01 + 5.528000000000e-10 -4.745961817340e-01 + 5.628000000000e-10 -2.803459413605e-01 + 5.728000000000e-10 -4.918721233066e-02 + 5.828000000000e-10 1.880320213273e-01 + 5.928000000000e-10 3.989072784961e-01 + 6.028000000000e-10 5.509784832100e-01 + 6.128000000000e-10 6.468776696433e-01 + 6.228000000000e-10 6.925382949500e-01 + 6.328000000000e-10 6.805520167761e-01 + 6.428000000000e-10 6.080522625696e-01 + 6.528000000000e-10 4.747422384222e-01 + 6.628000000000e-10 2.804194075907e-01 + 6.728000000000e-10 4.934414267879e-02 + 6.828000000000e-10 -1.879699706397e-01 + 6.928000000000e-10 -3.987854446736e-01 + 7.028000000000e-10 -5.509613139230e-01 + 7.128000000000e-10 -6.468062697707e-01 + 7.228000000000e-10 -6.925630874809e-01 + 7.328000000000e-10 -6.805223964692e-01 + 7.428000000000e-10 -6.081132322697e-01 + 7.528000000000e-10 -4.747366406660e-01 + 7.628000000000e-10 -2.804933490724e-01 + 7.728000000000e-10 -4.934235519722e-02 + 7.828000000000e-10 1.879006367827e-01 + 7.928000000000e-10 3.987938070562e-01 + 8.028000000000e-10 5.509093463144e-01 + 8.128000000000e-10 6.468293959909e-01 + 8.228000000000e-10 6.925252291894e-01 + 8.328000000000e-10 6.805590879185e-01 + 8.428000000000e-10 6.080875904937e-01 + 8.528000000000e-10 4.747803907956e-01 + 8.628000000000e-10 2.804721530083e-01 + 8.728000000000e-10 4.938687520288e-02 + 8.828000000000e-10 -1.879222775604e-01 + 8.928000000000e-10 -3.987554695640e-01 + 9.028000000000e-10 -5.509333914335e-01 + 9.128000000000e-10 -6.467969990881e-01 + 9.228000000000e-10 -6.925530415231e-01 + 9.328000000000e-10 -6.805304150604e-01 + 9.428000000000e-10 -6.081187600045e-01 + 9.528000000000e-10 -4.747542418837e-01 + 9.628000000000e-10 -2.805045225794e-01 + 9.728000000000e-10 -4.936125388638e-02 + 9.828000000000e-10 1.878908530872e-01 + 9.928000000000e-10 3.987795364060e-01 + 1.000000000000e-09 5.142017254263e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/conditions.yaml new file mode 100644 index 00000000..a6501d32 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 1 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_01 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/CML_core_tb.sch new file mode 100644 index 00000000..41a5530c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/CML_core_tb_2.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/CML_core_tb_2.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/CML_core_tb_2.data new file mode 100644 index 00000000..cdbb156b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/CML_core_tb_2.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -3.226907107526e-01 + 1.728000000000e-10 -8.539968284410e-02 + 1.828000000000e-10 1.614480909662e-01 + 1.928000000000e-10 3.869191924745e-01 + 2.028000000000e-10 5.540483396157e-01 + 2.128000000000e-10 6.620167995175e-01 + 2.228000000000e-10 7.202634748901e-01 + 2.328000000000e-10 7.212523007105e-01 + 2.428000000000e-10 6.566979396260e-01 + 2.528000000000e-10 5.250303609426e-01 + 2.628000000000e-10 3.265092852166e-01 + 2.728000000000e-10 8.707604756770e-02 + 2.828000000000e-10 -1.611600424348e-01 + 2.928000000000e-10 -3.873238626333e-01 + 3.028000000000e-10 -5.550746884823e-01 + 3.128000000000e-10 -6.629366269634e-01 + 3.228000000000e-10 -7.212894794449e-01 + 3.328000000000e-10 -7.220878341254e-01 + 3.428000000000e-10 -6.576651735802e-01 + 3.528000000000e-10 -5.257535323793e-01 + 3.628000000000e-10 -3.273054874384e-01 + 3.728000000000e-10 -8.759901468451e-02 + 3.828000000000e-10 1.605580394287e-01 + 3.928000000000e-10 3.869863823107e-01 + 4.028000000000e-10 5.547303069787e-01 + 4.128000000000e-10 6.628461833305e-01 + 4.228000000000e-10 7.211466820779e-01 + 4.328000000000e-10 7.221995653822e-01 + 4.428000000000e-10 6.577128147927e-01 + 4.528000000000e-10 5.259884868760e-01 + 4.628000000000e-10 3.274163471898e-01 + 4.728000000000e-10 8.784541550780e-02 + 4.828000000000e-10 -1.604682108624e-01 + 4.928000000000e-10 -3.867888973241e-01 + 5.028000000000e-10 -5.547066546217e-01 + 5.128000000000e-10 -6.627253094524e-01 + 5.228000000000e-10 -7.211826888209e-01 + 5.328000000000e-10 -7.221369141817e-01 + 5.428000000000e-10 -6.577994031943e-01 + 5.528000000000e-10 -5.259620192587e-01 + 5.628000000000e-10 -3.275201865204e-01 + 5.728000000000e-10 -8.782404636233e-02 + 5.828000000000e-10 1.603689538405e-01 + 5.928000000000e-10 3.868153343854e-01 + 6.028000000000e-10 5.546284247412e-01 + 6.128000000000e-10 6.627691182366e-01 + 6.228000000000e-10 7.211205707397e-01 + 6.328000000000e-10 7.221945096033e-01 + 6.428000000000e-10 6.577508134366e-01 + 6.528000000000e-10 5.260261908485e-01 + 6.628000000000e-10 3.274760111912e-01 + 6.728000000000e-10 8.788851273295e-02 + 6.828000000000e-10 -1.604138329037e-01 + 6.928000000000e-10 -3.867579820075e-01 + 7.028000000000e-10 -5.546733587088e-01 + 7.128000000000e-10 -6.627166397254e-01 + 7.228000000000e-10 -7.211676696649e-01 + 7.328000000000e-10 -7.221448613305e-01 + 7.428000000000e-10 -6.577993970261e-01 + 7.528000000000e-10 -5.259796511606e-01 + 7.628000000000e-10 -3.275252420812e-01 + 7.728000000000e-10 -8.784270745333e-02 + 7.828000000000e-10 1.603648729372e-01 + 7.928000000000e-10 3.868003178892e-01 + 8.028000000000e-10 5.546284703905e-01 + 8.128000000000e-10 6.627594909397e-01 + 8.228000000000e-10 7.211247368625e-01 + 8.328000000000e-10 7.221884517678e-01 + 8.428000000000e-10 6.577581123739e-01 + 8.528000000000e-10 5.260226393584e-01 + 8.628000000000e-10 3.274844581735e-01 + 8.728000000000e-10 8.788515759553e-02 + 8.828000000000e-10 -1.604054537172e-01 + 8.928000000000e-10 -3.867616376768e-01 + 9.028000000000e-10 -5.546662826942e-01 + 9.128000000000e-10 -6.627215467888e-01 + 9.228000000000e-10 -7.211618152183e-01 + 9.328000000000e-10 -7.221504122635e-01 + 9.428000000000e-10 -6.577943183983e-01 + 9.528000000000e-10 -5.259856282734e-01 + 9.628000000000e-10 -3.275204867996e-01 + 9.728000000000e-10 -8.784851998896e-02 + 9.828000000000e-10 1.603694682536e-01 + 9.928000000000e-10 3.867951846118e-01 + 1.000000000000e-09 5.139507493642e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/conditions.yaml new file mode 100644 index 00000000..443b9fe6 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 2 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_02 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/CML_core_tb.sch new file mode 100644 index 00000000..769600e2 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/CML_core_tb_3.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/CML_core_tb_3.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/CML_core_tb_3.data new file mode 100644 index 00000000..a5b707e1 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/CML_core_tb_3.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.752371518652e-01 + 1.728000000000e-10 -5.371376319542e-02 + 1.828000000000e-10 1.789877413053e-01 + 1.928000000000e-10 3.904548691103e-01 + 2.028000000000e-10 5.481842948229e-01 + 2.128000000000e-10 6.473880529986e-01 + 2.228000000000e-10 6.910106576952e-01 + 2.328000000000e-10 6.747515328639e-01 + 2.428000000000e-10 5.993982850131e-01 + 2.528000000000e-10 4.678235295331e-01 + 2.628000000000e-10 2.811940191144e-01 + 2.728000000000e-10 5.749892092429e-02 + 2.828000000000e-10 -1.768703468756e-01 + 2.928000000000e-10 -3.894327299011e-01 + 3.028000000000e-10 -5.481462871223e-01 + 3.128000000000e-10 -6.476233959034e-01 + 3.228000000000e-10 -6.918267741740e-01 + 3.328000000000e-10 -6.759891610513e-01 + 3.428000000000e-10 -6.011477081233e-01 + 3.528000000000e-10 -4.695436066175e-01 + 3.628000000000e-10 -2.830251877311e-01 + 3.728000000000e-10 -5.907673776650e-02 + 3.828000000000e-10 1.753349861707e-01 + 3.928000000000e-10 3.883274219019e-01 + 4.028000000000e-10 5.473035177189e-01 + 4.128000000000e-10 6.472356324664e-01 + 4.228000000000e-10 6.916308158427e-01 + 4.328000000000e-10 6.762268077787e-01 + 4.428000000000e-10 6.014684070962e-01 + 4.528000000000e-10 4.700895666681e-01 + 4.628000000000e-10 2.834862741746e-01 + 4.728000000000e-10 5.964855757083e-02 + 4.828000000000e-10 -1.749274761915e-01 + 4.928000000000e-10 -3.878897710558e-01 + 5.028000000000e-10 -5.470986037433e-01 + 5.128000000000e-10 -6.470272164409e-01 + 5.228000000000e-10 -6.916322065746e-01 + 5.328000000000e-10 -6.762158687864e-01 + 5.428000000000e-10 -6.016311330158e-01 + 5.528000000000e-10 -4.701782346337e-01 + 5.628000000000e-10 -2.836941639082e-01 + 5.728000000000e-10 -5.974768838544e-02 + 5.828000000000e-10 1.747352099095e-01 + 5.928000000000e-10 3.878245260251e-01 + 6.028000000000e-10 5.469715931678e-01 + 6.128000000000e-10 6.470284806517e-01 + 6.228000000000e-10 6.915679621080e-01 + 6.328000000000e-10 6.762768333485e-01 + 6.428000000000e-10 6.016163496453e-01 + 6.528000000000e-10 4.702674812943e-01 + 6.628000000000e-10 2.836938506434e-01 + 6.728000000000e-10 5.983990401354e-02 + 6.828000000000e-10 -1.747391664584e-01 + 6.928000000000e-10 -3.877472828580e-01 + 7.028000000000e-10 -5.469903889528e-01 + 7.128000000000e-10 -6.469730360721e-01 + 7.228000000000e-10 -6.916047287716e-01 + 7.328000000000e-10 -6.762386026180e-01 + 7.428000000000e-10 -6.016669907082e-01 + 7.528000000000e-10 -4.702390118128e-01 + 7.628000000000e-10 -2.837481181728e-01 + 7.728000000000e-10 -5.981248689037e-02 + 7.828000000000e-10 1.746867337354e-01 + 7.928000000000e-10 3.877749638679e-01 + 8.028000000000e-10 5.469462314077e-01 + 8.128000000000e-10 6.470055622974e-01 + 8.228000000000e-10 6.915665740520e-01 + 8.328000000000e-10 6.762766371031e-01 + 8.428000000000e-10 6.016337946720e-01 + 8.528000000000e-10 4.702787360349e-01 + 8.628000000000e-10 2.837166478210e-01 + 8.728000000000e-10 5.985233152723e-02 + 8.828000000000e-10 -1.747180248353e-01 + 8.928000000000e-10 -3.877389392165e-01 + 9.028000000000e-10 -5.469764940938e-01 + 9.128000000000e-10 -6.469724949526e-01 + 9.228000000000e-10 -6.915980610397e-01 + 9.328000000000e-10 -6.762447762615e-01 + 9.428000000000e-10 -6.016660865709e-01 + 9.528000000000e-10 -4.702484057793e-01 + 9.628000000000e-10 -2.837489236123e-01 + 9.728000000000e-10 -5.982216431619e-02 + 9.828000000000e-10 1.746862818107e-01 + 9.928000000000e-10 3.877670239311e-01 + 1.000000000000e-09 5.084292112944e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/conditions.yaml new file mode 100644 index 00000000..b8a61493 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 3 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_03 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/CML_core_tb.sch new file mode 100644 index 00000000..1da7bc04 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/CML_core_tb_4.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/CML_core_tb_4.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/CML_core_tb_4.data new file mode 100644 index 00000000..8dbaf881 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/CML_core_tb_4.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.482257947455e-01 + 1.728000000000e-10 -3.259266550035e-02 + 1.828000000000e-10 1.930322087844e-01 + 1.928000000000e-10 3.960886599474e-01 + 2.028000000000e-10 5.450058997505e-01 + 2.128000000000e-10 6.360387116800e-01 + 2.228000000000e-10 6.712975422190e-01 + 2.328000000000e-10 6.474938983982e-01 + 2.428000000000e-10 5.679706274704e-01 + 2.528000000000e-10 4.364781736218e-01 + 2.628000000000e-10 2.536409133725e-01 + 2.728000000000e-10 3.555786929817e-02 + 2.828000000000e-10 -1.919150168478e-01 + 2.928000000000e-10 -3.960490843585e-01 + 3.028000000000e-10 -5.456465197220e-01 + 3.128000000000e-10 -6.367232933250e-01 + 3.228000000000e-10 -6.725166925877e-01 + 3.328000000000e-10 -6.491812984547e-01 + 3.428000000000e-10 -5.701612342484e-01 + 3.528000000000e-10 -4.386195239579e-01 + 3.628000000000e-10 -2.558666299298e-01 + 3.728000000000e-10 -3.750940439386e-02 + 3.828000000000e-10 1.900731677010e-01 + 3.928000000000e-10 3.947279065049e-01 + 4.028000000000e-10 5.446879536498e-01 + 4.128000000000e-10 6.362937598492e-01 + 4.228000000000e-10 6.723764816130e-01 + 4.328000000000e-10 6.495551727740e-01 + 4.428000000000e-10 5.706690754638e-01 + 4.528000000000e-10 4.393690386281e-01 + 4.628000000000e-10 2.565445890136e-01 + 4.728000000000e-10 3.828939038748e-02 + 4.828000000000e-10 -1.894747026650e-01 + 4.928000000000e-10 -3.941469427019e-01 + 5.028000000000e-10 -5.443881652157e-01 + 5.128000000000e-10 -6.360424686566e-01 + 5.228000000000e-10 -6.723795425302e-01 + 5.328000000000e-10 -6.495951074105e-01 + 5.428000000000e-10 -5.709049111673e-01 + 5.528000000000e-10 -4.395480856777e-01 + 5.628000000000e-10 -2.568451405700e-01 + 5.728000000000e-10 -3.848386295174e-02 + 5.828000000000e-10 1.891998017504e-01 + 5.928000000000e-10 3.940128253458e-01 + 6.028000000000e-10 5.442195759360e-01 + 6.128000000000e-10 6.360190076123e-01 + 6.228000000000e-10 6.723154692419e-01 + 6.328000000000e-10 6.496722035130e-01 + 6.428000000000e-10 5.709215560836e-01 + 6.528000000000e-10 4.396716365902e-01 + 6.628000000000e-10 2.568848555761e-01 + 6.728000000000e-10 3.861258812938e-02 + 6.828000000000e-10 -1.891673406027e-01 + 6.928000000000e-10 -3.939096487469e-01 + 7.028000000000e-10 -5.442185154541e-01 + 7.128000000000e-10 -6.359555029215e-01 + 7.228000000000e-10 -6.723494769467e-01 + 7.328000000000e-10 -6.496420384079e-01 + 7.428000000000e-10 -5.709822816025e-01 + 7.528000000000e-10 -4.396582995671e-01 + 7.628000000000e-10 -2.569529185106e-01 + 7.728000000000e-10 -3.860128053097e-02 + 7.828000000000e-10 1.891028165048e-01 + 7.928000000000e-10 3.939252197739e-01 + 8.028000000000e-10 5.441685861906e-01 + 8.128000000000e-10 6.359828023137e-01 + 8.228000000000e-10 6.723118712615e-01 + 8.328000000000e-10 6.496812709937e-01 + 8.428000000000e-10 5.709544657577e-01 + 8.528000000000e-10 4.397022527784e-01 + 8.628000000000e-10 2.569280980597e-01 + 8.728000000000e-10 3.864565597286e-02 + 8.828000000000e-10 -1.891278298806e-01 + 8.928000000000e-10 -3.938862165142e-01 + 9.028000000000e-10 -5.441949734698e-01 + 9.128000000000e-10 -6.359493781265e-01 + 9.228000000000e-10 -6.723420888760e-01 + 9.328000000000e-10 -6.496512561522e-01 + 9.428000000000e-10 -5.709874488604e-01 + 9.528000000000e-10 -4.396746422576e-01 + 9.628000000000e-10 -2.569616958772e-01 + 9.728000000000e-10 -3.861839939192e-02 + 9.828000000000e-10 1.890951489097e-01 + 9.928000000000e-10 3.939119089870e-01 + 1.000000000000e-09 5.081084039478e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/conditions.yaml new file mode 100644 index 00000000..0fc6562b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 4 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_04 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/CML_core_tb.sch new file mode 100644 index 00000000..2c044836 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/CML_core_tb_5.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/CML_core_tb_5.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/CML_core_tb_5.data new file mode 100644 index 00000000..72d71163 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/CML_core_tb_5.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -3.026592886865e-01 + 1.728000000000e-10 -8.046058591213e-02 + 1.828000000000e-10 1.560684489845e-01 + 1.928000000000e-10 3.758215815324e-01 + 2.028000000000e-10 5.441825187720e-01 + 2.128000000000e-10 6.527787402061e-01 + 2.228000000000e-10 7.054162779080e-01 + 2.328000000000e-10 6.966940307878e-01 + 2.428000000000e-10 6.251719997267e-01 + 2.528000000000e-10 4.948986245243e-01 + 2.628000000000e-10 3.088338841037e-01 + 2.728000000000e-10 8.463582249819e-02 + 2.828000000000e-10 -1.534379373390e-01 + 2.928000000000e-10 -3.742382678981e-01 + 3.028000000000e-10 -5.437587344983e-01 + 3.128000000000e-10 -6.527795869025e-01 + 3.228000000000e-10 -7.060578401775e-01 + 3.328000000000e-10 -6.977288800308e-01 + 3.428000000000e-10 -6.267241220561e-01 + 3.528000000000e-10 -4.964034573067e-01 + 3.628000000000e-10 -3.104523257846e-01 + 3.728000000000e-10 -8.599843693100e-02 + 3.828000000000e-10 1.520614001089e-01 + 3.928000000000e-10 3.732327292359e-01 + 4.028000000000e-10 5.429530946109e-01 + 4.128000000000e-10 6.523997728799e-01 + 4.228000000000e-10 7.058202145507e-01 + 4.328000000000e-10 6.979022558405e-01 + 4.428000000000e-10 6.269588593419e-01 + 4.528000000000e-10 4.968624227466e-01 + 4.628000000000e-10 3.108132149603e-01 + 4.728000000000e-10 8.648038785746e-02 + 4.828000000000e-10 -1.517384677919e-01 + 4.928000000000e-10 -3.728474794484e-01 + 5.028000000000e-10 -5.427866011842e-01 + 5.128000000000e-10 -6.522022614009e-01 + 5.228000000000e-10 -7.058208822479e-01 + 5.328000000000e-10 -6.978651082200e-01 + 5.428000000000e-10 -6.270935668997e-01 + 5.528000000000e-10 -4.969096569281e-01 + 5.628000000000e-10 -3.109835748750e-01 + 5.728000000000e-10 -8.653572716924e-02 + 5.828000000000e-10 1.515778681972e-01 + 5.928000000000e-10 3.728127447205e-01 + 6.028000000000e-10 5.426739415091e-01 + 6.128000000000e-10 6.522162007318e-01 + 6.228000000000e-10 7.057544179932e-01 + 6.328000000000e-10 6.979224304337e-01 + 6.428000000000e-10 6.270641898671e-01 + 6.528000000000e-10 4.969874144680e-01 + 6.628000000000e-10 3.109648292365e-01 + 6.728000000000e-10 8.661535651254e-02 + 6.828000000000e-10 -1.515990397030e-01 + 6.928000000000e-10 -3.727433125293e-01 + 7.028000000000e-10 -5.427028559119e-01 + 7.128000000000e-10 -6.521615488134e-01 + 7.228000000000e-10 -7.057946841560e-01 + 7.328000000000e-10 -6.978790263426e-01 + 7.428000000000e-10 -6.271133848792e-01 + 7.528000000000e-10 -4.969513861012e-01 + 7.628000000000e-10 -3.110159233563e-01 + 7.728000000000e-10 -8.658006676818e-02 + 7.828000000000e-10 1.515487071721e-01 + 7.928000000000e-10 3.727772980737e-01 + 8.028000000000e-10 5.426589701450e-01 + 8.128000000000e-10 6.521979789832e-01 + 8.228000000000e-10 7.057547305503e-01 + 8.328000000000e-10 6.979187185021e-01 + 8.428000000000e-10 6.270767072939e-01 + 8.528000000000e-10 4.969913946096e-01 + 8.628000000000e-10 3.109805885282e-01 + 8.728000000000e-10 8.662004567696e-02 + 8.828000000000e-10 -1.515841004471e-01 + 8.928000000000e-10 -3.727405314049e-01 + 9.028000000000e-10 -5.426922302859e-01 + 9.128000000000e-10 -6.521632231968e-01 + 9.228000000000e-10 -7.057882763540e-01 + 9.328000000000e-10 -6.978845659833e-01 + 9.428000000000e-10 -6.271103709374e-01 + 9.528000000000e-10 -4.969587868574e-01 + 9.628000000000e-10 -3.110138943909e-01 + 9.728000000000e-10 -8.658760475646e-02 + 9.828000000000e-10 1.515508999036e-01 + 9.928000000000e-10 3.727707590510e-01 + 1.000000000000e-09 5.012730784879e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/conditions.yaml new file mode 100644 index 00000000..0ad1edf7 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 5 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_05 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/CML_core_tb.sch new file mode 100644 index 00000000..6264c557 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/CML_core_tb_6.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/CML_core_tb_6.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/CML_core_tb_6.data new file mode 100644 index 00000000..2ac25b32 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/CML_core_tb_6.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.658991355482e-01 + 1.728000000000e-10 -5.658971746101e-02 + 1.828000000000e-10 1.665652322471e-01 + 1.928000000000e-10 3.726189743475e-01 + 2.028000000000e-10 5.303705116758e-01 + 2.128000000000e-10 6.287796796090e-01 + 2.228000000000e-10 6.685380236864e-01 + 2.328000000000e-10 6.490234756137e-01 + 2.428000000000e-10 5.737092070140e-01 + 2.528000000000e-10 4.474825535463e-01 + 2.628000000000e-10 2.725242795062e-01 + 2.728000000000e-10 6.117177433707e-02 + 2.828000000000e-10 -1.637031734923e-01 + 2.928000000000e-10 -3.708935568747e-01 + 3.028000000000e-10 -5.297756369707e-01 + 3.128000000000e-10 -6.287017384995e-01 + 3.228000000000e-10 -6.693265533929e-01 + 3.328000000000e-10 -6.504570398323e-01 + 3.428000000000e-10 -5.758168078022e-01 + 3.528000000000e-10 -4.496242973413e-01 + 3.628000000000e-10 -2.747981275605e-01 + 3.728000000000e-10 -6.319393908833e-02 + 3.828000000000e-10 1.617439470913e-01 + 3.928000000000e-10 3.694169588634e-01 + 4.028000000000e-10 5.286499307585e-01 + 4.128000000000e-10 6.281722098808e-01 + 4.228000000000e-10 6.691184385543e-01 + 4.328000000000e-10 6.507901751637e-01 + 4.428000000000e-10 5.762974118946e-01 + 4.528000000000e-10 4.503608294114e-01 + 4.628000000000e-10 2.754522690623e-01 + 4.728000000000e-10 6.396306731359e-02 + 4.828000000000e-10 -1.611542650007e-01 + 4.928000000000e-10 -3.688169747432e-01 + 5.028000000000e-10 -5.283292872594e-01 + 5.128000000000e-10 -6.279003852563e-01 + 5.228000000000e-10 -6.691136918962e-01 + 5.328000000000e-10 -6.508124831570e-01 + 5.428000000000e-10 -5.765249280825e-01 + 5.528000000000e-10 -4.505225248069e-01 + 5.628000000000e-10 -2.757393848954e-01 + 5.728000000000e-10 -6.413835118523e-02 + 5.828000000000e-10 1.608879015274e-01 + 5.928000000000e-10 3.686909867212e-01 + 6.028000000000e-10 5.281558224884e-01 + 6.128000000000e-10 6.278785795680e-01 + 6.228000000000e-10 6.690442760911e-01 + 6.328000000000e-10 6.508870303825e-01 + 6.428000000000e-10 5.765321271449e-01 + 6.528000000000e-10 4.506407637839e-01 + 6.628000000000e-10 2.757670228304e-01 + 6.728000000000e-10 6.426080532693e-02 + 6.828000000000e-10 -1.608659404084e-01 + 6.928000000000e-10 -3.685888330346e-01 + 7.028000000000e-10 -5.281591419234e-01 + 7.128000000000e-10 -6.278127091451e-01 + 7.228000000000e-10 -6.690805910819e-01 + 7.328000000000e-10 -6.508520944992e-01 + 7.428000000000e-10 -5.765925476372e-01 + 7.528000000000e-10 -4.506215704207e-01 + 7.628000000000e-10 -2.758332595929e-01 + 7.728000000000e-10 -6.424327491403e-02 + 7.828000000000e-10 1.608024320318e-01 + 7.928000000000e-10 3.686091606456e-01 + 8.028000000000e-10 5.281080947303e-01 + 8.128000000000e-10 6.278426474070e-01 + 8.228000000000e-10 6.690409470235e-01 + 8.328000000000e-10 6.508923982303e-01 + 8.428000000000e-10 5.765614162070e-01 + 8.528000000000e-10 4.506656063053e-01 + 8.628000000000e-10 2.758047260180e-01 + 8.728000000000e-10 6.428762429922e-02 + 8.828000000000e-10 -1.608310872580e-01 + 8.928000000000e-10 -3.685690211775e-01 + 9.028000000000e-10 -5.281370864240e-01 + 9.128000000000e-10 -6.278075066251e-01 + 9.228000000000e-10 -6.690730291835e-01 + 9.328000000000e-10 -6.508603444096e-01 + 9.428000000000e-10 -5.765956636587e-01 + 9.528000000000e-10 -4.506359555730e-01 + 9.628000000000e-10 -2.758391852585e-01 + 9.728000000000e-10 -6.425829353036e-02 + 9.828000000000e-10 1.607973448132e-01 + 9.928000000000e-10 3.685968285070e-01 + 1.000000000000e-09 4.894958047088e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/conditions.yaml new file mode 100644 index 00000000..36f5013b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 6 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_06 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/CML_core_tb.sch new file mode 100644 index 00000000..a5abe997 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/CML_core_tb_7.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/CML_core_tb_7.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/CML_core_tb_7.data new file mode 100644 index 00000000..8cc8eec2 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/CML_core_tb_7.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.411371086013e-01 + 1.728000000000e-10 -3.745255924116e-02 + 1.828000000000e-10 1.789428987452e-01 + 1.928000000000e-10 3.769558934840e-01 + 2.028000000000e-10 5.255858783541e-01 + 2.128000000000e-10 6.150086513683e-01 + 2.228000000000e-10 6.463506095909e-01 + 2.328000000000e-10 6.202014565113e-01 + 2.428000000000e-10 5.417075102450e-01 + 2.528000000000e-10 4.161519970610e-01 + 2.628000000000e-10 2.448960905686e-01 + 2.728000000000e-10 3.892968213965e-02 + 2.828000000000e-10 -1.791505445505e-01 + 2.928000000000e-10 -3.778686664383e-01 + 3.028000000000e-10 -5.268093330033e-01 + 3.128000000000e-10 -6.159877416348e-01 + 3.228000000000e-10 -6.476195951568e-01 + 3.328000000000e-10 -6.216667221790e-01 + 3.428000000000e-10 -5.435382878554e-01 + 3.528000000000e-10 -4.178448923887e-01 + 3.628000000000e-10 -2.466531390426e-01 + 3.728000000000e-10 -4.041876256606e-02 + 3.828000000000e-10 1.777092594525e-01 + 3.928000000000e-10 3.768542192180e-01 + 4.028000000000e-10 5.260351926041e-01 + 4.128000000000e-10 6.156923491854e-01 + 4.228000000000e-10 6.475364165656e-01 + 4.328000000000e-10 6.220253224816e-01 + 4.428000000000e-10 5.439681165412e-01 + 4.528000000000e-10 4.184919515643e-01 + 4.628000000000e-10 2.472032785778e-01 + 4.728000000000e-10 4.108392377197e-02 + 4.828000000000e-10 -1.772209974541e-01 + 4.928000000000e-10 -3.763464849454e-01 + 5.028000000000e-10 -5.257893585276e-01 + 5.128000000000e-10 -6.154751208437e-01 + 5.228000000000e-10 -6.475677164184e-01 + 5.328000000000e-10 -6.220637777790e-01 + 5.428000000000e-10 -5.441970040997e-01 + 5.528000000000e-10 -4.186454653208e-01 + 5.628000000000e-10 -2.474812841152e-01 + 5.728000000000e-10 -4.124875776275e-02 + 5.828000000000e-10 1.769646369358e-01 + 5.928000000000e-10 3.762321495571e-01 + 6.028000000000e-10 5.256270530622e-01 + 6.128000000000e-10 6.154644314175e-01 + 6.228000000000e-10 6.475079392204e-01 + 6.328000000000e-10 6.221477255403e-01 + 6.428000000000e-10 5.442104878297e-01 + 6.528000000000e-10 4.187701859554e-01 + 6.628000000000e-10 2.475138621783e-01 + 6.728000000000e-10 4.137738638918e-02 + 6.828000000000e-10 -1.769383615791e-01 + 6.928000000000e-10 -3.761265802968e-01 + 7.028000000000e-10 -5.256298366366e-01 + 7.128000000000e-10 -6.153992750277e-01 + 7.228000000000e-10 -6.475476374408e-01 + 7.328000000000e-10 -6.221164421539e-01 + 7.428000000000e-10 -5.442762390873e-01 + 7.528000000000e-10 -4.187551150856e-01 + 7.628000000000e-10 -2.475858208222e-01 + 7.728000000000e-10 -4.136415856981e-02 + 7.828000000000e-10 1.768699557901e-01 + 7.928000000000e-10 3.761440347995e-01 + 8.028000000000e-10 5.255765528630e-01 + 8.128000000000e-10 6.154291154928e-01 + 8.228000000000e-10 6.475082015932e-01 + 8.328000000000e-10 6.221591874056e-01 + 8.428000000000e-10 5.442468649409e-01 + 8.528000000000e-10 4.188025713318e-01 + 8.628000000000e-10 2.475593730203e-01 + 8.728000000000e-10 4.141194467582e-02 + 8.828000000000e-10 -1.768965906206e-01 + 8.928000000000e-10 -3.761014263264e-01 + 9.028000000000e-10 -5.256047249426e-01 + 9.128000000000e-10 -6.153930400649e-01 + 9.228000000000e-10 -6.475410523019e-01 + 9.328000000000e-10 -6.221273229309e-01 + 9.428000000000e-10 -5.442828742825e-01 + 9.528000000000e-10 -4.187734552047e-01 + 9.628000000000e-10 -2.475958588134e-01 + 9.728000000000e-10 -4.138326223977e-02 + 9.828000000000e-10 1.768611473522e-01 + 9.928000000000e-10 3.761288017358e-01 + 1.000000000000e-09 4.898465656484e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/conditions.yaml new file mode 100644 index 00000000..69575399 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 7 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_07 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/CML_core_tb.sch new file mode 100644 index 00000000..85c2bca7 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/CML_core_tb_8.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/CML_core_tb_8.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/CML_core_tb_8.data new file mode 100644 index 00000000..2ec9911e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/CML_core_tb_8.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.915574653990e-01 + 1.728000000000e-10 -8.207206468644e-02 + 1.828000000000e-10 1.443140454917e-01 + 1.928000000000e-10 3.578501059917e-01 + 2.028000000000e-10 5.264102614641e-01 + 2.128000000000e-10 6.356033847750e-01 + 2.228000000000e-10 6.852124516173e-01 + 2.328000000000e-10 6.731697751231e-01 + 2.428000000000e-10 6.014680860110e-01 + 2.528000000000e-10 4.762934940598e-01 + 2.628000000000e-10 3.019743151843e-01 + 2.728000000000e-10 9.052768843264e-02 + 2.828000000000e-10 -1.376882496508e-01 + 2.928000000000e-10 -3.528073773591e-01 + 3.028000000000e-10 -5.234244166185e-01 + 3.128000000000e-10 -6.340851318675e-01 + 3.228000000000e-10 -6.854084589569e-01 + 3.328000000000e-10 -6.747695956588e-01 + 3.428000000000e-10 -6.042844418494e-01 + 3.528000000000e-10 -4.793995649692e-01 + 3.628000000000e-10 -3.052822644166e-01 + 3.728000000000e-10 -9.358407685982e-02 + 3.828000000000e-10 1.347194202511e-01 + 3.928000000000e-10 3.504174847188e-01 + 4.028000000000e-10 5.215924623562e-01 + 4.128000000000e-10 6.330900225454e-01 + 4.228000000000e-10 6.849701135730e-01 + 4.328000000000e-10 6.751037342439e-01 + 4.428000000000e-10 6.049384750133e-01 + 4.528000000000e-10 4.803914109079e-01 + 4.628000000000e-10 3.062148923158e-01 + 4.728000000000e-10 9.463220881739e-02 + 4.828000000000e-10 -1.338572933423e-01 + 4.928000000000e-10 -3.495689260045e-01 + 5.028000000000e-10 -5.210792449240e-01 + 5.128000000000e-10 -6.326887195405e-01 + 5.228000000000e-10 -6.848983576670e-01 + 5.328000000000e-10 -6.751198274713e-01 + 5.428000000000e-10 -6.052060952211e-01 + 5.528000000000e-10 -4.806148207689e-01 + 5.628000000000e-10 -3.065686575138e-01 + 5.728000000000e-10 -9.487468231530e-02 + 5.828000000000e-10 1.335246601606e-01 + 5.928000000000e-10 3.493821792388e-01 + 6.028000000000e-10 5.208575371198e-01 + 6.128000000000e-10 6.326338805716e-01 + 6.228000000000e-10 6.848108600046e-01 + 6.328000000000e-10 6.751907109187e-01 + 6.428000000000e-10 6.052214841565e-01 + 6.528000000000e-10 4.807458450129e-01 + 6.628000000000e-10 3.066111422989e-01 + 6.728000000000e-10 9.501122064621e-02 + 6.828000000000e-10 -1.334882175614e-01 + 6.928000000000e-10 -3.492660352924e-01 + 7.028000000000e-10 -5.208495294585e-01 + 7.128000000000e-10 -6.325598499367e-01 + 7.228000000000e-10 -6.848421004985e-01 + 7.328000000000e-10 -6.751543080912e-01 + 7.428000000000e-10 -6.052828258645e-01 + 7.528000000000e-10 -4.807293659120e-01 + 7.628000000000e-10 -3.066794924108e-01 + 7.728000000000e-10 -9.499664108150e-02 + 7.828000000000e-10 1.334220275121e-01 + 7.928000000000e-10 3.492835018463e-01 + 8.028000000000e-10 5.207961769649e-01 + 8.128000000000e-10 6.325876998525e-01 + 8.228000000000e-10 6.848014468222e-01 + 8.328000000000e-10 6.751935994962e-01 + 8.428000000000e-10 6.052518981308e-01 + 8.528000000000e-10 4.807729857688e-01 + 8.628000000000e-10 3.066516205185e-01 + 8.728000000000e-10 9.504068447267e-02 + 8.828000000000e-10 -1.334502935734e-01 + 8.928000000000e-10 -3.492430994753e-01 + 9.028000000000e-10 -5.208246106410e-01 + 9.128000000000e-10 -6.325523513325e-01 + 9.228000000000e-10 -6.848328984481e-01 + 9.328000000000e-10 -6.751615848536e-01 + 9.428000000000e-10 -6.052856721640e-01 + 9.528000000000e-10 -4.807436971446e-01 + 9.628000000000e-10 -3.066854569150e-01 + 9.728000000000e-10 -9.501170247959e-02 + 9.828000000000e-10 1.334168358063e-01 + 9.928000000000e-10 3.492707284922e-01 + 1.000000000000e-09 4.787459694615e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/conditions.yaml new file mode 100644 index 00000000..a0f14717 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 8 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_08 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/CML_core_tb.sch new file mode 100644 index 00000000..6cbfd323 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/CML_core_tb_9.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/CML_core_tb_9.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/CML_core_tb_9.data new file mode 100644 index 00000000..1eb23e09 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/CML_core_tb_9.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.397443385003e-01 + 1.728000000000e-10 -2.045536352810e-01 + 1.828000000000e-10 1.313863393294e-01 + 1.928000000000e-10 3.838209275603e-01 + 2.028000000000e-10 5.347375940933e-01 + 2.128000000000e-10 6.276591932156e-01 + 2.228000000000e-10 7.115621702194e-01 + 2.328000000000e-10 7.798611559065e-01 + 2.428000000000e-10 8.066497785728e-01 + 2.528000000000e-10 7.447444131165e-01 + 2.628000000000e-10 5.331798214247e-01 + 2.728000000000e-10 1.991243487461e-01 + 2.828000000000e-10 -1.352153251063e-01 + 2.928000000000e-10 -3.864762984078e-01 + 3.028000000000e-10 -5.369168929595e-01 + 3.128000000000e-10 -6.290603792866e-01 + 3.228000000000e-10 -7.126196515736e-01 + 3.328000000000e-10 -7.804415576126e-01 + 3.428000000000e-10 -8.071911048716e-01 + 3.528000000000e-10 -7.450481751688e-01 + 3.628000000000e-10 -5.336055963763e-01 + 3.728000000000e-10 -1.993198332358e-01 + 3.828000000000e-10 1.349559401886e-01 + 3.928000000000e-10 3.864112742700e-01 + 4.028000000000e-10 5.367351878370e-01 + 4.128000000000e-10 6.290489992071e-01 + 4.228000000000e-10 7.124864782962e-01 + 4.328000000000e-10 7.804750739895e-01 + 4.428000000000e-10 8.070933947437e-01 + 4.528000000000e-10 7.451033689318e-01 + 4.628000000000e-10 5.335168975820e-01 + 4.728000000000e-10 1.993807368925e-01 + 4.828000000000e-10 -1.350304895400e-01 + 4.928000000000e-10 -3.863532554681e-01 + 5.028000000000e-10 -5.368040585560e-01 + 5.128000000000e-10 -6.289909078772e-01 + 5.228000000000e-10 -7.125533448218e-01 + 5.328000000000e-10 -7.804160897110e-01 + 5.428000000000e-10 -8.071554863663e-01 + 5.528000000000e-10 -7.450422465689e-01 + 5.628000000000e-10 -5.335838460974e-01 + 5.728000000000e-10 -1.993167730115e-01 + 5.828000000000e-10 1.349726890253e-01 + 5.928000000000e-10 3.864109858256e-01 + 6.028000000000e-10 5.367479691018e-01 + 6.128000000000e-10 6.290476980128e-01 + 6.228000000000e-10 7.124950121919e-01 + 6.328000000000e-10 7.804717191606e-01 + 6.428000000000e-10 8.070994779138e-01 + 6.528000000000e-10 7.450975613250e-01 + 6.628000000000e-10 5.335259065522e-01 + 6.728000000000e-10 1.993734548210e-01 + 6.828000000000e-10 -1.350242777574e-01 + 6.928000000000e-10 -3.863605033303e-01 + 7.028000000000e-10 -5.367975294074e-01 + 7.128000000000e-10 -6.289982763959e-01 + 7.228000000000e-10 -7.125455111440e-01 + 7.328000000000e-10 -7.804238043085e-01 + 7.428000000000e-10 -8.071473680780e-01 + 7.528000000000e-10 -7.450494772754e-01 + 7.628000000000e-10 -5.335773499054e-01 + 7.728000000000e-10 -1.993230348361e-01 + 7.828000000000e-10 1.349793746975e-01 + 7.928000000000e-10 3.864055722387e-01 + 8.028000000000e-10 5.367539279153e-01 + 8.128000000000e-10 6.290427569852e-01 + 8.228000000000e-10 7.125002063044e-01 + 8.328000000000e-10 7.804668926767e-01 + 8.428000000000e-10 8.071042297758e-01 + 8.528000000000e-10 7.450922570276e-01 + 8.628000000000e-10 5.335323457615e-01 + 8.728000000000e-10 1.993673584870e-01 + 8.828000000000e-10 -1.350193573750e-01 + 8.928000000000e-10 -3.863660901230e-01 + 9.028000000000e-10 -5.367925035482e-01 + 9.128000000000e-10 -6.290039875175e-01 + 9.228000000000e-10 -7.125398122704e-01 + 9.328000000000e-10 -7.804294363608e-01 + 9.428000000000e-10 -8.071416857778e-01 + 9.528000000000e-10 -7.450548065452e-01 + 9.628000000000e-10 -5.335722743766e-01 + 9.728000000000e-10 -1.993280329539e-01 + 9.828000000000e-10 1.349843549639e-01 + 9.928000000000e-10 3.864011317450e-01 + 1.000000000000e-09 5.028020863733e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/conditions.yaml new file mode 100644 index 00000000..25163809 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 9 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_09 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/CML_core_tb.sch new file mode 100644 index 00000000..c13e9c20 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/CML_core_tb_10.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/CML_core_tb_10.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/CML_core_tb_10.data new file mode 100644 index 00000000..973ede5e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/CML_core_tb_10.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.293189432094e-01 + 1.728000000000e-10 -2.034299929592e-01 + 1.828000000000e-10 1.254532736892e-01 + 1.928000000000e-10 3.744603520131e-01 + 2.028000000000e-10 5.220595086358e-01 + 2.128000000000e-10 6.139346231694e-01 + 2.228000000000e-10 6.977077768020e-01 + 2.328000000000e-10 7.638951530454e-01 + 2.428000000000e-10 7.881008470503e-01 + 2.528000000000e-10 7.271434956617e-01 + 2.628000000000e-10 5.227259392947e-01 + 2.728000000000e-10 1.977807095317e-01 + 2.828000000000e-10 -1.296557480667e-01 + 2.928000000000e-10 -3.774966254092e-01 + 3.028000000000e-10 -5.245506032311e-01 + 3.128000000000e-10 -6.155925798862e-01 + 3.228000000000e-10 -6.989490114600e-01 + 3.328000000000e-10 -7.646204924296e-01 + 3.428000000000e-10 -7.887093478172e-01 + 3.528000000000e-10 -7.274783648153e-01 + 3.628000000000e-10 -5.231513423786e-01 + 3.728000000000e-10 -1.979863018154e-01 + 3.828000000000e-10 1.294013660930e-01 + 3.928000000000e-10 3.774276121382e-01 + 4.028000000000e-10 5.243833105689e-01 + 4.128000000000e-10 6.155813660155e-01 + 4.228000000000e-10 6.988272077165e-01 + 4.328000000000e-10 7.646509984988e-01 + 4.428000000000e-10 7.886185007607e-01 + 4.528000000000e-10 7.275266613790e-01 + 4.628000000000e-10 5.230676681296e-01 + 4.728000000000e-10 1.980405747385e-01 + 4.828000000000e-10 -1.294713662253e-01 + 4.928000000000e-10 -3.773761496757e-01 + 5.028000000000e-10 -5.244469821379e-01 + 5.128000000000e-10 -6.155294307936e-01 + 5.228000000000e-10 -6.988887956355e-01 + 5.328000000000e-10 -7.645972449904e-01 + 5.428000000000e-10 -7.886754254295e-01 + 5.528000000000e-10 -7.274706677122e-01 + 5.628000000000e-10 -5.231295350854e-01 + 5.728000000000e-10 -1.979806299381e-01 + 5.828000000000e-10 1.294187696545e-01 + 5.928000000000e-10 3.774292707563e-01 + 6.028000000000e-10 5.243961595933e-01 + 6.128000000000e-10 6.155814701559e-01 + 6.228000000000e-10 6.988355515168e-01 + 6.328000000000e-10 7.646484599731e-01 + 6.428000000000e-10 7.886243100181e-01 + 6.528000000000e-10 7.275215569265e-01 + 6.628000000000e-10 5.230764840752e-01 + 6.728000000000e-10 1.980332799823e-01 + 6.828000000000e-10 -1.294660192513e-01 + 6.928000000000e-10 -3.773827405650e-01 + 7.028000000000e-10 -5.244413520748e-01 + 7.128000000000e-10 -6.155361997798e-01 + 7.228000000000e-10 -6.988817029216e-01 + 7.328000000000e-10 -7.646043204444e-01 + 7.428000000000e-10 -7.886680576572e-01 + 7.528000000000e-10 -7.274772120684e-01 + 7.628000000000e-10 -5.231238849653e-01 + 7.728000000000e-10 -1.979860775160e-01 + 7.828000000000e-10 1.294249237809e-01 + 7.928000000000e-10 3.774244918330e-01 + 8.028000000000e-10 5.244015690321e-01 + 8.128000000000e-10 6.155771739165e-01 + 8.228000000000e-10 6.988402156207e-01 + 8.328000000000e-10 7.646441380646e-01 + 8.428000000000e-10 7.886285892332e-01 + 8.528000000000e-10 7.275167248781e-01 + 8.628000000000e-10 5.230825202638e-01 + 8.728000000000e-10 1.980273627479e-01 + 8.828000000000e-10 -1.294617038455e-01 + 8.928000000000e-10 -3.773878907236e-01 + 9.028000000000e-10 -5.244369215985e-01 + 9.128000000000e-10 -6.155414802599e-01 + 9.228000000000e-10 -6.988765421320e-01 + 9.328000000000e-10 -7.646094975483e-01 + 9.428000000000e-10 -7.886629049186e-01 + 9.528000000000e-10 -7.274820443091e-01 + 9.628000000000e-10 -5.231193961018e-01 + 9.728000000000e-10 -1.979905037884e-01 + 9.828000000000e-10 1.294294922144e-01 + 9.928000000000e-10 3.774205018001e-01 + 1.000000000000e-09 4.912603506308e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/conditions.yaml new file mode 100644 index 00000000..3d2bd3a6 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 10 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_10 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/CML_core_tb.sch new file mode 100644 index 00000000..d1583716 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/CML_core_tb_11.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/CML_core_tb_11.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/CML_core_tb_11.data new file mode 100644 index 00000000..799f8459 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/CML_core_tb_11.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.473675478550e-01 + 1.728000000000e-10 -2.087893101739e-01 + 1.828000000000e-10 1.310494751476e-01 + 1.928000000000e-10 3.871555645678e-01 + 2.028000000000e-10 5.437689230363e-01 + 2.128000000000e-10 6.391330299748e-01 + 2.228000000000e-10 7.213082317981e-01 + 2.328000000000e-10 7.903248370025e-01 + 2.428000000000e-10 8.187618792919e-01 + 2.528000000000e-10 7.555729663838e-01 + 2.628000000000e-10 5.409345054541e-01 + 2.728000000000e-10 2.036912835862e-01 + 2.828000000000e-10 -1.345140506878e-01 + 2.928000000000e-10 -3.895370892644e-01 + 3.028000000000e-10 -5.457400052530e-01 + 3.128000000000e-10 -6.403498057265e-01 + 3.228000000000e-10 -7.222286336937e-01 + 3.328000000000e-10 -7.907911780827e-01 + 3.428000000000e-10 -8.192361080664e-01 + 3.528000000000e-10 -7.558198978931e-01 + 3.628000000000e-10 -5.413206307136e-01 + 3.728000000000e-10 -2.038438399825e-01 + 3.828000000000e-10 1.342763346632e-01 + 3.928000000000e-10 3.894921044587e-01 + 4.028000000000e-10 5.455616788274e-01 + 4.128000000000e-10 6.403489734683e-01 + 4.228000000000e-10 7.220944352324e-01 + 4.328000000000e-10 7.908322596821e-01 + 4.428000000000e-10 8.191363162855e-01 + 4.528000000000e-10 7.558824803046e-01 + 4.628000000000e-10 5.412307821184e-01 + 4.728000000000e-10 2.039121351986e-01 + 4.828000000000e-10 -1.343528713892e-01 + 4.928000000000e-10 -3.894290190191e-01 + 5.028000000000e-10 -5.456335562174e-01 + 5.128000000000e-10 -6.402860869065e-01 + 5.228000000000e-10 -7.221652152444e-01 + 5.328000000000e-10 -7.907686614943e-01 + 5.428000000000e-10 -8.192023796026e-01 + 5.528000000000e-10 -7.558173441778e-01 + 5.628000000000e-10 -5.413004970284e-01 + 5.728000000000e-10 -2.038447386050e-01 + 5.828000000000e-10 1.342913524064e-01 + 5.928000000000e-10 3.894897157728e-01 + 6.028000000000e-10 5.455737058766e-01 + 6.128000000000e-10 6.403462778603e-01 + 6.228000000000e-10 7.221032530671e-01 + 6.328000000000e-10 7.908278354740e-01 + 6.428000000000e-10 8.191430293573e-01 + 6.528000000000e-10 7.558759446864e-01 + 6.628000000000e-10 5.412396296665e-01 + 6.728000000000e-10 2.039046702204e-01 + 6.828000000000e-10 -1.343459163903e-01 + 6.928000000000e-10 -3.894366779769e-01 + 7.028000000000e-10 -5.456262483653e-01 + 7.128000000000e-10 -6.402940065215e-01 + 7.228000000000e-10 -7.221570137640e-01 + 7.328000000000e-10 -7.907769448806e-01 + 7.428000000000e-10 -8.191938542033e-01 + 7.528000000000e-10 -7.558251320231e-01 + 7.628000000000e-10 -5.412933191298e-01 + 7.728000000000e-10 -2.038518419443e-01 + 7.828000000000e-10 1.342982918430e-01 + 7.928000000000e-10 3.894837914532e-01 + 8.028000000000e-10 5.455799247329e-01 + 8.128000000000e-10 6.403408689327e-01 + 8.228000000000e-10 7.221089932485e-01 + 8.328000000000e-10 7.908225333386e-01 + 8.428000000000e-10 8.191482615363e-01 + 8.528000000000e-10 7.558702665648e-01 + 8.628000000000e-10 5.412462517638e-01 + 8.728000000000e-10 2.038984202104e-01 + 8.828000000000e-10 -1.343404705774e-01 + 8.928000000000e-10 -3.894425333092e-01 + 9.028000000000e-10 -5.456206778041e-01 + 9.128000000000e-10 -6.403000729433e-01 + 9.228000000000e-10 -7.221509667404e-01 + 9.328000000000e-10 -7.907829740936e-01 + 9.428000000000e-10 -8.191877974471e-01 + 9.528000000000e-10 -7.558308764830e-01 + 9.628000000000e-10 -5.412878201925e-01 + 9.728000000000e-10 -2.038573569097e-01 + 9.828000000000e-10 1.343035264203e-01 + 9.928000000000e-10 3.894790170617e-01 + 1.000000000000e-09 5.100069898815e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/conditions.yaml new file mode 100644 index 00000000..9911aad3 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 11 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_11 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/CML_core_tb.sch new file mode 100644 index 00000000..39a0b30e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/CML_core_tb_12.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/CML_core_tb_12.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/CML_core_tb_12.data new file mode 100644 index 00000000..db4e4cce --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/CML_core_tb_12.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.049557277618e-01 + 1.728000000000e-10 -1.958466480437e-01 + 1.828000000000e-10 1.196319367700e-01 + 1.928000000000e-10 3.700244189406e-01 + 2.028000000000e-10 5.308067637731e-01 + 2.128000000000e-10 6.311299202315e-01 + 2.228000000000e-10 7.086540860403e-01 + 2.328000000000e-10 7.625529356493e-01 + 2.428000000000e-10 7.708473475114e-01 + 2.528000000000e-10 6.980446990655e-01 + 2.628000000000e-10 4.981026307256e-01 + 2.728000000000e-10 1.904449044265e-01 + 2.828000000000e-10 -1.236510258628e-01 + 2.928000000000e-10 -3.730975798774e-01 + 3.028000000000e-10 -5.333436235403e-01 + 3.128000000000e-10 -6.328422885796e-01 + 3.228000000000e-10 -7.099622515515e-01 + 3.328000000000e-10 -7.633093670089e-01 + 3.428000000000e-10 -7.714462858000e-01 + 3.528000000000e-10 -6.983543456334e-01 + 3.628000000000e-10 -4.984830350414e-01 + 3.728000000000e-10 -1.906133898346e-01 + 3.828000000000e-10 1.234140438752e-01 + 3.928000000000e-10 3.730258572177e-01 + 4.028000000000e-10 5.331667972487e-01 + 4.128000000000e-10 6.328214645319e-01 + 4.228000000000e-10 7.098336990067e-01 + 4.328000000000e-10 7.633335528675e-01 + 4.428000000000e-10 7.713603033543e-01 + 4.528000000000e-10 6.984040906368e-01 + 4.628000000000e-10 4.984087981115e-01 + 4.728000000000e-10 1.906698925098e-01 + 4.828000000000e-10 -1.234792426423e-01 + 4.928000000000e-10 -3.729733539485e-01 + 5.028000000000e-10 -5.332277682129e-01 + 5.128000000000e-10 -6.327690017914e-01 + 5.228000000000e-10 -7.098933602520e-01 + 5.328000000000e-10 -7.632805035294e-01 + 5.428000000000e-10 -7.714147767047e-01 + 5.528000000000e-10 -6.983493927960e-01 + 5.628000000000e-10 -4.984657326360e-01 + 5.728000000000e-10 -1.906133403657e-01 + 5.828000000000e-10 1.234275058651e-01 + 5.928000000000e-10 3.730246636548e-01 + 6.028000000000e-10 5.331775888699e-01 + 6.128000000000e-10 6.328197652536e-01 + 6.228000000000e-10 7.098419058182e-01 + 6.328000000000e-10 7.633301342197e-01 + 6.428000000000e-10 7.713661487972e-01 + 6.528000000000e-10 6.983986251010e-01 + 6.628000000000e-10 4.984160910452e-01 + 6.728000000000e-10 1.906635868460e-01 + 6.828000000000e-10 -1.234734747225e-01 + 6.928000000000e-10 -3.729797013887e-01 + 7.028000000000e-10 -5.332215969565e-01 + 7.128000000000e-10 -6.327757131741e-01 + 7.228000000000e-10 -7.098865351622e-01 + 7.328000000000e-10 -7.632871392149e-01 + 7.428000000000e-10 -7.714081948986e-01 + 7.528000000000e-10 -6.983555969606e-01 + 7.628000000000e-10 -4.984601688237e-01 + 7.728000000000e-10 -1.906192454806e-01 + 7.828000000000e-10 1.234332321656e-01 + 7.928000000000e-10 3.730195983111e-01 + 8.028000000000e-10 5.331826746949e-01 + 8.128000000000e-10 6.328151783475e-01 + 8.228000000000e-10 7.098466992587e-01 + 8.328000000000e-10 7.633256332241e-01 + 8.428000000000e-10 7.713705417094e-01 + 8.528000000000e-10 6.983937777920e-01 + 8.628000000000e-10 4.984215072239e-01 + 8.728000000000e-10 1.906583322627e-01 + 8.828000000000e-10 -1.234689419945e-01 + 8.928000000000e-10 -3.729845695752e-01 + 9.028000000000e-10 -5.332169477613e-01 + 9.128000000000e-10 -6.327807857544e-01 + 9.228000000000e-10 -7.098815617208e-01 + 9.328000000000e-10 -7.632920474235e-01 + 9.428000000000e-10 -7.714033753149e-01 + 9.528000000000e-10 -6.983602366678e-01 + 9.628000000000e-10 -4.984557776243e-01 + 9.728000000000e-10 -1.906237729891e-01 + 9.828000000000e-10 1.234375916302e-01 + 9.928000000000e-10 3.730155682884e-01 + 1.000000000000e-09 4.959193237551e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/conditions.yaml new file mode 100644 index 00000000..cddd2127 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 12 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_12 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/CML_core_tb.sch new file mode 100644 index 00000000..268d2560 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/CML_core_tb_13.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/CML_core_tb_13.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/CML_core_tb_13.data new file mode 100644 index 00000000..abbd3617 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/CML_core_tb_13.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.935497259980e-01 + 1.728000000000e-10 -1.928633983658e-01 + 1.828000000000e-10 1.160949240371e-01 + 1.928000000000e-10 3.619360857197e-01 + 2.028000000000e-10 5.185143131218e-01 + 2.128000000000e-10 6.170086772416e-01 + 2.228000000000e-10 6.939063598865e-01 + 2.328000000000e-10 7.457993341265e-01 + 2.428000000000e-10 7.520509596304e-01 + 2.528000000000e-10 6.804739824857e-01 + 2.628000000000e-10 4.870426149481e-01 + 2.728000000000e-10 1.875308246798e-01 + 2.828000000000e-10 -1.202389208092e-01 + 2.928000000000e-10 -3.651754434827e-01 + 3.028000000000e-10 -5.211918880427e-01 + 3.128000000000e-10 -6.188469707889e-01 + 3.228000000000e-10 -6.953072467312e-01 + 3.328000000000e-10 -7.466129151979e-01 + 3.428000000000e-10 -7.526565311823e-01 + 3.528000000000e-10 -6.807675409917e-01 + 3.628000000000e-10 -4.873945801883e-01 + 3.728000000000e-10 -1.876809763872e-01 + 3.828000000000e-10 1.200199744899e-01 + 3.928000000000e-10 3.651151173578e-01 + 4.028000000000e-10 5.210322421793e-01 + 4.128000000000e-10 6.188330192958e-01 + 4.228000000000e-10 6.951893716680e-01 + 4.328000000000e-10 7.466394998986e-01 + 4.428000000000e-10 7.525773069027e-01 + 4.528000000000e-10 6.808165070916e-01 + 4.628000000000e-10 4.873248087716e-01 + 4.728000000000e-10 1.877358679741e-01 + 4.828000000000e-10 -1.200819840902e-01 + 4.928000000000e-10 -3.650646413699e-01 + 5.028000000000e-10 -5.210903047408e-01 + 5.128000000000e-10 -6.187830156405e-01 + 5.228000000000e-10 -6.952462050643e-01 + 5.328000000000e-10 -7.465883056072e-01 + 5.428000000000e-10 -7.526293067125e-01 + 5.528000000000e-10 -6.807638103361e-01 + 5.628000000000e-10 -4.873795115625e-01 + 5.728000000000e-10 -1.876807689254e-01 + 5.828000000000e-10 1.200326256254e-01 + 5.928000000000e-10 3.651139754788e-01 + 6.028000000000e-10 5.210426454606e-01 + 6.128000000000e-10 6.188315227579e-01 + 6.228000000000e-10 6.951972695911e-01 + 6.328000000000e-10 7.466359762403e-01 + 6.428000000000e-10 7.525829976005e-01 + 6.528000000000e-10 6.808110143898e-01 + 6.628000000000e-10 4.873318873720e-01 + 6.728000000000e-10 1.877292356433e-01 + 6.828000000000e-10 -1.200767202072e-01 + 6.928000000000e-10 -3.650706499628e-01 + 7.028000000000e-10 -5.210847183857e-01 + 7.128000000000e-10 -6.187893543189e-01 + 7.228000000000e-10 -6.952399017798e-01 + 7.328000000000e-10 -7.465944604664e-01 + 7.428000000000e-10 -7.526232942576e-01 + 7.528000000000e-10 -6.807695137827e-01 + 7.628000000000e-10 -4.873744121182e-01 + 7.728000000000e-10 -1.876860880622e-01 + 7.828000000000e-10 1.200380835632e-01 + 7.928000000000e-10 3.651091778387e-01 + 8.028000000000e-10 5.210475167171e-01 + 8.128000000000e-10 6.188272213187e-01 + 8.228000000000e-10 6.952018279574e-01 + 8.328000000000e-10 7.466316140292e-01 + 8.428000000000e-10 7.525872528114e-01 + 8.528000000000e-10 6.808063071094e-01 + 8.628000000000e-10 4.873371355126e-01 + 8.728000000000e-10 1.877239857571e-01 + 8.828000000000e-10 -1.200724809112e-01 + 8.928000000000e-10 -3.650752679165e-01 + 9.028000000000e-10 -5.210804068397e-01 + 9.128000000000e-10 -6.187941569931e-01 + 9.228000000000e-10 -6.952352466105e-01 + 9.328000000000e-10 -7.465990720366e-01 + 9.428000000000e-10 -7.526188226163e-01 + 9.528000000000e-10 -6.807738360998e-01 + 9.628000000000e-10 -4.873703126609e-01 + 9.728000000000e-10 -1.876902725775e-01 + 9.828000000000e-10 1.200422409457e-01 + 9.928000000000e-10 3.651053453859e-01 + 1.000000000000e-09 4.847952698035e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/conditions.yaml new file mode 100644 index 00000000..46ff607c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 13 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_13 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/CML_core_tb.sch new file mode 100644 index 00000000..439b1ad4 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/CML_core_tb_14.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/CML_core_tb_14.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/CML_core_tb_14.data new file mode 100644 index 00000000..3796cea3 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/CML_core_tb_14.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.133282675634e-01 + 1.728000000000e-10 -2.031582081928e-01 + 1.828000000000e-10 1.144804838339e-01 + 1.928000000000e-10 3.698591588516e-01 + 2.028000000000e-10 5.380258146680e-01 + 2.128000000000e-10 6.422542980920e-01 + 2.228000000000e-10 7.191574927620e-01 + 2.328000000000e-10 7.734390216007e-01 + 2.428000000000e-10 7.823512104827e-01 + 2.528000000000e-10 7.081342613122e-01 + 2.628000000000e-10 5.065809773945e-01 + 2.728000000000e-10 1.980707374060e-01 + 2.828000000000e-10 -1.181831896095e-01 + 2.928000000000e-10 -3.727163876319e-01 + 3.028000000000e-10 -5.404428949084e-01 + 3.128000000000e-10 -6.438704305572e-01 + 3.228000000000e-10 -7.204145434420e-01 + 3.328000000000e-10 -7.741471374370e-01 + 3.428000000000e-10 -7.829309638154e-01 + 3.528000000000e-10 -7.084110972821e-01 + 3.628000000000e-10 -5.069426471107e-01 + 3.728000000000e-10 -1.982066720174e-01 + 3.828000000000e-10 1.179564926067e-01 + 3.928000000000e-10 3.726621714283e-01 + 4.028000000000e-10 5.402630628674e-01 + 4.128000000000e-10 6.438601752956e-01 + 4.228000000000e-10 7.202791375194e-01 + 4.328000000000e-10 7.741793827377e-01 + 4.428000000000e-10 7.828380754967e-01 + 4.528000000000e-10 7.084693803333e-01 + 4.628000000000e-10 5.068627667504e-01 + 4.728000000000e-10 1.982719515445e-01 + 4.828000000000e-10 -1.180275895897e-01 + 4.928000000000e-10 -3.726028735362e-01 + 5.028000000000e-10 -5.403301024789e-01 + 5.128000000000e-10 -6.438008084190e-01 + 5.228000000000e-10 -7.203455420725e-01 + 5.328000000000e-10 -7.741198297783e-01 + 5.428000000000e-10 -7.828987326701e-01 + 5.528000000000e-10 -7.084084859242e-01 + 5.628000000000e-10 -5.069251044876e-01 + 5.728000000000e-10 -1.982094732584e-01 + 5.828000000000e-10 1.179697981212e-01 + 5.928000000000e-10 3.726595322461e-01 + 6.028000000000e-10 5.402739437431e-01 + 6.128000000000e-10 6.438573026479e-01 + 6.228000000000e-10 7.202880216174e-01 + 6.328000000000e-10 7.741750830136e-01 + 6.428000000000e-10 7.828445699494e-01 + 6.528000000000e-10 7.084631989914e-01 + 6.628000000000e-10 5.068703543607e-01 + 6.728000000000e-10 1.982651160797e-01 + 6.828000000000e-10 -1.180209524418e-01 + 6.928000000000e-10 -3.726100259571e-01 + 7.028000000000e-10 -5.403229404029e-01 + 7.128000000000e-10 -6.438083895554e-01 + 7.228000000000e-10 -7.203378638829e-01 + 7.328000000000e-10 -7.741273273776e-01 + 7.428000000000e-10 -7.828912312659e-01 + 7.528000000000e-10 -7.084155733246e-01 + 7.628000000000e-10 -5.069185371484e-01 + 7.728000000000e-10 -1.982163796445e-01 + 7.828000000000e-10 1.179761824049e-01 + 7.928000000000e-10 3.726538824343e-01 + 8.028000000000e-10 5.402795684719e-01 + 8.128000000000e-10 6.438520994328e-01 + 8.228000000000e-10 7.202935093188e-01 + 8.328000000000e-10 7.741699689895e-01 + 8.428000000000e-10 7.828494756723e-01 + 8.528000000000e-10 7.084578188073e-01 + 8.628000000000e-10 5.068761410729e-01 + 8.728000000000e-10 1.982594122387e-01 + 8.828000000000e-10 -1.180157633845e-01 + 8.928000000000e-10 -3.726154653834e-01 + 9.028000000000e-10 -5.403175771302e-01 + 9.128000000000e-10 -6.438140825829e-01 + 9.228000000000e-10 -7.203322576361e-01 + 9.328000000000e-10 -7.741328388949e-01 + 9.428000000000e-10 -7.828857350121e-01 + 9.528000000000e-10 -7.084208512479e-01 + 9.628000000000e-10 -5.069134738545e-01 + 9.728000000000e-10 -1.982215797151e-01 + 9.828000000000e-10 1.179810466336e-01 + 9.928000000000e-10 3.726493985613e-01 + 1.000000000000e-09 5.010433738758e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/conditions.yaml new file mode 100644 index 00000000..8cbc3b80 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 14 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_14 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/CML_core_tb.sch new file mode 100644 index 00000000..9cd78fdc --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/CML_core_tb_15.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/CML_core_tb_15.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/CML_core_tb_15.data new file mode 100644 index 00000000..a18684b0 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/CML_core_tb_15.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.764925698370e-01 + 1.728000000000e-10 -1.934019301872e-01 + 1.828000000000e-10 1.027850457497e-01 + 1.928000000000e-10 3.499528968595e-01 + 2.028000000000e-10 5.186059326128e-01 + 2.128000000000e-10 6.254912177700e-01 + 2.228000000000e-10 6.994356057335e-01 + 2.328000000000e-10 7.419604616039e-01 + 2.428000000000e-10 7.366001230119e-01 + 2.528000000000e-10 6.575586826882e-01 + 2.628000000000e-10 4.703480039804e-01 + 2.728000000000e-10 1.887311437228e-01 + 2.828000000000e-10 -1.064955609068e-01 + 2.928000000000e-10 -3.530674432656e-01 + 3.028000000000e-10 -5.214103928852e-01 + 3.128000000000e-10 -6.276329249236e-01 + 3.228000000000e-10 -7.010919569868e-01 + 3.328000000000e-10 -7.428528846984e-01 + 3.428000000000e-10 -7.371070425945e-01 + 3.528000000000e-10 -6.576931102984e-01 + 3.628000000000e-10 -4.705213908487e-01 + 3.728000000000e-10 -1.887451417089e-01 + 3.828000000000e-10 1.063771169054e-01 + 3.928000000000e-10 3.530644558224e-01 + 4.028000000000e-10 5.212882945537e-01 + 4.128000000000e-10 6.276273956697e-01 + 4.228000000000e-10 7.009872983885e-01 + 4.328000000000e-10 7.428850006835e-01 + 4.428000000000e-10 7.370483197885e-01 + 4.528000000000e-10 6.577532995019e-01 + 4.628000000000e-10 4.704734311564e-01 + 4.728000000000e-10 1.888066765622e-01 + 4.828000000000e-10 -1.064251900033e-01 + 4.928000000000e-10 -3.530110058012e-01 + 5.028000000000e-10 -5.213363794122e-01 + 5.128000000000e-10 -6.275779961821e-01 + 5.228000000000e-10 -7.010367362436e-01 + 5.328000000000e-10 -7.428359180794e-01 + 5.428000000000e-10 -7.370946234404e-01 + 5.528000000000e-10 -6.577041924295e-01 + 5.628000000000e-10 -4.705211118057e-01 + 5.728000000000e-10 -1.887571402743e-01 + 5.828000000000e-10 1.063798390696e-01 + 5.928000000000e-10 3.530562876751e-01 + 6.028000000000e-10 5.212929538773e-01 + 6.128000000000e-10 6.276223718978e-01 + 6.228000000000e-10 7.009927681762e-01 + 6.328000000000e-10 7.428797293753e-01 + 6.428000000000e-10 7.370526578677e-01 + 6.528000000000e-10 6.577470674825e-01 + 6.628000000000e-10 4.704784998901e-01 + 6.728000000000e-10 1.888003575241e-01 + 6.828000000000e-10 -1.064204487643e-01 + 6.928000000000e-10 -3.530168946500e-01 + 7.028000000000e-10 -5.213312567329e-01 + 7.128000000000e-10 -6.275838929681e-01 + 7.228000000000e-10 -7.010312441909e-01 + 7.328000000000e-10 -7.428415937954e-01 + 7.428000000000e-10 -7.370893810626e-01 + 7.528000000000e-10 -6.577094889087e-01 + 7.628000000000e-10 -4.705162397262e-01 + 7.728000000000e-10 -1.887623115300e-01 + 7.828000000000e-10 1.063847513579e-01 + 7.928000000000e-10 3.530516705381e-01 + 8.028000000000e-10 5.212973590939e-01 + 8.128000000000e-10 6.276181223045e-01 + 8.228000000000e-10 7.009970786285e-01 + 8.328000000000e-10 7.428754735512e-01 + 8.428000000000e-10 7.370567570344e-01 + 8.528000000000e-10 6.577427030952e-01 + 8.628000000000e-10 4.704830497474e-01 + 8.728000000000e-10 1.887958404937e-01 + 8.828000000000e-10 -1.064163174914e-01 + 8.928000000000e-10 -3.530210908451e-01 + 9.028000000000e-10 -5.213271590930e-01 + 9.128000000000e-10 -6.275881896870e-01 + 9.228000000000e-10 -7.010270518598e-01 + 9.328000000000e-10 -7.428457852801e-01 + 9.428000000000e-10 -7.370853633469e-01 + 9.528000000000e-10 -6.577134719194e-01 + 9.628000000000e-10 -4.705123783357e-01 + 9.728000000000e-10 -1.887662540331e-01 + 9.828000000000e-10 1.063885555413e-01 + 9.928000000000e-10 3.530480784075e-01 + 1.000000000000e-09 4.814572085440e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/conditions.yaml new file mode 100644 index 00000000..5baebc44 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 15 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_15 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/CML_core_tb.sch new file mode 100644 index 00000000..c9d91e93 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/CML_core_tb_16.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/CML_core_tb_16.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/CML_core_tb_16.data new file mode 100644 index 00000000..5b9b7365 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/CML_core_tb_16.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.643042367579e-01 + 1.728000000000e-10 -1.889536448800e-01 + 1.828000000000e-10 1.011027156160e-01 + 1.928000000000e-10 3.431119917378e-01 + 2.028000000000e-10 5.070519088353e-01 + 2.128000000000e-10 6.112991757094e-01 + 2.228000000000e-10 6.838020209744e-01 + 2.328000000000e-10 7.242864479517e-01 + 2.428000000000e-10 7.174167448313e-01 + 2.528000000000e-10 6.398083866093e-01 + 2.628000000000e-10 4.585166519927e-01 + 2.728000000000e-10 1.844271573483e-01 + 2.828000000000e-10 -1.048019054065e-01 + 2.928000000000e-10 -3.462317584687e-01 + 3.028000000000e-10 -5.098344721858e-01 + 3.128000000000e-10 -6.133899227371e-01 + 3.228000000000e-10 -6.853968517792e-01 + 3.328000000000e-10 -7.251059393871e-01 + 3.428000000000e-10 -7.178642533065e-01 + 3.528000000000e-10 -6.398898931720e-01 + 3.628000000000e-10 -4.586473976402e-01 + 3.728000000000e-10 -1.843989570585e-01 + 3.828000000000e-10 1.047140758745e-01 + 3.928000000000e-10 3.462576483703e-01 + 4.028000000000e-10 5.097333770465e-01 + 4.128000000000e-10 6.134023110554e-01 + 4.228000000000e-10 6.853047053340e-01 + 4.328000000000e-10 7.251501511308e-01 + 4.428000000000e-10 7.178117501486e-01 + 4.528000000000e-10 6.399568281317e-01 + 4.628000000000e-10 4.586017943502e-01 + 4.728000000000e-10 1.844658494373e-01 + 4.828000000000e-10 -1.047609876408e-01 + 4.928000000000e-10 -3.462003104379e-01 + 5.028000000000e-10 -5.097813732572e-01 + 5.128000000000e-10 -6.133504189098e-01 + 5.228000000000e-10 -6.853547602223e-01 + 5.328000000000e-10 -7.250985458364e-01 + 5.428000000000e-10 -7.178593251267e-01 + 5.528000000000e-10 -6.399055102013e-01 + 5.628000000000e-10 -4.586511534755e-01 + 5.728000000000e-10 -1.844138975484e-01 + 5.828000000000e-10 1.047143295024e-01 + 5.928000000000e-10 3.462472486482e-01 + 6.028000000000e-10 5.097369504642e-01 + 6.128000000000e-10 6.133959963639e-01 + 6.228000000000e-10 6.853096740322e-01 + 6.328000000000e-10 7.251438129543e-01 + 6.428000000000e-10 7.178160816468e-01 + 6.528000000000e-10 6.399498616471e-01 + 6.628000000000e-10 4.586069220749e-01 + 6.728000000000e-10 1.844588245643e-01 + 6.828000000000e-10 -1.047563687876e-01 + 6.928000000000e-10 -3.462063328010e-01 + 7.028000000000e-10 -5.097765086741e-01 + 7.128000000000e-10 -6.133562893232e-01 + 7.228000000000e-10 -6.853494321266e-01 + 7.328000000000e-10 -7.251041291885e-01 + 7.428000000000e-10 -7.178542203751e-01 + 7.528000000000e-10 -6.399107355976e-01 + 7.628000000000e-10 -4.586462738291e-01 + 7.728000000000e-10 -1.844190131957e-01 + 7.828000000000e-10 1.047193339603e-01 + 7.928000000000e-10 3.462424630766e-01 + 8.028000000000e-10 5.097415276109e-01 + 8.128000000000e-10 6.133915881396e-01 + 8.228000000000e-10 6.853141467162e-01 + 8.328000000000e-10 7.251393167662e-01 + 8.428000000000e-10 7.178204152808e-01 + 8.528000000000e-10 6.399452651751e-01 + 8.628000000000e-10 4.586116651576e-01 + 8.728000000000e-10 1.844540563551e-01 + 8.828000000000e-10 -1.047521530128e-01 + 8.928000000000e-10 -3.462105768541e-01 + 9.028000000000e-10 -5.097724238353e-01 + 9.128000000000e-10 -6.133605792288e-01 + 9.228000000000e-10 -6.853452315529e-01 + 9.328000000000e-10 -7.251083207568e-01 + 9.428000000000e-10 -7.178502144615e-01 + 9.528000000000e-10 -6.399147306347e-01 + 9.628000000000e-10 -4.586423495280e-01 + 9.728000000000e-10 -1.844229988419e-01 + 9.828000000000e-10 1.047232268776e-01 + 9.928000000000e-10 3.462387497741e-01 + 1.000000000000e-09 4.710752262880e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/conditions.yaml new file mode 100644 index 00000000..252bbf24 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 16 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_16 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/CML_core_tb.sch new file mode 100644 index 00000000..0be98424 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/CML_core_tb_17.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/CML_core_tb_17.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/CML_core_tb_17.data new file mode 100644 index 00000000..15600382 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/CML_core_tb_17.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.852886719505e-01 + 1.728000000000e-10 -2.023606658915e-01 + 1.828000000000e-10 9.500407548716e-02 + 1.928000000000e-10 3.473018630854e-01 + 2.028000000000e-10 5.238539974445e-01 + 2.128000000000e-10 6.356942626004e-01 + 2.228000000000e-10 7.106560719901e-01 + 2.328000000000e-10 7.539243132234e-01 + 2.428000000000e-10 7.486736309564e-01 + 2.528000000000e-10 6.681985082542e-01 + 2.628000000000e-10 4.800908099257e-01 + 2.728000000000e-10 1.985903293754e-01 + 2.828000000000e-10 -9.801965724844e-02 + 2.928000000000e-10 -3.499456539083e-01 + 3.028000000000e-10 -5.264166063204e-01 + 3.128000000000e-10 -6.377599985577e-01 + 3.228000000000e-10 -7.123258227204e-01 + 3.328000000000e-10 -7.548386637736e-01 + 3.428000000000e-10 -7.491646196322e-01 + 3.528000000000e-10 -6.682802381819e-01 + 3.628000000000e-10 -4.802044877583e-01 + 3.728000000000e-10 -1.985554586747e-01 + 3.828000000000e-10 9.793570714348e-02 + 3.928000000000e-10 3.499705083814e-01 + 4.028000000000e-10 5.263126851869e-01 + 4.128000000000e-10 6.377668221774e-01 + 4.228000000000e-10 7.122256281615e-01 + 4.328000000000e-10 7.548735616237e-01 + 4.428000000000e-10 7.491068615558e-01 + 4.528000000000e-10 6.683430307676e-01 + 4.628000000000e-10 4.801581700099e-01 + 4.728000000000e-10 1.986186025664e-01 + 4.828000000000e-10 -9.798359332438e-02 + 4.928000000000e-10 -3.499159407959e-01 + 5.028000000000e-10 -5.263605524234e-01 + 5.128000000000e-10 -6.377159898188e-01 + 5.228000000000e-10 -7.122753084256e-01 + 5.328000000000e-10 -7.548237332543e-01 + 5.428000000000e-10 -7.491535548765e-01 + 5.528000000000e-10 -6.682936663178e-01 + 5.628000000000e-10 -4.802057994081e-01 + 5.728000000000e-10 -1.985692377738e-01 + 5.828000000000e-10 9.793754425938e-02 + 5.928000000000e-10 3.499612594703e-01 + 6.028000000000e-10 5.263165540334e-01 + 6.128000000000e-10 6.377608692391e-01 + 6.228000000000e-10 7.122309292959e-01 + 6.328000000000e-10 7.548679483739e-01 + 6.428000000000e-10 7.491113260135e-01 + 6.528000000000e-10 6.683367510584e-01 + 6.628000000000e-10 4.801631540398e-01 + 6.728000000000e-10 1.986123746205e-01 + 6.828000000000e-10 -9.797860547701e-02 + 6.928000000000e-10 -3.499219086015e-01 + 7.028000000000e-10 -5.263552271330e-01 + 7.128000000000e-10 -6.377219921840e-01 + 7.228000000000e-10 -7.122696952774e-01 + 7.328000000000e-10 -7.548295298651e-01 + 7.428000000000e-10 -7.491481908175e-01 + 7.528000000000e-10 -6.682991221138e-01 + 7.628000000000e-10 -4.802006967346e-01 + 7.728000000000e-10 -1.985745887274e-01 + 7.828000000000e-10 9.794256695295e-02 + 7.928000000000e-10 3.499565849765e-01 + 8.028000000000e-10 5.263210489698e-01 + 8.128000000000e-10 6.377564579322e-01 + 8.228000000000e-10 7.122353719246e-01 + 8.328000000000e-10 7.548635649925e-01 + 8.428000000000e-10 7.491155123701e-01 + 8.528000000000e-10 6.683323549155e-01 + 8.628000000000e-10 4.801676539865e-01 + 8.728000000000e-10 1.986078923136e-01 + 8.828000000000e-10 -9.797434132868e-02 + 8.928000000000e-10 -3.499261582655e-01 + 9.028000000000e-10 -5.263510069851e-01 + 9.128000000000e-10 -6.377263524572e-01 + 9.228000000000e-10 -7.122654282965e-01 + 9.328000000000e-10 -7.548337908470e-01 + 9.428000000000e-10 -7.491440991364e-01 + 9.528000000000e-10 -6.683032069827e-01 + 9.628000000000e-10 -4.801967157057e-01 + 9.728000000000e-10 -1.985786291727e-01 + 9.828000000000e-10 9.794644208878e-02 + 9.928000000000e-10 3.499529545785e-01 + 1.000000000000e-09 4.843355885316e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/conditions.yaml new file mode 100644 index 00000000..0c4952bc --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 17 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_17 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/CML_core_tb.sch new file mode 100644 index 00000000..328a4361 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/CML_core_tb_18.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/CML_core_tb_18.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/CML_core_tb_18.data new file mode 100644 index 00000000..6bdb4a2e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/CML_core_tb_18.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.747244840755e-01 + 1.728000000000e-10 2.031348680811e-01 + 1.828000000000e-10 -1.640358346053e-01 + 1.928000000000e-10 -4.121983890365e-01 + 2.028000000000e-10 -5.403960481430e-01 + 2.128000000000e-10 -6.175267008304e-01 + 2.228000000000e-10 -7.185181164841e-01 + 2.328000000000e-10 -8.111835866476e-01 + 2.428000000000e-10 -8.505757111821e-01 + 2.528000000000e-10 -7.941523888433e-01 + 2.628000000000e-10 -5.697557803605e-01 + 2.728000000000e-10 -1.993901761575e-01 + 2.828000000000e-10 1.667454340744e-01 + 2.928000000000e-10 4.143424459307e-01 + 3.028000000000e-10 5.421310172268e-01 + 3.128000000000e-10 6.189024162340e-01 + 3.228000000000e-10 7.194369498053e-01 + 3.328000000000e-10 8.117600127730e-01 + 3.428000000000e-10 8.508336653308e-01 + 3.528000000000e-10 7.942656656211e-01 + 3.628000000000e-10 5.697751550033e-01 + 3.728000000000e-10 1.994135726672e-01 + 3.828000000000e-10 -1.667386419247e-01 + 3.928000000000e-10 -4.143148464313e-01 + 4.028000000000e-10 -5.421262038320e-01 + 4.128000000000e-10 -6.188832903749e-01 + 4.228000000000e-10 -7.194346712496e-01 + 4.328000000000e-10 -8.117442314974e-01 + 4.428000000000e-10 -8.508381039982e-01 + 4.528000000000e-10 -7.942559196005e-01 + 4.628000000000e-10 -5.697859373045e-01 + 4.728000000000e-10 -1.993975895742e-01 + 4.828000000000e-10 1.667322235508e-01 + 4.928000000000e-10 4.143280512458e-01 + 5.028000000000e-10 5.421195877560e-01 + 5.128000000000e-10 6.188968586913e-01 + 5.228000000000e-10 7.194236426239e-01 + 5.328000000000e-10 8.117540342679e-01 + 5.428000000000e-10 8.508266757829e-01 + 5.528000000000e-10 7.942652287581e-01 + 5.628000000000e-10 5.697754142960e-01 + 5.728000000000e-10 1.994033695962e-01 + 5.828000000000e-10 -1.667424669503e-01 + 5.928000000000e-10 -4.143216611718e-01 + 6.028000000000e-10 -5.421291067647e-01 + 6.128000000000e-10 -6.188909595847e-01 + 6.228000000000e-10 -7.194310352535e-01 + 6.328000000000e-10 -8.117467342350e-01 + 6.428000000000e-10 -8.508333273630e-01 + 6.528000000000e-10 -7.942577903765e-01 + 6.628000000000e-10 -5.697836419865e-01 + 6.728000000000e-10 -1.993929431350e-01 + 6.828000000000e-10 1.667361734044e-01 + 6.928000000000e-10 4.143307053824e-01 + 7.028000000000e-10 5.421226813799e-01 + 7.128000000000e-10 6.189001833416e-01 + 7.228000000000e-10 7.194227358993e-01 + 7.328000000000e-10 8.117542266055e-01 + 7.428000000000e-10 8.508251070290e-01 + 7.528000000000e-10 7.942649966766e-01 + 7.628000000000e-10 5.697756363247e-01 + 7.728000000000e-10 1.993989977467e-01 + 7.828000000000e-10 -1.667434615441e-01 + 7.928000000000e-10 -4.143248161746e-01 + 8.028000000000e-10 -5.421295610790e-01 + 8.128000000000e-10 -6.188945163710e-01 + 8.228000000000e-10 -7.194289229798e-01 + 8.328000000000e-10 -8.117483413843e-01 + 8.428000000000e-10 -8.508308647988e-01 + 8.528000000000e-10 -7.942590780393e-01 + 8.628000000000e-10 -5.697822347435e-01 + 8.728000000000e-10 -1.993917000580e-01 + 8.828000000000e-10 1.667380255271e-01 + 8.928000000000e-10 4.143314131245e-01 + 9.028000000000e-10 5.421241182927e-01 + 9.128000000000e-10 6.189011822630e-01 + 9.228000000000e-10 7.194226089303e-01 + 9.328000000000e-10 8.117540798381e-01 + 9.428000000000e-10 8.508247577722e-01 + 9.528000000000e-10 7.942646412254e-01 + 9.628000000000e-10 5.697760282588e-01 + 9.728000000000e-10 1.993969946892e-01 + 9.828000000000e-10 -1.667434796269e-01 + 9.928000000000e-10 -4.143264352220e-01 + 1.000000000000e-09 -5.150731751424e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/conditions.yaml new file mode 100644 index 00000000..8c98dac6 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 18 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_18 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/CML_core_tb.sch new file mode 100644 index 00000000..c09a1129 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/CML_core_tb_19.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/CML_core_tb_19.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/CML_core_tb_19.data new file mode 100644 index 00000000..cfa0d051 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/CML_core_tb_19.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.707988120441e-01 + 1.728000000000e-10 2.050562196689e-01 + 1.828000000000e-10 -1.568083182045e-01 + 1.928000000000e-10 -4.020696229917e-01 + 2.028000000000e-10 -5.270997867267e-01 + 2.128000000000e-10 -6.030122328411e-01 + 2.228000000000e-10 -7.060404303518e-01 + 2.328000000000e-10 -7.977729548420e-01 + 2.428000000000e-10 -8.357087979117e-01 + 2.528000000000e-10 -7.823438332914e-01 + 2.628000000000e-10 -5.641015035384e-01 + 2.728000000000e-10 -1.996979729386e-01 + 2.828000000000e-10 1.605395493177e-01 + 2.928000000000e-10 4.049019788065e-01 + 3.028000000000e-10 5.293349858313e-01 + 3.128000000000e-10 6.047755538782e-01 + 3.228000000000e-10 7.072083327509e-01 + 3.328000000000e-10 7.985177439850e-01 + 3.428000000000e-10 8.360745897587e-01 + 3.528000000000e-10 7.825643018760e-01 + 3.628000000000e-10 5.642043953033e-01 + 3.728000000000e-10 1.998026918934e-01 + 3.828000000000e-10 -1.604858693758e-01 + 3.928000000000e-10 -4.048299316522e-01 + 4.028000000000e-10 -5.293048172022e-01 + 4.128000000000e-10 -6.047267733392e-01 + 4.228000000000e-10 -7.071932602489e-01 + 4.328000000000e-10 -7.984844304353e-01 + 4.428000000000e-10 -8.360789616419e-01 + 4.528000000000e-10 -7.825446968704e-01 + 4.628000000000e-10 -5.642205462461e-01 + 4.728000000000e-10 -1.997755595675e-01 + 4.828000000000e-10 1.604765943145e-01 + 4.928000000000e-10 4.048512691297e-01 + 5.028000000000e-10 5.292953655278e-01 + 5.128000000000e-10 6.047472585148e-01 + 5.228000000000e-10 7.071773753770e-01 + 5.328000000000e-10 7.985008103891e-01 + 5.428000000000e-10 8.360621173440e-01 + 5.528000000000e-10 7.825604957102e-01 + 5.628000000000e-10 5.642042607216e-01 + 5.728000000000e-10 1.997857962408e-01 + 5.828000000000e-10 -1.604926267251e-01 + 5.928000000000e-10 -4.048407079574e-01 + 6.028000000000e-10 -5.293103597207e-01 + 6.128000000000e-10 -6.047374718328e-01 + 6.228000000000e-10 -7.071895246392e-01 + 6.328000000000e-10 -7.984887922220e-01 + 6.428000000000e-10 -8.360735876941e-01 + 6.528000000000e-10 -7.825482507809e-01 + 6.628000000000e-10 -5.642183473935e-01 + 6.728000000000e-10 -1.997692084041e-01 + 6.828000000000e-10 1.604823178167e-01 + 6.928000000000e-10 4.048548923992e-01 + 7.028000000000e-10 5.293001528657e-01 + 7.128000000000e-10 6.047514904939e-01 + 7.228000000000e-10 7.071767775245e-01 + 7.328000000000e-10 7.985010886851e-01 + 7.428000000000e-10 8.360609061049e-01 + 7.528000000000e-10 7.825602391468e-01 + 7.628000000000e-10 5.642057995328e-01 + 7.728000000000e-10 1.997793833692e-01 + 7.828000000000e-10 -1.604939026989e-01 + 7.928000000000e-10 -4.048452814924e-01 + 8.028000000000e-10 -5.293110935611e-01 + 8.128000000000e-10 -6.047422910037e-01 + 8.228000000000e-10 -7.071868576548e-01 + 8.328000000000e-10 -7.984914661054e-01 + 8.428000000000e-10 -8.360704549701e-01 + 8.528000000000e-10 -7.825505283213e-01 + 8.628000000000e-10 -5.642168951425e-01 + 8.728000000000e-10 -1.997675829904e-01 + 8.828000000000e-10 1.604850893678e-01 + 8.928000000000e-10 4.048557791622e-01 + 9.028000000000e-10 5.293024006551e-01 + 9.128000000000e-10 6.047526676189e-01 + 9.228000000000e-10 7.071769813422e-01 + 9.328000000000e-10 7.985009240492e-01 + 9.428000000000e-10 8.360608174754e-01 + 9.528000000000e-10 7.825597625659e-01 + 9.628000000000e-10 5.642070937767e-01 + 9.728000000000e-10 1.997763618165e-01 + 9.828000000000e-10 -1.604938267743e-01 + 9.928000000000e-10 -4.048476936234e-01 + 1.000000000000e-09 -5.033604123532e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/conditions.yaml new file mode 100644 index 00000000..8604dc5c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 19 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_19 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/CML_core_tb.sch new file mode 100644 index 00000000..40ea2fb0 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/CML_core_tb_20.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/CML_core_tb_20.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/CML_core_tb_20.data new file mode 100644 index 00000000..696f2b8b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/CML_core_tb_20.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.787258342535e-01 + 1.728000000000e-10 2.078017915173e-01 + 1.828000000000e-10 -1.622649468476e-01 + 1.928000000000e-10 -4.154784848215e-01 + 2.028000000000e-10 -5.503628241592e-01 + 2.128000000000e-10 -6.299323770996e-01 + 2.228000000000e-10 -7.254942323191e-01 + 2.328000000000e-10 -8.176578932007e-01 + 2.428000000000e-10 -8.600222409410e-01 + 2.528000000000e-10 -8.019093712422e-01 + 2.628000000000e-10 -5.756893793886e-01 + 2.728000000000e-10 -2.057606209176e-01 + 2.828000000000e-10 1.639197157563e-01 + 2.928000000000e-10 4.168841038800e-01 + 3.028000000000e-10 5.515424627408e-01 + 3.128000000000e-10 6.308336221978e-01 + 3.228000000000e-10 7.261208861559e-01 + 3.328000000000e-10 8.180354096547e-01 + 3.428000000000e-10 8.601969327831e-01 + 3.528000000000e-10 8.019450515145e-01 + 3.628000000000e-10 5.756806762770e-01 + 3.728000000000e-10 2.057351595047e-01 + 3.828000000000e-10 -1.639234125928e-01 + 3.928000000000e-10 -4.168916689126e-01 + 4.028000000000e-10 -5.515399403849e-01 + 4.128000000000e-10 -6.308421950132e-01 + 4.228000000000e-10 -7.261151591955e-01 + 4.328000000000e-10 -8.180409257235e-01 + 4.428000000000e-10 -8.601903753395e-01 + 4.528000000000e-10 -8.019506024478e-01 + 4.628000000000e-10 -5.756757498169e-01 + 4.728000000000e-10 -2.057370812605e-01 + 4.828000000000e-10 1.639284669376e-01 + 4.928000000000e-10 4.168895758092e-01 + 5.028000000000e-10 5.515444733402e-01 + 5.128000000000e-10 6.308408648378e-01 + 5.228000000000e-10 7.261175778597e-01 + 5.328000000000e-10 8.180376908128e-01 + 5.428000000000e-10 8.601923700088e-01 + 5.528000000000e-10 8.019470527506e-01 + 5.628000000000e-10 5.756789455974e-01 + 5.728000000000e-10 2.057316537746e-01 + 5.828000000000e-10 -1.639258645561e-01 + 5.928000000000e-10 -4.168940343704e-01 + 6.028000000000e-10 -5.515416140289e-01 + 6.128000000000e-10 -6.308456056710e-01 + 6.228000000000e-10 -7.261132930683e-01 + 6.328000000000e-10 -8.180415890619e-01 + 6.428000000000e-10 -8.601877913845e-01 + 6.528000000000e-10 -8.019507055326e-01 + 6.628000000000e-10 -5.756748223597e-01 + 6.728000000000e-10 -2.057339330851e-01 + 6.828000000000e-10 1.639294327626e-01 + 6.928000000000e-10 4.168918933453e-01 + 7.028000000000e-10 5.515448110547e-01 + 7.128000000000e-10 6.308438013344e-01 + 7.228000000000e-10 7.261156471026e-01 + 7.328000000000e-10 8.180389426729e-01 + 7.428000000000e-10 8.601899882644e-01 + 7.528000000000e-10 8.019478991926e-01 + 7.628000000000e-10 5.756775488816e-01 + 7.728000000000e-10 2.057303912125e-01 + 7.828000000000e-10 -1.639270777727e-01 + 7.928000000000e-10 -4.168949361223e-01 + 8.028000000000e-10 -5.515423789761e-01 + 8.128000000000e-10 -6.308469511551e-01 + 8.228000000000e-10 -7.261125857103e-01 + 8.328000000000e-10 -8.180418172660e-01 + 8.428000000000e-10 -8.601868536640e-01 + 8.528000000000e-10 -8.019506539776e-01 + 8.628000000000e-10 -5.756745040863e-01 + 8.728000000000e-10 -2.057325997968e-01 + 8.828000000000e-10 1.639296206310e-01 + 8.928000000000e-10 4.168929982528e-01 + 9.028000000000e-10 5.515447184418e-01 + 9.128000000000e-10 6.308451859194e-01 + 9.228000000000e-10 7.261146020976e-01 + 9.328000000000e-10 8.180396416883e-01 + 9.428000000000e-10 8.601888436252e-01 + 9.528000000000e-10 8.019484098509e-01 + 9.628000000000e-10 5.756767177581e-01 + 9.728000000000e-10 2.057300830001e-01 + 9.828000000000e-10 -1.639276725752e-01 + 9.928000000000e-10 -4.168951851932e-01 + 1.000000000000e-09 -5.223291820834e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/conditions.yaml new file mode 100644 index 00000000..1514a4fc --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 20 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_20 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/CML_core_tb.sch new file mode 100644 index 00000000..31235299 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/CML_core_tb_21.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/CML_core_tb_21.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/CML_core_tb_21.data new file mode 100644 index 00000000..b199692b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/CML_core_tb_21.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.573501255338e-01 + 1.728000000000e-10 2.075317226020e-01 + 1.828000000000e-10 -1.459750710281e-01 + 1.928000000000e-10 -3.981214724862e-01 + 2.028000000000e-10 -5.378144391949e-01 + 2.128000000000e-10 -6.222071778117e-01 + 2.228000000000e-10 -7.144656924256e-01 + 2.328000000000e-10 -7.957588475985e-01 + 2.428000000000e-10 -8.259944634024e-01 + 2.528000000000e-10 -7.639419051023e-01 + 2.628000000000e-10 -5.499582313836e-01 + 2.728000000000e-10 -2.015822705639e-01 + 2.828000000000e-10 1.503547149045e-01 + 2.928000000000e-10 4.016725871885e-01 + 3.028000000000e-10 5.406529598204e-01 + 3.128000000000e-10 6.244429748136e-01 + 3.228000000000e-10 7.159703736038e-01 + 3.328000000000e-10 7.967442303644e-01 + 3.428000000000e-10 8.264465978318e-01 + 3.528000000000e-10 7.642028659706e-01 + 3.628000000000e-10 5.500598536778e-01 + 3.728000000000e-10 2.017167809837e-01 + 3.828000000000e-10 -1.502994036069e-01 + 3.928000000000e-10 -4.015772846450e-01 + 4.028000000000e-10 -5.406194194587e-01 + 4.128000000000e-10 -6.243734224937e-01 + 4.228000000000e-10 -7.159615996115e-01 + 4.328000000000e-10 -7.966982014285e-01 + 4.428000000000e-10 -8.264613960108e-01 + 4.528000000000e-10 -7.641725666632e-01 + 4.628000000000e-10 -5.500862997678e-01 + 4.728000000000e-10 -2.016863380222e-01 + 4.828000000000e-10 1.502773228882e-01 + 4.928000000000e-10 4.016041852700e-01 + 5.028000000000e-10 5.405973091915e-01 + 5.128000000000e-10 6.243995261147e-01 + 5.228000000000e-10 7.159367954986e-01 + 5.328000000000e-10 7.967237369409e-01 + 5.428000000000e-10 8.264362767952e-01 + 5.528000000000e-10 7.641972989051e-01 + 5.628000000000e-10 5.500612169320e-01 + 5.728000000000e-10 2.017098008556e-01 + 5.828000000000e-10 -1.502994747055e-01 + 5.928000000000e-10 -4.015836624598e-01 + 6.028000000000e-10 -5.406181129288e-01 + 6.128000000000e-10 -6.243799299897e-01 + 6.228000000000e-10 -7.159574419629e-01 + 6.328000000000e-10 -7.967036557443e-01 + 6.428000000000e-10 -8.264562124237e-01 + 6.528000000000e-10 -7.641768324224e-01 + 6.628000000000e-10 -5.500832409355e-01 + 6.728000000000e-10 -2.016878835950e-01 + 6.828000000000e-10 1.502805147690e-01 + 6.928000000000e-10 4.016033959904e-01 + 7.028000000000e-10 5.405993862387e-01 + 7.128000000000e-10 6.243994053085e-01 + 7.228000000000e-10 7.159375001908e-01 + 7.328000000000e-10 7.967227911979e-01 + 7.428000000000e-10 8.264369695557e-01 + 7.528000000000e-10 7.641957504677e-01 + 7.628000000000e-10 5.500638388088e-01 + 7.728000000000e-10 2.017065810231e-01 + 7.828000000000e-10 -1.502977706940e-01 + 7.928000000000e-10 -4.015868518817e-01 + 8.028000000000e-10 -5.406159021220e-01 + 8.128000000000e-10 -6.243834226598e-01 + 8.228000000000e-10 -7.159542700032e-01 + 8.328000000000e-10 -7.967069113699e-01 + 8.428000000000e-10 -8.264528986398e-01 + 8.528000000000e-10 -7.641796598358e-01 + 8.628000000000e-10 -5.500810114131e-01 + 8.728000000000e-10 -2.016895461018e-01 + 8.828000000000e-10 1.502827695530e-01 + 8.928000000000e-10 4.016022282365e-01 + 9.028000000000e-10 5.406011687872e-01 + 9.128000000000e-10 6.243986267121e-01 + 9.228000000000e-10 7.159387803359e-01 + 9.328000000000e-10 7.967217157361e-01 + 9.428000000000e-10 8.264380732409e-01 + 9.528000000000e-10 7.641943142595e-01 + 9.628000000000e-10 5.500658668163e-01 + 9.728000000000e-10 2.017043552905e-01 + 9.828000000000e-10 -1.502962363926e-01 + 9.928000000000e-10 -4.015890294030e-01 + 1.000000000000e-09 -5.098048460363e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/conditions.yaml new file mode 100644 index 00000000..8184d1c1 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 21 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_21 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/CML_core_tb.sch new file mode 100644 index 00000000..e729411a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/CML_core_tb_22.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/CML_core_tb_22.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/CML_core_tb_22.data new file mode 100644 index 00000000..60989baa --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/CML_core_tb_22.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.539342660958e-01 + 1.728000000000e-10 2.092356958505e-01 + 1.828000000000e-10 -1.399589402437e-01 + 1.928000000000e-10 -3.887664135754e-01 + 2.028000000000e-10 -5.242925922458e-01 + 2.128000000000e-10 -6.069418933180e-01 + 2.228000000000e-10 -7.009344183633e-01 + 2.328000000000e-10 -7.819154973681e-01 + 2.428000000000e-10 -8.115011787752e-01 + 2.528000000000e-10 -7.528782125237e-01 + 2.628000000000e-10 -5.449881732974e-01 + 2.728000000000e-10 -2.018085669996e-01 + 2.828000000000e-10 1.453371294429e-01 + 2.928000000000e-10 3.930046196046e-01 + 3.028000000000e-10 5.275952350978e-01 + 3.128000000000e-10 6.094983923496e-01 + 3.228000000000e-10 7.026430994561e-01 + 3.328000000000e-10 7.830459101342e-01 + 3.428000000000e-10 8.120643124066e-01 + 3.528000000000e-10 7.532542388222e-01 + 3.628000000000e-10 5.451889146656e-01 + 3.728000000000e-10 2.020380161925e-01 + 3.828000000000e-10 -1.452202245966e-01 + 3.928000000000e-10 -3.928550396378e-01 + 4.028000000000e-10 -5.275272038156e-01 + 4.128000000000e-10 -6.093963788491e-01 + 4.228000000000e-10 -7.026185076638e-01 + 4.328000000000e-10 -7.829822343256e-01 + 4.428000000000e-10 -8.120760322925e-01 + 4.528000000000e-10 -7.532137307257e-01 + 4.628000000000e-10 -5.452168897181e-01 + 4.728000000000e-10 -2.019975663161e-01 + 4.828000000000e-10 1.451970774770e-01 + 4.928000000000e-10 3.928886426712e-01 + 5.028000000000e-10 5.275035947470e-01 + 5.128000000000e-10 6.094279224341e-01 + 5.228000000000e-10 7.025906785817e-01 + 5.328000000000e-10 7.830125874729e-01 + 5.428000000000e-10 8.120474298427e-01 + 5.528000000000e-10 7.532431353399e-01 + 5.628000000000e-10 5.451877569897e-01 + 5.728000000000e-10 2.020249691554e-01 + 5.828000000000e-10 -1.452230860448e-01 + 5.928000000000e-10 -3.928644448798e-01 + 6.028000000000e-10 -5.275279936983e-01 + 6.128000000000e-10 -6.094050782075e-01 + 6.228000000000e-10 -7.026148963104e-01 + 6.328000000000e-10 -7.829886841749e-01 + 6.428000000000e-10 -8.120708569069e-01 + 6.528000000000e-10 -7.532187757848e-01 + 6.628000000000e-10 -5.452139572157e-01 + 6.728000000000e-10 -2.019983459359e-01 + 6.828000000000e-10 1.452010057661e-01 + 6.928000000000e-10 3.928879698340e-01 + 7.028000000000e-10 5.275064479083e-01 + 7.128000000000e-10 6.094280990005e-01 + 7.228000000000e-10 7.025917879356e-01 + 7.328000000000e-10 7.830113821989e-01 + 7.428000000000e-10 8.120485256383e-01 + 7.528000000000e-10 7.532412367972e-01 + 7.628000000000e-10 5.451912171970e-01 + 7.728000000000e-10 2.020204953427e-01 + 7.828000000000e-10 -1.452213117732e-01 + 7.928000000000e-10 -3.928683087954e-01 + 8.028000000000e-10 -5.275257546899e-01 + 8.128000000000e-10 -6.094092443434e-01 + 8.228000000000e-10 -7.026114152643e-01 + 8.328000000000e-10 -7.829924127838e-01 + 8.428000000000e-10 -8.120671951794e-01 + 8.528000000000e-10 -7.532220607865e-01 + 8.628000000000e-10 -5.452116115033e-01 + 8.728000000000e-10 -2.019999026099e-01 + 8.828000000000e-10 1.452037268076e-01 + 8.928000000000e-10 3.928866787286e-01 + 9.028000000000e-10 5.275085793908e-01 + 9.128000000000e-10 6.094272189130e-01 + 9.228000000000e-10 7.025932924679e-01 + 9.328000000000e-10 7.830100596429e-01 + 9.428000000000e-10 8.120498613680e-01 + 9.528000000000e-10 7.532395420815e-01 + 9.628000000000e-10 5.451937902395e-01 + 9.728000000000e-10 2.020175827840e-01 + 9.828000000000e-10 -1.452196157349e-01 + 9.928000000000e-10 -3.928709378362e-01 + 1.000000000000e-09 -4.979849828547e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/conditions.yaml new file mode 100644 index 00000000..9ee9fc95 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 22 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_22 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/CML_core_tb.sch new file mode 100644 index 00000000..15caf797 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/CML_core_tb_23.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/CML_core_tb_23.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/CML_core_tb_23.data new file mode 100644 index 00000000..208aa09a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/CML_core_tb_23.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.609932954578e-01 + 1.728000000000e-10 2.135803595156e-01 + 1.828000000000e-10 -1.406795105233e-01 + 1.928000000000e-10 -3.985242549940e-01 + 2.028000000000e-10 -5.467902250198e-01 + 2.128000000000e-10 -6.349197102047e-01 + 2.228000000000e-10 -7.225601155251e-01 + 2.328000000000e-10 -8.022847270862e-01 + 2.428000000000e-10 -8.341174139963e-01 + 2.528000000000e-10 -7.703472968512e-01 + 2.628000000000e-10 -5.554753546701e-01 + 2.728000000000e-10 -2.092959847468e-01 + 2.828000000000e-10 1.439827087572e-01 + 2.928000000000e-10 4.013409764958e-01 + 3.028000000000e-10 5.491103575815e-01 + 3.128000000000e-10 6.367736171292e-01 + 3.228000000000e-10 7.238327114492e-01 + 3.328000000000e-10 8.031250424519e-01 + 3.428000000000e-10 8.344898451807e-01 + 3.528000000000e-10 7.705288945959e-01 + 3.628000000000e-10 5.555161552443e-01 + 3.728000000000e-10 2.093659332353e-01 + 3.828000000000e-10 -1.439645708780e-01 + 3.928000000000e-10 -4.012864243472e-01 + 4.028000000000e-10 -5.490981432908e-01 + 4.128000000000e-10 -6.367310776976e-01 + 4.228000000000e-10 -7.238327358891e-01 + 4.328000000000e-10 -8.030945225544e-01 + 4.428000000000e-10 -8.345032641498e-01 + 4.528000000000e-10 -7.705076814073e-01 + 4.628000000000e-10 -5.555368200040e-01 + 4.728000000000e-10 -2.093450233604e-01 + 4.828000000000e-10 1.439466188317e-01 + 4.928000000000e-10 4.013057839415e-01 + 5.028000000000e-10 5.490801810840e-01 + 5.128000000000e-10 6.367502973173e-01 + 5.228000000000e-10 7.238134370273e-01 + 5.328000000000e-10 8.031142213064e-01 + 5.428000000000e-10 8.344836920712e-01 + 5.528000000000e-10 7.705267055682e-01 + 5.628000000000e-10 5.555176728822e-01 + 5.728000000000e-10 2.093634169255e-01 + 5.828000000000e-10 -1.439633135713e-01 + 5.928000000000e-10 -4.012903718012e-01 + 6.028000000000e-10 -5.490957661747e-01 + 6.128000000000e-10 -6.367354259501e-01 + 6.228000000000e-10 -7.238289911799e-01 + 6.328000000000e-10 -8.030991093312e-01 + 6.428000000000e-10 -8.344987261970e-01 + 6.528000000000e-10 -7.705113506628e-01 + 6.628000000000e-10 -5.555339922038e-01 + 6.728000000000e-10 -2.093472747699e-01 + 6.828000000000e-10 1.439488143392e-01 + 6.928000000000e-10 4.013051006454e-01 + 7.028000000000e-10 5.490813620131e-01 + 7.128000000000e-10 6.367501696447e-01 + 7.228000000000e-10 7.238138408460e-01 + 7.328000000000e-10 8.031138234310e-01 + 7.428000000000e-10 8.344840024625e-01 + 7.528000000000e-10 7.705257750612e-01 + 7.628000000000e-10 5.555193682491e-01 + 7.728000000000e-10 2.093616154732e-01 + 7.828000000000e-10 -1.439618235384e-01 + 7.928000000000e-10 -4.012927107128e-01 + 8.028000000000e-10 -5.490937463184e-01 + 8.128000000000e-10 -6.367380404539e-01 + 8.228000000000e-10 -7.238264478501e-01 + 8.328000000000e-10 -8.031018435980e-01 + 8.428000000000e-10 -8.344959687989e-01 + 8.528000000000e-10 -7.705137100306e-01 + 8.628000000000e-10 -5.555321098787e-01 + 8.728000000000e-10 -2.093489927492e-01 + 8.828000000000e-10 1.439504269532e-01 + 8.928000000000e-10 4.013041525432e-01 + 9.028000000000e-10 5.490824887692e-01 + 9.128000000000e-10 6.367494882502e-01 + 9.228000000000e-10 7.238146944607e-01 + 9.328000000000e-10 8.031131051507e-01 + 9.428000000000e-10 8.344847147049e-01 + 9.528000000000e-10 7.705248067970e-01 + 9.628000000000e-10 5.555207970002e-01 + 9.728000000000e-10 2.093601819839e-01 + 9.828000000000e-10 -1.439605753448e-01 + 9.928000000000e-10 -4.012943342775e-01 + 1.000000000000e-09 -5.158218772706e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/conditions.yaml new file mode 100644 index 00000000..76389497 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 23 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_23 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/CML_core_tb.sch new file mode 100644 index 00000000..5d1666cf --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/CML_core_tb_24.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/CML_core_tb_24.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/CML_core_tb_24.data new file mode 100644 index 00000000..a8519464 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/CML_core_tb_24.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.405028365217e-01 + 1.728000000000e-10 2.142897527484e-01 + 1.828000000000e-10 -1.231353412434e-01 + 1.928000000000e-10 -3.782847553257e-01 + 2.028000000000e-10 -5.290944707244e-01 + 2.128000000000e-10 -6.207435846591e-01 + 2.228000000000e-10 -7.069850917784e-01 + 2.328000000000e-10 -7.774395392863e-01 + 2.428000000000e-10 -7.982183108700e-01 + 2.528000000000e-10 -7.327456021571e-01 + 2.628000000000e-10 -5.310063164445e-01 + 2.728000000000e-10 -2.063297175293e-01 + 2.828000000000e-10 1.293176468137e-01 + 2.928000000000e-10 3.835270490977e-01 + 3.028000000000e-10 5.333180257023e-01 + 3.128000000000e-10 6.240938619865e-01 + 3.228000000000e-10 7.092802493907e-01 + 3.328000000000e-10 7.789607942300e-01 + 3.428000000000e-10 7.989234313230e-01 + 3.528000000000e-10 7.331763415294e-01 + 3.628000000000e-10 5.312045040772e-01 + 3.728000000000e-10 2.065847902134e-01 + 3.828000000000e-10 -1.291958906021e-01 + 3.928000000000e-10 -3.833411283085e-01 + 4.028000000000e-10 -5.332389173297e-01 + 4.128000000000e-10 -6.239588708494e-01 + 4.228000000000e-10 -7.092541595355e-01 + 4.328000000000e-10 -7.788766619073e-01 + 4.428000000000e-10 -7.989439817890e-01 + 4.528000000000e-10 -7.331237184970e-01 + 4.628000000000e-10 -5.312431858800e-01 + 4.728000000000e-10 -2.065354720445e-01 + 4.828000000000e-10 1.291604530900e-01 + 4.928000000000e-10 3.833851407049e-01 + 5.028000000000e-10 5.332033925163e-01 + 5.128000000000e-10 6.240009303805e-01 + 5.228000000000e-10 7.092156296740e-01 + 5.328000000000e-10 7.789178950697e-01 + 5.428000000000e-10 7.989050835748e-01 + 5.528000000000e-10 7.331635644704e-01 + 5.628000000000e-10 5.312038508238e-01 + 5.728000000000e-10 2.065745538625e-01 + 5.828000000000e-10 -1.291960705945e-01 + 5.928000000000e-10 -3.833509278886e-01 + 6.028000000000e-10 -5.332368573592e-01 + 6.128000000000e-10 -6.239679712691e-01 + 6.228000000000e-10 -7.092497084655e-01 + 6.328000000000e-10 -7.788845366535e-01 + 6.428000000000e-10 -7.989377629672e-01 + 6.528000000000e-10 -7.331298791234e-01 + 6.628000000000e-10 -5.312385744549e-01 + 6.728000000000e-10 -2.065399094583e-01 + 6.828000000000e-10 1.291646812354e-01 + 6.928000000000e-10 3.833822988637e-01 + 7.028000000000e-10 5.332062833028e-01 + 7.128000000000e-10 6.239988652624e-01 + 7.228000000000e-10 7.092181343784e-01 + 7.328000000000e-10 7.789155267181e-01 + 7.428000000000e-10 7.989074545455e-01 + 7.528000000000e-10 7.331605295450e-01 + 7.628000000000e-10 5.312080087648e-01 + 7.728000000000e-10 2.065705039315e-01 + 7.828000000000e-10 -1.291926212165e-01 + 7.928000000000e-10 -3.833551733065e-01 + 8.028000000000e-10 -5.332328436976e-01 + 8.128000000000e-10 -6.239725200032e-01 + 8.228000000000e-10 -7.092452956008e-01 + 8.328000000000e-10 -7.788891439389e-01 + 8.428000000000e-10 -7.989331916474e-01 + 8.528000000000e-10 -7.331340451631e-01 + 8.628000000000e-10 -5.312350772815e-01 + 8.728000000000e-10 -2.065433053799e-01 + 8.828000000000e-10 1.291679984852e-01 + 8.928000000000e-10 3.833797175156e-01 + 9.028000000000e-10 5.332088978421e-01 + 9.128000000000e-10 6.239966795455e-01 + 9.228000000000e-10 7.092206518532e-01 + 9.328000000000e-10 7.789132522577e-01 + 9.428000000000e-10 7.989096829455e-01 + 9.528000000000e-10 7.331579091452e-01 + 9.628000000000e-10 5.312112407565e-01 + 9.728000000000e-10 2.065672983353e-01 + 9.828000000000e-10 -1.291898675297e-01 + 9.928000000000e-10 -3.833583124064e-01 + 1.000000000000e-09 -4.991705375338e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/conditions.yaml new file mode 100644 index 00000000..9d15c663 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 24 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_24 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/CML_core_tb.sch new file mode 100644 index 00000000..25cfc5da --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/CML_core_tb_25.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/CML_core_tb_25.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/CML_core_tb_25.data new file mode 100644 index 00000000..39c04d30 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/CML_core_tb_25.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.368449571564e-01 + 1.728000000000e-10 2.154696494615e-01 + 1.828000000000e-10 -1.180750667507e-01 + 1.928000000000e-10 -3.694801437498e-01 + 2.028000000000e-10 -5.157339685643e-01 + 2.128000000000e-10 -6.051803608378e-01 + 2.228000000000e-10 -6.923688047900e-01 + 2.328000000000e-10 -7.627278516708e-01 + 2.428000000000e-10 -7.836324050269e-01 + 2.528000000000e-10 -7.217390774868e-01 + 2.628000000000e-10 -5.258344598842e-01 + 2.728000000000e-10 -2.060622799160e-01 + 2.828000000000e-10 1.253068918672e-01 + 2.928000000000e-10 3.754763463876e-01 + 3.028000000000e-10 5.204513706872e-01 + 3.128000000000e-10 6.088547126517e-01 + 3.228000000000e-10 6.948747427610e-01 + 3.328000000000e-10 7.643967320598e-01 + 3.428000000000e-10 7.844541546789e-01 + 3.528000000000e-10 7.222905371020e-01 + 3.628000000000e-10 5.261436989659e-01 + 3.728000000000e-10 2.064244494061e-01 + 3.828000000000e-10 -1.251087630482e-01 + 3.928000000000e-10 -3.752230316774e-01 + 4.028000000000e-10 -5.203274407129e-01 + 4.128000000000e-10 -6.086807930540e-01 + 4.228000000000e-10 -6.948278459755e-01 + 4.328000000000e-10 -7.642927444658e-01 + 4.428000000000e-10 -7.844689558048e-01 + 4.528000000000e-10 -7.222270537973e-01 + 4.628000000000e-10 -5.261810188038e-01 + 4.728000000000e-10 -2.063649367923e-01 + 4.828000000000e-10 1.250740150254e-01 + 4.928000000000e-10 3.752740624702e-01 + 5.028000000000e-10 5.202917067072e-01 + 5.128000000000e-10 6.087280474834e-01 + 5.228000000000e-10 6.947875493975e-01 + 5.328000000000e-10 7.643381446772e-01 + 5.428000000000e-10 7.844278436925e-01 + 5.528000000000e-10 7.222707134126e-01 + 5.628000000000e-10 5.261386731045e-01 + 5.728000000000e-10 2.064078101390e-01 + 5.828000000000e-10 -1.251125509614e-01 + 5.928000000000e-10 -3.752362786491e-01 + 6.028000000000e-10 -5.203279553884e-01 + 6.128000000000e-10 -6.086920089480e-01 + 6.228000000000e-10 -6.948246280643e-01 + 6.328000000000e-10 -7.643013046090e-01 + 6.428000000000e-10 -7.844633201903e-01 + 6.528000000000e-10 -7.222336042293e-01 + 6.628000000000e-10 -5.261766512068e-01 + 6.728000000000e-10 -2.063691829929e-01 + 6.828000000000e-10 1.250784814444e-01 + 6.928000000000e-10 3.752708432251e-01 + 7.028000000000e-10 5.202949527958e-01 + 7.128000000000e-10 6.087256874770e-01 + 7.228000000000e-10 6.947904319095e-01 + 7.328000000000e-10 7.643352365607e-01 + 7.428000000000e-10 7.844306677783e-01 + 7.528000000000e-10 7.222672114429e-01 + 7.628000000000e-10 5.261433781551e-01 + 7.728000000000e-10 2.064029029490e-01 + 7.828000000000e-10 -1.251089390610e-01 + 7.928000000000e-10 -3.752408867518e-01 + 8.028000000000e-10 -5.203238706374e-01 + 8.128000000000e-10 -6.086968714396e-01 + 8.228000000000e-10 -6.948200705245e-01 + 8.328000000000e-10 -7.643060605343e-01 + 8.428000000000e-10 -7.844586734539e-01 + 8.528000000000e-10 -7.222379683755e-01 + 8.628000000000e-10 -5.261730442965e-01 + 8.728000000000e-10 -2.063725681788e-01 + 8.828000000000e-10 1.250820910423e-01 + 8.928000000000e-10 3.752680406761e-01 + 9.028000000000e-10 5.202978581562e-01 + 9.128000000000e-10 6.087233210610e-01 + 9.228000000000e-10 6.947932359489e-01 + 9.328000000000e-10 7.643326365950e-01 + 9.428000000000e-10 7.844331791786e-01 + 9.528000000000e-10 7.222642751837e-01 + 9.628000000000e-10 5.261469613157e-01 + 9.728000000000e-10 2.063991803079e-01 + 9.828000000000e-10 -1.251060220915e-01 + 9.928000000000e-10 -3.752443155305e-01 + 1.000000000000e-09 -4.875704709340e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/conditions.yaml new file mode 100644 index 00000000..ed90bd87 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 25 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_25 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/CML_core_tb.sch new file mode 100644 index 00000000..1ca4391f --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/CML_core_tb_26.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/CML_core_tb_26.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/CML_core_tb_26.data new file mode 100644 index 00000000..894f4c67 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/CML_core_tb_26.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.436948212736e-01 + 1.728000000000e-10 2.205877879634e-01 + 1.828000000000e-10 -1.163348151974e-01 + 1.928000000000e-10 -3.771420921807e-01 + 2.028000000000e-10 -5.370108455130e-01 + 2.128000000000e-10 -6.331888427572e-01 + 2.228000000000e-10 -7.164762236683e-01 + 2.328000000000e-10 -7.851286946760e-01 + 2.428000000000e-10 -8.059531868761e-01 + 2.528000000000e-10 -7.384564800459e-01 + 2.628000000000e-10 -5.363144999221e-01 + 2.728000000000e-10 -2.144637665285e-01 + 2.828000000000e-10 1.212929793685e-01 + 2.928000000000e-10 3.815418180812e-01 + 3.028000000000e-10 5.406606883043e-01 + 3.128000000000e-10 6.361475176918e-01 + 3.228000000000e-10 7.185360719894e-01 + 3.328000000000e-10 7.865091736067e-01 + 3.428000000000e-10 8.065713749450e-01 + 3.528000000000e-10 7.387921596039e-01 + 3.628000000000e-10 5.364259512539e-01 + 3.728000000000e-10 2.146317863835e-01 + 3.828000000000e-10 -1.212295238309e-01 + 3.928000000000e-10 -3.814110096077e-01 + 4.028000000000e-10 -5.406166203788e-01 + 4.128000000000e-10 -6.360467438854e-01 + 4.228000000000e-10 -7.185257686739e-01 + 4.328000000000e-10 -7.864422304189e-01 + 4.428000000000e-10 -8.065937411296e-01 + 4.528000000000e-10 -7.387487319623e-01 + 4.628000000000e-10 -5.364619855530e-01 + 4.728000000000e-10 -2.145913861363e-01 + 4.828000000000e-10 1.211959412322e-01 + 4.928000000000e-10 3.814481551476e-01 + 5.028000000000e-10 5.405833390120e-01 + 5.128000000000e-10 6.360831449777e-01 + 5.228000000000e-10 7.184907253890e-01 + 5.328000000000e-10 7.864786648334e-01 + 5.428000000000e-10 8.065585198321e-01 + 5.528000000000e-10 7.387840006966e-01 + 5.628000000000e-10 5.364270346085e-01 + 5.728000000000e-10 2.146260338484e-01 + 5.828000000000e-10 -1.212277001077e-01 + 5.928000000000e-10 -3.814182410321e-01 + 6.028000000000e-10 -5.406130595607e-01 + 6.128000000000e-10 -6.360540210765e-01 + 6.228000000000e-10 -7.185209180994e-01 + 6.328000000000e-10 -7.864492678158e-01 + 6.428000000000e-10 -8.065874846616e-01 + 6.528000000000e-10 -7.387544794760e-01 + 6.628000000000e-10 -5.364572547805e-01 + 6.728000000000e-10 -2.145959871001e-01 + 6.828000000000e-10 1.211997934696e-01 + 6.928000000000e-10 3.814456726213e-01 + 7.028000000000e-10 5.405857946323e-01 + 7.128000000000e-10 6.360813265814e-01 + 7.228000000000e-10 7.184929266665e-01 + 7.328000000000e-10 7.864767243186e-01 + 7.428000000000e-10 8.065604357181e-01 + 7.528000000000e-10 7.387815158779e-01 + 7.628000000000e-10 5.364303644926e-01 + 7.728000000000e-10 2.146228844142e-01 + 7.828000000000e-10 -1.212245339809e-01 + 7.928000000000e-10 -3.814220075435e-01 + 8.028000000000e-10 -5.406092538148e-01 + 8.128000000000e-10 -6.360581238583e-01 + 8.228000000000e-10 -7.185168954112e-01 + 8.328000000000e-10 -7.864535273883e-01 + 8.428000000000e-10 -8.065831328643e-01 + 8.528000000000e-10 -7.387583532284e-01 + 8.628000000000e-10 -5.364538735708e-01 + 8.728000000000e-10 -2.145992968151e-01 + 8.828000000000e-10 1.212027591883e-01 + 8.928000000000e-10 3.814433789143e-01 + 9.028000000000e-10 5.405880431190e-01 + 9.128000000000e-10 6.360793794818e-01 + 9.228000000000e-10 7.184951630330e-01 + 9.328000000000e-10 7.864747526663e-01 + 9.428000000000e-10 8.065622905723e-01 + 9.528000000000e-10 7.387792872630e-01 + 9.628000000000e-10 5.364330391099e-01 + 9.728000000000e-10 2.146202349236e-01 + 9.828000000000e-10 -1.212220310216e-01 + 9.928000000000e-10 -3.814247853449e-01 + 1.000000000000e-09 -5.040490090913e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/conditions.yaml new file mode 100644 index 00000000..9486e63a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 26 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/run_26 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/simulation_summary.csv b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/simulation_summary.csv new file mode 100644 index 00000000..2f5f947b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/simulation_summary.csv @@ -0,0 +1,28 @@ +run,corner,temperature,vdd,time,vo_diff,frequency,amplitude,voltage_swing +run_00,tt,-40,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.952e-01, -6.044e-02, 0.182, …]",4.722e+09,0.709,1.418 +run_01,ff,-40,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.648e-01, -3.672e-02, 0.198, …]",4.722e+09,0.693,1.386 +run_02,ss,-40,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-3.227e-01, -8.540e-02, 0.161, …]",4.722e+09,0.722,1.444 +run_03,tt,27,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.752e-01, -5.371e-02, 0.179, …]",4.722e+09,0.692,1.383 +run_04,ff,27,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.482e-01, -3.259e-02, 0.193, …]",4.722e+09,0.672,1.345 +run_05,ss,27,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-3.027e-01, -8.046e-02, 0.156, …]",4.722e+09,0.706,1.412 +run_06,tt,80,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.659e-01, -5.659e-02, 0.167, …]",4.722e+09,0.669,1.338 +run_07,ff,80,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.411e-01, -3.745e-02, 0.179, …]",4.722e+09,0.648,1.295 +run_08,ss,80,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.916e-01, -8.207e-02, 0.144, …]",4.722e+09,0.685,1.371 +run_09,tt,-40,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.397e-01, -2.046e-01, 0.131, …]",4.722e+09,0.807,1.614 +run_10,ff,-40,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.293e-01, -2.034e-01, 0.125, …]",4.722e+09,0.789,1.577 +run_11,ss,-40,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.474e-01, -2.088e-01, 0.131, …]",4.722e+09,0.819,1.638 +run_12,tt,27,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.050e-01, -1.958e-01, 0.120, …]",4.722e+09,0.771,1.543 +run_13,ff,27,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.935e-01, -1.929e-01, 0.116, …]",4.722e+09,0.753,1.505 +run_14,ss,27,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.133e-01, -2.032e-01, 0.114, …]",4.722e+09,0.783,1.566 +run_15,tt,80,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.765e-01, -1.934e-01, 0.103, …]",4.722e+09,0.743,1.486 +run_16,ff,80,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.643e-01, -1.890e-01, 0.101, …]",4.722e+09,0.725,1.450 +run_17,ss,80,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.853e-01, -2.024e-01, 9.500e-02, …]",4.722e+09,0.755,1.510 +run_18,tt,-40,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.575, 0.203, -1.640e-01, …]",4.722e+09,0.851,1.702 +run_19,ff,-40,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.571, 0.205, -1.568e-01, …]",4.722e+09,0.836,1.672 +run_20,ss,-40,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.579, 0.208, -1.623e-01, …]",4.722e+09,0.860,1.720 +run_21,tt,27,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.557, 0.208, -1.460e-01, …]",4.722e+09,0.826,1.653 +run_22,ff,27,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.554, 0.209, -1.400e-01, …]",4.722e+09,0.812,1.624 +run_23,ss,27,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.561, 0.214, -1.407e-01, …]",4.722e+09,0.834,1.669 +run_24,tt,80,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.541, 0.214, -1.231e-01, …]",4.722e+09,0.799,1.598 +run_25,ff,80,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.537, 0.215, -1.181e-01, …]",4.722e+09,0.784,1.569 +run_26,ss,80,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.544, 0.221, -1.163e-01, …]",4.722e+09,0.807,1.613 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/simulation_summary.md b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/simulation_summary.md new file mode 100644 index 00000000..6401031e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/simulation_summary.md @@ -0,0 +1,31 @@ +# Simulation Summary for CML divider frequency response + +| run | corner | temperature | vdd | time | vo_diff | frequency | amplitude | voltage_swing | +| :-- | -----: | ----------: | --: | ---: | ------: | --------: | --------: | ------------: | +| run_00 | tt | -40 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.952e-01, -6.044e-02, 0.182, …] | 4.722e+09 | 0.709 | 1.418 | +| run_01 | ff | -40 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.648e-01, -3.672e-02, 0.198, …] | 4.722e+09 | 0.693 | 1.386 | +| run_02 | ss | -40 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-3.227e-01, -8.540e-02, 0.161, …] | 4.722e+09 | 0.722 | 1.444 | +| run_03 | tt | 27 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.752e-01, -5.371e-02, 0.179, …] | 4.722e+09 | 0.692 | 1.383 | +| run_04 | ff | 27 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.482e-01, -3.259e-02, 0.193, …] | 4.722e+09 | 0.672 | 1.345 | +| run_05 | ss | 27 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-3.027e-01, -8.046e-02, 0.156, …] | 4.722e+09 | 0.706 | 1.412 | +| run_06 | tt | 80 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.659e-01, -5.659e-02, 0.167, …] | 4.722e+09 | 0.669 | 1.338 | +| run_07 | ff | 80 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.411e-01, -3.745e-02, 0.179, …] | 4.722e+09 | 0.648 | 1.295 | +| run_08 | ss | 80 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.916e-01, -8.207e-02, 0.144, …] | 4.722e+09 | 0.685 | 1.371 | +| run_09 | tt | -40 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.397e-01, -2.046e-01, 0.131, …] | 4.722e+09 | 0.807 | 1.614 | +| run_10 | ff | -40 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.293e-01, -2.034e-01, 0.125, …] | 4.722e+09 | 0.789 | 1.577 | +| run_11 | ss | -40 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.474e-01, -2.088e-01, 0.131, …] | 4.722e+09 | 0.819 | 1.638 | +| run_12 | tt | 27 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.050e-01, -1.958e-01, 0.120, …] | 4.722e+09 | 0.771 | 1.543 | +| run_13 | ff | 27 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.935e-01, -1.929e-01, 0.116, …] | 4.722e+09 | 0.753 | 1.505 | +| run_14 | ss | 27 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.133e-01, -2.032e-01, 0.114, …] | 4.722e+09 | 0.783 | 1.566 | +| run_15 | tt | 80 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.765e-01, -1.934e-01, 0.103, …] | 4.722e+09 | 0.743 | 1.486 | +| run_16 | ff | 80 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.643e-01, -1.890e-01, 0.101, …] | 4.722e+09 | 0.725 | 1.450 | +| run_17 | ss | 80 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.853e-01, -2.024e-01, 9.500e-02, …] | 4.722e+09 | 0.755 | 1.510 | +| run_18 | tt | -40 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.575, 0.203, -1.640e-01, …] | 4.722e+09 | 0.851 | 1.702 | +| run_19 | ff | -40 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.571, 0.205, -1.568e-01, …] | 4.722e+09 | 0.836 | 1.672 | +| run_20 | ss | -40 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.579, 0.208, -1.623e-01, …] | 4.722e+09 | 0.860 | 1.720 | +| run_21 | tt | 27 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.557, 0.208, -1.460e-01, …] | 4.722e+09 | 0.826 | 1.653 | +| run_22 | ff | 27 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.554, 0.209, -1.400e-01, …] | 4.722e+09 | 0.812 | 1.624 | +| run_23 | ss | 27 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.561, 0.214, -1.407e-01, …] | 4.722e+09 | 0.834 | 1.669 | +| run_24 | tt | 80 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.541, 0.214, -1.231e-01, …] | 4.722e+09 | 0.799 | 1.598 | +| run_25 | ff | 80 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.537, 0.215, -1.181e-01, …] | 4.722e+09 | 0.784 | 1.569 | +| run_26 | ss | 80 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.544, 0.221, -1.163e-01, …] | 4.722e+09 | 0.807 | 1.613 | diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/vo_diff_vs_time.png b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/parameters/ac_params/vo_diff_vs_time.png new file mode 100644 index 0000000000000000000000000000000000000000..64d1b808104845d96a2127211f852aa2d848b009 GIT binary patch literal 225402 zcmb5WbyStn*EM=5K|-XvyQPs7rIiv1>F(}E36YkTM!LJZyOHja?(VzK``-J0zj6Qg zzIz|X8IFO6C-$?~T64`gmq7}0l4!_;$PfqwO`mA{l~a8IXL)HW_0<6aLDz$RVDdzA%^)xkh_smK7uV#26c<+<<@q)rhx_K;=Ez_E zke9FDM=poJQU+&`QwHlV*kF9^E}_3tR-Ee&4=zflr!1Ke!_K-+eJ3S_^lRC{BjNT5 z-<|@K{2h7O$g$fIT!Q_Ghw;A=p<}lsa_K04-~T*1o*@M}xbH;&^Y~M)5Tl9kA4kA5 z0XB{5e|}}n=Y@E`vci8HH)*1Z_Bh!8aXgv)e>sh;63R*IH~Qes?d^^2?LcxQS(fns zzQOl!zo>%}6A3diGZpg*ZI*Pf#gpYsGOKgb)6-8>B@3rAR0@ean=&?eU~g}4yLx(f zs_~Kk`@m}(&y+NqF8Z2TwdKg)-`_8a-7R4z|6fl)`{vEBzP`Q}1UNV}wHPPo=Wv^3 z(mp=Vv~d#u{e*ugzNo5V5fSY_lC-K(OJ}5~L#owfEiElG)dQgq_*5VjN0YsMxcJ@n8t;!??rTsZ78uf`-H3F|jBkKy^R#c4C;f>qGe z{N(C-^HwW9mPX?LUgiLawvAIr`s8k+8YcKrz_XA!9=aCm%-aa%|9KYy5@OQt^TE@P z-6W4TD*yjp?ls0gKF?2|5;(Ssdb@gi&zC)pwQ$`^#Qx*muCd8_$#m{b6=J}D9~c-o zx0ZhmkISaLNME6~%O$qfkjTKql=-#N_)-|9P_;BiDOYai(mg6F>Nlr}Ty)>;7tiY@ z7iu~>gE#n6va&|I6WQB>Cd*B3S=rfo90@;zgV(_|vx|y~#*LKz=dln1BszB;wPUTA z{$^7USQ14uT`tQd^F>}AE~M26(a{C2bp~?kwn3Z^=euJVl^G&rFS_(NOqc46YPl?RcLib1wfcyxcwLid)L5=P-5=XH z-u|ygUc)4p##G5|lopPn=2nwa#CAI$=9QL_d0#q%g@@N$SlY6;)ar7q{o)nz&v8>~ zYHEK(Qddaj+`*EFUI)BHIB`Gtij1QpSFuJdEiW&g=xenqQw+ElsBMNEk#TW7Jz+%q z7tPj7{C5|-e&7T=JaPTebOz;WP4^oc8*aB-@%8&9jVIUF+uspM>wXG+7Qv$Zq&u9* zJ(T2g{ctMD@3iON zu1n6&9=SW2yW!l}e2*Zyx)CAr?+1}J^iHCpI>4Ru4-900EpT&lGgfILUr|}vyxnxO z9^$w&_B}%6>G$lc+9z79Ov#9xf`Wo@%}SF|S{fPzzxH?b_8erMC*NIk4jguLE;jw9J(g|1>FG9~n zK>_2}4tZx}L<4pSnVz2B&HX*6?dm({aKdw(adye`Hi!D_!T z=t2Gb`SWisGtAm$cP8-et^F2SH^K$*IgLN1Sh2>3jEyP$8%aU=)~&x*(sj@7M<6t?S@s%2{ky#J|gi z)}CcC%XPe)oAz%~USw;@WhL9?cp0P#+toIhcd5GQ1RVaPLhfZw`zpa9A@$$^z_WZN znHf?pR9QPd9vz5f+OK*%s2n}JTCka{F#4G4b@jC;oaCd53NB&TkAnltAFoITm`a;E zw$ps%q@`a*)5_{kWJ!CTcH=GcEPLNu<;W)Wps+RB_OLfy&09b}Catu)yItMgDK%c; zO&A&*Pn2j0XuI#yKsq`)Za@SOaGPTzqLX&5tdM1nyN+1Agx+39XXovD2pc}XBfWVw z;kRmw8T%P6m(x<8#}Hw!yI(0OhsyKvBnyLVtwRFGO`XtBw7hUXiOZs>zCNYA$Rn4X zo!z3xar37{t{|{xZlhqktuNTLZsn$VXEZb<24T^i`8;3yXd6Lu!lxvjFpx>c%MB!* zj~4qMuU8@>BG6q{ylQJxa#P)d2{?_%z`vosfOBq48A%a1-;9=D2MZQO^ATUfTaZP) zD&1nH#H7g?jfROS^J)&Ij<&j<n_<>4buU)dR z(G#{&vtZq6$+NM)kJ1*5!&IhTyy$s841sQ;qOX-d$b23mPfl!8-To0cAIypdz9MNl z{Pg?H_lE~h@8?ICDs>jHp>pc#Zi>7{lXxQ#K`0gVGHcX?f@S^NXag=Fc(;@3RD(vq zu~}q&C**#ynqZQu2eKzB5l`s)x;`$eX5ZzEj*rS)R`~x_c5gyJz;zBKa3*kD#Hr4i zjb|V!5dzi|QfWM_-}MvY;XLh`nvxP0LPkbrJenFNmkVb&NZ$50 zUx`52lMez`BiCx7#?Z(pGC6r@zqECv&TgYgMszTa<#wj^Nxaqj@#drxy*aM=I~?NK ztU*MI6EV8b#cPl&g!kFU$HyQD%Nz+^FK&bh}N!VTc5Y5IjS=UUZO8 z5w(x?M=rH1o%W~8jRtW+OpfngerxJ0cRhu! zv#Z3%r-|&3qkGy*V+g_O#IF!Rec39mU8ZDZEzzc_Eh`(lf0)6F$S$fgNHL_}oBm^01mia^Kf636ca8tf_voGh^6mwCWu{90p4 z0IJcSkMXP!&#O5TkcpD3kHIfSS}!%ET>hTl&KDlxdII6fnL1gh%Jy$KsrNU#LD|A# z-IBFLD1Q6>aqItUJJiABSDR1h5Kb6+@%o2`q7uIfbb-}cd8(@7D)mJ<6H~?(e?=;| zld_qUljDxFsPvXQj-8Pa`Ii<`baeDwvj?xo)j|G-I)gN327Od?^hQdSj>9nbHnF6w z?Fm7#rz&!z%ds)Y{7#zfLZs-R^#--$kXG!+ud%iw6yfv2uMS# z&P2WvnR*vH<3k|4PB(f%b-e+BfBP@V2GTb&(zEM0ttjE==V!LmPXj&SXx3_ngK)S=P)YK8G2*Hjjvq^lg3jq>?2D#wH*azra3Y(Are*hkU zc(CxIre%Y+N_H){C7gBzn4XO4#nboC^RAy1v0>gM4GZ3^`h7|jysbKyb7B%!TFA9$ zKN^Tfshk_S*qxNGjDgiI`z@U7U!{KB#pe37jTp04_x) zCI*8*R?7MG)+CBPR>nzP)72|(TIAY~HS1NWaG?8P4$8HtU9Gi6qom$%cTxghHN^=PJ)3{=V@&3eqt z@xHM?ABa4k0_@9=222Q_=a}zGTc7xw-7nX{f+B7rkbtcYkW42iNb6ci7N{i$yrut7 zKhZ&x3DQ1(n1o8Pdbby-@$*kHG1#C2`E~1`GE(o)luBlQo+_u+LQ3Ixq7)KJ0lPlL z9FcWIivVPfwNqEQg%`;+%@n59^OGa{fAg_GiL#72eM)F*5!A?}bIv>6%dK_V4Cx$X6g*+$Kro^pzH@O-trJ##Tbug) z3(DLFf)C(TM<=?-(9P+Fd`Pc=PO9gbbc4(BNS1Uo6lG8!70aZW z%KgE@OS7oa9zdidUK=Rd)zQ)M1#z|9^wyXBu~Zd&}r@KK0YPcaRT(ue#T4%d8f77#SJmK9V{zvS`#8u5|=h&X#=#S6Fu2CJ7D> z-lMO-)M^B26qF*@e+eeP1>HEn-C8T4&4Jf3nJI}51?@>TEz*T5#eJirCjC(~&~k3# zsMU(^vUQiIY-qv2!h*0Vo~9mh_5od}3)FZ}sp#simpyI|YgeF2>uZH!zuUD-FNw>^ zxFlI*LP9?PAV*6_`}>0+*SS5M_P%`il0r~0*(A*iH+IkPd-8O#2B+hW0;%VTsPMzd z2atiF5uM9@3pNLt+a|`{<$iA{0Vh7Fa4VkYXbUw~8=xeflAd2o$~!#V*xBUlU{Fce zK0jWcuLY91FU975N_an0qBYupuDK&`436->t}pSjy6` z>!m{Az_VF#Z)&6zl4*-;DTl7qGS~mTgHZd9fh6$$p_m#uKEkWF@b{Av|NVKPn~RY# z^ouW{wb<>Ty!SVc6(Iuy1Gu}Mq=YF$j&e{_2L=ZLK0$%LN>JSRZD^{5=WA_76S*z= zhK91_(}W!lW+Oo)a^D%&QhZ9`#{n&L5|0%U3JMh)Tg30*_%;=JKYt?8$|l0MCBJpp zi|NRZ0Oh<4#GJl?!R~B16*(Qj-R*W7XpnSvz?Hym*#_X+3LAlifgwo4x;_A)lvL0< zg@bl)h5^G7GnH#h?SiD{@NbBMf?}=cP#6FS$GyKn6d!(!wfgu_Qc)4S zwKq&L*lTodZ*TX!oKj`hYWS<+ywi=RBe=~6FRBZk?c#7D-s7k~5F|6Z`@>oXfEq)z zznEEKVq&UQ7`|juEum&%2?O{123*y~_l@anC2Yl@J-{KL8@d23^hgUdivx`JM!yT` z1v=@c=p=x&H&Y0Hy-k+*IEx}h=&kr35%LrE}ZE6+S@Y+ zg*LCC;EWccP}h)O#z*ilLO8%|KO~*5IQ%0QQRlQ=*++Srlu_@&gwCP}&5WqMcVjdq zPwbDGtCiV{vkC90Vw5cJsGB3y8YhSlL|9kBLF(qq2|AuoP(#Ke0CQ}afc1dRJ zkTw%jotd5o%#Gs0)>l`vGS22L1ObnWl&g{OQ^%~SdY!zN>Chj4 zpf2_$aV2Hs~hyN9W;MP(ULF%?@dGtcH?Lhol8X>Eg(Qmq|%s?id#_W5HUp zj?wkzLNp#b-!3|&Wg$+|F07eBTuH(7bB*O3G*Xk)Q3DDgTVKuiq3pvNcEKTQsy4L- z0%F(W_w5-meilY5O=TIq>X7cnaNcr%)AGzEtsQ$!@DUIOtm2{B-?5M z)i1M^Za9yhMjf63blxqN#ds2-qbu)%*$YJF$@ zwqNoU=Vl)(>y))$Hr-p$zRl)=t;PvmtV)Utlvj_tBU?gm^DUO7=N3qm5evYo6QYb@ zTMW|hUv5bvC?iJ^NwPGGpl37q=0FEIe$FvGYR2UIY`k`eg9xenc&_upvvIPqbS3qW zYZ6!2NoHv2_ktMae{%rIB%lv7C9d&;d9Ft=4^C8%Lh1N-anf~tCT88VFL}or8JqQs zhda-a@()hzg?%pE$H3kJmp<@KPQpTd*9tflszN% zX^#KJ)Owxv6#1RLeI=wNdos@Q9c6(Bg2vqo@)z~v4MG>p0`P5%Xo30VI@#8-*@3Hr zL~FAuH-|=L+Fr=%^fI1zy)b_>0(U(`=>Dm(n>PoJJ#7{3Z@~GAEgUd^b~@AVx^LC# zo?aAM>BvA#H)ShIT!!B8eYk4n+uSI64|ep&7Sznn?+lCIz0!j}kZg80V+c&Im6qmo zFrE!hH#t=00ZuhN-S$>7Ml&G9;GS6Rs_t6etk{%_}RNGh^7Ui>8$qVmHkZWV$E%5PV_dcorjpW zh?>}nL1Ud>v?UA5vBEIknAMr3J^}Y?{tg z*JmBbz0Wr?Qg}I6x6P7(4lh~8iGVUs8`>5*rc%qqFrR7!uWu*|)pDdEQvdFGv}_5) zd>IROccNOA$V&UaRE#h|_kgAyNR=G{mHQSqX2=kS^`2j5!5?g=+e&U_nP%M9&wd{8 zsr3&M33rbgcfQ`tTIJ{7?Q>B{9$YNaPHZa89S*83=qeN2RMShhne9sl+n2HHUEcU=~GQ zMdFuuVv)yPvV>VJ)kqDaZj3o!4W)OfKA3DY!tmd!wvzAE!YKdt~TN_y?QpkMKHhrcJ zDOqayUY1S>!L=T=VvHO`k3hj)h6_|#{Y+HXd}#52FZ`26&ui;ZbxzFlcG+(+ww}0n zr=7Q_=MH9RH-8d;*mL+t zFTM&+1A3bZngcw-_8`jbeuKC1!shI+jTu{OY}xjI4P;VcOPUJYZ^xy`OGPfTm*# z>Syx;p)WZSvv$+X1hQwq*z16O^PHlhP{7<$Ai>7Q#yVXUYd0r?F7MCGJ|OV*N0Q&l zQW_|o0@Mgdtx&*@b92XLe~eE(Pj);12e|nk{f3l`jKP4hjIXGu_(+)s`mkgX0+IIX zYd`8U*$X66`DC$e2w9vsdgkYi5QRtw`d;Q$AeZ|3OOV!D>hYg&vc`tnS!wHi(3P|fL0ymjt?|9khO))% z8iOC31Xi@WoYbH$#}rfVhoRV%G_GK@2Xv&^lb^I%8^J% zSnrn0pB5+T?v~^6$_%XaAeTRqQKm=Xw2fYZ5UQ(UMDp5;iBAgHCECey+sZS}&dxlF zii#HpbJ2Z$Qe1?x%?nSAb(-;#;iX8^*hnxbw63Ny}9|u^Trkk8f_(7jlVgJ zkfB-tlZvL$`AUdh=MS_{5`j4I?Fxr&IcT5O7fCf&dpxxK9k2)6fZx}LNyfktJft{)ekagmbn@1|qi(uIW0GeYbRMe7-(lyTL@M=709 zjcmR5N%6N-btt1<{u{IE9g$7=&Udsr%2=mVM!4&f*O}9I`a9S33FxlG*p;BbW%kSUs=0(o2V|yIb~wlJ@eFpL3#AFu!WN83R!?5sDVQzLoTH zj?tpNn>rJxO#Y)L9(ieu9;nQCCeKXyHrjAB4yKV8YxRwi`8dO6XQ{oI;wF%ps2Lbu zHfzg+*1fdluE6CP2qOf1w&W6-k-vVuhW0N*#+5G5{x7lc-`Z1yuP_2axXOAd5hz!n zmm1FyN5y{wiS8FuS0^OmwJw^xZgAS)nao88CjgQYXzxP-L39M@|83Ch{e!AFD=TS0 zW=kLMg^FyX-Zy%n_W@EE5U$*7x&7xitXppXO^)0HPHGqMM1br7lyZ)ITKIw&2fX-e zc;TlT1M9lA7eLJdjjQEiU1U)a^WF6^RACVExS|%g&${jkVQY~BT>Z_>Mnq6pShpbu zyZeP{LBZZXp5H(_q3l1T!Z>gnkTm6-1r=y7>>=6QJlnM?r^8fcp@tGvj(E-(O@F!Y<<53p&VVeSHK z^g!cr%fjl_aoxtNo=^fMlcd2dN-nOLdWS7yV%(5`#-j!lK+R-iWB}5*$LtUr504Wx zp`j8~&@(0R9t%pkKLLR;`p<{JGw}S;Kpq72^ru|8l;7MI(*&b)b#_#zr>B6vOz`)I zcfURw_Cpu$i(}DX4GM)8Gw*{3bXQ`_Yn#DM75Ooyw)h$kiyH$y++xlmPb(r%kSC4f z)l6M_okQ`(<=pHhn;wk>a0d(^v37^3AzHbQbNkf>n-WyEigR4^v~zFKP;_ z6tp&`Q}h!JDVNkU6#WICSGu$6qVbk^m0mV6=*=>;>r7W$_8X^{I}73OiDr@Gsmqtv zjY~Bs%Rk~MKQe069(fdPxbOikL>Q|wtoMv%qjD{f-%aY6l=^Oe!7 zNc%B4u^-`NA71qJTHocpM6lv(wONo{$Pf&j5&R~HB^4&Q89~UK?QOpPd7_{70q@ng z_^+M8<&rZQw_=O)$S5Yw{-s)^gIHpAF-~?j!jy-HotBxQxPZBfKD+XBHAG~`KS=*5 z-!e?$gb(kwH*>=^vm<|)SNm()=Mr30a;j_kr)S27ApvIvW^8;i$k&w0Jfg3Ris)2| zF}UDRR?wFTTRI9)EOFg|v{fFetl2c3z8DpG7Tn$4g%SjSIeC|A2$dEA?^R>HGyr6? zUO?0i0M2f&s@!~v5m5boKw7*73`+9?kRiV2$fXQ`jB7eofCChbOGf9pxj9r4{usqf ziE@)sQe0-WHV~C^7J%wlp#{VS;K$D%&PQhie#~flpy}wWRC=GC?OpFAymg>uYren) z3Uy|B`Zu6@Pd64*{3X2x+{xd!Hh@80beho;JnN%^Dr->r&158*Kjh^%)juoM7I?sm zv1r#z0_Da9A1@{?7i!R?qvRTezkdDd2`>Er*e+(BmSpJFp;F=UBam$k=Bvz_?)C}| z4GmA`ElN+pZJmQeF>MBwlhz|8NhzqP`~bJ3Tf4BkSkL(}j#+P|#S03~Ldisy3uB-g z9Z0ayTA`$%0K6_R<>lpQ4RY1?KHx{p>Q#M2$DRvTwThaWLqP1EZSfKS1hxKHx@b&% zT7APiz{QQauLPnIP3tC@OUuh|XUA*nA1&7BeaS8S2ojp%$!hz5t9Mo6$(8KZi+tWd zo#022U{Wb+Gq1J>h61<~5M@A$BZO-8-nUzLDy7=P;UofkRh%Hfg_8;m0RC{KBLD?t z8+3YBR$+@3s9wE&4W*<_1fSpctN`K?`aK{{MN$W4WKjN(DEO5vrZs#eprf10{lxMa zGZtRwcB%gcj&cn#!oXIlD;*)7b~G*fWpjPGWtin~^X?-p?%hGrtjlk`Ufw^}Y;;%s zRUUnq>Ehe46RJLey@xsK^wcbMYVhFhxdllJI7G+w;U%OF97k<(zYD@LI1Y0_|n$C60 z{JV3T9kyrnl`*0D-tf*|;F^;0Syf`|q1{CquAhm8iofiu(yO(BE~9{%jHH}nlQYq6 zhmlTmbMxOIhQMZ6KWaRFkq%^pi=!o?Z@1^$2DJ+b0xqn=!uB5jA=_Rsb_xp%52Xqb zrO1u^PEATe`9H|E>?r^lZR$MV;Q_gB15o=H>es-&(q|AMA&^c=;QgJp--R^_J9wRn1(<_UVs)%4)1%2Y_h=Z znF!@vxfMikhP9TJorG=!E;s}r26p2id?1oq*CqiT|K#aDUP4uYxgHsfZeLYUdCOBt z*e~m_zw0o+ef5_u6$QeewWZa8xv)|{>!9j~qU~@ejUY#&F$6kFX-rAfDfobgo@JfZ zo(*TL)G^qIP0Ct{8ks(Q^h!W{Vlt*fs)0~bQ4!>eGXZtR{gCzjgn$Yx{?9! zV%x*;nKigIl=Bj>xZVqUPaTV2q&t5 zfr}?!E)+qi%I#i7e6$GnO)+prLCax_5#M#u)p^J$`c{tP{3v(Bn`n=amy~*lLQaq$ zk5;*uSH2RpD-Q*&1wFdf^&unDEiFHawJ35LEPjoOS;Uo zFLjc_v~NB5G(V5UtTSoC6A%#a5x+X7ZfJQlGc(ghz}xIEpbsV%bgf9%Ha9O&Z5N7F z+91fx*bJywXPN}sG(dQAB>UsPC_cOv2d!na8(T^JzeI;{Dn7p7K+~-BPUOgOzCK!N zx|sOr)T3?zQ>`xlkDTw)eToqyKR@58X713rpin-}A~YnVF!LAC7&|?Dm~l}+Ne22{ zx!g)=)0qrOtqI>FzlR_x)G7fK4d7qt0p=zgCY9uIO79jfo8`sARbS6AU^4(Jhm+xO zfB#$AX^~oontN{^BP$@5FMH3|SfTW#qJiDH=(e2_#xcVAXWSGYDy%in>X)AYe;5a- zR`0GHZTVB2V#Zfjb%B;}_$WX{1s5jqVS6N{c>y3`c?Y~_PLL$FA6k-+*W2o)KnVm@ zR}YkB%axWC(5XiQs0);`zj=>;Gt}&H2t%t59j??%a~ETOe*DE}$-H5@qaBt+*51)2S1biHrwPwq9BJik%NC5k>m z_B%C^F1!2h@PMoSA zw74zaDmKeKLdHb%V=55his$#kY#xxG7Bi`OK0cubhe@|iSBTj2;h1Kj-OKLe2e;v= zz1JMAo?n!LeVl7X*V3&ZG$qu@zETYna$aM+GP)J z`s=CgxO~K>87ky82tD$ZDbDWM$QgQILD>HYsWa|kxd0eRr1@UnzV?`$#g$wUzB0?g z;;v+5GcMDothMSRsPxF<7Evq(vQsW_rbR&q`7*X7>{aT=&lUz8;)>e%y#MKO04a84 z?kfL(ENDWsLPE`QjqzCj;dclDeuw4}XSDz2caSSqnYq0mow)@)jXrP+Gy#n@D<=nV zXPv<6Ig&svll?gbcSJcY`*QR#Vb~aSG-|+%VAh)|Yi6-f!y*|@{C49BXl!Mca~1B_ z!=Oke4Zlck8fksJBJ#LCG6M22WVzh`$B#2$vEu+@GAMHlj0Hq0N?*SCx3)gJdF29M zq$Kb+0n}x@H4qEz3&3zUzk1FV1CsVBfMcnbzk!rA4*X*7*C}QXCY3v_Pj~y!tlmo& zf9VV4M_}aqkS6Tqx)rP16rvl}jl;JfAOHZJuubzNZa_c)u)m%j`#dLsnl|lW2~>C> z-VK{A0Ko1Z$NUwx&-=h9TpH>(8H{JM@mwo4E(qTctcy#*ef#HcVpnM&^2)!Z;+g&a zm&+dtCoH6R3V$yhNEj!qyq~{gcwZ{{&f#v)TIpP)$F5{>B`oLoBZRm>EqGEz*7g%K zui%-#Wj%yn#|Mi^Bt^VjD9!c**L>YmnG1UgbKtDDdw_buH8XkdVuHPk1F<>LM}a1P zC92jgCq|N*G7fXct(&)gFIlf$fBPNn1|7q1W&m}@EiP_V5+ z3g?qQE#l^(Q`70=k(?n$?x>u*DH8UgVsKUBwl5#2Pu|eRG=fbZwg7(%13E zfpg&bBNwSfURf}`QN-Ae{kpHLRYb;9oeok$ARKjImBgpNERXWcm588&Xc(o-s%w`} z{8G{ufeH!Dp1@j0y~Z*KSP-WQlovr`mU}2KEv*OGNHu2M($5vZt@4FYnIvQ)U<~+9 zCnhHWSJ{x~yt=*^OGH$x64I+wi>eM9aX!}*-OSL-(ao)`$h5R$k`>^fXu77Or1ag{ zF$Gq|gX-5jF_-%@4wJIHZY+tww3Uz`4J7ua-W|t=$sR&nTnSlO*%Xr;3ho~QPJ3c{ zdK83VIqg9$&@1g%o&js(wRSh&Cf`1k00nN(i41X+cQtX(^@by$a|He^Nx!WZJ9CwE zpj%>AEBgk5zz%dtZn1~BEb8e~=5tMMl`eKU85zC+5Zzryqj7=e4%pLbY*vn(RE2?u z(rhdIX{ft_>3V0}57=F&7|5JTPBn_BCz}||@zhzx!;=bS`n7Jn#ie0Q#tQ$yp<11L}yy(@7p;)gVGlw?!6s?$jQ9 zLmWl6^#k_I_j-&noyIQ_J>94B$v>f^?z%G2OxYccffXk$-YHAL#i-ZaTIZH1AErN# z+nw2(NxX(QvG%x6HbN-mDn@xKrUg#z{xaTB)rM-(mMTBdoBSajVu2PYGi=gN2BVWZ-~tN2iJ99O~bXWzKW$jA0Dmo*>;Pe zKGy9E$!xFa0^CpEq=TPMRbx4C-qiCx>fevEW|6R2dq%Dg33jm9QLCVMVtB)i#(Vy# z+J*BEchR;hPi>4)wm*!tGHnoqd8aZZ0UsO8&ekOQ>8!s$QpJY+aDIR8tkY#yQ03t- zEhCmdhDcf1Kb&4$H?gWcCguX;m22Xnz3{K7xe_{`6yMPAaw>2{Z!1%NYpz2*L>v$r?! z;=)m-MAL1Wx%d);nD`U0FpBq2s)3=0O2Cb{U+x8Hm(tPG{{#jVyG}G-;8^Sh1t?f1 zTOXjdgN51%Rp3g>xZ}h}T?7nW6KFBONC>CfnW01k>0xz&Y?^QiF!5u(e%%J_a&~;g zfW`<54n`&grghGm1z_TaHs?Rkh>(zx*Hc`U|9~-(@F*fOvQgmU>>nQP1~?92Ex@+` z31S`U^*!6{w_I+j7v(ktp0`iH2Mc9VZCY+=i`AuY>?`GXBJK-ax{!B1jxpt)@N_1(+Sw9 z-vi18xSjq0zjnMK%pP)*P%>B*w?JTGO@mr&c&z53HY#A)x&hqIzK}4$(LhExHUahc z_otl67|mvFo$WfH(Yi0(4^q09S>DE_#3h~N9rD4Vzggcwy4${@F>H+7K$-q^KJe*i zLG8P^#&^-r7)pQE2fxkFE+WVZew(y&6MN57@?q(HxadI1a=5?PwMNfhMO&CEej$<{ zsN273uo`>A(^mcXDRHW&h9jBm^j#cL<|I4wF1Rx1*^;EjrP2(v6rXb_&-YoFJuYRr z*t|YQIL7eUa!xrIceC>;Po<=szPh=z#*R5_@uep zTl+Y{bK=J*uh-SG;k%amU(UT`b&42;-rMoV5DQ8o#-~mBSkh_}1*n^J{40;P0bZbO zYbWeQb$(QW@N|_(t!6Ap8sD63VfH0`fU;_;(^&Z>Q%!fe)fz)P{q|XCqb11f)VNK%-8L3-)+TI>XSitGC(a#%Mo1damIp$E8WLCop_3VXTkYjl4X z@X*t5u^P>BHF)AU~PE+jIo#{%8ki~Qn1@KV z;QiJGdjiaQO_XOoG;$mEy@m>eP(rQ2arZq4UN;~o5s8a_l#yAF)39Cx<0#t=`z4uP z_g79b@F0J90UjlZt>wn|@82&_%N;ngl#~>oMdPT@H8GU+1EuHUcqI*NKOjGS-Ts}g zlnds}K%zhc11q2wgLE>as^irSc(`VxK;Uueb_oCQ8a|FyO9qgR_1mc)P>Qv7#ajSi z)A}8R*dFL835Z{)wQXWz0vb7B80Lx=$?t~{6L}+ZZf-6X7S;z~(cC-m*e|Yy3L{h! zp}K%n1iVnA+yhHrLQ`gDCe+bZyJ(MsE_m{;xu>-!>wjw&^W{HX0E0xUAkOr_99)&f zO!$IzV;FEDR+^4ye5A}I*Ba+mkXv`;XHWRVtXWq!f_DJusGN$5C^8?x>n=f{l>*N6 z?^mPWZ}eb8@Yp1BCo!$fd$X9a2R4N)w# z$yVQ53mmhr$s>LD{+(+H5|?Utt%6=`3JGsmhE{xj-d{rR;b-)znDen-hj9Y=h~0}i zEl++k%C!>wh96oHONxFLb6>RgIm7GI1Siv9F2#z0u?83zn6RsRtJ(#C=kk@VmDYSh zpwkvW82U@ZJC6;W7z2!3o#;^;a(q0~;n!Q8RnO&e)i9dcsw(V=UWet~0t;Z1M!CN_ z6ku6~4qFYS2*d*bcslCy6b(-E1~_&n*HPrQz)%YvIeFXt+q6VoRjTQ*^I0R3@0|*; z>P)`$n9V+PEY4P$-GBVJcxP6rf~6R7U|8$Jzxry(O4nN=jH!~roes@ZGR(FZGCV2T zAMCPQu)Z3X*-NJ|Nlw3oe-SxRC^E-gQDKcFC-x=)(>;6YtV-Ed*8)K~6{!H0^EEt- zl`M^(NA0gV3zTByaKNhX2vN#4lSV6z5H3yAD5%k_luoR3n!K@O{8FfrF043DT_{sy zT0_RS8QNRBH;uBgs!$kShglqfH-WeOcC(~YWBMsr(pEnV|Q;4MJ zTSHW~vZ+nCx`WnFY=;t?zgZ3o{fpwnh}Y7)-d78V74ChNi6Z+xiu#r6aT^;~=sz=( zQCGR`HL7wq^S;`FnRiqAZ`y0@?So5;LYqfq9p=t;&IQAjM z%*K>*%(T)k(Bxuqd=$gl*8`QusK`aP#%W2#wY*o#0#$Nc0l61j!Z<*DOMQK$3g$x6 zr%iYH9O2#KP?Iy@{Fc#`U6EN>BpJAM^j6pq0zS3@J;W6NkN@#5s+SPbT7m} z&VodW-q0b){DOqW9S0#c0GnhMCbohoQQLkUL(|`lD~5lwo6zer_EK;=E^${wPr?AX zho+&w((v^ZW5QV74QFcRwCN7t#f$LYlXgL@7dh`xg@eAtYJNQ`?Jj)&7?+92{gi+N zn^$D~S2_Dj!UcBzA~yEc=LQoj^G0QDv5Nkcb{hzKAQftir&{o z%Kcm4M{2&ok9nUcz!xVj61t6xo7$0-UwMYdDQl|h;b50QfH~E^$3GVtIX6R)Np?^< zbMwcKAE4rm3TScnIpqSKorqR0*>%Jl6ASAl8g$lfKeQJN{XRTC?t4C|mRsHZSc+Tw z{fO=-BW6^a!Nim`xvE!1CK%I)%c5ve{Szk}$r_KfnUt*2^3ZbQb2MAO^@_f@HCA{A z>sJJ2M~5T@GsnMmL)Z)FrgPPFw9l1v)W{L?)FoPkw<>e?|Bx*{CO_g!4wn2<B z)Zo&|IU{U_2kbA4kv6J&Q<0s;-OB}ZLS*&tn2nk$Z8)jHKK(c`XpQSg8tByPZ(>$C zzI+4as*i@9_4__qs!XmPFXj{@LA6RqP5~-Jv9#w8#|BdYgY&>?@#pS@L0T?^f6q@p zbKGp+$?*k{kCi-EZwr>5pCr*&Y^_EvnsV`bEF0fVCq4m@oU^Es48eEOOh((ND z`cYE!O`A%B-E{qVykGi>fX&%x8|blLG-GkF_tpyf zONu6UcYrhsCLYduHiI+zz-R^-L!J0K`Ur}?Egvx&)pdF zns+7cq5MUSiXdr!P)Dv0BF&&Y&HFq%LN$8UpVcDO$qFm&AQl zMXjh0x}L{5q!^F|yeF~R*%pYQ@}SW#!VIqO$@MN9L(h;;C+A2tNZ<_i25@l{K=mu(tlqd<7$dR8gtNiSa;zRQ_L^&^|@$r&PZ2- zr)@ByBVU^)ytj#tV1s6!_t)<{&ZtnVJw_N-b>w|y(!aX@u@PoQe_8$IH~g{WuHa6- zMbe8zP7NG3Jn>f6^|DH;e`UpxodIN|bNpT26FpDL4ymJQMA5>YL;KUyO+@sHUlW zv;TgKaD#!tDfzr$5(!-Mx^$v2xhkkiDouE}z-EbsA!6!V%Z)GmXpNCJ zJ{suXv`yMp%#9{vtA1udEvzT;{|d@CVWH!so*?~tg5e3MXkOd;h!)b_A#~kW{dm-{ z&k7o~UErPpNgTA9n`Zr4KtllY-+X{QqU7a;R%$yyDn-V`e4!JV*NN@05-H2Az~g=j zgp8?RV;#OsPZ_n95m_2M#p6|YIJF*XCCgRzw*IjL5DUS*x-7mu4xEo?F!v%_{QWs(&0XQ5ziJ1q|kmx!LX+6{feW zB58d<%n-`Te%Ob@ZmLMgND#{ z$%ofpV)$h8?PDi$M%yMibkl<5W>$XAX)!#nVTolN(%<699#=5CX0XUWe6ClV zEB-w&u!|{xypTvKBeKwYx=X~6(2Tc#_nyD%IAXy3g(!KEL<{ft5?$hqm(NUnXDwSZ zvhZRlNN{;`LH=U*qG%rR$c#8Cfe{zWY!N=hcO4ZUY4+R{lgkrRx@Q!yY|pgt*RCkK zkNFGYHWeO9Q?Q#Ff+}taZsKmohv?v`BMZ{WFL>NAIuA@yzPSc?)I!^nCuRf zEc>e$(qzj&zeph>Cix(>Pc7E(C!?^of3~Jz_9*@GzyF^NR$kTEC;=cV{@+vJ62Q$g z3p^HpMZTuZ1QR;Ipi$EJ7fd~Ut+m!_E*UVdP6X~JTcB@F6eu%+v@QiCp0AD0#h;n* zW*^R-3%r6~b34Pw!=+8=^Gl$82taOJg+%ys<|Za8yM1}wex2Dto95+kvBZi#Wi!vNf5#!E*N-m398%vmyT60bUF?Lh#7=jG8#S($Hk^aQ*|fn z;|RWwZ_|cHrub4|@n+v@HO|&h`E#>i{69%dGm3%Z`T|{@qCMEZQHjhRY@UL+Wm*K~ zzy77ErlZNdi=nnRch*Hlru_5aksx+I(`x0rnr1BI=aXWWD)9&GB<=4jbvJm7Ucnes zui$gxl%z3c#Ly(e5&HcIUR#mM>{LDv;kc)4JHG;q{d=XaXii)Gp z6%;+gZ~Idq!9v*Y;P}4oeaxbjNXdIV8Vy$ag4%B~;tSq>BZXl*)2FkG75Wwmy-}*u z7X;#}&o>m^!p5b_W33g5BjZ#MHQf5|h?v^?*CaUbE6aqF+!#pi+=>OZ7q8HxWW)`X zSs}6E*asP8+%#`x`4Xe~R7*q+P`hXv-Wm%@sp(U$od#`B{owhF2g#fcd}qP^wp%t0 zlMHkFM=b;W4&ns>*@+(gv5Z6+^J_*Q3QRj3ublbBoERey%;9o?sl5Ks(2 zXNuxMB9aL+QyXrGedzS>Q1HIP`&U;{w=Qcjg;qcKH48Xe9A5ZvhxPZHJ*r_@#f+8H za<+QV_`hI_p$Ay(H&)|s0-m-^prF`(7>RO2BcNa~usrq9Hq%mCRDJv)^+&*))5KO@BVEeeRxS zF}AjNJUj9P6!q71Ih)lT6qW2Wx5`iPr5IDIJ-uF5F-LpEPkx3r+R`hZV=?(r)@nWM z(~pdl4=W?)&%%3PrQF4mP{U7^&E4|!neiwtk~(^Z=;~xP{+;9TM3n=%f{q~iLgk&> zcJqtNE1XDI^NXQRc4#|zGu<@=u0zrZd2=~1z8GiXsi*q#C0QlEze}rqh60Z3Pd4`RGh2){7CzEe#TDc5i;IOBQiHE?^CGcTBQuP z{##hD=MnJ-yJTG@=lk5NUq%$9pAv7l-=VtQegCz^m752Ty%(x>Q_B6iKvaorqR>w| zO38TP(;JeLwis2Z9QOysj!=c8dzR`+RO96e-m&8a<)_|~mv<)<+ihRK#EAc`&n4YO zMmO?)`k%*9XBF#7UkFWZt$~6XBLVprtfqBq$({pB{W3{B{(`i^x;E+8DFPmEM&1>a zY9O&--W}}H=Zr}_hzen+q3|3C&m^N)VNp&M#}MHd7Qf8$62<2*uX$-X(xyQ5#8dB^ z{%t|di$wAcO49NQw*00Wn&0~O6^)1=2sH;Eiz^^K_-q*2OFv>S=F&wVUYn*M=`KWV z8RH%%n))HJ$cyW7<4@B1N4ee%cLyu<`s!cA2kM^tH09%_E{(*A+z)otqU0QV;iyIt zJ7+ggTQT1jWclGkp26FzvDxRtmUF56@?oy!d+o74NVX`ye-fg6$)){5d(-zT;lL|J zlw3_+((0SRcX~G!OIM+#=Z(_O6VuE{NhTAmqtkZm9Ej)B+gq$Xzt78m;`?QD-O~M($BEp&PUMF z;H@Ppv1y@>XbYu_qDUs@e6Xu%*)9_>!+3GGTWutOPx6{ib|&7vME8? zYjZCja*fH`YXnA=dM&rhIw_H|$=UawSe@;3Yy{%zwM5~gbxpW5l?#oIzr7nI@HLd_ zqclzDTT1Z#zFhA!6Yeu@MR{=0|F~Q>|E!m>m8E{;&0-msNd7hq06UV9IggKVU%8Oo z)V}FW;HKV}&L$2%>HDYXejA@;_ICWbneUOgh|crX=_hS=+GMg}`N12)Bgou^VaRVj z*xyN%wsPiv1eeND!hDxh!45{jA8-APupQ+woy4?;k-k(KwK(K^>+_%P$eN-fL#!830aiQBR>k*1p7eic*CNtiN2{8bDbP+d z^!=+_hao*26?D6fnaF_9;5$2(66WtTrDs(92a@V#^4kwrg6EIPRCT}K36K^&7S{h> zpT&XLvI6-Lxla-IpU%@3Oi$mgRH&TjAjn|9o^6!m`R#d@|5Zc^u0RQQ=_~A-O-9Pls1qBkf=Nsl9c5HJS6+(2V_~>j35n4DO=lVFSQh*7MAJ3{j8fD@&$c)~|BT zF9uTWsWitF5s6H+qH0s?DbzHON#eB=9-+qjEq{8lUOpkD*6rfJ zl((MyZDo~oQbj_#Kv4Mg;N$lzKZ@$w$LDy`?Y-RQ{!BeD_6=&MS^Xv>H{<()xz>Y1 zQ=Z{|;=wQs`Pwp%H^@fqkC`OnyPh;QM(OLhjHl)0w%c)pSjin9-L*&W<~a#qNXqI{ zG2$wzI4saDXEy(?EXAj1rJQtUVb#TX<&5~PhwH!!Ub=+4DH{!etI`AU!S7L=G^j~~ zk}-=yVu=wi?gn57)fi!vps8y{VdO>W<9AY?yL)qTG!+ zwljcqGF3$0*qhhZAEQz0jmB5^R4=qJ_7tFLJhb|hTtu=46&MKB$R;v?bQS(z)TVi? z6W|NsckjQ3tPI522k!?`HeFV&E!Bc&7(ujxR1FZV1R=7XvE{hbnj#r;8=s6!9#~Z% z{Fp&OK8`LPVl|Vi>9>~gbQbZ`I>{NLIz?J2BiUcDy7+$ok$NOZu%PgrB%8y4)qd%> zdrd&e6P!?jpzo}7rBm|u!b!IM#N0L5WyuyA@%p@P-q_CAte`a&;wDy1-p=HrJ>_*( z#2RyvU87f|TXy`H7)_`pc#9HcA{N$qXI(2I$g;`B!)-PUj3gR3@hf36uV_$3Ey0>wU z+32(Arx*ebRR+EfIEi&<+AryNv<008zJIRTX=P*f+zZ!tGqaj~Vv(Nt;Bq}(!l$P2 z2vz)Uz~{dS1s222zmLtOUQ}ePe@Q(d{JPNeb@(s4fA}ZHro`9xBt*8&D|zjB>TzXb z!c8MckkX7B+wUitR}0oK&NRyf7)S38I!9`^{(gL;d#3NFqWj&$o(kDBs@xpP11Lh7 zX`Eu)>Wvl7)|_V^X$;%Znt01#19z(nmB5wL3j)r2iBBV{ zP#gv%6xC?DpbZpv+y6`(Ad10=gQktxprZf+Z~#7_*><0YPy_58ACE_vD_vVS^_d_p zduZ;qpj*G@@JaL7Qlz_-R+lQacZ;RPBEYmuJgqnBd10L!Hj)CP$|N=M&g-f*`9Jto z9?v9b#yD(38z?p~$9Z_j9SBu+qdjd*aZ)&x-5Y4Z&&ZOOCF{` zj>CR@m1*}3YgctMeC{1fp?FF@YFH2ji{{I)J79- zK+OR*fs*LjguZ0r&m8-Z$fW$V%y^%`-iA+St-n0&u(cQ9Ye=-I3+2R?^IO^cN($$i?yTUN^1 zno6rz_%aDFlamSx7=FJL2bdSabpQPy!bY{y{R)gxQc_ahE3eSG(^bFk=<5uD43+|3 z6tD~`KYz{{OjB(;K?lLEAXq9OKmZ)A>1|)Qpn!`Q9T055PXP?pfVpr>GchRP;HLcy zc)qZ%uE(Hgbu+fy#wO)t;OCzb9e@j~?*`bs_<`Hf4`P0Iw**M`{R#AUPIBIX8U-Su z8H`Gd;2;`|_03I`YM_W9R;;QjE_{4^@cd_e{hEX=1LlD(KxJ414+<3x4L;HXjGbt} z#AW&J_rTbMmkAc$O>r9_=wJkQ16K^8Ktj9+R5t*Vbc(nd{qzWgv26!}9#c{jM2xZm zuYIbdcp;YvVWTnlybg=Zhc>Uz^x)c^*7WbwCq>9R!MF2RHwM5HgcxM2X6k_b2Qeyy z)BylIco1M?ftTtytL$WnKpFy81EG4WE}X$5LGXv*vC6x~08=s_X1M{U4r&EH+l6ViORfAs0ow>8HO>LcLeFwl zT`pw7jXTG$vK$@~)?_|=KcDe7L#shAK!iWylAM%HjV{5~@E6G;iS1QMVd~enri};zKh1@|VCG zs*ZNU{n6gWL6ee5uAP?lQK9kEOV=KJBbeX8AkRJB6Q@t8k6F%k@)wG+GBG{x>PKo0eelHMyjPKrScMzi%d}i++2X;1P@Hm+Jd+;3G+~&^KHYL?AKv|0DK+(`6Ir=%vE)LU<@7* z1WFAsONl=%$Jh;E96_A`iyDU*gb1$oUIZebefgk~@6OhQ zATTiqE?9&9PR1D|aUKFy5@J(|5WNGb{g5r6)NSeC)fG@oaS;hC$O}Q}DjD1Yq(P9M zI|Sa{M5B|zfi4hwzUAy_j%cWg_XDg=Qdai%-a^wB%xxRU1Np(cLu69}uh#A({MNt? z+KhEV*Icg$*pX$!TdP zkY)g!Tzh-Fn{ge)xAtPUUO)yC0=Rji8)ugP*IgGK{dZ)f0b-gE;(To6(GG+h-bi zwRv2Zi30x7tU|RxiM1wpPsIAp#%z{9GQ7VZUHJPw@21t~weUU)?xJwDi{;*WVuNaf zPlHy@D{2cuOtOSpsZV}dQKiIoG^2J&2=BOMF;b-|C~2yf#n^u%BgD}&{X&M}E+lN2 zp*o&AO7UdzHjmeh;d7yk=s$fZ>Z1Bc&%DbSG5yo>?=Hw*=U!+Edp&87DEURONWsrH zqPk-H6nEJ=V5FDo{=g(HrLU}TMWK*DLX43~tc8z9W*m_?3AG zVOuU)oOm$Jh|3#>W{iVS?EZ#rZdCW8p#aJVTMLOU>==(KMjEXaBFWA^Djhv zPQ%6Qcc5(4bg}fl;9%6taiBoltF{wZ%+_NW!!WFyFZbJ!!AJ7{0w;Iz`M`#TAQV2n zxllbQ_zwH`T%C*0> zcV^%f6 zsHUaWkARHDkQ}#(GBR$I|I1K>fRjijZql%(oG_4yNT^^D%NOzkv=z9B5SH08?c)Pu z*pm?kAZJ$|M2r@u==~tD{2amY0ddg*8rr_o4(y66^9~#BlqLZej1YfZi?|}sfhFnpPuhr2j7&_m za5O+fmBEPQH6Q>9&6kq@vZD~o2O>zH{=BvH`#-Rcdk`6RUwWCD^}4=-Wt+!wmV0wN zdpt+db?h~yo(RavKLsJXx^{zg9&rlb1;Zo~*cXXmU7rz|UPQbb4nFSznS~YvM%ze4 zf~4W#=g*%asi%K2aB&~4b$&SmcQ`6yDt#cUG&(J0kdZ%}h&wJPvQ#aSa+=(pWs@VuJ`Ieis^dtUkDI5*=aTtR@Sef1 zG|M;iD+kr~;+Aise>N%&ODUElN8%g$84|BW>U@M|xSK)yD?Ckn6o1$?f`y>1xb-riMVJp@c)aL`QowOPQ^Oj}g zH~twzw=owWpClzGyHAh5V;Y0p6xjG8!BmF;l0EwOTchd^E4Vl@37NRz3lZx9fNEJ; zn$N{3fg`#JKGdp*r|XtJm5IO=7T=%TDb_B7Z2A$~inDqG%eBU=W`(-0XgK)Qk`fYD z_b#QXE)n^AzzG7t^8D}L<3+deOdt@^X3X0FDOtNL#i6RB@pU=CT`Sz;uK(k!XNNsJ zvWX9Z0><^_^35@jh>zg(!9OoF-Uk~hf`jZLv`!EVLEAOhTje~=sgn~DB%7XlkdCQz z%xGz80mXSzST=tm<3zMz!gkDObgXFI7y~v*1kM7etl(SigSiWUHY&uO*}BbpEx~+P z3u$G|DVwLVTD)cTSc#YT0xd@>Mg^?~&Dyi8HY!<81b@FZ9HkL&sy5?Oxr90Hfcp2+ zH&u82M)xXS3?`GvP9^p-VAT|81j`x4tv_Y>qJ^x2{nKxZNijd^WR(1hzoxdVc8zRR z{H3v`A9K*OX*b)a=RS!q$kZ6qxZ3tsKlQF#?`@Kg{>x$exDt-RiWH$4r*b%$6TB%y za@yG*MG~k)pCk1C)2!deq>&n;caft`$|^DbpU2;->g$ph;hN3fO(uLIq($^YO-F4t zN=mEdtTt|2v*0%YM)YR0mZuiASoO8mw-Z{iN2yY00>AC)_5D$V3#Z+(C*>cE{Y{uG z$76FpzN?ubiowr@ha*oAYOCojKxt#+$+$<|n*L;DIanegD3tuYP3ch`y2k5W^8kw& z3ZBM0lJk18RdOME8$J0ou1{m>KK$m6yF77wE+#+`AR>%xlx6k!d7MPd=~h;37PduQ z4q>Vny`+GsaR1;o9;wSdA;qil)2j#ySCMDrnhqXm%VGLy?JIa?C?gsFD0lIdPaLue zc4z(1`wS+?mg>bSnacRDUasq4afC_NM@noIGZr!72nCgRqUbxCBMn3wqJG=xus|D` z&OeElOlEj(z>80qKXEUXbg9ySxvk$m4w;YZQS{XIK!HXPDUxhl0&J7dYdb02Gmd^_ zBj>yZ9PB(HwOr6yQUX0OiYZZ%|h`pMA~y-U$s&yNaQ#LAmBG{pkV`@E;I5Vbn_{yqZvB$YTJxpU ze|o^5ORqNc?c28^gWG@pK0G~xefDTd$0Sp$NWs!14N}P>FQ9(rCv6y(<}aSMCG;2aJ7U%0oiT*}z07xF+S zY+JXuc)0(I+)uf7YNy2Ku}Wt2c_S5P>r(d+ORZrF>P|l1zjU+FE&~#>hD8{R|ti2U%uoE)XV?H=Qdt52wMpx$giXWRtct7ulr~{^QY>&^E z*D6jl5;&F)F82flgWI=0Zo9Z%tr(+@Qpx{v<)e-gVkK&`rOk1mD{9Oo8Xf6gCoywF zMvL&97$kF+p2K{u73JF$UVTiGjB0aovYOq(_2<#kz23ueuRMITMYcoRUCoztE-92u zG)3R6$fguN1wNL~>Acf_>PMLu$JtTkkn9;IK|kA*b3*%7d#L7^Twf+@|NW_sG+yZK z792rF$hG&`^3_6y18hs3-%g7Q3b>&d^ME8q2U)KxKpd#Duw$5LE`yUB0K@;vQyan& z)Mc9GGUJYy6R>2%7?gzt{{l{Sh%yQCPauuLk#HUO{Y7%|)BxA$>QStO)cM-c`h(a(P}?l@mRTvn~EsrlyJyKRrU&M!NiP$YdX_yQ52*jYN=LY4dz$N%8z zsXZ$TOAg$2k+$69&}_jw4h&qljXi8-ni=eGW=BUy&$h1dgJ`|V<#RZ>9>c5Qg~)_N zV^JrR+s(>` zx%kn7BE6AySv!NnG#&gqA|`oz7et!I)H^G!;tr8%^FvlyK?3S1&nLo)0)+;t82e(C z2e!s6%Y%cAk+L(7O4vj2>hUJ?qIDfukvH)c6Vrd!x@(H?4+zkr${$OA&i9~i`H1O~ z8axspphlhN5QQg=gkuHo!hsds38co`!zU${Z}2mIzKAzr^(_{eRRP< zA>fFxn(WRu!~ksh2;$*csYs=?fXY6GeW)YK4=7BC?k0?kj4<-vBqjAi%ZpK1w!uY) z(RFo<4P{G_s^-P>b8mqc-=9KJxUjG=GH+=4=GqHNjQ5~Z2;dPIMMcx$I^hf#u8blE zV+;gM2C7Tu5T8JFO@MwLki5V&Jok7pSIg+*)h^fVaT^yOgx~zEPCs+UVzJrf0ql}c z*;-6@{*Wq1?SuG#1|mrU=|^Ml)v#{_2I4@yX+IjEK=3GTq2nGR2sRL0%xV~q@zCjn z7}l33}>{v8A|Lxl`J34VjKoC(`@ zo*~i@5YehVXV`-M5}ki-G=FVmSiu*kwAUG>xbX`?v_=RuCY0<;R!O$kDnZ3yOI+KR z($@~ANpRN8BHCw9(wL-J2&b{tgn9Cz%D}1US!_}5`DY%YwBX=_ncS~GYkYQ-MPBDC z+IdVIWj2uIp=<>5%LY45t*09P-EGWcFkj48ey5P7iz?i3Zq}C@QS~kD5RNIwP;(-j z6$srNcQ5QyjR=yESj9u4OWg2X6q5^3+v7+vN{plG#e8F##;-shWZ6giKIhl*z>Hqw zNYdI`>H}%%muGF~=VSUA`aW9EEN~bqkB=>Pmvm~gReVOdDb~^6Xq!JoMKx5AePke( z2C=jt$noHNX%HaatuIzb>Yyhws=1=aOI4SA^X;j3%YD!I%-v6ps0~4-{$$rbqGT`| zsL~%2EdLsD@F6wgd^%J%<&)ast@$N?D{Lm~QA+nv63;=R$pfv6l(?_^ExN8NcL@rJ zGF}S%sEZQd%iO)kn({gG=KiC!E6|pP^Vvh#A-#=x7VJPY2BW%>_zB+C2!U~8) zpWpNE!&^iC`}e>CC)P-i`a zLuMv)Bf;x7pe}ACQt|(PINhM`KpUm_!L?NgQPD#r2=ahm1SxGmy3Aq zKZR`Z$7If+Wn%vjFPtc%U3_^lQO8Sp{agd~;6abgNsi-wo6_rgWp_q?n zi6e^AkWPD(ojnfq=bh$V6PD<TqjyC#kyWnDAN1YVsOir&H`#u~pde-S#q=pA?MhG-ul->OyD*c? zn%6sK&qjZ%^YhzolXT1mWZWx1*5H`-96wHUFif_PacHf#=ZDl^rY76^(;fQ!T_o1R znz#8@UJH$hSBcB`-l4zj=W5%a5dlzVK-POWeAkQSCS??r_;;R|9dfHP>A*9J3M~Fz zC-lpa^{K~C)M;LJ;C2-B&^C8)rXX8I@PszD7g&7gx9~EZ9O4m_WV;9SN7~R!MKVm~ z@VysvI>oB~d@yOs;|a@f)*35n^^wo-^ZJN6(zX@4vBVV{loxJQ)UL~WR>?f{0tv(F zymc~EJ|Ow$sN?5kam^29Wf!2YwZQd7p}A7H?JUKdg@l{Ly?5SEe06x^?TLRR`!TIx zYb>1ue!`=Kw<4kVhi#aXD{ASiXVP>jP9hO}aY_@%9dG3eW{rb1>hXO?`>PUX2qx%W z)6L)p|Hdb)9~IVB|7PpNZb+@kMhsi6BbDH!hJv#41|kNyb^*nCVJ8DWzbm_#s8_FE z6+7(!HVC%Mk$Vf3qhI}4p^u5##qq|U{g}u|A%}~Uj0{SYTelRHKwRd5{I5vGBkrNp z3E)I!9<~2X&iz{{=O5Du%{?Af2<(>{f<_4&B%*8Cj$_&AR~*-JM}H4T4Rv+I#Jjh# zzuXnru?Fl!#Fhnb>#?;0Xn%(1+kM<1v-onrjr_Pg=nAg?kL%=~`q$JH4|qE8kwcxN zVZO!X4R}VjL7*f-D@ySc_apZ(Ojf%&g6e%k99@e}# zyRZ2-90~6S?~jnIr$+ZY(?Z~Q18Gx~Zis;DflAHepT`|Ta9v1+_u#hXBf9HR2YD9c z3MEsMQZciM{=cimqW#COG1Vq}t?D;Z%O9aibaLEnTF>)I>x`QZsMs)a!eMB<`Z|-+ z(6+}XsvDxWg-WBByi8?~FbIWnRnUBE<{XWiTHXY>&dS`iMw=^|7Eq`-KzI({wg;V{hYD4=Pg_27G93ieebX(n7 z$Hh)Q-&?~aCbCz{N*RId?{)u0z>Pg!oJ(^ToC#7@l(I73;K}s8%(Ilr1v@z0UpM zd#31q^Q{VPCE&{5T#N^P@kll)>Oph8GBQ=?XN!{`$qyjX!)9$5{*;xgw=&#psD(CI zVCz_zHhyf}DY?(S{5~X7-n?m`4vgXrkss+>)iBwl7H`)^b2=^NjI7Zy(# zRgOpXYzv=&;3MR6n_<)G80JHu`Krpa&EvRf<;nf9tO|MP0I1B8@N8vG>piMuH`$L6 zmEmGtD3HzjG9f43+fEUB5vj;gDf&FIS1K1E#= z(UVl7!Kz!3>im!a%^fN`PWAVpn;q2M0ltKQIc6tDkUFV3n11ih5GBmgB>)MOM{A{wOj9ZnIDGjkMMJ-@hsY!o8^oKSeppKrV4C4*jZ)znC`wH!+LWeM zq;{>pKpaG@M=crIpq&STR~pjOU1KqLE^fovpGdVFO{A&y2;*f`cc1-_=s1t^ka=gq z>pZ`%#b4x~#1fjhH1fEI*Cf}HcM>-Z?yjgQEPj>Ot9FQbYX7>Q!(buqm+mR4$^87l z0+!de0g`wn=Ew9C>KHO(t{I&Kpf&Z{@_|(onlzfiB8dd(pfLXc^h0^-k1D$8aWw+< zoty+G{z97X!bUl4rUazXy~P>V-=49sDRHWPZnGLOu789tpD3Nn5%Cq{e(;T^{;D~T zbVhZ%gL3HnCt-c5aQ>mR$#|?1m%$=ufs>;*w_)&E^Vzc!rHX}v?2#oFmaC~}$%|dwi46Gfvy@V3 zR6E}*tb#K@c%c91ME;H?Z7i^Mq3CeRrjq{ejFuMv8G~vcz5Xy^TM2Kkft zROWho&l=J~A=ffpi{Ve1IV~q9PNASfG09;R6M!#RLNbPDaK$TtCQ5}W+U4mAxipe8pB>! zqMB^3=96cVs?ON99~a4AJ4)bSoF-KN~y5K^VwdMM7fx&{z9Dc_6KEK z|BrZ#33R@kGBvMI-;*=5j+J6`9?$-M`Plr!30}XFP2n}IKYy^Q8w0;B195KR{l>;l zoAPg@)YSWPIu{Y4ikQDC5S_n9WloAbk&a7I*NDUwilVJC1k@gP(99W#({f|qto?Ms2{=L` z(ye2~em3#2^vEG)hu%^Z2a+k=2CNq;X~nxq|MftV@@G-pH+d`Lo4U3|7$e6%*eVk( z`Svdpw5<#ra0BQh0u6z5@2~mfbCXy!*N*Bp>)?CFnOzjX)fr9_e3E4RiE| z5pH}g!y5D;bvatjiB~To!igOpo4BtsGkYd9N=1L*GBN_9L6>@EQW6>b451~@%8s2@ z5t;g%r%?S{U0sb#9D1aMNp3^)cgDeE{J!K0E0(sl5uT7OFvvccQezV$#iPBFiCzeZ#AK|zrf%7?o4 zhn&gXB(CS7`p*b|ePwC*UrXxuL^8wwur=zP?iGex(_oy($j0V{dp=pnJZYcQ^vTPr zVozoEWHz4&PW*7>fl0P!Uo}!oyP4c9sfFgF&c~lN`;s<_?sna-h>q!KUqxbbfW%tc z7BVV>ER7-^c}glCGbJlWC&RyHG0wy~Dj`i*G3#V9`I>=fecyd){f20btSZMAoChgO zjUfiw_}Ybq1A3zq9Lqi%@Nj~KPc|EL$*qBWwF$9K=qug2Rl&2^Y7 z@x4Xb*m0-(L6zpkz$?XWmhD5*IQN#CZ^GlyBoQ=FQ_rb4TvICsQ&`HSm?_$HB{KYG zDSwkv&ooFF#mFBrX0cGF^(5|$y;)X3n|`3TnMKd3@Hl~Et-9H&isrr+5qdP|Xxp>@ zI&A0CBBlwE8c~$6VVK?<;`j1Ak*=zYZ2wwPivH(4^=yixEJay97APshDfvTp?P4vZ zs{Dx9{=<$stE^d9A7R^%QBf5(!yT5{ALcr8e-rLC)(9 z4bzXWGy1nf4tL0*b<09S5-H~=qe4wZ0hCW7G_#YovD8w2OK*QYP|Qd)(=$>|V2=K! zN;!PUKR?0(*D0-wUE0{frSSOi!M`xJ?9CjMjsjZU z8YBt!6(Jk0+K$V%>}DzYuiwS1+f_+F!#sbtjx$)hv6L-gL)`3`X8E+C zq;|b|6Q#^hzgQz%cI<;6mS@VYRUR)IzM=Q_k6x_>L3NIElw%b2lrnWVCrQ?Ifl;7U0ZaPvlkD4zc z_`I}OKR932I(_EX+7L_UZ^kLmwBg@aC~Pk>dg*QP+Ujl@^NJE#vkD5dcSLl`roI*_ zQy}riF=CW(YYs)(_|ZASo}&70cFLo)+*5|m=m#(J&G>hpK?Swtn;YSW3k!RHK2mki z8|CYw(BTvCzn^`g8Oy=cSY=Ks9rtrap2&hAPI@9Tim7JZ0Zr{HiX}%rVa#Pvt@3QI z?cvF#h3D4(%BSy3#H&N-d&uU;)O)wj`- zyZ4G&IRb+?tu6WP{Hif-xoP@yi~RRX!zi4o;kR`^%F5i@mVl&>7vvOify4_g%hM)9Lz&4CK9cD77hS_;G`)BYWtQI7-RrP!`G>MC=WU z2-82*kPtlyk`=~oKwogbP#mcdwm>fUHz^{+nf|+jS~QD%v_1VZ=k3YU*eA1ijw^j1 zh@@oq+S2n2evCvN=u2um%loYPDmc2%g$}9lXPvXo=<|=RWD|Ci4-ab9WN@w4j(X}N42`9`w&j@#zMjHV0-fm@4>v6p2w!Tf3wZhNRm8V6hoqXo;XA1;*EOw z)!!E^jeeF%sjS0V>i2|2JD(Er-SgZ~N8`mByX|D++nD`Xgs{!QlQ20Xl2Zd)(TX8C ztfR(8OP$I}-^i%+1sB`lx4Ny<*_v`(<}6z#9p`muu|Ccs$4>FMP-XJht-2JV_ElLN z7ZK$z?j4GI$M!U7L-LuoMH+7eL{u{rfU?6^0La#F!!Hn-;+qb;@VNU78DzBT8 zC3IEJd9FKl+%mr6(G}6;pk0NJzau)k2IptDc?}-MP<0AF!xt%TezIzWhPFnNCk*w?#Ln?n1dex8+Bm zz>v@vhz&Z)AR4LRmwf?XRjq&pbtmP5l1pBsWf1vg-gEBSZR}5RXfzl?#Mst)eF7|u z`~Lv=7Tdc@12E29ZM$$P(@~5!bGFjj_1etAG%NLj`I>B{mggfc%XRh>I7F+9?Cy=x zUrVt)9DN#d8o$SS-j9bAEPiJ#x9?lZtpp@y?Pd%`{UTN!1;)1&T_M;A0JgMR0j=gB zet$@Xq+8yuUI6be<=v9+lDe1{wvwed6J%qO+dalD3nrI%`5YX-_=xG_slQq1c?JCr z_RCba6S!mPdza<3v(1Kz^()@T&9{*W>1K7zp7uE6k(SfHzVF4&i&I%B_7T;Lws0DK zmQVe~qIObpAo;STUTdUC8x5CG`$>ktzhZIE2S_t`6`#9V-Vfp47S>GnJ}TvEyt+@E zDoKN-t4Xgi_jLYkZ1b5Q8IDMuRaXU;LZi9k5L$QUy}mu3Uy_&(sf2A=K6h7>zU6k> zWc0ilj4}9(QvY%>NWpY}J8F+OfR8AB+J4y5GhwDza~H-xpS~Lbkgq~$Feay_JYI@P z;(3GboshTb`t{mU4;v@v=6i=qgcVx1LL18C1JK|?o`vXZlO70M!8DX7wQ^32H@Cs; zh=Aak3Zx@?PeZc)z&RUXqSH_jMl1fNU~SC=Xe3%_pDX@I2mZ?c$VtW8!qx7!j~Cst z!lV);i{k$9HT3T2yCF4oyZYPs1?Ml&)rkJ+kDD71%bEz7e|c^DOu;2W;fVaVh^m3M zo1)d*>RlvNAE|NHaHBwzu!&!?YF2Dl=+znAg+_l?rE^-$(hRgR4v&@>{xPcbn$oG^ z=Tr8NzNuq&x5sH)8arI=MOG$WP=8FMiR`BMHX}%yo1mb&5^wl0EoFivJANm=96$p)yVE#8fYgueP(u?v@dei5}YfJ`}tdlr?*nE zgr-EcTEO;p3J1G>8ij{z#YHIxOA3Dir4+xo#ca!&Lv$ALs}Si)Zqo6Va=F*vD2s67 z)b03%hwPrVKWRQq4}A8VI+*QML39B-Zbtt6bEmH)zjt#A33$x=*W;|yd4mhQWB>kf z6-sAG`H-mCT2(K{dyo?GNxr6Ee}d?%ZQA+u?3nODW*D4*(c)6s=D(@kO=Y?wyCvXM z#PiGBnw`~Knk%o=O(hA?wV%m2d<|@?KI&KTFg_@ibZwWlN0~|n0OXeu;wNthoN*JV z^VnZpEnL3+n*Ph>A3eIouC!@6`w+{}%mT(cWwc$Es;58Ct+MP@FmM?hzhs38N2e#3 z-Vzlb%aIImZZQm{r|rzgaxi+pvPxg~z0d3A=2GcHM$6LI1dQ?X)L4qBGkz3POoz|z zS6Uw1Z9!9&_r3f=gh)x2Ozc04+jDJXz9h<163MKB!u=(T5gnQvRevj19W<}0hHkx}fwUm>1`yxCy$Blj2_RuA zfc?bgR0vJ_-Me?qhMWlJH^ilW=wDWv z0?QbIw$JcC{jY`0{hRYaL;(|?smAiasxv5P`CXv*&(&C0qT+l(yGndgTACao$kEYRc) zYK`ur@a%7kc4^_W>6p}!_m7SuynR>c+~sw+#T%wstJDXU=;Q>(f^Xr`k!y}7jA^SM zMm>_Q%l)J(zxwhcIs!u>f6tHcZhWqpv>0fPpO^HGTWt8 zeWpd+zqOO3W22afsQXa|Ub!Gz3xN=dhyx9cO@BgbH|7EWCKIU1h`bNNr2*`rw+Od; zKUtYhl{JKh%i+=tMirgF8!+k4+*wGVmvaS{(T<7{D9wnh3$!n{1oIL?CN4K>JAGS| z4eVe5+6;l>HUdUreesC?7}7Oop?Uw5XKexDTLE1N*1UVXh`8tS&1)SDpBUf7v6ClDz;5{7z z2@o1rtO6w2o@Wf0qQlVFd_eS|y%$K~0JFaXeL@dXHxu?G623{5-Dx%*m z2r)5>VC_*J$VWgB5}GGTrCR;k*}2#;x%mX2!A%~wHztVxv%N4wy2|YI`cDC6X}_qw zzSN-d#q-A-0|z0_WNr2XEFrWb)7vf(umthm?{vq zfl6#|GKwLavixB?#msq^uBmBL-gnR?gAd5Y7TGnyggX&x**7=!I}MB#_X>IM=;RW| z6G^20Dveqf|d~P#UVs?jaAsQ0{f^YikB+I+Y$z6tS z$NIeHjN=cu@&+fQT%kVlHGZTS1(`pT%nC5z+}|@9%gVufaOV|eu+|<0lTpv#rpMN% zsU!@ne+~v8vQX5uxOqSyr_F9ZPq{`@exYh|tXUJCUZQYlAbR;wvnzW^qv&+FM$YN) z?VjnQ7rqu2^sonRfUR)jLs=yXLQu&7yciN9>jHxq5k%>@K16&N48&^)N0f)n?DM8N z$2s1oOmQUl%i7Z6EVh-A&x1+*@+U3Au?#si#M6h=4;k3`r*?$pAU*(_buU<%FTQ18 z7ucL4b|VPWP3-$z9jA4zCn|B;d8N0vPv80ry-wafWpWgt5Ed5xd&$Gh48X#-<(9rf zpC@(iAoe=%yW+p`V7A3~j)BQ-0~(pELdU@$J?Qr*o7%vA`NypV(oOH6=RG#b1JhGS z4qXqR^14Ek_$DFiUGh6*IVmYuV7S`Ka2qolPGkf#+96E4T9_@FY$6bLSeke}ijKJY ziH56)1YZ07I{-@dJH({{u`C?;ANV>|8nt7DNwvfJ^7nm(QCsRA3V~;8YOm(X(OeJ< z8G`3^4XS73yJ19!vV~Dx{fg=4t$LXC0XLV+C+kV7jemV;@J#!oiNW9_?h=prp8gT! zejw_{FRoh$JHE=J3(JmzU9h!of|fs3g>bXY1QYBY{U6%iDy+&i3KvB|1PN*B?oc|V zySqcWK^g=>1f)w!LK>w*LRzJzq+1XW1ZkxdM9=uw-e*70K6Q64=G9tG=KSXuW4z;y zfM3H8{&qvC(U7qNgmeSpMJ?p!1s~94im2rrvECedxv+9@h@%(TjXDX&*r!Fob|tZ)%|JaIU(-*Y5f}J z%KXHhq1D5_l`Jnkt|Rr5zB94Rm7dlOwNKo}R`|-1`}#{FBF8~o*zIkWxKCq)F-7vf zDJ{RH@Z6BQza~oFBVZQbw?!>sE-`1Ajc(&I9VP|+ zZl)X_91lOIDkHxmBp9kz?^EN&8vi%<4;lL`-nEtG&7O&b0~T1+bfKII+z~i47iq3xK&(-f?t`jEM#nEo93prJx_QppyfQ>Kc@d#Zc;wt z?ydaIjSZj~E8E#IUG}NGJncEMckRjAXX%v2QhAx?O@M3DFcKt7^6jGch4A!~6SCJY zkCXMYy#8H#owssqM}b%UD2YG$TJ-FF6=#aT%@$>!+iva9v zODOg?SV>jYMd)~zrp|7dU1QuNEx1J=SAbc1Ges04GzZ6^96z zNd=ts+6S6Us@oWrO<^m1g%9`@j<$8^5lY{@c@C00FDO7EWU+#JZbTV+e$tz{R*`ez z)5*f=Lo*MmKiG}ZxlWoaZ?L-8YwTXA=fkh~Kd7)ol?g`Ts2C!**M@E-FP3RrmTs!| zSUK|Ug(WN~HB}ONN$~6~21U5WDPVD(-XW+XCllm-CsDurY$iR7Wl~D?5h*9Cu$Ey@ z4CasprO`hj-e(P3IO$3iN)@hsdgB76n2lv`M(umHj0JNxlS zc&Awikv@N%#@4!FxX;oM{zfdk_U~Wn)M5?Y@>)F46A!sJTgbg~R(4(HOPWmzXUVXi zp1%5gxSxy_R}}W5jex0V@#`22ow))jS1 zdBLVfmjC$fmSr`U!jQUIu=mE)7!OVxh6ww%V6eiv%lcv%&oX9{C69=bW`XrXZFRD& zZd%;T#@`lZ_f{V*Qwsp#QBqg2)@1;t$PKr?DaeS z`|4Gh2H}#ub!`|MQu?d3bTT7(D$-5fd(@ zxK9oDQlY^!e`{kG$KcUL(}93QtRpBuDRl|imARe-C0Xo#fu+T1-j;^wED@b~^HS^n z+a*z=7y|hpq(hHgvSy2uwtfVB938a-;pl+tl7(O}Fp4RK$Il-2k^!6rEX?tPmr0Z& z-H-+`2(gw!`TzcG2{wbWh72s_-P^Oq-g-a<><#wz4Ngql$GnOny;#FXQfcRV!u55n#o-=z#zxt7@5mlM?cTUTCHYQ`}xPS zguNtmjC!IwC91hPT@vIej7UnRp!?^K5^uuR;B2#d9K|rKX%fyXA@FFL(VSIHAhP`S z#;T?VPSfV_JszCPtPH1HY1|Iq{xSOeIZGB1&cAwYUZUJ;lyDx~Xp9#ZHAigTzox$?c_0w1~9lC$bBfN z2lj;QhKT$QSC$#bno?2-ASSCQ|0_6)yn0X!7d!Cy=OL&*M?=jNPVRfc(Cz$&dIQ%n z@ib37=w#Mu{9@70-hL8h^6T%uN8iO-B!@g=D{fK~3_st9gUR&UG!i4oN}Vp(MT|oh zr!l~aVI9-}n+Vtcv$sp)pFfWgj}&NmpoI9ddQ*~?L)GT(E07I9Zx5o$-+#}WQVNt9 zi{_ZZ4OA@o$w9xRw4s4jP{ISe5*G^CNDzGL)|V(;_YwZGs(yoM9_@>QSRbrSUXzFRDs5(sF0u$<8$8fi$F}rBjx#erqrI|=a6x1xy z)wT7|*|R6i*Y43VDv%1D8Z~w0g)QgCvas7T8viVFR>FpkrD#--;^tdCp8EK`yeXn# z-0ORHD&O#9qkqVy9$)eyF4EH!8~?W0&xEQICr`E+HfLvNS76p)Xf1A!FZ#50Z`@!Udi+Z7 zcV!)MiNLPBxnjc0aFd*tL&NZAFI&+ zs59b3c+yCuFH)^SeCAJ32L5>Q{?Co^?Q}?*uB>T`MY7ltzYL_z<)~>XQq8LRhByR( z>nxSfvJWAMk?apwIuQZkKs0+_II!QqQEcU4*wRs~0K~_Zz%keK^yC3dl{K~-0777^ zLeu*K+^9)nC#kF;38TuQGaF1XoL!nwmLVk##0oxN3({{Ln$N(UO2cQVJLoG1&%!2hDMzdi#PPMFtVIeg!K!4zWk_ZIn ze8Ak=Mz7Fu$fpmQ9%^h#kVoC7u?HXziS}m6f1CpLK=74VImF&R+k#?6$=%((^jTH5 z4OoXDqK_>EN8^!>g8C&L)Q>L#%E$o-`$y%2s|v`l0P|PSUH2f(H@sOlf(mpzIu<25 zh@VJb3KGe6yD9hN_wa-IC;vhaJs4sw1aGK_(DeUqJ;_cXLWs$6^-&1KjQ}r4J+~YD z4=oT4GyJ5Z@Ypl&Kk{NRtUgBO7^ETcd>QI0>&|LAN_3n~3c-mfDnq{x#Kxh&3gj<; ztv!5eiTBD@FthB$Q0steK!UqEi_SvRhLM7tP|+@qEye&{1%q5KGH+b0NS8;ce6iJ7 zO(SincY0o5a9Z1noz@i>CAs*uHQB;d5Z$Z=E&a!c-KOYT@g+rtU|q>EqGm#AVlDaP z8NI!{-WW1s>WcoCHFnFxe=d2jY2qiQJEc?|fUYPZugfW9#4D_4n49eB@Af$ARx64= z0e2a}-I-9jhRcOkqt_*BRa2&z3pu9`;Giy%LshEakqH*QscGlgoJ7&ngqTwxjqDU%zf|?90&R7 znv=vJDjG3r0eGkfDH=8gQ;l0ZtlG)u^14Aa3jr2DphPS!ARi03jpKbq^$iWaTS34r zr;@k_I*M+veFyj1ahwZa79RuuuO2dKG(^8MLNP#;7r0X%F`Wv@axe4$o|OLCR+L-^ z{~vqceRG+hnFsARahkr3hYuP96%HRHDI(ZVGTr_QLvcvjMxa-CQ^Z)u%gYPd944+) zi;FO0`LR=3`x9WiUAHJev8UG_f!7x7mN5{Y1lPQ~a0ap0pxq1eerONcsPvq${-+cS z+3|3PczJuD8hXRA0BVaYp@%Cx{0~DRL1ddNZLvrGjyV!nB9VWX2@K~%v6l5%j+UK@ z%1r3p!R;#lPl?_7Hvqc19A0{&Z{_+^Bbmz(Fz&E3ok!e40itLy(V|BF9)Qvaz6|z3 z->n@{;2h%Gc@44UgFtof2l#Fjo-|~>;@UT4A-Q8#b_Dx$%7zC67$0$@$Vm!aobweK zh_Kfi?C>-A!+8unzbb{MVwn)tLV{UrXjVsAh2vZKej<|JH5XzU!+DcoI**h_`xcCz z_ALA2zap(5M+a;`E9`7AKHJ&?6qVYULYL?Iw>0iYAu(g(QDs=uR)gwY#)QRs6`8UzyAE%+hHJ^b zP9L=ISh6|fEwsZ}w?NwlKXc^n+3d7O;Prm~C(XHd*@PL@C99-a&+$sxI5@DtqfD4m zp=NHH&}|`vSB28#n>j&UPIZBE*0~gSj@H$zJB<+f)Y%~(p8~!?7=MII=KcKef@c7D5kKeSJ^1>{MeaPNtOa{pnebRF`MZ1=#bCzB$Ji#Y|iB zCWdrK5y>M7WAOTGAep57V@bw^tPN%^G`gwZ{o0cr9hRhOSVLBnTjKKbo@7?AGO3^O zV}(Xg__Z5YCuz4&YlXsvlmxHC%yaOGTJGi%CReQ0blDY#>5GA>+;YIzgwODDOT22x zzfyas@6B%_hU-Z76AtF~QJ%v6rgm87iJt4(aUxtMjb-`+bKiY_{!e*(W6)hSX z$koe;_$4yi_(^KVBHDGw6Tdp&$7L%=_|nF4ME2!uEd(3<(o?4uS~7ue*_Md=DJR1S z&caTZ zwzmff{6PkmX!;2=^vZX4uJ+?{dr|fEow!?)xzszmM|%j4IY)+vr{=F)MrRGb;Fc8S(oaesTXLn(#-F0u?UQXspIC5t z5GbE8O8|CGVlAr7c+JH82s*%^S2tY=s2GspZp3)KgTkN!?R4->o4IBVr!;e5Ea($z zwBMM>$h=qN9uX%Ie@cETzq{pRuXu{f*i2@~r()+O>>0Vdc2AvSt>&w{}O%Ibkp?a!G}?S#B{ z`LR?YKCEiW;?a$97Aw#b%@SJ=d+#Qua+Z@mu2zf|iwk^0nxj43HW$S%@;!c~`Y@i3 z(Q!;Nyh}mf#=Lo8>5=0->b?Z_TcrA!rN(kzluH*S9NbxIqOU$p71(LJWo4(fHw4}Z zV_mINa9K%Uf2u|DZm}2bk6%b9ak1=_bnR_@-p$5Y)9w?-y#u}L6Ap#)>Y}a6e;llP zB5@uc27TGxbz+4%446Q82kb4XL>~88Kau|dzil2h)*RgMnIoboU5)vZdQ20O&)ubQ?(jb z;8OkVkA)MCo9&;c!^)gEG&r>)uZQd9m!`X#8E7_c-{)lVY@3YV8 zP!rz1^;naE`}d7WHK*X7dm=y8_)vr%~OXFF=kmSszS9e_h-Op2EjlXYV6 zMoi(0OEp}*R0YkqWtK|HFNISVTxXefPhE90@<#$0`c7}+%&Ns;9h!=bh#2uDhH9=BbjQTEjO2CGzVEq4UsL6Oz3qhFsW0$cLa=nnMo@9D zU7sa@XI4Ioz?fXOsN@ZrjX}dm`?OT}UW9>jrD)vMgU6ABuP0JnHccjf{%jYwH>92C z_lwZ3_h>1qU-~*|DhRTX7Jad|JTcX#ZpQBld6;zg!dg1exmbA$jK7%^C5sl$FH-BA z-vOdNK9d^v+=`3abfQAlbU&*|^v7iv!omu6LM%zz!w;2|E2sAKuV2Xh560NFL=Kj7 z81HR?*~u2*K(gE*)B=l%i+4#+y80&s7j z?GUo^a3PaUwO!MCBt#{nFV9^{M=HQF_sWR-whE`ZUa8&?of>t*dS)JZ?@pACCfnN% zz2&+%B?Udr^W3=l3lzarh4h-+hCEJ>zf44hd9Byqd9``-2kYG;rq+^g%ofk?`gK

N4v3guO*Qs06vBWrnt`Pm)J%PKT^)lm-qVAE@#dcCMU zzPg>HF!Aw|j6n?@S%>jrtDN%F4zWYJSKow#$KC(iVQ%CSYK5O4mUm z=GBNc7ZzrzwzoN#YxagM$SO|9Qk7gau~4rfVcBqRxxN8oklNQvHhlwkKZItXhMqam zCT;Jd%6YxxmyoNwU1eQ6T3oi8RCD{ksS-$hTX7~_bxo4B%yFJ7p%}JRlD(RgmvuYO z{Tz9kZ{6gGD_`BUR9PLK&A`NvAeClufZ<;#ASLaIN`YvA6O=p?o7f}fK~pplG2 zTE+Xj{^LrvHDf#eP4%qvMGxjRG%ZW-il+FNlIwJCa_fudJ|u4(3XSXW*mgrS7wRUS zIZxNTkT<|rk0~!sq7xUVs+@_XXN4Bdx52@svnPl5@D2G6`s1|&7lysspVn{W0B2$tGdHoDQil(GwE`VHpqL&&hG_tK^Hl>(C7`i3iO)(&>4xU`^FbyuJA_X4 zf@7AKe!}C9LF|XKB!CC?oH5gd<(}8a4K0P&S zMk;pP<5$>=UB3C2jV?_ed{w9tr+f1aJ1{VLSmqRR@6A`gdHkh{p~%rK`Ex9eOXImM z{Y09Z^9P+$yBzDe-MTIA**|*AcuCRpT^9#aa#OfOHfiy!6=5k;mrYYVnN+XouHUSI&!6a=}F}@y!Xz!by@r@uOvQ@NIs+O@G%=5I~HZA|`rcel;A!%~i!BRlsj!i7xW z-NOdnHerqH7h0DIf*X$Z<0@mHqXPfU*h^!YzNK;A!IZmRV%zdu4<8Mq5_e~}Z429- zjlIV)&JLY}jN4W3T%&-(L!h*XJ#mwKTRuo!=Q%F_v+R1E=3Kx zoZL(Vr`%CQ`vZr(|9LUoOr&6G=0JK`2%~0#Y-?-q+wb`OEyvd0{wJJ0{w`(>3-QC7 z&OdfAOE&EYVrL&MQndg68dBD1JX%0?xjJ&7QLDdQQ6#}9(;IKA^HHFJXog0rQIO0p zR-2h<&*Dr*U*D?|^2L>mFjGY8AIf>2{5Ikr=y$C1D5wZB9*ds1#;i_0z>F3Bt=Az( zPJ23>z&F7}@bfzEb9{ov0=bM%vd#|tnJMutYeOeggND}|Wl;{;J~0vKu3ptYI55mC?koeR(rVPPKn^mBkOIyxEk>XSCS=; zS3bclZDVq!C^`*%KBrzmLZ&|Zrsof3=-hJ6D$*N0ZQ8`&&yMTiY9%#k==S>Ap_f%n zhZWt8B6%4{s`uxqp5DXr?af4S)6ffA!A$ zC8vhsR0H>9r^5@AmL!Zt|Dozd?yWPmWL^@fpV8M!F1kXQC0@-6;HAh4^XYO|q%bqT z7CrKjb(5gyz;>KAl9XQ1T-olz6b`RpVA8}&%#`QzdgS?HK%4kRzH`sRd)+T|p2_cr z48nqLyrHk(3S=!XHIT(a19PCyJ3-2f6FG>X)g3br>Gmb0*#+z4YQt~d_t#oHz0{cr zbxSquz=iZ8D7L6B@YEUjTO@O&^_&d=-g3f{El=iAnbS32vR!%(&K;%P)M8oN}rgu0zjDW`k%|*)i~UHx6n*e z%#=-rt)C)R1=42}*9lRF2HP(0mX_hKX+-W_cf1JF8b>U@g*M8m!Hyy_DzvzhKjaZ1 zpz=z&`>ykOjB_$(WZRajkn1nA+WeYQ{7Qx&>uR~uM$<3-in~;s>gMPlwN&F&uumc)1Nc#jIqA%31!1{~1FeT8zBk;qx4 zo71FmJ2RssjMlQ*|H0JPfG#lFMJQ;1m#y_gH9Y?P6ZiZ#B+v_Qrs;y%9S$(BwP$y9 z%*;N2^-e&3>}&4tul&G7>4rtfZ#%z(&x7D06Af%ofDX}DffBlba9En3fK!q&K<=04 zhYnCB|M{~exdo0kW&llwp5e8@#P!$c!;l`t=n3%$PdBtswy>~>(oS8GNwu0gy{Du8 zgXBKCx30YwFQct{b=P;Fl$4a~*U=~hWCyZIdJpi+j`S_LlzLt}H-0a0E`CF?5VwBn zf}cC#$N${`c@F38+1S&f5+>@M=d3N(p@;hTAeGl;0EL8 z3LG1av8!zX9;O|hAV?FiOJj4oA5FI$t3IKjk{tH&)cjCYcLk4DcZRhz&x4AA`HZWH zlE6@wirYjRZuHn#+Ozw*MeLU7`ck|cwoy#D0@U3Z`LW{c!o>J`&Xw(-{?0cBv7lFy z9JyfVr-<7cowIzwX*te@!_wWSe)0FF7@F+j`QU5P!Nz#a-jkH=8~pxwi7(z@VPOr9 zj&1_omWhSsW_Z{5PS8ItjHvc6*NXYJ2ZLUVgIgGuyf(s2UVv$gruZol;-n07>il=3 zfJ&P-GH?OK5?me3AS*qXcWXsKTN@w9Q@AjTVTRGrH(*MA1ux7^U~oJ8=Yz#hK47f~ zs}V6?s;H>=^mhgZB~U0Te7EZx{%!w@ z&51ack4{5ZEYQmne#PG zRU5>j&2$xwFuxA@pcX_s_P?GKFsYSfOg+S8_^*3BgRx@P6MtF}fv9oTED^1h(@U-A zBV5J=i3c}O7iGO)M|4%%HGLM$3f7m$K*#qUu}ako`&&c7`h_UnlEq= zCNJAuZEZg|u>*FF%Kf^vS%mr~8qh1L)3iECuNJ+940TRN+68tthOE&v-RAgO?I_+! zc{xk>wJG7$j8wUQ>Im{^Syn&!>E5{QJl}eQY`^uufGShxB18Kq9~*vjAkUD3EC%*D zp!YvvhwtP+TzZ=Tzn^uJiL$2V7C5pDe07So>}5?ySg+vbhS)wpL?N2=D*P53(9ZVS zH}H6__u8}>0+Tm`?~^cU<%|l11t3}X77ulk-C_K9AB@$^VCV-t^qTj7FCy~)!RV_6 zY9XlcrSZ_vZ&Sm4@`Lv6vS!H7RGYIP0Q-^i2j-K7vQa<5&lEpK?quwS^eU)0wtz9$ z2Y(Zm2oi5|w!Z|f{(N;y`!8Vt0t3#SOE}J=l~b92K#`@Zr464%0!ZVrQ!c?)_rKdaOc(8l4tvJNolD!MEMj} za0xsDLN-!j;zosk{%i(gqRBqKBpPHBBN0x(aD>Mb3H0okxVvr9rFnrBqrpgDW@`+r z``YSeF30=fJvmTfq?=o-YPf_+HZV(-svk!MNd>s!5?E@%JIT|N%_NzMEcOO zTN{bH3&&G9?a64d5w?1R8S>^qSJB&d693=3wSm5+b!=7{hbm;kL<&r4au4l4QT6kq{xq9F9sQX26K6kf5otuMRb_Fp4q|G zHZElAH|1RPSADJ*R#-Df_VC}CON7ytPfJSt(_osk=ozgXY{5T;HBB^2oxl11ywmHR z&@WG_hKx%fs;MME$}30kGS;rCT*E6e$Mw*Wj|;{4qe|0MQ&s_yuS< z)HP`XIxXzS^3)-wokGZc117^aX`cMyf$_X<91r4n15|ipn1RDAzvl1XtMf0l6wL@h z97u0-RP8{ILt>!70skYgiXQ>h9a3ZWd2A#BHblTGm{MebFL7faZrq)Fpa5ySWM^}_ zGJX%Nd+Ly1RzHuA5t=;^(W~Fxxoy4F3E~m1vrA+||Nlg>S3~iM`v0QXU+n$=OtC-l z1wK1DY>(W$wLLY{QE(mn0ppoCMBq~EkB}Y9%gTWBE3pcc2P;_pFMVf?r>7g2o2-G= zwQq4w^YbOb2K z0CIEq#WC=4>izajz>Yltc*iF3-f)=x1pf377*y54ycRT#Jx~fSik|`FYh}&f21vke z2mip0@vUR?Ep8y&`z=*#W=EQUZ*$#|x z5j)UFTD|3@cnSDk#nLgDs8Lo|lX6B!gnDkjC^+6MiaucIaGLYecEN5%2clFqltX_K5)u${ zARPZ0K$p1{3Q`MCNasd9f>RzJ11$i^EGOi>$bUu#lK-y0{F}+O0x@U3-7t4nqnMaM zkPy(wKZ$HnqWr&5ZwN|& z^mPt&coAd`gL@tF@8BLO(v^?GCMyzKeDfRSv)_{2z_{|(SbpulVDPFt22~|cd>UulN{d`-m1Hu)rQR%1g+q!=|ZW zI|94PDMYq&ArJuKI}@!iaq8O$eI@{S{vx|o4JZM?w)Aap=Xwc64pr=Hs%4EP5d>s( zYhD~54+ZkEZ!mnhZqUE90>!9hEs_Fu8j=|TREK7_73?BW zXErn!HYgGCd3FT7SY7N-uQP`~>uE|i_wtezNS7P0$7ZX*QMDM0X_MB?sR2jZucxhe z*Ib;Vhj^>MEmIQf=`cPkxHtdGW>45mzO5iQ|M7E$NVUDoP#P(%gr@DCqSQ*(UwVYk z=NrboKI4xiQtW+hO||4MqZq9Y2E9Ws3B6cpt{*wz1K`=a{EJF5q~l;!a3BJc@Z`Ns zcmDr{!*2Y)IPCrL6DE&ykzY0s1b`;(3(fEP;fzMOkS4b7cE-$j7^}y>>lXNzs(uFw zJXrd6c;ostP(z%MWPq>lG?m%7iDQ3F($x2oy1HbSn$}1Nn9}&dOc3Kp&OYjKB05}; zkcb~aI-Bt0U)->y;WLjlwUhEYCLgSZy;T6~ualD#lBM5Qe@V#3XZw}WfOZ41Q{FA` z5lpM}y%FO!enG*v7`VN0pw9YUfq zgi_ODT29*a&=OnOdTVOXM%$ODsfjYUm+OBm!GxM2{2bo=kA*mva zUGsak-^zr4+sM#+k$ONmS$?&-i29KPwWvbAg)$a@VitV#09pbTJGcPSZ%?tN`x$1Y zIC5Y%6p;BLKmXG`Nxqs8IfJ@Jx{$ll@gYNNHzefyB*n@@G0?uS`;o6yEE zwTg}KOeT(uiy9G9oTc}4q+~Y(JjzHW6;B_R%W|@MG7=Qhy2|rhkfBhz3V-}qrKVQ# zG#QVsK$w;i#b&F%F3MSa)0$Tbys@&kfBArv0;cHc7Hl4^dqC3=4C_gs})3d=|6Q8aL5w|h%~k2lhmLzU0| zwWEOkST@oCxr%P5o|K3ee3Oo zaTRW>2uOfETg}`gB%vCTOorJEq2~R<_vZlW=xAwu01hxv(DO7km_VnCI}pn0IKDW! zCvG&d(Ur?5%yITO!7y2?C^EOq8jFOQCMFYW4ji^iv8}7*OO7o9N^;k@KlHK2T2 z6MS#O14Y1Du`NAsw{?*co@I2Ak`yMxqXzBIeH)~DxPsKSI-iuPDq>*ml^H$nOjkPi zwOfoLNOE8m3PcN`NSBW^Q|CpxD2dk=w93V?c2&+$`9y_6i&oRI%e0?!i*?FANw~o@ z^ap+NS}KE#3Cd81ov@C%7P^%-9nqeNad+2fPS*NlqBczpvp{X|qRB%#MyFlZv?_k| z?v|?DAce!<*2L0J*ki@R3T|zjre4-H;Gxmo9rAc!-5ZS$qIM|rtNrsG6G28@_xQJ0 zheho{8elSaqKoFO(90PR3Lh*wM#kZ3sy448D}M6ln;B0l!TkbG*8}RoG5}dTz()D% z4}=tOTwTE633OJmO^e7N^ctTQ;LN!-HuKJ88a zy$NkO?KZt_tU^zavajyL+%=)Ea>Euzx97_-r!D>G3-RewRJg}~Q;5@ZY`h?`qA6-3 zz~{SoXTgnbPN`V$#}>3!$;nV;drjJ`f_N@@g~tdkR3OP0bvdxys4GD)7cOE`$tK#T zV}h}TK<=T-A9YWja%biuT7neR4b458ZucTae62q%D3zZDcGBrFm0pvoc2C<}mF9qZ zWeRxjgD5)s*W?FtwMgUFz-ai2Cnh+fCN9xU>gdSI(v+%kkdfO?<~SGTK?q;Sh z=xI;crG)33g1GI*aN`BJWDW(;pI<1)rIvZ{GY`t>+o0Zc*=nR^KX+rQibtbw(c?HM zyb1?+2m=fWkh22Gcm?P2#wm?rh;Iaa@qZYy|A84&B-XU;umdSn4n%IyTk#p1dCI@2 zHy-r_^w4{Vt@J;!Kgh-**c2&6fT_6-jnMwI(N#>%ec+8FeJi42TX03xvbB%w!nO257bMYa?>dXwRo^?NHYq0kfS?Sp$P;-So`n@nn{)%P& zoPSHu+x1@oJE~l^-Mz==TA{?f+%nS`n%Zupd_fi;F|ubiFPa1d+GQguU9|LWc%Q75 zEAbZIZB)3hKcrT(PcSi|sbLH<`f_&Unpi-&E4%#L*C3qwe%LjEp%jmk^(lV8&W?$< zni`4`-4)i1rI@CApOn(&Dk|G)_ujf;g{ktHQB0#(eaait7zmGlDiT4=6>VGNzIXDs zeeR#+^*rqB+M7Q|s9i^AD4`n}JUVmYjC2j}?&=SpZ_wqbT;vRTGY&^kYd{_E zcAn_4vo}hdffWa$3WiukgoBN&*-xUoRT^T2)mFeOK_u=-C@LVL;m8!yW3Ag_xW(@V z;z7h6+6i)Fu<@6dmVW9!4uY8+L@<%gVdyof%;E`K=LiApOY(ev9j$>+jpU}Hg_P!P=sfMUmg=8*Y@O#VB-qakpq5bVi)1E>MbgZ}3j&h30?8?zDLh6TG9o)91Hep7D|;h)bp zKcoSd2WCmhd_WtoW+nw&TvD?Mq@ zfcIqX=g{Z)p%d(>BznjwiZ4s*nz0^6fY_7U8SYDo$wd>+JF+usdn`~D7cBY){(hdD zgK>j0qNrP#t-OO zyJv`ud!V>{x?NXpA0`tKYAt^{M?3#@EWlktOHBb~Bn4Ane^9jWAKD*Rk?-SW6T_;i zxKey;F9Yz1^m{Yw>*?u9Q+R&oMX<(x2HiOFst%EWS`~7wQw7f-a;XXh9Ie{y@GiTb z^Bm^-Oe$BIwbqZm5%VG^cm{J}b;C#Qhn-Lu_>~u;AY6WUt?(Se%5Q&W?3MDf*w`%vtT%id=c2}GMpX1Q?K(VM#Qg~>$(49ZU?@j6bqr)0@{0K59UEZP- zn2l;X?#k${oy9w{Croa<6!H%^jLF(|Yx_gaGQEyVP*EeJO|0fT&6BQoUw}B5yt%F@ zwxgdxSZ&d}TcE^$h+_Teper3|Fo{V|?mcacXPqCzNaobF-R5teX)xc(t}*Oq%WO4jS7?(2R4;Vi;;!P>jV~+2H-MMG+*+twkb(>U~PvyZqzKda>YAIJ z8orzjKVKO+K3C_9j)z5h&U$TnrV*&VH|y+M-^jx>!CL0jw#-a&)hOQ;S`a=B0!_*SF-oHN4Gb-b}lp$E`8Tu~R`R6C111 zN`$4OGRDC%fETxCC_j9S^ME#8Q3ZUt@EM&&+4kN#oQI$(>i+va^7N|IUBJeJI=13Q zXv9x&{_?%)kB=#Q;!r3iuB@+7^w0ADor%o{o(^A8c={|7GD#(I-Tslh=Pb%D8XAgR z(WgzE;p?rxW8j}Ds~G!SXT+%3&8a)=+C!FxJF*;SR&Sh}qU#&}+1|J|dDCU#ez;@r z+~A)4_qVk_e%E8Dz*tqX&A)+nVZmhf?y5Ixvioz9`2aiz4Rjqn8R2Q=z(?Bhm`?Aw z1;gJySe*YWtB;;s9OkMpC?m_#FwGt^T_*Z4*12b~2jDZHk?>CPq2L#(#oX84b#oPP z`ji9h;QezGZyhG=z|;&&t`Tp0^@2v&1&5g|Als~i&WQuB(Nz#zv{Ma z_yeq;nYuC`1!ib5GmE?3Nzt4uL>2FiaV^GdPrhqT2;erkNWysF>`rpcxc#4+Z|RDN0&>7b^-j;o$Xr1&LgMK$;~=T`l;__JC})VZ5Zq=sIgiy z5WITd7ASqAT?BHDaogi8$In{_vDDBbmV^qy$KQhpENA&|5hDckw(q5NKZ{+8-A^jVp8N5 z&aOFo&eZo_TCyJ(0t_P?*fvhstC&G2Z~2w9bg7=~J3E=*NL0dAn20VKvel&gjLLT? zs^iV))AMO^aPJxG@9ea6VwYMr*fHK-Evh`gU(o%|V zgxG2`Z5)2?_=$VaPgenCsjjK&G{OUol^oLY+TJob|(&W6OR^Nz`cx)-D zQ>QtWd+faqi7R5UC9AbD`4%-5?B%C3!U-lH#zY#Qoa86ML_7DHE!fI;%HZEqQa_!V z?fC2K4*sG*q&j)>-$R1Y&AbSE_82FDHf7m$QoWd$6X8LYer~WUCUvGTqqy+i(noWn zR7;j%j@Ieou;a}9aJV1Gkw|MYfHIC(L+2p(ZwNbkgyg!49wp0sjH~v%rWCdi8%JfN zg(0E3y1G1`9QoD6g|T6#k}p%ra0Hjiy%#)quJQi@%jJV;RZ34*`y3A>5p+(PJa~~Y ztDJp>@H|A`^ew?zE9L-i_`!-~Z9Mjey>Wad*ShqbZ-X=l*2qi|BTWkax?MW;wCA^1&8)Wb#dXW9m9bmi@DoNCH=T zu27=qM1OF8G%Hk`1#qjN@OXCwX>25d0vPq zD|(8?foEv6G2h;Z4h!~o50vmGTz%&XGXBl8#Ck7p+b!E`VKsFx-NuPBxU`>{%j+EZ z%1}By{Em-Ss!-~RF}JF;dlj#y7>)VNc;i>?i)L5J!U9YI*yMr#D%q3?*fjigwPZrg znB>G0jMA6`AGw+TNmD6br~Ss7tK)epDJ$Txjb{#zS;Hl?*fU^h?pH_auVQgSZ}d%{ zI>mMT;SR$~0ma!pTpiCAG*fpI-EZQPB3nz8C_#-OqQPeWD#PQys{>`w_nqbEOSXXL z#ZqNQ z&}NLv)mdJe$2f-|| z-d;Jq@w}tAZc^Z`*SSPKlG8g9>eYPW#`!sJqHu!k>b1xFVqKY3EhC3sPnEa(jN79S z%ksqXkp*LPd;V^2wu8?jzEj zHl4Am;*FXuoH$4LlrMrt<{5lv_A{KichCd6;5zYxtZ;W zfL_bXgu^7-Y4%)ihyCl=hA65aXA1Bp2eUu_+fE~ilC3Qi4ElOI6D=K2ZUN)&Ol+{_ zp@Y{AY1*0G#3E9<0ukW_=VXP{2V)yUVfcN9RC57}&ckmq1$>V#w1}NhZw1<~FH5O} zP@~vSjI6C+{n#(5;Acgb(^WGz-b-CIinpNl_ToCgBaXsd9UAT}b3WH$#rx;o))*l9 zx@@T9%je&JXF8u2ka9Kg^d4?due8S13FTUz7-#0?EHZej{tvRaB*lN_m!F>99BVe~ zLIXoh@Q~jfLT9xp7xbx%=vfNBJ?G-c+y$!j@wKa#;|A#)`k~1{qfrxhWrR(BgU{{% zpzJN9vU$=uD*Llu)%;RTl-m{U3jsElTab9Bwxk*hfWEtMl25t{*N=jqRCimLHcG!XxuC`imGx907+nosp z_bnePP~Dwz+Tuz@zhjupNqpeE{l-RHoKz}a5u{Oa0@@Zv^z+93DatSKsUy0I&XVvi zUYN@~*v8?)W)jjSeZ4g5|5oco@&~in7A_J%<68+^j6wia1vXjx^sL}I&V4_(bdx<#vp#K zCD_BgN0jj0Zoy|7WUslWB@zBwL~8mb!fv+k?y2u;Pu1Sa(g{1dC8uCh9>nVa|H3QUn7D(M54$5ZS=w8G{0rd*{wpC4Yb9w|? zQce`|yM`DD!x`((mYTh67{)qIv~_iR#5dkVe6(lb;)(-J;j4QE7cYlF{D91iK%o4S zk?+VL_y!0|c5B4hk z8#bYw_^NVYd;X29k7`V81eT|Rb8>fe&S#hS=jI_fzlqpC5QNDFUL7lM3eR{=jTl%E zC_T?D*>Gl<2^h#Z5lJ+!f>y=LGy6mD2vt9W$C~cFm%(ZAlfs_ItKtn+icpBHmdu5KGr=EL~~x>a$iqAIhoA**{8d; z#S_NF78;eF1=v3I{!>$0KdZtyws=}cpPV`l+V!6&VW5>Fl<@H;zqEM2KXKWk=SL!% zq9e(tgw}~i1fus&sky#VkNj+6##y3njy?*}cqla#e{BC69ql_@679M~{H4AQMuj1q zw@1@cvPqObGam!x^g~HJJR*CD2@H z5`MRUWCiXdj{_GOAOrld+qppiyo!j7aUejaEeu*tP<8DG6Jk%XPCml3KZG(ZfT$iE zoSdj#wgO3r`*>=48p`ki%}^a(53#R+81J}#c{4M!xDyYEivlpG>mUk9h-Q2O5pKUu*PpNd`J31xN)ic2(KmO-MIyfr1(x1oQhRDV$W-JkFLac( zo(%Lr=n!|lyvixj90!|5ihA*rR>DEfin1;a#gr5~-tYxk4-1DUsTKSx#-Tis1ZPb!PPyRfyjh2{Dh}Kb#w<<9LIXDr{65P3S z{AGAA+xI(auM$yWD%!)ixUWk$xraD(y8AjD3sW77OI5{)HebD_zIjCV`G2yJ2|KR4 zP0QOy0zt>FaN#XBd$E9rNA?sx$(En*GEL)=wg{NCK0+z^A#{_DPWHh&@nbxD9BS57 z(9c2qy>D~5xVde?i~RtSpb?~R-Xb&$t|WTFV_4ZfAc}D)0-97?%9U+YKRmFeB~)&! zN_*uk1j{92=KhN`Wgw;&d6LOq{M0&f{R$}(T_8MNZ1v+pq~P#^!7F2XVRu}fxgb*<&~`_VB-5QMfH&b`he(4FRvM{^wm?fs93b4qdM6U3 z9RM9S3>gcxff+WHZY znlwno3I1Cwg|v>p0f(#+=Y^P#5KlUgH-7=hMy3|PE?^TqxbGMo0%%ub%Rb^HK0R1J zazO8b){2v(qa_fS6??DVz8!SQyOl`imbN$~Nm6Zb5RdBICo zSNDcCU%p~BT0{5?N%&Ki18EWF{>U_Z8`KwP{NMRp<7c%8l_x6}>KKH#@J$U!obH}$ z3Y(HDJ{Z&AqPDGQs+oMgsHf>{C_y`6>iY=x26lhW_?CqS`Tg!0YH7CJpFj)g3($I0 z$S0qC>1=eaWFj8*BmLxwBQ*xr^?e7%jOH9>IYm28jQnMWqE8#$td2H+?XD~7T@}18 z`fjhw5*nc+#G*go#h?^^PcE`r?tE8OWj7o5EK81+@>_b@?X6cfYrlWX@|#K!VhW3h z)WVhXHu%^CY4)NZNgFUgP1pr$9fbIXA)Rjb`D;R8IO0ai`iM2VjHcDUEem*fD*-3e zN#jQE%YT0nx)24?=Eu{BCIXMkA9(19Bxe5@%PN~MOQhrvN7P=>$NEzwdx4|odnxEJ z_AOCz&+$YG`R?i08R-+i4~)SD&=klEQq(i}@xcyBl^o#`Z?%^S!IXM{ks~hWY_w^7I$3*Xt5E*z7kb_QFrD;xDgkqw$ z{m;hu24XQoGOZ2E$fA3nbXz)lRc3WVOR9Wak`libRt=fUQybWHVRk`~HUQW>h?E>8 z{~kW^Fa{9t^HiCI2-_3soddhL?%nX|(*fLMc!+FWRyO2Z<0b3uwjBY)5nS2wgZd60 z>Fn&R7Yt%uGYvzQE=2N%0?m<^;CnrQO!}>LDS#xArt%qO=iiSW$ciXA`a@*Av?;1_ zj4Y?TygV`jZ}X~2QJNh63F2^vjRp!(@f@+Xc6P`syv$e4}iFUxax!p5P1nByk0&Wb;ok z@{e!z>Hb9>#pIE2823IIwIxC6za5UxJ}J-0y{*62sJ-ja=ctbMZ-It5D(xF49ge(k9|}UuI_F-BDD;$X9-D4}=5qv;pJ#=5ldqY#s+lhJKFOO8F&1cebF=FCh}y zzCc@GZa%!>n-feko8=y37Fb1&pq1Op%7;kR49-MDzr8Vg&cUvQT; zW*BgDbI)Y0{Mf#!a^vUEpRH(w8e@uziX*zwX?oa8OUN)!mSn)z;NDg%%;juDuCO4C z(0o037^A?vE1{63_{U~%x#@cLc#&i~|5JG;cCEK7KPXL1OlcPhQ44WPtbfW3y=sRCIfe+Je>AmvgR|a0+WIRi181BC*p$PW|-^wunL4E zzsWqnw|*R(LXS^>X^uBZ!i!p5oy{XxB2Y;-4W=fDN)=WZ7=PF~J}D7K3SW>b$(}e} zV`bDDAp6pypVvv#-PwQ5-cIPOEGKT=c!epEmfN}%>c$48!_WDOBf1%65j;# z;$E`QEf;wr-|!aVvMSo>UQC&o7=gE2i7-iB%5n4N(jI3c{RLSKx!F50Q(wBJhU-k0 zY@eqV$i#aC=drhOC`awxAGK_3VM$8(OI4ea^wvA=p^HXOF7&a-@pFXP&2zxM%r-@)yL1G+WF{y#61;ktK11@s}nL$p5 z01hI|O%IIk4Iz(qwChq`u)#95)s)18%oc~<=Sn^ioqx}sG)C=KIK3a-8*UASRc$m& z@-?!T2Rq6u01AQo3P1*y_73_SADQ^z2FFVT3uQ0}8lGGrM+D2RF!JT}<(5u_?EVeh zVWVWx58>|>Og}!;i+P3tYg3@1dHRP(xMU5$_^$On@n{ zQR$PF=|#OwqKkRGdwCe)@SF5-K4&XMaS{c)JMM&ukbM4=|fWyAd0s)Quo@_G?<@dQT1nx(GX^$ zJZmK6F%&hX*mZMN!SVX#$+S+EkXlB~D*qN&y=1qk(EAia-5q!wKZUE0`1be==*nG; z)EtXO3%Rdo_^|jCE^y-(PBh*9>y6y=*Pf8^{4uw$?0=VWFrdQATfx(7yLolAha$&$ z>0nj;6-7z*G%t38Kjl}40t8^C2-_(<{z*BSP_RCjl1^Rtx@>0NPkmeZ;VC1A(nq2l z1(#JBx%f!iXA$P+9e+@q`=V}z<=}#5adLWk+Y39Kh{CR!m*2V%8>WhZ4EX_AhV+j= z{|`tp?7twzp<yz}~xp&X7MAFx8qH-1humR);F)0E-g*;dhJ{kpiTL1p` z0fGF18c9HsY}{|o+X^s^@K8B|JogJM4-^qt*9Ruhf80reKVO`8kf#e<1E!(DK716tSXC(Q(A_>U{vj;&$N|myur$HX?&i%Pa4M zeWNR-z^zXoe5eDH4~Ox8;iiDRqi#=lw) zjr7V%7t<_Qzt?Jn%R)_Xr&`6X;ks3WDL+lc>BVhr47d=NE+Q%OH7l9rHQdC->BL&b zJnMH~++b}(8?52wcbpOHaf#)RVJ|)23*XOPIv$8sSHNbzw}iH6zk9Ci$jza%UYCR+ z_Qoof1?#9$$eH%=ch4|OU|Z4UgMC5`D32iJ?d6IZ>3SE2@NtC+YJyX;LygW~KZZue z?FaYV(BE^4=`u|h5Pc9}B8wXem(QtLpSzdzH8?Gw)PcV+biQK1xmd$1c}btHPycsf@Bji(G9W(g2{J7T5lC?$ z#zn?a|Ff#`+>c`Q)8adXZ4{D_1kz?icPJnrfVefoDyz-`0EC*u7i80js6r8yC0zS+ z{2QkF`h9RT{V+a02rZNbQ{=5Y{C6-&C18sU@H3Bd&~o_nPg~ej{~N#hcRe=G6NZuW zVE+pQFBC?nT!x-21#Av~@k~PoJ~c8$4q#zp9;r2V$Vg3{3x9b9Yn`^f{*1FHhdHty z13q&AqrZq0zhOvw4Y*3=+Pv}MKV#6}$7)NsQ`O>UxmNjwu;0QOpw^#{|Z@K$|5hx{`P8_kQ z*W6LKFTF>t_4a3f|7O|UAxH>eu$S}c_*dIx;UG}^8xLC{s0#DCK|`Bc^BJEtqde=@ zx7Mi}M$t0{eZ#2KnJH+r9BXkVR^5lh6p+`G*)=s0tHU8Q~Pb+zD&DIv68R+C@o zO99v;0jW7pE1shBd=|B|U2C`=%fw|WGeu<3r`a$(Q;2@l@x>~1a2(~XB948;an{y2 z(4#FNS`vQhIDyZqRvWBcWeroGD?rS_NAm*7%YsE{OZe^oZ`9CVuu>Wo#*eSgL$97Q zTx=>M2Lmknhhc1LslR#|E{Q-?TWQwT3?h7_1_IRy=}tJSx4;|}%HgqCjiFeD6kTygbYCmvC&39 ze7T3^xl|8?K|S258AP(xkl-i)Zy`Hb2(2Dy_mHmy# zW?x;E}rL=P5N_ zJLJQMV-!$`DKOCC2?Id>mwl3`Dld`B5zv#!fEcU}Z=f#n61G0ZYXeYDhuNj9)VENm zfq#hsy%oTS$kZ7!4i9yh=w~E1kB6krWeAcK9`M;M<;s`Q;49n4M>VoMHkXr69=(H| z>AdA*MH}`W=DC!%uREzmtJldhPKP~edXhuLG%->0B3aOK|0I~nW`dwCv6doMedt>+ ztzSlY@B&Mdcx`PRN125BLT1#YsoE{`a&j~dB62e4;pG5KwOiM%g&e!dI(J+GmOG** zU70z~y(m}j9qmeL6t_rg32)*ZqME3cL5jeM5)eJ)<6xP#ullE7|RU9 zfT4KQ&OQjrifrmWUfdV_2Kfk&)oEComV-xwkOh*8y5~=D1h^{wGy`S*=q9ux7Jr0Ph>ulND7)4cOiC#A{$Ab|5@NG0B_DbM(1@hxICYC`X`+3uf0A|3h8Igz`5m}GjK;%~< zE2*?Z)sK6Zv9vdbsLNEA)WQ`OFa2vBlZc3;( za0D@p;5HWXY2G=u*4hrTX^`%F+9Ppe5XXRCfdDH;A*DL2@={KkRyzlS_@55hg8Hj? zHi@Qc4n3pAj#q7Ewb$}*$CK=Ir?X>96xO08z58v(MpXToLfAnp;Nf}f=l00@nbh_K zo=e>L$u)At@Uyeu$ME$PIAEUpv`gN(Oq=8=B`1}9Z{yImJcn^DCd#<&CQJCtiR>ew zXJf*jik__sw8C5`E>Fm^_VC&WvTDWx2TWi$&T^;x7g~M zRcIL=!YKmD6AUaTP`xpD6F#C~a6$ws#fx1wU?dtHUhsz8@Uj~HriZPJA$9EWxAo)h zOzRE(%qpsjhETDVn$~X2PIgl(zi2U98Co~B2&Du!EV84NG{ui$C(7?*tgpnX8i|N( zaI1G|{8P@4Z4R9hS;8diLMN(il7|Dc{o7YWs5qx_OO<%5%G?|SuJU@L`4uC*nBSc; z=LO@mE54rUh|tk_@QeuQT^GOLZ{CMvT5bM!6s9V2Y}M}k=@C1X!t&pqZReRTgjUZa zB92!s-HHk5`8A7P&+jg;?KR5zT;ZKQ%ZnM=V<)WzcNe4lT|2?RmYJG|&-CUhbrf*c zsV72%sL?nGcV&cB$Vm%#9iHrzFoiR)4LjE?zdS-drPE!H&=Dx=F3wNi%gg=(Osa6` zX)goxQmEn88$~(QwY?@*Ymto;Pu_@R4^*>4oWK3|leQztM|=PjrmZ z(r855dDIxXId6=&Jq%tl&WQAPPVRTB3VpsA#BXwA`m(Ud^26kwN}XeFCEfSUrHk{V ze*#||+in`QwuvGR&MU8&Nd=pBL&S+nhU}>2wddYQ7B;%w+#mXMmqV50Vm9UF6qipN zmb(%4mud`QS2-d^<4}}Ww8Bz_$AT@AT(|hC0Km2$+{zCom@UaNQb%p%(I+=zL9akp z)Y!QhU_6e^=}QjQOJE@xCgxVYVe8%27n&TAj1i3aj^%q+CY*n@65%FS#1+7pNFp?h zJ$cz>*l;ydX>aF*A9fZdBKlf!fR^C)Q-#PSLg!+-5H3s|Jj>?jW4Do-heU1W1OBGI zoE=K=4U*o~$61~Utu)fqcax%=2oLdZAhtOa&%O8Aqu9}B?d5O;Wr5?*sHslmf>gea zR^Qsn(st6=V)nC=nYHSk_SE}}QPhiw|HVxmJVRhcrc^fp^ra40;q#HC_qbO4a}>2# zwsy6(f~ctCL=}p7hVW34B$ju(Urxr>Pnmyc)ITTd7`@vqbw^SexWmeKZq6PCchUK8 z#j})Hcj~B;p`*TLNzop{jD5=3lN6N&B-@nSzQKJr@i|B7+TgIZqM~It^t|9=$x@nR zH>Q|levz_^n}U=h??o{i{x0tj-xFmi4nvt0_H)}S;}GySSeAu{lI^hv6N@A6X*#o; zpaC`EPPAv(J&=E?|CDVQc=R{p)i$2vxX^2+m=aLdy)ShO{CiyMt**42PON`VRYtT@cTqHtX=+xYk~h+x(oDAVvgRe?~Md)ORIeyt^6Ij7h(C)ZbN*)Jjl zT_Hk=q@hHqFN86kxo?<`sfvEF$_ z?ipIGcc!Y_zvv~Is$pu`@STb6)oIM*?6u1O#>He08DM`+NF1wkYq`Xtf-plH&G1_I zk8kz_ANEsP`Xk;rwvlPw@d;Up;^W7(QgF4P9W?gSF6vyWJ(s=kJ6tHySOnofeM{C3 zHZ!GgMsXq9LB%Jfy|Cgmol!4b0~iA~a1E_Y)W*$Y%qzy_j5zD8p{{WnlMhONprt}= zH5*M!HsE#mDsY8zrBWzdj;oZJN%fXpl6;mq{qKfd{9P{Dcz{_}!loJpSF(wwf~p#W z+lK=foQQvoP|wJ2t)fD}7ZK4f%m#tV3Jj1V z^$QgDb9k&Hu&;|NFME=cwnjFDN}#%$%dpMbRO<_hDPs_q*{i zvr>tA%@Ae&%z8Deo`3T$M`uNiCdGgk!SLpnbbkgXD)H7=+mbV_-KFSK9EQAoPraUA z-VKekw^q_oEi^l{vSxFkKtV-8QBjc7k15SBeTnV8jakOKIe5$Q#0;L{jVD*5Z7(XR zW}uWUwh}o0qqe=D@`A~X@+MpR)#D}5-&mLRHtQ;y&A%H*xE^ zpXf47ebbjqax05}F`{Q|t=2^o?!ecE7SSE{afg-2t;F76DW)0YDF;SJZEfpr@JO7W zVVv;l?4MT}DB-o_$$U{u9oG$l(7THihdhN!dVix3VI*a| z95!s?TnomI&|;-D=ouT`m*vKB+;XEGd0&?M`(2}u{Ibc$@Le{_{NzXdfsg;Oq8B={ zH)V|mncY($&6sU-IOL7yo6XYXb5u6KP>7IkD5Q1)Uv8P({p>E?`%i@D_MGlqxu1|m znBT2vyo}egqgvd;%J=UyompR(QUA~KkazX9`JC-99E-Yum8dc1Ml=(M;^m{81++}Z z#Mbelv#g?_VFy!6gRZh3pQO;`91k)CVH7=E=`~TZHEwkUjsKV57aacA!{r27&(ti2 zet3%O`rVx0!6)$?p)_!NJL_i4ORCtN>u6FJbE79|x>LZ>jmhw?8-7Cw-7Q=-BKeQW z)vFgH*jg$oatb{R;OFgSwuzDWMy!%sOW^f}j*N_wV5tTD=hg08l&EYz6Av{X&*gv$ zcRiiCn9Zio&+R4aq7HeF=2uW_MuX}HGL_<0Ah{d94Kw+XTwG=m(Ou- z$E%CA8+C>!uM_*$#7#QRu=SkJKD(65s_6S+6@CLptXMf`APrOIU8XHTq8ns{^b%8B zA?L#*erGNV6IYR5C{ct|Mbjf?$K(yI8g3{BF=!?eW1RWfIP06ZBdEK7KMSGr59tK9 z$UPM?HA#0N+!`khYHZuMnSnA?=@@srCV||nH1;d@9ih(-d(o(!|DKqZy|Wbhvxm1k z?^2wU;Il)IiAiZcn%3>sv^w{-9lTqR zljG;-mqo8dgbu-?yH7_eI`bPEBtKO{e8`yW)nlkBL4^?+o_h?1Af86pn16vrOSgSp z5=@c89#VyM%3u4pECJHXgmJqr>l$sCG=oykhQ{x>y z7W45Ag>WS=knwo|z$56tWBfK~PaJYtp?PXuwp?Xg6K-*_Wu%@V^lUO;xenrBNfoWY z_Q}&InE4ShRX3|m20_5`}k$@zkEBZ5{rWY^w>ySr40I(1m#hoxu`` zW{Ugz_qc92t}-ndc~M4u!|V!ugS~#I?o*lkc9fZ&3EIo?33VLFs`($}yt;bR*h*C? z-Q-ICjy?wHDO0_$O15L+@+%5Ph%JfCos-0~*M+n*&n8s3lXQh~I8iy*Id?hkTC7#& zkDxxVr{XOA#S@oqG3g8-7od z=Lp)|zNe(YzUPJKzkkgbjux~<>>P~fZh;mmk+>m}ZX*{{w#&aoi7}b@KiZg=>PYt)h zufl@2Ov^d1lO78`|G(>yU{miP*T080_}ILyGp5>DZAV~H{h|yWl>+;q`)0xb3Gq_S zYYHRUKGp$+)x_t45TTQMAv5!x&44oahMY=S!1&O1C~D`GFF3H_rs#$^QvS@3Naz

dwtbz8yz+lR|QF zzT2Y00mTnh-es#PaNM^Z`-fG@eW3zYyS`6T;J}SE8zLq zd3moZI;GEuBjJaDU*%q10pRc|D=T68ClXA{MC534#x^2=G?Uz$GC?v95}nF96Ahd` z@Jk`_&A?J2G|I^Bws^=8ja<9f3vk=3bD6)5xZA*0OC{_~3eG!3lUwlq{Tno_#EV@` zAw=t4T8e9u`a!02-pb#2hnHcW4ef*g~F_Pe;xk6&QCMTEzfC!trb0X&IEbaF%9 z+qh*Y|I2G%mXj0U{3lA2vP$pPb+^@^(GB5*TT0JWIiT)bcb1LowR6_Lgl&Rx-JZ>U zpObNE%t#|yP5&C)VJG&l8+En^Fwc z%%xgAYYeL0XbB2=i6dVgwKRikAY`l;>HH^0DRO1h`6|EjT0zV7k$HKU8NhNT3yHG`Ygll!NkDJxhsJg_E$J@ zj&7-suCpi-Fcc=7eSsZHU>9!=JpXfrAQL#%0j%QDC}skO*`KTvwWtLjSEZJch={itn@r&wz1z zpm1BjzWr>e!Fy=%oSj3}P!_Nohd)0)BE@aE)E@+F;o{-J^+gEPT_)sl2OjWcn_1%8E$m)uMy^H4_JG+FWj~`S)+g2M{fEJ3 z5AFo`9qAdY&W=AC+y6Iah=Qbu!`7(&3V_{tL|2NG&wgoj$ zJCA7fU_u?za6R51V8X@)fJv+{@Q_Z!(oijCJM@A{-@xDizFMK5#t3^0Uq-L(1iT*d ze&Df%is%XifqX$)g799o0s{jVtkJumnT+s*AltBpJ2*Kd*&$?2YF6_lC>V zUg9e)ADjR_0ksSWK~4oJD$=i6>V%6^^EtgVkjrQ^BCeL8y(QRlf$sy6-!5I1m6ndF z4+{oL(Q+c&8KwCb zK9NE!GO;9@q}R)|gyjdN@d6@h400qhm@PMss*JurK|94a;9wVKtZ&q|dGjrq^_X6S z<@{re5^so$aPuAF&z_%jT2Bbpz&2zg7;(EZWNY=+*J*KTPhz{+Ua$I&n|HgPFmr2S zREZn!zg-e=G1@&A)0nkx!txy1`Z(dC-L*gK9D8?%=N62tx3-TjoXWeZ-Bl5i<4jW! ztQ8G&B)qy5vt=O{H!KU#a-9~an*W(|YWv&4-8uDS?BNew^gkc=4FGLJCTsfRC*#)Q}P8Y-o0-p}o4QY@zb0;u$kVHBL&gm+Rvt55l&_qnKcSGj@-4d*xNDwH> zD7ZDC=TrkxnXUf2!wAd@sAzrQ7$`OmV4>!->_S11I=2oHDA+^aev*WK5TRLM|Ly

PPh4mll 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%0D%)4R(^doNn(` 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 MBMnaKPhIo>0jtU(g#Z8m literal 0 HcmV?d00001 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/summary.md b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/summary.md new file mode 100644 index 00000000..a11c2c65 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-38-33/summary.md @@ -0,0 +1,11 @@ + +# CACE Summary for CML_divider + +**netlist source**: schematic + +| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | +| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | +| Frequency | ngspice | frequency | 4.3 GHz | 4.722 GHz | 5.0 GHz | 4.722 GHz | 5.2 GHz | 4.722 GHz | Pass ✅ | +| Amplitude | ngspice | amplitude | 0.2 V | 0.648 V | 0.4 V | 0.771 V | 0.6 V | 0.860 V | Fail ❌ | +| Voltage swing | ngspice | voltage_swing | 0.4 V | 1.295 V | 0.8 V | 1.543 V | 1.2 V | 1.720 V | Fail ❌ | + diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/CML_core_tb.sch new file mode 100644 index 00000000..48f6f0bb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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 {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=CACE\{vdd\} savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/CML_core_tb.sch new file mode 100644 index 00000000..3c8ccdf1 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/CML_core_tb_0.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/CML_core_tb_0.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/CML_core_tb_0.data new file mode 100644 index 00000000..6e5c755c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/CML_core_tb_0.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.952325246460e-01 + 1.728000000000e-10 -6.043942197180e-02 + 1.828000000000e-10 1.817064006720e-01 + 1.928000000000e-10 3.985392356515e-01 + 2.028000000000e-10 5.562505249699e-01 + 2.128000000000e-10 6.572874178466e-01 + 2.228000000000e-10 7.087352858161e-01 + 2.328000000000e-10 7.029522511861e-01 + 2.428000000000e-10 6.344368312078e-01 + 2.528000000000e-10 5.013241237787e-01 + 2.628000000000e-10 3.030080742176e-01 + 2.728000000000e-10 6.578821975767e-02 + 2.828000000000e-10 -1.781586778972e-01 + 2.928000000000e-10 -3.964040373443e-01 + 3.028000000000e-10 -5.555461653242e-01 + 3.128000000000e-10 -6.571022283471e-01 + 3.228000000000e-10 -7.092808909864e-01 + 3.328000000000e-10 -7.040843150938e-01 + 3.428000000000e-10 -6.362469325195e-01 + 3.528000000000e-10 -5.032364212786e-01 + 3.628000000000e-10 -3.051350358226e-01 + 3.728000000000e-10 -6.762904380973e-02 + 3.828000000000e-10 1.763878132349e-01 + 3.928000000000e-10 3.951284969670e-01 + 4.028000000000e-10 5.545978983505e-01 + 4.128000000000e-10 6.566315830069e-01 + 4.228000000000e-10 7.089962487465e-01 + 4.328000000000e-10 7.042633111532e-01 + 4.428000000000e-10 6.365365170049e-01 + 4.528000000000e-10 5.037912579488e-01 + 4.628000000000e-10 3.056253251435e-01 + 4.728000000000e-10 6.823087043489e-02 + 4.828000000000e-10 -1.759620590786e-01 + 4.928000000000e-10 -3.946766675460e-01 + 5.028000000000e-10 -5.543918551335e-01 + 5.128000000000e-10 -6.564106038653e-01 + 5.228000000000e-10 -7.089804674794e-01 + 5.328000000000e-10 -7.042284637667e-01 + 5.428000000000e-10 -6.366831677063e-01 + 5.528000000000e-10 -5.038654128054e-01 + 5.628000000000e-10 -3.058301627321e-01 + 5.728000000000e-10 -6.832081314378e-02 + 5.828000000000e-10 1.757744687450e-01 + 5.928000000000e-10 3.946207346164e-01 + 6.028000000000e-10 5.542681653143e-01 + 6.128000000000e-10 6.564162326939e-01 + 6.228000000000e-10 7.089102158365e-01 + 6.328000000000e-10 7.042850183822e-01 + 6.428000000000e-10 6.366586213363e-01 + 6.528000000000e-10 5.039505543903e-01 + 6.628000000000e-10 3.058219717524e-01 + 6.728000000000e-10 6.840961740524e-02 + 6.828000000000e-10 -1.757862033444e-01 + 6.928000000000e-10 -3.945467987447e-01 + 7.028000000000e-10 -5.542929102277e-01 + 7.128000000000e-10 -6.563603422698e-01 + 7.228000000000e-10 -7.089481650220e-01 + 7.328000000000e-10 -7.042424683005e-01 + 7.428000000000e-10 -6.367078290897e-01 + 7.528000000000e-10 -5.039165471509e-01 + 7.628000000000e-10 -3.058753018579e-01 + 7.728000000000e-10 -6.837707225292e-02 + 7.828000000000e-10 1.757345833407e-01 + 7.928000000000e-10 3.945785215449e-01 + 8.028000000000e-10 5.542482652542e-01 + 8.128000000000e-10 6.563959408481e-01 + 8.228000000000e-10 7.089082113076e-01 + 8.328000000000e-10 7.042817797830e-01 + 8.428000000000e-10 6.366719399828e-01 + 8.528000000000e-10 5.039573608246e-01 + 8.628000000000e-10 3.058408732486e-01 + 8.728000000000e-10 6.841772818469e-02 + 8.828000000000e-10 -1.757686495942e-01 + 8.928000000000e-10 -3.945419964750e-01 + 9.028000000000e-10 -5.542809328797e-01 + 9.128000000000e-10 -6.563614885531e-01 + 9.228000000000e-10 -7.089411806967e-01 + 9.328000000000e-10 -7.042479976407e-01 + 9.428000000000e-10 -6.367051444468e-01 + 9.528000000000e-10 -5.039245834310e-01 + 9.628000000000e-10 -3.058742220339e-01 + 9.728000000000e-10 -6.838526492007e-02 + 9.828000000000e-10 1.757358039920e-01 + 9.928000000000e-10 3.945718167364e-01 + 1.000000000000e-09 5.155910006549e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/conditions.yaml new file mode 100644 index 00000000..61941c26 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 0 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_00 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/CML_core_tb.sch new file mode 100644 index 00000000..17574ff5 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/CML_core_tb_1.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/CML_core_tb_1.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/CML_core_tb_1.data new file mode 100644 index 00000000..94a2849c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/CML_core_tb_1.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.647956442563e-01 + 1.728000000000e-10 -3.672466403620e-02 + 1.828000000000e-10 1.978055322165e-01 + 1.928000000000e-10 4.056017943518e-01 + 2.028000000000e-10 5.547344088879e-01 + 2.128000000000e-10 6.487490848065e-01 + 2.228000000000e-10 6.923653634957e-01 + 2.328000000000e-10 6.780886353961e-01 + 2.428000000000e-10 6.039598047192e-01 + 2.528000000000e-10 4.698168410475e-01 + 2.628000000000e-10 2.751260896566e-01 + 2.728000000000e-10 4.430157580526e-02 + 2.828000000000e-10 -1.925038311834e-01 + 2.928000000000e-10 -4.023301580756e-01 + 3.028000000000e-10 -5.533152551340e-01 + 3.128000000000e-10 -6.481954476962e-01 + 3.228000000000e-10 -6.930655672739e-01 + 3.328000000000e-10 -6.800540209913e-01 + 3.428000000000e-10 -6.070129146880e-01 + 3.528000000000e-10 -4.732295235615e-01 + 3.628000000000e-10 -2.788311309623e-01 + 3.728000000000e-10 -4.769207273318e-02 + 3.828000000000e-10 1.893739393663e-01 + 3.928000000000e-10 3.999895682405e-01 + 4.028000000000e-10 5.516914161753e-01 + 4.128000000000e-10 6.473194453459e-01 + 4.228000000000e-10 6.926967113745e-01 + 4.328000000000e-10 6.804409619078e-01 + 4.428000000000e-10 6.077344291363e-01 + 4.528000000000e-10 4.743209278754e-01 + 4.628000000000e-10 2.799315218230e-01 + 4.728000000000e-10 4.887682675205e-02 + 4.828000000000e-10 -1.884058832182e-01 + 4.928000000000e-10 -3.991237321070e-01 + 5.028000000000e-10 -5.511979674959e-01 + 5.128000000000e-10 -6.469402879887e-01 + 5.228000000000e-10 -6.926225993557e-01 + 5.328000000000e-10 -6.804805060919e-01 + 5.428000000000e-10 -6.080204415279e-01 + 5.528000000000e-10 -4.745961817340e-01 + 5.628000000000e-10 -2.803459413605e-01 + 5.728000000000e-10 -4.918721233066e-02 + 5.828000000000e-10 1.880320213273e-01 + 5.928000000000e-10 3.989072784961e-01 + 6.028000000000e-10 5.509784832100e-01 + 6.128000000000e-10 6.468776696433e-01 + 6.228000000000e-10 6.925382949500e-01 + 6.328000000000e-10 6.805520167761e-01 + 6.428000000000e-10 6.080522625696e-01 + 6.528000000000e-10 4.747422384222e-01 + 6.628000000000e-10 2.804194075907e-01 + 6.728000000000e-10 4.934414267879e-02 + 6.828000000000e-10 -1.879699706397e-01 + 6.928000000000e-10 -3.987854446736e-01 + 7.028000000000e-10 -5.509613139230e-01 + 7.128000000000e-10 -6.468062697707e-01 + 7.228000000000e-10 -6.925630874809e-01 + 7.328000000000e-10 -6.805223964692e-01 + 7.428000000000e-10 -6.081132322697e-01 + 7.528000000000e-10 -4.747366406660e-01 + 7.628000000000e-10 -2.804933490724e-01 + 7.728000000000e-10 -4.934235519722e-02 + 7.828000000000e-10 1.879006367827e-01 + 7.928000000000e-10 3.987938070562e-01 + 8.028000000000e-10 5.509093463144e-01 + 8.128000000000e-10 6.468293959909e-01 + 8.228000000000e-10 6.925252291894e-01 + 8.328000000000e-10 6.805590879185e-01 + 8.428000000000e-10 6.080875904937e-01 + 8.528000000000e-10 4.747803907956e-01 + 8.628000000000e-10 2.804721530083e-01 + 8.728000000000e-10 4.938687520288e-02 + 8.828000000000e-10 -1.879222775604e-01 + 8.928000000000e-10 -3.987554695640e-01 + 9.028000000000e-10 -5.509333914335e-01 + 9.128000000000e-10 -6.467969990881e-01 + 9.228000000000e-10 -6.925530415231e-01 + 9.328000000000e-10 -6.805304150604e-01 + 9.428000000000e-10 -6.081187600045e-01 + 9.528000000000e-10 -4.747542418837e-01 + 9.628000000000e-10 -2.805045225794e-01 + 9.728000000000e-10 -4.936125388638e-02 + 9.828000000000e-10 1.878908530872e-01 + 9.928000000000e-10 3.987795364060e-01 + 1.000000000000e-09 5.142017254263e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/conditions.yaml new file mode 100644 index 00000000..eee3a944 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 1 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_01 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/CML_core_tb.sch new file mode 100644 index 00000000..e5054b24 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/CML_core_tb_2.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/CML_core_tb_2.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/CML_core_tb_2.data new file mode 100644 index 00000000..cdbb156b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/CML_core_tb_2.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -3.226907107526e-01 + 1.728000000000e-10 -8.539968284410e-02 + 1.828000000000e-10 1.614480909662e-01 + 1.928000000000e-10 3.869191924745e-01 + 2.028000000000e-10 5.540483396157e-01 + 2.128000000000e-10 6.620167995175e-01 + 2.228000000000e-10 7.202634748901e-01 + 2.328000000000e-10 7.212523007105e-01 + 2.428000000000e-10 6.566979396260e-01 + 2.528000000000e-10 5.250303609426e-01 + 2.628000000000e-10 3.265092852166e-01 + 2.728000000000e-10 8.707604756770e-02 + 2.828000000000e-10 -1.611600424348e-01 + 2.928000000000e-10 -3.873238626333e-01 + 3.028000000000e-10 -5.550746884823e-01 + 3.128000000000e-10 -6.629366269634e-01 + 3.228000000000e-10 -7.212894794449e-01 + 3.328000000000e-10 -7.220878341254e-01 + 3.428000000000e-10 -6.576651735802e-01 + 3.528000000000e-10 -5.257535323793e-01 + 3.628000000000e-10 -3.273054874384e-01 + 3.728000000000e-10 -8.759901468451e-02 + 3.828000000000e-10 1.605580394287e-01 + 3.928000000000e-10 3.869863823107e-01 + 4.028000000000e-10 5.547303069787e-01 + 4.128000000000e-10 6.628461833305e-01 + 4.228000000000e-10 7.211466820779e-01 + 4.328000000000e-10 7.221995653822e-01 + 4.428000000000e-10 6.577128147927e-01 + 4.528000000000e-10 5.259884868760e-01 + 4.628000000000e-10 3.274163471898e-01 + 4.728000000000e-10 8.784541550780e-02 + 4.828000000000e-10 -1.604682108624e-01 + 4.928000000000e-10 -3.867888973241e-01 + 5.028000000000e-10 -5.547066546217e-01 + 5.128000000000e-10 -6.627253094524e-01 + 5.228000000000e-10 -7.211826888209e-01 + 5.328000000000e-10 -7.221369141817e-01 + 5.428000000000e-10 -6.577994031943e-01 + 5.528000000000e-10 -5.259620192587e-01 + 5.628000000000e-10 -3.275201865204e-01 + 5.728000000000e-10 -8.782404636233e-02 + 5.828000000000e-10 1.603689538405e-01 + 5.928000000000e-10 3.868153343854e-01 + 6.028000000000e-10 5.546284247412e-01 + 6.128000000000e-10 6.627691182366e-01 + 6.228000000000e-10 7.211205707397e-01 + 6.328000000000e-10 7.221945096033e-01 + 6.428000000000e-10 6.577508134366e-01 + 6.528000000000e-10 5.260261908485e-01 + 6.628000000000e-10 3.274760111912e-01 + 6.728000000000e-10 8.788851273295e-02 + 6.828000000000e-10 -1.604138329037e-01 + 6.928000000000e-10 -3.867579820075e-01 + 7.028000000000e-10 -5.546733587088e-01 + 7.128000000000e-10 -6.627166397254e-01 + 7.228000000000e-10 -7.211676696649e-01 + 7.328000000000e-10 -7.221448613305e-01 + 7.428000000000e-10 -6.577993970261e-01 + 7.528000000000e-10 -5.259796511606e-01 + 7.628000000000e-10 -3.275252420812e-01 + 7.728000000000e-10 -8.784270745333e-02 + 7.828000000000e-10 1.603648729372e-01 + 7.928000000000e-10 3.868003178892e-01 + 8.028000000000e-10 5.546284703905e-01 + 8.128000000000e-10 6.627594909397e-01 + 8.228000000000e-10 7.211247368625e-01 + 8.328000000000e-10 7.221884517678e-01 + 8.428000000000e-10 6.577581123739e-01 + 8.528000000000e-10 5.260226393584e-01 + 8.628000000000e-10 3.274844581735e-01 + 8.728000000000e-10 8.788515759553e-02 + 8.828000000000e-10 -1.604054537172e-01 + 8.928000000000e-10 -3.867616376768e-01 + 9.028000000000e-10 -5.546662826942e-01 + 9.128000000000e-10 -6.627215467888e-01 + 9.228000000000e-10 -7.211618152183e-01 + 9.328000000000e-10 -7.221504122635e-01 + 9.428000000000e-10 -6.577943183983e-01 + 9.528000000000e-10 -5.259856282734e-01 + 9.628000000000e-10 -3.275204867996e-01 + 9.728000000000e-10 -8.784851998896e-02 + 9.828000000000e-10 1.603694682536e-01 + 9.928000000000e-10 3.867951846118e-01 + 1.000000000000e-09 5.139507493642e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/conditions.yaml new file mode 100644 index 00000000..a71e07da --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 2 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_02 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/CML_core_tb.sch new file mode 100644 index 00000000..83f6cb3a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/CML_core_tb_3.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/CML_core_tb_3.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/CML_core_tb_3.data new file mode 100644 index 00000000..a5b707e1 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/CML_core_tb_3.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.752371518652e-01 + 1.728000000000e-10 -5.371376319542e-02 + 1.828000000000e-10 1.789877413053e-01 + 1.928000000000e-10 3.904548691103e-01 + 2.028000000000e-10 5.481842948229e-01 + 2.128000000000e-10 6.473880529986e-01 + 2.228000000000e-10 6.910106576952e-01 + 2.328000000000e-10 6.747515328639e-01 + 2.428000000000e-10 5.993982850131e-01 + 2.528000000000e-10 4.678235295331e-01 + 2.628000000000e-10 2.811940191144e-01 + 2.728000000000e-10 5.749892092429e-02 + 2.828000000000e-10 -1.768703468756e-01 + 2.928000000000e-10 -3.894327299011e-01 + 3.028000000000e-10 -5.481462871223e-01 + 3.128000000000e-10 -6.476233959034e-01 + 3.228000000000e-10 -6.918267741740e-01 + 3.328000000000e-10 -6.759891610513e-01 + 3.428000000000e-10 -6.011477081233e-01 + 3.528000000000e-10 -4.695436066175e-01 + 3.628000000000e-10 -2.830251877311e-01 + 3.728000000000e-10 -5.907673776650e-02 + 3.828000000000e-10 1.753349861707e-01 + 3.928000000000e-10 3.883274219019e-01 + 4.028000000000e-10 5.473035177189e-01 + 4.128000000000e-10 6.472356324664e-01 + 4.228000000000e-10 6.916308158427e-01 + 4.328000000000e-10 6.762268077787e-01 + 4.428000000000e-10 6.014684070962e-01 + 4.528000000000e-10 4.700895666681e-01 + 4.628000000000e-10 2.834862741746e-01 + 4.728000000000e-10 5.964855757083e-02 + 4.828000000000e-10 -1.749274761915e-01 + 4.928000000000e-10 -3.878897710558e-01 + 5.028000000000e-10 -5.470986037433e-01 + 5.128000000000e-10 -6.470272164409e-01 + 5.228000000000e-10 -6.916322065746e-01 + 5.328000000000e-10 -6.762158687864e-01 + 5.428000000000e-10 -6.016311330158e-01 + 5.528000000000e-10 -4.701782346337e-01 + 5.628000000000e-10 -2.836941639082e-01 + 5.728000000000e-10 -5.974768838544e-02 + 5.828000000000e-10 1.747352099095e-01 + 5.928000000000e-10 3.878245260251e-01 + 6.028000000000e-10 5.469715931678e-01 + 6.128000000000e-10 6.470284806517e-01 + 6.228000000000e-10 6.915679621080e-01 + 6.328000000000e-10 6.762768333485e-01 + 6.428000000000e-10 6.016163496453e-01 + 6.528000000000e-10 4.702674812943e-01 + 6.628000000000e-10 2.836938506434e-01 + 6.728000000000e-10 5.983990401354e-02 + 6.828000000000e-10 -1.747391664584e-01 + 6.928000000000e-10 -3.877472828580e-01 + 7.028000000000e-10 -5.469903889528e-01 + 7.128000000000e-10 -6.469730360721e-01 + 7.228000000000e-10 -6.916047287716e-01 + 7.328000000000e-10 -6.762386026180e-01 + 7.428000000000e-10 -6.016669907082e-01 + 7.528000000000e-10 -4.702390118128e-01 + 7.628000000000e-10 -2.837481181728e-01 + 7.728000000000e-10 -5.981248689037e-02 + 7.828000000000e-10 1.746867337354e-01 + 7.928000000000e-10 3.877749638679e-01 + 8.028000000000e-10 5.469462314077e-01 + 8.128000000000e-10 6.470055622974e-01 + 8.228000000000e-10 6.915665740520e-01 + 8.328000000000e-10 6.762766371031e-01 + 8.428000000000e-10 6.016337946720e-01 + 8.528000000000e-10 4.702787360349e-01 + 8.628000000000e-10 2.837166478210e-01 + 8.728000000000e-10 5.985233152723e-02 + 8.828000000000e-10 -1.747180248353e-01 + 8.928000000000e-10 -3.877389392165e-01 + 9.028000000000e-10 -5.469764940938e-01 + 9.128000000000e-10 -6.469724949526e-01 + 9.228000000000e-10 -6.915980610397e-01 + 9.328000000000e-10 -6.762447762615e-01 + 9.428000000000e-10 -6.016660865709e-01 + 9.528000000000e-10 -4.702484057793e-01 + 9.628000000000e-10 -2.837489236123e-01 + 9.728000000000e-10 -5.982216431619e-02 + 9.828000000000e-10 1.746862818107e-01 + 9.928000000000e-10 3.877670239311e-01 + 1.000000000000e-09 5.084292112944e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/conditions.yaml new file mode 100644 index 00000000..d9659250 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 3 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_03 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/CML_core_tb.sch new file mode 100644 index 00000000..345ea94d --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/CML_core_tb_4.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/CML_core_tb_4.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/CML_core_tb_4.data new file mode 100644 index 00000000..8dbaf881 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/CML_core_tb_4.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.482257947455e-01 + 1.728000000000e-10 -3.259266550035e-02 + 1.828000000000e-10 1.930322087844e-01 + 1.928000000000e-10 3.960886599474e-01 + 2.028000000000e-10 5.450058997505e-01 + 2.128000000000e-10 6.360387116800e-01 + 2.228000000000e-10 6.712975422190e-01 + 2.328000000000e-10 6.474938983982e-01 + 2.428000000000e-10 5.679706274704e-01 + 2.528000000000e-10 4.364781736218e-01 + 2.628000000000e-10 2.536409133725e-01 + 2.728000000000e-10 3.555786929817e-02 + 2.828000000000e-10 -1.919150168478e-01 + 2.928000000000e-10 -3.960490843585e-01 + 3.028000000000e-10 -5.456465197220e-01 + 3.128000000000e-10 -6.367232933250e-01 + 3.228000000000e-10 -6.725166925877e-01 + 3.328000000000e-10 -6.491812984547e-01 + 3.428000000000e-10 -5.701612342484e-01 + 3.528000000000e-10 -4.386195239579e-01 + 3.628000000000e-10 -2.558666299298e-01 + 3.728000000000e-10 -3.750940439386e-02 + 3.828000000000e-10 1.900731677010e-01 + 3.928000000000e-10 3.947279065049e-01 + 4.028000000000e-10 5.446879536498e-01 + 4.128000000000e-10 6.362937598492e-01 + 4.228000000000e-10 6.723764816130e-01 + 4.328000000000e-10 6.495551727740e-01 + 4.428000000000e-10 5.706690754638e-01 + 4.528000000000e-10 4.393690386281e-01 + 4.628000000000e-10 2.565445890136e-01 + 4.728000000000e-10 3.828939038748e-02 + 4.828000000000e-10 -1.894747026650e-01 + 4.928000000000e-10 -3.941469427019e-01 + 5.028000000000e-10 -5.443881652157e-01 + 5.128000000000e-10 -6.360424686566e-01 + 5.228000000000e-10 -6.723795425302e-01 + 5.328000000000e-10 -6.495951074105e-01 + 5.428000000000e-10 -5.709049111673e-01 + 5.528000000000e-10 -4.395480856777e-01 + 5.628000000000e-10 -2.568451405700e-01 + 5.728000000000e-10 -3.848386295174e-02 + 5.828000000000e-10 1.891998017504e-01 + 5.928000000000e-10 3.940128253458e-01 + 6.028000000000e-10 5.442195759360e-01 + 6.128000000000e-10 6.360190076123e-01 + 6.228000000000e-10 6.723154692419e-01 + 6.328000000000e-10 6.496722035130e-01 + 6.428000000000e-10 5.709215560836e-01 + 6.528000000000e-10 4.396716365902e-01 + 6.628000000000e-10 2.568848555761e-01 + 6.728000000000e-10 3.861258812938e-02 + 6.828000000000e-10 -1.891673406027e-01 + 6.928000000000e-10 -3.939096487469e-01 + 7.028000000000e-10 -5.442185154541e-01 + 7.128000000000e-10 -6.359555029215e-01 + 7.228000000000e-10 -6.723494769467e-01 + 7.328000000000e-10 -6.496420384079e-01 + 7.428000000000e-10 -5.709822816025e-01 + 7.528000000000e-10 -4.396582995671e-01 + 7.628000000000e-10 -2.569529185106e-01 + 7.728000000000e-10 -3.860128053097e-02 + 7.828000000000e-10 1.891028165048e-01 + 7.928000000000e-10 3.939252197739e-01 + 8.028000000000e-10 5.441685861906e-01 + 8.128000000000e-10 6.359828023137e-01 + 8.228000000000e-10 6.723118712615e-01 + 8.328000000000e-10 6.496812709937e-01 + 8.428000000000e-10 5.709544657577e-01 + 8.528000000000e-10 4.397022527784e-01 + 8.628000000000e-10 2.569280980597e-01 + 8.728000000000e-10 3.864565597286e-02 + 8.828000000000e-10 -1.891278298806e-01 + 8.928000000000e-10 -3.938862165142e-01 + 9.028000000000e-10 -5.441949734698e-01 + 9.128000000000e-10 -6.359493781265e-01 + 9.228000000000e-10 -6.723420888760e-01 + 9.328000000000e-10 -6.496512561522e-01 + 9.428000000000e-10 -5.709874488604e-01 + 9.528000000000e-10 -4.396746422576e-01 + 9.628000000000e-10 -2.569616958772e-01 + 9.728000000000e-10 -3.861839939192e-02 + 9.828000000000e-10 1.890951489097e-01 + 9.928000000000e-10 3.939119089870e-01 + 1.000000000000e-09 5.081084039478e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/conditions.yaml new file mode 100644 index 00000000..7fe81e1e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 4 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_04 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/CML_core_tb.sch new file mode 100644 index 00000000..7c161102 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/CML_core_tb_5.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/CML_core_tb_5.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/CML_core_tb_5.data new file mode 100644 index 00000000..72d71163 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/CML_core_tb_5.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -3.026592886865e-01 + 1.728000000000e-10 -8.046058591213e-02 + 1.828000000000e-10 1.560684489845e-01 + 1.928000000000e-10 3.758215815324e-01 + 2.028000000000e-10 5.441825187720e-01 + 2.128000000000e-10 6.527787402061e-01 + 2.228000000000e-10 7.054162779080e-01 + 2.328000000000e-10 6.966940307878e-01 + 2.428000000000e-10 6.251719997267e-01 + 2.528000000000e-10 4.948986245243e-01 + 2.628000000000e-10 3.088338841037e-01 + 2.728000000000e-10 8.463582249819e-02 + 2.828000000000e-10 -1.534379373390e-01 + 2.928000000000e-10 -3.742382678981e-01 + 3.028000000000e-10 -5.437587344983e-01 + 3.128000000000e-10 -6.527795869025e-01 + 3.228000000000e-10 -7.060578401775e-01 + 3.328000000000e-10 -6.977288800308e-01 + 3.428000000000e-10 -6.267241220561e-01 + 3.528000000000e-10 -4.964034573067e-01 + 3.628000000000e-10 -3.104523257846e-01 + 3.728000000000e-10 -8.599843693100e-02 + 3.828000000000e-10 1.520614001089e-01 + 3.928000000000e-10 3.732327292359e-01 + 4.028000000000e-10 5.429530946109e-01 + 4.128000000000e-10 6.523997728799e-01 + 4.228000000000e-10 7.058202145507e-01 + 4.328000000000e-10 6.979022558405e-01 + 4.428000000000e-10 6.269588593419e-01 + 4.528000000000e-10 4.968624227466e-01 + 4.628000000000e-10 3.108132149603e-01 + 4.728000000000e-10 8.648038785746e-02 + 4.828000000000e-10 -1.517384677919e-01 + 4.928000000000e-10 -3.728474794484e-01 + 5.028000000000e-10 -5.427866011842e-01 + 5.128000000000e-10 -6.522022614009e-01 + 5.228000000000e-10 -7.058208822479e-01 + 5.328000000000e-10 -6.978651082200e-01 + 5.428000000000e-10 -6.270935668997e-01 + 5.528000000000e-10 -4.969096569281e-01 + 5.628000000000e-10 -3.109835748750e-01 + 5.728000000000e-10 -8.653572716924e-02 + 5.828000000000e-10 1.515778681972e-01 + 5.928000000000e-10 3.728127447205e-01 + 6.028000000000e-10 5.426739415091e-01 + 6.128000000000e-10 6.522162007318e-01 + 6.228000000000e-10 7.057544179932e-01 + 6.328000000000e-10 6.979224304337e-01 + 6.428000000000e-10 6.270641898671e-01 + 6.528000000000e-10 4.969874144680e-01 + 6.628000000000e-10 3.109648292365e-01 + 6.728000000000e-10 8.661535651254e-02 + 6.828000000000e-10 -1.515990397030e-01 + 6.928000000000e-10 -3.727433125293e-01 + 7.028000000000e-10 -5.427028559119e-01 + 7.128000000000e-10 -6.521615488134e-01 + 7.228000000000e-10 -7.057946841560e-01 + 7.328000000000e-10 -6.978790263426e-01 + 7.428000000000e-10 -6.271133848792e-01 + 7.528000000000e-10 -4.969513861012e-01 + 7.628000000000e-10 -3.110159233563e-01 + 7.728000000000e-10 -8.658006676818e-02 + 7.828000000000e-10 1.515487071721e-01 + 7.928000000000e-10 3.727772980737e-01 + 8.028000000000e-10 5.426589701450e-01 + 8.128000000000e-10 6.521979789832e-01 + 8.228000000000e-10 7.057547305503e-01 + 8.328000000000e-10 6.979187185021e-01 + 8.428000000000e-10 6.270767072939e-01 + 8.528000000000e-10 4.969913946096e-01 + 8.628000000000e-10 3.109805885282e-01 + 8.728000000000e-10 8.662004567696e-02 + 8.828000000000e-10 -1.515841004471e-01 + 8.928000000000e-10 -3.727405314049e-01 + 9.028000000000e-10 -5.426922302859e-01 + 9.128000000000e-10 -6.521632231968e-01 + 9.228000000000e-10 -7.057882763540e-01 + 9.328000000000e-10 -6.978845659833e-01 + 9.428000000000e-10 -6.271103709374e-01 + 9.528000000000e-10 -4.969587868574e-01 + 9.628000000000e-10 -3.110138943909e-01 + 9.728000000000e-10 -8.658760475646e-02 + 9.828000000000e-10 1.515508999036e-01 + 9.928000000000e-10 3.727707590510e-01 + 1.000000000000e-09 5.012730784879e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/conditions.yaml new file mode 100644 index 00000000..9263549c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 5 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_05 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/CML_core_tb.sch new file mode 100644 index 00000000..371a05d0 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/CML_core_tb_6.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/CML_core_tb_6.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/CML_core_tb_6.data new file mode 100644 index 00000000..2ac25b32 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/CML_core_tb_6.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.658991355482e-01 + 1.728000000000e-10 -5.658971746101e-02 + 1.828000000000e-10 1.665652322471e-01 + 1.928000000000e-10 3.726189743475e-01 + 2.028000000000e-10 5.303705116758e-01 + 2.128000000000e-10 6.287796796090e-01 + 2.228000000000e-10 6.685380236864e-01 + 2.328000000000e-10 6.490234756137e-01 + 2.428000000000e-10 5.737092070140e-01 + 2.528000000000e-10 4.474825535463e-01 + 2.628000000000e-10 2.725242795062e-01 + 2.728000000000e-10 6.117177433707e-02 + 2.828000000000e-10 -1.637031734923e-01 + 2.928000000000e-10 -3.708935568747e-01 + 3.028000000000e-10 -5.297756369707e-01 + 3.128000000000e-10 -6.287017384995e-01 + 3.228000000000e-10 -6.693265533929e-01 + 3.328000000000e-10 -6.504570398323e-01 + 3.428000000000e-10 -5.758168078022e-01 + 3.528000000000e-10 -4.496242973413e-01 + 3.628000000000e-10 -2.747981275605e-01 + 3.728000000000e-10 -6.319393908833e-02 + 3.828000000000e-10 1.617439470913e-01 + 3.928000000000e-10 3.694169588634e-01 + 4.028000000000e-10 5.286499307585e-01 + 4.128000000000e-10 6.281722098808e-01 + 4.228000000000e-10 6.691184385543e-01 + 4.328000000000e-10 6.507901751637e-01 + 4.428000000000e-10 5.762974118946e-01 + 4.528000000000e-10 4.503608294114e-01 + 4.628000000000e-10 2.754522690623e-01 + 4.728000000000e-10 6.396306731359e-02 + 4.828000000000e-10 -1.611542650007e-01 + 4.928000000000e-10 -3.688169747432e-01 + 5.028000000000e-10 -5.283292872594e-01 + 5.128000000000e-10 -6.279003852563e-01 + 5.228000000000e-10 -6.691136918962e-01 + 5.328000000000e-10 -6.508124831570e-01 + 5.428000000000e-10 -5.765249280825e-01 + 5.528000000000e-10 -4.505225248069e-01 + 5.628000000000e-10 -2.757393848954e-01 + 5.728000000000e-10 -6.413835118523e-02 + 5.828000000000e-10 1.608879015274e-01 + 5.928000000000e-10 3.686909867212e-01 + 6.028000000000e-10 5.281558224884e-01 + 6.128000000000e-10 6.278785795680e-01 + 6.228000000000e-10 6.690442760911e-01 + 6.328000000000e-10 6.508870303825e-01 + 6.428000000000e-10 5.765321271449e-01 + 6.528000000000e-10 4.506407637839e-01 + 6.628000000000e-10 2.757670228304e-01 + 6.728000000000e-10 6.426080532693e-02 + 6.828000000000e-10 -1.608659404084e-01 + 6.928000000000e-10 -3.685888330346e-01 + 7.028000000000e-10 -5.281591419234e-01 + 7.128000000000e-10 -6.278127091451e-01 + 7.228000000000e-10 -6.690805910819e-01 + 7.328000000000e-10 -6.508520944992e-01 + 7.428000000000e-10 -5.765925476372e-01 + 7.528000000000e-10 -4.506215704207e-01 + 7.628000000000e-10 -2.758332595929e-01 + 7.728000000000e-10 -6.424327491403e-02 + 7.828000000000e-10 1.608024320318e-01 + 7.928000000000e-10 3.686091606456e-01 + 8.028000000000e-10 5.281080947303e-01 + 8.128000000000e-10 6.278426474070e-01 + 8.228000000000e-10 6.690409470235e-01 + 8.328000000000e-10 6.508923982303e-01 + 8.428000000000e-10 5.765614162070e-01 + 8.528000000000e-10 4.506656063053e-01 + 8.628000000000e-10 2.758047260180e-01 + 8.728000000000e-10 6.428762429922e-02 + 8.828000000000e-10 -1.608310872580e-01 + 8.928000000000e-10 -3.685690211775e-01 + 9.028000000000e-10 -5.281370864240e-01 + 9.128000000000e-10 -6.278075066251e-01 + 9.228000000000e-10 -6.690730291835e-01 + 9.328000000000e-10 -6.508603444096e-01 + 9.428000000000e-10 -5.765956636587e-01 + 9.528000000000e-10 -4.506359555730e-01 + 9.628000000000e-10 -2.758391852585e-01 + 9.728000000000e-10 -6.425829353036e-02 + 9.828000000000e-10 1.607973448132e-01 + 9.928000000000e-10 3.685968285070e-01 + 1.000000000000e-09 4.894958047088e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/conditions.yaml new file mode 100644 index 00000000..999004cd --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 6 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_06 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/CML_core_tb.sch new file mode 100644 index 00000000..10b8e80e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/CML_core_tb_7.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/CML_core_tb_7.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/CML_core_tb_7.data new file mode 100644 index 00000000..8cc8eec2 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/CML_core_tb_7.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.411371086013e-01 + 1.728000000000e-10 -3.745255924116e-02 + 1.828000000000e-10 1.789428987452e-01 + 1.928000000000e-10 3.769558934840e-01 + 2.028000000000e-10 5.255858783541e-01 + 2.128000000000e-10 6.150086513683e-01 + 2.228000000000e-10 6.463506095909e-01 + 2.328000000000e-10 6.202014565113e-01 + 2.428000000000e-10 5.417075102450e-01 + 2.528000000000e-10 4.161519970610e-01 + 2.628000000000e-10 2.448960905686e-01 + 2.728000000000e-10 3.892968213965e-02 + 2.828000000000e-10 -1.791505445505e-01 + 2.928000000000e-10 -3.778686664383e-01 + 3.028000000000e-10 -5.268093330033e-01 + 3.128000000000e-10 -6.159877416348e-01 + 3.228000000000e-10 -6.476195951568e-01 + 3.328000000000e-10 -6.216667221790e-01 + 3.428000000000e-10 -5.435382878554e-01 + 3.528000000000e-10 -4.178448923887e-01 + 3.628000000000e-10 -2.466531390426e-01 + 3.728000000000e-10 -4.041876256606e-02 + 3.828000000000e-10 1.777092594525e-01 + 3.928000000000e-10 3.768542192180e-01 + 4.028000000000e-10 5.260351926041e-01 + 4.128000000000e-10 6.156923491854e-01 + 4.228000000000e-10 6.475364165656e-01 + 4.328000000000e-10 6.220253224816e-01 + 4.428000000000e-10 5.439681165412e-01 + 4.528000000000e-10 4.184919515643e-01 + 4.628000000000e-10 2.472032785778e-01 + 4.728000000000e-10 4.108392377197e-02 + 4.828000000000e-10 -1.772209974541e-01 + 4.928000000000e-10 -3.763464849454e-01 + 5.028000000000e-10 -5.257893585276e-01 + 5.128000000000e-10 -6.154751208437e-01 + 5.228000000000e-10 -6.475677164184e-01 + 5.328000000000e-10 -6.220637777790e-01 + 5.428000000000e-10 -5.441970040997e-01 + 5.528000000000e-10 -4.186454653208e-01 + 5.628000000000e-10 -2.474812841152e-01 + 5.728000000000e-10 -4.124875776275e-02 + 5.828000000000e-10 1.769646369358e-01 + 5.928000000000e-10 3.762321495571e-01 + 6.028000000000e-10 5.256270530622e-01 + 6.128000000000e-10 6.154644314175e-01 + 6.228000000000e-10 6.475079392204e-01 + 6.328000000000e-10 6.221477255403e-01 + 6.428000000000e-10 5.442104878297e-01 + 6.528000000000e-10 4.187701859554e-01 + 6.628000000000e-10 2.475138621783e-01 + 6.728000000000e-10 4.137738638918e-02 + 6.828000000000e-10 -1.769383615791e-01 + 6.928000000000e-10 -3.761265802968e-01 + 7.028000000000e-10 -5.256298366366e-01 + 7.128000000000e-10 -6.153992750277e-01 + 7.228000000000e-10 -6.475476374408e-01 + 7.328000000000e-10 -6.221164421539e-01 + 7.428000000000e-10 -5.442762390873e-01 + 7.528000000000e-10 -4.187551150856e-01 + 7.628000000000e-10 -2.475858208222e-01 + 7.728000000000e-10 -4.136415856981e-02 + 7.828000000000e-10 1.768699557901e-01 + 7.928000000000e-10 3.761440347995e-01 + 8.028000000000e-10 5.255765528630e-01 + 8.128000000000e-10 6.154291154928e-01 + 8.228000000000e-10 6.475082015932e-01 + 8.328000000000e-10 6.221591874056e-01 + 8.428000000000e-10 5.442468649409e-01 + 8.528000000000e-10 4.188025713318e-01 + 8.628000000000e-10 2.475593730203e-01 + 8.728000000000e-10 4.141194467582e-02 + 8.828000000000e-10 -1.768965906206e-01 + 8.928000000000e-10 -3.761014263264e-01 + 9.028000000000e-10 -5.256047249426e-01 + 9.128000000000e-10 -6.153930400649e-01 + 9.228000000000e-10 -6.475410523019e-01 + 9.328000000000e-10 -6.221273229309e-01 + 9.428000000000e-10 -5.442828742825e-01 + 9.528000000000e-10 -4.187734552047e-01 + 9.628000000000e-10 -2.475958588134e-01 + 9.728000000000e-10 -4.138326223977e-02 + 9.828000000000e-10 1.768611473522e-01 + 9.928000000000e-10 3.761288017358e-01 + 1.000000000000e-09 4.898465656484e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/conditions.yaml new file mode 100644 index 00000000..12457833 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 7 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_07 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/CML_core_tb.sch new file mode 100644 index 00000000..3b1a3f45 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/CML_core_tb_8.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/CML_core_tb_8.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/CML_core_tb_8.data new file mode 100644 index 00000000..2ec9911e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/CML_core_tb_8.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.915574653990e-01 + 1.728000000000e-10 -8.207206468644e-02 + 1.828000000000e-10 1.443140454917e-01 + 1.928000000000e-10 3.578501059917e-01 + 2.028000000000e-10 5.264102614641e-01 + 2.128000000000e-10 6.356033847750e-01 + 2.228000000000e-10 6.852124516173e-01 + 2.328000000000e-10 6.731697751231e-01 + 2.428000000000e-10 6.014680860110e-01 + 2.528000000000e-10 4.762934940598e-01 + 2.628000000000e-10 3.019743151843e-01 + 2.728000000000e-10 9.052768843264e-02 + 2.828000000000e-10 -1.376882496508e-01 + 2.928000000000e-10 -3.528073773591e-01 + 3.028000000000e-10 -5.234244166185e-01 + 3.128000000000e-10 -6.340851318675e-01 + 3.228000000000e-10 -6.854084589569e-01 + 3.328000000000e-10 -6.747695956588e-01 + 3.428000000000e-10 -6.042844418494e-01 + 3.528000000000e-10 -4.793995649692e-01 + 3.628000000000e-10 -3.052822644166e-01 + 3.728000000000e-10 -9.358407685982e-02 + 3.828000000000e-10 1.347194202511e-01 + 3.928000000000e-10 3.504174847188e-01 + 4.028000000000e-10 5.215924623562e-01 + 4.128000000000e-10 6.330900225454e-01 + 4.228000000000e-10 6.849701135730e-01 + 4.328000000000e-10 6.751037342439e-01 + 4.428000000000e-10 6.049384750133e-01 + 4.528000000000e-10 4.803914109079e-01 + 4.628000000000e-10 3.062148923158e-01 + 4.728000000000e-10 9.463220881739e-02 + 4.828000000000e-10 -1.338572933423e-01 + 4.928000000000e-10 -3.495689260045e-01 + 5.028000000000e-10 -5.210792449240e-01 + 5.128000000000e-10 -6.326887195405e-01 + 5.228000000000e-10 -6.848983576670e-01 + 5.328000000000e-10 -6.751198274713e-01 + 5.428000000000e-10 -6.052060952211e-01 + 5.528000000000e-10 -4.806148207689e-01 + 5.628000000000e-10 -3.065686575138e-01 + 5.728000000000e-10 -9.487468231530e-02 + 5.828000000000e-10 1.335246601606e-01 + 5.928000000000e-10 3.493821792388e-01 + 6.028000000000e-10 5.208575371198e-01 + 6.128000000000e-10 6.326338805716e-01 + 6.228000000000e-10 6.848108600046e-01 + 6.328000000000e-10 6.751907109187e-01 + 6.428000000000e-10 6.052214841565e-01 + 6.528000000000e-10 4.807458450129e-01 + 6.628000000000e-10 3.066111422989e-01 + 6.728000000000e-10 9.501122064621e-02 + 6.828000000000e-10 -1.334882175614e-01 + 6.928000000000e-10 -3.492660352924e-01 + 7.028000000000e-10 -5.208495294585e-01 + 7.128000000000e-10 -6.325598499367e-01 + 7.228000000000e-10 -6.848421004985e-01 + 7.328000000000e-10 -6.751543080912e-01 + 7.428000000000e-10 -6.052828258645e-01 + 7.528000000000e-10 -4.807293659120e-01 + 7.628000000000e-10 -3.066794924108e-01 + 7.728000000000e-10 -9.499664108150e-02 + 7.828000000000e-10 1.334220275121e-01 + 7.928000000000e-10 3.492835018463e-01 + 8.028000000000e-10 5.207961769649e-01 + 8.128000000000e-10 6.325876998525e-01 + 8.228000000000e-10 6.848014468222e-01 + 8.328000000000e-10 6.751935994962e-01 + 8.428000000000e-10 6.052518981308e-01 + 8.528000000000e-10 4.807729857688e-01 + 8.628000000000e-10 3.066516205185e-01 + 8.728000000000e-10 9.504068447267e-02 + 8.828000000000e-10 -1.334502935734e-01 + 8.928000000000e-10 -3.492430994753e-01 + 9.028000000000e-10 -5.208246106410e-01 + 9.128000000000e-10 -6.325523513325e-01 + 9.228000000000e-10 -6.848328984481e-01 + 9.328000000000e-10 -6.751615848536e-01 + 9.428000000000e-10 -6.052856721640e-01 + 9.528000000000e-10 -4.807436971446e-01 + 9.628000000000e-10 -3.066854569150e-01 + 9.728000000000e-10 -9.501170247959e-02 + 9.828000000000e-10 1.334168358063e-01 + 9.928000000000e-10 3.492707284922e-01 + 1.000000000000e-09 4.787459694615e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/conditions.yaml new file mode 100644 index 00000000..95a41dea --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 8 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_08 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/CML_core_tb.sch new file mode 100644 index 00000000..dde89224 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/CML_core_tb_9.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/CML_core_tb_9.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/CML_core_tb_9.data new file mode 100644 index 00000000..1eb23e09 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/CML_core_tb_9.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.397443385003e-01 + 1.728000000000e-10 -2.045536352810e-01 + 1.828000000000e-10 1.313863393294e-01 + 1.928000000000e-10 3.838209275603e-01 + 2.028000000000e-10 5.347375940933e-01 + 2.128000000000e-10 6.276591932156e-01 + 2.228000000000e-10 7.115621702194e-01 + 2.328000000000e-10 7.798611559065e-01 + 2.428000000000e-10 8.066497785728e-01 + 2.528000000000e-10 7.447444131165e-01 + 2.628000000000e-10 5.331798214247e-01 + 2.728000000000e-10 1.991243487461e-01 + 2.828000000000e-10 -1.352153251063e-01 + 2.928000000000e-10 -3.864762984078e-01 + 3.028000000000e-10 -5.369168929595e-01 + 3.128000000000e-10 -6.290603792866e-01 + 3.228000000000e-10 -7.126196515736e-01 + 3.328000000000e-10 -7.804415576126e-01 + 3.428000000000e-10 -8.071911048716e-01 + 3.528000000000e-10 -7.450481751688e-01 + 3.628000000000e-10 -5.336055963763e-01 + 3.728000000000e-10 -1.993198332358e-01 + 3.828000000000e-10 1.349559401886e-01 + 3.928000000000e-10 3.864112742700e-01 + 4.028000000000e-10 5.367351878370e-01 + 4.128000000000e-10 6.290489992071e-01 + 4.228000000000e-10 7.124864782962e-01 + 4.328000000000e-10 7.804750739895e-01 + 4.428000000000e-10 8.070933947437e-01 + 4.528000000000e-10 7.451033689318e-01 + 4.628000000000e-10 5.335168975820e-01 + 4.728000000000e-10 1.993807368925e-01 + 4.828000000000e-10 -1.350304895400e-01 + 4.928000000000e-10 -3.863532554681e-01 + 5.028000000000e-10 -5.368040585560e-01 + 5.128000000000e-10 -6.289909078772e-01 + 5.228000000000e-10 -7.125533448218e-01 + 5.328000000000e-10 -7.804160897110e-01 + 5.428000000000e-10 -8.071554863663e-01 + 5.528000000000e-10 -7.450422465689e-01 + 5.628000000000e-10 -5.335838460974e-01 + 5.728000000000e-10 -1.993167730115e-01 + 5.828000000000e-10 1.349726890253e-01 + 5.928000000000e-10 3.864109858256e-01 + 6.028000000000e-10 5.367479691018e-01 + 6.128000000000e-10 6.290476980128e-01 + 6.228000000000e-10 7.124950121919e-01 + 6.328000000000e-10 7.804717191606e-01 + 6.428000000000e-10 8.070994779138e-01 + 6.528000000000e-10 7.450975613250e-01 + 6.628000000000e-10 5.335259065522e-01 + 6.728000000000e-10 1.993734548210e-01 + 6.828000000000e-10 -1.350242777574e-01 + 6.928000000000e-10 -3.863605033303e-01 + 7.028000000000e-10 -5.367975294074e-01 + 7.128000000000e-10 -6.289982763959e-01 + 7.228000000000e-10 -7.125455111440e-01 + 7.328000000000e-10 -7.804238043085e-01 + 7.428000000000e-10 -8.071473680780e-01 + 7.528000000000e-10 -7.450494772754e-01 + 7.628000000000e-10 -5.335773499054e-01 + 7.728000000000e-10 -1.993230348361e-01 + 7.828000000000e-10 1.349793746975e-01 + 7.928000000000e-10 3.864055722387e-01 + 8.028000000000e-10 5.367539279153e-01 + 8.128000000000e-10 6.290427569852e-01 + 8.228000000000e-10 7.125002063044e-01 + 8.328000000000e-10 7.804668926767e-01 + 8.428000000000e-10 8.071042297758e-01 + 8.528000000000e-10 7.450922570276e-01 + 8.628000000000e-10 5.335323457615e-01 + 8.728000000000e-10 1.993673584870e-01 + 8.828000000000e-10 -1.350193573750e-01 + 8.928000000000e-10 -3.863660901230e-01 + 9.028000000000e-10 -5.367925035482e-01 + 9.128000000000e-10 -6.290039875175e-01 + 9.228000000000e-10 -7.125398122704e-01 + 9.328000000000e-10 -7.804294363608e-01 + 9.428000000000e-10 -8.071416857778e-01 + 9.528000000000e-10 -7.450548065452e-01 + 9.628000000000e-10 -5.335722743766e-01 + 9.728000000000e-10 -1.993280329539e-01 + 9.828000000000e-10 1.349843549639e-01 + 9.928000000000e-10 3.864011317450e-01 + 1.000000000000e-09 5.028020863733e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/conditions.yaml new file mode 100644 index 00000000..fd2b1fae --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 9 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_09 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/CML_core_tb.sch new file mode 100644 index 00000000..fe3742cb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/CML_core_tb_10.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/CML_core_tb_10.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/CML_core_tb_10.data new file mode 100644 index 00000000..973ede5e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/CML_core_tb_10.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.293189432094e-01 + 1.728000000000e-10 -2.034299929592e-01 + 1.828000000000e-10 1.254532736892e-01 + 1.928000000000e-10 3.744603520131e-01 + 2.028000000000e-10 5.220595086358e-01 + 2.128000000000e-10 6.139346231694e-01 + 2.228000000000e-10 6.977077768020e-01 + 2.328000000000e-10 7.638951530454e-01 + 2.428000000000e-10 7.881008470503e-01 + 2.528000000000e-10 7.271434956617e-01 + 2.628000000000e-10 5.227259392947e-01 + 2.728000000000e-10 1.977807095317e-01 + 2.828000000000e-10 -1.296557480667e-01 + 2.928000000000e-10 -3.774966254092e-01 + 3.028000000000e-10 -5.245506032311e-01 + 3.128000000000e-10 -6.155925798862e-01 + 3.228000000000e-10 -6.989490114600e-01 + 3.328000000000e-10 -7.646204924296e-01 + 3.428000000000e-10 -7.887093478172e-01 + 3.528000000000e-10 -7.274783648153e-01 + 3.628000000000e-10 -5.231513423786e-01 + 3.728000000000e-10 -1.979863018154e-01 + 3.828000000000e-10 1.294013660930e-01 + 3.928000000000e-10 3.774276121382e-01 + 4.028000000000e-10 5.243833105689e-01 + 4.128000000000e-10 6.155813660155e-01 + 4.228000000000e-10 6.988272077165e-01 + 4.328000000000e-10 7.646509984988e-01 + 4.428000000000e-10 7.886185007607e-01 + 4.528000000000e-10 7.275266613790e-01 + 4.628000000000e-10 5.230676681296e-01 + 4.728000000000e-10 1.980405747385e-01 + 4.828000000000e-10 -1.294713662253e-01 + 4.928000000000e-10 -3.773761496757e-01 + 5.028000000000e-10 -5.244469821379e-01 + 5.128000000000e-10 -6.155294307936e-01 + 5.228000000000e-10 -6.988887956355e-01 + 5.328000000000e-10 -7.645972449904e-01 + 5.428000000000e-10 -7.886754254295e-01 + 5.528000000000e-10 -7.274706677122e-01 + 5.628000000000e-10 -5.231295350854e-01 + 5.728000000000e-10 -1.979806299381e-01 + 5.828000000000e-10 1.294187696545e-01 + 5.928000000000e-10 3.774292707563e-01 + 6.028000000000e-10 5.243961595933e-01 + 6.128000000000e-10 6.155814701559e-01 + 6.228000000000e-10 6.988355515168e-01 + 6.328000000000e-10 7.646484599731e-01 + 6.428000000000e-10 7.886243100181e-01 + 6.528000000000e-10 7.275215569265e-01 + 6.628000000000e-10 5.230764840752e-01 + 6.728000000000e-10 1.980332799823e-01 + 6.828000000000e-10 -1.294660192513e-01 + 6.928000000000e-10 -3.773827405650e-01 + 7.028000000000e-10 -5.244413520748e-01 + 7.128000000000e-10 -6.155361997798e-01 + 7.228000000000e-10 -6.988817029216e-01 + 7.328000000000e-10 -7.646043204444e-01 + 7.428000000000e-10 -7.886680576572e-01 + 7.528000000000e-10 -7.274772120684e-01 + 7.628000000000e-10 -5.231238849653e-01 + 7.728000000000e-10 -1.979860775160e-01 + 7.828000000000e-10 1.294249237809e-01 + 7.928000000000e-10 3.774244918330e-01 + 8.028000000000e-10 5.244015690321e-01 + 8.128000000000e-10 6.155771739165e-01 + 8.228000000000e-10 6.988402156207e-01 + 8.328000000000e-10 7.646441380646e-01 + 8.428000000000e-10 7.886285892332e-01 + 8.528000000000e-10 7.275167248781e-01 + 8.628000000000e-10 5.230825202638e-01 + 8.728000000000e-10 1.980273627479e-01 + 8.828000000000e-10 -1.294617038455e-01 + 8.928000000000e-10 -3.773878907236e-01 + 9.028000000000e-10 -5.244369215985e-01 + 9.128000000000e-10 -6.155414802599e-01 + 9.228000000000e-10 -6.988765421320e-01 + 9.328000000000e-10 -7.646094975483e-01 + 9.428000000000e-10 -7.886629049186e-01 + 9.528000000000e-10 -7.274820443091e-01 + 9.628000000000e-10 -5.231193961018e-01 + 9.728000000000e-10 -1.979905037884e-01 + 9.828000000000e-10 1.294294922144e-01 + 9.928000000000e-10 3.774205018001e-01 + 1.000000000000e-09 4.912603506308e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/conditions.yaml new file mode 100644 index 00000000..3113a09b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 10 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_10 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/CML_core_tb.sch new file mode 100644 index 00000000..397774de --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/CML_core_tb_11.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/CML_core_tb_11.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/CML_core_tb_11.data new file mode 100644 index 00000000..799f8459 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/CML_core_tb_11.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.473675478550e-01 + 1.728000000000e-10 -2.087893101739e-01 + 1.828000000000e-10 1.310494751476e-01 + 1.928000000000e-10 3.871555645678e-01 + 2.028000000000e-10 5.437689230363e-01 + 2.128000000000e-10 6.391330299748e-01 + 2.228000000000e-10 7.213082317981e-01 + 2.328000000000e-10 7.903248370025e-01 + 2.428000000000e-10 8.187618792919e-01 + 2.528000000000e-10 7.555729663838e-01 + 2.628000000000e-10 5.409345054541e-01 + 2.728000000000e-10 2.036912835862e-01 + 2.828000000000e-10 -1.345140506878e-01 + 2.928000000000e-10 -3.895370892644e-01 + 3.028000000000e-10 -5.457400052530e-01 + 3.128000000000e-10 -6.403498057265e-01 + 3.228000000000e-10 -7.222286336937e-01 + 3.328000000000e-10 -7.907911780827e-01 + 3.428000000000e-10 -8.192361080664e-01 + 3.528000000000e-10 -7.558198978931e-01 + 3.628000000000e-10 -5.413206307136e-01 + 3.728000000000e-10 -2.038438399825e-01 + 3.828000000000e-10 1.342763346632e-01 + 3.928000000000e-10 3.894921044587e-01 + 4.028000000000e-10 5.455616788274e-01 + 4.128000000000e-10 6.403489734683e-01 + 4.228000000000e-10 7.220944352324e-01 + 4.328000000000e-10 7.908322596821e-01 + 4.428000000000e-10 8.191363162855e-01 + 4.528000000000e-10 7.558824803046e-01 + 4.628000000000e-10 5.412307821184e-01 + 4.728000000000e-10 2.039121351986e-01 + 4.828000000000e-10 -1.343528713892e-01 + 4.928000000000e-10 -3.894290190191e-01 + 5.028000000000e-10 -5.456335562174e-01 + 5.128000000000e-10 -6.402860869065e-01 + 5.228000000000e-10 -7.221652152444e-01 + 5.328000000000e-10 -7.907686614943e-01 + 5.428000000000e-10 -8.192023796026e-01 + 5.528000000000e-10 -7.558173441778e-01 + 5.628000000000e-10 -5.413004970284e-01 + 5.728000000000e-10 -2.038447386050e-01 + 5.828000000000e-10 1.342913524064e-01 + 5.928000000000e-10 3.894897157728e-01 + 6.028000000000e-10 5.455737058766e-01 + 6.128000000000e-10 6.403462778603e-01 + 6.228000000000e-10 7.221032530671e-01 + 6.328000000000e-10 7.908278354740e-01 + 6.428000000000e-10 8.191430293573e-01 + 6.528000000000e-10 7.558759446864e-01 + 6.628000000000e-10 5.412396296665e-01 + 6.728000000000e-10 2.039046702204e-01 + 6.828000000000e-10 -1.343459163903e-01 + 6.928000000000e-10 -3.894366779769e-01 + 7.028000000000e-10 -5.456262483653e-01 + 7.128000000000e-10 -6.402940065215e-01 + 7.228000000000e-10 -7.221570137640e-01 + 7.328000000000e-10 -7.907769448806e-01 + 7.428000000000e-10 -8.191938542033e-01 + 7.528000000000e-10 -7.558251320231e-01 + 7.628000000000e-10 -5.412933191298e-01 + 7.728000000000e-10 -2.038518419443e-01 + 7.828000000000e-10 1.342982918430e-01 + 7.928000000000e-10 3.894837914532e-01 + 8.028000000000e-10 5.455799247329e-01 + 8.128000000000e-10 6.403408689327e-01 + 8.228000000000e-10 7.221089932485e-01 + 8.328000000000e-10 7.908225333386e-01 + 8.428000000000e-10 8.191482615363e-01 + 8.528000000000e-10 7.558702665648e-01 + 8.628000000000e-10 5.412462517638e-01 + 8.728000000000e-10 2.038984202104e-01 + 8.828000000000e-10 -1.343404705774e-01 + 8.928000000000e-10 -3.894425333092e-01 + 9.028000000000e-10 -5.456206778041e-01 + 9.128000000000e-10 -6.403000729433e-01 + 9.228000000000e-10 -7.221509667404e-01 + 9.328000000000e-10 -7.907829740936e-01 + 9.428000000000e-10 -8.191877974471e-01 + 9.528000000000e-10 -7.558308764830e-01 + 9.628000000000e-10 -5.412878201925e-01 + 9.728000000000e-10 -2.038573569097e-01 + 9.828000000000e-10 1.343035264203e-01 + 9.928000000000e-10 3.894790170617e-01 + 1.000000000000e-09 5.100069898815e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/conditions.yaml new file mode 100644 index 00000000..5b32d934 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 11 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_11 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/CML_core_tb.sch new file mode 100644 index 00000000..4341a240 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/CML_core_tb_12.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/CML_core_tb_12.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/CML_core_tb_12.data new file mode 100644 index 00000000..db4e4cce --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/CML_core_tb_12.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.049557277618e-01 + 1.728000000000e-10 -1.958466480437e-01 + 1.828000000000e-10 1.196319367700e-01 + 1.928000000000e-10 3.700244189406e-01 + 2.028000000000e-10 5.308067637731e-01 + 2.128000000000e-10 6.311299202315e-01 + 2.228000000000e-10 7.086540860403e-01 + 2.328000000000e-10 7.625529356493e-01 + 2.428000000000e-10 7.708473475114e-01 + 2.528000000000e-10 6.980446990655e-01 + 2.628000000000e-10 4.981026307256e-01 + 2.728000000000e-10 1.904449044265e-01 + 2.828000000000e-10 -1.236510258628e-01 + 2.928000000000e-10 -3.730975798774e-01 + 3.028000000000e-10 -5.333436235403e-01 + 3.128000000000e-10 -6.328422885796e-01 + 3.228000000000e-10 -7.099622515515e-01 + 3.328000000000e-10 -7.633093670089e-01 + 3.428000000000e-10 -7.714462858000e-01 + 3.528000000000e-10 -6.983543456334e-01 + 3.628000000000e-10 -4.984830350414e-01 + 3.728000000000e-10 -1.906133898346e-01 + 3.828000000000e-10 1.234140438752e-01 + 3.928000000000e-10 3.730258572177e-01 + 4.028000000000e-10 5.331667972487e-01 + 4.128000000000e-10 6.328214645319e-01 + 4.228000000000e-10 7.098336990067e-01 + 4.328000000000e-10 7.633335528675e-01 + 4.428000000000e-10 7.713603033543e-01 + 4.528000000000e-10 6.984040906368e-01 + 4.628000000000e-10 4.984087981115e-01 + 4.728000000000e-10 1.906698925098e-01 + 4.828000000000e-10 -1.234792426423e-01 + 4.928000000000e-10 -3.729733539485e-01 + 5.028000000000e-10 -5.332277682129e-01 + 5.128000000000e-10 -6.327690017914e-01 + 5.228000000000e-10 -7.098933602520e-01 + 5.328000000000e-10 -7.632805035294e-01 + 5.428000000000e-10 -7.714147767047e-01 + 5.528000000000e-10 -6.983493927960e-01 + 5.628000000000e-10 -4.984657326360e-01 + 5.728000000000e-10 -1.906133403657e-01 + 5.828000000000e-10 1.234275058651e-01 + 5.928000000000e-10 3.730246636548e-01 + 6.028000000000e-10 5.331775888699e-01 + 6.128000000000e-10 6.328197652536e-01 + 6.228000000000e-10 7.098419058182e-01 + 6.328000000000e-10 7.633301342197e-01 + 6.428000000000e-10 7.713661487972e-01 + 6.528000000000e-10 6.983986251010e-01 + 6.628000000000e-10 4.984160910452e-01 + 6.728000000000e-10 1.906635868460e-01 + 6.828000000000e-10 -1.234734747225e-01 + 6.928000000000e-10 -3.729797013887e-01 + 7.028000000000e-10 -5.332215969565e-01 + 7.128000000000e-10 -6.327757131741e-01 + 7.228000000000e-10 -7.098865351622e-01 + 7.328000000000e-10 -7.632871392149e-01 + 7.428000000000e-10 -7.714081948986e-01 + 7.528000000000e-10 -6.983555969606e-01 + 7.628000000000e-10 -4.984601688237e-01 + 7.728000000000e-10 -1.906192454806e-01 + 7.828000000000e-10 1.234332321656e-01 + 7.928000000000e-10 3.730195983111e-01 + 8.028000000000e-10 5.331826746949e-01 + 8.128000000000e-10 6.328151783475e-01 + 8.228000000000e-10 7.098466992587e-01 + 8.328000000000e-10 7.633256332241e-01 + 8.428000000000e-10 7.713705417094e-01 + 8.528000000000e-10 6.983937777920e-01 + 8.628000000000e-10 4.984215072239e-01 + 8.728000000000e-10 1.906583322627e-01 + 8.828000000000e-10 -1.234689419945e-01 + 8.928000000000e-10 -3.729845695752e-01 + 9.028000000000e-10 -5.332169477613e-01 + 9.128000000000e-10 -6.327807857544e-01 + 9.228000000000e-10 -7.098815617208e-01 + 9.328000000000e-10 -7.632920474235e-01 + 9.428000000000e-10 -7.714033753149e-01 + 9.528000000000e-10 -6.983602366678e-01 + 9.628000000000e-10 -4.984557776243e-01 + 9.728000000000e-10 -1.906237729891e-01 + 9.828000000000e-10 1.234375916302e-01 + 9.928000000000e-10 3.730155682884e-01 + 1.000000000000e-09 4.959193237551e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/conditions.yaml new file mode 100644 index 00000000..7de6eb46 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 12 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_12 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/CML_core_tb.sch new file mode 100644 index 00000000..f7a1d543 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/CML_core_tb_13.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/CML_core_tb_13.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/CML_core_tb_13.data new file mode 100644 index 00000000..abbd3617 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/CML_core_tb_13.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.935497259980e-01 + 1.728000000000e-10 -1.928633983658e-01 + 1.828000000000e-10 1.160949240371e-01 + 1.928000000000e-10 3.619360857197e-01 + 2.028000000000e-10 5.185143131218e-01 + 2.128000000000e-10 6.170086772416e-01 + 2.228000000000e-10 6.939063598865e-01 + 2.328000000000e-10 7.457993341265e-01 + 2.428000000000e-10 7.520509596304e-01 + 2.528000000000e-10 6.804739824857e-01 + 2.628000000000e-10 4.870426149481e-01 + 2.728000000000e-10 1.875308246798e-01 + 2.828000000000e-10 -1.202389208092e-01 + 2.928000000000e-10 -3.651754434827e-01 + 3.028000000000e-10 -5.211918880427e-01 + 3.128000000000e-10 -6.188469707889e-01 + 3.228000000000e-10 -6.953072467312e-01 + 3.328000000000e-10 -7.466129151979e-01 + 3.428000000000e-10 -7.526565311823e-01 + 3.528000000000e-10 -6.807675409917e-01 + 3.628000000000e-10 -4.873945801883e-01 + 3.728000000000e-10 -1.876809763872e-01 + 3.828000000000e-10 1.200199744899e-01 + 3.928000000000e-10 3.651151173578e-01 + 4.028000000000e-10 5.210322421793e-01 + 4.128000000000e-10 6.188330192958e-01 + 4.228000000000e-10 6.951893716680e-01 + 4.328000000000e-10 7.466394998986e-01 + 4.428000000000e-10 7.525773069027e-01 + 4.528000000000e-10 6.808165070916e-01 + 4.628000000000e-10 4.873248087716e-01 + 4.728000000000e-10 1.877358679741e-01 + 4.828000000000e-10 -1.200819840902e-01 + 4.928000000000e-10 -3.650646413699e-01 + 5.028000000000e-10 -5.210903047408e-01 + 5.128000000000e-10 -6.187830156405e-01 + 5.228000000000e-10 -6.952462050643e-01 + 5.328000000000e-10 -7.465883056072e-01 + 5.428000000000e-10 -7.526293067125e-01 + 5.528000000000e-10 -6.807638103361e-01 + 5.628000000000e-10 -4.873795115625e-01 + 5.728000000000e-10 -1.876807689254e-01 + 5.828000000000e-10 1.200326256254e-01 + 5.928000000000e-10 3.651139754788e-01 + 6.028000000000e-10 5.210426454606e-01 + 6.128000000000e-10 6.188315227579e-01 + 6.228000000000e-10 6.951972695911e-01 + 6.328000000000e-10 7.466359762403e-01 + 6.428000000000e-10 7.525829976005e-01 + 6.528000000000e-10 6.808110143898e-01 + 6.628000000000e-10 4.873318873720e-01 + 6.728000000000e-10 1.877292356433e-01 + 6.828000000000e-10 -1.200767202072e-01 + 6.928000000000e-10 -3.650706499628e-01 + 7.028000000000e-10 -5.210847183857e-01 + 7.128000000000e-10 -6.187893543189e-01 + 7.228000000000e-10 -6.952399017798e-01 + 7.328000000000e-10 -7.465944604664e-01 + 7.428000000000e-10 -7.526232942576e-01 + 7.528000000000e-10 -6.807695137827e-01 + 7.628000000000e-10 -4.873744121182e-01 + 7.728000000000e-10 -1.876860880622e-01 + 7.828000000000e-10 1.200380835632e-01 + 7.928000000000e-10 3.651091778387e-01 + 8.028000000000e-10 5.210475167171e-01 + 8.128000000000e-10 6.188272213187e-01 + 8.228000000000e-10 6.952018279574e-01 + 8.328000000000e-10 7.466316140292e-01 + 8.428000000000e-10 7.525872528114e-01 + 8.528000000000e-10 6.808063071094e-01 + 8.628000000000e-10 4.873371355126e-01 + 8.728000000000e-10 1.877239857571e-01 + 8.828000000000e-10 -1.200724809112e-01 + 8.928000000000e-10 -3.650752679165e-01 + 9.028000000000e-10 -5.210804068397e-01 + 9.128000000000e-10 -6.187941569931e-01 + 9.228000000000e-10 -6.952352466105e-01 + 9.328000000000e-10 -7.465990720366e-01 + 9.428000000000e-10 -7.526188226163e-01 + 9.528000000000e-10 -6.807738360998e-01 + 9.628000000000e-10 -4.873703126609e-01 + 9.728000000000e-10 -1.876902725775e-01 + 9.828000000000e-10 1.200422409457e-01 + 9.928000000000e-10 3.651053453859e-01 + 1.000000000000e-09 4.847952698035e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/conditions.yaml new file mode 100644 index 00000000..7e7f43da --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 13 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_13 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/CML_core_tb.sch new file mode 100644 index 00000000..ff92c0fe --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/CML_core_tb_14.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/CML_core_tb_14.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/CML_core_tb_14.data new file mode 100644 index 00000000..3796cea3 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/CML_core_tb_14.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.133282675634e-01 + 1.728000000000e-10 -2.031582081928e-01 + 1.828000000000e-10 1.144804838339e-01 + 1.928000000000e-10 3.698591588516e-01 + 2.028000000000e-10 5.380258146680e-01 + 2.128000000000e-10 6.422542980920e-01 + 2.228000000000e-10 7.191574927620e-01 + 2.328000000000e-10 7.734390216007e-01 + 2.428000000000e-10 7.823512104827e-01 + 2.528000000000e-10 7.081342613122e-01 + 2.628000000000e-10 5.065809773945e-01 + 2.728000000000e-10 1.980707374060e-01 + 2.828000000000e-10 -1.181831896095e-01 + 2.928000000000e-10 -3.727163876319e-01 + 3.028000000000e-10 -5.404428949084e-01 + 3.128000000000e-10 -6.438704305572e-01 + 3.228000000000e-10 -7.204145434420e-01 + 3.328000000000e-10 -7.741471374370e-01 + 3.428000000000e-10 -7.829309638154e-01 + 3.528000000000e-10 -7.084110972821e-01 + 3.628000000000e-10 -5.069426471107e-01 + 3.728000000000e-10 -1.982066720174e-01 + 3.828000000000e-10 1.179564926067e-01 + 3.928000000000e-10 3.726621714283e-01 + 4.028000000000e-10 5.402630628674e-01 + 4.128000000000e-10 6.438601752956e-01 + 4.228000000000e-10 7.202791375194e-01 + 4.328000000000e-10 7.741793827377e-01 + 4.428000000000e-10 7.828380754967e-01 + 4.528000000000e-10 7.084693803333e-01 + 4.628000000000e-10 5.068627667504e-01 + 4.728000000000e-10 1.982719515445e-01 + 4.828000000000e-10 -1.180275895897e-01 + 4.928000000000e-10 -3.726028735362e-01 + 5.028000000000e-10 -5.403301024789e-01 + 5.128000000000e-10 -6.438008084190e-01 + 5.228000000000e-10 -7.203455420725e-01 + 5.328000000000e-10 -7.741198297783e-01 + 5.428000000000e-10 -7.828987326701e-01 + 5.528000000000e-10 -7.084084859242e-01 + 5.628000000000e-10 -5.069251044876e-01 + 5.728000000000e-10 -1.982094732584e-01 + 5.828000000000e-10 1.179697981212e-01 + 5.928000000000e-10 3.726595322461e-01 + 6.028000000000e-10 5.402739437431e-01 + 6.128000000000e-10 6.438573026479e-01 + 6.228000000000e-10 7.202880216174e-01 + 6.328000000000e-10 7.741750830136e-01 + 6.428000000000e-10 7.828445699494e-01 + 6.528000000000e-10 7.084631989914e-01 + 6.628000000000e-10 5.068703543607e-01 + 6.728000000000e-10 1.982651160797e-01 + 6.828000000000e-10 -1.180209524418e-01 + 6.928000000000e-10 -3.726100259571e-01 + 7.028000000000e-10 -5.403229404029e-01 + 7.128000000000e-10 -6.438083895554e-01 + 7.228000000000e-10 -7.203378638829e-01 + 7.328000000000e-10 -7.741273273776e-01 + 7.428000000000e-10 -7.828912312659e-01 + 7.528000000000e-10 -7.084155733246e-01 + 7.628000000000e-10 -5.069185371484e-01 + 7.728000000000e-10 -1.982163796445e-01 + 7.828000000000e-10 1.179761824049e-01 + 7.928000000000e-10 3.726538824343e-01 + 8.028000000000e-10 5.402795684719e-01 + 8.128000000000e-10 6.438520994328e-01 + 8.228000000000e-10 7.202935093188e-01 + 8.328000000000e-10 7.741699689895e-01 + 8.428000000000e-10 7.828494756723e-01 + 8.528000000000e-10 7.084578188073e-01 + 8.628000000000e-10 5.068761410729e-01 + 8.728000000000e-10 1.982594122387e-01 + 8.828000000000e-10 -1.180157633845e-01 + 8.928000000000e-10 -3.726154653834e-01 + 9.028000000000e-10 -5.403175771302e-01 + 9.128000000000e-10 -6.438140825829e-01 + 9.228000000000e-10 -7.203322576361e-01 + 9.328000000000e-10 -7.741328388949e-01 + 9.428000000000e-10 -7.828857350121e-01 + 9.528000000000e-10 -7.084208512479e-01 + 9.628000000000e-10 -5.069134738545e-01 + 9.728000000000e-10 -1.982215797151e-01 + 9.828000000000e-10 1.179810466336e-01 + 9.928000000000e-10 3.726493985613e-01 + 1.000000000000e-09 5.010433738758e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/conditions.yaml new file mode 100644 index 00000000..ec458589 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 14 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_14 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/CML_core_tb.sch new file mode 100644 index 00000000..f5d44dfb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/CML_core_tb_15.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/CML_core_tb_15.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/CML_core_tb_15.data new file mode 100644 index 00000000..a18684b0 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/CML_core_tb_15.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.764925698370e-01 + 1.728000000000e-10 -1.934019301872e-01 + 1.828000000000e-10 1.027850457497e-01 + 1.928000000000e-10 3.499528968595e-01 + 2.028000000000e-10 5.186059326128e-01 + 2.128000000000e-10 6.254912177700e-01 + 2.228000000000e-10 6.994356057335e-01 + 2.328000000000e-10 7.419604616039e-01 + 2.428000000000e-10 7.366001230119e-01 + 2.528000000000e-10 6.575586826882e-01 + 2.628000000000e-10 4.703480039804e-01 + 2.728000000000e-10 1.887311437228e-01 + 2.828000000000e-10 -1.064955609068e-01 + 2.928000000000e-10 -3.530674432656e-01 + 3.028000000000e-10 -5.214103928852e-01 + 3.128000000000e-10 -6.276329249236e-01 + 3.228000000000e-10 -7.010919569868e-01 + 3.328000000000e-10 -7.428528846984e-01 + 3.428000000000e-10 -7.371070425945e-01 + 3.528000000000e-10 -6.576931102984e-01 + 3.628000000000e-10 -4.705213908487e-01 + 3.728000000000e-10 -1.887451417089e-01 + 3.828000000000e-10 1.063771169054e-01 + 3.928000000000e-10 3.530644558224e-01 + 4.028000000000e-10 5.212882945537e-01 + 4.128000000000e-10 6.276273956697e-01 + 4.228000000000e-10 7.009872983885e-01 + 4.328000000000e-10 7.428850006835e-01 + 4.428000000000e-10 7.370483197885e-01 + 4.528000000000e-10 6.577532995019e-01 + 4.628000000000e-10 4.704734311564e-01 + 4.728000000000e-10 1.888066765622e-01 + 4.828000000000e-10 -1.064251900033e-01 + 4.928000000000e-10 -3.530110058012e-01 + 5.028000000000e-10 -5.213363794122e-01 + 5.128000000000e-10 -6.275779961821e-01 + 5.228000000000e-10 -7.010367362436e-01 + 5.328000000000e-10 -7.428359180794e-01 + 5.428000000000e-10 -7.370946234404e-01 + 5.528000000000e-10 -6.577041924295e-01 + 5.628000000000e-10 -4.705211118057e-01 + 5.728000000000e-10 -1.887571402743e-01 + 5.828000000000e-10 1.063798390696e-01 + 5.928000000000e-10 3.530562876751e-01 + 6.028000000000e-10 5.212929538773e-01 + 6.128000000000e-10 6.276223718978e-01 + 6.228000000000e-10 7.009927681762e-01 + 6.328000000000e-10 7.428797293753e-01 + 6.428000000000e-10 7.370526578677e-01 + 6.528000000000e-10 6.577470674825e-01 + 6.628000000000e-10 4.704784998901e-01 + 6.728000000000e-10 1.888003575241e-01 + 6.828000000000e-10 -1.064204487643e-01 + 6.928000000000e-10 -3.530168946500e-01 + 7.028000000000e-10 -5.213312567329e-01 + 7.128000000000e-10 -6.275838929681e-01 + 7.228000000000e-10 -7.010312441909e-01 + 7.328000000000e-10 -7.428415937954e-01 + 7.428000000000e-10 -7.370893810626e-01 + 7.528000000000e-10 -6.577094889087e-01 + 7.628000000000e-10 -4.705162397262e-01 + 7.728000000000e-10 -1.887623115300e-01 + 7.828000000000e-10 1.063847513579e-01 + 7.928000000000e-10 3.530516705381e-01 + 8.028000000000e-10 5.212973590939e-01 + 8.128000000000e-10 6.276181223045e-01 + 8.228000000000e-10 7.009970786285e-01 + 8.328000000000e-10 7.428754735512e-01 + 8.428000000000e-10 7.370567570344e-01 + 8.528000000000e-10 6.577427030952e-01 + 8.628000000000e-10 4.704830497474e-01 + 8.728000000000e-10 1.887958404937e-01 + 8.828000000000e-10 -1.064163174914e-01 + 8.928000000000e-10 -3.530210908451e-01 + 9.028000000000e-10 -5.213271590930e-01 + 9.128000000000e-10 -6.275881896870e-01 + 9.228000000000e-10 -7.010270518598e-01 + 9.328000000000e-10 -7.428457852801e-01 + 9.428000000000e-10 -7.370853633469e-01 + 9.528000000000e-10 -6.577134719194e-01 + 9.628000000000e-10 -4.705123783357e-01 + 9.728000000000e-10 -1.887662540331e-01 + 9.828000000000e-10 1.063885555413e-01 + 9.928000000000e-10 3.530480784075e-01 + 1.000000000000e-09 4.814572085440e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/conditions.yaml new file mode 100644 index 00000000..72976e82 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 15 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_15 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/CML_core_tb.sch new file mode 100644 index 00000000..a044fcea --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/CML_core_tb_16.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/CML_core_tb_16.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/CML_core_tb_16.data new file mode 100644 index 00000000..5b9b7365 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/CML_core_tb_16.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.643042367579e-01 + 1.728000000000e-10 -1.889536448800e-01 + 1.828000000000e-10 1.011027156160e-01 + 1.928000000000e-10 3.431119917378e-01 + 2.028000000000e-10 5.070519088353e-01 + 2.128000000000e-10 6.112991757094e-01 + 2.228000000000e-10 6.838020209744e-01 + 2.328000000000e-10 7.242864479517e-01 + 2.428000000000e-10 7.174167448313e-01 + 2.528000000000e-10 6.398083866093e-01 + 2.628000000000e-10 4.585166519927e-01 + 2.728000000000e-10 1.844271573483e-01 + 2.828000000000e-10 -1.048019054065e-01 + 2.928000000000e-10 -3.462317584687e-01 + 3.028000000000e-10 -5.098344721858e-01 + 3.128000000000e-10 -6.133899227371e-01 + 3.228000000000e-10 -6.853968517792e-01 + 3.328000000000e-10 -7.251059393871e-01 + 3.428000000000e-10 -7.178642533065e-01 + 3.528000000000e-10 -6.398898931720e-01 + 3.628000000000e-10 -4.586473976402e-01 + 3.728000000000e-10 -1.843989570585e-01 + 3.828000000000e-10 1.047140758745e-01 + 3.928000000000e-10 3.462576483703e-01 + 4.028000000000e-10 5.097333770465e-01 + 4.128000000000e-10 6.134023110554e-01 + 4.228000000000e-10 6.853047053340e-01 + 4.328000000000e-10 7.251501511308e-01 + 4.428000000000e-10 7.178117501486e-01 + 4.528000000000e-10 6.399568281317e-01 + 4.628000000000e-10 4.586017943502e-01 + 4.728000000000e-10 1.844658494373e-01 + 4.828000000000e-10 -1.047609876408e-01 + 4.928000000000e-10 -3.462003104379e-01 + 5.028000000000e-10 -5.097813732572e-01 + 5.128000000000e-10 -6.133504189098e-01 + 5.228000000000e-10 -6.853547602223e-01 + 5.328000000000e-10 -7.250985458364e-01 + 5.428000000000e-10 -7.178593251267e-01 + 5.528000000000e-10 -6.399055102013e-01 + 5.628000000000e-10 -4.586511534755e-01 + 5.728000000000e-10 -1.844138975484e-01 + 5.828000000000e-10 1.047143295024e-01 + 5.928000000000e-10 3.462472486482e-01 + 6.028000000000e-10 5.097369504642e-01 + 6.128000000000e-10 6.133959963639e-01 + 6.228000000000e-10 6.853096740322e-01 + 6.328000000000e-10 7.251438129543e-01 + 6.428000000000e-10 7.178160816468e-01 + 6.528000000000e-10 6.399498616471e-01 + 6.628000000000e-10 4.586069220749e-01 + 6.728000000000e-10 1.844588245643e-01 + 6.828000000000e-10 -1.047563687876e-01 + 6.928000000000e-10 -3.462063328010e-01 + 7.028000000000e-10 -5.097765086741e-01 + 7.128000000000e-10 -6.133562893232e-01 + 7.228000000000e-10 -6.853494321266e-01 + 7.328000000000e-10 -7.251041291885e-01 + 7.428000000000e-10 -7.178542203751e-01 + 7.528000000000e-10 -6.399107355976e-01 + 7.628000000000e-10 -4.586462738291e-01 + 7.728000000000e-10 -1.844190131957e-01 + 7.828000000000e-10 1.047193339603e-01 + 7.928000000000e-10 3.462424630766e-01 + 8.028000000000e-10 5.097415276109e-01 + 8.128000000000e-10 6.133915881396e-01 + 8.228000000000e-10 6.853141467162e-01 + 8.328000000000e-10 7.251393167662e-01 + 8.428000000000e-10 7.178204152808e-01 + 8.528000000000e-10 6.399452651751e-01 + 8.628000000000e-10 4.586116651576e-01 + 8.728000000000e-10 1.844540563551e-01 + 8.828000000000e-10 -1.047521530128e-01 + 8.928000000000e-10 -3.462105768541e-01 + 9.028000000000e-10 -5.097724238353e-01 + 9.128000000000e-10 -6.133605792288e-01 + 9.228000000000e-10 -6.853452315529e-01 + 9.328000000000e-10 -7.251083207568e-01 + 9.428000000000e-10 -7.178502144615e-01 + 9.528000000000e-10 -6.399147306347e-01 + 9.628000000000e-10 -4.586423495280e-01 + 9.728000000000e-10 -1.844229988419e-01 + 9.828000000000e-10 1.047232268776e-01 + 9.928000000000e-10 3.462387497741e-01 + 1.000000000000e-09 4.710752262880e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/conditions.yaml new file mode 100644 index 00000000..178ac9dd --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 16 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_16 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/CML_core_tb.sch new file mode 100644 index 00000000..f915ac12 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/CML_core_tb_17.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/CML_core_tb_17.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/CML_core_tb_17.data new file mode 100644 index 00000000..15600382 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/CML_core_tb_17.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.852886719505e-01 + 1.728000000000e-10 -2.023606658915e-01 + 1.828000000000e-10 9.500407548716e-02 + 1.928000000000e-10 3.473018630854e-01 + 2.028000000000e-10 5.238539974445e-01 + 2.128000000000e-10 6.356942626004e-01 + 2.228000000000e-10 7.106560719901e-01 + 2.328000000000e-10 7.539243132234e-01 + 2.428000000000e-10 7.486736309564e-01 + 2.528000000000e-10 6.681985082542e-01 + 2.628000000000e-10 4.800908099257e-01 + 2.728000000000e-10 1.985903293754e-01 + 2.828000000000e-10 -9.801965724844e-02 + 2.928000000000e-10 -3.499456539083e-01 + 3.028000000000e-10 -5.264166063204e-01 + 3.128000000000e-10 -6.377599985577e-01 + 3.228000000000e-10 -7.123258227204e-01 + 3.328000000000e-10 -7.548386637736e-01 + 3.428000000000e-10 -7.491646196322e-01 + 3.528000000000e-10 -6.682802381819e-01 + 3.628000000000e-10 -4.802044877583e-01 + 3.728000000000e-10 -1.985554586747e-01 + 3.828000000000e-10 9.793570714348e-02 + 3.928000000000e-10 3.499705083814e-01 + 4.028000000000e-10 5.263126851869e-01 + 4.128000000000e-10 6.377668221774e-01 + 4.228000000000e-10 7.122256281615e-01 + 4.328000000000e-10 7.548735616237e-01 + 4.428000000000e-10 7.491068615558e-01 + 4.528000000000e-10 6.683430307676e-01 + 4.628000000000e-10 4.801581700099e-01 + 4.728000000000e-10 1.986186025664e-01 + 4.828000000000e-10 -9.798359332438e-02 + 4.928000000000e-10 -3.499159407959e-01 + 5.028000000000e-10 -5.263605524234e-01 + 5.128000000000e-10 -6.377159898188e-01 + 5.228000000000e-10 -7.122753084256e-01 + 5.328000000000e-10 -7.548237332543e-01 + 5.428000000000e-10 -7.491535548765e-01 + 5.528000000000e-10 -6.682936663178e-01 + 5.628000000000e-10 -4.802057994081e-01 + 5.728000000000e-10 -1.985692377738e-01 + 5.828000000000e-10 9.793754425938e-02 + 5.928000000000e-10 3.499612594703e-01 + 6.028000000000e-10 5.263165540334e-01 + 6.128000000000e-10 6.377608692391e-01 + 6.228000000000e-10 7.122309292959e-01 + 6.328000000000e-10 7.548679483739e-01 + 6.428000000000e-10 7.491113260135e-01 + 6.528000000000e-10 6.683367510584e-01 + 6.628000000000e-10 4.801631540398e-01 + 6.728000000000e-10 1.986123746205e-01 + 6.828000000000e-10 -9.797860547701e-02 + 6.928000000000e-10 -3.499219086015e-01 + 7.028000000000e-10 -5.263552271330e-01 + 7.128000000000e-10 -6.377219921840e-01 + 7.228000000000e-10 -7.122696952774e-01 + 7.328000000000e-10 -7.548295298651e-01 + 7.428000000000e-10 -7.491481908175e-01 + 7.528000000000e-10 -6.682991221138e-01 + 7.628000000000e-10 -4.802006967346e-01 + 7.728000000000e-10 -1.985745887274e-01 + 7.828000000000e-10 9.794256695295e-02 + 7.928000000000e-10 3.499565849765e-01 + 8.028000000000e-10 5.263210489698e-01 + 8.128000000000e-10 6.377564579322e-01 + 8.228000000000e-10 7.122353719246e-01 + 8.328000000000e-10 7.548635649925e-01 + 8.428000000000e-10 7.491155123701e-01 + 8.528000000000e-10 6.683323549155e-01 + 8.628000000000e-10 4.801676539865e-01 + 8.728000000000e-10 1.986078923136e-01 + 8.828000000000e-10 -9.797434132868e-02 + 8.928000000000e-10 -3.499261582655e-01 + 9.028000000000e-10 -5.263510069851e-01 + 9.128000000000e-10 -6.377263524572e-01 + 9.228000000000e-10 -7.122654282965e-01 + 9.328000000000e-10 -7.548337908470e-01 + 9.428000000000e-10 -7.491440991364e-01 + 9.528000000000e-10 -6.683032069827e-01 + 9.628000000000e-10 -4.801967157057e-01 + 9.728000000000e-10 -1.985786291727e-01 + 9.828000000000e-10 9.794644208878e-02 + 9.928000000000e-10 3.499529545785e-01 + 1.000000000000e-09 4.843355885316e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/conditions.yaml new file mode 100644 index 00000000..4932bffd --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 17 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_17 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/CML_core_tb.sch new file mode 100644 index 00000000..23448941 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/CML_core_tb_18.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/CML_core_tb_18.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/CML_core_tb_18.data new file mode 100644 index 00000000..6bdb4a2e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/CML_core_tb_18.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.747244840755e-01 + 1.728000000000e-10 2.031348680811e-01 + 1.828000000000e-10 -1.640358346053e-01 + 1.928000000000e-10 -4.121983890365e-01 + 2.028000000000e-10 -5.403960481430e-01 + 2.128000000000e-10 -6.175267008304e-01 + 2.228000000000e-10 -7.185181164841e-01 + 2.328000000000e-10 -8.111835866476e-01 + 2.428000000000e-10 -8.505757111821e-01 + 2.528000000000e-10 -7.941523888433e-01 + 2.628000000000e-10 -5.697557803605e-01 + 2.728000000000e-10 -1.993901761575e-01 + 2.828000000000e-10 1.667454340744e-01 + 2.928000000000e-10 4.143424459307e-01 + 3.028000000000e-10 5.421310172268e-01 + 3.128000000000e-10 6.189024162340e-01 + 3.228000000000e-10 7.194369498053e-01 + 3.328000000000e-10 8.117600127730e-01 + 3.428000000000e-10 8.508336653308e-01 + 3.528000000000e-10 7.942656656211e-01 + 3.628000000000e-10 5.697751550033e-01 + 3.728000000000e-10 1.994135726672e-01 + 3.828000000000e-10 -1.667386419247e-01 + 3.928000000000e-10 -4.143148464313e-01 + 4.028000000000e-10 -5.421262038320e-01 + 4.128000000000e-10 -6.188832903749e-01 + 4.228000000000e-10 -7.194346712496e-01 + 4.328000000000e-10 -8.117442314974e-01 + 4.428000000000e-10 -8.508381039982e-01 + 4.528000000000e-10 -7.942559196005e-01 + 4.628000000000e-10 -5.697859373045e-01 + 4.728000000000e-10 -1.993975895742e-01 + 4.828000000000e-10 1.667322235508e-01 + 4.928000000000e-10 4.143280512458e-01 + 5.028000000000e-10 5.421195877560e-01 + 5.128000000000e-10 6.188968586913e-01 + 5.228000000000e-10 7.194236426239e-01 + 5.328000000000e-10 8.117540342679e-01 + 5.428000000000e-10 8.508266757829e-01 + 5.528000000000e-10 7.942652287581e-01 + 5.628000000000e-10 5.697754142960e-01 + 5.728000000000e-10 1.994033695962e-01 + 5.828000000000e-10 -1.667424669503e-01 + 5.928000000000e-10 -4.143216611718e-01 + 6.028000000000e-10 -5.421291067647e-01 + 6.128000000000e-10 -6.188909595847e-01 + 6.228000000000e-10 -7.194310352535e-01 + 6.328000000000e-10 -8.117467342350e-01 + 6.428000000000e-10 -8.508333273630e-01 + 6.528000000000e-10 -7.942577903765e-01 + 6.628000000000e-10 -5.697836419865e-01 + 6.728000000000e-10 -1.993929431350e-01 + 6.828000000000e-10 1.667361734044e-01 + 6.928000000000e-10 4.143307053824e-01 + 7.028000000000e-10 5.421226813799e-01 + 7.128000000000e-10 6.189001833416e-01 + 7.228000000000e-10 7.194227358993e-01 + 7.328000000000e-10 8.117542266055e-01 + 7.428000000000e-10 8.508251070290e-01 + 7.528000000000e-10 7.942649966766e-01 + 7.628000000000e-10 5.697756363247e-01 + 7.728000000000e-10 1.993989977467e-01 + 7.828000000000e-10 -1.667434615441e-01 + 7.928000000000e-10 -4.143248161746e-01 + 8.028000000000e-10 -5.421295610790e-01 + 8.128000000000e-10 -6.188945163710e-01 + 8.228000000000e-10 -7.194289229798e-01 + 8.328000000000e-10 -8.117483413843e-01 + 8.428000000000e-10 -8.508308647988e-01 + 8.528000000000e-10 -7.942590780393e-01 + 8.628000000000e-10 -5.697822347435e-01 + 8.728000000000e-10 -1.993917000580e-01 + 8.828000000000e-10 1.667380255271e-01 + 8.928000000000e-10 4.143314131245e-01 + 9.028000000000e-10 5.421241182927e-01 + 9.128000000000e-10 6.189011822630e-01 + 9.228000000000e-10 7.194226089303e-01 + 9.328000000000e-10 8.117540798381e-01 + 9.428000000000e-10 8.508247577722e-01 + 9.528000000000e-10 7.942646412254e-01 + 9.628000000000e-10 5.697760282588e-01 + 9.728000000000e-10 1.993969946892e-01 + 9.828000000000e-10 -1.667434796269e-01 + 9.928000000000e-10 -4.143264352220e-01 + 1.000000000000e-09 -5.150731751424e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/conditions.yaml new file mode 100644 index 00000000..35485a45 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 18 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_18 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/CML_core_tb.sch new file mode 100644 index 00000000..8d68286d --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/CML_core_tb_19.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/CML_core_tb_19.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/CML_core_tb_19.data new file mode 100644 index 00000000..cfa0d051 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/CML_core_tb_19.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.707988120441e-01 + 1.728000000000e-10 2.050562196689e-01 + 1.828000000000e-10 -1.568083182045e-01 + 1.928000000000e-10 -4.020696229917e-01 + 2.028000000000e-10 -5.270997867267e-01 + 2.128000000000e-10 -6.030122328411e-01 + 2.228000000000e-10 -7.060404303518e-01 + 2.328000000000e-10 -7.977729548420e-01 + 2.428000000000e-10 -8.357087979117e-01 + 2.528000000000e-10 -7.823438332914e-01 + 2.628000000000e-10 -5.641015035384e-01 + 2.728000000000e-10 -1.996979729386e-01 + 2.828000000000e-10 1.605395493177e-01 + 2.928000000000e-10 4.049019788065e-01 + 3.028000000000e-10 5.293349858313e-01 + 3.128000000000e-10 6.047755538782e-01 + 3.228000000000e-10 7.072083327509e-01 + 3.328000000000e-10 7.985177439850e-01 + 3.428000000000e-10 8.360745897587e-01 + 3.528000000000e-10 7.825643018760e-01 + 3.628000000000e-10 5.642043953033e-01 + 3.728000000000e-10 1.998026918934e-01 + 3.828000000000e-10 -1.604858693758e-01 + 3.928000000000e-10 -4.048299316522e-01 + 4.028000000000e-10 -5.293048172022e-01 + 4.128000000000e-10 -6.047267733392e-01 + 4.228000000000e-10 -7.071932602489e-01 + 4.328000000000e-10 -7.984844304353e-01 + 4.428000000000e-10 -8.360789616419e-01 + 4.528000000000e-10 -7.825446968704e-01 + 4.628000000000e-10 -5.642205462461e-01 + 4.728000000000e-10 -1.997755595675e-01 + 4.828000000000e-10 1.604765943145e-01 + 4.928000000000e-10 4.048512691297e-01 + 5.028000000000e-10 5.292953655278e-01 + 5.128000000000e-10 6.047472585148e-01 + 5.228000000000e-10 7.071773753770e-01 + 5.328000000000e-10 7.985008103891e-01 + 5.428000000000e-10 8.360621173440e-01 + 5.528000000000e-10 7.825604957102e-01 + 5.628000000000e-10 5.642042607216e-01 + 5.728000000000e-10 1.997857962408e-01 + 5.828000000000e-10 -1.604926267251e-01 + 5.928000000000e-10 -4.048407079574e-01 + 6.028000000000e-10 -5.293103597207e-01 + 6.128000000000e-10 -6.047374718328e-01 + 6.228000000000e-10 -7.071895246392e-01 + 6.328000000000e-10 -7.984887922220e-01 + 6.428000000000e-10 -8.360735876941e-01 + 6.528000000000e-10 -7.825482507809e-01 + 6.628000000000e-10 -5.642183473935e-01 + 6.728000000000e-10 -1.997692084041e-01 + 6.828000000000e-10 1.604823178167e-01 + 6.928000000000e-10 4.048548923992e-01 + 7.028000000000e-10 5.293001528657e-01 + 7.128000000000e-10 6.047514904939e-01 + 7.228000000000e-10 7.071767775245e-01 + 7.328000000000e-10 7.985010886851e-01 + 7.428000000000e-10 8.360609061049e-01 + 7.528000000000e-10 7.825602391468e-01 + 7.628000000000e-10 5.642057995328e-01 + 7.728000000000e-10 1.997793833692e-01 + 7.828000000000e-10 -1.604939026989e-01 + 7.928000000000e-10 -4.048452814924e-01 + 8.028000000000e-10 -5.293110935611e-01 + 8.128000000000e-10 -6.047422910037e-01 + 8.228000000000e-10 -7.071868576548e-01 + 8.328000000000e-10 -7.984914661054e-01 + 8.428000000000e-10 -8.360704549701e-01 + 8.528000000000e-10 -7.825505283213e-01 + 8.628000000000e-10 -5.642168951425e-01 + 8.728000000000e-10 -1.997675829904e-01 + 8.828000000000e-10 1.604850893678e-01 + 8.928000000000e-10 4.048557791622e-01 + 9.028000000000e-10 5.293024006551e-01 + 9.128000000000e-10 6.047526676189e-01 + 9.228000000000e-10 7.071769813422e-01 + 9.328000000000e-10 7.985009240492e-01 + 9.428000000000e-10 8.360608174754e-01 + 9.528000000000e-10 7.825597625659e-01 + 9.628000000000e-10 5.642070937767e-01 + 9.728000000000e-10 1.997763618165e-01 + 9.828000000000e-10 -1.604938267743e-01 + 9.928000000000e-10 -4.048476936234e-01 + 1.000000000000e-09 -5.033604123532e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/conditions.yaml new file mode 100644 index 00000000..19fa5343 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 19 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_19 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/CML_core_tb.sch new file mode 100644 index 00000000..e7bdc939 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/CML_core_tb_20.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/CML_core_tb_20.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/CML_core_tb_20.data new file mode 100644 index 00000000..696f2b8b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/CML_core_tb_20.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.787258342535e-01 + 1.728000000000e-10 2.078017915173e-01 + 1.828000000000e-10 -1.622649468476e-01 + 1.928000000000e-10 -4.154784848215e-01 + 2.028000000000e-10 -5.503628241592e-01 + 2.128000000000e-10 -6.299323770996e-01 + 2.228000000000e-10 -7.254942323191e-01 + 2.328000000000e-10 -8.176578932007e-01 + 2.428000000000e-10 -8.600222409410e-01 + 2.528000000000e-10 -8.019093712422e-01 + 2.628000000000e-10 -5.756893793886e-01 + 2.728000000000e-10 -2.057606209176e-01 + 2.828000000000e-10 1.639197157563e-01 + 2.928000000000e-10 4.168841038800e-01 + 3.028000000000e-10 5.515424627408e-01 + 3.128000000000e-10 6.308336221978e-01 + 3.228000000000e-10 7.261208861559e-01 + 3.328000000000e-10 8.180354096547e-01 + 3.428000000000e-10 8.601969327831e-01 + 3.528000000000e-10 8.019450515145e-01 + 3.628000000000e-10 5.756806762770e-01 + 3.728000000000e-10 2.057351595047e-01 + 3.828000000000e-10 -1.639234125928e-01 + 3.928000000000e-10 -4.168916689126e-01 + 4.028000000000e-10 -5.515399403849e-01 + 4.128000000000e-10 -6.308421950132e-01 + 4.228000000000e-10 -7.261151591955e-01 + 4.328000000000e-10 -8.180409257235e-01 + 4.428000000000e-10 -8.601903753395e-01 + 4.528000000000e-10 -8.019506024478e-01 + 4.628000000000e-10 -5.756757498169e-01 + 4.728000000000e-10 -2.057370812605e-01 + 4.828000000000e-10 1.639284669376e-01 + 4.928000000000e-10 4.168895758092e-01 + 5.028000000000e-10 5.515444733402e-01 + 5.128000000000e-10 6.308408648378e-01 + 5.228000000000e-10 7.261175778597e-01 + 5.328000000000e-10 8.180376908128e-01 + 5.428000000000e-10 8.601923700088e-01 + 5.528000000000e-10 8.019470527506e-01 + 5.628000000000e-10 5.756789455974e-01 + 5.728000000000e-10 2.057316537746e-01 + 5.828000000000e-10 -1.639258645561e-01 + 5.928000000000e-10 -4.168940343704e-01 + 6.028000000000e-10 -5.515416140289e-01 + 6.128000000000e-10 -6.308456056710e-01 + 6.228000000000e-10 -7.261132930683e-01 + 6.328000000000e-10 -8.180415890619e-01 + 6.428000000000e-10 -8.601877913845e-01 + 6.528000000000e-10 -8.019507055326e-01 + 6.628000000000e-10 -5.756748223597e-01 + 6.728000000000e-10 -2.057339330851e-01 + 6.828000000000e-10 1.639294327626e-01 + 6.928000000000e-10 4.168918933453e-01 + 7.028000000000e-10 5.515448110547e-01 + 7.128000000000e-10 6.308438013344e-01 + 7.228000000000e-10 7.261156471026e-01 + 7.328000000000e-10 8.180389426729e-01 + 7.428000000000e-10 8.601899882644e-01 + 7.528000000000e-10 8.019478991926e-01 + 7.628000000000e-10 5.756775488816e-01 + 7.728000000000e-10 2.057303912125e-01 + 7.828000000000e-10 -1.639270777727e-01 + 7.928000000000e-10 -4.168949361223e-01 + 8.028000000000e-10 -5.515423789761e-01 + 8.128000000000e-10 -6.308469511551e-01 + 8.228000000000e-10 -7.261125857103e-01 + 8.328000000000e-10 -8.180418172660e-01 + 8.428000000000e-10 -8.601868536640e-01 + 8.528000000000e-10 -8.019506539776e-01 + 8.628000000000e-10 -5.756745040863e-01 + 8.728000000000e-10 -2.057325997968e-01 + 8.828000000000e-10 1.639296206310e-01 + 8.928000000000e-10 4.168929982528e-01 + 9.028000000000e-10 5.515447184418e-01 + 9.128000000000e-10 6.308451859194e-01 + 9.228000000000e-10 7.261146020976e-01 + 9.328000000000e-10 8.180396416883e-01 + 9.428000000000e-10 8.601888436252e-01 + 9.528000000000e-10 8.019484098509e-01 + 9.628000000000e-10 5.756767177581e-01 + 9.728000000000e-10 2.057300830001e-01 + 9.828000000000e-10 -1.639276725752e-01 + 9.928000000000e-10 -4.168951851932e-01 + 1.000000000000e-09 -5.223291820834e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/conditions.yaml new file mode 100644 index 00000000..5ec3e86f --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 20 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_20 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/CML_core_tb.sch new file mode 100644 index 00000000..fad2ff6b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/CML_core_tb_21.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/CML_core_tb_21.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/CML_core_tb_21.data new file mode 100644 index 00000000..b199692b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/CML_core_tb_21.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.573501255338e-01 + 1.728000000000e-10 2.075317226020e-01 + 1.828000000000e-10 -1.459750710281e-01 + 1.928000000000e-10 -3.981214724862e-01 + 2.028000000000e-10 -5.378144391949e-01 + 2.128000000000e-10 -6.222071778117e-01 + 2.228000000000e-10 -7.144656924256e-01 + 2.328000000000e-10 -7.957588475985e-01 + 2.428000000000e-10 -8.259944634024e-01 + 2.528000000000e-10 -7.639419051023e-01 + 2.628000000000e-10 -5.499582313836e-01 + 2.728000000000e-10 -2.015822705639e-01 + 2.828000000000e-10 1.503547149045e-01 + 2.928000000000e-10 4.016725871885e-01 + 3.028000000000e-10 5.406529598204e-01 + 3.128000000000e-10 6.244429748136e-01 + 3.228000000000e-10 7.159703736038e-01 + 3.328000000000e-10 7.967442303644e-01 + 3.428000000000e-10 8.264465978318e-01 + 3.528000000000e-10 7.642028659706e-01 + 3.628000000000e-10 5.500598536778e-01 + 3.728000000000e-10 2.017167809837e-01 + 3.828000000000e-10 -1.502994036069e-01 + 3.928000000000e-10 -4.015772846450e-01 + 4.028000000000e-10 -5.406194194587e-01 + 4.128000000000e-10 -6.243734224937e-01 + 4.228000000000e-10 -7.159615996115e-01 + 4.328000000000e-10 -7.966982014285e-01 + 4.428000000000e-10 -8.264613960108e-01 + 4.528000000000e-10 -7.641725666632e-01 + 4.628000000000e-10 -5.500862997678e-01 + 4.728000000000e-10 -2.016863380222e-01 + 4.828000000000e-10 1.502773228882e-01 + 4.928000000000e-10 4.016041852700e-01 + 5.028000000000e-10 5.405973091915e-01 + 5.128000000000e-10 6.243995261147e-01 + 5.228000000000e-10 7.159367954986e-01 + 5.328000000000e-10 7.967237369409e-01 + 5.428000000000e-10 8.264362767952e-01 + 5.528000000000e-10 7.641972989051e-01 + 5.628000000000e-10 5.500612169320e-01 + 5.728000000000e-10 2.017098008556e-01 + 5.828000000000e-10 -1.502994747055e-01 + 5.928000000000e-10 -4.015836624598e-01 + 6.028000000000e-10 -5.406181129288e-01 + 6.128000000000e-10 -6.243799299897e-01 + 6.228000000000e-10 -7.159574419629e-01 + 6.328000000000e-10 -7.967036557443e-01 + 6.428000000000e-10 -8.264562124237e-01 + 6.528000000000e-10 -7.641768324224e-01 + 6.628000000000e-10 -5.500832409355e-01 + 6.728000000000e-10 -2.016878835950e-01 + 6.828000000000e-10 1.502805147690e-01 + 6.928000000000e-10 4.016033959904e-01 + 7.028000000000e-10 5.405993862387e-01 + 7.128000000000e-10 6.243994053085e-01 + 7.228000000000e-10 7.159375001908e-01 + 7.328000000000e-10 7.967227911979e-01 + 7.428000000000e-10 8.264369695557e-01 + 7.528000000000e-10 7.641957504677e-01 + 7.628000000000e-10 5.500638388088e-01 + 7.728000000000e-10 2.017065810231e-01 + 7.828000000000e-10 -1.502977706940e-01 + 7.928000000000e-10 -4.015868518817e-01 + 8.028000000000e-10 -5.406159021220e-01 + 8.128000000000e-10 -6.243834226598e-01 + 8.228000000000e-10 -7.159542700032e-01 + 8.328000000000e-10 -7.967069113699e-01 + 8.428000000000e-10 -8.264528986398e-01 + 8.528000000000e-10 -7.641796598358e-01 + 8.628000000000e-10 -5.500810114131e-01 + 8.728000000000e-10 -2.016895461018e-01 + 8.828000000000e-10 1.502827695530e-01 + 8.928000000000e-10 4.016022282365e-01 + 9.028000000000e-10 5.406011687872e-01 + 9.128000000000e-10 6.243986267121e-01 + 9.228000000000e-10 7.159387803359e-01 + 9.328000000000e-10 7.967217157361e-01 + 9.428000000000e-10 8.264380732409e-01 + 9.528000000000e-10 7.641943142595e-01 + 9.628000000000e-10 5.500658668163e-01 + 9.728000000000e-10 2.017043552905e-01 + 9.828000000000e-10 -1.502962363926e-01 + 9.928000000000e-10 -4.015890294030e-01 + 1.000000000000e-09 -5.098048460363e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/conditions.yaml new file mode 100644 index 00000000..ce8c1ed6 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 21 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_21 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/CML_core_tb.sch new file mode 100644 index 00000000..4df7b4c3 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/CML_core_tb_22.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/CML_core_tb_22.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/CML_core_tb_22.data new file mode 100644 index 00000000..60989baa --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/CML_core_tb_22.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.539342660958e-01 + 1.728000000000e-10 2.092356958505e-01 + 1.828000000000e-10 -1.399589402437e-01 + 1.928000000000e-10 -3.887664135754e-01 + 2.028000000000e-10 -5.242925922458e-01 + 2.128000000000e-10 -6.069418933180e-01 + 2.228000000000e-10 -7.009344183633e-01 + 2.328000000000e-10 -7.819154973681e-01 + 2.428000000000e-10 -8.115011787752e-01 + 2.528000000000e-10 -7.528782125237e-01 + 2.628000000000e-10 -5.449881732974e-01 + 2.728000000000e-10 -2.018085669996e-01 + 2.828000000000e-10 1.453371294429e-01 + 2.928000000000e-10 3.930046196046e-01 + 3.028000000000e-10 5.275952350978e-01 + 3.128000000000e-10 6.094983923496e-01 + 3.228000000000e-10 7.026430994561e-01 + 3.328000000000e-10 7.830459101342e-01 + 3.428000000000e-10 8.120643124066e-01 + 3.528000000000e-10 7.532542388222e-01 + 3.628000000000e-10 5.451889146656e-01 + 3.728000000000e-10 2.020380161925e-01 + 3.828000000000e-10 -1.452202245966e-01 + 3.928000000000e-10 -3.928550396378e-01 + 4.028000000000e-10 -5.275272038156e-01 + 4.128000000000e-10 -6.093963788491e-01 + 4.228000000000e-10 -7.026185076638e-01 + 4.328000000000e-10 -7.829822343256e-01 + 4.428000000000e-10 -8.120760322925e-01 + 4.528000000000e-10 -7.532137307257e-01 + 4.628000000000e-10 -5.452168897181e-01 + 4.728000000000e-10 -2.019975663161e-01 + 4.828000000000e-10 1.451970774770e-01 + 4.928000000000e-10 3.928886426712e-01 + 5.028000000000e-10 5.275035947470e-01 + 5.128000000000e-10 6.094279224341e-01 + 5.228000000000e-10 7.025906785817e-01 + 5.328000000000e-10 7.830125874729e-01 + 5.428000000000e-10 8.120474298427e-01 + 5.528000000000e-10 7.532431353399e-01 + 5.628000000000e-10 5.451877569897e-01 + 5.728000000000e-10 2.020249691554e-01 + 5.828000000000e-10 -1.452230860448e-01 + 5.928000000000e-10 -3.928644448798e-01 + 6.028000000000e-10 -5.275279936983e-01 + 6.128000000000e-10 -6.094050782075e-01 + 6.228000000000e-10 -7.026148963104e-01 + 6.328000000000e-10 -7.829886841749e-01 + 6.428000000000e-10 -8.120708569069e-01 + 6.528000000000e-10 -7.532187757848e-01 + 6.628000000000e-10 -5.452139572157e-01 + 6.728000000000e-10 -2.019983459359e-01 + 6.828000000000e-10 1.452010057661e-01 + 6.928000000000e-10 3.928879698340e-01 + 7.028000000000e-10 5.275064479083e-01 + 7.128000000000e-10 6.094280990005e-01 + 7.228000000000e-10 7.025917879356e-01 + 7.328000000000e-10 7.830113821989e-01 + 7.428000000000e-10 8.120485256383e-01 + 7.528000000000e-10 7.532412367972e-01 + 7.628000000000e-10 5.451912171970e-01 + 7.728000000000e-10 2.020204953427e-01 + 7.828000000000e-10 -1.452213117732e-01 + 7.928000000000e-10 -3.928683087954e-01 + 8.028000000000e-10 -5.275257546899e-01 + 8.128000000000e-10 -6.094092443434e-01 + 8.228000000000e-10 -7.026114152643e-01 + 8.328000000000e-10 -7.829924127838e-01 + 8.428000000000e-10 -8.120671951794e-01 + 8.528000000000e-10 -7.532220607865e-01 + 8.628000000000e-10 -5.452116115033e-01 + 8.728000000000e-10 -2.019999026099e-01 + 8.828000000000e-10 1.452037268076e-01 + 8.928000000000e-10 3.928866787286e-01 + 9.028000000000e-10 5.275085793908e-01 + 9.128000000000e-10 6.094272189130e-01 + 9.228000000000e-10 7.025932924679e-01 + 9.328000000000e-10 7.830100596429e-01 + 9.428000000000e-10 8.120498613680e-01 + 9.528000000000e-10 7.532395420815e-01 + 9.628000000000e-10 5.451937902395e-01 + 9.728000000000e-10 2.020175827840e-01 + 9.828000000000e-10 -1.452196157349e-01 + 9.928000000000e-10 -3.928709378362e-01 + 1.000000000000e-09 -4.979849828547e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/conditions.yaml new file mode 100644 index 00000000..5cd09398 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 22 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_22 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/CML_core_tb.sch new file mode 100644 index 00000000..e2bfe757 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/CML_core_tb_23.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/CML_core_tb_23.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/CML_core_tb_23.data new file mode 100644 index 00000000..208aa09a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/CML_core_tb_23.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.609932954578e-01 + 1.728000000000e-10 2.135803595156e-01 + 1.828000000000e-10 -1.406795105233e-01 + 1.928000000000e-10 -3.985242549940e-01 + 2.028000000000e-10 -5.467902250198e-01 + 2.128000000000e-10 -6.349197102047e-01 + 2.228000000000e-10 -7.225601155251e-01 + 2.328000000000e-10 -8.022847270862e-01 + 2.428000000000e-10 -8.341174139963e-01 + 2.528000000000e-10 -7.703472968512e-01 + 2.628000000000e-10 -5.554753546701e-01 + 2.728000000000e-10 -2.092959847468e-01 + 2.828000000000e-10 1.439827087572e-01 + 2.928000000000e-10 4.013409764958e-01 + 3.028000000000e-10 5.491103575815e-01 + 3.128000000000e-10 6.367736171292e-01 + 3.228000000000e-10 7.238327114492e-01 + 3.328000000000e-10 8.031250424519e-01 + 3.428000000000e-10 8.344898451807e-01 + 3.528000000000e-10 7.705288945959e-01 + 3.628000000000e-10 5.555161552443e-01 + 3.728000000000e-10 2.093659332353e-01 + 3.828000000000e-10 -1.439645708780e-01 + 3.928000000000e-10 -4.012864243472e-01 + 4.028000000000e-10 -5.490981432908e-01 + 4.128000000000e-10 -6.367310776976e-01 + 4.228000000000e-10 -7.238327358891e-01 + 4.328000000000e-10 -8.030945225544e-01 + 4.428000000000e-10 -8.345032641498e-01 + 4.528000000000e-10 -7.705076814073e-01 + 4.628000000000e-10 -5.555368200040e-01 + 4.728000000000e-10 -2.093450233604e-01 + 4.828000000000e-10 1.439466188317e-01 + 4.928000000000e-10 4.013057839415e-01 + 5.028000000000e-10 5.490801810840e-01 + 5.128000000000e-10 6.367502973173e-01 + 5.228000000000e-10 7.238134370273e-01 + 5.328000000000e-10 8.031142213064e-01 + 5.428000000000e-10 8.344836920712e-01 + 5.528000000000e-10 7.705267055682e-01 + 5.628000000000e-10 5.555176728822e-01 + 5.728000000000e-10 2.093634169255e-01 + 5.828000000000e-10 -1.439633135713e-01 + 5.928000000000e-10 -4.012903718012e-01 + 6.028000000000e-10 -5.490957661747e-01 + 6.128000000000e-10 -6.367354259501e-01 + 6.228000000000e-10 -7.238289911799e-01 + 6.328000000000e-10 -8.030991093312e-01 + 6.428000000000e-10 -8.344987261970e-01 + 6.528000000000e-10 -7.705113506628e-01 + 6.628000000000e-10 -5.555339922038e-01 + 6.728000000000e-10 -2.093472747699e-01 + 6.828000000000e-10 1.439488143392e-01 + 6.928000000000e-10 4.013051006454e-01 + 7.028000000000e-10 5.490813620131e-01 + 7.128000000000e-10 6.367501696447e-01 + 7.228000000000e-10 7.238138408460e-01 + 7.328000000000e-10 8.031138234310e-01 + 7.428000000000e-10 8.344840024625e-01 + 7.528000000000e-10 7.705257750612e-01 + 7.628000000000e-10 5.555193682491e-01 + 7.728000000000e-10 2.093616154732e-01 + 7.828000000000e-10 -1.439618235384e-01 + 7.928000000000e-10 -4.012927107128e-01 + 8.028000000000e-10 -5.490937463184e-01 + 8.128000000000e-10 -6.367380404539e-01 + 8.228000000000e-10 -7.238264478501e-01 + 8.328000000000e-10 -8.031018435980e-01 + 8.428000000000e-10 -8.344959687989e-01 + 8.528000000000e-10 -7.705137100306e-01 + 8.628000000000e-10 -5.555321098787e-01 + 8.728000000000e-10 -2.093489927492e-01 + 8.828000000000e-10 1.439504269532e-01 + 8.928000000000e-10 4.013041525432e-01 + 9.028000000000e-10 5.490824887692e-01 + 9.128000000000e-10 6.367494882502e-01 + 9.228000000000e-10 7.238146944607e-01 + 9.328000000000e-10 8.031131051507e-01 + 9.428000000000e-10 8.344847147049e-01 + 9.528000000000e-10 7.705248067970e-01 + 9.628000000000e-10 5.555207970002e-01 + 9.728000000000e-10 2.093601819839e-01 + 9.828000000000e-10 -1.439605753448e-01 + 9.928000000000e-10 -4.012943342775e-01 + 1.000000000000e-09 -5.158218772706e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/conditions.yaml new file mode 100644 index 00000000..4225835a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 23 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_23 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/CML_core_tb.sch new file mode 100644 index 00000000..5eb6d235 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/CML_core_tb_24.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/CML_core_tb_24.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/CML_core_tb_24.data new file mode 100644 index 00000000..a8519464 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/CML_core_tb_24.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.405028365217e-01 + 1.728000000000e-10 2.142897527484e-01 + 1.828000000000e-10 -1.231353412434e-01 + 1.928000000000e-10 -3.782847553257e-01 + 2.028000000000e-10 -5.290944707244e-01 + 2.128000000000e-10 -6.207435846591e-01 + 2.228000000000e-10 -7.069850917784e-01 + 2.328000000000e-10 -7.774395392863e-01 + 2.428000000000e-10 -7.982183108700e-01 + 2.528000000000e-10 -7.327456021571e-01 + 2.628000000000e-10 -5.310063164445e-01 + 2.728000000000e-10 -2.063297175293e-01 + 2.828000000000e-10 1.293176468137e-01 + 2.928000000000e-10 3.835270490977e-01 + 3.028000000000e-10 5.333180257023e-01 + 3.128000000000e-10 6.240938619865e-01 + 3.228000000000e-10 7.092802493907e-01 + 3.328000000000e-10 7.789607942300e-01 + 3.428000000000e-10 7.989234313230e-01 + 3.528000000000e-10 7.331763415294e-01 + 3.628000000000e-10 5.312045040772e-01 + 3.728000000000e-10 2.065847902134e-01 + 3.828000000000e-10 -1.291958906021e-01 + 3.928000000000e-10 -3.833411283085e-01 + 4.028000000000e-10 -5.332389173297e-01 + 4.128000000000e-10 -6.239588708494e-01 + 4.228000000000e-10 -7.092541595355e-01 + 4.328000000000e-10 -7.788766619073e-01 + 4.428000000000e-10 -7.989439817890e-01 + 4.528000000000e-10 -7.331237184970e-01 + 4.628000000000e-10 -5.312431858800e-01 + 4.728000000000e-10 -2.065354720445e-01 + 4.828000000000e-10 1.291604530900e-01 + 4.928000000000e-10 3.833851407049e-01 + 5.028000000000e-10 5.332033925163e-01 + 5.128000000000e-10 6.240009303805e-01 + 5.228000000000e-10 7.092156296740e-01 + 5.328000000000e-10 7.789178950697e-01 + 5.428000000000e-10 7.989050835748e-01 + 5.528000000000e-10 7.331635644704e-01 + 5.628000000000e-10 5.312038508238e-01 + 5.728000000000e-10 2.065745538625e-01 + 5.828000000000e-10 -1.291960705945e-01 + 5.928000000000e-10 -3.833509278886e-01 + 6.028000000000e-10 -5.332368573592e-01 + 6.128000000000e-10 -6.239679712691e-01 + 6.228000000000e-10 -7.092497084655e-01 + 6.328000000000e-10 -7.788845366535e-01 + 6.428000000000e-10 -7.989377629672e-01 + 6.528000000000e-10 -7.331298791234e-01 + 6.628000000000e-10 -5.312385744549e-01 + 6.728000000000e-10 -2.065399094583e-01 + 6.828000000000e-10 1.291646812354e-01 + 6.928000000000e-10 3.833822988637e-01 + 7.028000000000e-10 5.332062833028e-01 + 7.128000000000e-10 6.239988652624e-01 + 7.228000000000e-10 7.092181343784e-01 + 7.328000000000e-10 7.789155267181e-01 + 7.428000000000e-10 7.989074545455e-01 + 7.528000000000e-10 7.331605295450e-01 + 7.628000000000e-10 5.312080087648e-01 + 7.728000000000e-10 2.065705039315e-01 + 7.828000000000e-10 -1.291926212165e-01 + 7.928000000000e-10 -3.833551733065e-01 + 8.028000000000e-10 -5.332328436976e-01 + 8.128000000000e-10 -6.239725200032e-01 + 8.228000000000e-10 -7.092452956008e-01 + 8.328000000000e-10 -7.788891439389e-01 + 8.428000000000e-10 -7.989331916474e-01 + 8.528000000000e-10 -7.331340451631e-01 + 8.628000000000e-10 -5.312350772815e-01 + 8.728000000000e-10 -2.065433053799e-01 + 8.828000000000e-10 1.291679984852e-01 + 8.928000000000e-10 3.833797175156e-01 + 9.028000000000e-10 5.332088978421e-01 + 9.128000000000e-10 6.239966795455e-01 + 9.228000000000e-10 7.092206518532e-01 + 9.328000000000e-10 7.789132522577e-01 + 9.428000000000e-10 7.989096829455e-01 + 9.528000000000e-10 7.331579091452e-01 + 9.628000000000e-10 5.312112407565e-01 + 9.728000000000e-10 2.065672983353e-01 + 9.828000000000e-10 -1.291898675297e-01 + 9.928000000000e-10 -3.833583124064e-01 + 1.000000000000e-09 -4.991705375338e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/conditions.yaml new file mode 100644 index 00000000..67c930af --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 24 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_24 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/CML_core_tb.sch new file mode 100644 index 00000000..b7993f6a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/CML_core_tb_25.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/CML_core_tb_25.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/CML_core_tb_25.data new file mode 100644 index 00000000..39c04d30 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/CML_core_tb_25.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.368449571564e-01 + 1.728000000000e-10 2.154696494615e-01 + 1.828000000000e-10 -1.180750667507e-01 + 1.928000000000e-10 -3.694801437498e-01 + 2.028000000000e-10 -5.157339685643e-01 + 2.128000000000e-10 -6.051803608378e-01 + 2.228000000000e-10 -6.923688047900e-01 + 2.328000000000e-10 -7.627278516708e-01 + 2.428000000000e-10 -7.836324050269e-01 + 2.528000000000e-10 -7.217390774868e-01 + 2.628000000000e-10 -5.258344598842e-01 + 2.728000000000e-10 -2.060622799160e-01 + 2.828000000000e-10 1.253068918672e-01 + 2.928000000000e-10 3.754763463876e-01 + 3.028000000000e-10 5.204513706872e-01 + 3.128000000000e-10 6.088547126517e-01 + 3.228000000000e-10 6.948747427610e-01 + 3.328000000000e-10 7.643967320598e-01 + 3.428000000000e-10 7.844541546789e-01 + 3.528000000000e-10 7.222905371020e-01 + 3.628000000000e-10 5.261436989659e-01 + 3.728000000000e-10 2.064244494061e-01 + 3.828000000000e-10 -1.251087630482e-01 + 3.928000000000e-10 -3.752230316774e-01 + 4.028000000000e-10 -5.203274407129e-01 + 4.128000000000e-10 -6.086807930540e-01 + 4.228000000000e-10 -6.948278459755e-01 + 4.328000000000e-10 -7.642927444658e-01 + 4.428000000000e-10 -7.844689558048e-01 + 4.528000000000e-10 -7.222270537973e-01 + 4.628000000000e-10 -5.261810188038e-01 + 4.728000000000e-10 -2.063649367923e-01 + 4.828000000000e-10 1.250740150254e-01 + 4.928000000000e-10 3.752740624702e-01 + 5.028000000000e-10 5.202917067072e-01 + 5.128000000000e-10 6.087280474834e-01 + 5.228000000000e-10 6.947875493975e-01 + 5.328000000000e-10 7.643381446772e-01 + 5.428000000000e-10 7.844278436925e-01 + 5.528000000000e-10 7.222707134126e-01 + 5.628000000000e-10 5.261386731045e-01 + 5.728000000000e-10 2.064078101390e-01 + 5.828000000000e-10 -1.251125509614e-01 + 5.928000000000e-10 -3.752362786491e-01 + 6.028000000000e-10 -5.203279553884e-01 + 6.128000000000e-10 -6.086920089480e-01 + 6.228000000000e-10 -6.948246280643e-01 + 6.328000000000e-10 -7.643013046090e-01 + 6.428000000000e-10 -7.844633201903e-01 + 6.528000000000e-10 -7.222336042293e-01 + 6.628000000000e-10 -5.261766512068e-01 + 6.728000000000e-10 -2.063691829929e-01 + 6.828000000000e-10 1.250784814444e-01 + 6.928000000000e-10 3.752708432251e-01 + 7.028000000000e-10 5.202949527958e-01 + 7.128000000000e-10 6.087256874770e-01 + 7.228000000000e-10 6.947904319095e-01 + 7.328000000000e-10 7.643352365607e-01 + 7.428000000000e-10 7.844306677783e-01 + 7.528000000000e-10 7.222672114429e-01 + 7.628000000000e-10 5.261433781551e-01 + 7.728000000000e-10 2.064029029490e-01 + 7.828000000000e-10 -1.251089390610e-01 + 7.928000000000e-10 -3.752408867518e-01 + 8.028000000000e-10 -5.203238706374e-01 + 8.128000000000e-10 -6.086968714396e-01 + 8.228000000000e-10 -6.948200705245e-01 + 8.328000000000e-10 -7.643060605343e-01 + 8.428000000000e-10 -7.844586734539e-01 + 8.528000000000e-10 -7.222379683755e-01 + 8.628000000000e-10 -5.261730442965e-01 + 8.728000000000e-10 -2.063725681788e-01 + 8.828000000000e-10 1.250820910423e-01 + 8.928000000000e-10 3.752680406761e-01 + 9.028000000000e-10 5.202978581562e-01 + 9.128000000000e-10 6.087233210610e-01 + 9.228000000000e-10 6.947932359489e-01 + 9.328000000000e-10 7.643326365950e-01 + 9.428000000000e-10 7.844331791786e-01 + 9.528000000000e-10 7.222642751837e-01 + 9.628000000000e-10 5.261469613157e-01 + 9.728000000000e-10 2.063991803079e-01 + 9.828000000000e-10 -1.251060220915e-01 + 9.928000000000e-10 -3.752443155305e-01 + 1.000000000000e-09 -4.875704709340e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/conditions.yaml new file mode 100644 index 00000000..cba761bd --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 25 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_25 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/CML_core_tb.sch new file mode 100644 index 00000000..3cfb1a1d --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/CML_core_tb.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/CML_core_tb_26.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/CML_core_tb_26.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/CML_core_tb_26.data new file mode 100644 index 00000000..894f4c67 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/CML_core_tb_26.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.436948212736e-01 + 1.728000000000e-10 2.205877879634e-01 + 1.828000000000e-10 -1.163348151974e-01 + 1.928000000000e-10 -3.771420921807e-01 + 2.028000000000e-10 -5.370108455130e-01 + 2.128000000000e-10 -6.331888427572e-01 + 2.228000000000e-10 -7.164762236683e-01 + 2.328000000000e-10 -7.851286946760e-01 + 2.428000000000e-10 -8.059531868761e-01 + 2.528000000000e-10 -7.384564800459e-01 + 2.628000000000e-10 -5.363144999221e-01 + 2.728000000000e-10 -2.144637665285e-01 + 2.828000000000e-10 1.212929793685e-01 + 2.928000000000e-10 3.815418180812e-01 + 3.028000000000e-10 5.406606883043e-01 + 3.128000000000e-10 6.361475176918e-01 + 3.228000000000e-10 7.185360719894e-01 + 3.328000000000e-10 7.865091736067e-01 + 3.428000000000e-10 8.065713749450e-01 + 3.528000000000e-10 7.387921596039e-01 + 3.628000000000e-10 5.364259512539e-01 + 3.728000000000e-10 2.146317863835e-01 + 3.828000000000e-10 -1.212295238309e-01 + 3.928000000000e-10 -3.814110096077e-01 + 4.028000000000e-10 -5.406166203788e-01 + 4.128000000000e-10 -6.360467438854e-01 + 4.228000000000e-10 -7.185257686739e-01 + 4.328000000000e-10 -7.864422304189e-01 + 4.428000000000e-10 -8.065937411296e-01 + 4.528000000000e-10 -7.387487319623e-01 + 4.628000000000e-10 -5.364619855530e-01 + 4.728000000000e-10 -2.145913861363e-01 + 4.828000000000e-10 1.211959412322e-01 + 4.928000000000e-10 3.814481551476e-01 + 5.028000000000e-10 5.405833390120e-01 + 5.128000000000e-10 6.360831449777e-01 + 5.228000000000e-10 7.184907253890e-01 + 5.328000000000e-10 7.864786648334e-01 + 5.428000000000e-10 8.065585198321e-01 + 5.528000000000e-10 7.387840006966e-01 + 5.628000000000e-10 5.364270346085e-01 + 5.728000000000e-10 2.146260338484e-01 + 5.828000000000e-10 -1.212277001077e-01 + 5.928000000000e-10 -3.814182410321e-01 + 6.028000000000e-10 -5.406130595607e-01 + 6.128000000000e-10 -6.360540210765e-01 + 6.228000000000e-10 -7.185209180994e-01 + 6.328000000000e-10 -7.864492678158e-01 + 6.428000000000e-10 -8.065874846616e-01 + 6.528000000000e-10 -7.387544794760e-01 + 6.628000000000e-10 -5.364572547805e-01 + 6.728000000000e-10 -2.145959871001e-01 + 6.828000000000e-10 1.211997934696e-01 + 6.928000000000e-10 3.814456726213e-01 + 7.028000000000e-10 5.405857946323e-01 + 7.128000000000e-10 6.360813265814e-01 + 7.228000000000e-10 7.184929266665e-01 + 7.328000000000e-10 7.864767243186e-01 + 7.428000000000e-10 8.065604357181e-01 + 7.528000000000e-10 7.387815158779e-01 + 7.628000000000e-10 5.364303644926e-01 + 7.728000000000e-10 2.146228844142e-01 + 7.828000000000e-10 -1.212245339809e-01 + 7.928000000000e-10 -3.814220075435e-01 + 8.028000000000e-10 -5.406092538148e-01 + 8.128000000000e-10 -6.360581238583e-01 + 8.228000000000e-10 -7.185168954112e-01 + 8.328000000000e-10 -7.864535273883e-01 + 8.428000000000e-10 -8.065831328643e-01 + 8.528000000000e-10 -7.387583532284e-01 + 8.628000000000e-10 -5.364538735708e-01 + 8.728000000000e-10 -2.145992968151e-01 + 8.828000000000e-10 1.212027591883e-01 + 8.928000000000e-10 3.814433789143e-01 + 9.028000000000e-10 5.405880431190e-01 + 9.128000000000e-10 6.360793794818e-01 + 9.228000000000e-10 7.184951630330e-01 + 9.328000000000e-10 7.864747526663e-01 + 9.428000000000e-10 8.065622905723e-01 + 9.528000000000e-10 7.387792872630e-01 + 9.628000000000e-10 5.364330391099e-01 + 9.728000000000e-10 2.146202349236e-01 + 9.828000000000e-10 -1.212220310216e-01 + 9.928000000000e-10 -3.814247853449e-01 + 1.000000000000e-09 -5.040490090913e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/conditions.yaml new file mode 100644 index 00000000..9057abc1 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 26 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/run_26 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/simulation_summary.csv b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/simulation_summary.csv new file mode 100644 index 00000000..2f5f947b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/simulation_summary.csv @@ -0,0 +1,28 @@ +run,corner,temperature,vdd,time,vo_diff,frequency,amplitude,voltage_swing +run_00,tt,-40,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.952e-01, -6.044e-02, 0.182, …]",4.722e+09,0.709,1.418 +run_01,ff,-40,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.648e-01, -3.672e-02, 0.198, …]",4.722e+09,0.693,1.386 +run_02,ss,-40,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-3.227e-01, -8.540e-02, 0.161, …]",4.722e+09,0.722,1.444 +run_03,tt,27,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.752e-01, -5.371e-02, 0.179, …]",4.722e+09,0.692,1.383 +run_04,ff,27,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.482e-01, -3.259e-02, 0.193, …]",4.722e+09,0.672,1.345 +run_05,ss,27,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-3.027e-01, -8.046e-02, 0.156, …]",4.722e+09,0.706,1.412 +run_06,tt,80,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.659e-01, -5.659e-02, 0.167, …]",4.722e+09,0.669,1.338 +run_07,ff,80,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.411e-01, -3.745e-02, 0.179, …]",4.722e+09,0.648,1.295 +run_08,ss,80,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.916e-01, -8.207e-02, 0.144, …]",4.722e+09,0.685,1.371 +run_09,tt,-40,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.397e-01, -2.046e-01, 0.131, …]",4.722e+09,0.807,1.614 +run_10,ff,-40,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.293e-01, -2.034e-01, 0.125, …]",4.722e+09,0.789,1.577 +run_11,ss,-40,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.474e-01, -2.088e-01, 0.131, …]",4.722e+09,0.819,1.638 +run_12,tt,27,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.050e-01, -1.958e-01, 0.120, …]",4.722e+09,0.771,1.543 +run_13,ff,27,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.935e-01, -1.929e-01, 0.116, …]",4.722e+09,0.753,1.505 +run_14,ss,27,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.133e-01, -2.032e-01, 0.114, …]",4.722e+09,0.783,1.566 +run_15,tt,80,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.765e-01, -1.934e-01, 0.103, …]",4.722e+09,0.743,1.486 +run_16,ff,80,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.643e-01, -1.890e-01, 0.101, …]",4.722e+09,0.725,1.450 +run_17,ss,80,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.853e-01, -2.024e-01, 9.500e-02, …]",4.722e+09,0.755,1.510 +run_18,tt,-40,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.575, 0.203, -1.640e-01, …]",4.722e+09,0.851,1.702 +run_19,ff,-40,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.571, 0.205, -1.568e-01, …]",4.722e+09,0.836,1.672 +run_20,ss,-40,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.579, 0.208, -1.623e-01, …]",4.722e+09,0.860,1.720 +run_21,tt,27,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.557, 0.208, -1.460e-01, …]",4.722e+09,0.826,1.653 +run_22,ff,27,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.554, 0.209, -1.400e-01, …]",4.722e+09,0.812,1.624 +run_23,ss,27,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.561, 0.214, -1.407e-01, …]",4.722e+09,0.834,1.669 +run_24,tt,80,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.541, 0.214, -1.231e-01, …]",4.722e+09,0.799,1.598 +run_25,ff,80,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.537, 0.215, -1.181e-01, …]",4.722e+09,0.784,1.569 +run_26,ss,80,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.544, 0.221, -1.163e-01, …]",4.722e+09,0.807,1.613 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/simulation_summary.md b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/simulation_summary.md new file mode 100644 index 00000000..6401031e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/simulation_summary.md @@ -0,0 +1,31 @@ +# Simulation Summary for CML divider frequency response + +| run | corner | temperature | vdd | time | vo_diff | frequency | amplitude | voltage_swing | +| :-- | -----: | ----------: | --: | ---: | ------: | --------: | --------: | ------------: | +| run_00 | tt | -40 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.952e-01, -6.044e-02, 0.182, …] | 4.722e+09 | 0.709 | 1.418 | +| run_01 | ff | -40 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.648e-01, -3.672e-02, 0.198, …] | 4.722e+09 | 0.693 | 1.386 | +| run_02 | ss | -40 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-3.227e-01, -8.540e-02, 0.161, …] | 4.722e+09 | 0.722 | 1.444 | +| run_03 | tt | 27 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.752e-01, -5.371e-02, 0.179, …] | 4.722e+09 | 0.692 | 1.383 | +| run_04 | ff | 27 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.482e-01, -3.259e-02, 0.193, …] | 4.722e+09 | 0.672 | 1.345 | +| run_05 | ss | 27 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-3.027e-01, -8.046e-02, 0.156, …] | 4.722e+09 | 0.706 | 1.412 | +| run_06 | tt | 80 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.659e-01, -5.659e-02, 0.167, …] | 4.722e+09 | 0.669 | 1.338 | +| run_07 | ff | 80 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.411e-01, -3.745e-02, 0.179, …] | 4.722e+09 | 0.648 | 1.295 | +| run_08 | ss | 80 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.916e-01, -8.207e-02, 0.144, …] | 4.722e+09 | 0.685 | 1.371 | +| run_09 | tt | -40 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.397e-01, -2.046e-01, 0.131, …] | 4.722e+09 | 0.807 | 1.614 | +| run_10 | ff | -40 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.293e-01, -2.034e-01, 0.125, …] | 4.722e+09 | 0.789 | 1.577 | +| run_11 | ss | -40 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.474e-01, -2.088e-01, 0.131, …] | 4.722e+09 | 0.819 | 1.638 | +| run_12 | tt | 27 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.050e-01, -1.958e-01, 0.120, …] | 4.722e+09 | 0.771 | 1.543 | +| run_13 | ff | 27 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.935e-01, -1.929e-01, 0.116, …] | 4.722e+09 | 0.753 | 1.505 | +| run_14 | ss | 27 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.133e-01, -2.032e-01, 0.114, …] | 4.722e+09 | 0.783 | 1.566 | +| run_15 | tt | 80 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.765e-01, -1.934e-01, 0.103, …] | 4.722e+09 | 0.743 | 1.486 | +| run_16 | ff | 80 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.643e-01, -1.890e-01, 0.101, …] | 4.722e+09 | 0.725 | 1.450 | +| run_17 | ss | 80 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.853e-01, -2.024e-01, 9.500e-02, …] | 4.722e+09 | 0.755 | 1.510 | +| run_18 | tt | -40 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.575, 0.203, -1.640e-01, …] | 4.722e+09 | 0.851 | 1.702 | +| run_19 | ff | -40 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.571, 0.205, -1.568e-01, …] | 4.722e+09 | 0.836 | 1.672 | +| run_20 | ss | -40 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.579, 0.208, -1.623e-01, …] | 4.722e+09 | 0.860 | 1.720 | +| run_21 | tt | 27 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.557, 0.208, -1.460e-01, …] | 4.722e+09 | 0.826 | 1.653 | +| run_22 | ff | 27 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.554, 0.209, -1.400e-01, …] | 4.722e+09 | 0.812 | 1.624 | +| run_23 | ss | 27 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.561, 0.214, -1.407e-01, …] | 4.722e+09 | 0.834 | 1.669 | +| run_24 | tt | 80 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.541, 0.214, -1.231e-01, …] | 4.722e+09 | 0.799 | 1.598 | +| run_25 | ff | 80 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.537, 0.215, -1.181e-01, …] | 4.722e+09 | 0.784 | 1.569 | +| run_26 | ss | 80 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.544, 0.221, -1.163e-01, …] | 4.722e+09 | 0.807 | 1.613 | diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/vo_diff_vs_time.png b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/parameters/ac_params/vo_diff_vs_time.png new file mode 100644 index 0000000000000000000000000000000000000000..64d1b808104845d96a2127211f852aa2d848b009 GIT binary patch literal 225402 zcmb5WbyStn*EM=5K|-XvyQPs7rIiv1>F(}E36YkTM!LJZyOHja?(VzK``-J0zj6Qg zzIz|X8IFO6C-$?~T64`gmq7}0l4!_;$PfqwO`mA{l~a8IXL)HW_0<6aLDz$RVDdzA%^)xkh_smK7uV#26c<+<<@q)rhx_K;=Ez_E zke9FDM=poJQU+&`QwHlV*kF9^E}_3tR-Ee&4=zflr!1Ke!_K-+eJ3S_^lRC{BjNT5 z-<|@K{2h7O$g$fIT!Q_Ghw;A=p<}lsa_K04-~T*1o*@M}xbH;&^Y~M)5Tl9kA4kA5 z0XB{5e|}}n=Y@E`vci8HH)*1Z_Bh!8aXgv)e>sh;63R*IH~Qes?d^^2?LcxQS(fns zzQOl!zo>%}6A3diGZpg*ZI*Pf#gpYsGOKgb)6-8>B@3rAR0@ean=&?eU~g}4yLx(f zs_~Kk`@m}(&y+NqF8Z2TwdKg)-`_8a-7R4z|6fl)`{vEBzP`Q}1UNV}wHPPo=Wv^3 z(mp=Vv~d#u{e*ugzNo5V5fSY_lC-K(OJ}5~L#owfEiElG)dQgq_*5VjN0YsMxcJ@n8t;!??rTsZ78uf`-H3F|jBkKy^R#c4C;f>qGe z{N(C-^HwW9mPX?LUgiLawvAIr`s8k+8YcKrz_XA!9=aCm%-aa%|9KYy5@OQt^TE@P z-6W4TD*yjp?ls0gKF?2|5;(Ssdb@gi&zC)pwQ$`^#Qx*muCd8_$#m{b6=J}D9~c-o zx0ZhmkISaLNME6~%O$qfkjTKql=-#N_)-|9P_;BiDOYai(mg6F>Nlr}Ty)>;7tiY@ z7iu~>gE#n6va&|I6WQB>Cd*B3S=rfo90@;zgV(_|vx|y~#*LKz=dln1BszB;wPUTA z{$^7USQ14uT`tQd^F>}AE~M26(a{C2bp~?kwn3Z^=euJVl^G&rFS_(NOqc46YPl?RcLib1wfcyxcwLid)L5=P-5=XH z-u|ygUc)4p##G5|lopPn=2nwa#CAI$=9QL_d0#q%g@@N$SlY6;)ar7q{o)nz&v8>~ zYHEK(Qddaj+`*EFUI)BHIB`Gtij1QpSFuJdEiW&g=xenqQw+ElsBMNEk#TW7Jz+%q z7tPj7{C5|-e&7T=JaPTebOz;WP4^oc8*aB-@%8&9jVIUF+uspM>wXG+7Qv$Zq&u9* zJ(T2g{ctMD@3iON zu1n6&9=SW2yW!l}e2*Zyx)CAr?+1}J^iHCpI>4Ru4-900EpT&lGgfILUr|}vyxnxO z9^$w&_B}%6>G$lc+9z79Ov#9xf`Wo@%}SF|S{fPzzxH?b_8erMC*NIk4jguLE;jw9J(g|1>FG9~n zK>_2}4tZx}L<4pSnVz2B&HX*6?dm({aKdw(adye`Hi!D_!T z=t2Gb`SWisGtAm$cP8-et^F2SH^K$*IgLN1Sh2>3jEyP$8%aU=)~&x*(sj@7M<6t?S@s%2{ky#J|gi z)}CcC%XPe)oAz%~USw;@WhL9?cp0P#+toIhcd5GQ1RVaPLhfZw`zpa9A@$$^z_WZN znHf?pR9QPd9vz5f+OK*%s2n}JTCka{F#4G4b@jC;oaCd53NB&TkAnltAFoITm`a;E zw$ps%q@`a*)5_{kWJ!CTcH=GcEPLNu<;W)Wps+RB_OLfy&09b}Catu)yItMgDK%c; zO&A&*Pn2j0XuI#yKsq`)Za@SOaGPTzqLX&5tdM1nyN+1Agx+39XXovD2pc}XBfWVw z;kRmw8T%P6m(x<8#}Hw!yI(0OhsyKvBnyLVtwRFGO`XtBw7hUXiOZs>zCNYA$Rn4X zo!z3xar37{t{|{xZlhqktuNTLZsn$VXEZb<24T^i`8;3yXd6Lu!lxvjFpx>c%MB!* zj~4qMuU8@>BG6q{ylQJxa#P)d2{?_%z`vosfOBq48A%a1-;9=D2MZQO^ATUfTaZP) zD&1nH#H7g?jfROS^J)&Ij<&j<n_<>4buU)dR z(G#{&vtZq6$+NM)kJ1*5!&IhTyy$s841sQ;qOX-d$b23mPfl!8-To0cAIypdz9MNl z{Pg?H_lE~h@8?ICDs>jHp>pc#Zi>7{lXxQ#K`0gVGHcX?f@S^NXag=Fc(;@3RD(vq zu~}q&C**#ynqZQu2eKzB5l`s)x;`$eX5ZzEj*rS)R`~x_c5gyJz;zBKa3*kD#Hr4i zjb|V!5dzi|QfWM_-}MvY;XLh`nvxP0LPkbrJenFNmkVb&NZ$50 zUx`52lMez`BiCx7#?Z(pGC6r@zqECv&TgYgMszTa<#wj^Nxaqj@#drxy*aM=I~?NK ztU*MI6EV8b#cPl&g!kFU$HyQD%Nz+^FK&bh}N!VTc5Y5IjS=UUZO8 z5w(x?M=rH1o%W~8jRtW+OpfngerxJ0cRhu! zv#Z3%r-|&3qkGy*V+g_O#IF!Rec39mU8ZDZEzzc_Eh`(lf0)6F$S$fgNHL_}oBm^01mia^Kf636ca8tf_voGh^6mwCWu{90p4 z0IJcSkMXP!&#O5TkcpD3kHIfSS}!%ET>hTl&KDlxdII6fnL1gh%Jy$KsrNU#LD|A# z-IBFLD1Q6>aqItUJJiABSDR1h5Kb6+@%o2`q7uIfbb-}cd8(@7D)mJ<6H~?(e?=;| zld_qUljDxFsPvXQj-8Pa`Ii<`baeDwvj?xo)j|G-I)gN327Od?^hQdSj>9nbHnF6w z?Fm7#rz&!z%ds)Y{7#zfLZs-R^#--$kXG!+ud%iw6yfv2uMS# z&P2WvnR*vH<3k|4PB(f%b-e+BfBP@V2GTb&(zEM0ttjE==V!LmPXj&SXx3_ngK)S=P)YK8G2*Hjjvq^lg3jq>?2D#wH*azra3Y(Are*hkU zc(CxIre%Y+N_H){C7gBzn4XO4#nboC^RAy1v0>gM4GZ3^`h7|jysbKyb7B%!TFA9$ zKN^Tfshk_S*qxNGjDgiI`z@U7U!{KB#pe37jTp04_x) zCI*8*R?7MG)+CBPR>nzP)72|(TIAY~HS1NWaG?8P4$8HtU9Gi6qom$%cTxghHN^=PJ)3{=V@&3eqt z@xHM?ABa4k0_@9=222Q_=a}zGTc7xw-7nX{f+B7rkbtcYkW42iNb6ci7N{i$yrut7 zKhZ&x3DQ1(n1o8Pdbby-@$*kHG1#C2`E~1`GE(o)luBlQo+_u+LQ3Ixq7)KJ0lPlL z9FcWIivVPfwNqEQg%`;+%@n59^OGa{fAg_GiL#72eM)F*5!A?}bIv>6%dK_V4Cx$X6g*+$Kro^pzH@O-trJ##Tbug) z3(DLFf)C(TM<=?-(9P+Fd`Pc=PO9gbbc4(BNS1Uo6lG8!70aZW z%KgE@OS7oa9zdidUK=Rd)zQ)M1#z|9^wyXBu~Zd&}r@KK0YPcaRT(ue#T4%d8f77#SJmK9V{zvS`#8u5|=h&X#=#S6Fu2CJ7D> z-lMO-)M^B26qF*@e+eeP1>HEn-C8T4&4Jf3nJI}51?@>TEz*T5#eJirCjC(~&~k3# zsMU(^vUQiIY-qv2!h*0Vo~9mh_5od}3)FZ}sp#simpyI|YgeF2>uZH!zuUD-FNw>^ zxFlI*LP9?PAV*6_`}>0+*SS5M_P%`il0r~0*(A*iH+IkPd-8O#2B+hW0;%VTsPMzd z2atiF5uM9@3pNLt+a|`{<$iA{0Vh7Fa4VkYXbUw~8=xeflAd2o$~!#V*xBUlU{Fce zK0jWcuLY91FU975N_an0qBYupuDK&`436->t}pSjy6` z>!m{Az_VF#Z)&6zl4*-;DTl7qGS~mTgHZd9fh6$$p_m#uKEkWF@b{Av|NVKPn~RY# z^ouW{wb<>Ty!SVc6(Iuy1Gu}Mq=YF$j&e{_2L=ZLK0$%LN>JSRZD^{5=WA_76S*z= zhK91_(}W!lW+Oo)a^D%&QhZ9`#{n&L5|0%U3JMh)Tg30*_%;=JKYt?8$|l0MCBJpp zi|NRZ0Oh<4#GJl?!R~B16*(Qj-R*W7XpnSvz?Hym*#_X+3LAlifgwo4x;_A)lvL0< zg@bl)h5^G7GnH#h?SiD{@NbBMf?}=cP#6FS$GyKn6d!(!wfgu_Qc)4S zwKq&L*lTodZ*TX!oKj`hYWS<+ywi=RBe=~6FRBZk?c#7D-s7k~5F|6Z`@>oXfEq)z zznEEKVq&UQ7`|juEum&%2?O{123*y~_l@anC2Yl@J-{KL8@d23^hgUdivx`JM!yT` z1v=@c=p=x&H&Y0Hy-k+*IEx}h=&kr35%LrE}ZE6+S@Y+ zg*LCC;EWccP}h)O#z*ilLO8%|KO~*5IQ%0QQRlQ=*++Srlu_@&gwCP}&5WqMcVjdq zPwbDGtCiV{vkC90Vw5cJsGB3y8YhSlL|9kBLF(qq2|AuoP(#Ke0CQ}afc1dRJ zkTw%jotd5o%#Gs0)>l`vGS22L1ObnWl&g{OQ^%~SdY!zN>Chj4 zpf2_$aV2Hs~hyN9W;MP(ULF%?@dGtcH?Lhol8X>Eg(Qmq|%s?id#_W5HUp zj?wkzLNp#b-!3|&Wg$+|F07eBTuH(7bB*O3G*Xk)Q3DDgTVKuiq3pvNcEKTQsy4L- z0%F(W_w5-meilY5O=TIq>X7cnaNcr%)AGzEtsQ$!@DUIOtm2{B-?5M z)i1M^Za9yhMjf63blxqN#ds2-qbu)%*$YJF$@ zwqNoU=Vl)(>y))$Hr-p$zRl)=t;PvmtV)Utlvj_tBU?gm^DUO7=N3qm5evYo6QYb@ zTMW|hUv5bvC?iJ^NwPGGpl37q=0FEIe$FvGYR2UIY`k`eg9xenc&_upvvIPqbS3qW zYZ6!2NoHv2_ktMae{%rIB%lv7C9d&;d9Ft=4^C8%Lh1N-anf~tCT88VFL}or8JqQs zhda-a@()hzg?%pE$H3kJmp<@KPQpTd*9tflszN% zX^#KJ)Owxv6#1RLeI=wNdos@Q9c6(Bg2vqo@)z~v4MG>p0`P5%Xo30VI@#8-*@3Hr zL~FAuH-|=L+Fr=%^fI1zy)b_>0(U(`=>Dm(n>PoJJ#7{3Z@~GAEgUd^b~@AVx^LC# zo?aAM>BvA#H)ShIT!!B8eYk4n+uSI64|ep&7Sznn?+lCIz0!j}kZg80V+c&Im6qmo zFrE!hH#t=00ZuhN-S$>7Ml&G9;GS6Rs_t6etk{%_}RNGh^7Ui>8$qVmHkZWV$E%5PV_dcorjpW zh?>}nL1Ud>v?UA5vBEIknAMr3J^}Y?{tg z*JmBbz0Wr?Qg}I6x6P7(4lh~8iGVUs8`>5*rc%qqFrR7!uWu*|)pDdEQvdFGv}_5) zd>IROccNOA$V&UaRE#h|_kgAyNR=G{mHQSqX2=kS^`2j5!5?g=+e&U_nP%M9&wd{8 zsr3&M33rbgcfQ`tTIJ{7?Q>B{9$YNaPHZa89S*83=qeN2RMShhne9sl+n2HHUEcU=~GQ zMdFuuVv)yPvV>VJ)kqDaZj3o!4W)OfKA3DY!tmd!wvzAE!YKdt~TN_y?QpkMKHhrcJ zDOqayUY1S>!L=T=VvHO`k3hj)h6_|#{Y+HXd}#52FZ`26&ui;ZbxzFlcG+(+ww}0n zr=7Q_=MH9RH-8d;*mL+t zFTM&+1A3bZngcw-_8`jbeuKC1!shI+jTu{OY}xjI4P;VcOPUJYZ^xy`OGPfTm*# z>Syx;p)WZSvv$+X1hQwq*z16O^PHlhP{7<$Ai>7Q#yVXUYd0r?F7MCGJ|OV*N0Q&l zQW_|o0@Mgdtx&*@b92XLe~eE(Pj);12e|nk{f3l`jKP4hjIXGu_(+)s`mkgX0+IIX zYd`8U*$X66`DC$e2w9vsdgkYi5QRtw`d;Q$AeZ|3OOV!D>hYg&vc`tnS!wHi(3P|fL0ymjt?|9khO))% z8iOC31Xi@WoYbH$#}rfVhoRV%G_GK@2Xv&^lb^I%8^J% zSnrn0pB5+T?v~^6$_%XaAeTRqQKm=Xw2fYZ5UQ(UMDp5;iBAgHCECey+sZS}&dxlF zii#HpbJ2Z$Qe1?x%?nSAb(-;#;iX8^*hnxbw63Ny}9|u^Trkk8f_(7jlVgJ zkfB-tlZvL$`AUdh=MS_{5`j4I?Fxr&IcT5O7fCf&dpxxK9k2)6fZx}LNyfktJft{)ekagmbn@1|qi(uIW0GeYbRMe7-(lyTL@M=709 zjcmR5N%6N-btt1<{u{IE9g$7=&Udsr%2=mVM!4&f*O}9I`a9S33FxlG*p;BbW%kSUs=0(o2V|yIb~wlJ@eFpL3#AFu!WN83R!?5sDVQzLoTH zj?tpNn>rJxO#Y)L9(ieu9;nQCCeKXyHrjAB4yKV8YxRwi`8dO6XQ{oI;wF%ps2Lbu zHfzg+*1fdluE6CP2qOf1w&W6-k-vVuhW0N*#+5G5{x7lc-`Z1yuP_2axXOAd5hz!n zmm1FyN5y{wiS8FuS0^OmwJw^xZgAS)nao88CjgQYXzxP-L39M@|83Ch{e!AFD=TS0 zW=kLMg^FyX-Zy%n_W@EE5U$*7x&7xitXppXO^)0HPHGqMM1br7lyZ)ITKIw&2fX-e zc;TlT1M9lA7eLJdjjQEiU1U)a^WF6^RACVExS|%g&${jkVQY~BT>Z_>Mnq6pShpbu zyZeP{LBZZXp5H(_q3l1T!Z>gnkTm6-1r=y7>>=6QJlnM?r^8fcp@tGvj(E-(O@F!Y<<53p&VVeSHK z^g!cr%fjl_aoxtNo=^fMlcd2dN-nOLdWS7yV%(5`#-j!lK+R-iWB}5*$LtUr504Wx zp`j8~&@(0R9t%pkKLLR;`p<{JGw}S;Kpq72^ru|8l;7MI(*&b)b#_#zr>B6vOz`)I zcfURw_Cpu$i(}DX4GM)8Gw*{3bXQ`_Yn#DM75Ooyw)h$kiyH$y++xlmPb(r%kSC4f z)l6M_okQ`(<=pHhn;wk>a0d(^v37^3AzHbQbNkf>n-WyEigR4^v~zFKP;_ z6tp&`Q}h!JDVNkU6#WICSGu$6qVbk^m0mV6=*=>;>r7W$_8X^{I}73OiDr@Gsmqtv zjY~Bs%Rk~MKQe069(fdPxbOikL>Q|wtoMv%qjD{f-%aY6l=^Oe!7 zNc%B4u^-`NA71qJTHocpM6lv(wONo{$Pf&j5&R~HB^4&Q89~UK?QOpPd7_{70q@ng z_^+M8<&rZQw_=O)$S5Yw{-s)^gIHpAF-~?j!jy-HotBxQxPZBfKD+XBHAG~`KS=*5 z-!e?$gb(kwH*>=^vm<|)SNm()=Mr30a;j_kr)S27ApvIvW^8;i$k&w0Jfg3Ris)2| zF}UDRR?wFTTRI9)EOFg|v{fFetl2c3z8DpG7Tn$4g%SjSIeC|A2$dEA?^R>HGyr6? zUO?0i0M2f&s@!~v5m5boKw7*73`+9?kRiV2$fXQ`jB7eofCChbOGf9pxj9r4{usqf ziE@)sQe0-WHV~C^7J%wlp#{VS;K$D%&PQhie#~flpy}wWRC=GC?OpFAymg>uYren) z3Uy|B`Zu6@Pd64*{3X2x+{xd!Hh@80beho;JnN%^Dr->r&158*Kjh^%)juoM7I?sm zv1r#z0_Da9A1@{?7i!R?qvRTezkdDd2`>Er*e+(BmSpJFp;F=UBam$k=Bvz_?)C}| z4GmA`ElN+pZJmQeF>MBwlhz|8NhzqP`~bJ3Tf4BkSkL(}j#+P|#S03~Ldisy3uB-g z9Z0ayTA`$%0K6_R<>lpQ4RY1?KHx{p>Q#M2$DRvTwThaWLqP1EZSfKS1hxKHx@b&% zT7APiz{QQauLPnIP3tC@OUuh|XUA*nA1&7BeaS8S2ojp%$!hz5t9Mo6$(8KZi+tWd zo#022U{Wb+Gq1J>h61<~5M@A$BZO-8-nUzLDy7=P;UofkRh%Hfg_8;m0RC{KBLD?t z8+3YBR$+@3s9wE&4W*<_1fSpctN`K?`aK{{MN$W4WKjN(DEO5vrZs#eprf10{lxMa zGZtRwcB%gcj&cn#!oXIlD;*)7b~G*fWpjPGWtin~^X?-p?%hGrtjlk`Ufw^}Y;;%s zRUUnq>Ehe46RJLey@xsK^wcbMYVhFhxdllJI7G+w;U%OF97k<(zYD@LI1Y0_|n$C60 z{JV3T9kyrnl`*0D-tf*|;F^;0Syf`|q1{CquAhm8iofiu(yO(BE~9{%jHH}nlQYq6 zhmlTmbMxOIhQMZ6KWaRFkq%^pi=!o?Z@1^$2DJ+b0xqn=!uB5jA=_Rsb_xp%52Xqb zrO1u^PEATe`9H|E>?r^lZR$MV;Q_gB15o=H>es-&(q|AMA&^c=;QgJp--R^_J9wRn1(<_UVs)%4)1%2Y_h=Z znF!@vxfMikhP9TJorG=!E;s}r26p2id?1oq*CqiT|K#aDUP4uYxgHsfZeLYUdCOBt z*e~m_zw0o+ef5_u6$QeewWZa8xv)|{>!9j~qU~@ejUY#&F$6kFX-rAfDfobgo@JfZ zo(*TL)G^qIP0Ct{8ks(Q^h!W{Vlt*fs)0~bQ4!>eGXZtR{gCzjgn$Yx{?9! zV%x*;nKigIl=Bj>xZVqUPaTV2q&t5 zfr}?!E)+qi%I#i7e6$GnO)+prLCax_5#M#u)p^J$`c{tP{3v(Bn`n=amy~*lLQaq$ zk5;*uSH2RpD-Q*&1wFdf^&unDEiFHawJ35LEPjoOS;Uo zFLjc_v~NB5G(V5UtTSoC6A%#a5x+X7ZfJQlGc(ghz}xIEpbsV%bgf9%Ha9O&Z5N7F z+91fx*bJywXPN}sG(dQAB>UsPC_cOv2d!na8(T^JzeI;{Dn7p7K+~-BPUOgOzCK!N zx|sOr)T3?zQ>`xlkDTw)eToqyKR@58X713rpin-}A~YnVF!LAC7&|?Dm~l}+Ne22{ zx!g)=)0qrOtqI>FzlR_x)G7fK4d7qt0p=zgCY9uIO79jfo8`sARbS6AU^4(Jhm+xO zfB#$AX^~oontN{^BP$@5FMH3|SfTW#qJiDH=(e2_#xcVAXWSGYDy%in>X)AYe;5a- zR`0GHZTVB2V#Zfjb%B;}_$WX{1s5jqVS6N{c>y3`c?Y~_PLL$FA6k-+*W2o)KnVm@ zR}YkB%axWC(5XiQs0);`zj=>;Gt}&H2t%t59j??%a~ETOe*DE}$-H5@qaBt+*51)2S1biHrwPwq9BJik%NC5k>m z_B%C^F1!2h@PMoSA zw74zaDmKeKLdHb%V=55his$#kY#xxG7Bi`OK0cubhe@|iSBTj2;h1Kj-OKLe2e;v= zz1JMAo?n!LeVl7X*V3&ZG$qu@zETYna$aM+GP)J z`s=CgxO~K>87ky82tD$ZDbDWM$QgQILD>HYsWa|kxd0eRr1@UnzV?`$#g$wUzB0?g z;;v+5GcMDothMSRsPxF<7Evq(vQsW_rbR&q`7*X7>{aT=&lUz8;)>e%y#MKO04a84 z?kfL(ENDWsLPE`QjqzCj;dclDeuw4}XSDz2caSSqnYq0mow)@)jXrP+Gy#n@D<=nV zXPv<6Ig&svll?gbcSJcY`*QR#Vb~aSG-|+%VAh)|Yi6-f!y*|@{C49BXl!Mca~1B_ z!=Oke4Zlck8fksJBJ#LCG6M22WVzh`$B#2$vEu+@GAMHlj0Hq0N?*SCx3)gJdF29M zq$Kb+0n}x@H4qEz3&3zUzk1FV1CsVBfMcnbzk!rA4*X*7*C}QXCY3v_Pj~y!tlmo& zf9VV4M_}aqkS6Tqx)rP16rvl}jl;JfAOHZJuubzNZa_c)u)m%j`#dLsnl|lW2~>C> z-VK{A0Ko1Z$NUwx&-=h9TpH>(8H{JM@mwo4E(qTctcy#*ef#HcVpnM&^2)!Z;+g&a zm&+dtCoH6R3V$yhNEj!qyq~{gcwZ{{&f#v)TIpP)$F5{>B`oLoBZRm>EqGEz*7g%K zui%-#Wj%yn#|Mi^Bt^VjD9!c**L>YmnG1UgbKtDDdw_buH8XkdVuHPk1F<>LM}a1P zC92jgCq|N*G7fXct(&)gFIlf$fBPNn1|7q1W&m}@EiP_V5+ z3g?qQE#l^(Q`70=k(?n$?x>u*DH8UgVsKUBwl5#2Pu|eRG=fbZwg7(%13E zfpg&bBNwSfURf}`QN-Ae{kpHLRYb;9oeok$ARKjImBgpNERXWcm588&Xc(o-s%w`} z{8G{ufeH!Dp1@j0y~Z*KSP-WQlovr`mU}2KEv*OGNHu2M($5vZt@4FYnIvQ)U<~+9 zCnhHWSJ{x~yt=*^OGH$x64I+wi>eM9aX!}*-OSL-(ao)`$h5R$k`>^fXu77Or1ag{ zF$Gq|gX-5jF_-%@4wJIHZY+tww3Uz`4J7ua-W|t=$sR&nTnSlO*%Xr;3ho~QPJ3c{ zdK83VIqg9$&@1g%o&js(wRSh&Cf`1k00nN(i41X+cQtX(^@by$a|He^Nx!WZJ9CwE zpj%>AEBgk5zz%dtZn1~BEb8e~=5tMMl`eKU85zC+5Zzryqj7=e4%pLbY*vn(RE2?u z(rhdIX{ft_>3V0}57=F&7|5JTPBn_BCz}||@zhzx!;=bS`n7Jn#ie0Q#tQ$yp<11L}yy(@7p;)gVGlw?!6s?$jQ9 zLmWl6^#k_I_j-&noyIQ_J>94B$v>f^?z%G2OxYccffXk$-YHAL#i-ZaTIZH1AErN# z+nw2(NxX(QvG%x6HbN-mDn@xKrUg#z{xaTB)rM-(mMTBdoBSajVu2PYGi=gN2BVWZ-~tN2iJ99O~bXWzKW$jA0Dmo*>;Pe zKGy9E$!xFa0^CpEq=TPMRbx4C-qiCx>fevEW|6R2dq%Dg33jm9QLCVMVtB)i#(Vy# z+J*BEchR;hPi>4)wm*!tGHnoqd8aZZ0UsO8&ekOQ>8!s$QpJY+aDIR8tkY#yQ03t- zEhCmdhDcf1Kb&4$H?gWcCguX;m22Xnz3{K7xe_{`6yMPAaw>2{Z!1%NYpz2*L>v$r?! z;=)m-MAL1Wx%d);nD`U0FpBq2s)3=0O2Cb{U+x8Hm(tPG{{#jVyG}G-;8^Sh1t?f1 zTOXjdgN51%Rp3g>xZ}h}T?7nW6KFBONC>CfnW01k>0xz&Y?^QiF!5u(e%%J_a&~;g zfW`<54n`&grghGm1z_TaHs?Rkh>(zx*Hc`U|9~-(@F*fOvQgmU>>nQP1~?92Ex@+` z31S`U^*!6{w_I+j7v(ktp0`iH2Mc9VZCY+=i`AuY>?`GXBJK-ax{!B1jxpt)@N_1(+Sw9 z-vi18xSjq0zjnMK%pP)*P%>B*w?JTGO@mr&c&z53HY#A)x&hqIzK}4$(LhExHUahc z_otl67|mvFo$WfH(Yi0(4^q09S>DE_#3h~N9rD4Vzggcwy4${@F>H+7K$-q^KJe*i zLG8P^#&^-r7)pQE2fxkFE+WVZew(y&6MN57@?q(HxadI1a=5?PwMNfhMO&CEej$<{ zsN273uo`>A(^mcXDRHW&h9jBm^j#cL<|I4wF1Rx1*^;EjrP2(v6rXb_&-YoFJuYRr z*t|YQIL7eUa!xrIceC>;Po<=szPh=z#*R5_@uep zTl+Y{bK=J*uh-SG;k%amU(UT`b&42;-rMoV5DQ8o#-~mBSkh_}1*n^J{40;P0bZbO zYbWeQb$(QW@N|_(t!6Ap8sD63VfH0`fU;_;(^&Z>Q%!fe)fz)P{q|XCqb11f)VNK%-8L3-)+TI>XSitGC(a#%Mo1damIp$E8WLCop_3VXTkYjl4X z@X*t5u^P>BHF)AU~PE+jIo#{%8ki~Qn1@KV z;QiJGdjiaQO_XOoG;$mEy@m>eP(rQ2arZq4UN;~o5s8a_l#yAF)39Cx<0#t=`z4uP z_g79b@F0J90UjlZt>wn|@82&_%N;ngl#~>oMdPT@H8GU+1EuHUcqI*NKOjGS-Ts}g zlnds}K%zhc11q2wgLE>as^irSc(`VxK;Uueb_oCQ8a|FyO9qgR_1mc)P>Qv7#ajSi z)A}8R*dFL835Z{)wQXWz0vb7B80Lx=$?t~{6L}+ZZf-6X7S;z~(cC-m*e|Yy3L{h! zp}K%n1iVnA+yhHrLQ`gDCe+bZyJ(MsE_m{;xu>-!>wjw&^W{HX0E0xUAkOr_99)&f zO!$IzV;FEDR+^4ye5A}I*Ba+mkXv`;XHWRVtXWq!f_DJusGN$5C^8?x>n=f{l>*N6 z?^mPWZ}eb8@Yp1BCo!$fd$X9a2R4N)w# z$yVQ53mmhr$s>LD{+(+H5|?Utt%6=`3JGsmhE{xj-d{rR;b-)znDen-hj9Y=h~0}i zEl++k%C!>wh96oHONxFLb6>RgIm7GI1Siv9F2#z0u?83zn6RsRtJ(#C=kk@VmDYSh zpwkvW82U@ZJC6;W7z2!3o#;^;a(q0~;n!Q8RnO&e)i9dcsw(V=UWet~0t;Z1M!CN_ z6ku6~4qFYS2*d*bcslCy6b(-E1~_&n*HPrQz)%YvIeFXt+q6VoRjTQ*^I0R3@0|*; z>P)`$n9V+PEY4P$-GBVJcxP6rf~6R7U|8$Jzxry(O4nN=jH!~roes@ZGR(FZGCV2T zAMCPQu)Z3X*-NJ|Nlw3oe-SxRC^E-gQDKcFC-x=)(>;6YtV-Ed*8)K~6{!H0^EEt- zl`M^(NA0gV3zTByaKNhX2vN#4lSV6z5H3yAD5%k_luoR3n!K@O{8FfrF043DT_{sy zT0_RS8QNRBH;uBgs!$kShglqfH-WeOcC(~YWBMsr(pEnV|Q;4MJ zTSHW~vZ+nCx`WnFY=;t?zgZ3o{fpwnh}Y7)-d78V74ChNi6Z+xiu#r6aT^;~=sz=( zQCGR`HL7wq^S;`FnRiqAZ`y0@?So5;LYqfq9p=t;&IQAjM z%*K>*%(T)k(Bxuqd=$gl*8`QusK`aP#%W2#wY*o#0#$Nc0l61j!Z<*DOMQK$3g$x6 zr%iYH9O2#KP?Iy@{Fc#`U6EN>BpJAM^j6pq0zS3@J;W6NkN@#5s+SPbT7m} z&VodW-q0b){DOqW9S0#c0GnhMCbohoQQLkUL(|`lD~5lwo6zer_EK;=E^${wPr?AX zho+&w((v^ZW5QV74QFcRwCN7t#f$LYlXgL@7dh`xg@eAtYJNQ`?Jj)&7?+92{gi+N zn^$D~S2_Dj!UcBzA~yEc=LQoj^G0QDv5Nkcb{hzKAQftir&{o z%Kcm4M{2&ok9nUcz!xVj61t6xo7$0-UwMYdDQl|h;b50QfH~E^$3GVtIX6R)Np?^< zbMwcKAE4rm3TScnIpqSKorqR0*>%Jl6ASAl8g$lfKeQJN{XRTC?t4C|mRsHZSc+Tw z{fO=-BW6^a!Nim`xvE!1CK%I)%c5ve{Szk}$r_KfnUt*2^3ZbQb2MAO^@_f@HCA{A z>sJJ2M~5T@GsnMmL)Z)FrgPPFw9l1v)W{L?)FoPkw<>e?|Bx*{CO_g!4wn2<B z)Zo&|IU{U_2kbA4kv6J&Q<0s;-OB}ZLS*&tn2nk$Z8)jHKK(c`XpQSg8tByPZ(>$C zzI+4as*i@9_4__qs!XmPFXj{@LA6RqP5~-Jv9#w8#|BdYgY&>?@#pS@L0T?^f6q@p zbKGp+$?*k{kCi-EZwr>5pCr*&Y^_EvnsV`bEF0fVCq4m@oU^Es48eEOOh((ND z`cYE!O`A%B-E{qVykGi>fX&%x8|blLG-GkF_tpyf zONu6UcYrhsCLYduHiI+zz-R^-L!J0K`Ur}?Egvx&)pdF zns+7cq5MUSiXdr!P)Dv0BF&&Y&HFq%LN$8UpVcDO$qFm&AQl zMXjh0x}L{5q!^F|yeF~R*%pYQ@}SW#!VIqO$@MN9L(h;;C+A2tNZ<_i25@l{K=mu(tlqd<7$dR8gtNiSa;zRQ_L^&^|@$r&PZ2- zr)@ByBVU^)ytj#tV1s6!_t)<{&ZtnVJw_N-b>w|y(!aX@u@PoQe_8$IH~g{WuHa6- zMbe8zP7NG3Jn>f6^|DH;e`UpxodIN|bNpT26FpDL4ymJQMA5>YL;KUyO+@sHUlW zv;TgKaD#!tDfzr$5(!-Mx^$v2xhkkiDouE}z-EbsA!6!V%Z)GmXpNCJ zJ{suXv`yMp%#9{vtA1udEvzT;{|d@CVWH!so*?~tg5e3MXkOd;h!)b_A#~kW{dm-{ z&k7o~UErPpNgTA9n`Zr4KtllY-+X{QqU7a;R%$yyDn-V`e4!JV*NN@05-H2Az~g=j zgp8?RV;#OsPZ_n95m_2M#p6|YIJF*XCCgRzw*IjL5DUS*x-7mu4xEo?F!v%_{QWs(&0XQ5ziJ1q|kmx!LX+6{feW zB58d<%n-`Te%Ob@ZmLMgND#{ z$%ofpV)$h8?PDi$M%yMibkl<5W>$XAX)!#nVTolN(%<699#=5CX0XUWe6ClV zEB-w&u!|{xypTvKBeKwYx=X~6(2Tc#_nyD%IAXy3g(!KEL<{ft5?$hqm(NUnXDwSZ zvhZRlNN{;`LH=U*qG%rR$c#8Cfe{zWY!N=hcO4ZUY4+R{lgkrRx@Q!yY|pgt*RCkK zkNFGYHWeO9Q?Q#Ff+}taZsKmohv?v`BMZ{WFL>NAIuA@yzPSc?)I!^nCuRf zEc>e$(qzj&zeph>Cix(>Pc7E(C!?^of3~Jz_9*@GzyF^NR$kTEC;=cV{@+vJ62Q$g z3p^HpMZTuZ1QR;Ipi$EJ7fd~Ut+m!_E*UVdP6X~JTcB@F6eu%+v@QiCp0AD0#h;n* zW*^R-3%r6~b34Pw!=+8=^Gl$82taOJg+%ys<|Za8yM1}wex2Dto95+kvBZi#Wi!vNf5#!E*N-m398%vmyT60bUF?Lh#7=jG8#S($Hk^aQ*|fn z;|RWwZ_|cHrub4|@n+v@HO|&h`E#>i{69%dGm3%Z`T|{@qCMEZQHjhRY@UL+Wm*K~ zzy77ErlZNdi=nnRch*Hlru_5aksx+I(`x0rnr1BI=aXWWD)9&GB<=4jbvJm7Ucnes zui$gxl%z3c#Ly(e5&HcIUR#mM>{LDv;kc)4JHG;q{d=XaXii)Gp z6%;+gZ~Idq!9v*Y;P}4oeaxbjNXdIV8Vy$ag4%B~;tSq>BZXl*)2FkG75Wwmy-}*u z7X;#}&o>m^!p5b_W33g5BjZ#MHQf5|h?v^?*CaUbE6aqF+!#pi+=>OZ7q8HxWW)`X zSs}6E*asP8+%#`x`4Xe~R7*q+P`hXv-Wm%@sp(U$od#`B{owhF2g#fcd}qP^wp%t0 zlMHkFM=b;W4&ns>*@+(gv5Z6+^J_*Q3QRj3ublbBoERey%;9o?sl5Ks(2 zXNuxMB9aL+QyXrGedzS>Q1HIP`&U;{w=Qcjg;qcKH48Xe9A5ZvhxPZHJ*r_@#f+8H za<+QV_`hI_p$Ay(H&)|s0-m-^prF`(7>RO2BcNa~usrq9Hq%mCRDJv)^+&*))5KO@BVEeeRxS zF}AjNJUj9P6!q71Ih)lT6qW2Wx5`iPr5IDIJ-uF5F-LpEPkx3r+R`hZV=?(r)@nWM z(~pdl4=W?)&%%3PrQF4mP{U7^&E4|!neiwtk~(^Z=;~xP{+;9TM3n=%f{q~iLgk&> zcJqtNE1XDI^NXQRc4#|zGu<@=u0zrZd2=~1z8GiXsi*q#C0QlEze}rqh60Z3Pd4`RGh2){7CzEe#TDc5i;IOBQiHE?^CGcTBQuP z{##hD=MnJ-yJTG@=lk5NUq%$9pAv7l-=VtQegCz^m752Ty%(x>Q_B6iKvaorqR>w| zO38TP(;JeLwis2Z9QOysj!=c8dzR`+RO96e-m&8a<)_|~mv<)<+ihRK#EAc`&n4YO zMmO?)`k%*9XBF#7UkFWZt$~6XBLVprtfqBq$({pB{W3{B{(`i^x;E+8DFPmEM&1>a zY9O&--W}}H=Zr}_hzen+q3|3C&m^N)VNp&M#}MHd7Qf8$62<2*uX$-X(xyQ5#8dB^ z{%t|di$wAcO49NQw*00Wn&0~O6^)1=2sH;Eiz^^K_-q*2OFv>S=F&wVUYn*M=`KWV z8RH%%n))HJ$cyW7<4@B1N4ee%cLyu<`s!cA2kM^tH09%_E{(*A+z)otqU0QV;iyIt zJ7+ggTQT1jWclGkp26FzvDxRtmUF56@?oy!d+o74NVX`ye-fg6$)){5d(-zT;lL|J zlw3_+((0SRcX~G!OIM+#=Z(_O6VuE{NhTAmqtkZm9Ej)B+gq$Xzt78m;`?QD-O~M($BEp&PUMF z;H@Ppv1y@>XbYu_qDUs@e6Xu%*)9_>!+3GGTWutOPx6{ib|&7vME8? zYjZCja*fH`YXnA=dM&rhIw_H|$=UawSe@;3Yy{%zwM5~gbxpW5l?#oIzr7nI@HLd_ zqclzDTT1Z#zFhA!6Yeu@MR{=0|F~Q>|E!m>m8E{;&0-msNd7hq06UV9IggKVU%8Oo z)V}FW;HKV}&L$2%>HDYXejA@;_ICWbneUOgh|crX=_hS=+GMg}`N12)Bgou^VaRVj z*xyN%wsPiv1eeND!hDxh!45{jA8-APupQ+woy4?;k-k(KwK(K^>+_%P$eN-fL#!830aiQBR>k*1p7eic*CNtiN2{8bDbP+d z^!=+_hao*26?D6fnaF_9;5$2(66WtTrDs(92a@V#^4kwrg6EIPRCT}K36K^&7S{h> zpT&XLvI6-Lxla-IpU%@3Oi$mgRH&TjAjn|9o^6!m`R#d@|5Zc^u0RQQ=_~A-O-9Pls1qBkf=Nsl9c5HJS6+(2V_~>j35n4DO=lVFSQh*7MAJ3{j8fD@&$c)~|BT zF9uTWsWitF5s6H+qH0s?DbzHON#eB=9-+qjEq{8lUOpkD*6rfJ zl((MyZDo~oQbj_#Kv4Mg;N$lzKZ@$w$LDy`?Y-RQ{!BeD_6=&MS^Xv>H{<()xz>Y1 zQ=Z{|;=wQs`Pwp%H^@fqkC`OnyPh;QM(OLhjHl)0w%c)pSjin9-L*&W<~a#qNXqI{ zG2$wzI4saDXEy(?EXAj1rJQtUVb#TX<&5~PhwH!!Ub=+4DH{!etI`AU!S7L=G^j~~ zk}-=yVu=wi?gn57)fi!vps8y{VdO>W<9AY?yL)qTG!+ zwljcqGF3$0*qhhZAEQz0jmB5^R4=qJ_7tFLJhb|hTtu=46&MKB$R;v?bQS(z)TVi? z6W|NsckjQ3tPI522k!?`HeFV&E!Bc&7(ujxR1FZV1R=7XvE{hbnj#r;8=s6!9#~Z% z{Fp&OK8`LPVl|Vi>9>~gbQbZ`I>{NLIz?J2BiUcDy7+$ok$NOZu%PgrB%8y4)qd%> zdrd&e6P!?jpzo}7rBm|u!b!IM#N0L5WyuyA@%p@P-q_CAte`a&;wDy1-p=HrJ>_*( z#2RyvU87f|TXy`H7)_`pc#9HcA{N$qXI(2I$g;`B!)-PUj3gR3@hf36uV_$3Ey0>wU z+32(Arx*ebRR+EfIEi&<+AryNv<008zJIRTX=P*f+zZ!tGqaj~Vv(Nt;Bq}(!l$P2 z2vz)Uz~{dS1s222zmLtOUQ}ePe@Q(d{JPNeb@(s4fA}ZHro`9xBt*8&D|zjB>TzXb z!c8MckkX7B+wUitR}0oK&NRyf7)S38I!9`^{(gL;d#3NFqWj&$o(kDBs@xpP11Lh7 zX`Eu)>Wvl7)|_V^X$;%Znt01#19z(nmB5wL3j)r2iBBV{ zP#gv%6xC?DpbZpv+y6`(Ad10=gQktxprZf+Z~#7_*><0YPy_58ACE_vD_vVS^_d_p zduZ;qpj*G@@JaL7Qlz_-R+lQacZ;RPBEYmuJgqnBd10L!Hj)CP$|N=M&g-f*`9Jto z9?v9b#yD(38z?p~$9Z_j9SBu+qdjd*aZ)&x-5Y4Z&&ZOOCF{` zj>CR@m1*}3YgctMeC{1fp?FF@YFH2ji{{I)J79- zK+OR*fs*LjguZ0r&m8-Z$fW$V%y^%`-iA+St-n0&u(cQ9Ye=-I3+2R?^IO^cN($$i?yTUN^1 zno6rz_%aDFlamSx7=FJL2bdSabpQPy!bY{y{R)gxQc_ahE3eSG(^bFk=<5uD43+|3 z6tD~`KYz{{OjB(;K?lLEAXq9OKmZ)A>1|)Qpn!`Q9T055PXP?pfVpr>GchRP;HLcy zc)qZ%uE(Hgbu+fy#wO)t;OCzb9e@j~?*`bs_<`Hf4`P0Iw**M`{R#AUPIBIX8U-Su z8H`Gd;2;`|_03I`YM_W9R;;QjE_{4^@cd_e{hEX=1LlD(KxJ414+<3x4L;HXjGbt} z#AW&J_rTbMmkAc$O>r9_=wJkQ16K^8Ktj9+R5t*Vbc(nd{qzWgv26!}9#c{jM2xZm zuYIbdcp;YvVWTnlybg=Zhc>Uz^x)c^*7WbwCq>9R!MF2RHwM5HgcxM2X6k_b2Qeyy z)BylIco1M?ftTtytL$WnKpFy81EG4WE}X$5LGXv*vC6x~08=s_X1M{U4r&EH+l6ViORfAs0ow>8HO>LcLeFwl zT`pw7jXTG$vK$@~)?_|=KcDe7L#shAK!iWylAM%HjV{5~@E6G;iS1QMVd~enri};zKh1@|VCG zs*ZNU{n6gWL6ee5uAP?lQK9kEOV=KJBbeX8AkRJB6Q@t8k6F%k@)wG+GBG{x>PKo0eelHMyjPKrScMzi%d}i++2X;1P@Hm+Jd+;3G+~&^KHYL?AKv|0DK+(`6Ir=%vE)LU<@7* z1WFAsONl=%$Jh;E96_A`iyDU*gb1$oUIZebefgk~@6OhQ zATTiqE?9&9PR1D|aUKFy5@J(|5WNGb{g5r6)NSeC)fG@oaS;hC$O}Q}DjD1Yq(P9M zI|Sa{M5B|zfi4hwzUAy_j%cWg_XDg=Qdai%-a^wB%xxRU1Np(cLu69}uh#A({MNt? z+KhEV*Icg$*pX$!TdP zkY)g!Tzh-Fn{ge)xAtPUUO)yC0=Rji8)ugP*IgGK{dZ)f0b-gE;(To6(GG+h-bi zwRv2Zi30x7tU|RxiM1wpPsIAp#%z{9GQ7VZUHJPw@21t~weUU)?xJwDi{;*WVuNaf zPlHy@D{2cuOtOSpsZV}dQKiIoG^2J&2=BOMF;b-|C~2yf#n^u%BgD}&{X&M}E+lN2 zp*o&AO7UdzHjmeh;d7yk=s$fZ>Z1Bc&%DbSG5yo>?=Hw*=U!+Edp&87DEURONWsrH zqPk-H6nEJ=V5FDo{=g(HrLU}TMWK*DLX43~tc8z9W*m_?3AG zVOuU)oOm$Jh|3#>W{iVS?EZ#rZdCW8p#aJVTMLOU>==(KMjEXaBFWA^Djhv zPQ%6Qcc5(4bg}fl;9%6taiBoltF{wZ%+_NW!!WFyFZbJ!!AJ7{0w;Iz`M`#TAQV2n zxllbQ_zwH`T%C*0> zcV^%f6 zsHUaWkARHDkQ}#(GBR$I|I1K>fRjijZql%(oG_4yNT^^D%NOzkv=z9B5SH08?c)Pu z*pm?kAZJ$|M2r@u==~tD{2amY0ddg*8rr_o4(y66^9~#BlqLZej1YfZi?|}sfhFnpPuhr2j7&_m za5O+fmBEPQH6Q>9&6kq@vZD~o2O>zH{=BvH`#-Rcdk`6RUwWCD^}4=-Wt+!wmV0wN zdpt+db?h~yo(RavKLsJXx^{zg9&rlb1;Zo~*cXXmU7rz|UPQbb4nFSznS~YvM%ze4 zf~4W#=g*%asi%K2aB&~4b$&SmcQ`6yDt#cUG&(J0kdZ%}h&wJPvQ#aSa+=(pWs@VuJ`Ieis^dtUkDI5*=aTtR@Sef1 zG|M;iD+kr~;+Aise>N%&ODUElN8%g$84|BW>U@M|xSK)yD?Ckn6o1$?f`y>1xb-riMVJp@c)aL`QowOPQ^Oj}g zH~twzw=owWpClzGyHAh5V;Y0p6xjG8!BmF;l0EwOTchd^E4Vl@37NRz3lZx9fNEJ; zn$N{3fg`#JKGdp*r|XtJm5IO=7T=%TDb_B7Z2A$~inDqG%eBU=W`(-0XgK)Qk`fYD z_b#QXE)n^AzzG7t^8D}L<3+deOdt@^X3X0FDOtNL#i6RB@pU=CT`Sz;uK(k!XNNsJ zvWX9Z0><^_^35@jh>zg(!9OoF-Uk~hf`jZLv`!EVLEAOhTje~=sgn~DB%7XlkdCQz z%xGz80mXSzST=tm<3zMz!gkDObgXFI7y~v*1kM7etl(SigSiWUHY&uO*}BbpEx~+P z3u$G|DVwLVTD)cTSc#YT0xd@>Mg^?~&Dyi8HY!<81b@FZ9HkL&sy5?Oxr90Hfcp2+ zH&u82M)xXS3?`GvP9^p-VAT|81j`x4tv_Y>qJ^x2{nKxZNijd^WR(1hzoxdVc8zRR z{H3v`A9K*OX*b)a=RS!q$kZ6qxZ3tsKlQF#?`@Kg{>x$exDt-RiWH$4r*b%$6TB%y za@yG*MG~k)pCk1C)2!deq>&n;caft`$|^DbpU2;->g$ph;hN3fO(uLIq($^YO-F4t zN=mEdtTt|2v*0%YM)YR0mZuiASoO8mw-Z{iN2yY00>AC)_5D$V3#Z+(C*>cE{Y{uG z$76FpzN?ubiowr@ha*oAYOCojKxt#+$+$<|n*L;DIanegD3tuYP3ch`y2k5W^8kw& z3ZBM0lJk18RdOME8$J0ou1{m>KK$m6yF77wE+#+`AR>%xlx6k!d7MPd=~h;37PduQ z4q>Vny`+GsaR1;o9;wSdA;qil)2j#ySCMDrnhqXm%VGLy?JIa?C?gsFD0lIdPaLue zc4z(1`wS+?mg>bSnacRDUasq4afC_NM@noIGZr!72nCgRqUbxCBMn3wqJG=xus|D` z&OeElOlEj(z>80qKXEUXbg9ySxvk$m4w;YZQS{XIK!HXPDUxhl0&J7dYdb02Gmd^_ zBj>yZ9PB(HwOr6yQUX0OiYZZ%|h`pMA~y-U$s&yNaQ#LAmBG{pkV`@E;I5Vbn_{yqZvB$YTJxpU ze|o^5ORqNc?c28^gWG@pK0G~xefDTd$0Sp$NWs!14N}P>FQ9(rCv6y(<}aSMCG;2aJ7U%0oiT*}z07xF+S zY+JXuc)0(I+)uf7YNy2Ku}Wt2c_S5P>r(d+ORZrF>P|l1zjU+FE&~#>hD8{R|ti2U%uoE)XV?H=Qdt52wMpx$giXWRtct7ulr~{^QY>&^E z*D6jl5;&F)F82flgWI=0Zo9Z%tr(+@Qpx{v<)e-gVkK&`rOk1mD{9Oo8Xf6gCoywF zMvL&97$kF+p2K{u73JF$UVTiGjB0aovYOq(_2<#kz23ueuRMITMYcoRUCoztE-92u zG)3R6$fguN1wNL~>Acf_>PMLu$JtTkkn9;IK|kA*b3*%7d#L7^Twf+@|NW_sG+yZK z792rF$hG&`^3_6y18hs3-%g7Q3b>&d^ME8q2U)KxKpd#Duw$5LE`yUB0K@;vQyan& z)Mc9GGUJYy6R>2%7?gzt{{l{Sh%yQCPauuLk#HUO{Y7%|)BxA$>QStO)cM-c`h(a(P}?l@mRTvn~EsrlyJyKRrU&M!NiP$YdX_yQ52*jYN=LY4dz$N%8z zsXZ$TOAg$2k+$69&}_jw4h&qljXi8-ni=eGW=BUy&$h1dgJ`|V<#RZ>9>c5Qg~)_N zV^JrR+s(>` zx%kn7BE6AySv!NnG#&gqA|`oz7et!I)H^G!;tr8%^FvlyK?3S1&nLo)0)+;t82e(C z2e!s6%Y%cAk+L(7O4vj2>hUJ?qIDfukvH)c6Vrd!x@(H?4+zkr${$OA&i9~i`H1O~ z8axspphlhN5QQg=gkuHo!hsds38co`!zU${Z}2mIzKAzr^(_{eRRP< zA>fFxn(WRu!~ksh2;$*csYs=?fXY6GeW)YK4=7BC?k0?kj4<-vBqjAi%ZpK1w!uY) z(RFo<4P{G_s^-P>b8mqc-=9KJxUjG=GH+=4=GqHNjQ5~Z2;dPIMMcx$I^hf#u8blE zV+;gM2C7Tu5T8JFO@MwLki5V&Jok7pSIg+*)h^fVaT^yOgx~zEPCs+UVzJrf0ql}c z*;-6@{*Wq1?SuG#1|mrU=|^Ml)v#{_2I4@yX+IjEK=3GTq2nGR2sRL0%xV~q@zCjn z7}l33}>{v8A|Lxl`J34VjKoC(`@ zo*~i@5YehVXV`-M5}ki-G=FVmSiu*kwAUG>xbX`?v_=RuCY0<;R!O$kDnZ3yOI+KR z($@~ANpRN8BHCw9(wL-J2&b{tgn9Cz%D}1US!_}5`DY%YwBX=_ncS~GYkYQ-MPBDC z+IdVIWj2uIp=<>5%LY45t*09P-EGWcFkj48ey5P7iz?i3Zq}C@QS~kD5RNIwP;(-j z6$srNcQ5QyjR=yESj9u4OWg2X6q5^3+v7+vN{plG#e8F##;-shWZ6giKIhl*z>Hqw zNYdI`>H}%%muGF~=VSUA`aW9EEN~bqkB=>Pmvm~gReVOdDb~^6Xq!JoMKx5AePke( z2C=jt$noHNX%HaatuIzb>Yyhws=1=aOI4SA^X;j3%YD!I%-v6ps0~4-{$$rbqGT`| zsL~%2EdLsD@F6wgd^%J%<&)ast@$N?D{Lm~QA+nv63;=R$pfv6l(?_^ExN8NcL@rJ zGF}S%sEZQd%iO)kn({gG=KiC!E6|pP^Vvh#A-#=x7VJPY2BW%>_zB+C2!U~8) zpWpNE!&^iC`}e>CC)P-i`a zLuMv)Bf;x7pe}ACQt|(PINhM`KpUm_!L?NgQPD#r2=ahm1SxGmy3Aq zKZR`Z$7If+Wn%vjFPtc%U3_^lQO8Sp{agd~;6abgNsi-wo6_rgWp_q?n zi6e^AkWPD(ojnfq=bh$V6PD<TqjyC#kyWnDAN1YVsOir&H`#u~pde-S#q=pA?MhG-ul->OyD*c? zn%6sK&qjZ%^YhzolXT1mWZWx1*5H`-96wHUFif_PacHf#=ZDl^rY76^(;fQ!T_o1R znz#8@UJH$hSBcB`-l4zj=W5%a5dlzVK-POWeAkQSCS??r_;;R|9dfHP>A*9J3M~Fz zC-lpa^{K~C)M;LJ;C2-B&^C8)rXX8I@PszD7g&7gx9~EZ9O4m_WV;9SN7~R!MKVm~ z@VysvI>oB~d@yOs;|a@f)*35n^^wo-^ZJN6(zX@4vBVV{loxJQ)UL~WR>?f{0tv(F zymc~EJ|Ow$sN?5kam^29Wf!2YwZQd7p}A7H?JUKdg@l{Ly?5SEe06x^?TLRR`!TIx zYb>1ue!`=Kw<4kVhi#aXD{ASiXVP>jP9hO}aY_@%9dG3eW{rb1>hXO?`>PUX2qx%W z)6L)p|Hdb)9~IVB|7PpNZb+@kMhsi6BbDH!hJv#41|kNyb^*nCVJ8DWzbm_#s8_FE z6+7(!HVC%Mk$Vf3qhI}4p^u5##qq|U{g}u|A%}~Uj0{SYTelRHKwRd5{I5vGBkrNp z3E)I!9<~2X&iz{{=O5Du%{?Af2<(>{f<_4&B%*8Cj$_&AR~*-JM}H4T4Rv+I#Jjh# zzuXnru?Fl!#Fhnb>#?;0Xn%(1+kM<1v-onrjr_Pg=nAg?kL%=~`q$JH4|qE8kwcxN zVZO!X4R}VjL7*f-D@ySc_apZ(Ojf%&g6e%k99@e}# zyRZ2-90~6S?~jnIr$+ZY(?Z~Q18Gx~Zis;DflAHepT`|Ta9v1+_u#hXBf9HR2YD9c z3MEsMQZciM{=cimqW#COG1Vq}t?D;Z%O9aibaLEnTF>)I>x`QZsMs)a!eMB<`Z|-+ z(6+}XsvDxWg-WBByi8?~FbIWnRnUBE<{XWiTHXY>&dS`iMw=^|7Eq`-KzI({wg;V{hYD4=Pg_27G93ieebX(n7 z$Hh)Q-&?~aCbCz{N*RId?{)u0z>Pg!oJ(^ToC#7@l(I73;K}s8%(Ilr1v@z0UpM zd#31q^Q{VPCE&{5T#N^P@kll)>Oph8GBQ=?XN!{`$qyjX!)9$5{*;xgw=&#psD(CI zVCz_zHhyf}DY?(S{5~X7-n?m`4vgXrkss+>)iBwl7H`)^b2=^NjI7Zy(# zRgOpXYzv=&;3MR6n_<)G80JHu`Krpa&EvRf<;nf9tO|MP0I1B8@N8vG>piMuH`$L6 zmEmGtD3HzjG9f43+fEUB5vj;gDf&FIS1K1E#= z(UVl7!Kz!3>im!a%^fN`PWAVpn;q2M0ltKQIc6tDkUFV3n11ih5GBmgB>)MOM{A{wOj9ZnIDGjkMMJ-@hsY!o8^oKSeppKrV4C4*jZ)znC`wH!+LWeM zq;{>pKpaG@M=crIpq&STR~pjOU1KqLE^fovpGdVFO{A&y2;*f`cc1-_=s1t^ka=gq z>pZ`%#b4x~#1fjhH1fEI*Cf}HcM>-Z?yjgQEPj>Ot9FQbYX7>Q!(buqm+mR4$^87l z0+!de0g`wn=Ew9C>KHO(t{I&Kpf&Z{@_|(onlzfiB8dd(pfLXc^h0^-k1D$8aWw+< zoty+G{z97X!bUl4rUazXy~P>V-=49sDRHWPZnGLOu789tpD3Nn5%Cq{e(;T^{;D~T zbVhZ%gL3HnCt-c5aQ>mR$#|?1m%$=ufs>;*w_)&E^Vzc!rHX}v?2#oFmaC~}$%|dwi46Gfvy@V3 zR6E}*tb#K@c%c91ME;H?Z7i^Mq3CeRrjq{ejFuMv8G~vcz5Xy^TM2Kkft zROWho&l=J~A=ffpi{Ve1IV~q9PNASfG09;R6M!#RLNbPDaK$TtCQ5}W+U4mAxipe8pB>! zqMB^3=96cVs?ON99~a4AJ4)bSoF-KN~y5K^VwdMM7fx&{z9Dc_6KEK z|BrZ#33R@kGBvMI-;*=5j+J6`9?$-M`Plr!30}XFP2n}IKYy^Q8w0;B195KR{l>;l zoAPg@)YSWPIu{Y4ikQDC5S_n9WloAbk&a7I*NDUwilVJC1k@gP(99W#({f|qto?Ms2{=L` z(ye2~em3#2^vEG)hu%^Z2a+k=2CNq;X~nxq|MftV@@G-pH+d`Lo4U3|7$e6%*eVk( z`Svdpw5<#ra0BQh0u6z5@2~mfbCXy!*N*Bp>)?CFnOzjX)fr9_e3E4RiE| z5pH}g!y5D;bvatjiB~To!igOpo4BtsGkYd9N=1L*GBN_9L6>@EQW6>b451~@%8s2@ z5t;g%r%?S{U0sb#9D1aMNp3^)cgDeE{J!K0E0(sl5uT7OFvvccQezV$#iPBFiCzeZ#AK|zrf%7?o4 zhn&gXB(CS7`p*b|ePwC*UrXxuL^8wwur=zP?iGex(_oy($j0V{dp=pnJZYcQ^vTPr zVozoEWHz4&PW*7>fl0P!Uo}!oyP4c9sfFgF&c~lN`;s<_?sna-h>q!KUqxbbfW%tc z7BVV>ER7-^c}glCGbJlWC&RyHG0wy~Dj`i*G3#V9`I>=fecyd){f20btSZMAoChgO zjUfiw_}Ybq1A3zq9Lqi%@Nj~KPc|EL$*qBWwF$9K=qug2Rl&2^Y7 z@x4Xb*m0-(L6zpkz$?XWmhD5*IQN#CZ^GlyBoQ=FQ_rb4TvICsQ&`HSm?_$HB{KYG zDSwkv&ooFF#mFBrX0cGF^(5|$y;)X3n|`3TnMKd3@Hl~Et-9H&isrr+5qdP|Xxp>@ zI&A0CBBlwE8c~$6VVK?<;`j1Ak*=zYZ2wwPivH(4^=yixEJay97APshDfvTp?P4vZ zs{Dx9{=<$stE^d9A7R^%QBf5(!yT5{ALcr8e-rLC)(9 z4bzXWGy1nf4tL0*b<09S5-H~=qe4wZ0hCW7G_#YovD8w2OK*QYP|Qd)(=$>|V2=K! zN;!PUKR?0(*D0-wUE0{frSSOi!M`xJ?9CjMjsjZU z8YBt!6(Jk0+K$V%>}DzYuiwS1+f_+F!#sbtjx$)hv6L-gL)`3`X8E+C zq;|b|6Q#^hzgQz%cI<;6mS@VYRUR)IzM=Q_k6x_>L3NIElw%b2lrnWVCrQ?Ifl;7U0ZaPvlkD4zc z_`I}OKR932I(_EX+7L_UZ^kLmwBg@aC~Pk>dg*QP+Ujl@^NJE#vkD5dcSLl`roI*_ zQy}riF=CW(YYs)(_|ZASo}&70cFLo)+*5|m=m#(J&G>hpK?Swtn;YSW3k!RHK2mki z8|CYw(BTvCzn^`g8Oy=cSY=Ks9rtrap2&hAPI@9Tim7JZ0Zr{HiX}%rVa#Pvt@3QI z?cvF#h3D4(%BSy3#H&N-d&uU;)O)wj`- zyZ4G&IRb+?tu6WP{Hif-xoP@yi~RRX!zi4o;kR`^%F5i@mVl&>7vvOify4_g%hM)9Lz&4CK9cD77hS_;G`)BYWtQI7-RrP!`G>MC=WU z2-82*kPtlyk`=~oKwogbP#mcdwm>fUHz^{+nf|+jS~QD%v_1VZ=k3YU*eA1ijw^j1 zh@@oq+S2n2evCvN=u2um%loYPDmc2%g$}9lXPvXo=<|=RWD|Ci4-ab9WN@w4j(X}N42`9`w&j@#zMjHV0-fm@4>v6p2w!Tf3wZhNRm8V6hoqXo;XA1;*EOw z)!!E^jeeF%sjS0V>i2|2JD(Er-SgZ~N8`mByX|D++nD`Xgs{!QlQ20Xl2Zd)(TX8C ztfR(8OP$I}-^i%+1sB`lx4Ny<*_v`(<}6z#9p`muu|Ccs$4>FMP-XJht-2JV_ElLN z7ZK$z?j4GI$M!U7L-LuoMH+7eL{u{rfU?6^0La#F!!Hn-;+qb;@VNU78DzBT8 zC3IEJd9FKl+%mr6(G}6;pk0NJzau)k2IptDc?}-MP<0AF!xt%TezIzWhPFnNCk*w?#Ln?n1dex8+Bm zz>v@vhz&Z)AR4LRmwf?XRjq&pbtmP5l1pBsWf1vg-gEBSZR}5RXfzl?#Mst)eF7|u z`~Lv=7Tdc@12E29ZM$$P(@~5!bGFjj_1etAG%NLj`I>B{mggfc%XRh>I7F+9?Cy=x zUrVt)9DN#d8o$SS-j9bAEPiJ#x9?lZtpp@y?Pd%`{UTN!1;)1&T_M;A0JgMR0j=gB zet$@Xq+8yuUI6be<=v9+lDe1{wvwed6J%qO+dalD3nrI%`5YX-_=xG_slQq1c?JCr z_RCba6S!mPdza<3v(1Kz^()@T&9{*W>1K7zp7uE6k(SfHzVF4&i&I%B_7T;Lws0DK zmQVe~qIObpAo;STUTdUC8x5CG`$>ktzhZIE2S_t`6`#9V-Vfp47S>GnJ}TvEyt+@E zDoKN-t4Xgi_jLYkZ1b5Q8IDMuRaXU;LZi9k5L$QUy}mu3Uy_&(sf2A=K6h7>zU6k> zWc0ilj4}9(QvY%>NWpY}J8F+OfR8AB+J4y5GhwDza~H-xpS~Lbkgq~$Feay_JYI@P z;(3GboshTb`t{mU4;v@v=6i=qgcVx1LL18C1JK|?o`vXZlO70M!8DX7wQ^32H@Cs; zh=Aak3Zx@?PeZc)z&RUXqSH_jMl1fNU~SC=Xe3%_pDX@I2mZ?c$VtW8!qx7!j~Cst z!lV);i{k$9HT3T2yCF4oyZYPs1?Ml&)rkJ+kDD71%bEz7e|c^DOu;2W;fVaVh^m3M zo1)d*>RlvNAE|NHaHBwzu!&!?YF2Dl=+znAg+_l?rE^-$(hRgR4v&@>{xPcbn$oG^ z=Tr8NzNuq&x5sH)8arI=MOG$WP=8FMiR`BMHX}%yo1mb&5^wl0EoFivJANm=96$p)yVE#8fYgueP(u?v@dei5}YfJ`}tdlr?*nE zgr-EcTEO;p3J1G>8ij{z#YHIxOA3Dir4+xo#ca!&Lv$ALs}Si)Zqo6Va=F*vD2s67 z)b03%hwPrVKWRQq4}A8VI+*QML39B-Zbtt6bEmH)zjt#A33$x=*W;|yd4mhQWB>kf z6-sAG`H-mCT2(K{dyo?GNxr6Ee}d?%ZQA+u?3nODW*D4*(c)6s=D(@kO=Y?wyCvXM z#PiGBnw`~Knk%o=O(hA?wV%m2d<|@?KI&KTFg_@ibZwWlN0~|n0OXeu;wNthoN*JV z^VnZpEnL3+n*Ph>A3eIouC!@6`w+{}%mT(cWwc$Es;58Ct+MP@FmM?hzhs38N2e#3 z-Vzlb%aIImZZQm{r|rzgaxi+pvPxg~z0d3A=2GcHM$6LI1dQ?X)L4qBGkz3POoz|z zS6Uw1Z9!9&_r3f=gh)x2Ozc04+jDJXz9h<163MKB!u=(T5gnQvRevj19W<}0hHkx}fwUm>1`yxCy$Blj2_RuA zfc?bgR0vJ_-Me?qhMWlJH^ilW=wDWv z0?QbIw$JcC{jY`0{hRYaL;(|?smAiasxv5P`CXv*&(&C0qT+l(yGndgTACao$kEYRc) zYK`ur@a%7kc4^_W>6p}!_m7SuynR>c+~sw+#T%wstJDXU=;Q>(f^Xr`k!y}7jA^SM zMm>_Q%l)J(zxwhcIs!u>f6tHcZhWqpv>0fPpO^HGTWt8 zeWpd+zqOO3W22afsQXa|Ub!Gz3xN=dhyx9cO@BgbH|7EWCKIU1h`bNNr2*`rw+Od; zKUtYhl{JKh%i+=tMirgF8!+k4+*wGVmvaS{(T<7{D9wnh3$!n{1oIL?CN4K>JAGS| z4eVe5+6;l>HUdUreesC?7}7Oop?Uw5XKexDTLE1N*1UVXh`8tS&1)SDpBUf7v6ClDz;5{7z z2@o1rtO6w2o@Wf0qQlVFd_eS|y%$K~0JFaXeL@dXHxu?G623{5-Dx%*m z2r)5>VC_*J$VWgB5}GGTrCR;k*}2#;x%mX2!A%~wHztVxv%N4wy2|YI`cDC6X}_qw zzSN-d#q-A-0|z0_WNr2XEFrWb)7vf(umthm?{vq zfl6#|GKwLavixB?#msq^uBmBL-gnR?gAd5Y7TGnyggX&x**7=!I}MB#_X>IM=;RW| z6G^20Dveqf|d~P#UVs?jaAsQ0{f^YikB+I+Y$z6tS z$NIeHjN=cu@&+fQT%kVlHGZTS1(`pT%nC5z+}|@9%gVufaOV|eu+|<0lTpv#rpMN% zsU!@ne+~v8vQX5uxOqSyr_F9ZPq{`@exYh|tXUJCUZQYlAbR;wvnzW^qv&+FM$YN) z?VjnQ7rqu2^sonRfUR)jLs=yXLQu&7yciN9>jHxq5k%>@K16&N48&^)N0f)n?DM8N z$2s1oOmQUl%i7Z6EVh-A&x1+*@+U3Au?#si#M6h=4;k3`r*?$pAU*(_buU<%FTQ18 z7ucL4b|VPWP3-$z9jA4zCn|B;d8N0vPv80ry-wafWpWgt5Ed5xd&$Gh48X#-<(9rf zpC@(iAoe=%yW+p`V7A3~j)BQ-0~(pELdU@$J?Qr*o7%vA`NypV(oOH6=RG#b1JhGS z4qXqR^14Ek_$DFiUGh6*IVmYuV7S`Ka2qolPGkf#+96E4T9_@FY$6bLSeke}ijKJY ziH56)1YZ07I{-@dJH({{u`C?;ANV>|8nt7DNwvfJ^7nm(QCsRA3V~;8YOm(X(OeJ< z8G`3^4XS73yJ19!vV~Dx{fg=4t$LXC0XLV+C+kV7jemV;@J#!oiNW9_?h=prp8gT! zejw_{FRoh$JHE=J3(JmzU9h!of|fs3g>bXY1QYBY{U6%iDy+&i3KvB|1PN*B?oc|V zySqcWK^g=>1f)w!LK>w*LRzJzq+1XW1ZkxdM9=uw-e*70K6Q64=G9tG=KSXuW4z;y zfM3H8{&qvC(U7qNgmeSpMJ?p!1s~94im2rrvECedxv+9@h@%(TjXDX&*r!Fob|tZ)%|JaIU(-*Y5f}J z%KXHhq1D5_l`Jnkt|Rr5zB94Rm7dlOwNKo}R`|-1`}#{FBF8~o*zIkWxKCq)F-7vf zDJ{RH@Z6BQza~oFBVZQbw?!>sE-`1Ajc(&I9VP|+ zZl)X_91lOIDkHxmBp9kz?^EN&8vi%<4;lL`-nEtG&7O&b0~T1+bfKII+z~i47iq3xK&(-f?t`jEM#nEo93prJx_QppyfQ>Kc@d#Zc;wt z?ydaIjSZj~E8E#IUG}NGJncEMckRjAXX%v2QhAx?O@M3DFcKt7^6jGch4A!~6SCJY zkCXMYy#8H#owssqM}b%UD2YG$TJ-FF6=#aT%@$>!+iva9v zODOg?SV>jYMd)~zrp|7dU1QuNEx1J=SAbc1Ges04GzZ6^96z zNd=ts+6S6Us@oWrO<^m1g%9`@j<$8^5lY{@c@C00FDO7EWU+#JZbTV+e$tz{R*`ez z)5*f=Lo*MmKiG}ZxlWoaZ?L-8YwTXA=fkh~Kd7)ol?g`Ts2C!**M@E-FP3RrmTs!| zSUK|Ug(WN~HB}ONN$~6~21U5WDPVD(-XW+XCllm-CsDurY$iR7Wl~D?5h*9Cu$Ey@ z4CasprO`hj-e(P3IO$3iN)@hsdgB76n2lv`M(umHj0JNxlS zc&Awikv@N%#@4!FxX;oM{zfdk_U~Wn)M5?Y@>)F46A!sJTgbg~R(4(HOPWmzXUVXi zp1%5gxSxy_R}}W5jex0V@#`22ow))jS1 zdBLVfmjC$fmSr`U!jQUIu=mE)7!OVxh6ww%V6eiv%lcv%&oX9{C69=bW`XrXZFRD& zZd%;T#@`lZ_f{V*Qwsp#QBqg2)@1;t$PKr?DaeS z`|4Gh2H}#ub!`|MQu?d3bTT7(D$-5fd(@ zxK9oDQlY^!e`{kG$KcUL(}93QtRpBuDRl|imARe-C0Xo#fu+T1-j;^wED@b~^HS^n z+a*z=7y|hpq(hHgvSy2uwtfVB938a-;pl+tl7(O}Fp4RK$Il-2k^!6rEX?tPmr0Z& z-H-+`2(gw!`TzcG2{wbWh72s_-P^Oq-g-a<><#wz4Ngql$GnOny;#FXQfcRV!u55n#o-=z#zxt7@5mlM?cTUTCHYQ`}xPS zguNtmjC!IwC91hPT@vIej7UnRp!?^K5^uuR;B2#d9K|rKX%fyXA@FFL(VSIHAhP`S z#;T?VPSfV_JszCPtPH1HY1|Iq{xSOeIZGB1&cAwYUZUJ;lyDx~Xp9#ZHAigTzox$?c_0w1~9lC$bBfN z2lj;QhKT$QSC$#bno?2-ASSCQ|0_6)yn0X!7d!Cy=OL&*M?=jNPVRfc(Cz$&dIQ%n z@ib37=w#Mu{9@70-hL8h^6T%uN8iO-B!@g=D{fK~3_st9gUR&UG!i4oN}Vp(MT|oh zr!l~aVI9-}n+Vtcv$sp)pFfWgj}&NmpoI9ddQ*~?L)GT(E07I9Zx5o$-+#}WQVNt9 zi{_ZZ4OA@o$w9xRw4s4jP{ISe5*G^CNDzGL)|V(;_YwZGs(yoM9_@>QSRbrSUXzFRDs5(sF0u$<8$8fi$F}rBjx#erqrI|=a6x1xy z)wT7|*|R6i*Y43VDv%1D8Z~w0g)QgCvas7T8viVFR>FpkrD#--;^tdCp8EK`yeXn# z-0ORHD&O#9qkqVy9$)eyF4EH!8~?W0&xEQICr`E+HfLvNS76p)Xf1A!FZ#50Z`@!Udi+Z7 zcV!)MiNLPBxnjc0aFd*tL&NZAFI&+ zs59b3c+yCuFH)^SeCAJ32L5>Q{?Co^?Q}?*uB>T`MY7ltzYL_z<)~>XQq8LRhByR( z>nxSfvJWAMk?apwIuQZkKs0+_II!QqQEcU4*wRs~0K~_Zz%keK^yC3dl{K~-0777^ zLeu*K+^9)nC#kF;38TuQGaF1XoL!nwmLVk##0oxN3({{Ln$N(UO2cQVJLoG1&%!2hDMzdi#PPMFtVIeg!K!4zWk_ZIn ze8Ak=Mz7Fu$fpmQ9%^h#kVoC7u?HXziS}m6f1CpLK=74VImF&R+k#?6$=%((^jTH5 z4OoXDqK_>EN8^!>g8C&L)Q>L#%E$o-`$y%2s|v`l0P|PSUH2f(H@sOlf(mpzIu<25 zh@VJb3KGe6yD9hN_wa-IC;vhaJs4sw1aGK_(DeUqJ;_cXLWs$6^-&1KjQ}r4J+~YD z4=oT4GyJ5Z@Ypl&Kk{NRtUgBO7^ETcd>QI0>&|LAN_3n~3c-mfDnq{x#Kxh&3gj<; ztv!5eiTBD@FthB$Q0steK!UqEi_SvRhLM7tP|+@qEye&{1%q5KGH+b0NS8;ce6iJ7 zO(SincY0o5a9Z1noz@i>CAs*uHQB;d5Z$Z=E&a!c-KOYT@g+rtU|q>EqGm#AVlDaP z8NI!{-WW1s>WcoCHFnFxe=d2jY2qiQJEc?|fUYPZugfW9#4D_4n49eB@Af$ARx64= z0e2a}-I-9jhRcOkqt_*BRa2&z3pu9`;Giy%LshEakqH*QscGlgoJ7&ngqTwxjqDU%zf|?90&R7 znv=vJDjG3r0eGkfDH=8gQ;l0ZtlG)u^14Aa3jr2DphPS!ARi03jpKbq^$iWaTS34r zr;@k_I*M+veFyj1ahwZa79RuuuO2dKG(^8MLNP#;7r0X%F`Wv@axe4$o|OLCR+L-^ z{~vqceRG+hnFsARahkr3hYuP96%HRHDI(ZVGTr_QLvcvjMxa-CQ^Z)u%gYPd944+) zi;FO0`LR=3`x9WiUAHJev8UG_f!7x7mN5{Y1lPQ~a0ap0pxq1eerONcsPvq${-+cS z+3|3PczJuD8hXRA0BVaYp@%Cx{0~DRL1ddNZLvrGjyV!nB9VWX2@K~%v6l5%j+UK@ z%1r3p!R;#lPl?_7Hvqc19A0{&Z{_+^Bbmz(Fz&E3ok!e40itLy(V|BF9)Qvaz6|z3 z->n@{;2h%Gc@44UgFtof2l#Fjo-|~>;@UT4A-Q8#b_Dx$%7zC67$0$@$Vm!aobweK zh_Kfi?C>-A!+8unzbb{MVwn)tLV{UrXjVsAh2vZKej<|JH5XzU!+DcoI**h_`xcCz z_ALA2zap(5M+a;`E9`7AKHJ&?6qVYULYL?Iw>0iYAu(g(QDs=uR)gwY#)QRs6`8UzyAE%+hHJ^b zP9L=ISh6|fEwsZ}w?NwlKXc^n+3d7O;Prm~C(XHd*@PL@C99-a&+$sxI5@DtqfD4m zp=NHH&}|`vSB28#n>j&UPIZBE*0~gSj@H$zJB<+f)Y%~(p8~!?7=MII=KcKef@c7D5kKeSJ^1>{MeaPNtOa{pnebRF`MZ1=#bCzB$Ji#Y|iB zCWdrK5y>M7WAOTGAep57V@bw^tPN%^G`gwZ{o0cr9hRhOSVLBnTjKKbo@7?AGO3^O zV}(Xg__Z5YCuz4&YlXsvlmxHC%yaOGTJGi%CReQ0blDY#>5GA>+;YIzgwODDOT22x zzfyas@6B%_hU-Z76AtF~QJ%v6rgm87iJt4(aUxtMjb-`+bKiY_{!e*(W6)hSX z$koe;_$4yi_(^KVBHDGw6Tdp&$7L%=_|nF4ME2!uEd(3<(o?4uS~7ue*_Md=DJR1S z&caTZ zwzmff{6PkmX!;2=^vZX4uJ+?{dr|fEow!?)xzszmM|%j4IY)+vr{=F)MrRGb;Fc8S(oaesTXLn(#-F0u?UQXspIC5t z5GbE8O8|CGVlAr7c+JH82s*%^S2tY=s2GspZp3)KgTkN!?R4->o4IBVr!;e5Ea($z zwBMM>$h=qN9uX%Ie@cETzq{pRuXu{f*i2@~r()+O>>0Vdc2AvSt>&w{}O%Ibkp?a!G}?S#B{ z`LR?YKCEiW;?a$97Aw#b%@SJ=d+#Qua+Z@mu2zf|iwk^0nxj43HW$S%@;!c~`Y@i3 z(Q!;Nyh}mf#=Lo8>5=0->b?Z_TcrA!rN(kzluH*S9NbxIqOU$p71(LJWo4(fHw4}Z zV_mINa9K%Uf2u|DZm}2bk6%b9ak1=_bnR_@-p$5Y)9w?-y#u}L6Ap#)>Y}a6e;llP zB5@uc27TGxbz+4%446Q82kb4XL>~88Kau|dzil2h)*RgMnIoboU5)vZdQ20O&)ubQ?(jb z;8OkVkA)MCo9&;c!^)gEG&r>)uZQd9m!`X#8E7_c-{)lVY@3YV8 zP!rz1^;naE`}d7WHK*X7dm=y8_)vr%~OXFF=kmSszS9e_h-Op2EjlXYV6 zMoi(0OEp}*R0YkqWtK|HFNISVTxXefPhE90@<#$0`c7}+%&Ns;9h!=bh#2uDhH9=BbjQTEjO2CGzVEq4UsL6Oz3qhFsW0$cLa=nnMo@9D zU7sa@XI4Ioz?fXOsN@ZrjX}dm`?OT}UW9>jrD)vMgU6ABuP0JnHccjf{%jYwH>92C z_lwZ3_h>1qU-~*|DhRTX7Jad|JTcX#ZpQBld6;zg!dg1exmbA$jK7%^C5sl$FH-BA z-vOdNK9d^v+=`3abfQAlbU&*|^v7iv!omu6LM%zz!w;2|E2sAKuV2Xh560NFL=Kj7 z81HR?*~u2*K(gE*)B=l%i+4#+y80&s7j z?GUo^a3PaUwO!MCBt#{nFV9^{M=HQF_sWR-whE`ZUa8&?of>t*dS)JZ?@pACCfnN% zz2&+%B?Udr^W3=l3lzarh4h-+hCEJ>zf44hd9Byqd9``-2kYG;rq+^g%ofk?`gK

N4v3guO*Qs06vBWrnt`Pm)J%PKT^)lm-qVAE@#dcCMU zzPg>HF!Aw|j6n?@S%>jrtDN%F4zWYJSKow#$KC(iVQ%CSYK5O4mUm z=GBNc7ZzrzwzoN#YxagM$SO|9Qk7gau~4rfVcBqRxxN8oklNQvHhlwkKZItXhMqam zCT;Jd%6YxxmyoNwU1eQ6T3oi8RCD{ksS-$hTX7~_bxo4B%yFJ7p%}JRlD(RgmvuYO z{Tz9kZ{6gGD_`BUR9PLK&A`NvAeClufZ<;#ASLaIN`YvA6O=p?o7f}fK~pplG2 zTE+Xj{^LrvHDf#eP4%qvMGxjRG%ZW-il+FNlIwJCa_fudJ|u4(3XSXW*mgrS7wRUS zIZxNTkT<|rk0~!sq7xUVs+@_XXN4Bdx52@svnPl5@D2G6`s1|&7lysspVn{W0B2$tGdHoDQil(GwE`VHpqL&&hG_tK^Hl>(C7`i3iO)(&>4xU`^FbyuJA_X4 zf@7AKe!}C9LF|XKB!CC?oH5gd<(}8a4K0P&S zMk;pP<5$>=UB3C2jV?_ed{w9tr+f1aJ1{VLSmqRR@6A`gdHkh{p~%rK`Ex9eOXImM z{Y09Z^9P+$yBzDe-MTIA**|*AcuCRpT^9#aa#OfOHfiy!6=5k;mrYYVnN+XouHUSI&!6a=}F}@y!Xz!by@r@uOvQ@NIs+O@G%=5I~HZA|`rcel;A!%~i!BRlsj!i7xW z-NOdnHerqH7h0DIf*X$Z<0@mHqXPfU*h^!YzNK;A!IZmRV%zdu4<8Mq5_e~}Z429- zjlIV)&JLY}jN4W3T%&-(L!h*XJ#mwKTRuo!=Q%F_v+R1E=3Kx zoZL(Vr`%CQ`vZr(|9LUoOr&6G=0JK`2%~0#Y-?-q+wb`OEyvd0{wJJ0{w`(>3-QC7 z&OdfAOE&EYVrL&MQndg68dBD1JX%0?xjJ&7QLDdQQ6#}9(;IKA^HHFJXog0rQIO0p zR-2h<&*Dr*U*D?|^2L>mFjGY8AIf>2{5Ikr=y$C1D5wZB9*ds1#;i_0z>F3Bt=Az( zPJ23>z&F7}@bfzEb9{ov0=bM%vd#|tnJMutYeOeggND}|Wl;{;J~0vKu3ptYI55mC?koeR(rVPPKn^mBkOIyxEk>XSCS=; zS3bclZDVq!C^`*%KBrzmLZ&|Zrsof3=-hJ6D$*N0ZQ8`&&yMTiY9%#k==S>Ap_f%n zhZWt8B6%4{s`uxqp5DXr?af4S)6ffA!A$ zC8vhsR0H>9r^5@AmL!Zt|Dozd?yWPmWL^@fpV8M!F1kXQC0@-6;HAh4^XYO|q%bqT z7CrKjb(5gyz;>KAl9XQ1T-olz6b`RpVA8}&%#`QzdgS?HK%4kRzH`sRd)+T|p2_cr z48nqLyrHk(3S=!XHIT(a19PCyJ3-2f6FG>X)g3br>Gmb0*#+z4YQt~d_t#oHz0{cr zbxSquz=iZ8D7L6B@YEUjTO@O&^_&d=-g3f{El=iAnbS32vR!%(&K;%P)M8oN}rgu0zjDW`k%|*)i~UHx6n*e z%#=-rt)C)R1=42}*9lRF2HP(0mX_hKX+-W_cf1JF8b>U@g*M8m!Hyy_DzvzhKjaZ1 zpz=z&`>ykOjB_$(WZRajkn1nA+WeYQ{7Qx&>uR~uM$<3-in~;s>gMPlwN&F&uumc)1Nc#jIqA%31!1{~1FeT8zBk;qx4 zo71FmJ2RssjMlQ*|H0JPfG#lFMJQ;1m#y_gH9Y?P6ZiZ#B+v_Qrs;y%9S$(BwP$y9 z%*;N2^-e&3>}&4tul&G7>4rtfZ#%z(&x7D06Af%ofDX}DffBlba9En3fK!q&K<=04 zhYnCB|M{~exdo0kW&llwp5e8@#P!$c!;l`t=n3%$PdBtswy>~>(oS8GNwu0gy{Du8 zgXBKCx30YwFQct{b=P;Fl$4a~*U=~hWCyZIdJpi+j`S_LlzLt}H-0a0E`CF?5VwBn zf}cC#$N${`c@F38+1S&f5+>@M=d3N(p@;hTAeGl;0EL8 z3LG1av8!zX9;O|hAV?FiOJj4oA5FI$t3IKjk{tH&)cjCYcLk4DcZRhz&x4AA`HZWH zlE6@wirYjRZuHn#+Ozw*MeLU7`ck|cwoy#D0@U3Z`LW{c!o>J`&Xw(-{?0cBv7lFy z9JyfVr-<7cowIzwX*te@!_wWSe)0FF7@F+j`QU5P!Nz#a-jkH=8~pxwi7(z@VPOr9 zj&1_omWhSsW_Z{5PS8ItjHvc6*NXYJ2ZLUVgIgGuyf(s2UVv$gruZol;-n07>il=3 zfJ&P-GH?OK5?me3AS*qXcWXsKTN@w9Q@AjTVTRGrH(*MA1ux7^U~oJ8=Yz#hK47f~ zs}V6?s;H>=^mhgZB~U0Te7EZx{%!w@ z&51ack4{5ZEYQmne#PG zRU5>j&2$xwFuxA@pcX_s_P?GKFsYSfOg+S8_^*3BgRx@P6MtF}fv9oTED^1h(@U-A zBV5J=i3c}O7iGO)M|4%%HGLM$3f7m$K*#qUu}ako`&&c7`h_UnlEq= zCNJAuZEZg|u>*FF%Kf^vS%mr~8qh1L)3iECuNJ+940TRN+68tthOE&v-RAgO?I_+! zc{xk>wJG7$j8wUQ>Im{^Syn&!>E5{QJl}eQY`^uufGShxB18Kq9~*vjAkUD3EC%*D zp!YvvhwtP+TzZ=Tzn^uJiL$2V7C5pDe07So>}5?ySg+vbhS)wpL?N2=D*P53(9ZVS zH}H6__u8}>0+Tm`?~^cU<%|l11t3}X77ulk-C_K9AB@$^VCV-t^qTj7FCy~)!RV_6 zY9XlcrSZ_vZ&Sm4@`Lv6vS!H7RGYIP0Q-^i2j-K7vQa<5&lEpK?quwS^eU)0wtz9$ z2Y(Zm2oi5|w!Z|f{(N;y`!8Vt0t3#SOE}J=l~b92K#`@Zr464%0!ZVrQ!c?)_rKdaOc(8l4tvJNolD!MEMj} za0xsDLN-!j;zosk{%i(gqRBqKBpPHBBN0x(aD>Mb3H0okxVvr9rFnrBqrpgDW@`+r z``YSeF30=fJvmTfq?=o-YPf_+HZV(-svk!MNd>s!5?E@%JIT|N%_NzMEcOO zTN{bH3&&G9?a64d5w?1R8S>^qSJB&d693=3wSm5+b!=7{hbm;kL<&r4au4l4QT6kq{xq9F9sQX26K6kf5otuMRb_Fp4q|G zHZElAH|1RPSADJ*R#-Df_VC}CON7ytPfJSt(_osk=ozgXY{5T;HBB^2oxl11ywmHR z&@WG_hKx%fs;MME$}30kGS;rCT*E6e$Mw*Wj|;{4qe|0MQ&s_yuS< z)HP`XIxXzS^3)-wokGZc117^aX`cMyf$_X<91r4n15|ipn1RDAzvl1XtMf0l6wL@h z97u0-RP8{ILt>!70skYgiXQ>h9a3ZWd2A#BHblTGm{MebFL7faZrq)Fpa5ySWM^}_ zGJX%Nd+Ly1RzHuA5t=;^(W~Fxxoy4F3E~m1vrA+||Nlg>S3~iM`v0QXU+n$=OtC-l z1wK1DY>(W$wLLY{QE(mn0ppoCMBq~EkB}Y9%gTWBE3pcc2P;_pFMVf?r>7g2o2-G= zwQq4w^YbOb2K z0CIEq#WC=4>izajz>Yltc*iF3-f)=x1pf377*y54ycRT#Jx~fSik|`FYh}&f21vke z2mip0@vUR?Ep8y&`z=*#W=EQUZ*$#|x z5j)UFTD|3@cnSDk#nLgDs8Lo|lX6B!gnDkjC^+6MiaucIaGLYecEN5%2clFqltX_K5)u${ zARPZ0K$p1{3Q`MCNasd9f>RzJ11$i^EGOi>$bUu#lK-y0{F}+O0x@U3-7t4nqnMaM zkPy(wKZ$HnqWr&5ZwN|& z^mPt&coAd`gL@tF@8BLO(v^?GCMyzKeDfRSv)_{2z_{|(SbpulVDPFt22~|cd>UulN{d`-m1Hu)rQR%1g+q!=|ZW zI|94PDMYq&ArJuKI}@!iaq8O$eI@{S{vx|o4JZM?w)Aap=Xwc64pr=Hs%4EP5d>s( zYhD~54+ZkEZ!mnhZqUE90>!9hEs_Fu8j=|TREK7_73?BW zXErn!HYgGCd3FT7SY7N-uQP`~>uE|i_wtezNS7P0$7ZX*QMDM0X_MB?sR2jZucxhe z*Ib;Vhj^>MEmIQf=`cPkxHtdGW>45mzO5iQ|M7E$NVUDoP#P(%gr@DCqSQ*(UwVYk z=NrboKI4xiQtW+hO||4MqZq9Y2E9Ws3B6cpt{*wz1K`=a{EJF5q~l;!a3BJc@Z`Ns zcmDr{!*2Y)IPCrL6DE&ykzY0s1b`;(3(fEP;fzMOkS4b7cE-$j7^}y>>lXNzs(uFw zJXrd6c;ostP(z%MWPq>lG?m%7iDQ3F($x2oy1HbSn$}1Nn9}&dOc3Kp&OYjKB05}; zkcb~aI-Bt0U)->y;WLjlwUhEYCLgSZy;T6~ualD#lBM5Qe@V#3XZw}WfOZ41Q{FA` z5lpM}y%FO!enG*v7`VN0pw9YUfq zgi_ODT29*a&=OnOdTVOXM%$ODsfjYUm+OBm!GxM2{2bo=kA*mva zUGsak-^zr4+sM#+k$ONmS$?&-i29KPwWvbAg)$a@VitV#09pbTJGcPSZ%?tN`x$1Y zIC5Y%6p;BLKmXG`Nxqs8IfJ@Jx{$ll@gYNNHzefyB*n@@G0?uS`;o6yEE zwTg}KOeT(uiy9G9oTc}4q+~Y(JjzHW6;B_R%W|@MG7=Qhy2|rhkfBhz3V-}qrKVQ# zG#QVsK$w;i#b&F%F3MSa)0$Tbys@&kfBArv0;cHc7Hl4^dqC3=4C_gs})3d=|6Q8aL5w|h%~k2lhmLzU0| zwWEOkST@oCxr%P5o|K3ee3Oo zaTRW>2uOfETg}`gB%vCTOorJEq2~R<_vZlW=xAwu01hxv(DO7km_VnCI}pn0IKDW! zCvG&d(Ur?5%yITO!7y2?C^EOq8jFOQCMFYW4ji^iv8}7*OO7o9N^;k@KlHK2T2 z6MS#O14Y1Du`NAsw{?*co@I2Ak`yMxqXzBIeH)~DxPsKSI-iuPDq>*ml^H$nOjkPi zwOfoLNOE8m3PcN`NSBW^Q|CpxD2dk=w93V?c2&+$`9y_6i&oRI%e0?!i*?FANw~o@ z^ap+NS}KE#3Cd81ov@C%7P^%-9nqeNad+2fPS*NlqBczpvp{X|qRB%#MyFlZv?_k| z?v|?DAce!<*2L0J*ki@R3T|zjre4-H;Gxmo9rAc!-5ZS$qIM|rtNrsG6G28@_xQJ0 zheho{8elSaqKoFO(90PR3Lh*wM#kZ3sy448D}M6ln;B0l!TkbG*8}RoG5}dTz()D% z4}=tOTwTE633OJmO^e7N^ctTQ;LN!-HuKJ88a zy$NkO?KZt_tU^zavajyL+%=)Ea>Euzx97_-r!D>G3-RewRJg}~Q;5@ZY`h?`qA6-3 zz~{SoXTgnbPN`V$#}>3!$;nV;drjJ`f_N@@g~tdkR3OP0bvdxys4GD)7cOE`$tK#T zV}h}TK<=T-A9YWja%biuT7neR4b458ZucTae62q%D3zZDcGBrFm0pvoc2C<}mF9qZ zWeRxjgD5)s*W?FtwMgUFz-ai2Cnh+fCN9xU>gdSI(v+%kkdfO?<~SGTK?q;Sh z=xI;crG)33g1GI*aN`BJWDW(;pI<1)rIvZ{GY`t>+o0Zc*=nR^KX+rQibtbw(c?HM zyb1?+2m=fWkh22Gcm?P2#wm?rh;Iaa@qZYy|A84&B-XU;umdSn4n%IyTk#p1dCI@2 zHy-r_^w4{Vt@J;!Kgh-**c2&6fT_6-jnMwI(N#>%ec+8FeJi42TX03xvbB%w!nO257bMYa?>dXwRo^?NHYq0kfS?Sp$P;-So`n@nn{)%P& zoPSHu+x1@oJE~l^-Mz==TA{?f+%nS`n%Zupd_fi;F|ubiFPa1d+GQguU9|LWc%Q75 zEAbZIZB)3hKcrT(PcSi|sbLH<`f_&Unpi-&E4%#L*C3qwe%LjEp%jmk^(lV8&W?$< zni`4`-4)i1rI@CApOn(&Dk|G)_ujf;g{ktHQB0#(eaait7zmGlDiT4=6>VGNzIXDs zeeR#+^*rqB+M7Q|s9i^AD4`n}JUVmYjC2j}?&=SpZ_wqbT;vRTGY&^kYd{_E zcAn_4vo}hdffWa$3WiukgoBN&*-xUoRT^T2)mFeOK_u=-C@LVL;m8!yW3Ag_xW(@V z;z7h6+6i)Fu<@6dmVW9!4uY8+L@<%gVdyof%;E`K=LiApOY(ev9j$>+jpU}Hg_P!P=sfMUmg=8*Y@O#VB-qakpq5bVi)1E>MbgZ}3j&h30?8?zDLh6TG9o)91Hep7D|;h)bp zKcoSd2WCmhd_WtoW+nw&TvD?Mq@ zfcIqX=g{Z)p%d(>BznjwiZ4s*nz0^6fY_7U8SYDo$wd>+JF+usdn`~D7cBY){(hdD zgK>j0qNrP#t-OO zyJv`ud!V>{x?NXpA0`tKYAt^{M?3#@EWlktOHBb~Bn4Ane^9jWAKD*Rk?-SW6T_;i zxKey;F9Yz1^m{Yw>*?u9Q+R&oMX<(x2HiOFst%EWS`~7wQw7f-a;XXh9Ie{y@GiTb z^Bm^-Oe$BIwbqZm5%VG^cm{J}b;C#Qhn-Lu_>~u;AY6WUt?(Se%5Q&W?3MDf*w`%vtT%id=c2}GMpX1Q?K(VM#Qg~>$(49ZU?@j6bqr)0@{0K59UEZP- zn2l;X?#k${oy9w{Croa<6!H%^jLF(|Yx_gaGQEyVP*EeJO|0fT&6BQoUw}B5yt%F@ zwxgdxSZ&d}TcE^$h+_Teper3|Fo{V|?mcacXPqCzNaobF-R5teX)xc(t}*Oq%WO4jS7?(2R4;Vi;;!P>jV~+2H-MMG+*+twkb(>U~PvyZqzKda>YAIJ z8orzjKVKO+K3C_9j)z5h&U$TnrV*&VH|y+M-^jx>!CL0jw#-a&)hOQ;S`a=B0!_*SF-oHN4Gb-b}lp$E`8Tu~R`R6C111 zN`$4OGRDC%fETxCC_j9S^ME#8Q3ZUt@EM&&+4kN#oQI$(>i+va^7N|IUBJeJI=13Q zXv9x&{_?%)kB=#Q;!r3iuB@+7^w0ADor%o{o(^A8c={|7GD#(I-Tslh=Pb%D8XAgR z(WgzE;p?rxW8j}Ds~G!SXT+%3&8a)=+C!FxJF*;SR&Sh}qU#&}+1|J|dDCU#ez;@r z+~A)4_qVk_e%E8Dz*tqX&A)+nVZmhf?y5Ixvioz9`2aiz4Rjqn8R2Q=z(?Bhm`?Aw z1;gJySe*YWtB;;s9OkMpC?m_#FwGt^T_*Z4*12b~2jDZHk?>CPq2L#(#oX84b#oPP z`ji9h;QezGZyhG=z|;&&t`Tp0^@2v&1&5g|Als~i&WQuB(Nz#zv{Ma z_yeq;nYuC`1!ib5GmE?3Nzt4uL>2FiaV^GdPrhqT2;erkNWysF>`rpcxc#4+Z|RDN0&>7b^-j;o$Xr1&LgMK$;~=T`l;__JC})VZ5Zq=sIgiy z5WITd7ASqAT?BHDaogi8$In{_vDDBbmV^qy$KQhpENA&|5hDckw(q5NKZ{+8-A^jVp8N5 z&aOFo&eZo_TCyJ(0t_P?*fvhstC&G2Z~2w9bg7=~J3E=*NL0dAn20VKvel&gjLLT? zs^iV))AMO^aPJxG@9ea6VwYMr*fHK-Evh`gU(o%|V zgxG2`Z5)2?_=$VaPgenCsjjK&G{OUol^oLY+TJob|(&W6OR^Nz`cx)-D zQ>QtWd+faqi7R5UC9AbD`4%-5?B%C3!U-lH#zY#Qoa86ML_7DHE!fI;%HZEqQa_!V z?fC2K4*sG*q&j)>-$R1Y&AbSE_82FDHf7m$QoWd$6X8LYer~WUCUvGTqqy+i(noWn zR7;j%j@Ieou;a}9aJV1Gkw|MYfHIC(L+2p(ZwNbkgyg!49wp0sjH~v%rWCdi8%JfN zg(0E3y1G1`9QoD6g|T6#k}p%ra0Hjiy%#)quJQi@%jJV;RZ34*`y3A>5p+(PJa~~Y ztDJp>@H|A`^ew?zE9L-i_`!-~Z9Mjey>Wad*ShqbZ-X=l*2qi|BTWkax?MW;wCA^1&8)Wb#dXW9m9bmi@DoNCH=T zu27=qM1OF8G%Hk`1#qjN@OXCwX>25d0vPq zD|(8?foEv6G2h;Z4h!~o50vmGTz%&XGXBl8#Ck7p+b!E`VKsFx-NuPBxU`>{%j+EZ z%1}By{Em-Ss!-~RF}JF;dlj#y7>)VNc;i>?i)L5J!U9YI*yMr#D%q3?*fjigwPZrg znB>G0jMA6`AGw+TNmD6br~Ss7tK)epDJ$Txjb{#zS;Hl?*fU^h?pH_auVQgSZ}d%{ zI>mMT;SR$~0ma!pTpiCAG*fpI-EZQPB3nz8C_#-OqQPeWD#PQys{>`w_nqbEOSXXL z#ZqNQ z&}NLv)mdJe$2f-|| z-d;Jq@w}tAZc^Z`*SSPKlG8g9>eYPW#`!sJqHu!k>b1xFVqKY3EhC3sPnEa(jN79S z%ksqXkp*LPd;V^2wu8?jzEj zHl4Am;*FXuoH$4LlrMrt<{5lv_A{KichCd6;5zYxtZ;W zfL_bXgu^7-Y4%)ihyCl=hA65aXA1Bp2eUu_+fE~ilC3Qi4ElOI6D=K2ZUN)&Ol+{_ zp@Y{AY1*0G#3E9<0ukW_=VXP{2V)yUVfcN9RC57}&ckmq1$>V#w1}NhZw1<~FH5O} zP@~vSjI6C+{n#(5;Acgb(^WGz-b-CIinpNl_ToCgBaXsd9UAT}b3WH$#rx;o))*l9 zx@@T9%je&JXF8u2ka9Kg^d4?due8S13FTUz7-#0?EHZej{tvRaB*lN_m!F>99BVe~ zLIXoh@Q~jfLT9xp7xbx%=vfNBJ?G-c+y$!j@wKa#;|A#)`k~1{qfrxhWrR(BgU{{% zpzJN9vU$=uD*Llu)%;RTl-m{U3jsElTab9Bwxk*hfWEtMl25t{*N=jqRCimLHcG!XxuC`imGx907+nosp z_bnePP~Dwz+Tuz@zhjupNqpeE{l-RHoKz}a5u{Oa0@@Zv^z+93DatSKsUy0I&XVvi zUYN@~*v8?)W)jjSeZ4g5|5oco@&~in7A_J%<68+^j6wia1vXjx^sL}I&V4_(bdx<#vp#K zCD_BgN0jj0Zoy|7WUslWB@zBwL~8mb!fv+k?y2u;Pu1Sa(g{1dC8uCh9>nVa|H3QUn7D(M54$5ZS=w8G{0rd*{wpC4Yb9w|? zQce`|yM`DD!x`((mYTh67{)qIv~_iR#5dkVe6(lb;)(-J;j4QE7cYlF{D91iK%o4S zk?+VL_y!0|c5B4hk z8#bYw_^NVYd;X29k7`V81eT|Rb8>fe&S#hS=jI_fzlqpC5QNDFUL7lM3eR{=jTl%E zC_T?D*>Gl<2^h#Z5lJ+!f>y=LGy6mD2vt9W$C~cFm%(ZAlfs_ItKtn+icpBHmdu5KGr=EL~~x>a$iqAIhoA**{8d; z#S_NF78;eF1=v3I{!>$0KdZtyws=}cpPV`l+V!6&VW5>Fl<@H;zqEM2KXKWk=SL!% zq9e(tgw}~i1fus&sky#VkNj+6##y3njy?*}cqla#e{BC69ql_@679M~{H4AQMuj1q zw@1@cvPqObGam!x^g~HJJR*CD2@H z5`MRUWCiXdj{_GOAOrld+qppiyo!j7aUejaEeu*tP<8DG6Jk%XPCml3KZG(ZfT$iE zoSdj#wgO3r`*>=48p`ki%}^a(53#R+81J}#c{4M!xDyYEivlpG>mUk9h-Q2O5pKUu*PpNd`J31xN)ic2(KmO-MIyfr1(x1oQhRDV$W-JkFLac( zo(%Lr=n!|lyvixj90!|5ihA*rR>DEfin1;a#gr5~-tYxk4-1DUsTKSx#-Tis1ZPb!PPyRfyjh2{Dh}Kb#w<<9LIXDr{65P3S z{AGAA+xI(auM$yWD%!)ixUWk$xraD(y8AjD3sW77OI5{)HebD_zIjCV`G2yJ2|KR4 zP0QOy0zt>FaN#XBd$E9rNA?sx$(En*GEL)=wg{NCK0+z^A#{_DPWHh&@nbxD9BS57 z(9c2qy>D~5xVde?i~RtSpb?~R-Xb&$t|WTFV_4ZfAc}D)0-97?%9U+YKRmFeB~)&! zN_*uk1j{92=KhN`Wgw;&d6LOq{M0&f{R$}(T_8MNZ1v+pq~P#^!7F2XVRu}fxgb*<&~`_VB-5QMfH&b`he(4FRvM{^wm?fs93b4qdM6U3 z9RM9S3>gcxff+WHZY znlwno3I1Cwg|v>p0f(#+=Y^P#5KlUgH-7=hMy3|PE?^TqxbGMo0%%ub%Rb^HK0R1J zazO8b){2v(qa_fS6??DVz8!SQyOl`imbN$~Nm6Zb5RdBICo zSNDcCU%p~BT0{5?N%&Ki18EWF{>U_Z8`KwP{NMRp<7c%8l_x6}>KKH#@J$U!obH}$ z3Y(HDJ{Z&AqPDGQs+oMgsHf>{C_y`6>iY=x26lhW_?CqS`Tg!0YH7CJpFj)g3($I0 z$S0qC>1=eaWFj8*BmLxwBQ*xr^?e7%jOH9>IYm28jQnMWqE8#$td2H+?XD~7T@}18 z`fjhw5*nc+#G*go#h?^^PcE`r?tE8OWj7o5EK81+@>_b@?X6cfYrlWX@|#K!VhW3h z)WVhXHu%^CY4)NZNgFUgP1pr$9fbIXA)Rjb`D;R8IO0ai`iM2VjHcDUEem*fD*-3e zN#jQE%YT0nx)24?=Eu{BCIXMkA9(19Bxe5@%PN~MOQhrvN7P=>$NEzwdx4|odnxEJ z_AOCz&+$YG`R?i08R-+i4~)SD&=klEQq(i}@xcyBl^o#`Z?%^S!IXM{ks~hWY_w^7I$3*Xt5E*z7kb_QFrD;xDgkqw$ z{m;hu24XQoGOZ2E$fA3nbXz)lRc3WVOR9Wak`libRt=fUQybWHVRk`~HUQW>h?E>8 z{~kW^Fa{9t^HiCI2-_3soddhL?%nX|(*fLMc!+FWRyO2Z<0b3uwjBY)5nS2wgZd60 z>Fn&R7Yt%uGYvzQE=2N%0?m<^;CnrQO!}>LDS#xArt%qO=iiSW$ciXA`a@*Av?;1_ zj4Y?TygV`jZ}X~2QJNh63F2^vjRp!(@f@+Xc6P`syv$e4}iFUxax!p5P1nByk0&Wb;ok z@{e!z>Hb9>#pIE2823IIwIxC6za5UxJ}J-0y{*62sJ-ja=ctbMZ-It5D(xF49ge(k9|}UuI_F-BDD;$X9-D4}=5qv;pJ#=5ldqY#s+lhJKFOO8F&1cebF=FCh}y zzCc@GZa%!>n-feko8=y37Fb1&pq1Op%7;kR49-MDzr8Vg&cUvQT; zW*BgDbI)Y0{Mf#!a^vUEpRH(w8e@uziX*zwX?oa8OUN)!mSn)z;NDg%%;juDuCO4C z(0o037^A?vE1{63_{U~%x#@cLc#&i~|5JG;cCEK7KPXL1OlcPhQ44WPtbfW3y=sRCIfe+Je>AmvgR|a0+WIRi181BC*p$PW|-^wunL4E zzsWqnw|*R(LXS^>X^uBZ!i!p5oy{XxB2Y;-4W=fDN)=WZ7=PF~J}D7K3SW>b$(}e} zV`bDDAp6pypVvv#-PwQ5-cIPOEGKT=c!epEmfN}%>c$48!_WDOBf1%65j;# z;$E`QEf;wr-|!aVvMSo>UQC&o7=gE2i7-iB%5n4N(jI3c{RLSKx!F50Q(wBJhU-k0 zY@eqV$i#aC=drhOC`awxAGK_3VM$8(OI4ea^wvA=p^HXOF7&a-@pFXP&2zxM%r-@)yL1G+WF{y#61;ktK11@s}nL$p5 z01hI|O%IIk4Iz(qwChq`u)#95)s)18%oc~<=Sn^ioqx}sG)C=KIK3a-8*UASRc$m& z@-?!T2Rq6u01AQo3P1*y_73_SADQ^z2FFVT3uQ0}8lGGrM+D2RF!JT}<(5u_?EVeh zVWVWx58>|>Og}!;i+P3tYg3@1dHRP(xMU5$_^$On@n{ zQR$PF=|#OwqKkRGdwCe)@SF5-K4&XMaS{c)JMM&ukbM4=|fWyAd0s)Quo@_G?<@dQT1nx(GX^$ zJZmK6F%&hX*mZMN!SVX#$+S+EkXlB~D*qN&y=1qk(EAia-5q!wKZUE0`1be==*nG; z)EtXO3%Rdo_^|jCE^y-(PBh*9>y6y=*Pf8^{4uw$?0=VWFrdQATfx(7yLolAha$&$ z>0nj;6-7z*G%t38Kjl}40t8^C2-_(<{z*BSP_RCjl1^Rtx@>0NPkmeZ;VC1A(nq2l z1(#JBx%f!iXA$P+9e+@q`=V}z<=}#5adLWk+Y39Kh{CR!m*2V%8>WhZ4EX_AhV+j= z{|`tp?7twzp<yz}~xp&X7MAFx8qH-1humR);F)0E-g*;dhJ{kpiTL1p` z0fGF18c9HsY}{|o+X^s^@K8B|JogJM4-^qt*9Ruhf80reKVO`8kf#e<1E!(DK716tSXC(Q(A_>U{vj;&$N|myur$HX?&i%Pa4M zeWNR-z^zXoe5eDH4~Ox8;iiDRqi#=lw) zjr7V%7t<_Qzt?Jn%R)_Xr&`6X;ks3WDL+lc>BVhr47d=NE+Q%OH7l9rHQdC->BL&b zJnMH~++b}(8?52wcbpOHaf#)RVJ|)23*XOPIv$8sSHNbzw}iH6zk9Ci$jza%UYCR+ z_Qoof1?#9$$eH%=ch4|OU|Z4UgMC5`D32iJ?d6IZ>3SE2@NtC+YJyX;LygW~KZZue z?FaYV(BE^4=`u|h5Pc9}B8wXem(QtLpSzdzH8?Gw)PcV+biQK1xmd$1c}btHPycsf@Bji(G9W(g2{J7T5lC?$ z#zn?a|Ff#`+>c`Q)8adXZ4{D_1kz?icPJnrfVefoDyz-`0EC*u7i80js6r8yC0zS+ z{2QkF`h9RT{V+a02rZNbQ{=5Y{C6-&C18sU@H3Bd&~o_nPg~ej{~N#hcRe=G6NZuW zVE+pQFBC?nT!x-21#Av~@k~PoJ~c8$4q#zp9;r2V$Vg3{3x9b9Yn`^f{*1FHhdHty z13q&AqrZq0zhOvw4Y*3=+Pv}MKV#6}$7)NsQ`O>UxmNjwu;0QOpw^#{|Z@K$|5hx{`P8_kQ z*W6LKFTF>t_4a3f|7O|UAxH>eu$S}c_*dIx;UG}^8xLC{s0#DCK|`Bc^BJEtqde=@ zx7Mi}M$t0{eZ#2KnJH+r9BXkVR^5lh6p+`G*)=s0tHU8Q~Pb+zD&DIv68R+C@o zO99v;0jW7pE1shBd=|B|U2C`=%fw|WGeu<3r`a$(Q;2@l@x>~1a2(~XB948;an{y2 z(4#FNS`vQhIDyZqRvWBcWeroGD?rS_NAm*7%YsE{OZe^oZ`9CVuu>Wo#*eSgL$97Q zTx=>M2Lmknhhc1LslR#|E{Q-?TWQwT3?h7_1_IRy=}tJSx4;|}%HgqCjiFeD6kTygbYCmvC&39 ze7T3^xl|8?K|S258AP(xkl-i)Zy`Hb2(2Dy_mHmy# zW?x;E}rL=P5N_ zJLJQMV-!$`DKOCC2?Id>mwl3`Dld`B5zv#!fEcU}Z=f#n61G0ZYXeYDhuNj9)VENm zfq#hsy%oTS$kZ7!4i9yh=w~E1kB6krWeAcK9`M;M<;s`Q;49n4M>VoMHkXr69=(H| z>AdA*MH}`W=DC!%uREzmtJldhPKP~edXhuLG%->0B3aOK|0I~nW`dwCv6doMedt>+ ztzSlY@B&Mdcx`PRN125BLT1#YsoE{`a&j~dB62e4;pG5KwOiM%g&e!dI(J+GmOG** zU70z~y(m}j9qmeL6t_rg32)*ZqME3cL5jeM5)eJ)<6xP#ullE7|RU9 zfT4KQ&OQjrifrmWUfdV_2Kfk&)oEComV-xwkOh*8y5~=D1h^{wGy`S*=q9ux7Jr0Ph>ulND7)4cOiC#A{$Ab|5@NG0B_DbM(1@hxICYC`X`+3uf0A|3h8Igz`5m}GjK;%~< zE2*?Z)sK6Zv9vdbsLNEA)WQ`OFa2vBlZc3;( za0D@p;5HWXY2G=u*4hrTX^`%F+9Ppe5XXRCfdDH;A*DL2@={KkRyzlS_@55hg8Hj? zHi@Qc4n3pAj#q7Ewb$}*$CK=Ir?X>96xO08z58v(MpXToLfAnp;Nf}f=l00@nbh_K zo=e>L$u)At@Uyeu$ME$PIAEUpv`gN(Oq=8=B`1}9Z{yImJcn^DCd#<&CQJCtiR>ew zXJf*jik__sw8C5`E>Fm^_VC&WvTDWx2TWi$&T^;x7g~M zRcIL=!YKmD6AUaTP`xpD6F#C~a6$ws#fx1wU?dtHUhsz8@Uj~HriZPJA$9EWxAo)h zOzRE(%qpsjhETDVn$~X2PIgl(zi2U98Co~B2&Du!EV84NG{ui$C(7?*tgpnX8i|N( zaI1G|{8P@4Z4R9hS;8diLMN(il7|Dc{o7YWs5qx_OO<%5%G?|SuJU@L`4uC*nBSc; z=LO@mE54rUh|tk_@QeuQT^GOLZ{CMvT5bM!6s9V2Y}M}k=@C1X!t&pqZReRTgjUZa zB92!s-HHk5`8A7P&+jg;?KR5zT;ZKQ%ZnM=V<)WzcNe4lT|2?RmYJG|&-CUhbrf*c zsV72%sL?nGcV&cB$Vm%#9iHrzFoiR)4LjE?zdS-drPE!H&=Dx=F3wNi%gg=(Osa6` zX)goxQmEn88$~(QwY?@*Ymto;Pu_@R4^*>4oWK3|leQztM|=PjrmZ z(r855dDIxXId6=&Jq%tl&WQAPPVRTB3VpsA#BXwA`m(Ud^26kwN}XeFCEfSUrHk{V ze*#||+in`QwuvGR&MU8&Nd=pBL&S+nhU}>2wddYQ7B;%w+#mXMmqV50Vm9UF6qipN zmb(%4mud`QS2-d^<4}}Ww8Bz_$AT@AT(|hC0Km2$+{zCom@UaNQb%p%(I+=zL9akp z)Y!QhU_6e^=}QjQOJE@xCgxVYVe8%27n&TAj1i3aj^%q+CY*n@65%FS#1+7pNFp?h zJ$cz>*l;ydX>aF*A9fZdBKlf!fR^C)Q-#PSLg!+-5H3s|Jj>?jW4Do-heU1W1OBGI zoE=K=4U*o~$61~Utu)fqcax%=2oLdZAhtOa&%O8Aqu9}B?d5O;Wr5?*sHslmf>gea zR^Qsn(st6=V)nC=nYHSk_SE}}QPhiw|HVxmJVRhcrc^fp^ra40;q#HC_qbO4a}>2# zwsy6(f~ctCL=}p7hVW34B$ju(Urxr>Pnmyc)ITTd7`@vqbw^SexWmeKZq6PCchUK8 z#j})Hcj~B;p`*TLNzop{jD5=3lN6N&B-@nSzQKJr@i|B7+TgIZqM~It^t|9=$x@nR zH>Q|levz_^n}U=h??o{i{x0tj-xFmi4nvt0_H)}S;}GySSeAu{lI^hv6N@A6X*#o; zpaC`EPPAv(J&=E?|CDVQc=R{p)i$2vxX^2+m=aLdy)ShO{CiyMt**42PON`VRYtT@cTqHtX=+xYk~h+x(oDAVvgRe?~Md)ORIeyt^6Ij7h(C)ZbN*)Jjl zT_Hk=q@hHqFN86kxo?<`sfvEF$_ z?ipIGcc!Y_zvv~Is$pu`@STb6)oIM*?6u1O#>He08DM`+NF1wkYq`Xtf-plH&G1_I zk8kz_ANEsP`Xk;rwvlPw@d;Up;^W7(QgF4P9W?gSF6vyWJ(s=kJ6tHySOnofeM{C3 zHZ!GgMsXq9LB%Jfy|Cgmol!4b0~iA~a1E_Y)W*$Y%qzy_j5zD8p{{WnlMhONprt}= zH5*M!HsE#mDsY8zrBWzdj;oZJN%fXpl6;mq{qKfd{9P{Dcz{_}!loJpSF(wwf~p#W z+lK=foQQvoP|wJ2t)fD}7ZK4f%m#tV3Jj1V z^$QgDb9k&Hu&;|NFME=cwnjFDN}#%$%dpMbRO<_hDPs_q*{i zvr>tA%@Ae&%z8Deo`3T$M`uNiCdGgk!SLpnbbkgXD)H7=+mbV_-KFSK9EQAoPraUA z-VKekw^q_oEi^l{vSxFkKtV-8QBjc7k15SBeTnV8jakOKIe5$Q#0;L{jVD*5Z7(XR zW}uWUwh}o0qqe=D@`A~X@+MpR)#D}5-&mLRHtQ;y&A%H*xE^ zpXf47ebbjqax05}F`{Q|t=2^o?!ecE7SSE{afg-2t;F76DW)0YDF;SJZEfpr@JO7W zVVv;l?4MT}DB-o_$$U{u9oG$l(7THihdhN!dVix3VI*a| z95!s?TnomI&|;-D=ouT`m*vKB+;XEGd0&?M`(2}u{Ibc$@Le{_{NzXdfsg;Oq8B={ zH)V|mncY($&6sU-IOL7yo6XYXb5u6KP>7IkD5Q1)Uv8P({p>E?`%i@D_MGlqxu1|m znBT2vyo}egqgvd;%J=UyompR(QUA~KkazX9`JC-99E-Yum8dc1Ml=(M;^m{81++}Z z#Mbelv#g?_VFy!6gRZh3pQO;`91k)CVH7=E=`~TZHEwkUjsKV57aacA!{r27&(ti2 zet3%O`rVx0!6)$?p)_!NJL_i4ORCtN>u6FJbE79|x>LZ>jmhw?8-7Cw-7Q=-BKeQW z)vFgH*jg$oatb{R;OFgSwuzDWMy!%sOW^f}j*N_wV5tTD=hg08l&EYz6Av{X&*gv$ zcRiiCn9Zio&+R4aq7HeF=2uW_MuX}HGL_<0Ah{d94Kw+XTwG=m(Ou- z$E%CA8+C>!uM_*$#7#QRu=SkJKD(65s_6S+6@CLptXMf`APrOIU8XHTq8ns{^b%8B zA?L#*erGNV6IYR5C{ct|Mbjf?$K(yI8g3{BF=!?eW1RWfIP06ZBdEK7KMSGr59tK9 z$UPM?HA#0N+!`khYHZuMnSnA?=@@srCV||nH1;d@9ih(-d(o(!|DKqZy|Wbhvxm1k z?^2wU;Il)IiAiZcn%3>sv^w{-9lTqR zljG;-mqo8dgbu-?yH7_eI`bPEBtKO{e8`yW)nlkBL4^?+o_h?1Af86pn16vrOSgSp z5=@c89#VyM%3u4pECJHXgmJqr>l$sCG=oykhQ{x>y z7W45Ag>WS=knwo|z$56tWBfK~PaJYtp?PXuwp?Xg6K-*_Wu%@V^lUO;xenrBNfoWY z_Q}&InE4ShRX3|m20_5`}k$@zkEBZ5{rWY^w>ySr40I(1m#hoxu`` zW{Ugz_qc92t}-ndc~M4u!|V!ugS~#I?o*lkc9fZ&3EIo?33VLFs`($}yt;bR*h*C? z-Q-ICjy?wHDO0_$O15L+@+%5Ph%JfCos-0~*M+n*&n8s3lXQh~I8iy*Id?hkTC7#& zkDxxVr{XOA#S@oqG3g8-7od z=Lp)|zNe(YzUPJKzkkgbjux~<>>P~fZh;mmk+>m}ZX*{{w#&aoi7}b@KiZg=>PYt)h zufl@2Ov^d1lO78`|G(>yU{miP*T080_}ILyGp5>DZAV~H{h|yWl>+;q`)0xb3Gq_S zYYHRUKGp$+)x_t45TTQMAv5!x&44oahMY=S!1&O1C~D`GFF3H_rs#$^QvS@3Naz

dwtbz8yz+lR|QF zzT2Y00mTnh-es#PaNM^Z`-fG@eW3zYyS`6T;J}SE8zLq zd3moZI;GEuBjJaDU*%q10pRc|D=T68ClXA{MC534#x^2=G?Uz$GC?v95}nF96Ahd` z@Jk`_&A?J2G|I^Bws^=8ja<9f3vk=3bD6)5xZA*0OC{_~3eG!3lUwlq{Tno_#EV@` zAw=t4T8e9u`a!02-pb#2hnHcW4ef*g~F_Pe;xk6&QCMTEzfC!trb0X&IEbaF%9 z+qh*Y|I2G%mXj0U{3lA2vP$pPb+^@^(GB5*TT0JWIiT)bcb1LowR6_Lgl&Rx-JZ>U zpObNE%t#|yP5&C)VJG&l8+En^Fwc z%%xgAYYeL0XbB2=i6dVgwKRikAY`l;>HH^0DRO1h`6|EjT0zV7k$HKU8NhNT3yHG`Ygll!NkDJxhsJg_E$J@ zj&7-suCpi-Fcc=7eSsZHU>9!=JpXfrAQL#%0j%QDC}skO*`KTvwWtLjSEZJch={itn@r&wz1z zpm1BjzWr>e!Fy=%oSj3}P!_Nohd)0)BE@aE)E@+F;o{-J^+gEPT_)sl2OjWcn_1%8E$m)uMy^H4_JG+FWj~`S)+g2M{fEJ3 z5AFo`9qAdY&W=AC+y6Iah=Qbu!`7(&3V_{tL|2NG&wgoj$ zJCA7fU_u?za6R51V8X@)fJv+{@Q_Z!(oijCJM@A{-@xDizFMK5#t3^0Uq-L(1iT*d ze&Df%is%XifqX$)g799o0s{jVtkJumnT+s*AltBpJ2*Kd*&$?2YF6_lC>V zUg9e)ADjR_0ksSWK~4oJD$=i6>V%6^^EtgVkjrQ^BCeL8y(QRlf$sy6-!5I1m6ndF z4+{oL(Q+c&8KwCb zK9NE!GO;9@q}R)|gyjdN@d6@h400qhm@PMss*JurK|94a;9wVKtZ&q|dGjrq^_X6S z<@{re5^so$aPuAF&z_%jT2Bbpz&2zg7;(EZWNY=+*J*KTPhz{+Ua$I&n|HgPFmr2S zREZn!zg-e=G1@&A)0nkx!txy1`Z(dC-L*gK9D8?%=N62tx3-TjoXWeZ-Bl5i<4jW! ztQ8G&B)qy5vt=O{H!KU#a-9~an*W(|YWv&4-8uDS?BNew^gkc=4FGLJCTsfRC*#)Q}P8Y-o0-p}o4QY@zb0;u$kVHBL&gm+Rvt55l&_qnKcSGj@-4d*xNDwH> zD7ZDC=TrkxnXUf2!wAd@sAzrQ7$`OmV4>!->_S11I=2oHDA+^aev*WK5TRLM|Ly

PPh4mll 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%0D%)4R(^doNn(` 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 MBMnaKPhIo>0jtU(g#Z8m literal 0 HcmV?d00001 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/summary.md b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/summary.md new file mode 100644 index 00000000..a11c2c65 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-40-01/summary.md @@ -0,0 +1,11 @@ + +# CACE Summary for CML_divider + +**netlist source**: schematic + +| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | +| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | +| Frequency | ngspice | frequency | 4.3 GHz | 4.722 GHz | 5.0 GHz | 4.722 GHz | 5.2 GHz | 4.722 GHz | Pass ✅ | +| Amplitude | ngspice | amplitude | 0.2 V | 0.648 V | 0.4 V | 0.771 V | 0.6 V | 0.860 V | Fail ❌ | +| Voltage swing | ngspice | voltage_swing | 0.4 V | 1.295 V | 0.8 V | 1.543 V | 1.2 V | 1.720 V | Fail ❌ | + diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/CML_core_tb.sch new file mode 100644 index 00000000..4f2cfbbf --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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 {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=CACE\{vdd\} savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/CML_core_tb.sch new file mode 100644 index 00000000..8da9de98 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/CML_core_tb_0.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/CML_core_tb_0.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/CML_core_tb_0.data new file mode 100644 index 00000000..f59ab2f0 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/CML_core_tb_0.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.952325246460e-01 + 1.728000000000e-10 -6.043942197180e-02 + 1.828000000000e-10 1.817064006719e-01 + 1.928000000000e-10 3.985392356515e-01 + 2.028000000000e-10 5.562505249699e-01 + 2.128000000000e-10 6.572874178466e-01 + 2.228000000000e-10 7.087352858161e-01 + 2.328000000000e-10 7.029522511861e-01 + 2.428000000000e-10 6.344368312078e-01 + 2.528000000000e-10 5.013241237787e-01 + 2.628000000000e-10 3.030080742176e-01 + 2.728000000000e-10 6.578821975768e-02 + 2.828000000000e-10 -1.781586778972e-01 + 2.928000000000e-10 -3.964040373442e-01 + 3.028000000000e-10 -5.555461653242e-01 + 3.128000000000e-10 -6.571022283471e-01 + 3.228000000000e-10 -7.092808909864e-01 + 3.328000000000e-10 -7.040843150938e-01 + 3.428000000000e-10 -6.362469325195e-01 + 3.528000000000e-10 -5.032364212786e-01 + 3.628000000000e-10 -3.051350358226e-01 + 3.728000000000e-10 -6.762904380974e-02 + 3.828000000000e-10 1.763878132349e-01 + 3.928000000000e-10 3.951284969670e-01 + 4.028000000000e-10 5.545978983505e-01 + 4.128000000000e-10 6.566315830069e-01 + 4.228000000000e-10 7.089962487465e-01 + 4.328000000000e-10 7.042633111532e-01 + 4.428000000000e-10 6.365365170049e-01 + 4.528000000000e-10 5.037912579488e-01 + 4.628000000000e-10 3.056253251435e-01 + 4.728000000000e-10 6.823087043489e-02 + 4.828000000000e-10 -1.759620590786e-01 + 4.928000000000e-10 -3.946766675460e-01 + 5.028000000000e-10 -5.543918551335e-01 + 5.128000000000e-10 -6.564106038653e-01 + 5.228000000000e-10 -7.089804674794e-01 + 5.328000000000e-10 -7.042284637667e-01 + 5.428000000000e-10 -6.366831677063e-01 + 5.528000000000e-10 -5.038654128054e-01 + 5.628000000000e-10 -3.058301627321e-01 + 5.728000000000e-10 -6.832081314378e-02 + 5.828000000000e-10 1.757744687450e-01 + 5.928000000000e-10 3.946207346164e-01 + 6.028000000000e-10 5.542681653143e-01 + 6.128000000000e-10 6.564162326939e-01 + 6.228000000000e-10 7.089102158365e-01 + 6.328000000000e-10 7.042850183822e-01 + 6.428000000000e-10 6.366586213363e-01 + 6.528000000000e-10 5.039505543903e-01 + 6.628000000000e-10 3.058219717524e-01 + 6.728000000000e-10 6.840961740524e-02 + 6.828000000000e-10 -1.757862033444e-01 + 6.928000000000e-10 -3.945467987447e-01 + 7.028000000000e-10 -5.542929102277e-01 + 7.128000000000e-10 -6.563603422698e-01 + 7.228000000000e-10 -7.089481650220e-01 + 7.328000000000e-10 -7.042424683005e-01 + 7.428000000000e-10 -6.367078290897e-01 + 7.528000000000e-10 -5.039165471509e-01 + 7.628000000000e-10 -3.058753018579e-01 + 7.728000000000e-10 -6.837707225292e-02 + 7.828000000000e-10 1.757345833407e-01 + 7.928000000000e-10 3.945785215449e-01 + 8.028000000000e-10 5.542482652542e-01 + 8.128000000000e-10 6.563959408481e-01 + 8.228000000000e-10 7.089082113076e-01 + 8.328000000000e-10 7.042817797830e-01 + 8.428000000000e-10 6.366719399828e-01 + 8.528000000000e-10 5.039573608246e-01 + 8.628000000000e-10 3.058408732486e-01 + 8.728000000000e-10 6.841772818469e-02 + 8.828000000000e-10 -1.757686495942e-01 + 8.928000000000e-10 -3.945419964750e-01 + 9.028000000000e-10 -5.542809328797e-01 + 9.128000000000e-10 -6.563614885531e-01 + 9.228000000000e-10 -7.089411806967e-01 + 9.328000000000e-10 -7.042479976407e-01 + 9.428000000000e-10 -6.367051444468e-01 + 9.528000000000e-10 -5.039245834310e-01 + 9.628000000000e-10 -3.058742220339e-01 + 9.728000000000e-10 -6.838526492008e-02 + 9.828000000000e-10 1.757358039920e-01 + 9.928000000000e-10 3.945718167364e-01 + 1.000000000000e-09 5.155910006549e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/conditions.yaml new file mode 100644 index 00000000..92224cf6 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 0 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_00 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/CML_core_tb.sch new file mode 100644 index 00000000..a33acfdf --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/CML_core_tb_1.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/CML_core_tb_1.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/CML_core_tb_1.data new file mode 100644 index 00000000..e3f59bbb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/CML_core_tb_1.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.647956442563e-01 + 1.728000000000e-10 -3.672466403620e-02 + 1.828000000000e-10 1.978055322165e-01 + 1.928000000000e-10 4.056017943518e-01 + 2.028000000000e-10 5.547344088879e-01 + 2.128000000000e-10 6.487490848065e-01 + 2.228000000000e-10 6.923653634957e-01 + 2.328000000000e-10 6.780886353961e-01 + 2.428000000000e-10 6.039598047192e-01 + 2.528000000000e-10 4.698168410475e-01 + 2.628000000000e-10 2.751260896566e-01 + 2.728000000000e-10 4.430157580525e-02 + 2.828000000000e-10 -1.925038311835e-01 + 2.928000000000e-10 -4.023301580756e-01 + 3.028000000000e-10 -5.533152551341e-01 + 3.128000000000e-10 -6.481954476962e-01 + 3.228000000000e-10 -6.930655672739e-01 + 3.328000000000e-10 -6.800540209913e-01 + 3.428000000000e-10 -6.070129146880e-01 + 3.528000000000e-10 -4.732295235615e-01 + 3.628000000000e-10 -2.788311309623e-01 + 3.728000000000e-10 -4.769207273319e-02 + 3.828000000000e-10 1.893739393662e-01 + 3.928000000000e-10 3.999895682405e-01 + 4.028000000000e-10 5.516914161753e-01 + 4.128000000000e-10 6.473194453459e-01 + 4.228000000000e-10 6.926967113745e-01 + 4.328000000000e-10 6.804409619078e-01 + 4.428000000000e-10 6.077344291363e-01 + 4.528000000000e-10 4.743209278754e-01 + 4.628000000000e-10 2.799315218230e-01 + 4.728000000000e-10 4.887682675205e-02 + 4.828000000000e-10 -1.884058832182e-01 + 4.928000000000e-10 -3.991237321070e-01 + 5.028000000000e-10 -5.511979674959e-01 + 5.128000000000e-10 -6.469402879887e-01 + 5.228000000000e-10 -6.926225993557e-01 + 5.328000000000e-10 -6.804805060919e-01 + 5.428000000000e-10 -6.080204415279e-01 + 5.528000000000e-10 -4.745961817340e-01 + 5.628000000000e-10 -2.803459413605e-01 + 5.728000000000e-10 -4.918721233066e-02 + 5.828000000000e-10 1.880320213273e-01 + 5.928000000000e-10 3.989072784961e-01 + 6.028000000000e-10 5.509784832100e-01 + 6.128000000000e-10 6.468776696433e-01 + 6.228000000000e-10 6.925382949500e-01 + 6.328000000000e-10 6.805520167761e-01 + 6.428000000000e-10 6.080522625696e-01 + 6.528000000000e-10 4.747422384222e-01 + 6.628000000000e-10 2.804194075907e-01 + 6.728000000000e-10 4.934414267878e-02 + 6.828000000000e-10 -1.879699706397e-01 + 6.928000000000e-10 -3.987854446736e-01 + 7.028000000000e-10 -5.509613139230e-01 + 7.128000000000e-10 -6.468062697707e-01 + 7.228000000000e-10 -6.925630874809e-01 + 7.328000000000e-10 -6.805223964692e-01 + 7.428000000000e-10 -6.081132322697e-01 + 7.528000000000e-10 -4.747366406660e-01 + 7.628000000000e-10 -2.804933490724e-01 + 7.728000000000e-10 -4.934235519722e-02 + 7.828000000000e-10 1.879006367827e-01 + 7.928000000000e-10 3.987938070562e-01 + 8.028000000000e-10 5.509093463144e-01 + 8.128000000000e-10 6.468293959909e-01 + 8.228000000000e-10 6.925252291894e-01 + 8.328000000000e-10 6.805590879185e-01 + 8.428000000000e-10 6.080875904937e-01 + 8.528000000000e-10 4.747803907956e-01 + 8.628000000000e-10 2.804721530083e-01 + 8.728000000000e-10 4.938687520288e-02 + 8.828000000000e-10 -1.879222775604e-01 + 8.928000000000e-10 -3.987554695640e-01 + 9.028000000000e-10 -5.509333914335e-01 + 9.128000000000e-10 -6.467969990881e-01 + 9.228000000000e-10 -6.925530415231e-01 + 9.328000000000e-10 -6.805304150604e-01 + 9.428000000000e-10 -6.081187600045e-01 + 9.528000000000e-10 -4.747542418837e-01 + 9.628000000000e-10 -2.805045225795e-01 + 9.728000000000e-10 -4.936125388638e-02 + 9.828000000000e-10 1.878908530872e-01 + 9.928000000000e-10 3.987795364060e-01 + 1.000000000000e-09 5.142017254263e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/conditions.yaml new file mode 100644 index 00000000..6f7af265 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 1 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_01 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/CML_core_tb.sch new file mode 100644 index 00000000..df03a06a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/CML_core_tb_2.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/CML_core_tb_2.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/CML_core_tb_2.data new file mode 100644 index 00000000..69b4790a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/CML_core_tb_2.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -3.226907107526e-01 + 1.728000000000e-10 -8.539968284410e-02 + 1.828000000000e-10 1.614480909662e-01 + 1.928000000000e-10 3.869191924745e-01 + 2.028000000000e-10 5.540483396157e-01 + 2.128000000000e-10 6.620167995175e-01 + 2.228000000000e-10 7.202634748901e-01 + 2.328000000000e-10 7.212523007105e-01 + 2.428000000000e-10 6.566979396260e-01 + 2.528000000000e-10 5.250303609426e-01 + 2.628000000000e-10 3.265092852166e-01 + 2.728000000000e-10 8.707604756771e-02 + 2.828000000000e-10 -1.611600424348e-01 + 2.928000000000e-10 -3.873238626333e-01 + 3.028000000000e-10 -5.550746884823e-01 + 3.128000000000e-10 -6.629366269634e-01 + 3.228000000000e-10 -7.212894794449e-01 + 3.328000000000e-10 -7.220878341254e-01 + 3.428000000000e-10 -6.576651735802e-01 + 3.528000000000e-10 -5.257535323793e-01 + 3.628000000000e-10 -3.273054874384e-01 + 3.728000000000e-10 -8.759901468452e-02 + 3.828000000000e-10 1.605580394287e-01 + 3.928000000000e-10 3.869863823107e-01 + 4.028000000000e-10 5.547303069787e-01 + 4.128000000000e-10 6.628461833305e-01 + 4.228000000000e-10 7.211466820779e-01 + 4.328000000000e-10 7.221995653822e-01 + 4.428000000000e-10 6.577128147927e-01 + 4.528000000000e-10 5.259884868760e-01 + 4.628000000000e-10 3.274163471898e-01 + 4.728000000000e-10 8.784541550780e-02 + 4.828000000000e-10 -1.604682108624e-01 + 4.928000000000e-10 -3.867888973241e-01 + 5.028000000000e-10 -5.547066546217e-01 + 5.128000000000e-10 -6.627253094524e-01 + 5.228000000000e-10 -7.211826888209e-01 + 5.328000000000e-10 -7.221369141817e-01 + 5.428000000000e-10 -6.577994031943e-01 + 5.528000000000e-10 -5.259620192587e-01 + 5.628000000000e-10 -3.275201865204e-01 + 5.728000000000e-10 -8.782404636233e-02 + 5.828000000000e-10 1.603689538405e-01 + 5.928000000000e-10 3.868153343854e-01 + 6.028000000000e-10 5.546284247412e-01 + 6.128000000000e-10 6.627691182366e-01 + 6.228000000000e-10 7.211205707397e-01 + 6.328000000000e-10 7.221945096033e-01 + 6.428000000000e-10 6.577508134366e-01 + 6.528000000000e-10 5.260261908485e-01 + 6.628000000000e-10 3.274760111912e-01 + 6.728000000000e-10 8.788851273294e-02 + 6.828000000000e-10 -1.604138329037e-01 + 6.928000000000e-10 -3.867579820075e-01 + 7.028000000000e-10 -5.546733587088e-01 + 7.128000000000e-10 -6.627166397254e-01 + 7.228000000000e-10 -7.211676696649e-01 + 7.328000000000e-10 -7.221448613305e-01 + 7.428000000000e-10 -6.577993970261e-01 + 7.528000000000e-10 -5.259796511606e-01 + 7.628000000000e-10 -3.275252420812e-01 + 7.728000000000e-10 -8.784270745333e-02 + 7.828000000000e-10 1.603648729372e-01 + 7.928000000000e-10 3.868003178892e-01 + 8.028000000000e-10 5.546284703905e-01 + 8.128000000000e-10 6.627594909397e-01 + 8.228000000000e-10 7.211247368625e-01 + 8.328000000000e-10 7.221884517678e-01 + 8.428000000000e-10 6.577581123739e-01 + 8.528000000000e-10 5.260226393584e-01 + 8.628000000000e-10 3.274844581735e-01 + 8.728000000000e-10 8.788515759553e-02 + 8.828000000000e-10 -1.604054537172e-01 + 8.928000000000e-10 -3.867616376768e-01 + 9.028000000000e-10 -5.546662826942e-01 + 9.128000000000e-10 -6.627215467888e-01 + 9.228000000000e-10 -7.211618152183e-01 + 9.328000000000e-10 -7.221504122635e-01 + 9.428000000000e-10 -6.577943183983e-01 + 9.528000000000e-10 -5.259856282734e-01 + 9.628000000000e-10 -3.275204867996e-01 + 9.728000000000e-10 -8.784851998896e-02 + 9.828000000000e-10 1.603694682536e-01 + 9.928000000000e-10 3.867951846118e-01 + 1.000000000000e-09 5.139507493642e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/conditions.yaml new file mode 100644 index 00000000..e82cc1c3 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 2 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_02 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/CML_core_tb.sch new file mode 100644 index 00000000..e892badb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/CML_core_tb_3.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/CML_core_tb_3.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/CML_core_tb_3.data new file mode 100644 index 00000000..fedc9e2a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/CML_core_tb_3.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.752371518652e-01 + 1.728000000000e-10 -5.371376319543e-02 + 1.828000000000e-10 1.789877413053e-01 + 1.928000000000e-10 3.904548691103e-01 + 2.028000000000e-10 5.481842948229e-01 + 2.128000000000e-10 6.473880529986e-01 + 2.228000000000e-10 6.910106576952e-01 + 2.328000000000e-10 6.747515328639e-01 + 2.428000000000e-10 5.993982850131e-01 + 2.528000000000e-10 4.678235295331e-01 + 2.628000000000e-10 2.811940191144e-01 + 2.728000000000e-10 5.749892092429e-02 + 2.828000000000e-10 -1.768703468756e-01 + 2.928000000000e-10 -3.894327299011e-01 + 3.028000000000e-10 -5.481462871223e-01 + 3.128000000000e-10 -6.476233959034e-01 + 3.228000000000e-10 -6.918267741740e-01 + 3.328000000000e-10 -6.759891610513e-01 + 3.428000000000e-10 -6.011477081233e-01 + 3.528000000000e-10 -4.695436066174e-01 + 3.628000000000e-10 -2.830251877311e-01 + 3.728000000000e-10 -5.907673776650e-02 + 3.828000000000e-10 1.753349861707e-01 + 3.928000000000e-10 3.883274219019e-01 + 4.028000000000e-10 5.473035177189e-01 + 4.128000000000e-10 6.472356324664e-01 + 4.228000000000e-10 6.916308158427e-01 + 4.328000000000e-10 6.762268077787e-01 + 4.428000000000e-10 6.014684070962e-01 + 4.528000000000e-10 4.700895666681e-01 + 4.628000000000e-10 2.834862741746e-01 + 4.728000000000e-10 5.964855757082e-02 + 4.828000000000e-10 -1.749274761915e-01 + 4.928000000000e-10 -3.878897710558e-01 + 5.028000000000e-10 -5.470986037433e-01 + 5.128000000000e-10 -6.470272164409e-01 + 5.228000000000e-10 -6.916322065746e-01 + 5.328000000000e-10 -6.762158687864e-01 + 5.428000000000e-10 -6.016311330158e-01 + 5.528000000000e-10 -4.701782346337e-01 + 5.628000000000e-10 -2.836941639082e-01 + 5.728000000000e-10 -5.974768838543e-02 + 5.828000000000e-10 1.747352099095e-01 + 5.928000000000e-10 3.878245260251e-01 + 6.028000000000e-10 5.469715931678e-01 + 6.128000000000e-10 6.470284806517e-01 + 6.228000000000e-10 6.915679621080e-01 + 6.328000000000e-10 6.762768333485e-01 + 6.428000000000e-10 6.016163496453e-01 + 6.528000000000e-10 4.702674812943e-01 + 6.628000000000e-10 2.836938506434e-01 + 6.728000000000e-10 5.983990401354e-02 + 6.828000000000e-10 -1.747391664584e-01 + 6.928000000000e-10 -3.877472828580e-01 + 7.028000000000e-10 -5.469903889528e-01 + 7.128000000000e-10 -6.469730360721e-01 + 7.228000000000e-10 -6.916047287716e-01 + 7.328000000000e-10 -6.762386026180e-01 + 7.428000000000e-10 -6.016669907083e-01 + 7.528000000000e-10 -4.702390118128e-01 + 7.628000000000e-10 -2.837481181728e-01 + 7.728000000000e-10 -5.981248689037e-02 + 7.828000000000e-10 1.746867337354e-01 + 7.928000000000e-10 3.877749638679e-01 + 8.028000000000e-10 5.469462314077e-01 + 8.128000000000e-10 6.470055622974e-01 + 8.228000000000e-10 6.915665740520e-01 + 8.328000000000e-10 6.762766371031e-01 + 8.428000000000e-10 6.016337946720e-01 + 8.528000000000e-10 4.702787360349e-01 + 8.628000000000e-10 2.837166478209e-01 + 8.728000000000e-10 5.985233152722e-02 + 8.828000000000e-10 -1.747180248353e-01 + 8.928000000000e-10 -3.877389392165e-01 + 9.028000000000e-10 -5.469764940938e-01 + 9.128000000000e-10 -6.469724949526e-01 + 9.228000000000e-10 -6.915980610397e-01 + 9.328000000000e-10 -6.762447762615e-01 + 9.428000000000e-10 -6.016660865709e-01 + 9.528000000000e-10 -4.702484057793e-01 + 9.628000000000e-10 -2.837489236123e-01 + 9.728000000000e-10 -5.982216431619e-02 + 9.828000000000e-10 1.746862818107e-01 + 9.928000000000e-10 3.877670239311e-01 + 1.000000000000e-09 5.084292112944e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/conditions.yaml new file mode 100644 index 00000000..ecdc3782 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 3 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_03 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/CML_core_tb.sch new file mode 100644 index 00000000..0bbf7b60 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/CML_core_tb_4.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/CML_core_tb_4.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/CML_core_tb_4.data new file mode 100644 index 00000000..4898dcc8 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/CML_core_tb_4.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.482257947455e-01 + 1.728000000000e-10 -3.259266550036e-02 + 1.828000000000e-10 1.930322087844e-01 + 1.928000000000e-10 3.960886599474e-01 + 2.028000000000e-10 5.450058997505e-01 + 2.128000000000e-10 6.360387116800e-01 + 2.228000000000e-10 6.712975422190e-01 + 2.328000000000e-10 6.474938983982e-01 + 2.428000000000e-10 5.679706274704e-01 + 2.528000000000e-10 4.364781736218e-01 + 2.628000000000e-10 2.536409133725e-01 + 2.728000000000e-10 3.555786929817e-02 + 2.828000000000e-10 -1.919150168478e-01 + 2.928000000000e-10 -3.960490843585e-01 + 3.028000000000e-10 -5.456465197220e-01 + 3.128000000000e-10 -6.367232933250e-01 + 3.228000000000e-10 -6.725166925877e-01 + 3.328000000000e-10 -6.491812984547e-01 + 3.428000000000e-10 -5.701612342484e-01 + 3.528000000000e-10 -4.386195239579e-01 + 3.628000000000e-10 -2.558666299298e-01 + 3.728000000000e-10 -3.750940439386e-02 + 3.828000000000e-10 1.900731677010e-01 + 3.928000000000e-10 3.947279065049e-01 + 4.028000000000e-10 5.446879536498e-01 + 4.128000000000e-10 6.362937598492e-01 + 4.228000000000e-10 6.723764816130e-01 + 4.328000000000e-10 6.495551727740e-01 + 4.428000000000e-10 5.706690754638e-01 + 4.528000000000e-10 4.393690386282e-01 + 4.628000000000e-10 2.565445890136e-01 + 4.728000000000e-10 3.828939038749e-02 + 4.828000000000e-10 -1.894747026650e-01 + 4.928000000000e-10 -3.941469427019e-01 + 5.028000000000e-10 -5.443881652157e-01 + 5.128000000000e-10 -6.360424686566e-01 + 5.228000000000e-10 -6.723795425302e-01 + 5.328000000000e-10 -6.495951074105e-01 + 5.428000000000e-10 -5.709049111674e-01 + 5.528000000000e-10 -4.395480856778e-01 + 5.628000000000e-10 -2.568451405700e-01 + 5.728000000000e-10 -3.848386295175e-02 + 5.828000000000e-10 1.891998017504e-01 + 5.928000000000e-10 3.940128253458e-01 + 6.028000000000e-10 5.442195759360e-01 + 6.128000000000e-10 6.360190076123e-01 + 6.228000000000e-10 6.723154692419e-01 + 6.328000000000e-10 6.496722035130e-01 + 6.428000000000e-10 5.709215560836e-01 + 6.528000000000e-10 4.396716365902e-01 + 6.628000000000e-10 2.568848555761e-01 + 6.728000000000e-10 3.861258812938e-02 + 6.828000000000e-10 -1.891673406027e-01 + 6.928000000000e-10 -3.939096487469e-01 + 7.028000000000e-10 -5.442185154541e-01 + 7.128000000000e-10 -6.359555029215e-01 + 7.228000000000e-10 -6.723494769467e-01 + 7.328000000000e-10 -6.496420384079e-01 + 7.428000000000e-10 -5.709822816025e-01 + 7.528000000000e-10 -4.396582995671e-01 + 7.628000000000e-10 -2.569529185106e-01 + 7.728000000000e-10 -3.860128053098e-02 + 7.828000000000e-10 1.891028165048e-01 + 7.928000000000e-10 3.939252197739e-01 + 8.028000000000e-10 5.441685861906e-01 + 8.128000000000e-10 6.359828023137e-01 + 8.228000000000e-10 6.723118712615e-01 + 8.328000000000e-10 6.496812709937e-01 + 8.428000000000e-10 5.709544657577e-01 + 8.528000000000e-10 4.397022527784e-01 + 8.628000000000e-10 2.569280980597e-01 + 8.728000000000e-10 3.864565597287e-02 + 8.828000000000e-10 -1.891278298806e-01 + 8.928000000000e-10 -3.938862165142e-01 + 9.028000000000e-10 -5.441949734698e-01 + 9.128000000000e-10 -6.359493781265e-01 + 9.228000000000e-10 -6.723420888760e-01 + 9.328000000000e-10 -6.496512561522e-01 + 9.428000000000e-10 -5.709874488604e-01 + 9.528000000000e-10 -4.396746422576e-01 + 9.628000000000e-10 -2.569616958772e-01 + 9.728000000000e-10 -3.861839939192e-02 + 9.828000000000e-10 1.890951489097e-01 + 9.928000000000e-10 3.939119089870e-01 + 1.000000000000e-09 5.081084039478e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/conditions.yaml new file mode 100644 index 00000000..d49c902e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 4 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_04 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/CML_core_tb.sch new file mode 100644 index 00000000..54957d0f --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/CML_core_tb_5.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/CML_core_tb_5.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/CML_core_tb_5.data new file mode 100644 index 00000000..97a3ab1f --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/CML_core_tb_5.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -3.026592886865e-01 + 1.728000000000e-10 -8.046058591213e-02 + 1.828000000000e-10 1.560684489845e-01 + 1.928000000000e-10 3.758215815324e-01 + 2.028000000000e-10 5.441825187720e-01 + 2.128000000000e-10 6.527787402061e-01 + 2.228000000000e-10 7.054162779080e-01 + 2.328000000000e-10 6.966940307878e-01 + 2.428000000000e-10 6.251719997267e-01 + 2.528000000000e-10 4.948986245243e-01 + 2.628000000000e-10 3.088338841037e-01 + 2.728000000000e-10 8.463582249819e-02 + 2.828000000000e-10 -1.534379373390e-01 + 2.928000000000e-10 -3.742382678981e-01 + 3.028000000000e-10 -5.437587344983e-01 + 3.128000000000e-10 -6.527795869025e-01 + 3.228000000000e-10 -7.060578401775e-01 + 3.328000000000e-10 -6.977288800308e-01 + 3.428000000000e-10 -6.267241220561e-01 + 3.528000000000e-10 -4.964034573067e-01 + 3.628000000000e-10 -3.104523257846e-01 + 3.728000000000e-10 -8.599843693100e-02 + 3.828000000000e-10 1.520614001089e-01 + 3.928000000000e-10 3.732327292359e-01 + 4.028000000000e-10 5.429530946109e-01 + 4.128000000000e-10 6.523997728799e-01 + 4.228000000000e-10 7.058202145507e-01 + 4.328000000000e-10 6.979022558405e-01 + 4.428000000000e-10 6.269588593419e-01 + 4.528000000000e-10 4.968624227466e-01 + 4.628000000000e-10 3.108132149603e-01 + 4.728000000000e-10 8.648038785746e-02 + 4.828000000000e-10 -1.517384677919e-01 + 4.928000000000e-10 -3.728474794484e-01 + 5.028000000000e-10 -5.427866011842e-01 + 5.128000000000e-10 -6.522022614009e-01 + 5.228000000000e-10 -7.058208822479e-01 + 5.328000000000e-10 -6.978651082200e-01 + 5.428000000000e-10 -6.270935668997e-01 + 5.528000000000e-10 -4.969096569281e-01 + 5.628000000000e-10 -3.109835748750e-01 + 5.728000000000e-10 -8.653572716924e-02 + 5.828000000000e-10 1.515778681972e-01 + 5.928000000000e-10 3.728127447205e-01 + 6.028000000000e-10 5.426739415091e-01 + 6.128000000000e-10 6.522162007318e-01 + 6.228000000000e-10 7.057544179932e-01 + 6.328000000000e-10 6.979224304337e-01 + 6.428000000000e-10 6.270641898671e-01 + 6.528000000000e-10 4.969874144680e-01 + 6.628000000000e-10 3.109648292365e-01 + 6.728000000000e-10 8.661535651254e-02 + 6.828000000000e-10 -1.515990397030e-01 + 6.928000000000e-10 -3.727433125293e-01 + 7.028000000000e-10 -5.427028559119e-01 + 7.128000000000e-10 -6.521615488134e-01 + 7.228000000000e-10 -7.057946841560e-01 + 7.328000000000e-10 -6.978790263426e-01 + 7.428000000000e-10 -6.271133848792e-01 + 7.528000000000e-10 -4.969513861012e-01 + 7.628000000000e-10 -3.110159233563e-01 + 7.728000000000e-10 -8.658006676819e-02 + 7.828000000000e-10 1.515487071721e-01 + 7.928000000000e-10 3.727772980737e-01 + 8.028000000000e-10 5.426589701450e-01 + 8.128000000000e-10 6.521979789832e-01 + 8.228000000000e-10 7.057547305503e-01 + 8.328000000000e-10 6.979187185021e-01 + 8.428000000000e-10 6.270767072939e-01 + 8.528000000000e-10 4.969913946096e-01 + 8.628000000000e-10 3.109805885283e-01 + 8.728000000000e-10 8.662004567697e-02 + 8.828000000000e-10 -1.515841004471e-01 + 8.928000000000e-10 -3.727405314049e-01 + 9.028000000000e-10 -5.426922302859e-01 + 9.128000000000e-10 -6.521632231968e-01 + 9.228000000000e-10 -7.057882763540e-01 + 9.328000000000e-10 -6.978845659833e-01 + 9.428000000000e-10 -6.271103709374e-01 + 9.528000000000e-10 -4.969587868574e-01 + 9.628000000000e-10 -3.110138943909e-01 + 9.728000000000e-10 -8.658760475647e-02 + 9.828000000000e-10 1.515508999036e-01 + 9.928000000000e-10 3.727707590510e-01 + 1.000000000000e-09 5.012730784879e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/conditions.yaml new file mode 100644 index 00000000..856c6ace --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 5 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_05 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/CML_core_tb.sch new file mode 100644 index 00000000..344a9459 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/CML_core_tb_6.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/CML_core_tb_6.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/CML_core_tb_6.data new file mode 100644 index 00000000..68f452a6 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/CML_core_tb_6.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.658991355482e-01 + 1.728000000000e-10 -5.658971746101e-02 + 1.828000000000e-10 1.665652322471e-01 + 1.928000000000e-10 3.726189743475e-01 + 2.028000000000e-10 5.303705116758e-01 + 2.128000000000e-10 6.287796796090e-01 + 2.228000000000e-10 6.685380236864e-01 + 2.328000000000e-10 6.490234756137e-01 + 2.428000000000e-10 5.737092070140e-01 + 2.528000000000e-10 4.474825535463e-01 + 2.628000000000e-10 2.725242795062e-01 + 2.728000000000e-10 6.117177433706e-02 + 2.828000000000e-10 -1.637031734924e-01 + 2.928000000000e-10 -3.708935568748e-01 + 3.028000000000e-10 -5.297756369707e-01 + 3.128000000000e-10 -6.287017384995e-01 + 3.228000000000e-10 -6.693265533929e-01 + 3.328000000000e-10 -6.504570398323e-01 + 3.428000000000e-10 -5.758168078022e-01 + 3.528000000000e-10 -4.496242973413e-01 + 3.628000000000e-10 -2.747981275605e-01 + 3.728000000000e-10 -6.319393908832e-02 + 3.828000000000e-10 1.617439470913e-01 + 3.928000000000e-10 3.694169588634e-01 + 4.028000000000e-10 5.286499307585e-01 + 4.128000000000e-10 6.281722098808e-01 + 4.228000000000e-10 6.691184385543e-01 + 4.328000000000e-10 6.507901751638e-01 + 4.428000000000e-10 5.762974118946e-01 + 4.528000000000e-10 4.503608294115e-01 + 4.628000000000e-10 2.754522690623e-01 + 4.728000000000e-10 6.396306731360e-02 + 4.828000000000e-10 -1.611542650007e-01 + 4.928000000000e-10 -3.688169747432e-01 + 5.028000000000e-10 -5.283292872594e-01 + 5.128000000000e-10 -6.279003852563e-01 + 5.228000000000e-10 -6.691136918962e-01 + 5.328000000000e-10 -6.508124831570e-01 + 5.428000000000e-10 -5.765249280825e-01 + 5.528000000000e-10 -4.505225248069e-01 + 5.628000000000e-10 -2.757393848954e-01 + 5.728000000000e-10 -6.413835118523e-02 + 5.828000000000e-10 1.608879015274e-01 + 5.928000000000e-10 3.686909867212e-01 + 6.028000000000e-10 5.281558224884e-01 + 6.128000000000e-10 6.278785795680e-01 + 6.228000000000e-10 6.690442760911e-01 + 6.328000000000e-10 6.508870303825e-01 + 6.428000000000e-10 5.765321271449e-01 + 6.528000000000e-10 4.506407637839e-01 + 6.628000000000e-10 2.757670228304e-01 + 6.728000000000e-10 6.426080532693e-02 + 6.828000000000e-10 -1.608659404084e-01 + 6.928000000000e-10 -3.685888330346e-01 + 7.028000000000e-10 -5.281591419234e-01 + 7.128000000000e-10 -6.278127091451e-01 + 7.228000000000e-10 -6.690805910819e-01 + 7.328000000000e-10 -6.508520944992e-01 + 7.428000000000e-10 -5.765925476371e-01 + 7.528000000000e-10 -4.506215704207e-01 + 7.628000000000e-10 -2.758332595929e-01 + 7.728000000000e-10 -6.424327491402e-02 + 7.828000000000e-10 1.608024320318e-01 + 7.928000000000e-10 3.686091606456e-01 + 8.028000000000e-10 5.281080947303e-01 + 8.128000000000e-10 6.278426474070e-01 + 8.228000000000e-10 6.690409470235e-01 + 8.328000000000e-10 6.508923982303e-01 + 8.428000000000e-10 5.765614162070e-01 + 8.528000000000e-10 4.506656063053e-01 + 8.628000000000e-10 2.758047260180e-01 + 8.728000000000e-10 6.428762429921e-02 + 8.828000000000e-10 -1.608310872580e-01 + 8.928000000000e-10 -3.685690211775e-01 + 9.028000000000e-10 -5.281370864241e-01 + 9.128000000000e-10 -6.278075066251e-01 + 9.228000000000e-10 -6.690730291835e-01 + 9.328000000000e-10 -6.508603444096e-01 + 9.428000000000e-10 -5.765956636588e-01 + 9.528000000000e-10 -4.506359555730e-01 + 9.628000000000e-10 -2.758391852586e-01 + 9.728000000000e-10 -6.425829353037e-02 + 9.828000000000e-10 1.607973448132e-01 + 9.928000000000e-10 3.685968285070e-01 + 1.000000000000e-09 4.894958047088e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/conditions.yaml new file mode 100644 index 00000000..6c2f28e1 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 6 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_06 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/CML_core_tb.sch new file mode 100644 index 00000000..ba10f5a7 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/CML_core_tb_7.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/CML_core_tb_7.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/CML_core_tb_7.data new file mode 100644 index 00000000..0dc3c32a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/CML_core_tb_7.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.411371086013e-01 + 1.728000000000e-10 -3.745255924117e-02 + 1.828000000000e-10 1.789428987452e-01 + 1.928000000000e-10 3.769558934840e-01 + 2.028000000000e-10 5.255858783541e-01 + 2.128000000000e-10 6.150086513683e-01 + 2.228000000000e-10 6.463506095909e-01 + 2.328000000000e-10 6.202014565113e-01 + 2.428000000000e-10 5.417075102450e-01 + 2.528000000000e-10 4.161519970610e-01 + 2.628000000000e-10 2.448960905686e-01 + 2.728000000000e-10 3.892968213965e-02 + 2.828000000000e-10 -1.791505445505e-01 + 2.928000000000e-10 -3.778686664383e-01 + 3.028000000000e-10 -5.268093330033e-01 + 3.128000000000e-10 -6.159877416348e-01 + 3.228000000000e-10 -6.476195951568e-01 + 3.328000000000e-10 -6.216667221790e-01 + 3.428000000000e-10 -5.435382878554e-01 + 3.528000000000e-10 -4.178448923887e-01 + 3.628000000000e-10 -2.466531390426e-01 + 3.728000000000e-10 -4.041876256606e-02 + 3.828000000000e-10 1.777092594525e-01 + 3.928000000000e-10 3.768542192180e-01 + 4.028000000000e-10 5.260351926041e-01 + 4.128000000000e-10 6.156923491854e-01 + 4.228000000000e-10 6.475364165656e-01 + 4.328000000000e-10 6.220253224816e-01 + 4.428000000000e-10 5.439681165412e-01 + 4.528000000000e-10 4.184919515643e-01 + 4.628000000000e-10 2.472032785778e-01 + 4.728000000000e-10 4.108392377197e-02 + 4.828000000000e-10 -1.772209974541e-01 + 4.928000000000e-10 -3.763464849454e-01 + 5.028000000000e-10 -5.257893585276e-01 + 5.128000000000e-10 -6.154751208437e-01 + 5.228000000000e-10 -6.475677164184e-01 + 5.328000000000e-10 -6.220637777790e-01 + 5.428000000000e-10 -5.441970040997e-01 + 5.528000000000e-10 -4.186454653208e-01 + 5.628000000000e-10 -2.474812841152e-01 + 5.728000000000e-10 -4.124875776275e-02 + 5.828000000000e-10 1.769646369358e-01 + 5.928000000000e-10 3.762321495571e-01 + 6.028000000000e-10 5.256270530622e-01 + 6.128000000000e-10 6.154644314175e-01 + 6.228000000000e-10 6.475079392204e-01 + 6.328000000000e-10 6.221477255403e-01 + 6.428000000000e-10 5.442104878297e-01 + 6.528000000000e-10 4.187701859554e-01 + 6.628000000000e-10 2.475138621783e-01 + 6.728000000000e-10 4.137738638918e-02 + 6.828000000000e-10 -1.769383615791e-01 + 6.928000000000e-10 -3.761265802968e-01 + 7.028000000000e-10 -5.256298366366e-01 + 7.128000000000e-10 -6.153992750277e-01 + 7.228000000000e-10 -6.475476374408e-01 + 7.328000000000e-10 -6.221164421539e-01 + 7.428000000000e-10 -5.442762390873e-01 + 7.528000000000e-10 -4.187551150856e-01 + 7.628000000000e-10 -2.475858208222e-01 + 7.728000000000e-10 -4.136415856981e-02 + 7.828000000000e-10 1.768699557901e-01 + 7.928000000000e-10 3.761440347995e-01 + 8.028000000000e-10 5.255765528630e-01 + 8.128000000000e-10 6.154291154928e-01 + 8.228000000000e-10 6.475082015932e-01 + 8.328000000000e-10 6.221591874055e-01 + 8.428000000000e-10 5.442468649409e-01 + 8.528000000000e-10 4.188025713318e-01 + 8.628000000000e-10 2.475593730203e-01 + 8.728000000000e-10 4.141194467582e-02 + 8.828000000000e-10 -1.768965906206e-01 + 8.928000000000e-10 -3.761014263264e-01 + 9.028000000000e-10 -5.256047249426e-01 + 9.128000000000e-10 -6.153930400648e-01 + 9.228000000000e-10 -6.475410523019e-01 + 9.328000000000e-10 -6.221273229309e-01 + 9.428000000000e-10 -5.442828742824e-01 + 9.528000000000e-10 -4.187734552047e-01 + 9.628000000000e-10 -2.475958588134e-01 + 9.728000000000e-10 -4.138326223976e-02 + 9.828000000000e-10 1.768611473522e-01 + 9.928000000000e-10 3.761288017358e-01 + 1.000000000000e-09 4.898465656484e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/conditions.yaml new file mode 100644 index 00000000..d33b7488 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 7 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_07 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/CML_core_tb.sch new file mode 100644 index 00000000..7c2e7249 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/CML_core_tb_8.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/CML_core_tb_8.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/CML_core_tb_8.data new file mode 100644 index 00000000..f9704d61 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/CML_core_tb_8.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -2.915574653990e-01 + 1.728000000000e-10 -8.207206468644e-02 + 1.828000000000e-10 1.443140454917e-01 + 1.928000000000e-10 3.578501059917e-01 + 2.028000000000e-10 5.264102614641e-01 + 2.128000000000e-10 6.356033847750e-01 + 2.228000000000e-10 6.852124516173e-01 + 2.328000000000e-10 6.731697751231e-01 + 2.428000000000e-10 6.014680860110e-01 + 2.528000000000e-10 4.762934940598e-01 + 2.628000000000e-10 3.019743151843e-01 + 2.728000000000e-10 9.052768843264e-02 + 2.828000000000e-10 -1.376882496508e-01 + 2.928000000000e-10 -3.528073773591e-01 + 3.028000000000e-10 -5.234244166185e-01 + 3.128000000000e-10 -6.340851318675e-01 + 3.228000000000e-10 -6.854084589569e-01 + 3.328000000000e-10 -6.747695956588e-01 + 3.428000000000e-10 -6.042844418494e-01 + 3.528000000000e-10 -4.793995649692e-01 + 3.628000000000e-10 -3.052822644166e-01 + 3.728000000000e-10 -9.358407685981e-02 + 3.828000000000e-10 1.347194202511e-01 + 3.928000000000e-10 3.504174847188e-01 + 4.028000000000e-10 5.215924623562e-01 + 4.128000000000e-10 6.330900225454e-01 + 4.228000000000e-10 6.849701135730e-01 + 4.328000000000e-10 6.751037342439e-01 + 4.428000000000e-10 6.049384750133e-01 + 4.528000000000e-10 4.803914109079e-01 + 4.628000000000e-10 3.062148923158e-01 + 4.728000000000e-10 9.463220881739e-02 + 4.828000000000e-10 -1.338572933423e-01 + 4.928000000000e-10 -3.495689260045e-01 + 5.028000000000e-10 -5.210792449240e-01 + 5.128000000000e-10 -6.326887195405e-01 + 5.228000000000e-10 -6.848983576670e-01 + 5.328000000000e-10 -6.751198274713e-01 + 5.428000000000e-10 -6.052060952211e-01 + 5.528000000000e-10 -4.806148207689e-01 + 5.628000000000e-10 -3.065686575138e-01 + 5.728000000000e-10 -9.487468231529e-02 + 5.828000000000e-10 1.335246601606e-01 + 5.928000000000e-10 3.493821792388e-01 + 6.028000000000e-10 5.208575371198e-01 + 6.128000000000e-10 6.326338805716e-01 + 6.228000000000e-10 6.848108600046e-01 + 6.328000000000e-10 6.751907109187e-01 + 6.428000000000e-10 6.052214841565e-01 + 6.528000000000e-10 4.807458450129e-01 + 6.628000000000e-10 3.066111422989e-01 + 6.728000000000e-10 9.501122064621e-02 + 6.828000000000e-10 -1.334882175614e-01 + 6.928000000000e-10 -3.492660352924e-01 + 7.028000000000e-10 -5.208495294585e-01 + 7.128000000000e-10 -6.325598499367e-01 + 7.228000000000e-10 -6.848421004986e-01 + 7.328000000000e-10 -6.751543080912e-01 + 7.428000000000e-10 -6.052828258645e-01 + 7.528000000000e-10 -4.807293659120e-01 + 7.628000000000e-10 -3.066794924108e-01 + 7.728000000000e-10 -9.499664108150e-02 + 7.828000000000e-10 1.334220275121e-01 + 7.928000000000e-10 3.492835018463e-01 + 8.028000000000e-10 5.207961769649e-01 + 8.128000000000e-10 6.325876998525e-01 + 8.228000000000e-10 6.848014468222e-01 + 8.328000000000e-10 6.751935994962e-01 + 8.428000000000e-10 6.052518981308e-01 + 8.528000000000e-10 4.807729857688e-01 + 8.628000000000e-10 3.066516205185e-01 + 8.728000000000e-10 9.504068447266e-02 + 8.828000000000e-10 -1.334502935734e-01 + 8.928000000000e-10 -3.492430994753e-01 + 9.028000000000e-10 -5.208246106410e-01 + 9.128000000000e-10 -6.325523513325e-01 + 9.228000000000e-10 -6.848328984481e-01 + 9.328000000000e-10 -6.751615848536e-01 + 9.428000000000e-10 -6.052856721640e-01 + 9.528000000000e-10 -4.807436971446e-01 + 9.628000000000e-10 -3.066854569150e-01 + 9.728000000000e-10 -9.501170247958e-02 + 9.828000000000e-10 1.334168358063e-01 + 9.928000000000e-10 3.492707284922e-01 + 1.000000000000e-09 4.787459694615e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/conditions.yaml new file mode 100644 index 00000000..ef25974c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 8 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_08 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/CML_core_tb.sch new file mode 100644 index 00000000..640885d9 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/CML_core_tb_9.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/CML_core_tb_9.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/CML_core_tb_9.data new file mode 100644 index 00000000..bce5cca7 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/CML_core_tb_9.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.397443385003e-01 + 1.728000000000e-10 -2.045536352810e-01 + 1.828000000000e-10 1.313863393294e-01 + 1.928000000000e-10 3.838209275603e-01 + 2.028000000000e-10 5.347375940933e-01 + 2.128000000000e-10 6.276591932156e-01 + 2.228000000000e-10 7.115621702194e-01 + 2.328000000000e-10 7.798611559065e-01 + 2.428000000000e-10 8.066497785728e-01 + 2.528000000000e-10 7.447444131165e-01 + 2.628000000000e-10 5.331798214247e-01 + 2.728000000000e-10 1.991243487460e-01 + 2.828000000000e-10 -1.352153251063e-01 + 2.928000000000e-10 -3.864762984079e-01 + 3.028000000000e-10 -5.369168929595e-01 + 3.128000000000e-10 -6.290603792866e-01 + 3.228000000000e-10 -7.126196515736e-01 + 3.328000000000e-10 -7.804415576126e-01 + 3.428000000000e-10 -8.071911048716e-01 + 3.528000000000e-10 -7.450481751688e-01 + 3.628000000000e-10 -5.336055963763e-01 + 3.728000000000e-10 -1.993198332358e-01 + 3.828000000000e-10 1.349559401886e-01 + 3.928000000000e-10 3.864112742700e-01 + 4.028000000000e-10 5.367351878370e-01 + 4.128000000000e-10 6.290489992071e-01 + 4.228000000000e-10 7.124864782962e-01 + 4.328000000000e-10 7.804750739895e-01 + 4.428000000000e-10 8.070933947437e-01 + 4.528000000000e-10 7.451033689318e-01 + 4.628000000000e-10 5.335168975820e-01 + 4.728000000000e-10 1.993807368925e-01 + 4.828000000000e-10 -1.350304895400e-01 + 4.928000000000e-10 -3.863532554681e-01 + 5.028000000000e-10 -5.368040585560e-01 + 5.128000000000e-10 -6.289909078772e-01 + 5.228000000000e-10 -7.125533448218e-01 + 5.328000000000e-10 -7.804160897110e-01 + 5.428000000000e-10 -8.071554863663e-01 + 5.528000000000e-10 -7.450422465689e-01 + 5.628000000000e-10 -5.335838460974e-01 + 5.728000000000e-10 -1.993167730115e-01 + 5.828000000000e-10 1.349726890254e-01 + 5.928000000000e-10 3.864109858256e-01 + 6.028000000000e-10 5.367479691018e-01 + 6.128000000000e-10 6.290476980129e-01 + 6.228000000000e-10 7.124950121919e-01 + 6.328000000000e-10 7.804717191606e-01 + 6.428000000000e-10 8.070994779138e-01 + 6.528000000000e-10 7.450975613250e-01 + 6.628000000000e-10 5.335259065522e-01 + 6.728000000000e-10 1.993734548210e-01 + 6.828000000000e-10 -1.350242777574e-01 + 6.928000000000e-10 -3.863605033303e-01 + 7.028000000000e-10 -5.367975294074e-01 + 7.128000000000e-10 -6.289982763959e-01 + 7.228000000000e-10 -7.125455111440e-01 + 7.328000000000e-10 -7.804238043085e-01 + 7.428000000000e-10 -8.071473680780e-01 + 7.528000000000e-10 -7.450494772754e-01 + 7.628000000000e-10 -5.335773499054e-01 + 7.728000000000e-10 -1.993230348361e-01 + 7.828000000000e-10 1.349793746975e-01 + 7.928000000000e-10 3.864055722387e-01 + 8.028000000000e-10 5.367539279153e-01 + 8.128000000000e-10 6.290427569853e-01 + 8.228000000000e-10 7.125002063044e-01 + 8.328000000000e-10 7.804668926767e-01 + 8.428000000000e-10 8.071042297758e-01 + 8.528000000000e-10 7.450922570276e-01 + 8.628000000000e-10 5.335323457616e-01 + 8.728000000000e-10 1.993673584870e-01 + 8.828000000000e-10 -1.350193573750e-01 + 8.928000000000e-10 -3.863660901230e-01 + 9.028000000000e-10 -5.367925035482e-01 + 9.128000000000e-10 -6.290039875175e-01 + 9.228000000000e-10 -7.125398122704e-01 + 9.328000000000e-10 -7.804294363608e-01 + 9.428000000000e-10 -8.071416857778e-01 + 9.528000000000e-10 -7.450548065452e-01 + 9.628000000000e-10 -5.335722743766e-01 + 9.728000000000e-10 -1.993280329539e-01 + 9.828000000000e-10 1.349843549639e-01 + 9.928000000000e-10 3.864011317450e-01 + 1.000000000000e-09 5.028020863733e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/conditions.yaml new file mode 100644 index 00000000..e334a68d --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 9 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_09 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/CML_core_tb.sch new file mode 100644 index 00000000..d3fa88ed --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/CML_core_tb_10.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/CML_core_tb_10.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/CML_core_tb_10.data new file mode 100644 index 00000000..b27b6db0 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/CML_core_tb_10.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.293189432094e-01 + 1.728000000000e-10 -2.034299929592e-01 + 1.828000000000e-10 1.254532736892e-01 + 1.928000000000e-10 3.744603520131e-01 + 2.028000000000e-10 5.220595086358e-01 + 2.128000000000e-10 6.139346231694e-01 + 2.228000000000e-10 6.977077768020e-01 + 2.328000000000e-10 7.638951530454e-01 + 2.428000000000e-10 7.881008470503e-01 + 2.528000000000e-10 7.271434956617e-01 + 2.628000000000e-10 5.227259392947e-01 + 2.728000000000e-10 1.977807095317e-01 + 2.828000000000e-10 -1.296557480667e-01 + 2.928000000000e-10 -3.774966254092e-01 + 3.028000000000e-10 -5.245506032311e-01 + 3.128000000000e-10 -6.155925798862e-01 + 3.228000000000e-10 -6.989490114600e-01 + 3.328000000000e-10 -7.646204924296e-01 + 3.428000000000e-10 -7.887093478172e-01 + 3.528000000000e-10 -7.274783648153e-01 + 3.628000000000e-10 -5.231513423786e-01 + 3.728000000000e-10 -1.979863018154e-01 + 3.828000000000e-10 1.294013660930e-01 + 3.928000000000e-10 3.774276121382e-01 + 4.028000000000e-10 5.243833105689e-01 + 4.128000000000e-10 6.155813660155e-01 + 4.228000000000e-10 6.988272077165e-01 + 4.328000000000e-10 7.646509984988e-01 + 4.428000000000e-10 7.886185007607e-01 + 4.528000000000e-10 7.275266613790e-01 + 4.628000000000e-10 5.230676681296e-01 + 4.728000000000e-10 1.980405747385e-01 + 4.828000000000e-10 -1.294713662253e-01 + 4.928000000000e-10 -3.773761496757e-01 + 5.028000000000e-10 -5.244469821379e-01 + 5.128000000000e-10 -6.155294307936e-01 + 5.228000000000e-10 -6.988887956355e-01 + 5.328000000000e-10 -7.645972449904e-01 + 5.428000000000e-10 -7.886754254295e-01 + 5.528000000000e-10 -7.274706677122e-01 + 5.628000000000e-10 -5.231295350854e-01 + 5.728000000000e-10 -1.979806299381e-01 + 5.828000000000e-10 1.294187696545e-01 + 5.928000000000e-10 3.774292707563e-01 + 6.028000000000e-10 5.243961595933e-01 + 6.128000000000e-10 6.155814701559e-01 + 6.228000000000e-10 6.988355515168e-01 + 6.328000000000e-10 7.646484599731e-01 + 6.428000000000e-10 7.886243100181e-01 + 6.528000000000e-10 7.275215569265e-01 + 6.628000000000e-10 5.230764840752e-01 + 6.728000000000e-10 1.980332799823e-01 + 6.828000000000e-10 -1.294660192513e-01 + 6.928000000000e-10 -3.773827405650e-01 + 7.028000000000e-10 -5.244413520748e-01 + 7.128000000000e-10 -6.155361997798e-01 + 7.228000000000e-10 -6.988817029216e-01 + 7.328000000000e-10 -7.646043204444e-01 + 7.428000000000e-10 -7.886680576572e-01 + 7.528000000000e-10 -7.274772120684e-01 + 7.628000000000e-10 -5.231238849653e-01 + 7.728000000000e-10 -1.979860775160e-01 + 7.828000000000e-10 1.294249237809e-01 + 7.928000000000e-10 3.774244918330e-01 + 8.028000000000e-10 5.244015690321e-01 + 8.128000000000e-10 6.155771739166e-01 + 8.228000000000e-10 6.988402156207e-01 + 8.328000000000e-10 7.646441380646e-01 + 8.428000000000e-10 7.886285892332e-01 + 8.528000000000e-10 7.275167248781e-01 + 8.628000000000e-10 5.230825202638e-01 + 8.728000000000e-10 1.980273627479e-01 + 8.828000000000e-10 -1.294617038455e-01 + 8.928000000000e-10 -3.773878907235e-01 + 9.028000000000e-10 -5.244369215984e-01 + 9.128000000000e-10 -6.155414802599e-01 + 9.228000000000e-10 -6.988765421320e-01 + 9.328000000000e-10 -7.646094975483e-01 + 9.428000000000e-10 -7.886629049186e-01 + 9.528000000000e-10 -7.274820443091e-01 + 9.628000000000e-10 -5.231193961018e-01 + 9.728000000000e-10 -1.979905037884e-01 + 9.828000000000e-10 1.294294922144e-01 + 9.928000000000e-10 3.774205018001e-01 + 1.000000000000e-09 4.912603506308e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/conditions.yaml new file mode 100644 index 00000000..9563737f --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 10 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_10 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/CML_core_tb.sch new file mode 100644 index 00000000..ea990b32 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/CML_core_tb_11.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/CML_core_tb_11.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/CML_core_tb_11.data new file mode 100644 index 00000000..799f8459 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/CML_core_tb_11.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.473675478550e-01 + 1.728000000000e-10 -2.087893101739e-01 + 1.828000000000e-10 1.310494751476e-01 + 1.928000000000e-10 3.871555645678e-01 + 2.028000000000e-10 5.437689230363e-01 + 2.128000000000e-10 6.391330299748e-01 + 2.228000000000e-10 7.213082317981e-01 + 2.328000000000e-10 7.903248370025e-01 + 2.428000000000e-10 8.187618792919e-01 + 2.528000000000e-10 7.555729663838e-01 + 2.628000000000e-10 5.409345054541e-01 + 2.728000000000e-10 2.036912835862e-01 + 2.828000000000e-10 -1.345140506878e-01 + 2.928000000000e-10 -3.895370892644e-01 + 3.028000000000e-10 -5.457400052530e-01 + 3.128000000000e-10 -6.403498057265e-01 + 3.228000000000e-10 -7.222286336937e-01 + 3.328000000000e-10 -7.907911780827e-01 + 3.428000000000e-10 -8.192361080664e-01 + 3.528000000000e-10 -7.558198978931e-01 + 3.628000000000e-10 -5.413206307136e-01 + 3.728000000000e-10 -2.038438399825e-01 + 3.828000000000e-10 1.342763346632e-01 + 3.928000000000e-10 3.894921044587e-01 + 4.028000000000e-10 5.455616788274e-01 + 4.128000000000e-10 6.403489734683e-01 + 4.228000000000e-10 7.220944352324e-01 + 4.328000000000e-10 7.908322596821e-01 + 4.428000000000e-10 8.191363162855e-01 + 4.528000000000e-10 7.558824803046e-01 + 4.628000000000e-10 5.412307821184e-01 + 4.728000000000e-10 2.039121351986e-01 + 4.828000000000e-10 -1.343528713892e-01 + 4.928000000000e-10 -3.894290190191e-01 + 5.028000000000e-10 -5.456335562174e-01 + 5.128000000000e-10 -6.402860869065e-01 + 5.228000000000e-10 -7.221652152444e-01 + 5.328000000000e-10 -7.907686614943e-01 + 5.428000000000e-10 -8.192023796026e-01 + 5.528000000000e-10 -7.558173441778e-01 + 5.628000000000e-10 -5.413004970284e-01 + 5.728000000000e-10 -2.038447386050e-01 + 5.828000000000e-10 1.342913524064e-01 + 5.928000000000e-10 3.894897157728e-01 + 6.028000000000e-10 5.455737058766e-01 + 6.128000000000e-10 6.403462778603e-01 + 6.228000000000e-10 7.221032530671e-01 + 6.328000000000e-10 7.908278354740e-01 + 6.428000000000e-10 8.191430293573e-01 + 6.528000000000e-10 7.558759446864e-01 + 6.628000000000e-10 5.412396296665e-01 + 6.728000000000e-10 2.039046702204e-01 + 6.828000000000e-10 -1.343459163903e-01 + 6.928000000000e-10 -3.894366779769e-01 + 7.028000000000e-10 -5.456262483653e-01 + 7.128000000000e-10 -6.402940065215e-01 + 7.228000000000e-10 -7.221570137640e-01 + 7.328000000000e-10 -7.907769448806e-01 + 7.428000000000e-10 -8.191938542033e-01 + 7.528000000000e-10 -7.558251320231e-01 + 7.628000000000e-10 -5.412933191298e-01 + 7.728000000000e-10 -2.038518419443e-01 + 7.828000000000e-10 1.342982918430e-01 + 7.928000000000e-10 3.894837914532e-01 + 8.028000000000e-10 5.455799247329e-01 + 8.128000000000e-10 6.403408689327e-01 + 8.228000000000e-10 7.221089932485e-01 + 8.328000000000e-10 7.908225333386e-01 + 8.428000000000e-10 8.191482615363e-01 + 8.528000000000e-10 7.558702665648e-01 + 8.628000000000e-10 5.412462517638e-01 + 8.728000000000e-10 2.038984202104e-01 + 8.828000000000e-10 -1.343404705774e-01 + 8.928000000000e-10 -3.894425333092e-01 + 9.028000000000e-10 -5.456206778041e-01 + 9.128000000000e-10 -6.403000729433e-01 + 9.228000000000e-10 -7.221509667404e-01 + 9.328000000000e-10 -7.907829740936e-01 + 9.428000000000e-10 -8.191877974471e-01 + 9.528000000000e-10 -7.558308764830e-01 + 9.628000000000e-10 -5.412878201925e-01 + 9.728000000000e-10 -2.038573569097e-01 + 9.828000000000e-10 1.343035264203e-01 + 9.928000000000e-10 3.894790170617e-01 + 1.000000000000e-09 5.100069898815e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/conditions.yaml new file mode 100644 index 00000000..0d4e1f0c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 11 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_11 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/CML_core_tb.sch new file mode 100644 index 00000000..dac359f6 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/CML_core_tb_12.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/CML_core_tb_12.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/CML_core_tb_12.data new file mode 100644 index 00000000..db4e4cce --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/CML_core_tb_12.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.049557277618e-01 + 1.728000000000e-10 -1.958466480437e-01 + 1.828000000000e-10 1.196319367700e-01 + 1.928000000000e-10 3.700244189406e-01 + 2.028000000000e-10 5.308067637731e-01 + 2.128000000000e-10 6.311299202315e-01 + 2.228000000000e-10 7.086540860403e-01 + 2.328000000000e-10 7.625529356493e-01 + 2.428000000000e-10 7.708473475114e-01 + 2.528000000000e-10 6.980446990655e-01 + 2.628000000000e-10 4.981026307256e-01 + 2.728000000000e-10 1.904449044265e-01 + 2.828000000000e-10 -1.236510258628e-01 + 2.928000000000e-10 -3.730975798774e-01 + 3.028000000000e-10 -5.333436235403e-01 + 3.128000000000e-10 -6.328422885796e-01 + 3.228000000000e-10 -7.099622515515e-01 + 3.328000000000e-10 -7.633093670089e-01 + 3.428000000000e-10 -7.714462858000e-01 + 3.528000000000e-10 -6.983543456334e-01 + 3.628000000000e-10 -4.984830350414e-01 + 3.728000000000e-10 -1.906133898346e-01 + 3.828000000000e-10 1.234140438752e-01 + 3.928000000000e-10 3.730258572177e-01 + 4.028000000000e-10 5.331667972487e-01 + 4.128000000000e-10 6.328214645319e-01 + 4.228000000000e-10 7.098336990067e-01 + 4.328000000000e-10 7.633335528675e-01 + 4.428000000000e-10 7.713603033543e-01 + 4.528000000000e-10 6.984040906368e-01 + 4.628000000000e-10 4.984087981115e-01 + 4.728000000000e-10 1.906698925098e-01 + 4.828000000000e-10 -1.234792426423e-01 + 4.928000000000e-10 -3.729733539485e-01 + 5.028000000000e-10 -5.332277682129e-01 + 5.128000000000e-10 -6.327690017914e-01 + 5.228000000000e-10 -7.098933602520e-01 + 5.328000000000e-10 -7.632805035294e-01 + 5.428000000000e-10 -7.714147767047e-01 + 5.528000000000e-10 -6.983493927960e-01 + 5.628000000000e-10 -4.984657326360e-01 + 5.728000000000e-10 -1.906133403657e-01 + 5.828000000000e-10 1.234275058651e-01 + 5.928000000000e-10 3.730246636548e-01 + 6.028000000000e-10 5.331775888699e-01 + 6.128000000000e-10 6.328197652536e-01 + 6.228000000000e-10 7.098419058182e-01 + 6.328000000000e-10 7.633301342197e-01 + 6.428000000000e-10 7.713661487972e-01 + 6.528000000000e-10 6.983986251010e-01 + 6.628000000000e-10 4.984160910452e-01 + 6.728000000000e-10 1.906635868460e-01 + 6.828000000000e-10 -1.234734747225e-01 + 6.928000000000e-10 -3.729797013887e-01 + 7.028000000000e-10 -5.332215969565e-01 + 7.128000000000e-10 -6.327757131741e-01 + 7.228000000000e-10 -7.098865351622e-01 + 7.328000000000e-10 -7.632871392149e-01 + 7.428000000000e-10 -7.714081948986e-01 + 7.528000000000e-10 -6.983555969606e-01 + 7.628000000000e-10 -4.984601688237e-01 + 7.728000000000e-10 -1.906192454806e-01 + 7.828000000000e-10 1.234332321656e-01 + 7.928000000000e-10 3.730195983111e-01 + 8.028000000000e-10 5.331826746949e-01 + 8.128000000000e-10 6.328151783475e-01 + 8.228000000000e-10 7.098466992587e-01 + 8.328000000000e-10 7.633256332241e-01 + 8.428000000000e-10 7.713705417094e-01 + 8.528000000000e-10 6.983937777920e-01 + 8.628000000000e-10 4.984215072239e-01 + 8.728000000000e-10 1.906583322627e-01 + 8.828000000000e-10 -1.234689419945e-01 + 8.928000000000e-10 -3.729845695752e-01 + 9.028000000000e-10 -5.332169477613e-01 + 9.128000000000e-10 -6.327807857544e-01 + 9.228000000000e-10 -7.098815617208e-01 + 9.328000000000e-10 -7.632920474235e-01 + 9.428000000000e-10 -7.714033753149e-01 + 9.528000000000e-10 -6.983602366678e-01 + 9.628000000000e-10 -4.984557776243e-01 + 9.728000000000e-10 -1.906237729891e-01 + 9.828000000000e-10 1.234375916302e-01 + 9.928000000000e-10 3.730155682884e-01 + 1.000000000000e-09 4.959193237551e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/conditions.yaml new file mode 100644 index 00000000..b0f21e40 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 12 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_12 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/CML_core_tb.sch new file mode 100644 index 00000000..2dec963c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/CML_core_tb_13.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/CML_core_tb_13.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/CML_core_tb_13.data new file mode 100644 index 00000000..539ab7b7 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/CML_core_tb_13.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.935497259980e-01 + 1.728000000000e-10 -1.928633983658e-01 + 1.828000000000e-10 1.160949240371e-01 + 1.928000000000e-10 3.619360857197e-01 + 2.028000000000e-10 5.185143131218e-01 + 2.128000000000e-10 6.170086772416e-01 + 2.228000000000e-10 6.939063598865e-01 + 2.328000000000e-10 7.457993341265e-01 + 2.428000000000e-10 7.520509596304e-01 + 2.528000000000e-10 6.804739824857e-01 + 2.628000000000e-10 4.870426149481e-01 + 2.728000000000e-10 1.875308246798e-01 + 2.828000000000e-10 -1.202389208092e-01 + 2.928000000000e-10 -3.651754434827e-01 + 3.028000000000e-10 -5.211918880427e-01 + 3.128000000000e-10 -6.188469707889e-01 + 3.228000000000e-10 -6.953072467312e-01 + 3.328000000000e-10 -7.466129151979e-01 + 3.428000000000e-10 -7.526565311823e-01 + 3.528000000000e-10 -6.807675409917e-01 + 3.628000000000e-10 -4.873945801883e-01 + 3.728000000000e-10 -1.876809763872e-01 + 3.828000000000e-10 1.200199744899e-01 + 3.928000000000e-10 3.651151173578e-01 + 4.028000000000e-10 5.210322421793e-01 + 4.128000000000e-10 6.188330192958e-01 + 4.228000000000e-10 6.951893716680e-01 + 4.328000000000e-10 7.466394998986e-01 + 4.428000000000e-10 7.525773069027e-01 + 4.528000000000e-10 6.808165070916e-01 + 4.628000000000e-10 4.873248087716e-01 + 4.728000000000e-10 1.877358679741e-01 + 4.828000000000e-10 -1.200819840902e-01 + 4.928000000000e-10 -3.650646413699e-01 + 5.028000000000e-10 -5.210903047408e-01 + 5.128000000000e-10 -6.187830156405e-01 + 5.228000000000e-10 -6.952462050643e-01 + 5.328000000000e-10 -7.465883056073e-01 + 5.428000000000e-10 -7.526293067125e-01 + 5.528000000000e-10 -6.807638103361e-01 + 5.628000000000e-10 -4.873795115624e-01 + 5.728000000000e-10 -1.876807689254e-01 + 5.828000000000e-10 1.200326256254e-01 + 5.928000000000e-10 3.651139754788e-01 + 6.028000000000e-10 5.210426454606e-01 + 6.128000000000e-10 6.188315227579e-01 + 6.228000000000e-10 6.951972695911e-01 + 6.328000000000e-10 7.466359762402e-01 + 6.428000000000e-10 7.525829976005e-01 + 6.528000000000e-10 6.808110143898e-01 + 6.628000000000e-10 4.873318873720e-01 + 6.728000000000e-10 1.877292356433e-01 + 6.828000000000e-10 -1.200767202072e-01 + 6.928000000000e-10 -3.650706499628e-01 + 7.028000000000e-10 -5.210847183857e-01 + 7.128000000000e-10 -6.187893543189e-01 + 7.228000000000e-10 -6.952399017798e-01 + 7.328000000000e-10 -7.465944604664e-01 + 7.428000000000e-10 -7.526232942576e-01 + 7.528000000000e-10 -6.807695137827e-01 + 7.628000000000e-10 -4.873744121182e-01 + 7.728000000000e-10 -1.876860880622e-01 + 7.828000000000e-10 1.200380835632e-01 + 7.928000000000e-10 3.651091778387e-01 + 8.028000000000e-10 5.210475167171e-01 + 8.128000000000e-10 6.188272213187e-01 + 8.228000000000e-10 6.952018279574e-01 + 8.328000000000e-10 7.466316140292e-01 + 8.428000000000e-10 7.525872528114e-01 + 8.528000000000e-10 6.808063071094e-01 + 8.628000000000e-10 4.873371355126e-01 + 8.728000000000e-10 1.877239857571e-01 + 8.828000000000e-10 -1.200724809112e-01 + 8.928000000000e-10 -3.650752679165e-01 + 9.028000000000e-10 -5.210804068397e-01 + 9.128000000000e-10 -6.187941569931e-01 + 9.228000000000e-10 -6.952352466105e-01 + 9.328000000000e-10 -7.465990720366e-01 + 9.428000000000e-10 -7.526188226163e-01 + 9.528000000000e-10 -6.807738360998e-01 + 9.628000000000e-10 -4.873703126609e-01 + 9.728000000000e-10 -1.876902725775e-01 + 9.828000000000e-10 1.200422409457e-01 + 9.928000000000e-10 3.651053453859e-01 + 1.000000000000e-09 4.847952698035e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/conditions.yaml new file mode 100644 index 00000000..4bf35c87 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 13 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_13 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/CML_core_tb.sch new file mode 100644 index 00000000..c5a0f74e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/CML_core_tb_14.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/CML_core_tb_14.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/CML_core_tb_14.data new file mode 100644 index 00000000..3796cea3 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/CML_core_tb_14.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.133282675634e-01 + 1.728000000000e-10 -2.031582081928e-01 + 1.828000000000e-10 1.144804838339e-01 + 1.928000000000e-10 3.698591588516e-01 + 2.028000000000e-10 5.380258146680e-01 + 2.128000000000e-10 6.422542980920e-01 + 2.228000000000e-10 7.191574927620e-01 + 2.328000000000e-10 7.734390216007e-01 + 2.428000000000e-10 7.823512104827e-01 + 2.528000000000e-10 7.081342613122e-01 + 2.628000000000e-10 5.065809773945e-01 + 2.728000000000e-10 1.980707374060e-01 + 2.828000000000e-10 -1.181831896095e-01 + 2.928000000000e-10 -3.727163876319e-01 + 3.028000000000e-10 -5.404428949084e-01 + 3.128000000000e-10 -6.438704305572e-01 + 3.228000000000e-10 -7.204145434420e-01 + 3.328000000000e-10 -7.741471374370e-01 + 3.428000000000e-10 -7.829309638154e-01 + 3.528000000000e-10 -7.084110972821e-01 + 3.628000000000e-10 -5.069426471107e-01 + 3.728000000000e-10 -1.982066720174e-01 + 3.828000000000e-10 1.179564926067e-01 + 3.928000000000e-10 3.726621714283e-01 + 4.028000000000e-10 5.402630628674e-01 + 4.128000000000e-10 6.438601752956e-01 + 4.228000000000e-10 7.202791375194e-01 + 4.328000000000e-10 7.741793827377e-01 + 4.428000000000e-10 7.828380754967e-01 + 4.528000000000e-10 7.084693803333e-01 + 4.628000000000e-10 5.068627667504e-01 + 4.728000000000e-10 1.982719515445e-01 + 4.828000000000e-10 -1.180275895897e-01 + 4.928000000000e-10 -3.726028735362e-01 + 5.028000000000e-10 -5.403301024789e-01 + 5.128000000000e-10 -6.438008084190e-01 + 5.228000000000e-10 -7.203455420725e-01 + 5.328000000000e-10 -7.741198297783e-01 + 5.428000000000e-10 -7.828987326701e-01 + 5.528000000000e-10 -7.084084859242e-01 + 5.628000000000e-10 -5.069251044876e-01 + 5.728000000000e-10 -1.982094732584e-01 + 5.828000000000e-10 1.179697981212e-01 + 5.928000000000e-10 3.726595322461e-01 + 6.028000000000e-10 5.402739437431e-01 + 6.128000000000e-10 6.438573026479e-01 + 6.228000000000e-10 7.202880216174e-01 + 6.328000000000e-10 7.741750830136e-01 + 6.428000000000e-10 7.828445699494e-01 + 6.528000000000e-10 7.084631989914e-01 + 6.628000000000e-10 5.068703543607e-01 + 6.728000000000e-10 1.982651160797e-01 + 6.828000000000e-10 -1.180209524418e-01 + 6.928000000000e-10 -3.726100259571e-01 + 7.028000000000e-10 -5.403229404029e-01 + 7.128000000000e-10 -6.438083895554e-01 + 7.228000000000e-10 -7.203378638829e-01 + 7.328000000000e-10 -7.741273273776e-01 + 7.428000000000e-10 -7.828912312659e-01 + 7.528000000000e-10 -7.084155733246e-01 + 7.628000000000e-10 -5.069185371484e-01 + 7.728000000000e-10 -1.982163796445e-01 + 7.828000000000e-10 1.179761824049e-01 + 7.928000000000e-10 3.726538824343e-01 + 8.028000000000e-10 5.402795684719e-01 + 8.128000000000e-10 6.438520994328e-01 + 8.228000000000e-10 7.202935093188e-01 + 8.328000000000e-10 7.741699689895e-01 + 8.428000000000e-10 7.828494756723e-01 + 8.528000000000e-10 7.084578188073e-01 + 8.628000000000e-10 5.068761410729e-01 + 8.728000000000e-10 1.982594122387e-01 + 8.828000000000e-10 -1.180157633845e-01 + 8.928000000000e-10 -3.726154653834e-01 + 9.028000000000e-10 -5.403175771302e-01 + 9.128000000000e-10 -6.438140825829e-01 + 9.228000000000e-10 -7.203322576361e-01 + 9.328000000000e-10 -7.741328388949e-01 + 9.428000000000e-10 -7.828857350121e-01 + 9.528000000000e-10 -7.084208512479e-01 + 9.628000000000e-10 -5.069134738545e-01 + 9.728000000000e-10 -1.982215797151e-01 + 9.828000000000e-10 1.179810466336e-01 + 9.928000000000e-10 3.726493985613e-01 + 1.000000000000e-09 5.010433738758e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/conditions.yaml new file mode 100644 index 00000000..63e5d64f --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 14 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_14 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/CML_core_tb.sch new file mode 100644 index 00000000..bb1e1970 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/CML_core_tb_15.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/CML_core_tb_15.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/CML_core_tb_15.data new file mode 100644 index 00000000..14866dfa --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/CML_core_tb_15.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.764925698370e-01 + 1.728000000000e-10 -1.934019301871e-01 + 1.828000000000e-10 1.027850457497e-01 + 1.928000000000e-10 3.499528968595e-01 + 2.028000000000e-10 5.186059326129e-01 + 2.128000000000e-10 6.254912177700e-01 + 2.228000000000e-10 6.994356057335e-01 + 2.328000000000e-10 7.419604616039e-01 + 2.428000000000e-10 7.366001230120e-01 + 2.528000000000e-10 6.575586826882e-01 + 2.628000000000e-10 4.703480039804e-01 + 2.728000000000e-10 1.887311437228e-01 + 2.828000000000e-10 -1.064955609068e-01 + 2.928000000000e-10 -3.530674432656e-01 + 3.028000000000e-10 -5.214103928852e-01 + 3.128000000000e-10 -6.276329249236e-01 + 3.228000000000e-10 -7.010919569869e-01 + 3.328000000000e-10 -7.428528846984e-01 + 3.428000000000e-10 -7.371070425945e-01 + 3.528000000000e-10 -6.576931102984e-01 + 3.628000000000e-10 -4.705213908487e-01 + 3.728000000000e-10 -1.887451417089e-01 + 3.828000000000e-10 1.063771169054e-01 + 3.928000000000e-10 3.530644558224e-01 + 4.028000000000e-10 5.212882945537e-01 + 4.128000000000e-10 6.276273956697e-01 + 4.228000000000e-10 7.009872983885e-01 + 4.328000000000e-10 7.428850006835e-01 + 4.428000000000e-10 7.370483197885e-01 + 4.528000000000e-10 6.577532995019e-01 + 4.628000000000e-10 4.704734311564e-01 + 4.728000000000e-10 1.888066765623e-01 + 4.828000000000e-10 -1.064251900033e-01 + 4.928000000000e-10 -3.530110058012e-01 + 5.028000000000e-10 -5.213363794122e-01 + 5.128000000000e-10 -6.275779961821e-01 + 5.228000000000e-10 -7.010367362436e-01 + 5.328000000000e-10 -7.428359180793e-01 + 5.428000000000e-10 -7.370946234404e-01 + 5.528000000000e-10 -6.577041924294e-01 + 5.628000000000e-10 -4.705211118057e-01 + 5.728000000000e-10 -1.887571402743e-01 + 5.828000000000e-10 1.063798390696e-01 + 5.928000000000e-10 3.530562876751e-01 + 6.028000000000e-10 5.212929538773e-01 + 6.128000000000e-10 6.276223718978e-01 + 6.228000000000e-10 7.009927681762e-01 + 6.328000000000e-10 7.428797293753e-01 + 6.428000000000e-10 7.370526578677e-01 + 6.528000000000e-10 6.577470674825e-01 + 6.628000000000e-10 4.704784998901e-01 + 6.728000000000e-10 1.888003575241e-01 + 6.828000000000e-10 -1.064204487643e-01 + 6.928000000000e-10 -3.530168946500e-01 + 7.028000000000e-10 -5.213312567329e-01 + 7.128000000000e-10 -6.275838929681e-01 + 7.228000000000e-10 -7.010312441909e-01 + 7.328000000000e-10 -7.428415937954e-01 + 7.428000000000e-10 -7.370893810626e-01 + 7.528000000000e-10 -6.577094889087e-01 + 7.628000000000e-10 -4.705162397262e-01 + 7.728000000000e-10 -1.887623115300e-01 + 7.828000000000e-10 1.063847513579e-01 + 7.928000000000e-10 3.530516705381e-01 + 8.028000000000e-10 5.212973590939e-01 + 8.128000000000e-10 6.276181223045e-01 + 8.228000000000e-10 7.009970786286e-01 + 8.328000000000e-10 7.428754735512e-01 + 8.428000000000e-10 7.370567570344e-01 + 8.528000000000e-10 6.577427030952e-01 + 8.628000000000e-10 4.704830497474e-01 + 8.728000000000e-10 1.887958404937e-01 + 8.828000000000e-10 -1.064163174914e-01 + 8.928000000000e-10 -3.530210908451e-01 + 9.028000000000e-10 -5.213271590930e-01 + 9.128000000000e-10 -6.275881896870e-01 + 9.228000000000e-10 -7.010270518598e-01 + 9.328000000000e-10 -7.428457852801e-01 + 9.428000000000e-10 -7.370853633469e-01 + 9.528000000000e-10 -6.577134719194e-01 + 9.628000000000e-10 -4.705123783357e-01 + 9.728000000000e-10 -1.887662540331e-01 + 9.828000000000e-10 1.063885555413e-01 + 9.928000000000e-10 3.530480784075e-01 + 1.000000000000e-09 4.814572085440e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/conditions.yaml new file mode 100644 index 00000000..caf50bc7 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 15 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_15 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/CML_core_tb.sch new file mode 100644 index 00000000..1715f9ce --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/CML_core_tb_16.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/CML_core_tb_16.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/CML_core_tb_16.data new file mode 100644 index 00000000..0b2ed0e8 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/CML_core_tb_16.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.643042367579e-01 + 1.728000000000e-10 -1.889536448800e-01 + 1.828000000000e-10 1.011027156160e-01 + 1.928000000000e-10 3.431119917378e-01 + 2.028000000000e-10 5.070519088353e-01 + 2.128000000000e-10 6.112991757094e-01 + 2.228000000000e-10 6.838020209744e-01 + 2.328000000000e-10 7.242864479517e-01 + 2.428000000000e-10 7.174167448313e-01 + 2.528000000000e-10 6.398083866093e-01 + 2.628000000000e-10 4.585166519927e-01 + 2.728000000000e-10 1.844271573483e-01 + 2.828000000000e-10 -1.048019054065e-01 + 2.928000000000e-10 -3.462317584687e-01 + 3.028000000000e-10 -5.098344721858e-01 + 3.128000000000e-10 -6.133899227371e-01 + 3.228000000000e-10 -6.853968517792e-01 + 3.328000000000e-10 -7.251059393871e-01 + 3.428000000000e-10 -7.178642533065e-01 + 3.528000000000e-10 -6.398898931720e-01 + 3.628000000000e-10 -4.586473976402e-01 + 3.728000000000e-10 -1.843989570584e-01 + 3.828000000000e-10 1.047140758745e-01 + 3.928000000000e-10 3.462576483703e-01 + 4.028000000000e-10 5.097333770466e-01 + 4.128000000000e-10 6.134023110554e-01 + 4.228000000000e-10 6.853047053340e-01 + 4.328000000000e-10 7.251501511308e-01 + 4.428000000000e-10 7.178117501486e-01 + 4.528000000000e-10 6.399568281317e-01 + 4.628000000000e-10 4.586017943502e-01 + 4.728000000000e-10 1.844658494373e-01 + 4.828000000000e-10 -1.047609876408e-01 + 4.928000000000e-10 -3.462003104379e-01 + 5.028000000000e-10 -5.097813732572e-01 + 5.128000000000e-10 -6.133504189098e-01 + 5.228000000000e-10 -6.853547602223e-01 + 5.328000000000e-10 -7.250985458364e-01 + 5.428000000000e-10 -7.178593251267e-01 + 5.528000000000e-10 -6.399055102013e-01 + 5.628000000000e-10 -4.586511534755e-01 + 5.728000000000e-10 -1.844138975484e-01 + 5.828000000000e-10 1.047143295024e-01 + 5.928000000000e-10 3.462472486482e-01 + 6.028000000000e-10 5.097369504642e-01 + 6.128000000000e-10 6.133959963639e-01 + 6.228000000000e-10 6.853096740322e-01 + 6.328000000000e-10 7.251438129543e-01 + 6.428000000000e-10 7.178160816468e-01 + 6.528000000000e-10 6.399498616471e-01 + 6.628000000000e-10 4.586069220749e-01 + 6.728000000000e-10 1.844588245643e-01 + 6.828000000000e-10 -1.047563687876e-01 + 6.928000000000e-10 -3.462063328010e-01 + 7.028000000000e-10 -5.097765086741e-01 + 7.128000000000e-10 -6.133562893232e-01 + 7.228000000000e-10 -6.853494321266e-01 + 7.328000000000e-10 -7.251041291885e-01 + 7.428000000000e-10 -7.178542203751e-01 + 7.528000000000e-10 -6.399107355976e-01 + 7.628000000000e-10 -4.586462738291e-01 + 7.728000000000e-10 -1.844190131957e-01 + 7.828000000000e-10 1.047193339603e-01 + 7.928000000000e-10 3.462424630766e-01 + 8.028000000000e-10 5.097415276109e-01 + 8.128000000000e-10 6.133915881396e-01 + 8.228000000000e-10 6.853141467162e-01 + 8.328000000000e-10 7.251393167662e-01 + 8.428000000000e-10 7.178204152808e-01 + 8.528000000000e-10 6.399452651751e-01 + 8.628000000000e-10 4.586116651576e-01 + 8.728000000000e-10 1.844540563551e-01 + 8.828000000000e-10 -1.047521530128e-01 + 8.928000000000e-10 -3.462105768541e-01 + 9.028000000000e-10 -5.097724238353e-01 + 9.128000000000e-10 -6.133605792288e-01 + 9.228000000000e-10 -6.853452315529e-01 + 9.328000000000e-10 -7.251083207568e-01 + 9.428000000000e-10 -7.178502144615e-01 + 9.528000000000e-10 -6.399147306347e-01 + 9.628000000000e-10 -4.586423495280e-01 + 9.728000000000e-10 -1.844229988419e-01 + 9.828000000000e-10 1.047232268776e-01 + 9.928000000000e-10 3.462387497741e-01 + 1.000000000000e-09 4.710752262880e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/conditions.yaml new file mode 100644 index 00000000..eb92c022 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 16 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_16 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/CML_core_tb.sch new file mode 100644 index 00000000..284b2d92 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/CML_core_tb_17.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/CML_core_tb_17.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/CML_core_tb_17.data new file mode 100644 index 00000000..a6cc3a7a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/CML_core_tb_17.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.852886719505e-01 + 1.728000000000e-10 -2.023606658915e-01 + 1.828000000000e-10 9.500407548716e-02 + 1.928000000000e-10 3.473018630854e-01 + 2.028000000000e-10 5.238539974445e-01 + 2.128000000000e-10 6.356942626004e-01 + 2.228000000000e-10 7.106560719901e-01 + 2.328000000000e-10 7.539243132234e-01 + 2.428000000000e-10 7.486736309564e-01 + 2.528000000000e-10 6.681985082542e-01 + 2.628000000000e-10 4.800908099257e-01 + 2.728000000000e-10 1.985903293754e-01 + 2.828000000000e-10 -9.801965724846e-02 + 2.928000000000e-10 -3.499456539083e-01 + 3.028000000000e-10 -5.264166063204e-01 + 3.128000000000e-10 -6.377599985577e-01 + 3.228000000000e-10 -7.123258227204e-01 + 3.328000000000e-10 -7.548386637736e-01 + 3.428000000000e-10 -7.491646196322e-01 + 3.528000000000e-10 -6.682802381819e-01 + 3.628000000000e-10 -4.802044877583e-01 + 3.728000000000e-10 -1.985554586747e-01 + 3.828000000000e-10 9.793570714349e-02 + 3.928000000000e-10 3.499705083814e-01 + 4.028000000000e-10 5.263126851869e-01 + 4.128000000000e-10 6.377668221774e-01 + 4.228000000000e-10 7.122256281615e-01 + 4.328000000000e-10 7.548735616237e-01 + 4.428000000000e-10 7.491068615558e-01 + 4.528000000000e-10 6.683430307676e-01 + 4.628000000000e-10 4.801581700098e-01 + 4.728000000000e-10 1.986186025664e-01 + 4.828000000000e-10 -9.798359332438e-02 + 4.928000000000e-10 -3.499159407959e-01 + 5.028000000000e-10 -5.263605524234e-01 + 5.128000000000e-10 -6.377159898188e-01 + 5.228000000000e-10 -7.122753084256e-01 + 5.328000000000e-10 -7.548237332543e-01 + 5.428000000000e-10 -7.491535548765e-01 + 5.528000000000e-10 -6.682936663178e-01 + 5.628000000000e-10 -4.802057994081e-01 + 5.728000000000e-10 -1.985692377738e-01 + 5.828000000000e-10 9.793754425939e-02 + 5.928000000000e-10 3.499612594703e-01 + 6.028000000000e-10 5.263165540334e-01 + 6.128000000000e-10 6.377608692392e-01 + 6.228000000000e-10 7.122309292959e-01 + 6.328000000000e-10 7.548679483739e-01 + 6.428000000000e-10 7.491113260135e-01 + 6.528000000000e-10 6.683367510584e-01 + 6.628000000000e-10 4.801631540398e-01 + 6.728000000000e-10 1.986123746205e-01 + 6.828000000000e-10 -9.797860547700e-02 + 6.928000000000e-10 -3.499219086015e-01 + 7.028000000000e-10 -5.263552271330e-01 + 7.128000000000e-10 -6.377219921840e-01 + 7.228000000000e-10 -7.122696952774e-01 + 7.328000000000e-10 -7.548295298651e-01 + 7.428000000000e-10 -7.491481908175e-01 + 7.528000000000e-10 -6.682991221138e-01 + 7.628000000000e-10 -4.802006967346e-01 + 7.728000000000e-10 -1.985745887274e-01 + 7.828000000000e-10 9.794256695295e-02 + 7.928000000000e-10 3.499565849765e-01 + 8.028000000000e-10 5.263210489698e-01 + 8.128000000000e-10 6.377564579322e-01 + 8.228000000000e-10 7.122353719246e-01 + 8.328000000000e-10 7.548635649926e-01 + 8.428000000000e-10 7.491155123701e-01 + 8.528000000000e-10 6.683323549155e-01 + 8.628000000000e-10 4.801676539865e-01 + 8.728000000000e-10 1.986078923136e-01 + 8.828000000000e-10 -9.797434132867e-02 + 8.928000000000e-10 -3.499261582655e-01 + 9.028000000000e-10 -5.263510069851e-01 + 9.128000000000e-10 -6.377263524571e-01 + 9.228000000000e-10 -7.122654282965e-01 + 9.328000000000e-10 -7.548337908470e-01 + 9.428000000000e-10 -7.491440991364e-01 + 9.528000000000e-10 -6.683032069827e-01 + 9.628000000000e-10 -4.801967157057e-01 + 9.728000000000e-10 -1.985786291727e-01 + 9.828000000000e-10 9.794644208879e-02 + 9.928000000000e-10 3.499529545785e-01 + 1.000000000000e-09 4.843355885316e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/conditions.yaml new file mode 100644 index 00000000..c082f4cc --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 17 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_17 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/CML_core_tb.sch new file mode 100644 index 00000000..aeaacc11 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/CML_core_tb_18.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/CML_core_tb_18.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/CML_core_tb_18.data new file mode 100644 index 00000000..a490208f --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/CML_core_tb_18.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.747244840755e-01 + 1.728000000000e-10 2.031348680811e-01 + 1.828000000000e-10 -1.640358346053e-01 + 1.928000000000e-10 -4.121983890365e-01 + 2.028000000000e-10 -5.403960481430e-01 + 2.128000000000e-10 -6.175267008304e-01 + 2.228000000000e-10 -7.185181164841e-01 + 2.328000000000e-10 -8.111835866476e-01 + 2.428000000000e-10 -8.505757111821e-01 + 2.528000000000e-10 -7.941523888433e-01 + 2.628000000000e-10 -5.697557803605e-01 + 2.728000000000e-10 -1.993901761575e-01 + 2.828000000000e-10 1.667454340744e-01 + 2.928000000000e-10 4.143424459307e-01 + 3.028000000000e-10 5.421310172268e-01 + 3.128000000000e-10 6.189024162340e-01 + 3.228000000000e-10 7.194369498053e-01 + 3.328000000000e-10 8.117600127730e-01 + 3.428000000000e-10 8.508336653308e-01 + 3.528000000000e-10 7.942656656210e-01 + 3.628000000000e-10 5.697751550033e-01 + 3.728000000000e-10 1.994135726672e-01 + 3.828000000000e-10 -1.667386419247e-01 + 3.928000000000e-10 -4.143148464313e-01 + 4.028000000000e-10 -5.421262038320e-01 + 4.128000000000e-10 -6.188832903749e-01 + 4.228000000000e-10 -7.194346712496e-01 + 4.328000000000e-10 -8.117442314974e-01 + 4.428000000000e-10 -8.508381039982e-01 + 4.528000000000e-10 -7.942559196005e-01 + 4.628000000000e-10 -5.697859373045e-01 + 4.728000000000e-10 -1.993975895742e-01 + 4.828000000000e-10 1.667322235508e-01 + 4.928000000000e-10 4.143280512458e-01 + 5.028000000000e-10 5.421195877560e-01 + 5.128000000000e-10 6.188968586913e-01 + 5.228000000000e-10 7.194236426239e-01 + 5.328000000000e-10 8.117540342679e-01 + 5.428000000000e-10 8.508266757829e-01 + 5.528000000000e-10 7.942652287581e-01 + 5.628000000000e-10 5.697754142960e-01 + 5.728000000000e-10 1.994033695962e-01 + 5.828000000000e-10 -1.667424669503e-01 + 5.928000000000e-10 -4.143216611718e-01 + 6.028000000000e-10 -5.421291067647e-01 + 6.128000000000e-10 -6.188909595847e-01 + 6.228000000000e-10 -7.194310352535e-01 + 6.328000000000e-10 -8.117467342350e-01 + 6.428000000000e-10 -8.508333273630e-01 + 6.528000000000e-10 -7.942577903765e-01 + 6.628000000000e-10 -5.697836419865e-01 + 6.728000000000e-10 -1.993929431350e-01 + 6.828000000000e-10 1.667361734044e-01 + 6.928000000000e-10 4.143307053824e-01 + 7.028000000000e-10 5.421226813799e-01 + 7.128000000000e-10 6.189001833416e-01 + 7.228000000000e-10 7.194227358993e-01 + 7.328000000000e-10 8.117542266055e-01 + 7.428000000000e-10 8.508251070290e-01 + 7.528000000000e-10 7.942649966766e-01 + 7.628000000000e-10 5.697756363247e-01 + 7.728000000000e-10 1.993989977467e-01 + 7.828000000000e-10 -1.667434615441e-01 + 7.928000000000e-10 -4.143248161746e-01 + 8.028000000000e-10 -5.421295610790e-01 + 8.128000000000e-10 -6.188945163710e-01 + 8.228000000000e-10 -7.194289229798e-01 + 8.328000000000e-10 -8.117483413843e-01 + 8.428000000000e-10 -8.508308647988e-01 + 8.528000000000e-10 -7.942590780393e-01 + 8.628000000000e-10 -5.697822347435e-01 + 8.728000000000e-10 -1.993917000580e-01 + 8.828000000000e-10 1.667380255271e-01 + 8.928000000000e-10 4.143314131245e-01 + 9.028000000000e-10 5.421241182927e-01 + 9.128000000000e-10 6.189011822630e-01 + 9.228000000000e-10 7.194226089303e-01 + 9.328000000000e-10 8.117540798381e-01 + 9.428000000000e-10 8.508247577722e-01 + 9.528000000000e-10 7.942646412255e-01 + 9.628000000000e-10 5.697760282588e-01 + 9.728000000000e-10 1.993969946892e-01 + 9.828000000000e-10 -1.667434796269e-01 + 9.928000000000e-10 -4.143264352220e-01 + 1.000000000000e-09 -5.150731751424e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/conditions.yaml new file mode 100644 index 00000000..4f9367fd --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 18 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_18 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/CML_core_tb.sch new file mode 100644 index 00000000..88f38d6f --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/CML_core_tb_19.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/CML_core_tb_19.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/CML_core_tb_19.data new file mode 100644 index 00000000..c81efdd4 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/CML_core_tb_19.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.707988120441e-01 + 1.728000000000e-10 2.050562196689e-01 + 1.828000000000e-10 -1.568083182045e-01 + 1.928000000000e-10 -4.020696229917e-01 + 2.028000000000e-10 -5.270997867267e-01 + 2.128000000000e-10 -6.030122328411e-01 + 2.228000000000e-10 -7.060404303518e-01 + 2.328000000000e-10 -7.977729548420e-01 + 2.428000000000e-10 -8.357087979117e-01 + 2.528000000000e-10 -7.823438332914e-01 + 2.628000000000e-10 -5.641015035384e-01 + 2.728000000000e-10 -1.996979729386e-01 + 2.828000000000e-10 1.605395493176e-01 + 2.928000000000e-10 4.049019788065e-01 + 3.028000000000e-10 5.293349858313e-01 + 3.128000000000e-10 6.047755538782e-01 + 3.228000000000e-10 7.072083327509e-01 + 3.328000000000e-10 7.985177439850e-01 + 3.428000000000e-10 8.360745897587e-01 + 3.528000000000e-10 7.825643018760e-01 + 3.628000000000e-10 5.642043953033e-01 + 3.728000000000e-10 1.998026918934e-01 + 3.828000000000e-10 -1.604858693758e-01 + 3.928000000000e-10 -4.048299316522e-01 + 4.028000000000e-10 -5.293048172022e-01 + 4.128000000000e-10 -6.047267733392e-01 + 4.228000000000e-10 -7.071932602489e-01 + 4.328000000000e-10 -7.984844304352e-01 + 4.428000000000e-10 -8.360789616419e-01 + 4.528000000000e-10 -7.825446968704e-01 + 4.628000000000e-10 -5.642205462461e-01 + 4.728000000000e-10 -1.997755595675e-01 + 4.828000000000e-10 1.604765943145e-01 + 4.928000000000e-10 4.048512691297e-01 + 5.028000000000e-10 5.292953655278e-01 + 5.128000000000e-10 6.047472585148e-01 + 5.228000000000e-10 7.071773753770e-01 + 5.328000000000e-10 7.985008103891e-01 + 5.428000000000e-10 8.360621173440e-01 + 5.528000000000e-10 7.825604957102e-01 + 5.628000000000e-10 5.642042607215e-01 + 5.728000000000e-10 1.997857962408e-01 + 5.828000000000e-10 -1.604926267251e-01 + 5.928000000000e-10 -4.048407079574e-01 + 6.028000000000e-10 -5.293103597207e-01 + 6.128000000000e-10 -6.047374718328e-01 + 6.228000000000e-10 -7.071895246392e-01 + 6.328000000000e-10 -7.984887922220e-01 + 6.428000000000e-10 -8.360735876941e-01 + 6.528000000000e-10 -7.825482507809e-01 + 6.628000000000e-10 -5.642183473935e-01 + 6.728000000000e-10 -1.997692084041e-01 + 6.828000000000e-10 1.604823178167e-01 + 6.928000000000e-10 4.048548923991e-01 + 7.028000000000e-10 5.293001528657e-01 + 7.128000000000e-10 6.047514904939e-01 + 7.228000000000e-10 7.071767775245e-01 + 7.328000000000e-10 7.985010886851e-01 + 7.428000000000e-10 8.360609061049e-01 + 7.528000000000e-10 7.825602391468e-01 + 7.628000000000e-10 5.642057995328e-01 + 7.728000000000e-10 1.997793833692e-01 + 7.828000000000e-10 -1.604939026989e-01 + 7.928000000000e-10 -4.048452814924e-01 + 8.028000000000e-10 -5.293110935611e-01 + 8.128000000000e-10 -6.047422910037e-01 + 8.228000000000e-10 -7.071868576548e-01 + 8.328000000000e-10 -7.984914661054e-01 + 8.428000000000e-10 -8.360704549701e-01 + 8.528000000000e-10 -7.825505283213e-01 + 8.628000000000e-10 -5.642168951425e-01 + 8.728000000000e-10 -1.997675829904e-01 + 8.828000000000e-10 1.604850893678e-01 + 8.928000000000e-10 4.048557791622e-01 + 9.028000000000e-10 5.293024006551e-01 + 9.128000000000e-10 6.047526676189e-01 + 9.228000000000e-10 7.071769813422e-01 + 9.328000000000e-10 7.985009240492e-01 + 9.428000000000e-10 8.360608174754e-01 + 9.528000000000e-10 7.825597625659e-01 + 9.628000000000e-10 5.642070937767e-01 + 9.728000000000e-10 1.997763618165e-01 + 9.828000000000e-10 -1.604938267743e-01 + 9.928000000000e-10 -4.048476936234e-01 + 1.000000000000e-09 -5.033604123532e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/conditions.yaml new file mode 100644 index 00000000..ccf6e277 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 19 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_19 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/CML_core_tb.sch new file mode 100644 index 00000000..ac357f76 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/CML_core_tb_20.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/CML_core_tb_20.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/CML_core_tb_20.data new file mode 100644 index 00000000..1c245490 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/CML_core_tb_20.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.787258342535e-01 + 1.728000000000e-10 2.078017915173e-01 + 1.828000000000e-10 -1.622649468476e-01 + 1.928000000000e-10 -4.154784848215e-01 + 2.028000000000e-10 -5.503628241592e-01 + 2.128000000000e-10 -6.299323770996e-01 + 2.228000000000e-10 -7.254942323191e-01 + 2.328000000000e-10 -8.176578932008e-01 + 2.428000000000e-10 -8.600222409410e-01 + 2.528000000000e-10 -8.019093712422e-01 + 2.628000000000e-10 -5.756893793886e-01 + 2.728000000000e-10 -2.057606209176e-01 + 2.828000000000e-10 1.639197157563e-01 + 2.928000000000e-10 4.168841038800e-01 + 3.028000000000e-10 5.515424627408e-01 + 3.128000000000e-10 6.308336221978e-01 + 3.228000000000e-10 7.261208861559e-01 + 3.328000000000e-10 8.180354096547e-01 + 3.428000000000e-10 8.601969327831e-01 + 3.528000000000e-10 8.019450515145e-01 + 3.628000000000e-10 5.756806762770e-01 + 3.728000000000e-10 2.057351595047e-01 + 3.828000000000e-10 -1.639234125928e-01 + 3.928000000000e-10 -4.168916689126e-01 + 4.028000000000e-10 -5.515399403849e-01 + 4.128000000000e-10 -6.308421950132e-01 + 4.228000000000e-10 -7.261151591955e-01 + 4.328000000000e-10 -8.180409257235e-01 + 4.428000000000e-10 -8.601903753395e-01 + 4.528000000000e-10 -8.019506024478e-01 + 4.628000000000e-10 -5.756757498169e-01 + 4.728000000000e-10 -2.057370812604e-01 + 4.828000000000e-10 1.639284669376e-01 + 4.928000000000e-10 4.168895758092e-01 + 5.028000000000e-10 5.515444733402e-01 + 5.128000000000e-10 6.308408648378e-01 + 5.228000000000e-10 7.261175778597e-01 + 5.328000000000e-10 8.180376908128e-01 + 5.428000000000e-10 8.601923700088e-01 + 5.528000000000e-10 8.019470527506e-01 + 5.628000000000e-10 5.756789455973e-01 + 5.728000000000e-10 2.057316537746e-01 + 5.828000000000e-10 -1.639258645561e-01 + 5.928000000000e-10 -4.168940343704e-01 + 6.028000000000e-10 -5.515416140289e-01 + 6.128000000000e-10 -6.308456056710e-01 + 6.228000000000e-10 -7.261132930683e-01 + 6.328000000000e-10 -8.180415890619e-01 + 6.428000000000e-10 -8.601877913845e-01 + 6.528000000000e-10 -8.019507055326e-01 + 6.628000000000e-10 -5.756748223597e-01 + 6.728000000000e-10 -2.057339330851e-01 + 6.828000000000e-10 1.639294327626e-01 + 6.928000000000e-10 4.168918933453e-01 + 7.028000000000e-10 5.515448110547e-01 + 7.128000000000e-10 6.308438013344e-01 + 7.228000000000e-10 7.261156471026e-01 + 7.328000000000e-10 8.180389426729e-01 + 7.428000000000e-10 8.601899882644e-01 + 7.528000000000e-10 8.019478991926e-01 + 7.628000000000e-10 5.756775488816e-01 + 7.728000000000e-10 2.057303912126e-01 + 7.828000000000e-10 -1.639270777727e-01 + 7.928000000000e-10 -4.168949361223e-01 + 8.028000000000e-10 -5.515423789761e-01 + 8.128000000000e-10 -6.308469511551e-01 + 8.228000000000e-10 -7.261125857103e-01 + 8.328000000000e-10 -8.180418172660e-01 + 8.428000000000e-10 -8.601868536640e-01 + 8.528000000000e-10 -8.019506539776e-01 + 8.628000000000e-10 -5.756745040863e-01 + 8.728000000000e-10 -2.057325997968e-01 + 8.828000000000e-10 1.639296206310e-01 + 8.928000000000e-10 4.168929982528e-01 + 9.028000000000e-10 5.515447184418e-01 + 9.128000000000e-10 6.308451859194e-01 + 9.228000000000e-10 7.261146020976e-01 + 9.328000000000e-10 8.180396416883e-01 + 9.428000000000e-10 8.601888436252e-01 + 9.528000000000e-10 8.019484098509e-01 + 9.628000000000e-10 5.756767177581e-01 + 9.728000000000e-10 2.057300830000e-01 + 9.828000000000e-10 -1.639276725752e-01 + 9.928000000000e-10 -4.168951851932e-01 + 1.000000000000e-09 -5.223291820834e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/conditions.yaml new file mode 100644 index 00000000..35ee6f6e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 20 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_20 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/CML_core_tb.sch new file mode 100644 index 00000000..2466a20b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/CML_core_tb_21.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/CML_core_tb_21.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/CML_core_tb_21.data new file mode 100644 index 00000000..18e4ab76 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/CML_core_tb_21.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.573501255338e-01 + 1.728000000000e-10 2.075317226020e-01 + 1.828000000000e-10 -1.459750710281e-01 + 1.928000000000e-10 -3.981214724862e-01 + 2.028000000000e-10 -5.378144391949e-01 + 2.128000000000e-10 -6.222071778117e-01 + 2.228000000000e-10 -7.144656924256e-01 + 2.328000000000e-10 -7.957588475985e-01 + 2.428000000000e-10 -8.259944634024e-01 + 2.528000000000e-10 -7.639419051023e-01 + 2.628000000000e-10 -5.499582313836e-01 + 2.728000000000e-10 -2.015822705639e-01 + 2.828000000000e-10 1.503547149045e-01 + 2.928000000000e-10 4.016725871885e-01 + 3.028000000000e-10 5.406529598204e-01 + 3.128000000000e-10 6.244429748136e-01 + 3.228000000000e-10 7.159703736038e-01 + 3.328000000000e-10 7.967442303644e-01 + 3.428000000000e-10 8.264465978318e-01 + 3.528000000000e-10 7.642028659706e-01 + 3.628000000000e-10 5.500598536778e-01 + 3.728000000000e-10 2.017167809837e-01 + 3.828000000000e-10 -1.502994036069e-01 + 3.928000000000e-10 -4.015772846450e-01 + 4.028000000000e-10 -5.406194194588e-01 + 4.128000000000e-10 -6.243734224937e-01 + 4.228000000000e-10 -7.159615996115e-01 + 4.328000000000e-10 -7.966982014285e-01 + 4.428000000000e-10 -8.264613960108e-01 + 4.528000000000e-10 -7.641725666632e-01 + 4.628000000000e-10 -5.500862997678e-01 + 4.728000000000e-10 -2.016863380222e-01 + 4.828000000000e-10 1.502773228882e-01 + 4.928000000000e-10 4.016041852700e-01 + 5.028000000000e-10 5.405973091915e-01 + 5.128000000000e-10 6.243995261147e-01 + 5.228000000000e-10 7.159367954986e-01 + 5.328000000000e-10 7.967237369409e-01 + 5.428000000000e-10 8.264362767952e-01 + 5.528000000000e-10 7.641972989051e-01 + 5.628000000000e-10 5.500612169320e-01 + 5.728000000000e-10 2.017098008556e-01 + 5.828000000000e-10 -1.502994747055e-01 + 5.928000000000e-10 -4.015836624598e-01 + 6.028000000000e-10 -5.406181129288e-01 + 6.128000000000e-10 -6.243799299897e-01 + 6.228000000000e-10 -7.159574419629e-01 + 6.328000000000e-10 -7.967036557443e-01 + 6.428000000000e-10 -8.264562124237e-01 + 6.528000000000e-10 -7.641768324224e-01 + 6.628000000000e-10 -5.500832409355e-01 + 6.728000000000e-10 -2.016878835950e-01 + 6.828000000000e-10 1.502805147690e-01 + 6.928000000000e-10 4.016033959904e-01 + 7.028000000000e-10 5.405993862387e-01 + 7.128000000000e-10 6.243994053085e-01 + 7.228000000000e-10 7.159375001908e-01 + 7.328000000000e-10 7.967227911979e-01 + 7.428000000000e-10 8.264369695557e-01 + 7.528000000000e-10 7.641957504676e-01 + 7.628000000000e-10 5.500638388088e-01 + 7.728000000000e-10 2.017065810230e-01 + 7.828000000000e-10 -1.502977706940e-01 + 7.928000000000e-10 -4.015868518817e-01 + 8.028000000000e-10 -5.406159021220e-01 + 8.128000000000e-10 -6.243834226598e-01 + 8.228000000000e-10 -7.159542700032e-01 + 8.328000000000e-10 -7.967069113699e-01 + 8.428000000000e-10 -8.264528986398e-01 + 8.528000000000e-10 -7.641796598358e-01 + 8.628000000000e-10 -5.500810114131e-01 + 8.728000000000e-10 -2.016895461018e-01 + 8.828000000000e-10 1.502827695530e-01 + 8.928000000000e-10 4.016022282365e-01 + 9.028000000000e-10 5.406011687872e-01 + 9.128000000000e-10 6.243986267121e-01 + 9.228000000000e-10 7.159387803359e-01 + 9.328000000000e-10 7.967217157361e-01 + 9.428000000000e-10 8.264380732408e-01 + 9.528000000000e-10 7.641943142595e-01 + 9.628000000000e-10 5.500658668163e-01 + 9.728000000000e-10 2.017043552905e-01 + 9.828000000000e-10 -1.502962363926e-01 + 9.928000000000e-10 -4.015890294030e-01 + 1.000000000000e-09 -5.098048460363e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/conditions.yaml new file mode 100644 index 00000000..f6ff0f82 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 21 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_21 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/CML_core_tb.sch new file mode 100644 index 00000000..69f686b2 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/CML_core_tb_22.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/CML_core_tb_22.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/CML_core_tb_22.data new file mode 100644 index 00000000..1d781434 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/CML_core_tb_22.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.539342660958e-01 + 1.728000000000e-10 2.092356958505e-01 + 1.828000000000e-10 -1.399589402437e-01 + 1.928000000000e-10 -3.887664135754e-01 + 2.028000000000e-10 -5.242925922458e-01 + 2.128000000000e-10 -6.069418933180e-01 + 2.228000000000e-10 -7.009344183633e-01 + 2.328000000000e-10 -7.819154973681e-01 + 2.428000000000e-10 -8.115011787752e-01 + 2.528000000000e-10 -7.528782125237e-01 + 2.628000000000e-10 -5.449881732974e-01 + 2.728000000000e-10 -2.018085669996e-01 + 2.828000000000e-10 1.453371294429e-01 + 2.928000000000e-10 3.930046196046e-01 + 3.028000000000e-10 5.275952350978e-01 + 3.128000000000e-10 6.094983923497e-01 + 3.228000000000e-10 7.026430994561e-01 + 3.328000000000e-10 7.830459101342e-01 + 3.428000000000e-10 8.120643124066e-01 + 3.528000000000e-10 7.532542388222e-01 + 3.628000000000e-10 5.451889146656e-01 + 3.728000000000e-10 2.020380161925e-01 + 3.828000000000e-10 -1.452202245966e-01 + 3.928000000000e-10 -3.928550396378e-01 + 4.028000000000e-10 -5.275272038156e-01 + 4.128000000000e-10 -6.093963788491e-01 + 4.228000000000e-10 -7.026185076638e-01 + 4.328000000000e-10 -7.829822343256e-01 + 4.428000000000e-10 -8.120760322925e-01 + 4.528000000000e-10 -7.532137307257e-01 + 4.628000000000e-10 -5.452168897181e-01 + 4.728000000000e-10 -2.019975663161e-01 + 4.828000000000e-10 1.451970774770e-01 + 4.928000000000e-10 3.928886426712e-01 + 5.028000000000e-10 5.275035947470e-01 + 5.128000000000e-10 6.094279224341e-01 + 5.228000000000e-10 7.025906785817e-01 + 5.328000000000e-10 7.830125874729e-01 + 5.428000000000e-10 8.120474298427e-01 + 5.528000000000e-10 7.532431353399e-01 + 5.628000000000e-10 5.451877569897e-01 + 5.728000000000e-10 2.020249691554e-01 + 5.828000000000e-10 -1.452230860448e-01 + 5.928000000000e-10 -3.928644448798e-01 + 6.028000000000e-10 -5.275279936983e-01 + 6.128000000000e-10 -6.094050782075e-01 + 6.228000000000e-10 -7.026148963104e-01 + 6.328000000000e-10 -7.829886841749e-01 + 6.428000000000e-10 -8.120708569069e-01 + 6.528000000000e-10 -7.532187757848e-01 + 6.628000000000e-10 -5.452139572157e-01 + 6.728000000000e-10 -2.019983459359e-01 + 6.828000000000e-10 1.452010057661e-01 + 6.928000000000e-10 3.928879698340e-01 + 7.028000000000e-10 5.275064479083e-01 + 7.128000000000e-10 6.094280990005e-01 + 7.228000000000e-10 7.025917879356e-01 + 7.328000000000e-10 7.830113821989e-01 + 7.428000000000e-10 8.120485256383e-01 + 7.528000000000e-10 7.532412367972e-01 + 7.628000000000e-10 5.451912171970e-01 + 7.728000000000e-10 2.020204953427e-01 + 7.828000000000e-10 -1.452213117731e-01 + 7.928000000000e-10 -3.928683087954e-01 + 8.028000000000e-10 -5.275257546899e-01 + 8.128000000000e-10 -6.094092443435e-01 + 8.228000000000e-10 -7.026114152643e-01 + 8.328000000000e-10 -7.829924127838e-01 + 8.428000000000e-10 -8.120671951794e-01 + 8.528000000000e-10 -7.532220607865e-01 + 8.628000000000e-10 -5.452116115033e-01 + 8.728000000000e-10 -2.019999026100e-01 + 8.828000000000e-10 1.452037268076e-01 + 8.928000000000e-10 3.928866787285e-01 + 9.028000000000e-10 5.275085793907e-01 + 9.128000000000e-10 6.094272189130e-01 + 9.228000000000e-10 7.025932924679e-01 + 9.328000000000e-10 7.830100596429e-01 + 9.428000000000e-10 8.120498613680e-01 + 9.528000000000e-10 7.532395420815e-01 + 9.628000000000e-10 5.451937902396e-01 + 9.728000000000e-10 2.020175827840e-01 + 9.828000000000e-10 -1.452196157349e-01 + 9.928000000000e-10 -3.928709378362e-01 + 1.000000000000e-09 -4.979849828547e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/conditions.yaml new file mode 100644 index 00000000..97923d2c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 22 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_22 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/CML_core_tb.sch new file mode 100644 index 00000000..2c076fbe --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/CML_core_tb_23.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/CML_core_tb_23.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/CML_core_tb_23.data new file mode 100644 index 00000000..90cde859 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/CML_core_tb_23.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.609932954578e-01 + 1.728000000000e-10 2.135803595156e-01 + 1.828000000000e-10 -1.406795105233e-01 + 1.928000000000e-10 -3.985242549940e-01 + 2.028000000000e-10 -5.467902250199e-01 + 2.128000000000e-10 -6.349197102047e-01 + 2.228000000000e-10 -7.225601155251e-01 + 2.328000000000e-10 -8.022847270862e-01 + 2.428000000000e-10 -8.341174139963e-01 + 2.528000000000e-10 -7.703472968512e-01 + 2.628000000000e-10 -5.554753546701e-01 + 2.728000000000e-10 -2.092959847468e-01 + 2.828000000000e-10 1.439827087572e-01 + 2.928000000000e-10 4.013409764958e-01 + 3.028000000000e-10 5.491103575815e-01 + 3.128000000000e-10 6.367736171292e-01 + 3.228000000000e-10 7.238327114492e-01 + 3.328000000000e-10 8.031250424519e-01 + 3.428000000000e-10 8.344898451807e-01 + 3.528000000000e-10 7.705288945959e-01 + 3.628000000000e-10 5.555161552443e-01 + 3.728000000000e-10 2.093659332353e-01 + 3.828000000000e-10 -1.439645708780e-01 + 3.928000000000e-10 -4.012864243472e-01 + 4.028000000000e-10 -5.490981432908e-01 + 4.128000000000e-10 -6.367310776976e-01 + 4.228000000000e-10 -7.238327358891e-01 + 4.328000000000e-10 -8.030945225544e-01 + 4.428000000000e-10 -8.345032641498e-01 + 4.528000000000e-10 -7.705076814073e-01 + 4.628000000000e-10 -5.555368200040e-01 + 4.728000000000e-10 -2.093450233605e-01 + 4.828000000000e-10 1.439466188317e-01 + 4.928000000000e-10 4.013057839415e-01 + 5.028000000000e-10 5.490801810840e-01 + 5.128000000000e-10 6.367502973173e-01 + 5.228000000000e-10 7.238134370273e-01 + 5.328000000000e-10 8.031142213064e-01 + 5.428000000000e-10 8.344836920712e-01 + 5.528000000000e-10 7.705267055681e-01 + 5.628000000000e-10 5.555176728822e-01 + 5.728000000000e-10 2.093634169255e-01 + 5.828000000000e-10 -1.439633135714e-01 + 5.928000000000e-10 -4.012903718012e-01 + 6.028000000000e-10 -5.490957661747e-01 + 6.128000000000e-10 -6.367354259501e-01 + 6.228000000000e-10 -7.238289911799e-01 + 6.328000000000e-10 -8.030991093312e-01 + 6.428000000000e-10 -8.344987261970e-01 + 6.528000000000e-10 -7.705113506628e-01 + 6.628000000000e-10 -5.555339922038e-01 + 6.728000000000e-10 -2.093472747698e-01 + 6.828000000000e-10 1.439488143392e-01 + 6.928000000000e-10 4.013051006454e-01 + 7.028000000000e-10 5.490813620131e-01 + 7.128000000000e-10 6.367501696447e-01 + 7.228000000000e-10 7.238138408460e-01 + 7.328000000000e-10 8.031138234310e-01 + 7.428000000000e-10 8.344840024625e-01 + 7.528000000000e-10 7.705257750612e-01 + 7.628000000000e-10 5.555193682491e-01 + 7.728000000000e-10 2.093616154732e-01 + 7.828000000000e-10 -1.439618235384e-01 + 7.928000000000e-10 -4.012927107128e-01 + 8.028000000000e-10 -5.490937463184e-01 + 8.128000000000e-10 -6.367380404539e-01 + 8.228000000000e-10 -7.238264478501e-01 + 8.328000000000e-10 -8.031018435980e-01 + 8.428000000000e-10 -8.344959687989e-01 + 8.528000000000e-10 -7.705137100306e-01 + 8.628000000000e-10 -5.555321098787e-01 + 8.728000000000e-10 -2.093489927492e-01 + 8.828000000000e-10 1.439504269532e-01 + 8.928000000000e-10 4.013041525432e-01 + 9.028000000000e-10 5.490824887692e-01 + 9.128000000000e-10 6.367494882502e-01 + 9.228000000000e-10 7.238146944607e-01 + 9.328000000000e-10 8.031131051507e-01 + 9.428000000000e-10 8.344847147049e-01 + 9.528000000000e-10 7.705248067970e-01 + 9.628000000000e-10 5.555207970002e-01 + 9.728000000000e-10 2.093601819839e-01 + 9.828000000000e-10 -1.439605753448e-01 + 9.928000000000e-10 -4.012943342775e-01 + 1.000000000000e-09 -5.158218772706e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/conditions.yaml new file mode 100644 index 00000000..7cb02bec --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 23 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_23 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/CML_core_tb.sch new file mode 100644 index 00000000..537eb2a6 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/CML_core_tb_24.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/CML_core_tb_24.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/CML_core_tb_24.data new file mode 100644 index 00000000..d8c2e7bc --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/CML_core_tb_24.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.405028365217e-01 + 1.728000000000e-10 2.142897527484e-01 + 1.828000000000e-10 -1.231353412434e-01 + 1.928000000000e-10 -3.782847553257e-01 + 2.028000000000e-10 -5.290944707244e-01 + 2.128000000000e-10 -6.207435846591e-01 + 2.228000000000e-10 -7.069850917784e-01 + 2.328000000000e-10 -7.774395392863e-01 + 2.428000000000e-10 -7.982183108700e-01 + 2.528000000000e-10 -7.327456021571e-01 + 2.628000000000e-10 -5.310063164445e-01 + 2.728000000000e-10 -2.063297175293e-01 + 2.828000000000e-10 1.293176468138e-01 + 2.928000000000e-10 3.835270490977e-01 + 3.028000000000e-10 5.333180257023e-01 + 3.128000000000e-10 6.240938619865e-01 + 3.228000000000e-10 7.092802493907e-01 + 3.328000000000e-10 7.789607942300e-01 + 3.428000000000e-10 7.989234313230e-01 + 3.528000000000e-10 7.331763415294e-01 + 3.628000000000e-10 5.312045040772e-01 + 3.728000000000e-10 2.065847902134e-01 + 3.828000000000e-10 -1.291958906021e-01 + 3.928000000000e-10 -3.833411283085e-01 + 4.028000000000e-10 -5.332389173297e-01 + 4.128000000000e-10 -6.239588708494e-01 + 4.228000000000e-10 -7.092541595355e-01 + 4.328000000000e-10 -7.788766619073e-01 + 4.428000000000e-10 -7.989439817890e-01 + 4.528000000000e-10 -7.331237184970e-01 + 4.628000000000e-10 -5.312431858800e-01 + 4.728000000000e-10 -2.065354720445e-01 + 4.828000000000e-10 1.291604530900e-01 + 4.928000000000e-10 3.833851407049e-01 + 5.028000000000e-10 5.332033925163e-01 + 5.128000000000e-10 6.240009303805e-01 + 5.228000000000e-10 7.092156296740e-01 + 5.328000000000e-10 7.789178950697e-01 + 5.428000000000e-10 7.989050835748e-01 + 5.528000000000e-10 7.331635644704e-01 + 5.628000000000e-10 5.312038508238e-01 + 5.728000000000e-10 2.065745538625e-01 + 5.828000000000e-10 -1.291960705945e-01 + 5.928000000000e-10 -3.833509278886e-01 + 6.028000000000e-10 -5.332368573592e-01 + 6.128000000000e-10 -6.239679712691e-01 + 6.228000000000e-10 -7.092497084655e-01 + 6.328000000000e-10 -7.788845366535e-01 + 6.428000000000e-10 -7.989377629672e-01 + 6.528000000000e-10 -7.331298791234e-01 + 6.628000000000e-10 -5.312385744549e-01 + 6.728000000000e-10 -2.065399094583e-01 + 6.828000000000e-10 1.291646812353e-01 + 6.928000000000e-10 3.833822988637e-01 + 7.028000000000e-10 5.332062833028e-01 + 7.128000000000e-10 6.239988652624e-01 + 7.228000000000e-10 7.092181343784e-01 + 7.328000000000e-10 7.789155267181e-01 + 7.428000000000e-10 7.989074545455e-01 + 7.528000000000e-10 7.331605295450e-01 + 7.628000000000e-10 5.312080087648e-01 + 7.728000000000e-10 2.065705039315e-01 + 7.828000000000e-10 -1.291926212165e-01 + 7.928000000000e-10 -3.833551733065e-01 + 8.028000000000e-10 -5.332328436976e-01 + 8.128000000000e-10 -6.239725200032e-01 + 8.228000000000e-10 -7.092452956008e-01 + 8.328000000000e-10 -7.788891439389e-01 + 8.428000000000e-10 -7.989331916474e-01 + 8.528000000000e-10 -7.331340451631e-01 + 8.628000000000e-10 -5.312350772815e-01 + 8.728000000000e-10 -2.065433053799e-01 + 8.828000000000e-10 1.291679984852e-01 + 8.928000000000e-10 3.833797175156e-01 + 9.028000000000e-10 5.332088978420e-01 + 9.128000000000e-10 6.239966795455e-01 + 9.228000000000e-10 7.092206518532e-01 + 9.328000000000e-10 7.789132522577e-01 + 9.428000000000e-10 7.989096829456e-01 + 9.528000000000e-10 7.331579091452e-01 + 9.628000000000e-10 5.312112407565e-01 + 9.728000000000e-10 2.065672983353e-01 + 9.828000000000e-10 -1.291898675297e-01 + 9.928000000000e-10 -3.833583124064e-01 + 1.000000000000e-09 -4.991705375338e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/conditions.yaml new file mode 100644 index 00000000..d6c8c2d6 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 24 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_24 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/CML_core_tb.sch new file mode 100644 index 00000000..d5f3541b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/CML_core_tb_25.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/CML_core_tb_25.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/CML_core_tb_25.data new file mode 100644 index 00000000..10c03df1 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/CML_core_tb_25.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.368449571565e-01 + 1.728000000000e-10 2.154696494615e-01 + 1.828000000000e-10 -1.180750667507e-01 + 1.928000000000e-10 -3.694801437498e-01 + 2.028000000000e-10 -5.157339685643e-01 + 2.128000000000e-10 -6.051803608378e-01 + 2.228000000000e-10 -6.923688047900e-01 + 2.328000000000e-10 -7.627278516708e-01 + 2.428000000000e-10 -7.836324050269e-01 + 2.528000000000e-10 -7.217390774868e-01 + 2.628000000000e-10 -5.258344598842e-01 + 2.728000000000e-10 -2.060622799160e-01 + 2.828000000000e-10 1.253068918672e-01 + 2.928000000000e-10 3.754763463876e-01 + 3.028000000000e-10 5.204513706872e-01 + 3.128000000000e-10 6.088547126517e-01 + 3.228000000000e-10 6.948747427610e-01 + 3.328000000000e-10 7.643967320598e-01 + 3.428000000000e-10 7.844541546789e-01 + 3.528000000000e-10 7.222905371020e-01 + 3.628000000000e-10 5.261436989659e-01 + 3.728000000000e-10 2.064244494061e-01 + 3.828000000000e-10 -1.251087630483e-01 + 3.928000000000e-10 -3.752230316775e-01 + 4.028000000000e-10 -5.203274407129e-01 + 4.128000000000e-10 -6.086807930540e-01 + 4.228000000000e-10 -6.948278459755e-01 + 4.328000000000e-10 -7.642927444658e-01 + 4.428000000000e-10 -7.844689558048e-01 + 4.528000000000e-10 -7.222270537973e-01 + 4.628000000000e-10 -5.261810188038e-01 + 4.728000000000e-10 -2.063649367923e-01 + 4.828000000000e-10 1.250740150254e-01 + 4.928000000000e-10 3.752740624702e-01 + 5.028000000000e-10 5.202917067072e-01 + 5.128000000000e-10 6.087280474834e-01 + 5.228000000000e-10 6.947875493975e-01 + 5.328000000000e-10 7.643381446772e-01 + 5.428000000000e-10 7.844278436925e-01 + 5.528000000000e-10 7.222707134126e-01 + 5.628000000000e-10 5.261386731045e-01 + 5.728000000000e-10 2.064078101390e-01 + 5.828000000000e-10 -1.251125509614e-01 + 5.928000000000e-10 -3.752362786491e-01 + 6.028000000000e-10 -5.203279553884e-01 + 6.128000000000e-10 -6.086920089480e-01 + 6.228000000000e-10 -6.948246280643e-01 + 6.328000000000e-10 -7.643013046090e-01 + 6.428000000000e-10 -7.844633201903e-01 + 6.528000000000e-10 -7.222336042293e-01 + 6.628000000000e-10 -5.261766512068e-01 + 6.728000000000e-10 -2.063691829929e-01 + 6.828000000000e-10 1.250784814444e-01 + 6.928000000000e-10 3.752708432251e-01 + 7.028000000000e-10 5.202949527958e-01 + 7.128000000000e-10 6.087256874770e-01 + 7.228000000000e-10 6.947904319095e-01 + 7.328000000000e-10 7.643352365607e-01 + 7.428000000000e-10 7.844306677783e-01 + 7.528000000000e-10 7.222672114429e-01 + 7.628000000000e-10 5.261433781551e-01 + 7.728000000000e-10 2.064029029490e-01 + 7.828000000000e-10 -1.251089390610e-01 + 7.928000000000e-10 -3.752408867518e-01 + 8.028000000000e-10 -5.203238706374e-01 + 8.128000000000e-10 -6.086968714397e-01 + 8.228000000000e-10 -6.948200705245e-01 + 8.328000000000e-10 -7.643060605343e-01 + 8.428000000000e-10 -7.844586734539e-01 + 8.528000000000e-10 -7.222379683754e-01 + 8.628000000000e-10 -5.261730442965e-01 + 8.728000000000e-10 -2.063725681788e-01 + 8.828000000000e-10 1.250820910423e-01 + 8.928000000000e-10 3.752680406761e-01 + 9.028000000000e-10 5.202978581562e-01 + 9.128000000000e-10 6.087233210610e-01 + 9.228000000000e-10 6.947932359489e-01 + 9.328000000000e-10 7.643326365950e-01 + 9.428000000000e-10 7.844331791786e-01 + 9.528000000000e-10 7.222642751837e-01 + 9.628000000000e-10 5.261469613157e-01 + 9.728000000000e-10 2.063991803079e-01 + 9.828000000000e-10 -1.251060220915e-01 + 9.928000000000e-10 -3.752443155305e-01 + 1.000000000000e-09 -4.875704709340e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/conditions.yaml new file mode 100644 index 00000000..43e5069a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 25 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_25 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/CML_core_tb.sch new file mode 100644 index 00000000..e9ecf884 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0.3 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/CML_core_tb_26.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/CML_core_tb_26.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/CML_core_tb_26.data new file mode 100644 index 00000000..0eed4736 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/CML_core_tb_26.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.436948212736e-01 + 1.728000000000e-10 2.205877879634e-01 + 1.828000000000e-10 -1.163348151974e-01 + 1.928000000000e-10 -3.771420921807e-01 + 2.028000000000e-10 -5.370108455130e-01 + 2.128000000000e-10 -6.331888427572e-01 + 2.228000000000e-10 -7.164762236683e-01 + 2.328000000000e-10 -7.851286946760e-01 + 2.428000000000e-10 -8.059531868761e-01 + 2.528000000000e-10 -7.384564800459e-01 + 2.628000000000e-10 -5.363144999221e-01 + 2.728000000000e-10 -2.144637665285e-01 + 2.828000000000e-10 1.212929793685e-01 + 2.928000000000e-10 3.815418180812e-01 + 3.028000000000e-10 5.406606883043e-01 + 3.128000000000e-10 6.361475176918e-01 + 3.228000000000e-10 7.185360719894e-01 + 3.328000000000e-10 7.865091736067e-01 + 3.428000000000e-10 8.065713749450e-01 + 3.528000000000e-10 7.387921596039e-01 + 3.628000000000e-10 5.364259512539e-01 + 3.728000000000e-10 2.146317863835e-01 + 3.828000000000e-10 -1.212295238309e-01 + 3.928000000000e-10 -3.814110096077e-01 + 4.028000000000e-10 -5.406166203788e-01 + 4.128000000000e-10 -6.360467438854e-01 + 4.228000000000e-10 -7.185257686739e-01 + 4.328000000000e-10 -7.864422304189e-01 + 4.428000000000e-10 -8.065937411295e-01 + 4.528000000000e-10 -7.387487319623e-01 + 4.628000000000e-10 -5.364619855530e-01 + 4.728000000000e-10 -2.145913861363e-01 + 4.828000000000e-10 1.211959412322e-01 + 4.928000000000e-10 3.814481551476e-01 + 5.028000000000e-10 5.405833390120e-01 + 5.128000000000e-10 6.360831449777e-01 + 5.228000000000e-10 7.184907253890e-01 + 5.328000000000e-10 7.864786648334e-01 + 5.428000000000e-10 8.065585198321e-01 + 5.528000000000e-10 7.387840006966e-01 + 5.628000000000e-10 5.364270346085e-01 + 5.728000000000e-10 2.146260338485e-01 + 5.828000000000e-10 -1.212277001076e-01 + 5.928000000000e-10 -3.814182410321e-01 + 6.028000000000e-10 -5.406130595607e-01 + 6.128000000000e-10 -6.360540210765e-01 + 6.228000000000e-10 -7.185209180994e-01 + 6.328000000000e-10 -7.864492678158e-01 + 6.428000000000e-10 -8.065874846616e-01 + 6.528000000000e-10 -7.387544794760e-01 + 6.628000000000e-10 -5.364572547805e-01 + 6.728000000000e-10 -2.145959871001e-01 + 6.828000000000e-10 1.211997934696e-01 + 6.928000000000e-10 3.814456726213e-01 + 7.028000000000e-10 5.405857946323e-01 + 7.128000000000e-10 6.360813265814e-01 + 7.228000000000e-10 7.184929266665e-01 + 7.328000000000e-10 7.864767243186e-01 + 7.428000000000e-10 8.065604357181e-01 + 7.528000000000e-10 7.387815158779e-01 + 7.628000000000e-10 5.364303644926e-01 + 7.728000000000e-10 2.146228844142e-01 + 7.828000000000e-10 -1.212245339809e-01 + 7.928000000000e-10 -3.814220075435e-01 + 8.028000000000e-10 -5.406092538148e-01 + 8.128000000000e-10 -6.360581238583e-01 + 8.228000000000e-10 -7.185168954112e-01 + 8.328000000000e-10 -7.864535273883e-01 + 8.428000000000e-10 -8.065831328643e-01 + 8.528000000000e-10 -7.387583532284e-01 + 8.628000000000e-10 -5.364538735708e-01 + 8.728000000000e-10 -2.145992968151e-01 + 8.828000000000e-10 1.212027591883e-01 + 8.928000000000e-10 3.814433789143e-01 + 9.028000000000e-10 5.405880431190e-01 + 9.128000000000e-10 6.360793794817e-01 + 9.228000000000e-10 7.184951630330e-01 + 9.328000000000e-10 7.864747526663e-01 + 9.428000000000e-10 8.065622905723e-01 + 9.528000000000e-10 7.387792872630e-01 + 9.628000000000e-10 5.364330391099e-01 + 9.728000000000e-10 2.146202349236e-01 + 9.828000000000e-10 -1.212220310216e-01 + 9.928000000000e-10 -3.814247853449e-01 + 1.000000000000e-09 -5.040490090913e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/conditions.yaml new file mode 100644 index 00000000..0bd90bf0 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 26 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/run_26 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/simulation_summary.csv b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/simulation_summary.csv new file mode 100644 index 00000000..2f5f947b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/simulation_summary.csv @@ -0,0 +1,28 @@ +run,corner,temperature,vdd,time,vo_diff,frequency,amplitude,voltage_swing +run_00,tt,-40,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.952e-01, -6.044e-02, 0.182, …]",4.722e+09,0.709,1.418 +run_01,ff,-40,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.648e-01, -3.672e-02, 0.198, …]",4.722e+09,0.693,1.386 +run_02,ss,-40,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-3.227e-01, -8.540e-02, 0.161, …]",4.722e+09,0.722,1.444 +run_03,tt,27,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.752e-01, -5.371e-02, 0.179, …]",4.722e+09,0.692,1.383 +run_04,ff,27,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.482e-01, -3.259e-02, 0.193, …]",4.722e+09,0.672,1.345 +run_05,ss,27,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-3.027e-01, -8.046e-02, 0.156, …]",4.722e+09,0.706,1.412 +run_06,tt,80,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.659e-01, -5.659e-02, 0.167, …]",4.722e+09,0.669,1.338 +run_07,ff,80,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.411e-01, -3.745e-02, 0.179, …]",4.722e+09,0.648,1.295 +run_08,ss,80,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-2.916e-01, -8.207e-02, 0.144, …]",4.722e+09,0.685,1.371 +run_09,tt,-40,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.397e-01, -2.046e-01, 0.131, …]",4.722e+09,0.807,1.614 +run_10,ff,-40,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.293e-01, -2.034e-01, 0.125, …]",4.722e+09,0.789,1.577 +run_11,ss,-40,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.474e-01, -2.088e-01, 0.131, …]",4.722e+09,0.819,1.638 +run_12,tt,27,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.050e-01, -1.958e-01, 0.120, …]",4.722e+09,0.771,1.543 +run_13,ff,27,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.935e-01, -1.929e-01, 0.116, …]",4.722e+09,0.753,1.505 +run_14,ss,27,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.133e-01, -2.032e-01, 0.114, …]",4.722e+09,0.783,1.566 +run_15,tt,80,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.765e-01, -1.934e-01, 0.103, …]",4.722e+09,0.743,1.486 +run_16,ff,80,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.643e-01, -1.890e-01, 0.101, …]",4.722e+09,0.725,1.450 +run_17,ss,80,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.853e-01, -2.024e-01, 9.500e-02, …]",4.722e+09,0.755,1.510 +run_18,tt,-40,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.575, 0.203, -1.640e-01, …]",4.722e+09,0.851,1.702 +run_19,ff,-40,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.571, 0.205, -1.568e-01, …]",4.722e+09,0.836,1.672 +run_20,ss,-40,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.579, 0.208, -1.623e-01, …]",4.722e+09,0.860,1.720 +run_21,tt,27,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.557, 0.208, -1.460e-01, …]",4.722e+09,0.826,1.653 +run_22,ff,27,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.554, 0.209, -1.400e-01, …]",4.722e+09,0.812,1.624 +run_23,ss,27,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.561, 0.214, -1.407e-01, …]",4.722e+09,0.834,1.669 +run_24,tt,80,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.541, 0.214, -1.231e-01, …]",4.722e+09,0.799,1.598 +run_25,ff,80,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.537, 0.215, -1.181e-01, …]",4.722e+09,0.784,1.569 +run_26,ss,80,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.544, 0.221, -1.163e-01, …]",4.722e+09,0.807,1.613 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/simulation_summary.md b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/simulation_summary.md new file mode 100644 index 00000000..6401031e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/simulation_summary.md @@ -0,0 +1,31 @@ +# Simulation Summary for CML divider frequency response + +| run | corner | temperature | vdd | time | vo_diff | frequency | amplitude | voltage_swing | +| :-- | -----: | ----------: | --: | ---: | ------: | --------: | --------: | ------------: | +| run_00 | tt | -40 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.952e-01, -6.044e-02, 0.182, …] | 4.722e+09 | 0.709 | 1.418 | +| run_01 | ff | -40 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.648e-01, -3.672e-02, 0.198, …] | 4.722e+09 | 0.693 | 1.386 | +| run_02 | ss | -40 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-3.227e-01, -8.540e-02, 0.161, …] | 4.722e+09 | 0.722 | 1.444 | +| run_03 | tt | 27 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.752e-01, -5.371e-02, 0.179, …] | 4.722e+09 | 0.692 | 1.383 | +| run_04 | ff | 27 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.482e-01, -3.259e-02, 0.193, …] | 4.722e+09 | 0.672 | 1.345 | +| run_05 | ss | 27 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-3.027e-01, -8.046e-02, 0.156, …] | 4.722e+09 | 0.706 | 1.412 | +| run_06 | tt | 80 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.659e-01, -5.659e-02, 0.167, …] | 4.722e+09 | 0.669 | 1.338 | +| run_07 | ff | 80 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.411e-01, -3.745e-02, 0.179, …] | 4.722e+09 | 0.648 | 1.295 | +| run_08 | ss | 80 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-2.916e-01, -8.207e-02, 0.144, …] | 4.722e+09 | 0.685 | 1.371 | +| run_09 | tt | -40 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.397e-01, -2.046e-01, 0.131, …] | 4.722e+09 | 0.807 | 1.614 | +| run_10 | ff | -40 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.293e-01, -2.034e-01, 0.125, …] | 4.722e+09 | 0.789 | 1.577 | +| run_11 | ss | -40 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.474e-01, -2.088e-01, 0.131, …] | 4.722e+09 | 0.819 | 1.638 | +| run_12 | tt | 27 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.050e-01, -1.958e-01, 0.120, …] | 4.722e+09 | 0.771 | 1.543 | +| run_13 | ff | 27 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.935e-01, -1.929e-01, 0.116, …] | 4.722e+09 | 0.753 | 1.505 | +| run_14 | ss | 27 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.133e-01, -2.032e-01, 0.114, …] | 4.722e+09 | 0.783 | 1.566 | +| run_15 | tt | 80 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.765e-01, -1.934e-01, 0.103, …] | 4.722e+09 | 0.743 | 1.486 | +| run_16 | ff | 80 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.643e-01, -1.890e-01, 0.101, …] | 4.722e+09 | 0.725 | 1.450 | +| run_17 | ss | 80 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.853e-01, -2.024e-01, 9.500e-02, …] | 4.722e+09 | 0.755 | 1.510 | +| run_18 | tt | -40 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.575, 0.203, -1.640e-01, …] | 4.722e+09 | 0.851 | 1.702 | +| run_19 | ff | -40 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.571, 0.205, -1.568e-01, …] | 4.722e+09 | 0.836 | 1.672 | +| run_20 | ss | -40 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.579, 0.208, -1.623e-01, …] | 4.722e+09 | 0.860 | 1.720 | +| run_21 | tt | 27 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.557, 0.208, -1.460e-01, …] | 4.722e+09 | 0.826 | 1.653 | +| run_22 | ff | 27 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.554, 0.209, -1.400e-01, …] | 4.722e+09 | 0.812 | 1.624 | +| run_23 | ss | 27 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.561, 0.214, -1.407e-01, …] | 4.722e+09 | 0.834 | 1.669 | +| run_24 | tt | 80 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.541, 0.214, -1.231e-01, …] | 4.722e+09 | 0.799 | 1.598 | +| run_25 | ff | 80 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.537, 0.215, -1.181e-01, …] | 4.722e+09 | 0.784 | 1.569 | +| run_26 | ss | 80 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.544, 0.221, -1.163e-01, …] | 4.722e+09 | 0.807 | 1.613 | diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/vo_diff_vs_time.png b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/parameters/ac_params/vo_diff_vs_time.png new file mode 100644 index 0000000000000000000000000000000000000000..64d1b808104845d96a2127211f852aa2d848b009 GIT binary patch literal 225402 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

dwtbz8yz+lR|QF zzT2Y00mTnh-es#PaNM^Z`-fG@eW3zYyS`6T;J}SE8zLq zd3moZI;GEuBjJaDU*%q10pRc|D=T68ClXA{MC534#x^2=G?Uz$GC?v95}nF96Ahd` z@Jk`_&A?J2G|I^Bws^=8ja<9f3vk=3bD6)5xZA*0OC{_~3eG!3lUwlq{Tno_#EV@` zAw=t4T8e9u`a!02-pb#2hnHcW4ef*g~F_Pe;xk6&QCMTEzfC!trb0X&IEbaF%9 z+qh*Y|I2G%mXj0U{3lA2vP$pPb+^@^(GB5*TT0JWIiT)bcb1LowR6_Lgl&Rx-JZ>U zpObNE%t#|yP5&C)VJG&l8+En^Fwc z%%xgAYYeL0XbB2=i6dVgwKRikAY`l;>HH^0DRO1h`6|EjT0zV7k$HKU8NhNT3yHG`Ygll!NkDJxhsJg_E$J@ zj&7-suCpi-Fcc=7eSsZHU>9!=JpXfrAQL#%0j%QDC}skO*`KTvwWtLjSEZJch={itn@r&wz1z zpm1BjzWr>e!Fy=%oSj3}P!_Nohd)0)BE@aE)E@+F;o{-J^+gEPT_)sl2OjWcn_1%8E$m)uMy^H4_JG+FWj~`S)+g2M{fEJ3 z5AFo`9qAdY&W=AC+y6Iah=Qbu!`7(&3V_{tL|2NG&wgoj$ zJCA7fU_u?za6R51V8X@)fJv+{@Q_Z!(oijCJM@A{-@xDizFMK5#t3^0Uq-L(1iT*d ze&Df%is%XifqX$)g799o0s{jVtkJumnT+s*AltBpJ2*Kd*&$?2YF6_lC>V zUg9e)ADjR_0ksSWK~4oJD$=i6>V%6^^EtgVkjrQ^BCeL8y(QRlf$sy6-!5I1m6ndF z4+{oL(Q+c&8KwCb zK9NE!GO;9@q}R)|gyjdN@d6@h400qhm@PMss*JurK|94a;9wVKtZ&q|dGjrq^_X6S z<@{re5^so$aPuAF&z_%jT2Bbpz&2zg7;(EZWNY=+*J*KTPhz{+Ua$I&n|HgPFmr2S zREZn!zg-e=G1@&A)0nkx!txy1`Z(dC-L*gK9D8?%=N62tx3-TjoXWeZ-Bl5i<4jW! ztQ8G&B)qy5vt=O{H!KU#a-9~an*W(|YWv&4-8uDS?BNew^gkc=4FGLJCTsfRC*#)Q}P8Y-o0-p}o4QY@zb0;u$kVHBL&gm+Rvt55l&_qnKcSGj@-4d*xNDwH> zD7ZDC=TrkxnXUf2!wAd@sAzrQ7$`OmV4>!->_S11I=2oHDA+^aev*WK5TRLM|Ly

PPh4mll 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%0D%)4R(^doNn(` zJ^i=JGl~_gnOg0FULAX7SZOzLZ@*y`AD{@zU?>F1*t`5eyIMW4K6%(UI9Nc}hM1^e zIFLChXJajNb-H>644wbZkd1y*m>a+)>(#?h?$ZH7PH)%uU`dQdNTnbuJKi2c)wI|G zv(^%lP0DLMxCXe|b?A8kF6{_L7IWcb|HcF z5u507`?Z_Lp0xhA58${wO#k^R1X_}4xQY(~ZvA}&gw(o4{3Jg)M8*IE6mV2pg08<5 z-Ud9KZP82#7HiP%SvJBW0EU59L(v1q7hgGFcfia_2zn1;sI!EjS2O?h3>C3R0P!4o z&G6glA?$`2E@WKhdu(j)pyLN{LIKFiYwagNGILBJpy1=<^Z5P=(nhoxaRQ^61sbdw zV{4KtzjhlYK|eK(vioM)am@X?=rV4S1z1(Vanm*(CHCs%)&9|Mzf4#px<7b%hX@Kd zGxm9=Y1{!a)HGwmDgKE&`=852h$uhGFb4QNCdt`Jq!29UvRb^MyN&+E8-+`WahHFt z<|ocCh7+Ho=rod=0fM(!+j?9qy@BXq!8!bE(YHSQE%-1zH5}TzCQD#RqWF-I@oZnc z`=&aV_$^E>GVtHj{ zrL>V1h-gC=k%<(<2Tk6ejV|W9DS(_6`0K_Z7ke-mrqcY#hEzw$5AAE?24~YqLRa?a zR>Ac7FJNbM)4O&i|KObP!TCr`lfwnfY?t6?%T?cc6O~^C0PhtZ)6DHKJrfz1z-(CZ z#}T3E+zYAz&x@Z5-Xav?|6vilc8Z*aL=(4mJ`8~?4aEJ`eXA=kwH`(hcxX<}IMp9D zFJ4A3UhaF$JcBx2yI%sXW5me8-6lJcdL745oOjRV2L*)v3YUjoJv8NuPirp}GYC*2 z?=*QzE~>ICqqcPLC1Y0UX3 zVNQU-(PMhj^h%1wi9R6<@c7J`=v-+GrEed`=hu~QiBfGkHIruKMr-tCb&`#XkTG*h zX-fo8#H)#62K>0abN#V}X?-14V{x4Qu@yn6kk!$V`Q~R=Yk^PhZeQ{add%t~SN_o< zQzSa?A63iyT`Y1aav4d>U!jX`FDxm4mg9YfXTdh@$tdTfF4yh#c0czcp<)qkh;$0W zPDR&K@BX?Lm&UENx)#Zp2QIc#b{48-w(KFYfuUK}u`;f2rw;Ea^xe%|$J6sZ4!%R= zFP}z;;kF~>-lCpx9O%HqtgGqZQ25xuI-+}Xbb+&8TV7|f@tp0Uiu?U6XPF5>7sm*d ztgt3pMhkQktiHe`X4QveBy&+=MNYGGbGTAzBTVSeKlWrUEX1wsJR0n}rByMhFJ2uu z-(*%RgpD(T@q>UH?NZ82gbBs2cn1Z;ymR?3=2K-fNxzkN9lLy%ox>gK+NS0G9L7FY z?(l#AnS_J^2N}{#okM|2;iDBy&e+xC2&XlObRn4lROtU9fFl+ruIlHW<3K82r&$$5 zV7G$?*v2-@@Bq~F%ba={b`2vs#w8q|1IpxR?$e@58lGB2QI47V8Y|uRbN)yoy`nxH zEqfN1p5kW5$7}wI{i{ghZF0l*Xo9EYu72o);Fhb6z-_`~AvA@#-5ZLF;&+i+E&g_E zR5HX@8*#iwP0SOwZz{Y-H~isdNp7)JPsuIA@N>W|tkEQiDeTRU$*vN98wLu}E;SLk z_@q=n*Vv(K26lbO8*ZQ zEqZJ6+JPWE#?5(u0j-EvxE)^-2&qL)|Xk5&`iB$87 zZs>WHF2%?!q~SBwWqxOoi?cx}$1Cdh>AtdDRhV{CG$Q6WXwi{64WJGIh%j(Z%c}|I zo8P`EK~7vBpkb$=Pw+kKGuElLPz><_Yoag$Kx#98ffbCix1C5=|7J9k%F`ds97mL@ zF>5YcKq;@pe4JUW>Q4zL-?{zO_!P}h?q?}iiMvXHshdxhS|lqfY7H$^Wk$b=yV2#H zq_mZJG=OOESWa6S7=Awz$|kf~x~B8t&YXk>I0O-ldDRYB?NEwunG zSK2;;$Nf~&s#-_5@~K{p+)}=H_h`G>2J+>rgSptkIDTl+azD?BlZ<$fZqnJ)M?F^6 z>F4&CJ}b16`a>MC*Ug}S6vkCcg#DU;vl=6>&Czr+}215uxZgBl2ZsDPv-x^cJ;TLVJauXtG^DD;#oM0Ds7-I*-r>%pgM+_@6I zuUWa%iE1Z`M=T<+R|Ah+WS`$YQ4GevD7a&}lrX!F7yNk(m(lEeJh3uBNbhHD{!MPB0sQ`0@+eQPm6zkIS4n}h#=a!baRFXe5_ zzsj4BmnxJWfBVZK$Blf_7W7r@LH7?}5E=_UV~tz8{k%gm;3ROICG!x4$+{3tG{rUY zB}mNR-rnAR4_URy`c!;F9up1K;J$YMqKQeh2gA!a*P8swXy;C6t{#TpYtiaE2|Vgp zvMfpYgfc~mcA7U|E8u7Iy76&EE)$sMVbI45ZWTMyty#2tS^yU-0WWkgaIVa5^rLagj%!F%=j%WMZy|ll{ zWohYr7{jwOiCsTxF*D;e^U7>j(3^K}a(S3ZR9CfD>W{_#<}l*puT8p%eR0Ap@8q^890G=>+63XBNMY+V4S|8;e6IYf>Fg?etu0hra9uB-QAa4 zSs@~-?{B?2kVIyCNbUgS0(T;*B)?#~>@oWt!06#)+v8WzWP5u^x@0Thnsb%N*|TXe z(JT349MgW)Vz#m%!j^x;9Z92< zYfr{*T#`NAG@ZA`E{1s|FCn+X*-`2SyL#} zX=O62_9(^BNqP6=wi4%L)ceLtOW!=^osFKMtx9n=&UdkfpP6KX=80mA7Ut$6BTMtp zJ_Zj2GO*!E?!UU<-@|sBB0Mzw3{E3^k{k-;LwwFvDz^{Ytg)g4jf*yLus1Dkx-=TR zhrKx{AR48W%K_lZ4Q(wb!w3JTe?Eh{BKjQoD$K(X4{tBAFF-^lv`8jX3E=CiWhM^~R@^XD%=31z1 z=HS^Hqg_4N?a`}B{c##PPB}S^)gZ6nT504{;IEF7UbWg1r=R*{*zO^x{BH1Fx}3~9 zElb6zft_X|hQ_i_qVW6jbZrBrigSi?U0u770~7faNAz(^;=H?QJt{$?;Pfv%A_CmL z-zDCw1%5H5qNeul&vS&W5b!bpuX+eOHd8Lwf2iW?i5fy)$1HwMxH1X7fnSzG&!}61~s2|@3;P91J?Z-rfoL-4suu`7lwn#Ve?Gmo2OyxXgG`*h-k*zNWO=5V)3zfjXp}DZt}=_XH9J~+ zzCMiH(auHC_H67*OWd?==OK@hNY|P>2@e`pZVWvEVfW#8zMF~)7{9xc=Ycq<6novzObM@%;Iu$ zb4_^Ma&V>f<0UKMTd&gdlZWp>Hr76 zoCx+GMBL9Rt6&+!Losabq94cL#?D(KGK!DNY;6_Q)6&6mskvjuk^0U`THvBmW(R$e znWA;>=O5z4nQzw{eMCN2pF3<@qRQVr+ea~55K?Xx>2wTVGTZA}e*9GTYER9ho_PEr>~d8%>e2d)maN6(Qb6;M1e{ z(JPh{HE6#0o;?bsA=3o2AAd2k2Z@xabrmWitd}m~{2 z)n&o9GrarB5j#6}#U&+i3^)M~{+$gW@yb9(QG<0kr|;P#WM=}PleebL-+vdnw_?6o z%wt?M%H<#-F%*<5=g?*QIxHfk#GTT_>Vg)l{`8HS%J)cvCtOuq71ivkziVye652Fl zMvEoPy>xH0RlLY4x-FjZMy&dIp>!6?Mrd5gqZ*HyXL{Q1uO7r$5I)-B4Nbw41C++h!?%y*SA!Vd^!7rb`+2G9O^ zCy}J6myiHYD1EbGxyR%SKSAL~X*l9Z0|8TC`~q~t`h(Or@gH=U$ZXb1Dx@2uNv%)@ z;6dFZ@HY7agNM39AH0 zq%B@&1Sh#Ks8k_!IDD2Z`_DCIt{#!+FQ5ebm{NMGO8$a5owRK>V0xiSz=~mc$&cqT zVSt#Alv=^XnhMM9kKKXu9R8?!JH+-KdWNKgHzGn+UXrk}s-4^G?0@XM(Z1G?`)Zlf z52_EACK4_WT1xbu$5l(%r`)|>Xl5xhm+~$a`M9Q>&GO1_9GRKCC0!ojFVXfxzdYIU zzrwz4O-^K^UNM_&66~#QV_xejZUjkFM5OM-MD~ZdEZAiqtQ-`Jr5UyaOrE2nWj^#G zFC{~%=T}h02dFsTeg!jY^RAD4+$n4TDWU>2)=jx)>0~DFV6xLe~mD z{YYxTXt;%3R-*)gDWKEr?$~z0$H35tf@Ed^o$+H`9k}Q|!_^Zpzd-hmg`HhSjRYof z*9(n!Wz|G3+1T09P2drNI5XkDU2$)o{^TQytQLv$G3_s9CWP$p!=WD@pmtK;7O`ec zhJ05_d-( zOK!VDY4Ui|MfW9op4Ewtsl^%|RRH0+y`Y@NMuP*BJwZ+OeI`4|mR2|?;{-o97ljX2 z6IVFyJ2U<0f{yRCH62qbQ_8lqlnk%BdJHHsj}-2|QRZaqExtB(H;_naYGBWu_^ot` zvfV#1I$HI>3A02ui%qw(tYzirD>1_xhKt{CzP1j*4o8z5I{15{ieDuTu!yQ|I&+vy zraWc_e2*uiA1;vQBJ*ir1wr_2#i#Ro z*6&>~VStY0t3!?6`Thco#TJ0Vf<+UQjEHNW?uovV0>p6K6h9_FXj=FoInqgyexJcr z)(->ET6<)3Tl*UE*CORRAg-XD2a~zLVwbSC5#&N4GMrN5HX~w9an~&Z6cF{TK)coD zR1c)LubSG1vOYeuM-QGYh#^cVgdzb3T+lbHytDq$v3lqXd>(`<)!?#6?ef|4xiuT| zFuz-W|I4`iVQpb)iM$_J#~fUkw;jeaAv=!*AbrCc0c=VhG3#m!Le} z&(?t@2@?8-6aygfdIbWHbtLZ#6r;4U5_f|61;bTL2_`}{%oUhaC;W*HgA4Kt++Rl4 zW~MlEsdsfH>vWk|tCGm(w0(;%|C)>&?@!ZPadd-z%?aH)m`am$*@x8T3$I5Hhe{G&-EKv6Af&O|V7?tPf~4c!ikqNLfU2||Npx^Hby z>hjP6#W3Ub2WC8{)kOjEukN$fb-tnLIqNqz*-!v`ck5 zhF<^X1=Fo8h{+IHp04f=%}+R&8k`}{jP<{?l(v6={+-S)UUdQb$$Z8WLIb9oJvd>k zz7C6k;n&8E&+m9Fyu6FB%RdL+K;$@7K`%g;3tQ~ai2F^Uz-jme{c9ZDUzO6ca3Lb& zc;xs3yLs`Ly(h%aR?hCtU%^ANVa&XwxVQnXr$(60BGU(iz=F))!?OwSLmFX3i(pwG zRc;Ly^UL{ZPCI<5la$D!9%@7cj#E@zoDDPizkgq)rlo}0!hP#%@hGdgI;VZC7 zShjv}K?!MD%Wzk20aAnFchTc zMXEuhPD9XKaR~`ue8C;t{SgsqA!&E;nCXMtS;5?#5msz^^_vo}PMu@^IIu8`!tfzC z-@VmoACD;F8do?)itW%m!G$e(jOt^~yLOZql1G+!r0Uv9pts?4rtg>n$!) zinr5n1KT3kO}XSl{JVj;N|9%&6tC$!JPAnMaNNGyq4FqIPc60(!@`>py-39QO=(zw zMoDXZ=y#l$@W95;a_Wp7*IJokQ)f=Cj zDF3&DKRcxXkdq@zrZWiZDCgL56rcuS?I=sxh|M~Z!vX~bPJ1f9eF~2y_WJrd!uLZE z0U+bFKP!ev(9NQP4`vW)^cTM1adhcT$k+k@{K%dga>3BzcA67TxCoO$Edu=}BEjp5 zrp0N8XAtT{kBzPEGJvUaa&ysDYt2@I{&&@#d1TK2(zYH`d|95h&VW!#M6SyX2tyQ* zB6b1l>iS1vMzBuQjyFw|Xdi(=I3Dik=dcI2bDa16clo#5_wV&gs&A0HxC}WZt8jzu zP5Q+A#u&HxiM%NQ(qBiyPM{icZ>DWEy5+(5Q%4N&R(fsM{7{f=4j>4GDVpp3t3ci+3u*uMJdy}0Y@4SV@WKOCEX73I-GFW<+oZ)*yc)fzU0#sTx8n^>BZa#3@EU2O{=B)tl$Jc>wTI8iW%A2I08Q#2Cu zR2SkROBdAeR^w#Hf`^aMZhNof-v86rU#U)hP`i#tCzi@3=Va(34(kbibqsxX>dRW{ z6KxdMlGukeFbIqh;vu5MtiX4e-^4{rK@<6$Wuu$g*-MQZB;^_4^y9aUh3XSBT^gd_ zC?+4>o;caoqGR<+;%3KfT${M@Y)$TkSaS~BF0F0KXM9MJOA|~HS|!cfyOTC?)%;iF zJ>5w<&o`0L7tNpkVNja0B+Ertrm-ugVrBf;n(<2%twMPj6R0@4OqlhF!6k71UQAa$ zT0<4_cbRz-*Y6+i$0&2KFdSD=SrUuQ52Z0;W3tWZ3%}Zoz6K{4JpqI#!y&r%aPNNGCmFU!9O%OFf{05@eL$W}j9-fg1&jx(y z^_z6#k-h(is_%&56+9LY%{qtzs{wm9D6-3rNG71#0oC6+j7uz+KL`DHwON07$qf3s zB6kj-uVA`4y;%IWVEfbso;j&;vp|q@6@e0(?;6bvZjt#TN4Y2|)t>`^GKJ?!jQjql zg+CylnX|~eTu?a3&)Ln|FIppDNP}WDO|GA@*tx&fU zYcXN-hmc`SG15NbyMc1}+Z>nOstM`a3`^#U`>)lu+=LDkcd9r-h#sky@TRyzP46+3 zbvyG&m(T0vn@+Xp=zO%PSyt2QX!m#@azi<9w9Sm~!|5Tnc9rotDINZJT zZ8_~b+f^kj-4hB1;h*K_ou+TbzZbh&`Y@3`$tMQ*`F_-p^Zwe=3{3seU$IJYReOk6|QLO?dPD7jXS_Bpbi(h0t2> ze&Hx8o4u$~7PoVqj}NT*eqO*!irlsbqhtNcMv&A1Wom$X^V`6{I*4b?;c5k53tSES z+@(+^DU6|g8yo}`kAM%;`M(93S^x>XB9UE2>UhZL{0j=O;lghLVW0`r*3x?3MQQ!t zJAgbJul5<*s5NG;#Gfk5KaE>^e{dHNEEHWaD`9KNPcE<)OayaQSMu&UG}!GbZcEJz z5-ycI#ZdCE&S)7g7xxoh#m4$c!iAarG9WB2WaH2i>yadlz(gia9aYa0RE>P=kmh<;FC8@@xa{l9Vc)=^otUEeO%J2nf=G(v668iZn>KbcZ5H zBVE$n5)y)hgrEpWHwZ|$=enQgjqlrgkNtl8k86y3++%=T*R|HU&U4OV9zSW(vK)cj znA>#Kt-qTNYMZ>S1o@^nz8G}vv+YVrJ*T$;-RUTMCrd3MvD(wL#D8x z0Q|BYpYo07kCgUyBnblQJG%)YxovP3>wq2Pm4eZ6WUg&y<_ULrGk}ATX_?SOyuL|b zUiB6NB4c4@Lj}rpu>67GHn_H>x*E|jIRKgZyshSC{k=3Lpe!I~IrSG8Zb+9Gn1gw@ z=pq)fZvuj4k6dLx!`P9OKf;2OoqwA1O8dJnqTfWQAK-?sOFoS?#V|R>Jt*zbVv&(# zU$qogNgI(ZTh(gMmBo_z@SOQ}VFfh-+u^+2A(I3Y8)Vh3yDj(Y36@fA+-e+^=dL~A zWKLkd?t=P&bRTO-^0QDnitc+%jv%UVNmD6B#t; z8+dbj1qitwOMV0aTwhFw}usu-%0Z`ov z9ZsVoJk&c3W8v8JL{Cp3N9c**Da^kuBf-`10fBfX1|H8)6X}I5447t1Yx9EVW!joL zSE*S1Rku{BmZo3Z1dN7e(yhk@EPY^Ih*7zrA3~O@W<^kx;HG@2J(?cPn;1kqbd`Wr zcHS^CeWjuZOSwurrjSiRPNgN8(&Cs*PeNAgx_s1KUFWb2!2%hqr0w3DFC|IB6+2mq z7iU#81y;QyuvLxdax`03qAD?c#l2r2#>;tJNw8j@Vk+f|`k@$UQE}7l$y3@3%|5wx z*Y73YOid*OlsW@~np{sNUQB5C$qG=kuga*l$KKV-X=9Q%+`LTNdv9tT-cptmCQ9|^ zxkm3}@%@BJ!eY$!)vr==7i=uy6?)DN@y4n$-@LeGE0-hhhGb-&`K-GLpT{*Wn5Pli z9qc{`{QKtr0XKZTX!U=H8#c~{ZWy*N*#8q-j_`vD$vpl@dL+y;B6AktL_Y;st6?=e z0vT9DI6PzvhdlprGLw44UU#k$ASDRlv}h2}fvC6x%v1gFoQ3W#)M1gGB(h|}43ey) z>2+Y?RhH!s4c;uRny${c&3~mLFdL%XRC)X}_{gqcbP_J9{)(rya0sHjp|7 zK&uY0AjZP4hY>nYaf%7Nkgj)-dX7v6oFC>th}sZl@L0W$D9qp=egyPo1SK~D$c{%2 zNc$`0L&?! z#R*w~VJEYnbM1n|JOhavE-q^fN0N{M8Aobm2(^paG+AapEVP0=m@Z+S>;RbW=bIrM zKqA75Fj24$`=R$RKL#bVH@qf2u?Yz|7latH%ni7aH)5=*m+;=w5r0BaNlY)anqRUx zfA-+6H|hNPuZ~UQHlz4OxM*-zz1e`vATu$dDs8Z?DZ;P(lPSj-F9m!=|L}Gce$&TC zezleSs2NlVtPW9gmWn2AQx|S;o$zpV38?4LsN0hmv!4(~5&8vKs_!)PCO^vU#1)oj zyqR-$4?)c_}`gm^F)xsUy>fhfUyy>SXyjqsCCeB(r zUN%wnkhg+ZCJyk#o)MK7O5BC zey?tL`)+>db%U3&Pec(vI;c#Q4$NSb0fD`nHjkU#4}@EYB#7&eCiNQN)wH=`pIOxk z$Dr4+{1p$FAZViZwVOAaC`%CKb_2Xje9n-9!-Zb?*8@2H?!(K~Gu>ZSd1w8DiPu)m zS4VgeJ@NhLY8Z;RTjf4#-V;={D;pF^Fqe2Qj44r5oUugqHkx9XVj;gQM`ISlYB>r} zJ*v1!qxvU|*LVsnN02RqwC zYX~T#y;`tURc_z1P&;0}<;YIStS6bA-D&%Y>cl=BUKcu5JU8Uk^3g5d~_lgnPiaYoVtGqS`tN3*JnzX6HMtu+H2vN zw=7Gd(+_M~+<1+6;``Nf4lZoEap|yxbc#7C&~Mha&x+AZ}ax8@AOa*+2)^xW`2*6&!=^* ztTK5UYGOq2Lxi>FRmcUjo+w<45EihsstATB2_EROa_j6^M=o57Bi3P+6sicsMT}l3$EvHc)U^7 zk!*Bz5A3otbY>&fvbo*KF3lA1h}eTi=SZ03+B)@H7uWluI6?&MiL%hSlk<63yY1A4 znS&`|Cw)zG^TpPwH=T_J{Z=xb;d65SkcFrcyl(zN zN?vuPDqGgK7`8+zXOvfHQ)!7YXgacm{lE2SG(S5M`tq15dN3W+Ke5?3>J>lfdT@*} zc~~e1E5DGCdwtU#_>68sor%OR4~JFjHvYYLb2o3IM-KF{&@s>?e&V6x=Er>p6aUmucEq0=I79DxEpSl%**T=MBp9$zPD^!t;Ju`K@dG$l9|mzQbt7e1lyaFdpkKz7MfW*Qugx=b8DG)m9UL~S2v zOlEMKSbsmIHmfTi2jQ_q;8-VaD0gJL_e;eq=dOJL^vGBNOx8F}!(wcEUa=iA-o6>VCILO|XdS&UJup~E}IZ$d*V!|cCYs@HTL{OXV z-&~++Qr6<|Hk^OFz%CP&u0<%XZ4*%Pyg_ zyc?hKAiCh~jYqL>=lP1w)Le-=IPf{&O>yP^gJDw37{jaCEFjgOZ(;Jg=BXBi0wVan;De(x*ypl$MQ_=Zk0L zj~d7b;RL6D)WYi_C&nv|=#n13N-$oVbg%!@>a^SEG_`=?9}mkzIncbC4hA~5jq5^- z+GL-XP2Ru?5`N$_zIP{Ok6uDvFESw(6g(sa+U5sxg$tHBBu+-DGQ zR4;*rc3!!^Cw>pvZ$sb=*)X}K$Z>gK?mp)$6^ zKPbuLa&fcoWCuoRiN#gg$+3a)>%U1$;vQ&z-FT@-!WXk|kRJc~QQCeeYD$~v9ZT;G z+};~E&r+kvm)>-b7^KnAIMhs76B57H#FkZeKVm$r{fl#o{({NN0rn+X zhdjf%nVa9M&Dbzu&O)rZW;36WJQ^{xFNM+tTho$d#HEV3-1qPnA8`Nc zx)Lq10Snb?d0d}i@of9ll4R874LLL#(Q*Fh&K@sS2(c@R#46xCnCTfzI1)`P@ zx1T?MX!Lb0EVp@)^dcx^Pq(Bb)a7L2m2}U@>z!L15+lc4=Vs#@dpXf@G8VlXkDf*a z{I`2W(Vin-QYG}4+oLIZQT0|7uVJnzwKd@sKv$oe8j;7IM{;sRZcwM1j!?RCXJ4~Q zrgY6x!KwTFYI+k(Rgwt*WQ)e_##J2Y)lb3q*2??uUiG)srEN)5F+53nAri<-Y8IWJ z$BPo+XG}^gSv0ytL}VaTTriqQsjBr`@G58D&5o^zg0@dgllK5DQy3h&ejjZgOW;p2 z^>?>rMY@lh8?cfRmBxpeBEbWM5TOm{~(rpm#2TR>C&MX>`!>RZ&+qc;j~x*zW53azh@U1kONws;ES-&_@3FSdY2MYD z+n`*qr+$-9lQW9_2h44@k7?l~;|dEFzK{E+#}MbJPI|J_!atu70V|RjehY?wY>$x{ zw7NOh+1NviT)4Ru?J-iDpXkfA5O05owjlrW;UmVydcdK~}<*Xd1ylaaQ zp=MO%S$uabVe|&@56g=UBGnvDR#KWn0k|HxdnQU`uM<=f>8YKMFKR_xfsTLNdfFLw zeH}VF4E}^=xZ0>61~GU1rtElJQRc$aI0=S^)3M1=xnxQj^6WSX|M9~Uroe_m-5_Q& zs}f<6*2(UHffp|-TFuvy)xrG;Do8+RGlrm>Z?(7B1us>9fO5Abb-UOW6Aq_ z3F{;8IrWS@QJvNLK1cgtku5eQ>VfgnU3%ov%5n|EC`~6EOZnJV&U^?8wWhjNPCd2J3t}=63q&O z+0UC_LL4=erIdVp#6W@rG6m@BKR8K?`sbT)D^BINtLIgkQ1m+w_#kKNVwAzcLUPFd z%!)SWTN5ceN<%`gN%e$bGzZsLO@b?F+}2C7ue6>td*IPwx-~-~nUzG((QDKSC4-Ot zWf0nIbDgoDrwGqTkVEMAz8XDx>L8Q=G?+BE{=6%lT2!1PpsgvD$;K6HX9p+W{@nbJ zZ+2|QH+K7qI1&^y6ov$s(Z4VFWdE7%qGonB3>D(7k7ONa_PA44d@Lh9vcSnCU1uUtZk>i~8+xJ*Br}E+P z=<1DNGUE+wp9F1V(T-~PX*`Fs%|f#A6Kl=d2qj9MX#$5jb_=SXghfsYndbcLFLSe7 z9C+eq7-ZlCot35?{M@GPKUp)R_{E;?7GQ9(uKf*WfM>*zDhc$5d40jb_zQpsn%81i z1kn6ZfVTYxl>vp+yWC|aVt>z_Ko#%4@QMm4UxLfd6s%)lvN4MFEH*}NjB2fMGScx^ zd86cQaeDFT{+mK5eq+fJ7YkB>qb)ui zOgRZPRMZB=i;359q%S?y%*E#Yta(DLNn_LsIl^BruJLvMCHZtaCA42HP(~{!?BOwy zcj6OOa@y2&5)53fq7Ul+a(T&lNuH8;i=jE)^5nMO^r)PE9HHYj5AIRVZBtnv7w@!| z^s#)D_r>JlWJ{F8sFT_KSxoJb#l}sMsXsK4`0jqQrlMQe7lTD#Ec`qBIDaO19cjN< z7Tp(a7u|jU8@A0}n^3;bdim_~Q~@g8oLL0QOQP$$5wec@45FCBAL^g3|0S#p9Wsw< z64mR+kZd(aQD}{815OXqu1|!^w?#Gowb@%_vKkx%Mt9yqY}^kRkD09Xg{nJbG+c}L zC<*mdq>N=-r#H*+UL8qhU;6b6ao7>j3kNacH2+yIeh1Yiol-5N3lE78q)yua(8LNk z{enEhzR#a6Kx^T4|HbzXD8M3BC#0GLwSV}f>JMadou2+TuqRDtIf^nbhEM*vSKqa(>KkTiI${Jsz1wUxmBARqm^;S+uZ#3_cbNbt^pu0zJ5 zmcVQu(NG>3cF)}=hx!)(Lnf7Mrp&tTwouN#K9d+bK@=@-Qq8901d%Lfl|NJ3ma=8! zzNRY9OGc!aiLnegKjK))Wx^hBy=2U~wMpJBH#AXHA?}~!*JXpPaineWuJayBZ~$qi zSyU`PmeU9i*Vl3S<}xj~xxV9@D|O(GO*JgqQA@44xr}It9LCYa^h)uNs}z0;ki5r8 zT9MDxBuV>NvOI{S6rQiqOoqx`^dMM$Ybl!S29@D10dY2o{?EysKkH*2SLSAY^#r-9 ze5_FA#!WVgk9Ox*Fse2DK;iOYc$^FA(wkt=)R`?4Y!aX5sEuh$to(9qp z1AbjeQ$)ptrS!U3d4m6DeOv+jHfbb2gym=oF0k@$f`*FeE@I&{T;6s2{;vg0X z8IXrG$&odUl?kYBUqP-aWd0Zi_K{3Fft;3$8qvcMsrxXokGvrG_}$I2`T%eM!Y3dB zO%voUdHm)U()FH<=DdA-1@SW=t!?1=0fgDjfFTLE-7x*2Cy3;5An_`|Ih;Zi3&Jpf z;|6I@JrM!p*cHevG65F=MC|~g4$lxK=xp^ug&rc99HD82MC?El{o8U&1Qj%p5YZp9 zWX*UtF2z5t(BW#n_&p1)#k;oO5GDta3jp4nR?BDhiM;iqc0=tI#F&OP7>H&;D(irg z|2hv+*GK+e(-3rZ4iLea?_VF-J)j^@AcXgWb}FhNSjIs8`4#}v*T@C|5_}-0r04wf zpvDz+Ww($3F8Hb*ARi~R*axT#ygG2%-;FFc{DsCBLZH5!ZG%)mkf;5uFVDZdy4Fg> z0)-chkk^ZxVLJ4`>SG4v9{t2ur?#7l(6oF1p#-h{Zfm z^o>y(1cHWno$*EF6`sGYs30;=>-Bh^&n!xf} z;8AH^Bt||e7ZT(```ixIiPre>&ryTGDC;0r#?$`K!x3lo0gD#)xxdl9VB*y~c^&=X zTYjCiO|;%TG=9%Ra+a8nn)#J%hn0T)q;2SO#2Au2Jn0owO&zjbWjP}kFMaw(skHF@ zGIdB;CQjE#y{Z|6AMHEri3nh!sWNL@sMGsQ7$r^YH_iy zMHkFZ8%@X7#NuT;c zWuL+Ft>6idw*^2lN4K5eS%-kz2v{5$=Lsye)z?a|Q%A(=3K2>O28;4fS5g0^{-98f zN#dLQ;Zx-Y7yJ-ObPMhgL=20JXdsO$*e;>L;D$8Z{P56>4(!^@gyhuu2)M?0#)QFv>sNP4@ zDvqWU&zqya8jIM~6tv2=mG$0OYjt;*-(UwM~mj` zH?aFJ-P>qFU&=TCU@(8}R92^8-rG?6Y6E4e+DVA|NID1Z41l|9?s5Vlk@|i_IL!oUa&?7{A8-b?~@EC3|n3F>G zddPOmk9N5P0J$vw4Y1(}udzf`Hp3$zpu=!b44xf;Z+)0Oc)~?F6w5$__>*?LcRUfI z0#VIKISwOIyoEO`BZc$!PEWk(PB=bQ_3+jd;@arybYhvxOOCV3>VMAs9KtE-d-T?W z3iq+%&=1S!e8SVAEH~(8Y7z>iESF@X^6q9)kQFwV;MASWG6hOfCy2Jj^P^zWG}w%3 zlEq6=OQTQBUb%BQK8DqL;4M8ChgZpYo$*xu=IU|)pN#}jk!ZYgr-5}hxRCupKjl;f0V zeev^i{yZwhz_Nmaj2XTv61Om9P zI*Di4uc3Gw*PyWGrwz|bwRMp)M9dQB{q7r?l(w_7l89%eb3K~Fb3Y7v*B@%+?^htq zL?O>6%6)k{ZNooeT4fn`+#{N_J14Pr87od4RL|Mf^=e+azEMj1MirLS)yHgq=KCu@ ziU03Hz37J>wcxzV3Ygu3^-_SI>AfFiP4MuJ?#pA|^aC_x?uFh_(xtZqKc?kt+sVh< zI&D6p%8+3W<8B|}_%QpT?udhwHQYGl>6c-q(%$sXU|9r29TwE@M&Gxy*U%-j%SuX? zBKd}YAYlI2wo8{cXUK^Hj9TT&ai0OgdN4n*+Yuv#JWly!V zdSG!wQt;{loWW|oDC0qDVKa~3g|fWw$yh{D(Y}wnV291StRclb>FYJyCr?%kakkC#TGb^~|~?E#?F2 zEr+_d)>Z0hiI06o6vKsHO-h9&t*jN>VvYA1b|lX)yXq;(Tc6%+=RUDI&wIC7a*}w8 zg$7gOyreWG_+bk2pL#XRqjMxkcn|O3=q1KUiK`t<*m$rfnSEzTjC(E_l^5iZ^_0ku z(J;{^Zl=fQTO*I7xFkPeloJ;n(V}$*UZyyvwdrm|pRqi_M#UjA374c0wB^a@RGC7g zVi3a2%$rOao^2Q{?dWa1({t0Q6PKF1O>&2%9p%>7ksArJE1lJ@pFZ_ZH}sWCD6%NT zda|!$*|XHdhDp@Xx?c;vfBE-0;+loR48jjwwXM(U`VBiU*h)wCE{+n!gX{=LmE1Fu z;V1|&AQdgGyNo1xz+s}oV;BbKP6$_bJ?}$G9es2vuL&0He(4iKX8_VDEGZc;+k+iJ z{#{w%jo=LI_@mwb*;QUxx=6mC%^%mp&JuN^VjgyoP_mf(y|y`T_HVu3w?pYSm`4nn z|Je0RFq%9heb+uwP*5P}W(3Q)5Bu0q{lrZq1RIpc-(f=dG^74(k^x9{BcSM!tuW-f z`2tcL`?k<0=A9Bd_?i%~3ZXvz{^*}03G?vhX6BLphi=d2KXrSvjGTQU7J%wqq z6_B`v8SxNcBD=|8CQb|{7c2_->+h)&Z~JkwHpu-wxNA?TWP&xZyo_tIG|5oHsHt)7 zK?4=55=sx9Ao>_~xix+h<=2td4~0E6xc5w=a7y`Qt;;-!?k>iR7$|z!ePdM;Kl;Sb z$7xhlhdIcJt39jZ8q!`s+hF3cX45ZnsX-*@SNpC0`7NmmKmQU?_kTm;S41F|0n3Xct(!Qwy7(NCcS_B207~)R!t-RVc4a$+~WIU z(CGNT({MB*u3R7ygHc!noPn}R#q6S!;s2S!&wE>>V9{+z;A;h(1wkDS$Qd#LF|lv@ zwM4fI^gQ;$X~-ayIAc3NdNB8x!ry3Pf!s?VlDdOXpfF~I9OuTz$H7&THrE7`?U=cnWZVup^dghr$gJSFRqgB+ zmu_VcB*#WnSMx&=P`AO+?2W8DIV{D|wEebqh%FIfPNPRH$J1W{YZnE%C6?JPFtliV zd439x=vdHHroq&>xY?CM*>@%7)Te*W|MtX+N^tj*$un`+yp-J@{E1sH6j0Ka>`YnY z3Z>U)zX=sXCWLdY3x$?uz7#TT9GA2SN4xH_N2WhThzShzDoM>wV`!zLqMSg=lcEh( z3~|()568hTGoA73$G=Dub@+cyyVnr-N3NeupttHJmQnwp`p7ITuZ;CoL9M%lZhspk zrKHe13{i^v@f(RNSyVW0EX_FX$=q+vW-(ruX%!K#oaoM~W@_$`o6g4=aR2IfKWTnt zT)1kVcbzFt=(@Da^vJ|rF}O2#60B5n{4UMOV5#Il#ciYJKF*Dud>rz9&>_KUfuoYi zgji8yOAdS-ABvvwIij~X*P`GUiK?02ip1L^q==?d?Y)_TH?lOwHz{;C530hu{xG|( zJ-ie)Qgkag-dU-cdkFpOnyPa+0)HVU2{@+%i&#<&8r;}J(2he7<;ogTA!GceTt3$e@Ej62FALxA|n6 z66=M*kMao0@9?wOhA?Y^NX*V*Y|IQw5bwZ(hB#=^k$Ph~dKJnq~JkYDK z_SgJ{2;u>#3n62!-QUI_&6UW*0CBvH;0T=6yb3@KV|lp4bcH=~XhqW#%l-Oo*POIT zDXG-*3Htk*N8&`N{mQNq$7D9xp-dQuaviIk!!b*E*)NHF-iH19W!@}y+v9qqu@zRP znwAq*@%jVw@y6JmXNjKS#_PEba&}&L?*hh>mFBY0$>{{0tLL{flkUZNt#;4LgmJz7 zsN>?3a)Cx2qGcpx&2OeR{>nFV8i%u=+8GNit}z=f{YMUmja!Y`VL_j+cBF)Hn<^B% zdzql*O?7@aKYhn`k|yz*4`xoHgbKU*>5v2-h^j~QH_1o$9CbAF{lA)JTB`BJ7Y{A4 ze{w9Bo~n9WF_29i6ET)U(KOyh~1x5B)UB5MO5ou{vGQw&tMH^v+O z0&W?4?PB$zeyun3sgU$;=f={i13%j9zHl~gvLS11eF@941U7S7OY#`{mHQ)w3#o8` zf=AFtcuj1%W8=XJ`QoWStc>cC9LvZk4MIx8ptdnayRej_;~gL0l_!iIE$L7Xh=&(= z1-D#9+Ro;75Yv4Ah3i-SmoDE=QN@)}-<#~1XfKLrP$PpL<8+^KE;Mlti=gj1l)EBs z&g;{*ZYEeCa_i?bS?AFDPZ17Gj=pt$4Xk!XT9R4rO|+yk)GY(;&|95O0EF-?O{iL^ z^?g|Ru~(ER+QMag=V;!Szsi(!-d+gB)f+F#>%~I@Yue|;G76*|&<0*6F-_bZ z8TpX2m}IS*Q72v%m$>TL<)d%}4bZOUov zhh^RJ*p|ZCVuBJveynZBpZY-e(rsgji76Q%tvS8zzipgvX=%wwjFb6LqPCzAg(6u;`)jgEgcEFn%Z(DL2It zdWSGBLP*qKVGTa@uEqs3btk z*kFprCWRkRTQSS`&y6AD)~GAMfHuU|t-+2p>i0m>cS4@&SMGeVrc$3${){m+2w`PQ znbR-EAQJfVZ?xo? z{i+WOLMu{d5{f@a$FVGXVL7n385mk)snnSlM9fU?Qpe99{Q)X)0y}c3CDvjZigGLu zIIr2gP)~*F2Sy!_jF;>T59r@(zW91wc&~;i%A|z-r06QD00kp^TgBI2<@;v0*gQqe z<>|{)E~J>d^M%d_?}Xk_Q^}oS^>H^_?*+S)s+(=gTIWb;7%o&h`7MZFL)c z{m@0HLsDh`!(S-JbB+v**FzmR7<7iANc+~Xdb|Mtjs&X7H4Xz5R%kj`7oA!tnF!Z} zkTO#ZF&1KZ@@#e)ZMW=+EhOqDZxSXm;Wri81@|yU-r9_3a()B=LbXi|O5FoeUA7Xb zjBlQQij~OkrKkt7XWk-C`jbU5zD_hs$}W**_c=?5nM#T!zfxxRi-+ZIPP)Ii_yFhF ztcFzf^~{_RA@~L#oYA#BxVsZ=KXoMT*{V$R(1dCT(KIX zSn|ZonP5Ev<}*+B&~YkD)t958rmDRR z;vD&J)uqQDN|Nhd=a7wjD&HReMR212M~XoD4MVy>_5}h4a?@xF(Zpt9O@_`!jF`vmC7umFbKM|ChojP*FsfQ zk$R|+`|BreG5PkSl#3`GFTdrvmJ4IhGEd{?d8>dij|7WLqs%U834@nWX>Fe&3q^Z= z&M59G3~lB38lw}PLJ1R3EL{rCVAk>$BjhD7JVXR_Q;aKI(y_RAX4$FlUR3(@KvXy zi;F-dmx&rd-(3Mo@F}YP;1GAk-jgX<4$u7|x8`k1Y}koAruszFI(;lwqHAFxpR4Zf zU8C?NHxC7Gr&@AFQHq2b8Fig95#bXTKY<*1JMlY3_8u-=2Q-p40do-{VHxqsaTpfhE6oLULOno(4nLn!TG!oOa2hVM~{k zEy6mqw(*eMg0k>*TXKAX-B@nhTNtmsn^Rr&Tao&xk=*|8f+Phas60{tI>n zKfAx2eIZ3L4~%BkHQB>r>M`y5@$mklgdSXV4?~0OaT;1W9S?rUispoS=!U0dYH}Z` z(+8jDdP%y7DdOtgzL}eMG}I>wU#*1i)t2V<_T3ftyY!`91?s&68>_QUmKDMuNJbu! zG@u9GK6m0uyEA2-*-xs)9GIji7x$`O<|`VOQ^s(d$IrsP()FqzyWx0o!a4qM!NiB zZjw5YnIOpu!W``PE`E5w#gfkd$8~WE*W$C^BjV29{}RFN`C|NYrwTk-RQqCN|64+W z4edC$5QDk8oMl?JUBubCFiqk$>mW%^|JPnRWt7qMpwPyO=aiyBMcBuU*|O@dj;*$W8Bb>Xtyx;oSK$maDv=SCM3v+TA z+W&s0$R8d+W)bjMKk;7F+PJr;z4)K6+A#B!@~8Og$nom)ohn58l*Tuc31<}8> zl@aStvFc5HG=(|pfjn6((TB9vuhMi64L{@`uh9iCsw5=@-p-|c)|$hOK5}rGRimbF ziN*5Z_2&GWdts8JVH`$D&*qsta3=`UlNHp}$sl1ym4runKmTG#HlAZ@QU8vc$6j_skr+2hI$s4g=rbese9n$m z-X^1^I&-57D*dZyv>I7k>1u`7&eZRIi)C2sN2=g7R)~?y7{EB9 z@l3$*;@^hM^D`v!!7xabiVODr%4?n&FM3XJgPMyvHu=p}RK=Qqst+Z(P|IjWcF!Fj z-AGV=7t;TwgnRSGG2yf5w1H&^Q}Rcne9o6itH{D$7}v4RW-1YNW7e75P-*+1K~i0* zb45E!ujxC_X28u3;hNhL{mRx7*Iq@Ubk+A$GvPH11z>+4?I5!bztuUG$kOTR;_&U~ zs5%`9E`HF24^Dh&|CC@jN5L9Ok}G{YlM!*0hOc+Qcki9s1dlYvha!dwHk?EnD-0fE z@2+}!G6jv`$ADP8k^Ui z?QwF__0YY=_cp#}t@6;&CD-_4j?8>2HZOaf=wl|<^<5_#tJ+6P?8}QnPs^j;sN(!o z*w$mAY8SD+(;7O{+-kN<(faToS1b8nF=}2}TcG4XDcrMQ560F(&=lD>H643_8vKd` zvGL_UBmdq+*Te?l92_xW%?b(uq?%%Xk5?>DIFNR0JcqsE3T!TuleaRTsXAfO2Wxz4 zqn)=@ABz)~mhe72A6^oxTkN9=QMA;X5~v}1rey0(lAb+8=zqU=?i3>Hn0waGdVYuVnW^HUA$HE%pv*ThKfhCjXWNe{3dW_RgfrsUd~a5tnJnK%Se_;YUY>FH%1URNH5rjBHusLh2NaV6h#?c z!YH1arsn$#QJ5>8xho%k4{F7@Sb<*Wd%fqs>)OoVHz6?yJhxeGaVl}b{nCm1y>q=# zsgIZ*s-*=j@nmOqz07t0Av}%EuU$QA@Ueu~+fI(S0%PX(CONsgJ*DdtqLj_{HznZ` z6E(EdZ?r;5Ups^_yIhxIk~R68&B510Me@6l|BgxdE&j3j))%>Ys{NQe}xr&l75bVlER@nodvn4Qf8ju^gvoYL@PGtv)<~MV0WmFs zA`BlXNhPW)Eg(f5B&_a=?@3@@-!w&u)=lvA&t$;(aqR^Zx!yw_1QIa;0f_!kGEGI2 z@c#ZO{~PXJAA--ieErLFrQV`?hkIwXOKA1%ioGk^RM(<2NjUGjjd!L0C{`6ckm!%$ zF0U|n!5Mzr)#xk#z4XhwIr6f18e&-sb~k7?I2gaJ_OceOP;|;F1Ygq3G$`>6867pa z(%zY>I*7P*Y0coNz3C8dzH=6IYu%Ye{u#mbi9VMrUzn-!UKNyS4MedBF~#M1@F`C6 zoJM<{KTNd>qgE8|5AS$8S$+Uq9DV=Xt(A+B-R0(+l_g<~r)wE;B3s>6yn0W>{bLzb zk0ySoc-D9nS0+^)5Tne~;$P2y#bScYR-G`%NuZ~TP4L@ZSq>VT`6by#qD$NA?3Wjs z^H9~)tKYjIZkFhg5pHAOIA3y2l!(g-fX&gu=aTDn>QrBh_}#Ov*#v}5_n)A}t#t8I zsyjOV6@CzYz00sH3#)hw64#KPo>hLDEVvRqT3W}xUzRhH)6Tg3v@dP?|6o-u6xxxV zFbwq~IhF*EGeT$~3kNJ*KyQfw7)kk+H^cW*21%n>70Tm? z=sLi-hd5WNzYjyk7i93jQ2ZQ2li2_zc#VYMqSX0djQPw?Z+;A_Fr6Sw>i=Y|#}6Tz z#BT;ZZqGF}+3vH?-9*+t7Qg&DjB@v~K7*MMZeJuXzV#$@6Kw565*Z!(_2y z_^lyIYmD|>8|+p;k91QLtYrh=={EdT?B>$a7Xnc(-e5+TQ|xbNtLKqr+93?g zt@xHVzR|s+5yhsRM)R;SWnj&*aAo3EhpA1+_G*(DYJ0bOn^e7~ix11yF{`4YRc+4; ziN~6`c^@_(zR?{iuMJlc!OoFzsjb0zmV#9X4xFyrK{n3JkI|AO;+R%+Iu(7k=9p}{ zOLo3zPZUsDjSHe1etpYPOy?f=6w>@!=8aA_2+j0gn?ddaFYqZL{ifNOnSP+K(3!mi zT^}!ioUjU5Sy>?~H7}=$>Z4^)E-HZ708$T@V5xw`1HzF%f#Au1!ulVT92hxyS1utj z5~;pIixT8-kfapcJNBFVHW$}YRtUpS80UuvcK64h8{7!*kC+tU86C-p0|=+zHMC&z95PM5(W$G835J+JV=(n#Qr~_U{kUB;h^3QxLG^At^UuSd#!66*WSPR z@`d!~(*{Thhblhcu87m?@8!16_AZ0xeFg+j+;kOz`a9_H%3`z` z9^m2Q>q3hkv0y4$cx}FeMLr$=a=w?_Pr-%V0Il2x!1Ro_Hw;ar>vN&0*ndCIIqYA? z_J}FxU<79b$x3``>cDWCh;FNw5Hh-MYyTgzG(#}12-ahFt zT+`MYV^eNlai>oX9g9_(=& zY6-NJJvdFeKn}c@SA`@(P~W#gNwf5d$+N$!oxRyDqf5$KRA}k6e66^5h;jly&6uMF zG!~596nkfN;ZzOV2bUf#JU_M8DD6R!wvUX_W54^Lk!-ME-M?!ildziu~v>$^h@S;(|5tn(c6Dh zs(CN?c+T*A^~qvo80p$)l(hyN5|kG4$1<$c;$t!1eyR*y(s!QmJLC)3c`YqER6x|0 zl1qGmY@faAyX7vcO?$0Z|MHE+riQV+8eKb-OTYYFDnLF_T7>I})2L}~^ z_Y(rmRxbT9+;)MmgrwxBdxQf|UjdlWkfEKgJ^}(lEcHF)g@{~0y_gA^xX|H5qE?Ws zKKO&&|B42Z*n&kvVaj%0Z?8#_-v2>HpKS|?*g7fcOcK(0wU(=pl_9u^*WBk zS0xYp4ch;MxagXL#6nK>yxpxj{o>`%Z~54N`5Xm-|NGWw%%Uzs5DwM} zs`v!N7c`+!4Iw0D^IJm#{0o?V05l>?O}h7QU0Aqu>ul+f2sR)czRom2+7{^huAGcz zTuOt^8Ug4Hy!J3bmm&FP zok0$4{^zZ_>PbLN`%@o{7l^Pb6dM9yRJgV+_<>fdOPjTp13M` z)a6VDDZ6U2@;$flUG_-Z#1n&uZp-_b6<>O9(KNT#$B z>620Au&E>INF7-4P+QdPeVj+YhMZ`0XhEt-p>H%VMJb1bs1D2hMjo~2#QJJ~gBoX~ zUYp&xF)nBAsK$J2+@ohgD~v1wA4l*6>VpJV9ccA4H?FBOeKhZ8)r@;3OyyI#$d@-H zTAZQ%MNsb6H5_Zj#gcCh7uExio}8e^8%&2034Uw;eA=E$7L6yZ`FUwwcD^DZ8Sl_) zFK_cYv%d>I{PiFf^KDpk#Gko&4&m(oQdSQAfbSpKA!Gl5j&k?T@d30#p9_T|d4EV# z6uz(qN;;4df&U#hM>UNZhEy;LG(ICrb3a&(c>wE%I|9k>MN-e;bUf*J-V<}}Gtvr! zVTjY^+rEV|$G`p;U*%JewfA$|3A31ST(K+4wa`WeP`q!5QbU!Syv02`0U=lW@_4|1+azFw5JIXHTcwYmr`?U_))_RaDirifl z9614o;}n^!frUhn0&y+Gk6d#jE@JvtU6>|ZUrDx?Dd)MyZg99_ zGp}Rw(EW}z<~uItejZQOG#>8H5+J+lL9<(6q32F^^O9vkUFW-vwC__=coK$tP+gZm z!z8FSUT04uh0~%*;o&*18otI};l)|-$3DV8-YGoM+M8{eUm_E3|JV(=ib{X06Gpe>5>*fLMfFHq){3q1xW=t>-qi18F$=s#vS*?eqjOb z{d{AsHRoq8?E8D8Y?RwBJ|7A1&Qf)lR^*`UvY@>XT{dde|F+U4qYZ5MqYe)>(%|}M zSU<`X-5VC!TnebR8~@$=p))ZxMS_Jk$|>fd={XPGS5R6O8b1}s)Fswj=+b`esH+}} zS@nmN`cniio%FBDsx<9sElYS9AS8 zt|qsljV(~;K-GYV3_cz}O(Jx?MG~YIKD$3eMJuEqI5}~HJl+aP6P<6-SkEWW$tSqrtIz``+zv6#1ro=DkqLTdU@1;+Nc~w%G-`~IA{(W!0`m%qz z;?^dZn+XA>U%JqNWtS!_1r#qpW9EZr#04594u65sg+DQFz2Cs9f*4%hfw@axU!M>U z0~_s{@x#9{aA)h24+H~e@Z2u@E@j&PPRSmYE`VGKgqsA_+lTqe6CdEr*f}}Hx#E9_ zL3|!?PQP*Z#sv}|Kp1t93p(1{7s8VBlCaB`|vjQIZ6^A=o}p~gHtbikn3-3ruvdP#x0-Nm|cHz8lWPAF36>4%@X zzx?JioUYR-#9*@PTw-B7x{G0UHQu8UOin6CPe~>r7UdF0A$QWn`CWk})c(ZqqDXz9 zc%@9HXtZ2$-(-P)G}N4!kIGR+b^G2i|G4FAiC2oPIemElnl4G$Khqj*SxVTI+mE_Q zEcE@WY+8S`Zb@P$2*Xw8M*Y7S6PyqYChO>UD}>p?%Wz4dByEZfQ)F0&uu!ie#)bb0 zd%sas_xI-;GCx04gjHTJ|YA1}E3nI@^1O9&J_|CTk2% zOf(V3zP>iV1Ly6-@syt1QmR9JwD?xPX;iknW8`pU2$x^u5m5M&tZm_&aekr3bBa&f zH0AvyP@woa5IA#hK%8VV z#dln{=A7>TzVYy4nF4tF|EVf~C2Q3%)4JO{=SvzztWYnpP`4k5)8kZZG@-$ntp>}l8BK0XWc%@*iLArC*Sp+jUV*XH;D7s&H&g1`bD zEy$TSspGyP@$MHnK1%1Yn)|0d!2C^I)nc3aH$ zKM)XP(Y_#=62 zn8MQ8yF=f}NF35i`PE0r~+o=Fcc zSm5fSh~U}l`=9p(HO`m_(pC4fS1{a9Z@N+pV#J!3*fBr~HKuZ`RHPu#c9R(xiu5`}$9(B{|q&3*isBpL_9kH#U% z3>z8$O0_>r1WNfmyo@A|ZAHJw?dLE^D_t5!PQ{9yFUPGkK4H;gwi+E7mfA0m(R-aV z^>*GRT}ZoB?@nW4ky@eKkEz&9!AH`wdpFcWwtnHNnCtFd-W7aRK0bD-M}THWEa~HA zfFGTdoi!29W|=~@J)lI0X6nql`Ar|CxE}wvbRFw$jKIKdoKDa1vw-1pyo6_m`*8;= z{nqtH2m>GSo{Bx;<>p3u#Xb`BUpUUewMM8=-;brMg>(?$nYd2;XzPE+i^uCY=fm&* zAJXUj|D?}S|3A{_hw6+2c7k55lhFABN}+XLrjG;ONCtl>=q!(X1LkEPjy`|u2F45| ztpYLYAz27T)6Y=WAp_7yGw}nu=?g$>gRqp`Uy9-CfZ?hTedhlVK2tk^ zCJKblavGIfoSfYje05H9!e1VYgFqD#7m9m3r*F{lygh`*7y{S_Ih_VxsAU-+bF8WM zvu!XSKI#rZk1QHMlGfk?SmHzwE{o8i^|XYk<1WBzw1OmQtQ;glqA>g&(iH`$)&A2O z0)-!Gxfovy6nqxgYKbd!o$*-DjxBod&g(_L13ed;Wx?0KYZIFB+mg1uTO5w=-@9(T zs;Z|twyRI^-qQ+~JD-91=g~X*_-KONPuXF~-!5F9#-;vQMZwkWBdPdp|KDc$$tc_! zWpfB+Po+fp2C?s0P_aUv0Z8Nn7Rjp)3fAVhp0E<7$(`k1m%C1~`uJ!`Mft3Z%;eYe zalu7J=d_)!4gGSB>ZZq8ZVRz$^bxgH+yZ6kx}!9I?}MJFL-PaMg#EKTh9`fo|LE|t zhvGy?LWWOHgw{g+@zu{-uLkt&uOXD0N|U&PM6C0R{fSb1N%!iA0$|suD&_{1M+xT78Vp|No;-~#}ft@4DN^|FIr}sT96UT{I)4PfRR}Z-L9tS4; zd47papv~L(^}>LSD!u>yUg6Eg#>PdrHvP1)VqI=@OcrXM+{JT6jN|1q@y$ zOF2ppU!E;z+DvQ2s!(NYIFr_cArCQ?w(ob+K=#vT8Bx) z;~OBb?)~Y3Bv}Er0AhjP1K~e}+h|V4KPTwKXM6OI=+eLcHA^ zWrA)M$W4*v7WnG-I!?`zz;%dPw2~is+XHbbgGh)3WK1CRJ;acjnwt9Vd_CJA`f&Tn z&EFaRTVt@?t-*o?SNb&2LOadXm&ZVd;Wo6vBo!6f<&FYyFhUWfEdLymQvQEqM;n?K zoLd?IN{={Jfm1&4`LhjBfX%4abnwv3L>*Y$7n~7rETsBC-QhAcM? z*e68Mv}PA-_adQR7PAw=OtAP`ZZ6ppXfbrDp7o3;O*wa#eJr%}4H+9PLtN?257ZhC z&q%zhGkt9n%YW)wvxFvx*6UlSP-h$ri96AwzTd)fp}sSHKKS?gSLdgr{`y~Z2$WHk z87N(aPBTb7lCv=N*@VX~YOi1a%F_rA*tsn#h8xkFM~Z!=vHjkSQRGa_HmsRgnHW6Y z?fgn)v<)=L{6fznN(AG0bVEgGPjnL{_+lg-3#d9CK6bt*;(!%}>`#La}qx|d#)7RKn9x_IgDrWnjzU>e7 zoTRTF5Pe+I$+&tS^nXja1-VH<;tyU-IT$7*G3v`PypLhmyso={h{S^cg}?$@KhUO$ zfJRY+@9`E>OzR0cqSQ|M^5*}o)Se(tefsVI1Ig3L1S~H!wYZ=&_aSKYWjsVpAqZ$B zvK49m!pe|(Ek6n^;x4$@_<-3qL(G#48qmlQMoLEJIky*ZdinfhSX?Sv?CNSHbGLow z%j?tc!6=2;*HrcD3a0A{B17`LtTdrkjr|EAJ0J ze);9({E~k#S^N5{uG5oqpB=fG-1E=2kA)lZz5P0_KGa$EBHtJ^xr_n=$)Mr(m{|uA zuR@_VpG6l+PfrgACnuALNCwpFNDXo}i!TZ5sb3NX>%w; z3QK}!fF^k0p?kzAESy$W#_^-_j(Kf5+`ss3hjUoCoNA4mhNfhH8ks&@OND~Zx?u*t zJq@wCBRdwj9a+E@)NLo|2G=^znRO)J9(EK&`>mcS5Dp-Zb5&74ghqkjvLP*)A@Ga| z);yAU-#Nlfjtj|AozI{D4{6{K*sI=cuUV8%szi3`MI@_4?9*#gxj5tcksqCkv8q#)p~HYwcXNepR45kXEy% z8IQ4g)}~L@|DtMh_+^)!D4}hyw`iz}heahl_eVE>?9~wlQBjrb=&5?6y|yOCx2IP) zzISA{uqOWa^l|KbMSj(PM5@p3bDBwjC`_EPwKi@e}C|i<0V|7pqBxq@~S4 zp6v^mf2lAhEoGda>RP)cktIi|>RVQ~ET1S~REr#!)`TqtJ5Pw1((IP$8-Lz%5&rjw zMXy%O)iPQyE0mE&!?`rvMQ?<%&C3aw%TGj8^-<}E*O!$2Ie)G-${C1uRerSoe!a0Y z4O5JgMgZ$+Obj``BF6OzgN#tW^#@p^c1MKQGYl-tvgXQoC8h2BtrFs%OKhor;^SDe zO^KUD-WO7wB#Zkb2H&MkF(^{4STfP$&|<}ox4kBAN0pJ!EO{3=zW?P@7-I3eJSPAA zCyl%g`117!~(B@KFxKh@68^0)L`}y&2%l$Z7(d0*;(&#*QR;X@BeuR^1 zSMQnBq#q!R`qgisXGjHzK`Zy(&Lvb6fAo_RJ`_%^D^IyVA63a?= zCA6Vw@1s$yzE6tZDP}>q*$xg46sUD9mcrTfa|t{C`dq31UE~n6kIpFp7S`gut8)T` zEbqS$KX5>Qo&&c0WQ~7U zSGF1P(NVe~mG4rBH^#<bW=`?I+D@eJjJcfYU+ zw%Rro&Zg^IE4{B1mT0~9-%gX#7>{HLKL?4`Y$1QkVj*)6oV^%|&UA7Ies?hQ| z@R6YG@Fjh%xvO!F4iAS4EvTuGDq#^Fn^YH9<3(QkeH6CcKM%UII2uFpG`8;_Z=Utb z-5h+8++H1gmY5f%t&|zUFRrF7y85z`G`nuMTy)sH-*!XufgRTv$z(~sYxPWbS7NYF zR<05Hj33wA6v}U@cD*mP&RgkN`(Id9{y>#(l%n!{biGE`($U&VuttmMlL;O^=zKr5AFm4>6-&1M-KJa zw)USm#o1s+SYA`3n207Dd+7bPT2rlQOheHH!y)_+VMIQD!Yr!sc>Rmxm5o>%BwCUB z+nsAK1OM&+0#A8*WzE*y6Y+cfeNR{OhCg53_}5BN}e6OX^){u7f*+@XmmN=Yx3BPSMbTYS)`^l5Kk>Q zcx%imT`zTQz~V-HSKhaO`Z<31@oC0rGK{+UA4V$wXg->;Y_QZG7;}AU!sfc3r?$&& zVCdndDyZB3Z}W2hZ758PM(9P?gcNX2j_){EO<8?wAH@ICw@@Bvd}N1xU!Rz8)?M)> z2hM5>?h2Y?(P*@<;lGPs*OM*L3O9lRy`j@j%e$g0f2vk3DRWE8Xb;;AqBRiVpn zce4kDUo|>Pc4fG*^~fVqN<}l-Fr%==Bo|!s+c*?8Lwe))HhstypUJvpuRTG3;Gr5w zer>k|jk)6#DMDp2m+TwI=Q#x^3uDf?Qv77CX47d?IA8>YsP0sWFofkMp8G+GhG z{mNvVk_eQhBp*GAnykrC#g{h|MYyo`x*>z|yoXby>P;bOiPn0HkW%fPZTs7QA04o# zPpOy@9Cx6NmJ5;IQq^h07h`jnT+9EOL8qt}D~@-+;KF;-H*(CTwr+IZe81+Goer0Y z^bhx;a_W+h%UvtW?kwd-oa+y-Jlvd^G%@NG$S>W+sst5IavIi_b7J^JRkg)dZJko5 zBR##3RT8E|xAJ~Q?W7pjoG$RrEKQY@N*kz|5QtyE2oSN{<}HTz5?d-Z6J z!%Uzg`|io0>uxnS) zO$9D14tm;5zB(MM)Q!Wtp``R3v{XCY9;!iv4Z*r4{;|qt0$c=D-|OBgCAbQ5xf2vT zegE)=l_a~_$hXW`v26_Ij*pQ%iD*&O3b^q_FTGVgZueN{E@A4W&ZYXob}UaS|D+@? z_bcZYd5((FBMT7C@34`$PCmK5`kp&Lm$F^1cf&8;Re?0&wV$TOF3>^L=sB32xLt}`b;Ix>AmC=~M#E2)+e?S#ABvGh z7zm@Vc&e;A8+|KYVZg1v|IhDmmYQ(cx5k6zc9(im(W^>5t1pA%Y(qms04(A_XR8k( ziqM(lw5yo1;2(HEoTu1cODgTc$!}Mo{UYzJRTaa%KzO&^-@w*>CDUi_&l8`u3+LWT ze!`0A6gvP3jj}1l`R()l$|g|6=n$J2!ob>` zNm1?4)W|d!{>SV&$kB1_VeMXa%A-O(n>wzYX?X5Zl8S5Cddy-M(@e%EVyZ=Av@~y* z7ZjkhFT@*`vlt8f-MgX9ic6 zo%5ayQCacgn>lRl0q$S#strDb9mQfj#C#U2i)D9Jb3cZ>(MgqcYOu**u3oO@4nca4 zYql!EV-*gGO?_WtjVQOj1)9gLaJK%Tzm5J2o@jWpH32U8_nvZ)rbfNW-T_&mhCC^$ z|H(>vN8tR>JL02Vp}e>WBFnv*JlpDCC8FB{I+?zO=p|*{)~-3fM2?S-A;gUZ>)M08 zNFHXz+;L8)k{c277`Mj4PpVu|T_%MnmMWZTizjauf4SAY@-y>9t-r^doA+eSlv^M3 zs7kd$vHY>4OXvuv4yW+)=h}Pa^VgZequSLQ9pDg$pcS>G zDmqcpmInVBEXZ~vcTT5kl9h{O&-&u{N3rStc9KDdWHScsn55tP*S7J!E4O9W648^n zJ}Rmj?ux@#rd3|5aWO?DQ&z>KFI5gVk=DhsLAPCUuKP<%T%;ByV-`pG_4jiVu96V9 z2LA=-V-*h8q=dhV52m#r$OL`G8(_BN?3PS_af8qQ!#DZ2YJ?KRJl%4|J@G4DQMRhk zoP0PT`JH?{=Iy5uS!5e6A|#7Qz4ifTEu+`Bduijpcl*MF1bMroEr%%Q{)@O9-3;Ip>U&F zTJ&3OFO9L$qA*&gTCyrTh3oX&QBySD^RCDcBp1&udt0{&sF{OROYx$!i`a z&I-Aqw2wZkr@x+B@brF9v+}oBVW(AkR((P4F5)pdUc|V!{@CwhC+Ha&DVvzkP?w~s zGfjKHU)2o?<@%kg&_hapN5_f`wPW$u@BewM-^TnHxMWzXx;5NuFkX{UuGVMzP2I_Q zzghezHC3$QH#u%iv5dqVxuzD%R5@o8c>Huu#`8$1<&s~8mJdx5nr10Vyj5i76%?$f z-&(+&!+c zBbADc7TS~tjX4N4$_9c9W!LJ~Xu1*f*~Bj<455c5>KlonT8uHguY&RkP$s} zeZOYY?53{CBNE0If{HPvqWh=s+^alSjnoI?KXTP$7u$VsbocbT8rC_DZFZTT6?P<5edC!bDq4Bm<0c~gS^9f7k>m0Fp)F*SXCxHc|Ar!$&tr2`Ds$v# zEb_!FN($o+Zhw3wV6C0S`FD52Tr%%<$Kz2)#}CBc#4!q=O$hePyG6T&S}5pO)aOel z48WB;gD_rGd(0|j8z0`BV5aNZkvQ|YVTSVQv{XkJr{=3Yg!HO0)s%@8%dZW2uNK}G zPQ_0d89b|dJo;cLh|fKNL5_)QI_;I>ZmJ$v8uHd`N#alavQzB6zfikX@^ z#}fLDyHmO5D~)oMc5r>f$4s$1KI?)xUogo&hn}YEY;1N0yA}zO>oeovNF+yyrKX3C z=6S2;Wb@_V;OI2Pgu~rCB|k{7$D!%X^Y>LgQUhf1N;4sItV$HwTa8B7OwCkL#U^}H z=_T0}$Yiyx2=X-UtCL_3I&5ued*HBqqd7@36Qhmb7CcL z*EfB<0o;SSH;Ss&+#PPWOFO=lvPU;%6-?(n47>iB(v69F4plxqXu>?beItTyVYbEn z-oOX1;=!8qQ>W@Q$5Cki%!z$lp~f=MKX$Mo?8@fE^;FnOCM0~&^7fQ@KlL1wuWWU| zBBmv$Y9P;mX^+wOOio}aZkR&49^&ZiSpo&{0l5jnneC0ZXXB2Fi(H=9;m7iMwBL;z8LKhn5Q;>r|Q=7!E87N?6p2R5Y4~Lv?{8%y9$7(Y+F`hlx9lWGSOxzUu1 zpq7U5ZhdE0S}?(z3kuaa-Kmqo3K{*jv|(5{uD`Suu1yp=L=fHX)WXLx^ndw2adoaNOECufXgk1s7`M}8?I*@t~9?Yx>L127xaxx{qm3;n4 z+xu3SW3&OGv%Sd)=7c~=`cE(q0|jW1B23fu;oLdL-@jp>?6te5VPu*bl=G(Qu*iRFVp-RU zZCAyKYoo>`r97iQ^|n0qn>=($gh*KQEjAw&rp9iwuei=?M{&tE@uRI%Sp3d0HA!3< z)7B1_)m~10H^I5U8g?9?NkGwj0pt`YqydO?%%4~0knMsTwM0tO)YIWX7t>-Tw`W00H~2tR7-?OiWDkzT4G}jkF%oAnuHS z2Kq0+mJrg>X@K$@J_k_9Bji(vd>q?8#-kDl12Lzk=t=GSe?xE@j{Wrb@bRN7jNiV_ z`i>5!WMm8=GCdgg@n@jjey(O>@ z0rKA|m@YuQd*IuFKzv!**b2vgQVQ5$}z))JTh$6Eq6k44pfDv{& z+@nc|ruwFb()9MCbo?ql1#zOOIoh{+3LmLd^QR&>@(x9TXhg9#k|C~Ii&!42}@lEVLG<63O=qxlf zGnW5Sz<@)rsb&Mt)|XzpHe6S4$Wmve%Y@V3UY0aId$;LpUQc7DWMIzgtcp#{9;)2 zLYW2o)b{8VAK8x_NHj{~GFIX*7w%Dd5-@*uE)cc5nP-7X9}&406#O=Y{YS&7&cd=@ zkD>3E50PY)vP#FZqPh01x#s@@rnUk_PpWzIV^oVbCz}x!Ib>t9BcNAkN)`j9E8y?! zCr@LOOc;70>^Vr<1lIu{Y|w}z7MRce)>TIJ*Io{OfH``5>?NXY2aReXz{e5jCiolG zV6vrJk_^Olga!{f%`eF85F~&g$hQ3-?$+qtJ_P4#ogmo66#)5Z+PPjMph#@#Q7?MG~w~bMePz$jqdhX+55@AQu@ za6|l;%L}6!EieJ~KmYfe!5o(R3UxjzDr*151%y~`z)rM(a-M@n9)tdJFidwwe7y|0 z9^YJ<{axn2cQ?hD#Bx@|I6B(JZ=S=?h^@80E<~FjwRW|{e9cCgpyl(Xy5ewn*v^;Y z!LkxfyS_@o2bW{K>KOs65lle<;)KR>DsMG69yV`v(k;}oAGWV2cNmpPY5YgSs=?zzuo-yw3F%XsK`qU5eu zG+wjkP%_ce-kMz(bvu3?S$SYXEd=XZ6v=ES zHL%LgHn8GzqDPYX{#e>5wXHXny>J=ZL(NGX|I4Di_J5K2_LNBVG z!2_EKBSa(-GBPqz%^nZqzequcCh9JV>UZFtKypn{e89yvo2Jx^qkLu?*s1H=DW$VNxC5$hZZV%~$u;pZUy#aB$A-=*0G{M-h_ zL|nI#6NT|Runm)8SIGP7xu1bMFoqDi(!o`e0n3pgS5rw^8b!6_&8N0JELb7=0l&RO zXc74&&=8aOt!*MK0F4F4&|4sD=+lXtht)JP4`1P?=Y?GT+%6KIjO=0=>Po}12oet2 zR_p5*rm}T7ND)DRKftu5SiB*!1P*88m|5y%?vRU@eYau_WLGOm5}I0zPKz7h$QjENeN;w~ZF|Mb66 z)GxOPsY`BeVk`|>)b7|ZOsH1#gtaDqudHqN??MZF!>i=+XvyGNIeE6W)9*L7ALudg zC|#yc0HFw)Pq6z0YnI=PVyx)?QfYmO=$ z*oZp5AQKi&M}N>_Tn(}FcTwaC<8jc*l5RidEI$)$)GSnFD{vO+O6J~f^)$tffS(WTKCjR?7=q1Lhlj(jZr$_Sf3v?%Y3o*S*7LYQnbm>2k$Ru^0 z!UDuyppkcTcMni>_VPL*%0~^wWbpW)s4y76oRvilP|O+7W{G?4fCozImlKN$G3ZRd zf|<`hlPlK0xM&d)s#T+O21_SH;+X(Q4v<6>1blz1_FZy80b@vLC}LCv2=W@N80(=F z&d)ib`4W_0-Me0=Wik`z8L*E)nV3H|7d-wG4#bTz>#&Fj68gX` zM*-*tz->2)H44!TDb2qI=R2rbf&puP6xN>)kkMkLgx4V4heiRCsKE1fllkEXAApi0 zmj<&Fs5jIpSiIraNbqrlQ-j;ukTt!ykkE11#+;tu-Mj8%3KaaH-8OtazS958tA=W#zsTVDiN~uuu7IH+Z*b#ymP16*=2ht^ z!SDxrCknx@Y$WE6rLC|1g!&ggBInDjBZi5CtHPXV)rih!tO z*cXXwTO8wjz|IVXi4^z_u-sW^bXmOusA>kN+fF^q89g6kqB^h~u+JP=@IEbiAYp_< zcuU`EPl0V`cvIj}FSjZ$FVEe77X}Fo#nq;JLQhT`bxMVZ7~I@q4)+Rl%Q%McbE4(uWg#|isMhU#TXi_Z~OvzjA!O{ zo}^#=gLFS&j?0bY^k zL#bre<1!zOjR6aLWz&Q>KUOrE0#Wg}BQs}OX>5a7V%?~Q@ZXSa!4FjcYzT0!`Ty$1 zOi4>C(k*X2dqBSZGG*U9-36ZG*06pT!io4Q+onCDY(O22L4Yua z5xE;zYBb2l;rzXVH(XX*o6x#=gze3DRrdk>cdv!tIbG9GP*m-8io`+B?9N0H;Ub8_ zbKn{aQ{VjNz9pTV6g&PFKaMjGCe771OgL}zGL>L%Ki)pPrA)pSDO)_MZv3HKfg--Y zBy;1@aZb!<=^3b>_|ER*@qC>?!wcSL| zx7b`RlIUQmZ6{pB$Q!aF#N9aBL@LejwS8!fPJUP(>(k$o5Hz4 zbku~Yl2WHQbXw{Akk7n;wJ7dqVJ>Z;hsXsQngMs*ELM+S>-twT;r=#sOAydB0&T{| z#`cGD=K{iL&=_yti~uzu65R#WS1$k%rr9LVjLN<_NaWS{lJvf~u>xntO@99R`wqn5 zZQifE=ltXeD=+T|MWN)(b|+k7h>3}P;F(i3Y zm{8dc^o(v5Hr8#Bd-Ful$-(u+QGdT=!;|mvFVZ7!x3C5k%l`NnnLVs0)xrp)7YvjS z;9Z0eAiE}GXiCSm(&&ds%dPSjB)S+@*4?$^jBH|#q7`)8o_#Bi5lU)+#T3;Ms7V*5 zk)~I};>pi}PUa~&&)eelJc{@7+fOm+$9DUZkFY|d9lfYAS}ux>Vyn(_m!c823vwj| z*%>*Hsj`|H?$XlIJY0)7P6l2$%B>Qh2*S1H_p-4vfvQsRD2hdGoduD2nCohmjJwef zN)438bkjbxfgky`X_qZZ5iO~AQAXFBb!u@LrCxcDuQ$lvnIY4U9%92CB*Qh>OcAq^ zWCA7m3&0;Yz%~VO7qP4=NFR=BocCtkSk!$Fs~BTk>ErJfIXJ<~9NAhQln<4SoP?oI zBDpD#i*^!6qVke5rr2OOC339P+S%*nL(}Qve(gbSH`k^I9N4OxLTo$uuWj=}i;q!! z(C3Tft4GzdDC37J7ojy!0+ksYhA7_wjTX&PeE%pc$ks< z{g1%Eaqtmzo-O0T2R}G8R0JkmgtLRB=PY)i!U3fi82AtS+ZsDN`y0z%41h*}1)+EQ z*bT1v<8VGBs3+)vaDblx7R(}aJRG8hm&P z5OZiYAjViu_&1OtwFHKIi5=6J=x89T(*Rh)jWa{DA3BXl_7L2ucq{MM?&;3?2|{oI zVr;+Kzq-8l9r_w@y@JF&+$%`KLF_*XZy);joVmWoRq9=HbA^uHAsn*@-IxrE2R>yL z6-5;lTXm7g@Hxoq=!_BN$}KzsV+*+1!fo@Oy?~1#ah&4H-<@IceVd;;Bx;tCRi_zb8Adw?dO- zvOYnAuvszo;_}hKL@Pmo%TH;-0g6xjTsK}hSOa8t5y@=<_)KVb7re8Pad8Sm>BY2P zblmQZZ<&h5@!hKl&j_M?cq7Y6D|f_B*XOf5E}5O|ANE}0E+1$7y=Dy3kPwalobEO9 z9SE8G(fYcMwn_G+Mkp%o)v2`Ervu7-NutmuYSy|kQ$bweukS3&(AdBVi~Q#yYj1gZ z*(NG5g1F&JxQSCY5hw18Z+kb29u&Xg`mkpbrp7}M|Hkl1$dd;g^J38W#|!Xz&&-p! zL0l6h%e`ecJ=qYqEU9tmJ+}9xP?ttSo|n_on-PckOK38m*qW_ko>6?5eEj{+*N7S7 z-UXvLJ+cu)UrTjnNZ_a_i0#RpK}|OJ?BBA3~c30pr*h0sr7srF(HQF@<`WCH9Y+x zRnxkR1B|3LptH9@%laI+)R>Eo3FBip8_Gyc&OwR;Wv#T45ha{7@=8iz&ZGuq??(P} zDJXpA15Ot*zN}m0^m?Wv?Fs~h2caK&1_mFY!M#$MDK)bl2-e_VSO0!oSwkNak4`KF zk_!&ON#`}Q4*U%ZsM{g>Ckc9wQhzpCq{+XzwJ+c?NFgSrY-qQ=HQ6|r(9=4Ae}J@1 zl2cPZLJZa!3>uVGw{m|RfVsUB;!r{3MJeXNp`)YIIR&Po_9uT~UqeP^FEcZreW({R z=Aet2n9x^@qy7j+Bz!dkdP!fw|C+cE(jfN&&k~k?geWFLy!r3#haTq(0*2w>>zHTY zu6w?GGcW|<+QWH{kj@~-(mxZQjO=hf;?o-Q-MbXo8vo*^Ve~z0)+;axy(F^s$7}KdIa5tDK*fM@6WS_3d+=V?2jD zV^t2;wJt$Vh^d^_iu8H?$TiqW8f-_{1qD;)YjLp;ed@Due`RdXu}}o3&>S~zF2p(} z2tG456T!VLSSdd7P~$^18KvA`9sv%n)M+wLG(z=vmV71Ef6oGsiFw-VY-e+)hp2Y7M#eYgD&FV$UwCoWu)^o}uY*GEh1^EZ!$l34-9Hw3k$4oAw4 zzco!^h_vU#2%Oz8!N2P;sBsk3)orNdM^op!=Evs4iZ&Q({zP_jjlM0HKbBto%isJW zVMP*0<$j%}+{xF9cXaociwd)r3jjOlz z4~(7#Ke?48IRJq$kLO!mr@1v}C+`6T>#Pw%+!R?i@=?+c>qIQo&G&-`#lX<*!VGto-jpoHEMiw2b>6y#P|Y_%5B04mLtJ70iK)9 z5w!F~wgQy|auPfw<0nX-!Fv&L+_(FA(EJn@U>>|WKl#ydeL!{`SYJYd^3>aDoe;(-Q5W%nkdVBQVIdXc*;_k3lAusP| z``RD3;o!}HSL-J~q@x+{H?Oy3q)8`oAx6LZ?}YuIat#B@=i(R3Pg2GYm+`1JX`Tog z7@Q1DH=#eWBYjgBuJDBQ&by~+RXqhyK3AtQ$}|jVyc~`GUTE=nSOIaTB1wK0)`WiM z-$Mf9=6f52jpLVv_wNoR#ZZcd7qJLTH#gvyuJ*AH{G`N5h-XwFdo3mCh8i-Qlt59E zpu|}=-S+t0^<+~juP=VU;+DZIhgC>C@0n}G2db6n-1)FUo~g#wTU<$rqr2Yx)`uSv z9+zWH8-~`)>;Nq%#>NUVY;4Dr+sS&lG$9nh%dBk_5Bo3QI8`1iWXY#vRTyU(1Q&>Q zZpv%H-O8(j);{5m4GW6e{eU?ZYwtL`NjY#`-8~*rR1vP{**_|;N zdqdp*mABkNDH1J776}v)H8}Tuh>|I`+(OH~QI`{V5Z4ggG-ZfiJ^b2SS)+H^ z7|i&HEKe#PZwteA@kyHFXR8~TXp=K`HPs;KUnp*V^?Bo$yJ)mB_V(p_?x3a6eimU0 zCZ7}^Qf=l5EA7oTk;Nx{@pPX6!J?wBZgX|BZTkCMs3ECcq$w^JZ;cpPGd1@!OJCN5 z0=XU?n{G!>x+kZrLPR(92}k=!WbXz3$wp#B;h`WQooMfvy3BcicpQ-An8wEM-jDx? z3IwuD5uk){SdD#(No_q5>}b08{0ED5OKMYP)Z1Obtwz>ktAzPsbt;J@VtWFvh>PBa zm`e_Mwypf^O#ex=3G(1et=fM5831}3^-4^$tXf@W1$0j<+(^ZCoBb$LT>fJHM4=VL zK1CEXL?M5?nCN}GXIh<(cR4?m+eKHnh{i9FRJU`8J7DaR<5RATa`E{y5hYP`{-WZEfqnw{a))gjG|~+I2yEASj7fY zFEq-|3wU^kGO#n}J5^1bBFolv!`}4Qe+wn_ckz?jYP&o?_YwYpf7%+Uop)5#1~bXI$xu51V{BK9`8#Xfwl)jML}2Z6D}NSFOzUf-1< ze545piJYN{ti0V@gm^>JUNt5QEGxcQHY~kxkus){F;%umi1m|TXUq9gfvSKewpw*@ z8BNW~nzKjFb=4O4_W7>#_Tlm`)y7=1aIRfPR-xAI)JDVY0RsFFg?3C|2?rDFm|AIe zMPjn+v8schHmktM{)+Op^LUXx6R=AkX>OjG5U&f|MJ^ER1 zjHM$P5+kyDk|r}l%N?UgKboo($rhr&rwV03kFh82+^KW?j#^OO6*$T$)3;UaElE0$U5S|J#VqNp3X0!CZQN$)+ zqfqmmBGyD(JBi0OUR@&xM|w_J)Oa?`-z+o`kQgo=qdr)I4Fr!$tvbqq1t{VC_-DpJFSVow14l>bD5vraB3iFVI8A< z%4(;`T~jB_dRK5gn{zxu`>9xvuD$?gAaU|sjFYX|%?JjpWa%KIgdzepR79^XLT6t{ z*I{@G+PsfXSN|Lk-SfOX{34X|Q*^YiaW=KqGt&~Y;co94?v%|HK6}5~n})W`ctjsc z@D-MZ<$gtrq`KuR$Jt5Oi4g^J@!HigNY6eh*KZm+77=>pwpt{pp&8I2w&IXdL_Fu! zcGs?4DSnSj;<5gg1N9OA=qH?VC0TJ@;mINoYz}mxTle#Pah|w4#X+TD#Pv%)JohkT z;gM>O&7tmXv=*gTpA5dV9xNuAVj13~S1FP&X5H%~LM!pLi%;HH`qF7(OlCZ^vPR!H z^~el!;5ZkhNpNsuMTnTwun22Ue5@QFE&N)g5vFvGC1DX-yYPkE(8?rfN|D}>&>pw` zOR~wk_^d$>uGcJPPdM4p9eUeP95(b;+sRv=j;^PcDf1;=ZaxrP>x`S?SaKq&PobP) zpp>tyhyoq#23uZ4%NLEgPK;TXW!-@h+;AnO$fD=Wq21PQF2YT>hPUsGrU_X%Hs>6+ z?qSRXJ#}x=uEb?w5%g02aoT1aC-WGr?b)g-|1@t&h_ODRXOgH{RSdBO|_i}1l*Li%E)3u9X$(};T9q`ZbUHg))mTVHDuPiMH4Lex^-K9M)w z$&gkc({%pZV-`fX%Ojd*kiu$xA)2Z{@1ln_K9b*=3HxzIiB%6zx%$! zGcb}wBRR~9dJ z8hs$<6u#2^zF3P&cZ`W$vw828vS(E|a-o{f&jYuKEOPxX$+4ZL$R?RICHnJe=XQ|?ft*0dy1Il zf%6HZ-oJbdgY4|FY^n}dn~_>%qncWqfOP+WzL(s(oRH6(OQ(>n7E3$8sG!a^Ro38= zdtnpZxW(+X|Fx%l>9i`Un$BV36|YlsN~qp*7%`KPVv+!=t`7Tw9eJIeOCcg+Mff}( z5Oqc8P(N9PDd#3zy;j%=piwS}OfeF9Y5Vib9ne!GcfKl0`6;g6b@1~Xp?rH`Qp{#S z>%&`&>apDTLI#&T_R`lu0zU85#;giaa8jMp+SM3$s@2u|=~^89I29`=-eUw0naZ9O zqrK9;d_7_^9)~9Q)iR_;Pe%9`u$M2-^?E+wdFJ@*)jv;KhKLIzLRDNuCvsm5zpfuS z9%PcZ8y9?`Un*Ujt4M=JZ?Lpji}a(IJK`rf)N7a#W0lo>uHdwDV%R4t5H}3o2K#Hg z?3|gUPfGRlMuK}0pw%7367nAThXh9V7`tle?e)M=$x`p`an}0{pxLxXKnY#*ZB=lx zro&2pG2D;@!wyE|w0jya%`R*$IHvocY$#xISXS~kJ2F2KCQBm6{I(tIz5gynh=$!Qz(A-F#?cLP(CgXZwPoiJ z%A4=J8F$O%POxC7bWC{%URPcm#0rL|LygBkR@3j*Ad&!VnQ%9mBxQ@F_0yI-}8r9Tm*lRIH7xPHn}=Ix}Q+% z5&L@@oQqNZ9f!k$4vtfFfF>R)yj^qfxFd~WsqEi=>+Jt3wu%Sd5>yz_h8 z0WGr=4I`;8oH}7?caa+}hd&9Jj<`t-?AIwOrm}7}i2}{WC#synuEj)7-e=`vIJyO? zo7J4JkA20M#WE_ae$Od~aYgl1wy6Z|ujETTuM+X+RW86o458GdqGL0AHNtpj%c#HH zNFwa@tT|c77=yr)|4+iCuC6D0`Oqt}Dl=V-mGhjc$TgiQdQ@Z7JwGt16Ya)_i~8M{ zgLm#Ah=k-`0eF{`38U6BEW*$0>Z~^x$>q32KPi2AedTBsO|+!qCxgrRKNt2+MEPja z_+^F`7R_i)S@pz9YQ%7`Y`N2T$}Y9~(4dl(QV|++%3BhZh1?U95^A&k%VU!ad=g_E z9jfL1WcuUB+j$gI&OXAqdVPGDQixJG_F&iF)b{7SL%uDFh{Q&UR|`rE?JPX0xDNE? z{p`_`e=#SK1#pWoHt)huL&C7Xi%JOuo|jdxQZZ|19Yp%R{g1qEeOvJ=-cTaal#*h( zoP(`k$I;mHWUTW;iZG&75`CB*&W>pSeeF1@2JUAuGiiI6soIZ(RuRWpJIR~l}+EoMplfkAsgP6`g5I@6J~$+IvScoW|t4=?7e+#kdD6*G-N2p!+sLwou&`|elp z1OGgIbBbR>^>w-z6wOAyqzHSu17m*XH5BpK#O&GBsg)x1af5$Ts#|slpD`9=DD$wW z!e+%7zlUEqPPT^m$ZV}n9m*cDxv6Ra>t$7Kg5c^c}b?m*IpcZaKz$b+BUotHr~)lP}NgCUH4OYD?YJ3qYP~zBDVV zfV68fm;!&pZb~itvJI0w;L^q#3n`dz5d&QvJ9a(S-58JWLo4*|?zC3ierJtok}fKS zi-#&5zYh*ej{RmVq$AYQ7a9y-QB3u2B_a?%<6oAz#!Iodapr8o$-5tS8@|3n$x`~) z26m1n?W|A2A?7i3V=|rPd8y>pvbI3}ng6xscJFUJLY#eH&o6_V=s6O=7G4sC)=mWnaVQ zLHyUNgE)h1tE;P>PlhLN3tn#LHTh7ZDqlREIQfGR^xfvYf5N*#H;dZtkd5NHRW|2r zQgVTKSW5Utn%0K-J9O=P3Q`J>DIY;{?0k-y{l&NAF{dBa$YiBL6i!Suga$BqFIQeP zj{^1mB#s*;;d(CY<3x-uy5&g8!qvuLq>F&|Iw8?s;!`PBwnjFiUv5?VNx28j^SKB4 zOc*%~7*n4K`4P`@yGJ2~UeTmH9`$(ry@d#X@HGq46FX_i;iqAg&AYGQxdo35fA>`` z@kJ4Jzm^KNe^vpmBze(z-fNncRwLU9u49rR^SzSBJ2@i6FTsIA1=uOpR4?=s#tN!~ z){*x(IhjRYZVzPHl;zNU4?+xrX@+Uq4%g;5sqrjVl;>s(Q6r(tM;g5-6HdqKoO2-M zz;O2b-X^S4>P@ycsiZ2XLl@dF^VQ@-|91*!2~cyAJ+n|yYY;$=FWj!Te3LmTIQ1^? zZ`#S_+$tL_Z3C#mVZ6N7InVZ_j#!dX*%vdWmvdWQSGE70u7f5cZ1m8wdH2j zTVZ%CqRnrql{k{xkAe)sf^X*y;lH^NPCKG+5f8f=9tec;YlJf{Nv^Ztfg#HRjbH=n zp`uPgacPfL67e6?81z)Bdum(d_6zv*57=p&n09WbHiaw_tFB*Si#2LNlSZe^BH}#2 z&IiReEhBg=*=E1Gsb++*!?~`S%=LpUVM1I=lPc+gH9Z7aT?qyJ z9g%Z*!SGv5l_z~a>Km!8lw6yYH>`aT_UhIPbDU@$h>38V_5!S{*_nv^Z zUNz1r1H!v=cUk=M2GqBa)ixcH4(C`Dvvv33eKzGK$9Y;YBWbDOJ!iJVaWZ49o`~2} zIj#e-Dt_J+63;n%W52?sgzoCN*`2=|B*u?Q{;_nfr#sZj@V2gmtv@wweF_VOM!y;F z(iXpw1?~Mr485l-IO4zl7zDH|%zW~mrmPWO=eh-_Fjv}p-DdP80-^M*4r$p$GNqy} zd<%=$@f5C2^JNUi!m|PcOEv|bT11ZfMMIl*`f)=xu36_1VJi%;TEl`TvaGnp8L?Gz z7yq$}o1nr(f`pG>8T~R4GH`x7SNRu<;oYUtZ5F-j*!N|EwdB`yjjEk{#3e-zi=eL~ z8i!ucjG0!r7E{aa@}d6sojF>DuLu^O`3y_PZr(IYY-n#`eJ(y&snPe|^3M<|+EA^- zI6e^BlStY-Qs()2W&9>dnThSAFL3vBR3+Roi{`WS^DkeL!$s80&xrq_`cmI3LarwJ zT$duliVoLDavgkYou*-=CPQ5r%TbomcYc-K%{Yi5SvS69VH?(_U##d=BS?Z07wKt~ zz`UjPjWP2H`O3Mk4^V(8sj3330+*V46bL}pZ~eib2sEeB04}SjhzcCq*g3yFixAdi z%=FnJ&B@ILVijOcPa=g2$-h1cy3&COAgxS9rPERqSN{WmGe|+kxbU}xh6cfdmeZF8 zuW{HugL%UVn3nPQT{wWrANZTQtc%Hz{}{!q3gZzl83%zF0G z4CR5-{FlR;gxhoA6X^m*ojFr>*MPMwtf<(Yx36GiVnS{;Rs&i_>VUH`*NP<|pa9N= zMhWfS$7@`>9SJ^=0XL-bnHn1H&Ch27xzGw=K*{tz8swZ;1>8oLNvVYc>%NoIQy;)w zk&1eA18@?O>HuI8AOuJqQ0{t-H4a4Rfyj+bFb-WQD#%y^UY*wU@u$FnX&H<<*Ts4? zfQ9)-H!vBweYgiU<#>2_A!9Zc2aAof`$h{`zM@nQfEF+l_zJk6Rlrq9tnx2Mn{ks| zfnefZ;GQULVR6}n@ZzgL{5uR{H}D8R;wHwAhFwthJ9s~gmALO`1)(3@rC(r@Cif<6 z|Dod${A{t#eZsLj*SLm)kFxFI7Z*`o9o8lI0il5o<$TcLte2E@S(Kky6wywv|acke4s z8E)uCb-i~8V|`6|uSGkxqREQ8zMFH8qZWZ&O|4bKF!xdFosQk~4 zpmMjwMV7HT-C$IAg}Tf8a$S$L-0^A6aO@?H+I zqvZ0BN@4t}V>}0kKMEd-WJ-M$Zk&M2T0>bw!P>bXnT`;KpO-6;wde2Uab>yHL%UV) z!}+STiSjh*aC%Kc%3hDbo{gB7_QKaJcI4;tH^Yq|c(hCPQ8L0}3+UvqvS@1alk>A= z8Ct&E2j%yP7C*k+;_KUYIU0)By%?@K^uOfQo<9)Mf>19=_XfSAfjUIN(vtD^V$f0r zFk}!R%wyhH31VV^@7Jg2&Qy@F2U4{00PDw)K?}3%lk!bfFhWFq+HwRBJ+8oq8=~L| z2??{b*#O)E5$=%HJV1&?Ca0&LfgBx3UDWjsBfuQuOGH7^ndrmSx`J3FFsZ6E=?pc` z*alE!RH8(S!{+~@^$~x(bBD(N0QmyKz`q_#>=<*kwgiBjg19l;iTrH!0evM9e~tkL z&|82wFa_Oa;5T^_ckyfc0vgKKx8KLN-|svBhu8->?f^qR{Vjuo2VQX_&zFA!V(9we zHVpk9pvwL?I|UG?4(MU1ig`GSlmJVU8V3DyG;5xC4A2;mKhq5`&&JIUuenJuA<0FX zE0zC|6l8k|pavkw1H=e4mIqSj;6aNufC#Kdkb~no<2#L9dCK#7&yV1J1l<-yAT4_~ z{VOg3wUR#&6(J%cLpvz9&xr*X-lJk;i?0a+JanTY1VKUU7Z6Q08&>=RAU2RfcLM66 zA2=BPw&8<3Ye7-Q>)){V^EF7w0K|i=EQJS)8u&GV1JxyzN0pwwUXfVQ^p6dsOkqRp z)W)FOa5um-ApKGbV|C@~|3NfFl=2>@{0($(KnB$Vfyu94J$c%8MfWD~nh`j^3;(N9 zQC21aoFC8jB^c3N`le2qRZ*N%T|g6@Q9O+(_-5&}^j%lH!e{t7(X>Gm!VV)(&hih? z7WWJqQ?l87R@bYE3Gl{)l4G&q&$D~viN@7=gFkfmQ>^lA>@TZ&?{ckShBcI$KBIZs zk(Mn?i00dNv*Xx;C$IeyrEV*PgaLKTL4mO4uUgmujpVOJ`hmxp?N1Z=@5#KM$Z;;r zRhik=#~W76gykK>Kkku6DbX3XIil7L41Z1W~T< z2(*Y3P(-4#68Oi9>rPHD-bh(96<5bR8Nod2QZJ)m)k#MN>cGFl1?vX2XgW5+gMD~= zc6ZTT%hT_9to-XQDxR{-ttS&B{1L!F@u=!SK5y4Dn~aMs@-2$6Q$;Ywnw6HGGd$*8 zU$^3^_N1u|C4L@i5W*ysl=F|0@cA^H@YyRAV=YvtPPr5>g!3B`I<@x$D-YjI=tRUY zP6bMZvaL-YBI*!XHnok%G?j-dQ~#tp)#D;1hj%)$J-0SPn+suQi5uE7JRuLHrN1)d zvLnM$h2h6Y@_!-Zl_1mbm@BxUjftd0#zlL3KtvCd=8+$7#$$5by_c&$xDjNk&4Ms5JPhdbJM zulCGkMG_qy9hk~)01sFQI&1U&1t>U3Apk{TK&qW!21VVQd1KjO6`k({^zgR24L=%+8l)&0E8Ft7zAtxz%wp!1QPt7*-aMa8aE%T z0f-9Rx&O=_Q1w{?r6tf*W{nMyT0(C~5J9p9^nW6D3_&29r~gHT_=hlQ(3QA5Rse@& zuuIDl%5`;jLx#mtQYSUdAe=BZ1mo&qDS6yqG&D36ash^DhyeKmNC|CYQ~1<=<$vTt zmSBU2L9g07aKtjoX@u$lpTF6W{+BzT?Anf`PWXoRgpzUuP>h%MA$HH8<+m{jj8S%O) zm29Qo-<@TG-Y=7pJE>(5XV)rfPhOQtqOyh7P9h>R0|5njq&PpKYB6b^es=*aTRH0K+h(+|X^%vGmf4nis?vLX$yOssA zyoQk9EtuxMBp-^Zq<@NhgD<7c?bQ--W(lTC+Ddkv+a7jfEO+IcTay$H_`EkF=pCdh?B!F%8cAd?u z^eTHn{@?@S8@w#L=U+;v2xWV+by$7fhnDEr965xN6Ho2$CBKAStYAieUu^o=_2G>Y z`7h> z*sa(IOnN-(|2_Aey<3_|C#ISC;rsfMfY1v#xir3xYdd+x_QPMfjT61O4PU_mej!!> zkLs(up4k&P+w7AXZf%9@wxx{<4x}~IqO#tiZ*fBit4$-Yzb^?QmvK0Q!vzrGv*wRuCn0y?G>*6Wcehz9-#|EndZoR6P@vD35aa<%1K43rNZ(RWVEZQnk8cmmMyCWjf|r@<(9 ztGJ%dk;32#KvDuKs$YPg4t-g$4hnTMAkzgwK!ca9`)H5^1M&g4uV{^s&s_zAsFg4F zcBhFpC9J;P&}`jdxx&if~=(oecv8z}h5YrjW)qmmFG>RH8% zHHfSdqGW(e>yBFq(rNqJzCGEvt$?MN~eh?e3fW zt>t*}lK;yOZd}B@WHg6zBQ@yOs zWOB%nSgNa%HR-P?3)JK}?f$b}XS_rDI=$}TAjMb=D1|3gAsZ_X1S`97xVS_5VME+{ z?{UTKTF5vZO*QUncP0MjM@&4~H#tmrb9FotRDD+W(dDy6f6R}m=xOslF7JWg1LtWW z1tE&FJ5e;Kg|+j6KAyS=xy`H%{kf2oNT=XgT!N72B*Tx|+N0*>`vd^2UmGvfJ2L~P z^3>F@mm9h9OP|3Li;Iiv@>5qyX|O1LjdcQugWju&&u#j@Jy=u<3~YO9ho#VF)!&q` zB*fJL;IX;Q*=DbOv-_KKqaR{t29IFBgR0vtz_yzJn{|hUAMs#oqN>N%A?)qWNLGlc zrSfe7Pkv5LPSa0!ph(%++HwPJHp+8vPyvc=wYGz;Aff3Hpxix>&^(6}e+g^as<^a!t&EbzAn5O|4WHf-|>^0bn5*q@* zsW~mph&T=um+jZPZytSTiCc56a>59dl&;%fBuS0j%-ZC9Vb}PaqliiJBCwZ<&FvEZ zz0X-oU_opA{%||9jtC)a&_Jq{EA?k!Iq4ZKszv7Wr2WIXl}e^DyZJOwlQ(eR>-9`-#Zi1-jJJ$cE8=hT-gKDgD$MXs;my4IkbQpa=tvJK#@l@~6coG9Uw>%Aj)r(vZ$c z8Gyu0ick)yI$!S00=zNv7Uhb0V%wENeE_QX~yFPp=Z^MoDRO}itKzkXd{ z$EyQk3J@dXzugdc@4GA(6BR`xEc^uo?q*g>)d3KjtMyE?y#2vfQlRwoHq@@b-kMfLzI;X0R)la%>V?R^v%x ziVr{dn*^uGmUy#nMTf0D{oJf^c>5#sQ0-VxWCU;#X_MtSV~arHlDCeP^4Lu#RHnc? zR#Ys+i$X=GcO77XPubKiN@_xmJCGGsoSmv(tCpjN8=9b}L%=1=TAdl-Hss`IkwZd* zo11)cSl}Df$#c2TvcdkM7`Lm=RWT)8`$tA`(mb;1Vc!_NtfjZ z`v|O@l)r`EDGHgfHXpFspXA};ArYZJ*D#oKfBIQ1bAYDfss=@Cu?0sdCF-|4eimPi z{ZyiN!kGK$zFXCKq_Yy{fIKaWOYP(s$7Hhi7g=OD^&Jv7FH~d)lCPWZ(s}vF5)EQ$ zls-)fuf6A0A_)>Vj>jHb?=1fK_{*z=VU5pCB)elmmZ3E4`*3-W4o5+39`ev=7iGUj zZ#l<69^G3UR;FwHzpO@TxzM1RpyKr|KYrgcx-DzI1l&o-Y_~HpHas*qMqDdQ22)Aw zPMM9#hTrqTwd3lrm`P5=@$yhVvb>MCLOitwoH(LKFer5o@R^Bp8YqIq-vpc!frg00Y88-5f_g!0 zOQlHE*8zy*lCj7I)C~<^0Ifa{VTXq!B1)|QAx_?p9~YlU!xhM!fnZNtM`vty7WF^Y zDA3^@Y#)OlyJilEeIP9)l=%Dd${#0hoyrjuLEw1(4xF~%gVy9tP8@XJfzmx72L>M> zA1EFZ^y*GPXJh}@oPu{YaD^NIXSrFq z!aW-(M*uW=xFNp~pmYLVR*<%_37OM_??mKZAm|eIw_JYHYQ(Vw6%!&7(lt2$8&d&H zlN#{fZN4Xvh8zw7*`*unc_pX~L5m;d;jBOcs?cujBAbVS<_y|$yn(e7w!1Jyc0B{y7GfhIGQ z1ql+i!3$xD%p4fSfDLyyD+YZ1;Pde}5SeWlxus z;}22Q2Png9kBKxv1V)AHt zVh!B|7dXoVW%25|L$vq_gO}`{jzu8Dy1La8Z+5UlG3^BMEY^zCZj+h5%A3^iRRx{) z9 zwhYbW?Kl57()PRDP4n@Fb&-Nn2cD%OBXnWgm}=$)HDnbF(HgcihU9AC(rxXls5~=A zmILI1$6tJZc~G}I_eh^M&w?*~Tfd}5j2JTO&V*O-C$vh4r~=WrjLK6FKI1RnMgR9| z6;1W|dF0>)`kXU68{DP8m?zRR`B-qCj~JQPLO%bC#;B+$`SHoQub9N$5dsz#RvgGo zfcy-AJr2~m$T)FD!J+yIf^R{5wK-@6ZftBoeLG6twfWcoFQHIRPtR3P4jmnxf8Qn8 z0~2;p1CM)&p?Eb{S6A`PB~YN9045ovzdeK0OprPcG}>PlWz>cNl@3??of}unku*S- z{gH8~7W3qOxA>ew9T7c{KMb01ki8EyGW-7BT*CeltPmcM2A}`(+fXnIp-eBjXU653AhR(-xC>+35F@~yB?uqgyB3x>uZ zWg*y~fYBW{@L~hUwNA)X4dh+-Cec=>v`J?}FCR$LW%ZK;+IfMbbzdtrA}lWjn2`x@ z9RqtWSr->>a5yvs{ZJ$EW+2}30j5ihj}Nz`;{Jl*b5=l>M8HQ!NZ|!pB{{Vm%Y*9; z8?)J{9!{vhb1jAvN1$&Pv`{NSb|UC}HWex_I0!(76?o^MY}5h@!5AWTpw(k!V;j2s zhk;mBPtJZ017=VwKnu_K{CWNGEokG4UT?gQT)Lw_j+D3y0Y;Ej)}t9*hY}#i37R{# z8jpf8h&R}Iq2W{`c#$LuPZOw#c7oTZ&+P4!*j{GXQ4o?+iuYL`O2Z&g9Fr+WFXy#G z;e9CU=|e}-DK@bh>uhaCg|YV+clrui&5x4yt8OhKkHeH77rPTjsWXtLDzqIKFE{(I z$K0Mj(Gq_dFmvXWyYy1slb_bJZi9I-?w6xg)t}B@rP#)j2lMZ=Gc<-5@)D{K1A8TQ z`DR;0-!sm+bEF3oi4G??_*@ot4|Ap|x$utx1~PXtqHBmBgkq-=?>MqtC3tb%cZbx% ze>)y17-oKSiox;NrCfebQQSR~jf*2MDyP)tP=~K=gz!t?i;Po${Kw~^>HdUwBr*o4 zt1ocdQiPtHShqo{>b*{Ou@uIZHU9~&RB!^xf!UB&@=x{`%F_XC(MXO{eLj73^-}+gpt#2LkALoX$u@U1sIh~~LW-@QZk)~|)!LTW@N9ct z&#rjjYip_4IAS&9bI}ZZ{xxbqjK{j`llS1CK+{{!(dky4iUX%sAFVt*KX++&%v;TFoQkY=#(@R}JmVOAjTd zvE06oL#3DK#p%@Hx{O!lkMFW{HlHb`##xxQbvEx$REd6W0gwm1mJx5e%eC>H0n{DR zsU9lEZRCir;xauddQ05Oo;rNY!X&Ocs1H}a0~W9A+wnXu`KD`U`Us0#800_je&?rF z(v~v2OpU!wQOb?1oLPuk_!B3u4Rmh>-nUQw4dVpmryl%~a#Z4Bl^2S6J=cP^h+XWN z%#e<(JR6xq>Pb%zFD|n>l~eOQ#dXuJWTcx(WDO|9K zqx0GKMhpXlKB%@mKKNw>JzPIzL}X6H{f}7a7He@LJP;;n+C<-i@;z*_1=HHbx z;=iLwvH6)@l@s?U>P?K|<#g((3r?7zL-)OQW^F4PN%4oTs4&u)R6%sq7;T~aFH`M~ ze$*%i?L_mBUKl~FcNi0GU;0WJYrNfNFnXR3+P2?n3NCerH zEX-;hb#D@YQcP1L*5Fm!EmM2oo$*KC(WMgImCCvlvlQ}g+jFmA_?|a3DP1o!Z)~ai zP(zWi>9y+d-|4D&cjJD*SU&lk5c%n9PIjx})96Cpo1}4?kNkVD{2KIAwd&qUeGEJ1 zQ^s>-X8hSPS_J&v-_qrMkq=`y9?QKo@;|o znAC-$p*O35U&Gi5C#>u5 zy7l%Mik926E6$GKnkqyMTqSf8Wf>n<>W3XFGPWWA1)+UM&?iHvityk==TwzuA9|*r zyoBd;P%uYLZhAG6PIQC^4}V;j%QBUEqCCfL*mmY-#gWn3{WYUwmL(Q5jYUjWA&qyw zNz02SUT`sFuYdH>5;FcP)X2T@BMW@V`vBa^sI=hb)t1LAGv!5g7M=i)?{L|PF|T(x35i(Tp2K8>t?TwkvF z-5(LuGU^b9&V+eN2hk()Xe_t(rdDK})A=@JNeZFETKsSSeumd5XcT&_IlNV7_&kcB zWY+yL^JMTnj#*KW{E6>e^#*(BBwn};oy&T!(Fq3ZtLF|wMntj{%=C&vo$KZXX-(D%#>-ZYk_&=6COx~69b#6-CY(D)pP9j?k_wQ&>Kjo)~<$7SHY%snc zPhh3NQm|)#^XLdC(RNP8RS*^t^X$TTPF7PAIG<=1vN4y6g;^xB;=RA%^PnrLEp#up zlIwmE4pvz1!V|mG(3|XH)l0Rdmkw= zSwpO8i_a&iSk@$P{`8io4TJWc5qnUNsr`BMxubR|{9vq63EhTAz>~g2CKhFx7%NVA zy7kNZgu-HXyjEp&&UYN_#`5xxAgXD9(<*x@gzxAX_cx}Y>%hCaM2JDWf^k@W)vPj*Y8e9MZq(#sdy=<&9fpnSxS2K0-jWy9LHtyK6@5EG#QPqiO}pugLgY zP|m0u8I6EiZ_KU^ilGFZKWMUbG1vGFtuT#le0Ejv;hgZ_UI`DIHX@3loMa!>$@6lH z{UC`fk4x;Ki+v{J%xL-SY$*rRl|DxpM>NIA(ZqL!15+D#b?nBNno{b@?>l&!uXB|~ zn&C>kDOK^X{vv!)_nDfErIOB7Au-5|{r;OKuA!*iI#9dsd$^19BFQuKpzw5ZMXZ6Y zl)@a>WgP9T{dEbP#lc{ArZH`u!6@~{a^F}hW`xtS;EtgI(?u$?gBf>0wm|}(a555` z+mLTRVo8jie;V@)E7B28O8Ga&H~4j5L&ebi3e7W?oYjd>`sbMC`R&(Jd2CZ_b#D5S zx7pDYFPe_=zn~n_I`3aPylD$RSrkKzP@tnpGE2#wY%CilIV7z7d#*<(b9;@M&{;`7 zs3-EJtn6b5bHwQ|^BQZWWL`Ou<17ArWc_`&%+6tqAI`xO3n7TO{5uW~_TqB;)#mE9 z(dgfhLdaQ`o5QG$gFYjO)NAM`#VQdge-c1{YK-Z(!MDesJja0YEq|K{l|_EBr?6Oe z?vO;TmOe@)maE@bG;E#*<7UVJ{lTam#1oD$MKJv5!SoJBavKw_b@uywMDn$po$={@ul zFB~~Ne~d{(mgi2skBm5lsrTiwxN;X|`tf;9F{xfid;9-dEe_KbBK^OJMyLMn2>g2MO6rDX zrAn!bDDgrm9joG%EPHehKO$Z=J!PatQ=ep$thA#j{r5B*i08<@+NA%j&f!Yo-XublS zl9__|m{CF|%ibf;pL&b?bs0Q%$=PbV zY@Em0{c1#q&vTI1ev>(;`vL!y>o5;f&{`N39(3+lq1JY5{}8lQE__?7 zwq-JmsBx3*LPuXCDkqomL?mB6UJ51k)P>J9xv~@aXL5f@&6*IQRiJR?MV6!2WjEf) zJN4LWVfvCH$WMg+6d%8RXYps+JSBdZnllQ1M^rdXpt7i*0%ab)k}C$GQ@r&`xCnPd zL@us21Cj;8Z#`C#qzic_b+Z@-9*!1j>mUjbDbz44-0WY>%vTZ|pQxhNtMx9vWGS7k zNt?aZV@4UbH9%hZuUhG*AK72S>@B0~p_fc1VOI z!B@IxO5Bv?gnkBixCu!(+TkThJlR=ZI@9Bt zDF31fjD6W(bxI&=%#6pDj3$rtNAvmgR#6Yrl5DEL6WF?OqrgM|nMQ4~=lAf8h#akN zgI}<3aC6e@L|-4_Jn>s7Y!O61OaW;@uXS65m@QtxX7*An6CAuM~gTG}L?K9W8NW zSWfSZ;J|uBb>rr+BQPzOXVBuXp!_2|_@B4pl@KMwl&0?3FfHX-Ff?_(WC)6n_%SOq!)|7m>k$M@}(E!SWq#4vyznQW|dCk7HY5dsQzOT z+CN!OFH#IuEWO73yDxan!yTS%IFD=PV33kAH5hf0exM zK2588@i{|&59#=4orhr3);BzChW{vtPTL1XARZ*$aK|k~Y8+)*`q>>(pns5TR9O zVU)A@Mu3s6Ria=?Oj^_AVkQg2D%kSrn?0W-rmycLh;*J+oVdfnvu8pd_=rSB!fC?D zSVhpj%7+zXe`!DnvM`D=e9Xw#Ny<;VEf&yusvv1%?JKNf*Z6~%_3li&>!2%(eI+Fb z#$B=3E^2(|{A&97shlJKjP8(Q*e?dST(r*`{?yC`iOp{vdpVcXGRjHnXt;;67!+C8 z`eaU=-PD#6`wfG2anUAy$4b=PyVY?`ZrHj1DifxBedkAQE!{2ugir_1@R59u6KNm& zJNd0&{(o|G`bRa6p(j|?z#C@C%1Zc|?pTn>CeQ}DXYN}3H_s_r7Q_j zsDsH1(xl1Ei39O3uutc2qNwD9YoaUOE~ymn!|GG($yKfIv1R2X)T(b^kf(Q9M-v>w zPveWdpAPy}&-!TAzGWhzW?sICZn-nyZd3Ue?$ak9WZ=YxhhTDH_8a+GgDXnrp-*_+ zG+qAGaPkf>c5lR{_I6p;fPE;zPGcn<4lyX(1!W&8C{PeE> zO7u*jWgkpQVnz^OEw~h=I$)|Hn{<6Xsb^$cseVqgi=S#te0X?GU`}4oU2(??3#Xk) z=YgKcCV<03sS1cFC?Jgt%$G&h{D3Be5$d1-xL9mU07_8+N1}jdnY@rsSHS|vZ)im5 z^6@`2 z^4zDr^Sg$99E;hQCe;s!MgpD7?+7x z*Gv+erZnfxh-A(Dl@#Clpk64GTSI2$<|zo9DKN!Qsb5NnLS%hU%aPk|{Z{(L$jhzn zI97+KpVB9&eC60{A41i9xK7`2U>gkDEiAB58r#W)&gMqJRzA3o|7IDb=*OVn?wquS zYbf!i4dU{pv?1me4x>IffBT35(WNdEU7NN3rT@+%86lW7otCrJgxH)1`{(6DnWP&L`Z@eiVEOM!jQ3q z*Zh{G{wuC&CJ_)%zDJuZx$&81j^aXf(!(^>w=v>`p~_Ue$6Dcqc>8ps z-sgksdP1^KhKm<%wjTIjtG{zL>$o_?#hp#z35Ne_I3pA^{@IcQ9#@2-{1H8T)LT56;I}X$Eua@VV@ard$9^c6u_Zy7UWq%!3&@* zFAR!Pm#3o_G!PDp#>2#z8g7Cmf-ru)*TMrt<0{D^wK{b#=2`q|+o*XG{!Ob-qJI*3 zz*N!^CzN6N`G79XD`_ccPEV|xI3y{#RuTQY@~t|BHxgSA)>Z;mv*HrF!mmJzq_Bk& z3l|5Nxu*1uPam_=olRrDfn{)Ewj0AGCfFd$h1e-0HM7O8nfZ+>F+-USut1Q%Z={L00NaRn83rw?*depvWiOV;c0@$AY@Po zoSy-Vz{15PkBbPw(qL2{Wn5tm46=c$qkOn3=>A-{FOfPC#6khHc<6_io_@8w9UUDl z3dRRNGsMV&gbn;rU-Y*d17J=cDRR&d251Ekk;}t#9Chd!nXnH+A*#DCZo%+~1h6z< z9=x$(kpZlLxyB@=Z~@%?ya7BNAi%}~uui~56F{xdN(R=W8T6Z4fMZwNsPMrQ5UF%EZfC>-mrDStWwo_s0A%gM zr%xn6tO7xSlw~%u#nu0&#hWM8rBckazh&8XmlG1% z*;$Sa|1aW_3n!!7_u1v;33qq?5S$JMR4;&oKQwa{_!@82Y_Wav|4m(T?%UiF^na9> zTyQP;{Xg=O>&Lw%A4ApaN0g%($M!O|vfAV)`IjD!0~YOdv32!j#e9EL>ZA$(M2e8YEoKY>ZBu&aJxINwoQR{Jc8Q87no`<#hr7 zuK_(c%MQZlD$$R@#v)d&!K8!1>G(%q#CLto4lk~*Pb99`)u<&f|6;YjSqr)CkSJh} zXnxrGO)1pdq@IEzeqcIZo#x2#Q7Cx5KlsGn*Bq&XnA)SSj4FX+pRui z76-rR#YsR^d7YZf(e$}4G&kA`W9A3mMlaC>e8!)k%}n#V;_Pv^4G!@oI!kh{eYoUM zj|mu1A4PJ${$T>7e1GR^n8B3pcsr9QR`JP`CtXWRlpu9MFz7)Ps18;R4-$^fJRJlXg@PxUHcAhYD}?`#C%tQ|a-t3WR%X7rc!{OG6yj8kr_x#_xxHwE&lL}ws;SZeMU-<1S z0bv9n1yj(mv6(5S1ow$zZf*|z&8Wbo2zvZYa(Mx!rvN#Ke-m_11dc!vnVHn$_h(vw zGe>{{1zVN(v6;hS1K!2OMT5rbj6!QfL1}IgC3x{VUh|83dLTh5(ZurqG(IkhU=Jo`7LlG9o|K0O_gm&XYD z6v!wjC@gGjW}uzzKq~9Q&MOEnGZaXl){!UmQS&I5;W4!I1{XF6ZA-i!!l@QgdD7D7; zAgX_6L7Bfubo62b9wiW&e@)}bS(<&?jT&1vsK`h+Mp%2rX%r?8t=NCb7bFkotQ0=; zMNmADxMyL`fgR7 ziX-d~3K!fa-A3(nCyzdPu<^R_VzGsVU`K$==JvKZKr{hfl8bu;{gmJ z62c?&$4B0v@mNznfV`Av-5L23W_-J+XDMi z3YdwNRRq}Z07tDvH}Fk7peZST9Pm5gK|nl26p2IK2OgJW0P{$L^cJx7fv&ofI=K!T zD{CisFvA5zd`=jCeG`cUU=Pc~qd9ALS65}wV<6-_K5cvl3}2^(S`0Xz%rvPn;6r#( zSU~|ZV9#mj=@E>KjC%U|q_t|+wl+X=8Y8?RtZO+<=F4twQBgE-G&So_pp;H(wjQOb zby^~Ga&m$N1Apeu(NUbhz(80q#HE5i`2O#R5s*BARnKf#;M{)y1YC1@jf0F#w=c1( z-(06PSo=`)6G*aXopk%Zh|NsY#hiNFk&|;#{ z`+gipVnzRm?2xl9Q#v17+4gk5(^nE^yLh+o(6-I;_3c2DWYdW~@JD@#ukpq2UxaxAYGe&&U5*vu2I1cL&LxJ9mbt zt50`wO8nsXjFm^yE0RuRWXLzWEHqAU*2AF1p$XZ&+m}NsJz>X%pPfDqSD#K7YjR48 zl*H!T>Vz-j@ry)eL>!9&H>{{G_#@E%`JzROh%EVtA<@a!ANMCXtv7WkODx;AZQF;& zkB-NZ%(ovNHF|V+-pz`YE4!rb6njTTj(q<5wST*=gQS#$dDo4nVFT+hmOuUWF&Jx^^Ze6rt0q<#Fn|RmI8X?%ErEj6U&R%G|1^g<2ms&CA`- zw3S)Aq(jT#(psaFuLi2C`IruPJ7V<MMs9==oV0*<@SG&ef7mHL`8ay*yZLQit%mE*;vp7e*i21I@;zRv)h@{gj%haWQ?`Bq;e&}&Ia$z=9! z(!-Uuwr}G0?K3l?lj5U_Uf)Cn^WMB!YDeD*mc!oFt=f>}bZf;+wq^9e3Uq;c?7P1W z=~IhA*dMSeITDKQ6&GKn7eZyn`BkqwN;HqPUC*2AuZ*WE8b6`7TSY4jiE8y9)e{H$ ztMQsH+`cV4!SnM4uIm2rKhKdjZ1?UDAMW?)bY9Mk(;spxV@8?eB?f!EAM{JUFuF;K5*AB<0`lL`_h$?l)n=gq{it6(~&~8kUzBH5{FN zF#leR-pBjX<#!qnK~&*U-i1kFFNDZG#Xn~tZh|? zC68CU96U!gYN~qOW6QpLn*88aw7ZENeRx2D0<9%%(41mpll}C0x+*tLMD+Xj?~D8c za_HT=x3Bn41~X@hF&@4y_^RZaQ(|JITDEMdGHB3YR_91mJuB6%&-4$yTW9HX=2ME* z>F2LrwE?=Y3B%0!MMSWVHRB1|uD$f})cDG73d%>1SKO?hXa4@OmwbZSb;rvi6dS#M zwyij!_G;6Tq-%LeL32A4Z!fI088vMCs*!n_qsF9<%BZ;WbF!k>sfTl2$|KVwTYc7; z{x+kmQLU5q-m#L&mshzh@=%bhzf4Dh5{>?V`^|L69yoZ=?aO-`0cnW#9~v5_VOQI* zVMAw-%lWmn4%Gz-J;$wCmf^8YR=!&|Uy{^-{{1D*&CSMh=S~4&a!!xCy|~imWxcAb z`DiVzsq8Q1X9@&2Yu2oxwpl$n(|+mc8hGcVSOi0xemMiVSrOxL+{&z=F7F6jqOz2WpQ&2AD& zJn!Mdu6XpeY~9+L=+(JvS08Nlg*wZ!x$XxK9EeUxXxFb_Kk)?|(tBEEE}OD=ar}sg z4Hvwns!GxaFl09f2VFURUBZJHKXae*tv-A9oIX8<`fqzpaaxBlom4>tvN<_9RS)7i z@JQtP^aJbq{7eup!BmXS<=S@E;kiv=p>r+bWu`lxxJ=s8DS;^|!H=~#`*W} z-)paUF4@t0?3PrU^M~mLusFZQWMp&HF6VVdXA7}W@dKTDgEiom+AWY zt&|50uy=H9$@m*8r@ULq@9X=p<3k$ge&+o7i-m>q-@bkO@cHv@gHhC^*VsAXcy-6U z`}e0XKZ3L@eAKt zdC~(&%QSRWJv`d!-0C-5$lw*282k>}T<$g=RN7m6g@obVWbJ&qV12m@?bM7~{+!^K z5Fb-yTL0!@TT4qzgITjK)2*k{5UilpKB)V!d_d*%s;U4SF%{S=Lk&i;699)?_lXlH z@{_iZ{pqVH(hQ#KPdjWUo?|1{3b)Tyb4$v~W+bcrsJz~lq4Mn~R8uh$g{E`sN;6$L z5O2y0t@S^j=$HDr`?~Lq8k(A#A4u8upt-7w@wbjURB!tBw4SjdN#L{-THBvtKBUonDuM!YB%uDg)iHV z?pc_z=vA}E8?E}E&j9aq9`9cFe(?H}5Z*6nl&Wtt>h?etl~zq(Y9pMqN38c?Yt4ua zjVmZD^(?~oX=VFuxcX_uqM{|rq0-LTI*$8ZkLx`myUnTj-8zrC*n0Bi8#mt;7M;{{ zKCu5;r$nO-DYk7-wz0@R>i?$Z$MzLhEK)l5(J4^LE_r)Etj= zciOZ|QtzF8eaeb&Dt?^#__VKqN`)jMeN0JR(%X@3<|pglwjDNpaD>K{o{rnoi+TUj zolF-ex9MFuQv4nM_IgK><=_9+@ojM4l;OYrF8}hFHf_&}e?k23r#=7sKagEPes3RY z;0s7DiX5b>+CIfH!zoiIJ5l@EqF+Dg?Laqo_seX(vO1@5Tbakjy65F@oHUI98ZBD1 zxR>c-1x%w5lw*lXihd;P=4dBqU0Pad%rb?x{Wf^BCH0hX@cw5wfA1Zc-ibsxL*6)I z&mLuh`{>c5iO-v3Vw6aYY#llfVK%+v%3k8*TZEASJciXR&TxLeX0Y=3^$p1jZYFEe zqd<}1z;GcDaUP#bu5)K^S|g?!)X}e2PRI3SdeA2I9=ApY*vI8u7gTV1;O^bK7gk;i zZKMx9*61gP(mHFMoH*Z?gL;TsT#2353{`2Kku>1<15}rii(y#RR9k%&_X#u@q~mDb zyMMnPBj~SOxnhy-u=V&)NI7xaE;(qhkxRp^LZ6uz(oJ4oUgdAz1j?(KUAT9z^PW9> zxZ7I{RPyQ5Yc*!f7{33-J9j!VA}e%A6RR+)3X^*96Si;P-kI1BeQ2LcegLldaYaex zeIPrQU6N0D0<>P}=s4hjWA4TuzMj1&cy<#k1KmgW5>3^#$BlbIEHHUlQ&ST}AhD;0 z?Hs7j|MA;fNUYDVk)>(SH!)H5^XJckrTEUq%l!1z)YQE!sf?ddhN_DoK{u zT%ws!MoUYJZ~OwBlCKedaeI4E;H`?&~4BGfXWMpT?M z7PdCln7Ib`l!1{^mpfXjsz&S7t#dXkxb~AB8+;^fm;(LmPJMJ*fh)lA6+8winX81W zj-y76;yjf+dSp+l*#nz`9;?57UfS5$c!7Y)bTTnd26H#ZEOFr;xhf(sr9|7!D?J;DCzl@=4Da)_Xok$ITj|G3U-@O zL!#1(8FL?)!8EuFAeaF7@B`!4c2o{Eh>X8Xoxp?i!xPnZM#S*elB%kz=e$Poz`y_a zk&Xy5-s@X8OpzZxeahz!4et%j`pl6DaN29%_vTD&rB$hw7zV~{k`XxWl5Ng+=Y&or z&+Ufcdm*-KvCv7+&aNM=R9D$f$$sfJ9v)w(Wt=C!Ak!>dvLt|##UbCf9bAYYIz~7Z z3=wBKJw3gVehkU{R%2v)T_Ms~^VMTuuI?2ST;e$GfJb;CIv@Ny_F3`0(M_=FBw-jnH6GP1HFhsDOl*~5-XyjjB+ed<&!aXH1#%L+A#EY{>sbtqXxdWJ$PLpVpNMeC9lk``-c0Y7QDxZP zz0#8=P1->B0{LHm*|KE^4}}>W)NxO&n>H)WHd|$RRF=%nz7q%{k8)r3S6tk}QK>+~)-jJf++xnjr z^p&CEX6P$kw-S?}L5uBP9vtt{W%%&ngbH6y%gkA`>|I@VqIMN}^o3izN~>qhOh+fD z_G8ah{}|Up-PRY567;dq!NFvh9fo_t*QuiD#EAr;s>f$X0bd3$v!cyr_5tn9K(-EL zJe+<#d-W25nFkDt6h>_Rsg#5O>cfLzo{nhDmXa_aKo&fqbVkSX^N`1nA0J=!diHh& zEhBAz2q|S!nyszvtkU-|)g?$v*!DU}x#0w)$!d!@FyQ-4~8DXGULFw}rKh z%~sFaXSw|-23t!&^?Iyj%l*-y$aVGo&O`V}{(ulXaz%&zR^|B4+>6Q{Kh7%hx_tSv zh);r`CHGvrc5NZiwC9-RkZMp@V%OJPYwMwIkD33|flQEWefGqi6Ka%L9eGcpqsM#O zQyU^od7W^kerK~c{j=v*+=6o!y@=!2eUOlz^8siAD^XWVFBL1Dd3Qx;wF_a*xAtv} zBzm%FDE{dx!P}A_YlbEb0{yI5v&N5i$SGA^ZCzMfa&E<(VomurPs;3*_YF#F+43y>}0lj=PGPESoM3DL@f127sxUt$VstM)y zPP^JcLR>&{U=Qa7rZ0$+h9#bj-@XYQf}=E@j7RVtc;IFbB?prrTF^O}^zP=hYu;2v zlIsmXLfrOx+nG~B&;Gwj+CC*xxjyshShFUnnVzP2<&Y&a6_z%Z5{NDhPEJx{P) z%oC3q@3DpQU`8xpV{>-4SBghfb+xX!`IoIVA83!S;NNZJKRLHsUR>QNR^pCeqfu41 zOR{hn(h;A}p2GXt>(`>BQt{vOzoG%cc-;KL>{r&u=g}qkm5*XWevP&tM}x~A@`XYr$jqUshg?4eDR*Orop{ZhjKv~tao6dm%{WN zz4Pcs4#cjEwkaoWHB$G&h5h+3>Fmp+{jxKt+(dRp$}GSfJA6zW)9eZ*-@fjbR}MXP zXLNYx+a625P*+_jD^r}YXXs{97C2qpFUq6h1yS2)UhXp4)OAo{QIJK(ts6?0H8eB| zJ&{V}ork4So*tU$C3fyP($Cpbb4h3KZHlrH>UPr*fk-NC!AZa}kxRPhxzs*B+tSPH zhtACuBk}+OLmuVXJ)SEUO|N?E0fnSEKQ;33?r7&%DQE@iMU$01lO{f);IacH)B*XQ}P zHJCA@tLGBCQ%@MoAj{7o%TF$8*bqJc;o0h{D#@|EP1cWETDfbla?x4yR+@XvSk*C0 zjx|1rn<1pkgooy)mX_NdJTOrjk*31Mdu*^`^=erGF9$@_OjOgElEgGbRf5 zl>N@^MGq$6JZEfCw}u5)Rx^^TWTH#+&HiSFl1I&&)v@n*i`o@0OFf+IFr^DpeR&05+$wp z-aM-JPqTv{7A`{A^GN_FesC(>W}-;K7}Ov-6UuR5LXps;^Uc_(;&A;yFT5{iReeJ6vZqQ<-l8acl-TE z%Eg|WEEb=MXEAowtI33T_RNU{LGx#SHMJ()*CtEhjPIejMMd=$`X)K*A|UBP(CPJ{ z37}svrO;t;T|i)9!sx$>3ktfS>z~>1b)=|p0nef?;(OR__}Kc^ty>`x5&l5NqV*lc zAU$?jPi%TSia>e<5^mk+D!JJQby~Cak@Hxv&f3vWEs6b-$U}^<^RpQ02ZbW|3ZA<_ zyAsu$QQyCR7Y*CcN1{j|OK%Meo9DCs3zggsfw&HB_|%SUsIvT$z&Yr6Og|V+_HrxF zZyk8~sigmi5uH&Gq&sxD2)uM_{7~-cui7%WUn&$(Fg5XjapM#@xB0U=&>DPP;y9WBl=v*B=9H1G2TiDEbomC8iIvkss7L$2P48 ze|5?+ON%Ie<2k|W+iqUy8(6VnHsNjlP*XdCaudcEq(L_fWVO}LuYFUR^;uo;ITe^b zw1lR8ek+1vkA|kk#(R9)fuDGwDiTQjf%atpdT9xTymT4t+H}&zU|2PixpS4c)Rv-7 zdv@uPFU)gU!O@{gOa*=XHgj1<*(=GZxK?Evhq1-ArDW_T@c=X3>gx_hZ$y@ zwU_05DtAs+kDZ{dr4@c|ZS8D_^t}>e4w;-BkKjId_88onO7|c(hHj&VnoX+H*RQOo z&_$RHyOtE+AejvC9iV)e{{I$}bDO`ZxmOniQWsQFw#3E8ssuXPo_fLom_@xDo0w>H zWLofHCJgN2^d8S;_L5kA>r|L1FBQ!gmzZGqK7*m%=fSeQLDB8<&TK&~&CLe8&24RG z*A%4;06Xl8h#1_bPoI@**B<3Q6_!2?4&T3j2JGISOO{ZM8U49*sUe3U-(4xOF?kci z4Pz4$4Eds(bRyrleLMWxRh|~Z3~GjvNP{HzIQ2>Ing{~dA3r|8GfOZ}vpt3E=Jf6} z-(fCsz;I~yhk$mV;LM81EE$-gR?($N)vu$g>(jm;C|EnwOW{+Wn@MW9Q`gB?6?d>p z`}J2_yQJcqHLJ4~PJ9}?eiXv=LQWvmVH-^?Evs`n`Kp)0lWI@w5m;-9v$H5d!GJDr zs#o1P$1XKQF*^SUVZM32zY+6oLl=U(Fn4_X+x2HYp=dcKQbepw%0xGxGq z$vQ1@&HKmgLJd^LmmJjE>Bkg-PW>DNs2DNA8|H*U8j>$>apJqOl$c^CP{i?5r+m5o zp`mgjT=4w0=D9puj$dBXNz_Hs6u2Du;`O(&ke7_;j3v)N=>KEXwr(+8S}&O^ zYHE75PqW2d(F59UEjsm^xI3}fN6S_(tr(Fws4&U=1q*4(lp9u=e@Q92=PXbC%#cG2 zE*;8*WeXPmz<7@nkE(A=c*df%8EeE26lpNdnKkbskG~^*UZPZyQ&cRI$w=-qNjE^_ zift66;mSGh6%WV8w(2q5da~eZTo7uiiqra$2?v<=of9>F%F?BnWKY?eX+8S6{(emc zMo~~_{@uH2V-v48KMS%>gV1V?0Y_+|@HHRU#@ipa4B_~;>ATYpf~=DWvCo;Hnji8? zWOBy1t)n9?GVV^Y$hQOByrjU>Hq}3CdOE&!e_dU@jc8lE?+Pi3FyXxCTh=y?uAbn4 zL^XwHs>eBAR*7QBAP39h-PM-Pp6V;JXGe_>glOtW1-W#G>IqfbO3x=}+*%@R zOratJDFjRn>aH|?eD9kP>aIIfb2Dr!ErWZFY6H|4ga<_YPQ(ZJ?r?v#+`|-WHZSVE zV0@z{dX?&CIHaAA+~NnXp^F^=C@6bpPU+W|t}T|fNG*N@7X!aortqwTYuz^qtH!Uw zCrakcn-`$3oY2xqSr;TJxF-T7YQsV%s?4&T#Ql^!XL92OvOzkFV*5JOwa zbhA6wfpc+57h{cWZ94)UaCi2?!P8UAshi00_yscKlCDIp;#T<)sO+=VxBe@2#hed)KaU-OEJGD{mydwF>eo)ab9Gh+UAbXuBvy&LI3 z4@Ceb=L4if1*kla8nCRg{zd;UviHxqJ9CvPgf>(L4xU%5s6KS4jDQU&4kj=B_Yyg5 z(=a(_=$5u5f5BllA4$sZd+NmXyHOhhYlV1f$hr>`rXJs<_(iR zjmhKC@S^O&(*jim2g`~%*~~o=Gz8?E>kg-rZBTI2K7M0dnBLItr;Ssbrs)q+TmL{g z&2Q*gF`18Km-qN_Z@d5_MvvZ8wcxC0y(%O3TBcjbP|~vvR}TFleqre$>0BGKO>Hx@SrMTjrG|(N)_L{dnF;sO5HE6|c#6@}L>{%%Z@fBU|2ZX_*vNde^T~e4BuKyKyxEY4z&W(fBhbdVTBv z#~+4?nXXP^|8w7o8v+Qwre$9sy7F(`k|BEwtUGzKn98^rv|x1bCzODo!~$K!!uluY zv;+ka?ckOpC}dMpc?xssPMy;B%)t~wo!5dF2G2^#I_ASn#Z*4MMYgAwpb{WsjofEq zrO5gEN>LCH!ZT^Vc(D+GKf{S!uNhoiIrc>NnCNH;e@g_*4r>G(Fma+V*JboQ4NWfO zX!6>$h~YMo37N?;#Wy*OWRLKY%oXLjsD;8{MVaQb!%0Mox|eU?A}Otjrm7t|QvOR< zCh0BY6t`}@^;P0GtJhOg3(>NCo#!WfdetiJc4M{M%9V)?LsBVokw-I(gPqK6o4ZZl z`RJ6vqtxN%N@__%O-nuMUI{82oo<+C!`r~ekFCFdeSJuxx^dxo#JB6$+r7SfXgW^= zKn!u(Uqf>g-=Mm>Iv^-0?ArRgEv>=D@IQSRN8LiaONxVhS;2`sa4Uh`0zm`_UlreMf9GcXLcm#dR^jE#ciDR)# z2u(yd@pyLJ@XlKr5?`~3cO-7CHexOtd>%xjkD%Qd+{Tr>!aQg}1M|V#U5!0@)bY#v zCqj?=h-lsT^=mm7P=3onEYw0R7Sv#N_JrX!=djBT5*`qco9;yL%T!EZZ{NK`{_q8p zXzS<*rA9oPz`#7BsG!ls?uU%bgQr;eo4&TzRyb;P#|8Hu+XY&kr?v%tj)?4w+NwNk zSW1z*qmFyEFCt=*(+S(+(Thcw#-O;Q`}0q;fg5!{!mplnLoeV zz`=tbUJC4*K)_qw)Zn75tT1lP(Ax*cnH&6M3wa23gm=uN!ZEwm95cdZga0 zRDUo_Tr59e&v+bc+8&+OdFUX2Q0|atjr8>~dOUFb_|CGj{_TR8`R;U0Y4BYiATv2V z&c$Tr=BevX&m zuACU?0Nf z4<#wSeD$h}++5P!QqD#f%;cHdA!-Ava%(b3^`3WKFk)(=T9?;GmJS~|au*DiN+u6_ zXQE$UUV)0b`Wz_F{7msJkX<0J411Sx#F<(@FU6f?l~`A5?xMI9>>Y}0;0LqQ^yk;D zkKxxBrvAm_l8PqZ8<@@p)bSf53B7}sDYB&<34L3DYED1wC`-7A`OWwSLM?`NFC9-c zDIveS_SNKDweqGmwQ_z0zn}VL)PQ#$d-v`wSYQ?hxfjayqtpuC(Qndh@Oc3#i8B|L zc;I!eV@>{qv#udH9m?T8FfV9;tb&0MxB$#7qAA|34xg^T3_pcTMV?R!or7NnvL*6l zwQHQ8t$NW31|!~T8ylz>Zzyc&857c`FqR;2|tircnd zzFoT(P+q+TshOgjLlN3Jkmz0Y1!&Gs2Gbc&wSVDr~$e!pA!l4W#mPka=g&-Ol8L8@K8+>`n zd&T&bd*{qT?pOV|*37KvW?JW@d3veEbx-5vzuU^oX4?wGKd632s(g~6UTQc9Q_ujt z+h4csOIfVrzqRqE--JeXg%H>pjYsj1iObuTyEx^ebBAaJkd z(k?iolKPmtTe!J+m>2FXzi~Sb&;X5`$7s!@cS+}}{+i`tW9c<&{34XINBiqDGP0DOS@1<6;3SH8un-X1`mD-Mf0(bKMT%n$%GT!5fISX zY;oGM*TSO6Pq+-+lYAfJ9>)c;Kt;tA`QXo*me{WatHzBd)B8|a`}_MBT+KbUr)TOi zFbA>?5=Z~Xw}{@a`v2{~(6S|?_3s|Uc8E@!HvM#JVl9T8y!=+AdZqr1NAAYlPlX>o z1+f1lHDNEEKT#qUHmvjTDBO4D-o4{RUdRrGQI58cM*UE}J0>C`B5ln9AD@;`v->MI z9E$ku73|GvQ?sUr;$OXj4a<#letQMC_Pxz$QY6V3cpcry$kN&9dtbkP?NYm+%B$Ea ziXSMXFup=y>+{vC;1P7peNxq`l1p3KE~OOivQuRoeH5ZQidYxTm6Jp+_wokTqCH5H z7xRf}BS^kVCH$NTsM4W(_YQd+?eXEc6!Q_DS5&l!K3v=Ybz5RG*o79x#1UJ8&yRiDDFf7p_us=tn@;c35m zwJpM-a42z{%h8~cRdcZhU;z~Vca{*~X}%(qU3fU@d99otpwyF&+u~^UqX~=Q%08&l z2CdF&W#CGGB5V@SAOMukw4|8?PlgZgN4k2BVMJ6{7!!DZ0%$=lI`ujCv_Q&ak;Lo` zhq|?~+ry(Lrh9yuFKK~@(ps>92+@ZWWXC@^k!YXtU z9CBvnXk69lz}dh*#$ZbMK$A|aVVD@!H+lB#j>7+Ydd%7Mi{b3<2sv|tXx7_3QgV0U=!=|4XBP7+jE`sotJCypTP z3aE*&K!Lsc_{bz;XvcmNw^RQdq3RGMGSXt%^Zus>A>WA_kArqE$y^;3#SsI8d&8NW zp@?i-NcuwmfY=mk}} zbinj`8P4W{isyH_?2_E3hK0Df%E(oJTEi~TAy^?d1*<5kH*HEP6l@&!E%-wA?%P+m zuNIy~Fl%equ03<^oG#U^#n~K_SuRK8;`UHU8v%_Y#%j$&)89dvA$avf zn@1w^Cx#i_%5Cip`HOuxpTH$PH^?+5DXC0zuw@WI`nTXj>ZN4y0Y6^~2-)=Whq=S> z4A9X=`XNQP1XRkE=qWx6U0jCUnzGzTInh~JMi>Zsh8f{#8aZmzz^Jd+pNrl#qSKyF_{=f{pX)pg z{o+bN!o2&bHseJ11MyJLPev}PUz_=@wxfk!d08;dy&C30Lr7dpx!IWQS1y9`U zP55^NO<`EmKLu7+c#g5c01(WA3Vk%paz)z;6Y;|y~jjdm3Cf)0kQ4y1iVc;`gGKus%rp2ewTwbu!! zx=eg)(1VZWn=an2(a@e&n)Jn=*y13#JdQyltI-zP+iynM5@Q4a7s>jTuCA`ao5u+~ zecS~y5+}Fc0qYmtry@681YDA6;T!1lt#VqL*m2nV`$yVBNUAhEBTqnBYj6Cn?OmOH zoj%_lo?qU}3O5?wLv-xI8^Ulyh~8?JVmSpp4}d<^%xur`XT`-mU^ubtwdSnZFI~D| z*iP;?Rgy%4E3EC`d=e=qn%b8T5Mpsah|+>3yHQ4<_*<1@7$S2P-L$EPay#;0UEGdV=ITi?EIU-vLH~= zY4+&EqHEW$3r0B8_1O+;xA{%UM3?m^F{)aOIy zNaSyRe*Nl|xc8EfsHh!0vkJCfx&QU0x%EgbQ#e_N1F;f7@F9@f-vspk>#rH&sT@tuNEoZ1s7Pm0TL|8vZ<4L(c@C*bh z<4JpP+gl#n`xhug?W5igKH9oZmF*ZvZR(sYeoDBSxu~B6OiE2%p6z}RSzudGkQ;_J z>ugVXE-1#%MExA{{4}^5K_!tXMSmj4>6d%$!p)lz3x0V6hielgB%&k0 zdC}x5`d{gB9}J{xEy1%QCHAL@9$B83@V4+D+L<{uH*7nJxWjuE#5;Dx6t+Miid-o7OuQ|Pmqn0s};1*kzpNUY@qJL;x3Ejf| zf#iwqH@X%_PR|c)OTs-Hix;;q6EodyZKDV~zAl4jALtJyO;FvX4G?M| zhz}~y5>GAg2Zag+_qcLby#A4+T_W`(LDIW0H^|A6oWh{(2i`dpaLn~tjwS`5vhud= z+f^jHqoRht{YjF7eV)@;cJE#Y0)%mm2acCe*0KHZeFAHHKGoN!Xn8H#hi#^Nrr|tu zMMcH-jF;88`%6#;S$50B`ni)hj88ErAb>Ed$H|P)Uf%HbQ9-)n^m12nDN}8C`sQ*^ z49(3W1hcEG90|0>^FO`fhlyb%Z*`VwZr6YS!o4Ap{WBuP1L2(bNS+&bcw22C5k<$& zbkdh_3Yj5;2m1#E(4tz!w8Zs)y#7oAGnzd+9>|-s`}?Dt^AMwPlJ+M=wU`VCoamy%G04Dh?7#;%+E9HtIPuD8pDod|}wRXuk4&s(^Wn;M#7& zXbFbtmhi|u#+t&aOop*Od<&KfL3zgKF5(q0iidx|K-=Z(c)Ks(3?3@BmcaNBYbPNG@R&KpT~0i=z4Qp)&#JfudKHwO&I0nY?s}|l75sU`Ug6Jz z2~>^^e|7FeF>r1Ip9kwmTTB>%5ji;%y|;Zi9v*IbFfH*=lM$zp^esA$M4n+h;i3ZUF+CuiX9t(X-tWEhs;6mz=GND#t{>ZbrgqK4SDmY`}Y%`^~j>01UpLvX7%9+50kwV+DS3f!nn=WT~Qagc=k?pZnI-bP+2d(yjK&N@>xCP2_W= zWvsp^UCGI5=Z&rDxU<-Q6$ohf)s>9iBLFzf-+DKe7y z%|ekmefp{}VN)MrJ3-MtmiMyH#0@?5Tj9wNR6O_b_=ywwq>0D7k6wyapB@9QRi5(jED=!a+A^PSkejdt{f37{(#Q z=`E2k6G+$zm8ZZt5($XM{Tz#I1kHxfCmH1g)fsah5NP0)>?uN zb%oM&n1j7*b$ zeC{gbc^n4@mGd%!`;K4dO&1p!tL3pJ55Yr*v6J9r$WDo^i`?g$n_p$@?{S3Rx0pa- zU`67NJD2*l@K?sBOr&Q?;@xZ1;tTwD28Xv14tfWAfcB1EHHc&(S~>8MAmcP{y|Esj z7A(-v_P74$y&*$B{=}>E zZ#qMM#ElVWjTD<&W{HL-&l=alCOhhAXvo>__f!zOKLNJBrJSLC%id z1C|Z{Ep!e^x1AOz2n@`s2$ueMhUqaH;c!WsrUA3+?^n0?n&;9d7&cVYw0MtN8h>2& z@n1#G!tTpk#abDkN^pNyDleLxDf@=hKh!ocF%d+E80vckV9^Qj6ItspHK+Q~UFxeI zYdXH21nnD}mNo|=GM4vh%xD~;0`Z9{yNnFJd>_A!nk51_ru^OJ;ep3UviCs>Dz+HO z)6&8AegAZIor9Gt4r1H~&C!s+R5bQ%IIPz7J9l>QcEAGj9PA2pBErMx@-!0o^{c;r zTBHLw9IK;aRJp*y!hm4f-`w0>{5>HG(UP`=F!dRhr|aCy2Og7mipo+mZeLH)*}3PK zLyjo`S^RVXV~7!}0lJZNo*bOCDJnqqRV!=?_n~qAKybjPI+MDki-#9WSz^gQP$SX6 zs7TuB6OxiTtXip7c7vfi%tfCuX8Gf2>@V$QW#h;po#$TuZozEyz;C})lZ^wXPn{Zy z(w)N29O#-V=#f+Q7uy6n3Iz*%pmit7%XZcxqj|;H(C1R2iZ4R!o-AMzbhq+1*V)S< zHLLL99N{HB;El|orz+pNnrMTPBs0wB+-_nH0@XI0&)Ic1-o1T0grTkh0cfK_=Gnb# zmoA|KDS0~ib3QSo(0x(z+3}O?lAk{s^`Pm8Nl;e%s0m@`p3*(61Q4MbJN)_cY8^yX zmq#b!Dtfbs^uh&idI)9%XX6?h*Fk}VHQuTF_)!V>ppg4G)xi*f(|D|{yyk!nH{rn0!m$nEbYM}B5gHmwphY|lNBCC)Gh`BRBDPLA zcC6s5XYLU`m(h*v8_Mb1Oa z6PU^+G~w*VQ3&7k`R$`o3C%l`l27~lx3$Sy$D!C25O9nsKAJ#R9k^!7kNfy546Us8 zL+6@1?-zFNJ2kc$*|F|FzPUdrE9kpI`cfjhO9?yfgqetb6w1@YY4D;xAsXL zHK}dw>$qymq3)q;nrrzZ!up9F=Ncy-{pK3ht2@q3S$?;!zZ4|KZl1%u_?b$)XA@)N zXr%0W;*g@j=|+Cb8S2!2rPTcOLJ8FBdx&QNh*idSH*)mocnrGax%mEHAOc%?!%)}^ zyZd_QoLRHt$fmo1H(YXK2*!-@0J^25nF8EDNY1gS`1g^Vglks6;PaH>a`*YFOS${P zx5@bc3+X?7`gHffgTrDMaF&GB2sL~C>Q#TJ-~pkmA#CSG{f0m=_1w90pK&|T!EL&4 zF*GV?$4LB$g$pN>7>-acb`D)VW%%5wlU)!kE5&4>z#kM*e^QbaD(hslK3iX?)xWve?6ib$O))w0fLd_wjIu86}6ss&##Q9>bZ1(c#s(V4^FQdErGB7NShXpX~|_ zjiEcM>)hKNTAQ_*%?kVcOxW_S5+g%HC1qtAs3Nu94(oe}!i;koBRh-t`0(M$r*&s= zBxJO{8MVo@O|jMj93cBpRL{>+(E8DjZ)8VU3omJanGFGxUUDPmbZedn*CiE=&24r` z16~~t@~#hS5lo5w4<`NmK42LGdpZkUyhElaP}jUIQJUMpxHMo*U_kSEGbo*;FOS>E zD(FLfbZbssDyOp4=W&k({Z9-c+qv6*Npu+y40smvSvF2D>{hvkp8C@I?SX+xk}iF^ zy8kh3SR8@+Axf#Q3vRf0gk3qgxzM5FA#-=O{s<2mXO?;PREKR7YvKLtH`>Nd=)~{% z-^j$hm4)n*e7&Iih}`ycJ{aQGC%l&_zbyXTZ<3?y$=92_!y_W*<(>R%*r&v$TAw24 zr#5fGjiK;m6RnSx)zzx$@4z>$yhZ%bm!Gm6H>1jf`E6#KZrboHcavSk8G;0Eh%NfH zp)mVW(KHzwQ`u-Z0c#gmvNa zru}(wM)Nf%5m@IgSg=n&5@J!Stop`-HfKeB zDSQIJmTX`(&M;XIIW<*z?MNFPrww)C}s3^eoy*?`ZN7)W_$ZPba+|M}A_g zM^@Q%oN`bCUVv8`2X#st>r*Gf7XdlDfK<=M+S5rd`#eo3m~g7S@L!YwP&- z|IuKTq1ccWOxIvJqYq*STybMllOCQi4kkkSMVxAiyXol{eSHe1hvH4n>g4e8U}1#+ z9S5x=a#oPwFR@1%{}fhGv&?UE|h7o2D%I2cy` zfiK`YMa9MgY>U}(TFO@<=s%mTG9~q2T73qNugm#QlT{L;l*;}$gH>XnL$&%ABfA#< zRnqbTceq1zh2NY-JCR+((wX`OoM|iGDOY+21^<9SgW~gE3coYN^Dy9WNJvQkW#(w6 z2-pM>6_H74L8)z>vu}JjQLQicL4VeVA zWuIlkjnxwSL7*3)a~ctF1dvrIgVcWX zDj(60&d*DZffAo;uZBv!=eL2oWEcAdB}?bOiU zj*6aP`54J8&$WN6l~)_S=kmqyU&AvZC7sL{Z%>ans`M;9>qED{CENe=@gV2u(KwNHy`-rMS$B3YcIFj2F*Z@;N! zIQ*B2yj==6H?yGfog>C1*{nJZ=|bz-%9Uwm$4)TGEI|LTQyEs{5&W8}nwl5%KBKo? zrl+VsJqU!6?#Gta(H4U1XBsRkNJy>TO)x^h?#>Dd+wfgK7v>g(h_Hgd^?y$xdFlWz zw#aajzjgbzm=#6UfxTI`WK(^$DZijCpOV%s(e+Jg_WcpAr(~XNA*H9MXJKinOfNkY zt6;1UX+@hHA_2~qX@}opXg*Bg$*eJa(7OMn`~73wsXRjb|9@jYU?sO2sOaKyT;}2; z48fv|>(HB~H6OY}U_dd^pJM(bqf~S$B_zTGh{X#N&8`)xT=M+&T#3Ad$mmYQ-q%er!kP|~9xprONi1R@s zlmKPoz0nODP}Ta5g(ncH@zs7;HpH~z?96b##px7YNFlWIvi#^X7X}nyMSMcHUyWhu z)7F3c{Dbt+Ze7KICz<(c0&^KtvJi>f3(c5TqcI7W8F+DR!A=-re2G=G2FyD0^{>&7Q3AI!O zh&1}Z;ApJ%s6=rBnG=u=rcd{$=$nqQb@j)JsnySNClM*zT|IZ^41Hn>u(sPtl1q?_ z=~kWryA+E(W**$hui7;wWfmWl?F*ooGgWYaX zY)DJsKISHleE%$W4ng2E<3`$*aZd)PyU-RAd+eA2x$l>xwxx9kBC@&*y@4W3Gt%D?3H<$?Erydr?|<%^b#@8w&jk!MgG3+ppN%U|c%-Nx zBobUbeq6TSqgr0Tt*ltJ>LMm-4SHqDd();Jgb@U^skQXHKO=KUZeWQ?lKHo;KOqt8 zr@6dbUrxE1zu^h}EV^t4gaHDl$X91G(pG3C5ZiIdU#=1_j&q9@ zYG{n{hu|n);JRv6oz9m@u5=@a1V}5GWHO17xd{2+?^7L!F>YOo>x4;p?%X^MyT*#= zlM`-y{QTJ$-(F7B`*9Na?DN7qO93DZ%EB5YhOHqV`#K6l&Wn$^4N3cvAz1ckO^k7z zdHdEaWK;{6zHZ`nwi_VhbOcu<{TQBi^N6^d=1F(*JZO$f#pUNn;wn zJI~9w1!XImPK1zdfKbIsW(yOuZTK8IHHZCWXs>Z z3#OIkIZcCpybn6TKH@vmofhxlxAfO^+Nhy!+rz@TLh4H-%=e+eeK;+{gWg6!HzJf* z_dYRn@ZjR-7jn~8{TGSp>g=hNlJp-rvJ150ud!zAKTeqYb=BX)-x|6Eyj&ETRgiu8 z#vav!7LQe4n#yiTq5-@|v(4Fsb6)N&gKrcYlc}N#cQCa#bxdtyRHxZayYP30x(+1p z2`3CNM!as(2rp(#;Y$UY>k$fZywcnnB#b%b`CBRT^zgpdq?o%9crqD4y70l&ET6|22J!!iEbzchz$`m1XI8Qf1t-pNfKTkYjJ_dHCcF|rVw|< zRI6X25i|ti7|Gk>uShYBr1|^TS!Ro0Hf1@Th1(PZ;(?}$2Pgew?%QSqm0eEPR?Mho z=q0`i=4d$gP6ho06DqoO@7`YO8lA`D6U~@$b6WU2Cccsh2fdl%IZ-!2gVE++i}+S)wZv!1F=hoKvVxvf>JRu|B~K|tWbY1Y=g+3;Et zoux3!dMqw5a8=I{3ne(7g$)6lRz6<=C8q?O_;k}xFDg4_EiHMN>s_2u}t5c~Eh7|g4i&QBDrt0XY-;)F9t zLnDvzh`-!(%jVliK2-m90>>z+ZOSncCL1U;0cM3Tv258)hUn%uqfCVC->(RGWaM0T z79?$kw%+>_s`;ZlfYGBPp-Q>JW2@L7T?B4k6iDAT)dJUFI8IYVn|<&6#)7{Ca_VA`Xn z5pn!P~s4stSR0A!Z~OH7xJAZn^s+<-=ey1??66Suf*6)9>vAW9L~I z9xyofrTyH?ukWL8N{o3G89%`L(Ga-ev3+HL3MHtDnfY)e2gu4$iUSr3Y+HP5?-Z#2 zFsI8et_bx~QfM2ln&$Sh3F8_;0n3FUvXW?6gnkm{{X)w&X{onmeSU`i?&~ z+JAROviZC0PdZN5)+Wy!RT%hp0X61^Ksro1>u70_-I)C#Yu!Hvai~YH?5N~eU;f3Y z4pZ^(f7?4L$@$=2y+v>)Ult9r zjJ`O+>>2}-eG5#H@8S+0ey~N$bt1)3&ryqIu&0nh9!A&nk(Y0cVF+Ra+e{C5JP!}~ z6y4MXM)rRrdQskDGs{}zG0Kp#4=0#w<|oVQQZVo#THmh5&)UBb$2jl99$|LK(4qR! zsFH>Bov=sZ#3eWK=~S}e{_LD#G4$DSGsGBZvH;wN=pn`~YDT*ijb<^}=0ODNX@^Z$ z%=tACrNk;3Zc)shhSZ~y6%Y~Umvj?!nP5vM5ACi8&Z3zJE7#`Zxhu6_GUHVYB>`t) zdZZJ-92e~tZZytw`@jD3M;tTQO<`szhAu;$a5|-BWb~P@e*780Q&L!RQ(qeac-WjXV|6ssSz(tb_o} z)bYMQU}1<*`H;tgF>-cx<_feS!3oZh_A<}URhwba%lBf96(tA%?iQGNKD4lt^V$sy z)Tn!CV`0GJ7V2@af56`EWj*%s9@IL~To7zobiH;G6FNmO~#YA!J1q39}tc)3_q)E%_jJR|kp zPc(*KR3_GgI7B~BJa?D8+_ z`*%7D@oK^pFS2sz&Ye3~WZ{<;!IJm=hUdEaU8&X$G31GZG*x(2Fd!??FNBtB4AaB} zrlUv0cy}o_=l2K~3f&vRfWsx$eM&}%O--E*DJ)15-m_NJMNX!{)TwcIis2ia$2a_Q z0)v)(x|`$UO+e-oHZ&S1Hrzstk#y_T%aDspImcXY3cA5qJA|WzGeg9d-WM5ZVqg%k zV(9;C<_vFu;4c>rLeefWA&*f`u3hm>o`C^V<^F4r#wDGyfAlz)E~31gul4!Z|EWF0 z*$#V#XcSwydNt}Gb0+XCXb!ncjFFQBep&G{lR;K^jRofd#dQj`9sBPfa2piW5gbbG zuL>i%Na|v0rr?vrt}(<7P3+*7HzzWZC;QM&a`FuKzM|IOW4iP=Q9^Y)LC`VWpe5*G z!t7u=Rx6>Qk5${>e0SvJjD8C*x7N?A9#*G1JS6cBZPVhEDIN2AN)c^{3#5Jf=9}t+ z2KnKbsN&e_&zGyLe)DE7%Tq$)M=se$pJ=8{?#6=>V`?%vIXWos(@-_=#yGq|Lg9B= z0w|$hq(15@Prr)vo>*tv%epu=zTbPw|5n~O4vk&E-fbyHdxe!0{a-o?j5%s@a{tU! zVEZ3U1qttBWmiH+Z{07^moK(M&F2uR>~NtYg9n>XqyrgS=cYh=bBLW8e;{Q~=e$w8k}Q{H2zn=RlQBgGiRyZY6wUe%QE02ZSS=9>C? zTdbr09=6r62hYa8qYVOEuc1VOuHC_rX6&?-greW+z?`Md&T8Mw=%bJb&oj)@??Iv% z3%ft)EQjkibl<*q1aOIPmRC>c1ouLJw4vLTVS{N3hmqRVv%M|zTByH82~S>@sFWo; zHJLrZOW@1h)w8kbBUwl$!_*_a6ho7*GoVI@s7%NZIaD_ivcy!;^V(Lbm{dUmSAGHuJkW1R@$NbEM0+@!=R_-QU}mBd*YJN8 z_ab zl`$Dh|JPmF&w9?1%RWJ9N^8&@B$0B^D5ipFB~=1s}; zGl@V{zCw)ppE~7*Cm`bD#mf&q_ASkBU)JcQ_v&wbJB<&kCjp}M#;3MFH@1P!@qJzs z2|rRqy^aHv)bR;#`dC|Mxa6N~&$p!zcRpe?a^%jN;paiCrxN4ckQDXM72f%ySMNzZ zadOe`N30aG6NiWP^@pUZvuePzWX|%x4wUhkurxwjJln50!*-4v{^gfz`w9SSP{4|n zTjq_Wa*mc0ISuhwX9l4iyQ}-(C&SpAG=MpzP^{Lwg@#xH#Xc;NOt=mTF%MxZHD8-= zdyFb%D(WxiBaeyqL65Na#2>f!T2L<63!`*C08vUZ!Q8V>b}^-C`H$jS)KRH=>T^rO ze*}Rp0mdAkI`2=d{;kqhf6TmhqgRMPeBZt&t@K6+AAligzb%Y|ecI6j2cT5X+NCPy zsX8@?t+tEpiyWb6&w_wY$7ar+-4YKa{hK3i={-^BlA=;QQQHWVBTyHqCM2LIc2>88hrA@9j+t zG-s3~)*e1-$>63icLW3iMDet+=r*T>R}^4EbQofm;()6(Dj{_xk&x*BvBQPWtAzuQ zUbt%SIc3V~h=_;>7IS5{ITSajl9Kx(FR!{7zlWe*R8b`CnVKMVhTc2p=cUzmUME2j z2=NrE9H@w()Eo5h^AY^9#jetf;xZM&AB}=Uf=ZAZjjQL+(M|q#aLa$>@$QNyF5qrw z!hC=fMzQ57LS*6~3kV5!L&Te|Y;}o;puQkIz0f_krn%Kn@tnK6OMI+q_3CaQXrN0f z5>_w>ZjQu|^ykl4v-bV!1vwd_)^^Tzv0ifovg;~A_Y^Ra%gIwC zUFywvTW$ieX@-vv(ed^RBkG zS|b6wf(biPVn$gS2OuYgKWL|`yGM8N+Yu~Xxi#4%N5rL;?Bvm2y{Crm!nRbY+fSa< z>0}kL6;Vc;`BC=v7wNOM@$2ctHTo^-;_x)`d`k2fZrY@jw=Ak2;8)$qondcr9%{{- z_s%f*wx!SQ+=+=n$I)ZhrG|B4isI!P%iEtCp84(JE0(Ju7%ZYXek~7fbU#9$XDA9v zMm_97{u286F7%vN|L-2W1|uQBf-PDXOdsVrddv^=74sf`Ixms3p3MjN3eF%2s#yAF zSx%bxsn{E@F4eoIYz{E^4YOCC?Je0b;78*!A`^DXKqZjx;XRw|it2|L8N28ZC#SR5 zn%E^TlpxPvz4s2H4%Tb*+qWm`n}h%o;ZxIbirTM{BiaF=L!k@nKkAUZs`$s0;p112 z{nfSqS)1V8`TBL~B&3~)GW<1jY?7lS4?hG_F>P2TfqMzbCF;u?%@}x3j^ox?ZH3){O(z?Q-{KhOVVTjQb#$z;MV9| zsa}Wj&|ulzdO$(oy-k`77TIY+{;M5KSm9;lWRbhDs+79w{DJpYaJ< zH+xzdm3;3!&+)W@nA9Hr6EBedu!T}Xl&?g`UAuPp zhQocZslb8=7U&MxZg_+3yLUHocXOjB3_RUj5pzQi^dI19(l=sBJR;2sJ^C;doZO*p znNZtD8!rLL^Vu-90T6}TCv-eQNW^`Boz^*_z`k7PqUSzKMm;Vm<45C{28%P2lR#Px z+?$6*3N3kgvZ(1MdlLadeLFGuN9QS*Mkv{svdpsjay$#L7~~Kh8XCaV&)RAU zR1?_@n{LTXPVak=(>{@+LI`C2?{Ge1Ul4p0ITdvJHc9{zGfZ+W^jH@%6Jpa3TB8WU z(!^pVUd*y$(Z1ZhVx>dp&PSuSN2}Ar|4kELf536+7|82ghze$-mscD7G#jQSB1PvI zx8*LE=AD3;J+=GL%_SfMYKsGf6skd7Z2D7u{!Y2@C$+)_1K06Mf9>0)d65H?;4eZc zCu42I9zL`LOMMZ6G;aqm3a@E2G38DBI=P{LY}cxlK_7J`)HZP)YRe(w9C`iP2rK*p zoc$X;Jq5zZLBh6l$r9CAkUPN@FvqSJ3j}VHmPqwAy3g9Ybrv0;pcjaS0#Go=(-;{s zoSc(`xUm)lfd8BB{GU50)>`4zz_oDzp&nA{I%;YFF$MAo03 zLq6wp^3t@RFrOayg$I&d8v3@Ds%ndB)izbiT*`AV*W$y^;3uEC+0@h$*r?JH%MKK5 z9KVcsfCjx~=(s+X8__BxAV#o3ok~SCxtQlgm-&fGn;{GJ z}0K(ZMGP>osD#gdJTAgW@V9!B=b@M zD6Vwll6J1RQkE0is!9b}_f?Cz{LiFqT;;R+GmJ!$fqe!BZe3o6I8As#)}iRRlq=g? z504KV(*`SL3~7>>P5V;hyZ2owWf)Ms1h&k(^sN#{lHv+BITcfcvu`YvA`sr#*&6Ut z8sYXfHUp7avb_a73wsz6+#f(xapm$fY7&mF`VS)hY%(NJ5rK+`gYdDsFC^aQjAJuQ zyNpWx9Q zqnaxs#r~hq)NS9soPu$MycC(KTbY~gL{~piLZZA)cDgqG%mZg*Q`1-?X4_RCyK*uj zE6V?_gfR!^S8yeXL-dfpEy}yX_fQl@LxLDKM%$*MP-DhGOuE^>$5rzJ^SpjD5P+`) z@X07T4A2b}8T5IG5&-v~~tCj%nL?~`T&;g0Q2|JP-= zY*YY?TO!j6ZBE(}^|t?-)^C3bddqlp0~X&Yaq}&s`cv6J*KL2X+0u}|$JcWgfI5|XOUfJMWdkRkf3eOW>GScFu(9Fn zGb!;$jUQiGA#0(UijG2dMU{s`|8?qH7S-9mN_}%v8XU7Z#Ca=z^24GAge=`% zRzxkUa?NRat1U)z&YTS}e&{;+w@*f7%2NEA{r{}eVQ!cm1$vP%0S zYQO9S6Z6xrmZyBfx*L$}WH~(o8ANvl++u9Qkt>RSu8?qWljQu#&C8J2|5kTN&XSJME=&@u>^gSYZpx*cPnF9#%SH)nK7tk6ZMcjNr>!l5pJ-9<}+?nG7oTz7?6VZ zccW8Ho+eIc$4Z1E5)}iRiA1Irk;mH;Dhg=_#TZm0zmjWdJbluSCXduw8m3eA5zk{3 z8U~4|O*~;Wz$31aL0lpLIXi}(b1ASBev_JJ5Qe$9 z5%5WBzgv-L!IeDqz-|r-}ziPQ%!Gxjc-Yp+;aj~IwA#ZQrcbb zZI9|pi9&M28I3H@FgN(ivdFf)%nb~Cvax9^=T;|=WsQ5j{B5U%ut~SAErz3>MxA>t zJJ*CU8Qk1W(l6=%>b^%*MP_0Dy8Y?#@x`P*?L1j-Sxs>h@ayf%m6UrWQw~a;ZY4kN zKbkc9XDh+K{0FBZ5LuzkK7Lo4YKi(e_aJNRjbHOkJ8vkX=IW_bLh7(mku_C_;s2`*3=I5g8H=38ocsdt>#&EcCR`3Ipx{x;1d;RzdLty-;7M3sC!!?OzwT5u|?)o zA<(=kO@xdH1~6UK-r;4LP$6_Lpic3vvlH`u3nJ>O+1cCs*}_Z_a>7M29gzy5X&o;W zeYON*n+Eu;?>m0-(uy2^7GC&Mh$B1*1A8y>&b_#2#XlEEetWf7H%sC#B-DnNG2^a(Hxw@*~G z$k!?%sse15!Ig9b66jB%s6~<`O&uw2H~6X{IsH-pPF_(kc37)Agb`HXJDIBGG6n8(-LjLuUnyU}&nKQyikljvsd^REbaECg_52iElG8Yk|z!WP3#x z|NJ4>F~(OJj^c6s#nHrJ(@X9J(>w$Uhs^@B`7Z;5!wELWz~{3*#@qDJ4gU>P6bP&> ziQ*6JdJ3V>i*we*1dq7FzLaAtr$1B3%&Tvf#&Vu zspp2B7)lVurg~K?n)vqHO}{AeCN>_aVEZUvv)9(@e*o)ABA|*bZE?MZ4cqR^efQ3k zB@{CKx{MMz%1Rb&MNAxmz{?*I*ylqA^=mGNQfr2S7k!5~4VVIR0CZ_PD9qUL;|F|* zI5pwS8V>Nl)2FwJvYWE&5EXP?wb8_cNwhn1Zkz z9>8+9)gt%^#S_g`6CexWu_>;hC+h$|-)0oZqCX%)Q*uJ%)u|*~)!864xXBSp!M(UR zvpFfk@6Kd@Z)cA znVNd>`ghC5er)=j2VR`O<8rmMzSAF8QQ)FC@N^%iq}-=J$%b6lO&aqq;mf0)nDBf@ zel5|AeSSC^{R!3z&ah~<;hx*ZFAH*ttWsXA{5(5*_pXpV@8BsUJq9L%slJcf>QRUh z;PjOo!WtZ>isT-Orx95~na7WyEg_kyKol8+gt+HATr1l_MHv-nE^8i~tvU;kgdbvD zn*$=8AN35);`4X!yufs>@;T5WKuyVP2Ftuy7S4ROsd_$_F}=%ygb$p`VmTxubd8nH zJoA&-`{?;7YoAU3cBhJ}>Ok^X&XAb#d;;(0*DTXmi5QgAkd9X7&{GK0g081^R}_wa zY*eecxaXvX)li6?sam;m<$b!&Rpns1d2=B32-su0j;$s65daeoax>>)cy2@+@)5WCWMj>wD}_Gy`(EE@K-7`x;3Jms_L$< z`FjHkQ}YY2m*FU+yCJ}VGcK!OwBxpRH;rnp%vKm)n9uBb- zgQm=0z_{bO{@g`TJt4{=F6jffVg}2tk7K&4<6WF}I7GDmP%eMG-9er!xRch)4+RB7 z#*Xz)Uhuwcs72cJRN#kc_V%fE&G)!m+Uo?L*0x^Nn=`tR|9AkjNEApCvj^aO5TSi= za>X7iy&Q}(#_N{w20w-inI&8$)n>1~Z{NJ>R3So1&&sOIQB0%8p{Sxrd!U5-bL6Y8 zqRG;|Yn74hrr&iJa$JXAG2D{)ex|Er+vf4kuKTQj!anxXqCqALksVm9NNlFAxT zZVhQeP-0cP?Uq3-@`s39HV;}`Ny01jr!*T+2a8siz|EAl!K8+vp09X7ZzVA`9PZG@ zK8`0=7UDt+xoy+1-t8IPVC*x*BA4d%+gr)t=E#d$~t2b}>udembn;cC<% zYz=+=qRkDv>Oay$eH%wo+ll19Ro%-WT8%CiHv_3n8kz7(^Ulnjw6^f`!2}ycfv3I> zQlKbcctqO8$V^e`-diLx%L!z4!R>`J}UrEzUc&MnUv=dNXh1fU$G+m<9?0DH3d%TT1P|83nTz zGYDZ0m|Le$ISzhwTIQBogs5_^y)P(m2%U5XocoF-e7O|l7~0k-pS>=la=#`qJ8zgj zywH616H^c&n5mAIVbv*ldBYXiOdGJ)g-w`JbVI*J1Fz&~u|JNjb54HtWd-aHS+b)$ zOd0-V{z&Q1RuwsKau$e)$iC_q8$bWn1#ljxX-)l!W<9ve7cKX zd$pN^#G*%q)e+yk)A=UiY^6g{`t5V(F2y*pTyfW54f2}Zn~3&k~fv%%Od*(asLkSTeMSK2Ab)xu-?Kz+|g~C}pL0XLe|(<->~k zs-bH(CUZx$V7YSf$TYwa+A;WQg!&JE>QW7ymGfj&P|_o2%y5-fWz=nK&hRMEj2Mgw zl(C}91q*P6I8>Gt&VR>1aS{*2aUjSm`bV3E_fAqmkSH~u@{@j3ND_#Vhx)j}+qT|z|xVect$CZ?*CyX2(f6KpzymQNo7cVFu zcOa_o``d4cum|p+Frkd%!fe#I@s1JNhq&1jMMAMKz|4q`YB4kC>>+ZMaEJ=uA@rnK z;O`<5ps~@vV5M^u-X(moPblj^X#U5K9&LpgBm?X|#}O&9Xs#qd%gNDEn9%KUnITXH z3`^iV=Pz2MEXwEc*cZr!-CZe7i$ z#>n92EsFFrD9V5QAR{5`YjF6}gY=aFkI!m+zTBGM&{E+bJY#5E{55ufL>w_vO{Upk zTno9eH~abB7ZOv)Co*gAU9V}=;KVJlrs5~P)%E!0u)WJBfsbvZRJjS6OCk8K)FtqF z_QRd~2Rz=Ssi)VJ#S`I_S(Sdmcku$ZNgIi#b+57c(Yf&xCV23?^#jaaM=t1MKgsf` zb%F2by`>6)W&Q$IR8#NxbxehbynB+nFCA*-hg3@Ac6Ad zMo($>E15n@q3*h}SgYHOxYCRSksJ*C1$rPki2jp%pxU2Ces=!z$j>hS{2%-j)_Nn0 zHf&cLJnPmsHZRqF^KHu2GUVdN@M@~6R{*R+wqR4_$bU{@>Y!s<>H&RoKWxCoBRAfz zG9m8?I46M_5+p(&T2=fL#n{8!L=|rac)Eg<40c2|iQoidHu(i(=pe{6hHz)#UWcm3 zq_5?AZp68OBRql5V}5#Uv~lks%XbfLwW=dDEx+tLXa22c&-_4ohxw199aF!%!PB!f#iF?U3HsS)pyl8D>5{eh zDgu&D0x$CqTObr5=j79^Hh!wM1x0CG1vMIWafOTr&q)Bo7$m7uWE7(k_!NG*$di<@ zgq%nGkJ~6*#uW+cyv~2ea0~7*s>wg*g&;eD(IyA`a8ukx=+8-xg@6UXvz;4Ws5= z{Qhtmw~O5|7#JB9yeQ~mr*~({ip9{iLkGA5J{>=Ke1%RePs2kCE)utbWp^WM%qVzV zBA0*Lu3fizcmO@!yn1ytF-F-;X<=a+QVLqA_?ZQ^;^^UeI#e1xP=Af~UqFRwgZ5hl zYX_Pe^AwJ94vUijn6_%IS`BXRjLVd7jZX6LxS-HA7uRvM8MXHg`$`(S-HxoM{|p?k zrLU{tiq;vh;PB}9NBg*I%aN6DWNv1rkL=pO;FAQ(p#YPR1PqO$JOINMsao`TrQ}Ia zx}sk`#0|fdiyUrsG>to;1R37}(_+?D$+~vq#&+}eOi5~i{7ll!_kr7IQ_ZV?Tuwpt zGCh4D*%9flsu);v^Y1b2Ic4$HN(Ndg#1r1gp0ho7Ym*_Mm7sbu#p=? zt7XeT;2z$r%%htD=}CSB_Z(_m`-*!E4B&e;m4%qkXT{CUrfo-nZvYTme+vPigL5Bo zu(P!iIr(05M)_0Tqutp(E{(%Ln?^O|-0WIB4fOdfK>gLr-{a52zJCYoc^KIILZ$P3 zi3+Y_QqI9q`ZzT;kqJ4nFm#g=e-Ep0zS6xJ7j_9kp4a(En8n)8vzo2aaW;LNU2E`} zl|kP`XG-XS)OHj=iYtdt70!yv3fEkDx?E{851X}9rt%kL7A&5q8ichduIB9pLtx%; z1%;-+obt!s-nCE)DvGoeT-WO@f*B!I83lp#8P8YVMKdy$$IkSK*x7z7WWs_nkkl+@ z)uc`zAk2(3@4I3X63*PpfUgnck7?tu0`3{KlnQyz)sTCu$IZPdwf0nGO=A%c#fkl= zS_XjlY?-b}J?Y`;S^uNSo*qWo!+|ZiW<})+zFAI@bY!wCY?CGyH*sb*hVmW+Sf(4v zFid`tc)IC;v|6>Qprq&IRP{D?XYX6t)Kci`hu<7CkJ2&v8NMOX7S?|tHunJ4*&Wso zrOp|L)Lzs6kdeSxxx`+C6iy-X%2jwM+~Hiv#yc{(r%zwcOscct@Z%ojG=UCGN9T^K zoJqsYka!XlDyb35K)#)0@WY_u%PWl**i#L3S^m{g-UzuM6%>JosWSutQKrJI$aEf# zI;91K4a-U(gi&`XZr;<|sNPFtlp$U3bM@Rs3m0C)=xzDOm{n2XKI|4{NyPkQjP{}t zkuT1S7F-{1COPy^+v73C@r8$T-WhH7@@lY!&fWj` z@v6Wq$kU4hGR3(f6R{XTMyICPkFj>MAo=7wlW5oRWngeH_kjDj z#?71NB5}ffUq@n-f9CrYAGmNqgHybA%J;)BozB-zFIOuTU{(xk7T+Xv1JAU2+)^t8 zH;8$$aS^5AYM^zMl`Tma;!=xtPHn~*i>{0;RoE%}z|0j1Pqxx>ybmANs@(f$ zwJt*!%NQ^;RvP=W^75Y8J+2YVH|Mp^>FQ-1aKHVRi9tXBY!Qt+zn7~$D|q#h*b@Qs z9|TNR;J+VK-J%SfGG$pTx^u{v7gK)8-fCB+W{s2pTK)gj*q8YLaM$6tlsl9$y)J%20e0GEmtw7`b4>4T8D(QJQ3Pst@?O~Fg!SZm=!Y5G^ z#eo#)tcXmx(5h8V0h8*2} zvwSC&bVMKaii zF5I+7{>cty+J&D7H+y=j)vdc0odm6?q(KQ7fQYF!<`NEWu3r5>^Xc5y5i5&y@j|bL zurd77Hf$`1D_xxsXquQYSv2jvtMcIq5?HYJw#)s@+aSg~F+*5cl!lr+Znf}K@1 zTpAXuCylZGLb9m@QLxSi0;BhAD4f9zCN2}jb(}tePP_Hxbu2DI|P}xr~k;Hj35}| zWbGbb@*dY!9NAk;+fpk{D zxlEg#?gD;ul$wuBWHnLL3a^56(;=+c!Sxr5E1_70X%oT)Ri8$YmB|9@a9o+pifu`Q z1YvZz^QEr`Z~4`Bc|c`ogXT6sdpF7&- z9~i^N(;d3oPjOi4m6=%@K(YBXD(S%vlSkf}yj;?*$nNNKrD(@LdjF<+7vglR6}KNI zkNwJbE|Wb}jV^6#&9hh(j)QU+(_b?(GCSP_*%rb1%Ar(q1fWqkn@ z?GbjdM2Gi&1~_+_)Kw6<_k#h&J)<=@GsEf%@*67Op)B-qz8w6p0p%d@F(_Q;7mv2I z{ISoXa1JH0CO8JP2S>Win1OVJJ_|1~98(WAN-R~7fC zo45dml0VmYuS{`+Eq)!~Gnp=?rKFdW!dvCFkh28NlH9JndxRlB@rbClUV{&CS;uT8gEMUk1`U`WHXwv9ruLy*_-pts!Uqo@W1wE*#wtz}Lo_2IZoC!7*}Dc8{R zH)`j7d(peg^sP$tU>%>{OGh+tIv@EspQ>>voQn7&l9If|_JHL%#2CE7`RF;61CQX|HS;jy6`MGxr^Pms9wk|apzFt=ROFoCkXr~Qz5m9~`Bq}Ajwgw=MU#sQ zvTCY`YhO!C7pfMC)o9B7ty$t*Knvr7jc#PYa&j!>_}~<=h^4wV*`aMx=jRkMY&gwC zK2TKjZq-o|K|g-}tbQNguPqy5#Ykq|kN9F}PMnp)$0w*sO5AjS zts+U_0%tR`#9Au6ti#Svd87kH2C;A72#^CHUNxur^ZhAcs%Ditz?QmCcTGv^#R446 zYr@=Tz&k|Car5CrADSfXeRUZT0p3k3AiAoBgzS$AF+stfRs0y*ILq$>Ke6{YpN69(<`6Sdeqh`jdm^ zQfI0hfPL7`5p2Zuj)AU=%q|#N(Bo*QK{{nO!?LP&&HG)^&Wy-1Tl`@B#c4Kkp4eUD z2$@clj$}>!ZroZ)=g`sTj8IX~-48@#ish)1C>Z1~h=Kw2hvc3rExe7-@NuWzvZa_* zrqYJXfLvuNUIY;@P#sH&WS7()L3-6M3#Hx@!83G%%zSECT>QCm#fsCwa5{aqCf=9~ z)a9F&vcLECn@dtF9vzWRK7Bg5&(jBIl96lxVsz>hde<^+P9w?0nzk7;rUbmSAP@@O zq5dUMgepZcQ&Qjm3P?*=Ccffj*xkLW?fq84y19OSEWC1xxFF;fL5ShbQ4WD~hD=iC zX)21-WEh>KF8>1wG1`0M*kotto;)M% z&5vPlq@6;IOW|Bzfqyv76)(U5NjbJ>_lfTT8_#2xR&|Wd*^=_Y5ptb)@Ts$ARRZOF zl#-&wElK&RxDsXhT=&%Y;#C|%BUd1=iN@j})5wJ0S57bcGFObW9A%0tS5pfDT0mD7 zS8(ShdM@?25B2+s;vO2cML$y>*;T+1%M+>KI7udnGrH{_Srnhdid6bN>0^(+$Z`Js ztLRaTm3<9Pyny}Yf$tO3P?ctNxuEkX*64i^?V77_hP<&Rg{T zYxlZ(Va1PLQsdCYRC^7^AT*=LvBxghMABcqN}gL3?{0WVMS-ZUOhCKsB+-c zsZ#~ThcY5(-O&)&6D!6QGdakjj7+7-QO|vlm}p;bVb7k4-)&ZaZAeQ?3eurSn7lj5 z4@n_oqG#yiPb3@HM^$Lo4O^kL)ObM0?wxCh5C)FAgc?PkUyBKuaQue3ktC-yRZ@Da z)dSC|ttQdz=zW0X>q>Ug-K+s8DfMX9g0J_Z2fRYjn-YBYd*{j;$(TwcQCUcQOTA9N zEd1@LBXv79TIowVXE|OS-7BK0UdCTOeKO$2lyut)t-0Pvzgv6p;*YvXptzlnnIB)Y zd!`Gm|C>AU@wH3tbYvN%&PN{Yc4!$CB*O-N>YE{R{jf z`r)qgUl=@pB>2bWP8~Z^Qn)f9S@gPBVj6uzC^j)@-%vfT%-eYI)`8FjB*hr ztgp?hs80Vt5-BAO!3;263202OOG#AH>jL8ervScI3ozTj#r=YAlB22;W-g7iqmRb@ zy&U0Qh}C0q^J#oVkcDCwRsYV86W5?DjK(&>btBlS5OAntks`D?eh*y5IG_$RhwOIn zGsGfGrtO^1@&!^@gA_(Y!n8o?WOV5x`@k`mIOjaxqpQ5$ZG>&{Tu)er*SuWJfSajV zfTuhXV!*B zX88mUFp8&!ojP-7MViFC713WkiCkJ&^g+m6yWlMERoUO< zHPftR)G4bw@_SB@DB|!n`aa&An?Z`D`p)XTXOj~s;Ti}y(=#&4DH1a-1({ zffn{37C876Ksi#jIX|i!R-3%+O;4;r=^TzjF#tp7y4g2g(x;`bkI&Jbhc0n0%O|Fc zm!M%1*f#=nRcY*^=b&ZxdgRO!JHrvlNrWzrrtr`0Km79xsFv%nHkLJJ`FgW)rz5n~ z?NoV|sVS%p2Z|$5=WO+BMfF27^>+G{SuBpMr8x?X>)31AnKIQvy7I-;?boz~h3~U< zE^bz-{kHeaRn1Dkg@)EAn!b196D)H{`PeM3v1y6hga24I?NiFA&QB5k!U`l zIcz}>uq#QFDplTA;{bW`fN_4tjmxa()^CnnxbS_|**VFPv-RE@(9NgJwwN77gj@@% zH&l2%(d}-gdVJ1jh(T%H=H+grO_z#)E-PUacsBxDQgQb4`P{!2B+HTv&))BGuI4Ns z2_%64iu$P*puQAPvYbGJ|LfQPsFrBcLl8`AiAqe2g@VD1R_(RuTUm~LVG0{!8|v{C zR9}nele3LJ;dyqpD*ZJlqM$awaYJCL*!xT;_5_Z!O_HEP+2(*IGVh%u*irO+X`JIE za$ezb=4RRg@YBz`>!YY;y+x(kzotfyVK%aK+2)n$5{Ob1O&i^bu6N^R&9-20x8}6x ze&+v6C`piy=@4I{Iz!OSb@HD6N;Rueg$h%tvU!~X2Tvt^5gCF+6w+d^0hEASW}=AZ z^L^hlPoOUw2&6$QR`n@UrtkypLUZTG>Jd$YeAOL(5<*(Sj1Ph6T#1=^7D?makt4Un zKg2ly+@jB_pOK?}a_Ha**~-+mq_?bne`M0INPX~wph1(o8@yY%Ldf>DhE=(s7wFXv zsD};Anv-f7Pl!A@fMP|F0NYiC8O_B~DtW(beS*L=`THoTD4UknaVZ zYxK1kL6FF+d12^C-0hG0^XdBh_L~6T?DFfhnawWe>srw6$Y35Qz5VwlBD<3#L#!}z z8jF^b9uki1^Xnel|AHm;S5p(|!m?36teRLfPkSy&hl3%;do#mQTw45CbaBK@-l_6{C)Rs zBjBQX&6?@_-pMCU096_yz#xA0+_SY1u>n0;E|>c8)`C+^uB1}N`>M-tIE*kZUOfN2 zlmHs)v!_oVAlhde8VPUXA>7+{b`~51g4m|-e}J9~k75-@EsR3sfxcu1M9&IH){$giD@PeYEBBZIC$DNokh>s`c2pQ-|UzEt;4f&%_Y{BhF6Z zRNwv)$rw?MM~~WvUZm+0K*TI4X<^2V8iMn)+ew`B$C^#sAPK%;19!H31MaqrQn%;^ z$tjaDB?AMK3sZ)y1>2EeM=fmhJ<1J)Q?bYrRUt>6MaPT&XvyM%))b4 zQ!fn`OT-Ga84QCsI`#|YV@VdzsmUhL#vvGUh!AN-GJ|^VTe#Lu8QlR9_J4;BePB1q zz<>f-elKQ|qj% z!b_eVe3**D4U80EqZAHwz6#8tWNcf}sp4Z7OC~r^f2OqfUjidV>ermtv6gxoi3?@Q zTB_o(M_!EbltBiaUd^9BpGJDnp$ycBL!daAFk0cf)zf2E0C=3j+Tf-y8KN&?xhanX1}2W2phR^OL#1Kg1T*Y5;U z%e4RFO79_B+YWHp1%GBPVk6mM4>Rt|$MfQKtN%1#2 zh(y6MJ3_mD;$YYcy0{AL2-Y3=@Km4ap3z;L* z%eVt-2-dHPjh7$mQQ(H19?4#-NcI`msK#3T-6OOsm=-t>cpLGKS>Hfo`dt2~$VP!= zFo2`im&<)?;5Tm}0h|$G=LKfh*=I5o9NvN5*7@_P@uG(l`@&nC+Rj zLoffaG=(crX+a_g{-H_=RaIS}XCf5itXHjmP^XMT@-4T`zgZKX%O9WQBqQ##_4%$* z>1vHe8X7;tO~`C0UYQ<@(19~dt$zKa?0&OnXN`-SEAdP~Gcz|W1)&~yzCeN?&?BHx zY|_`M0=llQBEq0?!)GNu0kTbOQddEXPm@6jlo0*!VR+J_o<}L#B~HO9`P4Ke&9TsR zz4fE}yK*ePWNiKcA|gV1=x3RX2r+&IS{jTmMLjn$aoLhiy{!7BJn1++MmP7}kNylU zIW%#|nF&wktdJZz`iQjYdo`Ypc^VJvBnvw)?P3E_P`!V@X&r;rTcRVEL1`d|@JRD> zlRE|PcPCzHG5tySgn5I3UM2Anq%l1=cN5@#h;7TGZ4x+f)ZcYjRgg43^liaPGju|( zgc);OA8~$ybb#cKIpHoEW#Qp@0%z2Iefq!YC-zvK%wx7YH3CJEsp>#LGl`#By!cC- z;}>aZu#9!mX_}PuAKEO$9U~P)sn0^Qg7yWZUHW9SCZA!6OhZ3-N5_Aq87oJmUGYAyB;PIW^-v+cG|_>FlGejuPfEuFnoqRZ`eIJxJr#0L!djJy5x4UI`32w znQ86&grS8lT39LG#<~L_BKKGLuA}Wh1LioNcUp$0O`k4@T&1JV{RRvu4!qO;*UXUy zGs#YckTDoKG={WXW&w#}f?nGV;1Ebp1_n{oVP?6`ZHBU-I>CxnhRnHV-C3e9{u?O4?j1@6Cf}3~I2b}T zc$_uF*P{#09X=KK<;89Le`&e6bLWm&4H2ge*4j2u$0q|_humY-29*`|l}Np)D$4I3 zQ3-}jqG7ALAG~w!hxGX*fPJ8x!f!n)chfF{`=@~vh!z|^^8@J*E&KMJm|OV2dNUk@ zhI_AWGvy@r^k%N-gG9hnbwvB96C4^{XE}8eT7BaQBlU0@hM@-pq2*&%*8uia*3njrBpMQUj2NIAt1Z7E#P$lNG%}s~xw523iPSr#T4) zfTQE-al0?%9UE>S>A(_=C@E;jP_g2{fJK(5vti5Lq|NLE8^iH$3%7fx;7@5T9<&b%{GhbRGqb$>|Ic$l*vh~4T&!FeJKfW8FtBe6E^-Nn zqaedea_n^CheUi+`gD(F$_|-R!FNnbIa3HK@@du2d&TrO9lCYx>JKYnW@NNsTwgdt z*c8j)c~meZ+SfQkTZzaPWeLs{Fk){6v2lhOpS)HTt}Ua1A=uh#Y7RQu)XUFJC}+=R zHKtUq;a9xQ!5KXWdQ_;?Bj8e@fs>z3Le&7O(8xaSu3z5ut-iinFrvy4A?|^TeWTgK z7vG)DIz+{Tmaq>qu;IV4Y)ozlx0>WIzFcYk!>*kaHZtOL)kejqXsK9E+qU&6|0K)f z-L2AD3wd2JKfGGndv#G2m~H(>`*-U#|Akn5E=R?sJlk-yVHv5$iu+uy42eF`^uq`Z z>&>B;!y?0-O2-~0*UVX!8UkX_H{1>6qo3%^6!N{s<$u&WUs5Z-!K|ymmCMP*k?4Ok zc0m<>=3x(2{w}2IT5!ep?$d{VU0gckF~tZ%gT(_e?7Mi3z%0{kZL5H-Gg5L~{;yxV zg-g8iM5bykV(}kKtUg!o&*G1-v(!o-MnmiW#4z$7s6xb&@^zJ~;i$#uavrr+_&=i| MBMnaKPhIo>0jtU(g#Z8m literal 0 HcmV?d00001 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/summary.md b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/summary.md new file mode 100644 index 00000000..a11c2c65 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-42-46/summary.md @@ -0,0 +1,11 @@ + +# CACE Summary for CML_divider + +**netlist source**: schematic + +| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | +| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | +| Frequency | ngspice | frequency | 4.3 GHz | 4.722 GHz | 5.0 GHz | 4.722 GHz | 5.2 GHz | 4.722 GHz | Pass ✅ | +| Amplitude | ngspice | amplitude | 0.2 V | 0.648 V | 0.4 V | 0.771 V | 0.6 V | 0.860 V | Fail ❌ | +| Voltage swing | ngspice | voltage_swing | 0.4 V | 1.295 V | 0.8 V | 1.543 V | 1.2 V | 1.720 V | Fail ❌ | + diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/CML_core_tb.sch new file mode 100644 index 00000000..0f707234 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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 {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=CACE\{vdd\} savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/CML_core_tb.sch new file mode 100644 index 00000000..5a875307 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/CML_core_tb_0.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/CML_core_tb_0.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/CML_core_tb_0.data new file mode 100644 index 00000000..66b58199 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/CML_core_tb_0.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 4.172295258702e-01 + 1.728000000000e-10 5.660306289841e-01 + 1.828000000000e-10 6.427714835619e-01 + 1.928000000000e-10 6.309902240882e-01 + 2.028000000000e-10 5.294294766946e-01 + 2.128000000000e-10 3.620240344858e-01 + 2.228000000000e-10 1.640234450884e-01 + 2.328000000000e-10 -4.612275905861e-02 + 2.428000000000e-10 -2.579117429775e-01 + 2.528000000000e-10 -4.481189355521e-01 + 2.628000000000e-10 -5.863632401034e-01 + 2.728000000000e-10 -6.500797909801e-01 + 2.828000000000e-10 -6.244800987133e-01 + 2.928000000000e-10 -5.114796948453e-01 + 3.028000000000e-10 -3.375169508656e-01 + 3.128000000000e-10 -1.371992811787e-01 + 3.228000000000e-10 7.406969194951e-02 + 3.328000000000e-10 2.845715128812e-01 + 3.428000000000e-10 4.697496179395e-01 + 3.528000000000e-10 5.992920985552e-01 + 3.628000000000e-10 6.520148385162e-01 + 3.728000000000e-10 6.144241739579e-01 + 3.828000000000e-10 4.915878717611e-01 + 3.928000000000e-10 3.124248149666e-01 + 4.028000000000e-10 1.102877163723e-01 + 4.128000000000e-10 -1.018116542879e-01 + 4.228000000000e-10 -3.106348763410e-01 + 4.328000000000e-10 -4.902750974502e-01 + 4.428000000000e-10 -6.108946985102e-01 + 4.528000000000e-10 -6.523720773639e-01 + 4.628000000000e-10 -6.029054191106e-01 + 4.728000000000e-10 -4.707230721172e-01 + 4.828000000000e-10 -2.870097642856e-01 + 4.928000000000e-10 -8.317192159450e-02 + 5.028000000000e-10 1.295203952971e-01 + 5.128000000000e-10 3.362518112840e-01 + 5.228000000000e-10 5.097742084312e-01 + 5.328000000000e-10 6.211919546772e-01 + 5.428000000000e-10 6.511756762383e-01 + 5.528000000000e-10 5.899749487975e-01 + 5.628000000000e-10 4.489748742278e-01 + 5.728000000000e-10 2.613211253429e-01 + 5.828000000000e-10 5.587544382072e-02 + 5.928000000000e-10 -1.571477580061e-01 + 6.028000000000e-10 -3.613437817138e-01 + 6.128000000000e-10 -5.281831591597e-01 + 6.228000000000e-10 -6.301006152887e-01 + 6.328000000000e-10 -6.483960457705e-01 + 6.428000000000e-10 -5.756654257371e-01 + 6.528000000000e-10 -4.264399047824e-01 + 6.628000000000e-10 -2.354004817627e-01 + 6.728000000000e-10 -2.842675634560e-02 + 6.828000000000e-10 1.846345692911e-01 + 6.928000000000e-10 3.858281396610e-01 + 7.028000000000e-10 5.454514092524e-01 + 7.128000000000e-10 6.375581744727e-01 + 7.228000000000e-10 6.440263958793e-01 + 7.328000000000e-10 5.600361282065e-01 + 7.428000000000e-10 4.031839179600e-01 + 7.528000000000e-10 2.092376914444e-01 + 7.628000000000e-10 8.502356190527e-04 + 7.728000000000e-10 -2.119337824727e-01 + 7.828000000000e-10 -4.096116454145e-01 + 7.928000000000e-10 -5.615497053806e-01 + 8.028000000000e-10 -6.435211973252e-01 + 8.128000000000e-10 -6.380709280118e-01 + 8.228000000000e-10 -5.431342908426e-01 + 8.328000000000e-10 -3.792993370635e-01 + 8.428000000000e-10 -1.828419681275e-01 + 8.528000000000e-10 2.683833801096e-02 + 8.628000000000e-10 2.390033411822e-01 + 8.728000000000e-10 4.326291356130e-01 + 8.828000000000e-10 5.764809726856e-01 + 8.928000000000e-10 6.479900106917e-01 + 9.028000000000e-10 6.305680198179e-01 + 9.128000000000e-10 5.250415256290e-01 + 9.228000000000e-10 3.548834257623e-01 + 9.328000000000e-10 1.562248890761e-01 + 9.428000000000e-10 -5.459580212146e-02 + 9.528000000000e-10 -2.657781449274e-01 + 9.628000000000e-10 -4.547945612946e-01 + 9.728000000000e-10 -5.902149502308e-01 + 9.828000000000e-10 -6.509292568482e-01 + 9.928000000000e-10 -6.215366113118e-01 + 1.000000000000e-09 -5.446631202469e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/conditions.yaml new file mode 100644 index 00000000..5e0cf1a6 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 0 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_00 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/CML_core_tb.sch new file mode 100644 index 00000000..d89df912 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/CML_core_tb_1.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/CML_core_tb_1.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/CML_core_tb_1.data new file mode 100644 index 00000000..09b2cf28 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/CML_core_tb_1.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 3.883390876595e-01 + 1.728000000000e-10 5.408201711303e-01 + 1.828000000000e-10 6.237425658147e-01 + 1.928000000000e-10 6.212954997578e-01 + 2.028000000000e-10 5.309611858082e-01 + 2.128000000000e-10 3.727669362568e-01 + 2.228000000000e-10 1.799806712761e-01 + 2.328000000000e-10 -2.603148458398e-02 + 2.428000000000e-10 -2.346564323193e-01 + 2.528000000000e-10 -4.242479038446e-01 + 2.628000000000e-10 -5.649526956169e-01 + 2.728000000000e-10 -6.329728273322e-01 + 2.828000000000e-10 -6.146559746281e-01 + 2.928000000000e-10 -5.108371727377e-01 + 3.028000000000e-10 -3.442884446101e-01 + 3.128000000000e-10 -1.483824207161e-01 + 3.228000000000e-10 5.906028995990e-02 + 3.328000000000e-10 2.664145911003e-01 + 3.428000000000e-10 4.504551879416e-01 + 3.528000000000e-10 5.809008844736e-01 + 3.628000000000e-10 6.360567187756e-01 + 3.728000000000e-10 6.037436816278e-01 + 3.828000000000e-10 4.881225452421e-01 + 3.928000000000e-10 3.148407462953e-01 + 4.028000000000e-10 1.165218007575e-01 + 4.128000000000e-10 -9.193574793921e-02 + 4.228000000000e-10 -2.974342499544e-01 + 4.328000000000e-10 -4.751326768798e-01 + 4.428000000000e-10 -5.949346596006e-01 + 4.528000000000e-10 -6.369164704138e-01 + 4.628000000000e-10 -5.907458792091e-01 + 4.728000000000e-10 -4.639467590464e-01 + 4.828000000000e-10 -2.848562973336e-01 + 4.928000000000e-10 -8.437689253965e-02 + 5.028000000000e-10 1.247629474968e-01 + 5.128000000000e-10 3.278244343609e-01 + 5.228000000000e-10 4.983346669982e-01 + 5.328000000000e-10 6.070914453050e-01 + 5.428000000000e-10 6.355806464383e-01 + 5.528000000000e-10 5.757490218128e-01 + 5.628000000000e-10 4.384583523195e-01 + 5.728000000000e-10 2.544319838869e-01 + 5.828000000000e-10 5.198316416371e-02 + 5.928000000000e-10 -1.574660223817e-01 + 6.028000000000e-10 -3.574666910126e-01 + 6.128000000000e-10 -5.199664726946e-01 + 6.228000000000e-10 -6.172633670247e-01 + 6.328000000000e-10 -6.320252018899e-01 + 6.428000000000e-10 -5.588131771792e-01 + 6.528000000000e-10 -4.118134126240e-01 + 6.628000000000e-10 -2.236388151954e-01 + 6.728000000000e-10 -1.939350560218e-02 + 6.828000000000e-10 1.899440121342e-01 + 6.928000000000e-10 3.862188408687e-01 + 7.028000000000e-10 5.399416899491e-01 + 7.128000000000e-10 6.253721966482e-01 + 7.228000000000e-10 6.262505877611e-01 + 7.328000000000e-10 5.400360393825e-01 + 7.428000000000e-10 3.841445496134e-01 + 7.528000000000e-10 1.924821267214e-01 + 7.628000000000e-10 -1.335772409919e-02 + 7.728000000000e-10 -2.221234295217e-01 + 7.828000000000e-10 -4.139356901001e-01 + 7.928000000000e-10 -5.582208930433e-01 + 8.028000000000e-10 -6.313676734981e-01 + 8.128000000000e-10 -6.182838529344e-01 + 8.228000000000e-10 -5.195061658404e-01 + 8.328000000000e-10 -3.556114902208e-01 + 8.428000000000e-10 -1.609892428532e-01 + 8.528000000000e-10 4.622340719895e-02 + 8.628000000000e-10 2.539143850297e-01 + 8.728000000000e-10 4.404846384078e-01 + 8.828000000000e-10 5.747805062647e-01 + 8.928000000000e-10 6.352424586450e-01 + 9.028000000000e-10 6.081834380184e-01 + 9.128000000000e-10 4.973521296985e-01 + 9.228000000000e-10 3.263756894147e-01 + 9.328000000000e-10 1.291897894332e-01 + 9.428000000000e-10 -7.912913934513e-02 + 9.528000000000e-10 -2.852083523069e-01 + 9.628000000000e-10 -4.657099955095e-01 + 9.728000000000e-10 -5.895419772383e-01 + 9.828000000000e-10 -6.369389667120e-01 + 9.928000000000e-10 -5.959930992809e-01 + 1.000000000000e-09 -5.138392169398e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/conditions.yaml new file mode 100644 index 00000000..53deb0f2 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 1 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_01 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/CML_core_tb.sch new file mode 100644 index 00000000..3278780c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/CML_core_tb_2.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/CML_core_tb_2.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/CML_core_tb_2.data new file mode 100644 index 00000000..ef2eb41d --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/CML_core_tb_2.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 4.369784277324e-01 + 1.728000000000e-10 5.844303264451e-01 + 1.828000000000e-10 6.576704604404e-01 + 1.928000000000e-10 6.389429128039e-01 + 2.028000000000e-10 5.287476203431e-01 + 2.128000000000e-10 3.556487123432e-01 + 2.228000000000e-10 1.563418818172e-01 + 2.328000000000e-10 -5.502691143237e-02 + 2.428000000000e-10 -2.693404771282e-01 + 2.528000000000e-10 -4.618915081145e-01 + 2.628000000000e-10 -6.008858148447e-01 + 2.728000000000e-10 -6.639573195925e-01 + 2.828000000000e-10 -6.345947706320e-01 + 2.928000000000e-10 -5.159306555046e-01 + 3.028000000000e-10 -3.383759499466e-01 + 3.128000000000e-10 -1.375370817241e-01 + 3.228000000000e-10 7.475314631072e-02 + 3.328000000000e-10 2.882433328129e-01 + 3.428000000000e-10 4.772006954996e-01 + 3.528000000000e-10 6.100237090738e-01 + 3.628000000000e-10 6.652131671859e-01 + 3.728000000000e-10 6.272348898736e-01 + 3.828000000000e-10 5.017111005409e-01 + 3.928000000000e-10 3.208176059829e-01 + 4.028000000000e-10 1.188347173379e-01 + 4.128000000000e-10 -9.421906833550e-02 + 4.228000000000e-10 -3.067231995217e-01 + 4.328000000000e-10 -4.918821205637e-01 + 4.428000000000e-10 -6.185156844977e-01 + 4.528000000000e-10 -6.657095473383e-01 + 4.628000000000e-10 -6.191782362066e-01 + 4.728000000000e-10 -4.870441103398e-01 + 4.828000000000e-10 -3.031237925016e-01 + 4.928000000000e-10 -1.000018396065e-01 + 5.028000000000e-10 1.137158888499e-01 + 5.128000000000e-10 3.250317818347e-01 + 5.228000000000e-10 5.060979436969e-01 + 5.328000000000e-10 6.264062533570e-01 + 5.428000000000e-10 6.654548423706e-01 + 5.528000000000e-10 6.104263907841e-01 + 5.628000000000e-10 4.719575676260e-01 + 5.728000000000e-10 2.853143594971e-01 + 5.828000000000e-10 8.106414726920e-02 + 5.928000000000e-10 -1.332038364715e-01 + 6.028000000000e-10 -3.431129576746e-01 + 6.128000000000e-10 -5.197947732430e-01 + 6.228000000000e-10 -6.336444564921e-01 + 6.328000000000e-10 -6.644191517138e-01 + 6.428000000000e-10 -6.009859600646e-01 + 6.528000000000e-10 -4.564780986599e-01 + 6.628000000000e-10 -2.673977907968e-01 + 6.728000000000e-10 -6.202320930944e-02 + 6.828000000000e-10 1.526686803142e-01 + 6.928000000000e-10 3.609440280272e-01 + 7.028000000000e-10 5.329548030217e-01 + 7.128000000000e-10 6.401938938134e-01 + 7.228000000000e-10 6.625917482038e-01 + 7.328000000000e-10 5.908682152266e-01 + 7.428000000000e-10 4.406469457529e-01 + 7.528000000000e-10 2.493902766858e-01 + 7.628000000000e-10 4.288693618446e-02 + 7.728000000000e-10 -1.720955910448e-01 + 7.828000000000e-10 -3.785000668285e-01 + 7.928000000000e-10 -5.455631256377e-01 + 8.028000000000e-10 -6.460279628055e-01 + 8.128000000000e-10 -6.599666543450e-01 + 8.228000000000e-10 -5.800952421897e-01 + 8.328000000000e-10 -4.244724639235e-01 + 8.428000000000e-10 -2.312744332894e-01 + 8.528000000000e-10 -2.367347524184e-02 + 8.628000000000e-10 1.914518431597e-01 + 8.728000000000e-10 3.957278536471e-01 + 8.828000000000e-10 5.575922897374e-01 + 8.928000000000e-10 6.511097119424e-01 + 9.028000000000e-10 6.565314471724e-01 + 9.128000000000e-10 5.686744713173e-01 + 9.228000000000e-10 4.079868100625e-01 + 9.328000000000e-10 2.130521276703e-01 + 9.428000000000e-10 4.377478818861e-03 + 9.528000000000e-10 -2.107363569920e-01 + 9.628000000000e-10 -4.126164059868e-01 + 9.728000000000e-10 -5.690558179458e-01 + 9.828000000000e-10 -6.554409556493e-01 + 9.928000000000e-10 -6.522987163864e-01 + 1.000000000000e-09 -5.908571383549e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/conditions.yaml new file mode 100644 index 00000000..6fc556db --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 2 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_02 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/CML_core_tb.sch new file mode 100644 index 00000000..5412b0ed --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/CML_core_tb_3.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/CML_core_tb_3.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/CML_core_tb_3.data new file mode 100644 index 00000000..01d3da70 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/CML_core_tb_3.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 3.787312328274e-01 + 1.728000000000e-10 5.310718577798e-01 + 1.828000000000e-10 6.116694852515e-01 + 1.928000000000e-10 6.032465414624e-01 + 2.028000000000e-10 5.080931547620e-01 + 2.128000000000e-10 3.507201651223e-01 + 2.228000000000e-10 1.637728723673e-01 + 2.328000000000e-10 -3.591423441942e-02 + 2.428000000000e-10 -2.389715433325e-01 + 2.528000000000e-10 -4.246365337882e-01 + 2.628000000000e-10 -5.619274107991e-01 + 2.728000000000e-10 -6.217416227793e-01 + 2.828000000000e-10 -5.917990170747e-01 + 2.928000000000e-10 -4.793798636191e-01 + 3.028000000000e-10 -3.123775151550e-01 + 3.128000000000e-10 -1.216623790409e-01 + 3.228000000000e-10 7.991461458154e-02 + 3.328000000000e-10 2.813838782715e-01 + 3.428000000000e-10 4.595056728565e-01 + 3.528000000000e-10 5.820987735157e-01 + 3.628000000000e-10 6.230696206400e-01 + 3.728000000000e-10 5.740668117715e-01 + 3.828000000000e-10 4.470822134740e-01 + 3.928000000000e-10 2.728987140975e-01 + 4.028000000000e-10 7.924079481723e-02 + 4.128000000000e-10 -1.235982812782e-01 + 4.228000000000e-10 -3.224222279001e-01 + 4.328000000000e-10 -4.914711718710e-01 + 4.428000000000e-10 -5.982669959871e-01 + 4.528000000000e-10 -6.200561583520e-01 + 4.628000000000e-10 -5.526428354822e-01 + 4.728000000000e-10 -4.125771347856e-01 + 4.828000000000e-10 -2.326459140319e-01 + 4.928000000000e-10 -3.636345260799e-02 + 5.028000000000e-10 1.671292936419e-01 + 5.128000000000e-10 3.621740771165e-01 + 5.228000000000e-10 5.205351785740e-01 + 5.328000000000e-10 6.105069571881e-01 + 5.428000000000e-10 6.128628419209e-01 + 5.528000000000e-10 5.278288461165e-01 + 5.628000000000e-10 3.762585221796e-01 + 5.728000000000e-10 1.917227152577e-01 + 5.828000000000e-10 -6.904475690515e-03 + 5.928000000000e-10 -2.103220173831e-01 + 6.028000000000e-10 -4.003190871139e-01 + 6.128000000000e-10 -5.464444171748e-01 + 6.228000000000e-10 -6.187242472741e-01 + 6.328000000000e-10 -6.016161834184e-01 + 6.428000000000e-10 -4.999426915796e-01 + 6.528000000000e-10 -3.384986058457e-01 + 6.628000000000e-10 -1.501838709863e-01 + 6.728000000000e-10 5.043881560349e-02 + 6.828000000000e-10 2.529164351583e-01 + 6.928000000000e-10 4.364447819991e-01 + 7.028000000000e-10 5.688890883170e-01 + 7.128000000000e-10 6.227826879224e-01 + 7.228000000000e-10 5.864162100126e-01 + 7.328000000000e-10 4.692911957394e-01 + 7.428000000000e-10 2.996268945459e-01 + 7.528000000000e-10 1.080868898165e-01 + 7.628000000000e-10 -9.411819978895e-02 + 7.728000000000e-10 -2.946865001516e-01 + 7.828000000000e-10 -4.702089203683e-01 + 7.928000000000e-10 -5.876676138587e-01 + 8.028000000000e-10 -6.226257044083e-01 + 8.128000000000e-10 -5.674465695445e-01 + 8.228000000000e-10 -4.362183280713e-01 + 8.328000000000e-10 -2.598861301879e-01 + 8.428000000000e-10 -6.549233734919e-02 + 8.528000000000e-10 1.377780729322e-01 + 8.628000000000e-10 3.353665108903e-01 + 8.728000000000e-10 5.012715026474e-01 + 8.828000000000e-10 6.025971886412e-01 + 8.928000000000e-10 6.182514222450e-01 + 9.028000000000e-10 5.449093081378e-01 + 9.128000000000e-10 4.010874781253e-01 + 9.228000000000e-10 2.194242609006e-01 + 9.328000000000e-10 2.246875729083e-02 + 9.428000000000e-10 -1.812181861115e-01 + 9.528000000000e-10 -3.746515006742e-01 + 9.628000000000e-10 -5.293413040803e-01 + 9.728000000000e-10 -6.135587086509e-01 + 9.828000000000e-10 -6.097309440254e-01 + 9.928000000000e-10 -5.190796501788e-01 + 1.000000000000e-09 -4.110830567596e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/conditions.yaml new file mode 100644 index 00000000..800e62da --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 3 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_03 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/CML_core_tb.sch new file mode 100644 index 00000000..a72a8f48 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/CML_core_tb_4.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/CML_core_tb_4.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/CML_core_tb_4.data new file mode 100644 index 00000000..9ae39401 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/CML_core_tb_4.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 3.527739932023e-01 + 1.728000000000e-10 5.067296132741e-01 + 1.828000000000e-10 5.919306102367e-01 + 1.928000000000e-10 5.909637421707e-01 + 2.028000000000e-10 5.050843854174e-01 + 2.128000000000e-10 3.555305747672e-01 + 2.228000000000e-10 1.733318945705e-01 + 2.328000000000e-10 -2.246320083073e-02 + 2.428000000000e-10 -2.220625103466e-01 + 2.528000000000e-10 -4.056931517405e-01 + 2.628000000000e-10 -5.427471082900e-01 + 2.728000000000e-10 -6.042039445662e-01 + 2.828000000000e-10 -5.786741938972e-01 + 2.928000000000e-10 -4.726336370412e-01 + 3.028000000000e-10 -3.111272852435e-01 + 3.128000000000e-10 -1.240925914530e-01 + 3.228000000000e-10 7.395024567436e-02 + 3.328000000000e-10 2.718578294311e-01 + 3.428000000000e-10 4.467934011904e-01 + 3.528000000000e-10 5.665709106631e-01 + 3.628000000000e-10 6.061049714339e-01 + 3.728000000000e-10 5.585778357772e-01 + 3.828000000000e-10 4.353637877442e-01 + 3.928000000000e-10 2.649104770346e-01 + 4.028000000000e-10 7.422447535881e-02 + 4.128000000000e-10 -1.252066094696e-01 + 4.228000000000e-10 -3.199114008579e-01 + 4.328000000000e-10 -4.839123173062e-01 + 4.428000000000e-10 -5.848683081174e-01 + 4.528000000000e-10 -6.020960278290e-01 + 4.628000000000e-10 -5.334075032087e-01 + 4.728000000000e-10 -3.949565487431e-01 + 4.828000000000e-10 -2.175202194849e-01 + 4.928000000000e-10 -2.374137033440e-02 + 5.028000000000e-10 1.762067660298e-01 + 5.128000000000e-10 3.660614981710e-01 + 5.228000000000e-10 5.168353314960e-01 + 5.328000000000e-10 5.976520790730e-01 + 5.428000000000e-10 5.923721290712e-01 + 5.528000000000e-10 5.036135913931e-01 + 5.628000000000e-10 3.520147819229e-01 + 5.728000000000e-10 1.691411016634e-01 + 5.828000000000e-10 -2.720287389901e-02 + 5.928000000000e-10 -2.265902016718e-01 + 6.028000000000e-10 -4.097016868418e-01 + 6.128000000000e-10 -5.451012400507e-01 + 6.228000000000e-10 -6.047637320677e-01 + 6.328000000000e-10 -5.771127174561e-01 + 6.428000000000e-10 -4.696619234859e-01 + 6.528000000000e-10 -3.071376992250e-01 + 6.628000000000e-10 -1.199124463650e-01 + 6.728000000000e-10 7.843292596863e-02 + 6.828000000000e-10 2.759743419607e-01 + 6.928000000000e-10 4.502085789734e-01 + 7.028000000000e-10 5.682846910592e-01 + 7.128000000000e-10 6.060547534659e-01 + 7.228000000000e-10 5.565297283293e-01 + 7.328000000000e-10 4.320660125387e-01 + 7.428000000000e-10 2.608014341229e-01 + 7.528000000000e-10 6.996576024471e-02 + 7.628000000000e-10 -1.296831986240e-01 + 7.728000000000e-10 -3.239050411005e-01 + 7.828000000000e-10 -4.869831605413e-01 + 7.928000000000e-10 -5.861285383102e-01 + 8.028000000000e-10 -6.015423398526e-01 + 8.128000000000e-10 -5.309529844792e-01 + 8.228000000000e-10 -3.914078404525e-01 + 8.328000000000e-10 -2.133268983323e-01 + 8.428000000000e-10 -1.942817053603e-02 + 8.528000000000e-10 1.806385493964e-01 + 8.628000000000e-10 3.698710924499e-01 + 8.728000000000e-10 5.195165545946e-01 + 8.828000000000e-10 5.984340950058e-01 + 8.928000000000e-10 5.913281701523e-01 + 9.028000000000e-10 5.007881491315e-01 + 9.128000000000e-10 3.482705219974e-01 + 9.228000000000e-10 1.648762275078e-01 + 9.328000000000e-10 -3.155556636608e-02 + 9.428000000000e-10 -2.309443516678e-01 + 9.528000000000e-10 -4.132744730914e-01 + 9.628000000000e-10 -5.473543968075e-01 + 9.728000000000e-10 -6.050589011645e-01 + 9.828000000000e-10 -5.755953492732e-01 + 9.928000000000e-10 -4.665084057301e-01 + 1.000000000000e-09 -3.516472164760e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/conditions.yaml new file mode 100644 index 00000000..193bbe4d --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 4 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_04 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/CML_core_tb.sch new file mode 100644 index 00000000..336721e9 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/CML_core_tb_5.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/CML_core_tb_5.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/CML_core_tb_5.data new file mode 100644 index 00000000..10687699 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/CML_core_tb_5.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 3.899805551492e-01 + 1.728000000000e-10 5.446618577616e-01 + 1.828000000000e-10 6.266096652190e-01 + 1.928000000000e-10 6.172504471116e-01 + 2.028000000000e-10 5.190610617635e-01 + 2.128000000000e-10 3.593956743245e-01 + 2.228000000000e-10 1.724426085975e-01 + 2.328000000000e-10 -2.745064663747e-02 + 2.428000000000e-10 -2.329616471951e-01 + 2.528000000000e-10 -4.234893258118e-01 + 2.628000000000e-10 -5.680967965453e-01 + 2.728000000000e-10 -6.358508809756e-01 + 2.828000000000e-10 -6.116847704035e-01 + 2.928000000000e-10 -5.017753699043e-01 + 3.028000000000e-10 -3.357622391395e-01 + 3.128000000000e-10 -1.463951301493e-01 + 3.228000000000e-10 5.501228565901e-02 + 3.328000000000e-10 2.599601873588e-01 + 3.428000000000e-10 4.463204041669e-01 + 3.528000000000e-10 5.821572067154e-01 + 3.628000000000e-10 6.381725221864e-01 + 3.728000000000e-10 6.017055446787e-01 + 3.828000000000e-10 4.823097743360e-01 + 3.928000000000e-10 3.116413511196e-01 + 4.028000000000e-10 1.204513464120e-01 + 4.128000000000e-10 -8.216746608457e-02 + 4.228000000000e-10 -2.861629008922e-01 + 4.328000000000e-10 -4.678572590668e-01 + 4.428000000000e-10 -5.945512494607e-01 + 4.528000000000e-10 -6.386993079281e-01 + 4.628000000000e-10 -5.902002735031e-01 + 4.728000000000e-10 -4.619269519683e-01 + 4.828000000000e-10 -2.872325672856e-01 + 4.928000000000e-10 -9.428805990276e-02 + 5.028000000000e-10 1.093767475837e-01 + 5.128000000000e-10 3.120263965424e-01 + 5.228000000000e-10 4.884339240257e-01 + 5.328000000000e-10 6.055096291837e-01 + 5.428000000000e-10 6.375795029609e-01 + 5.528000000000e-10 5.772859873177e-01 + 5.628000000000e-10 4.407300348513e-01 + 5.728000000000e-10 2.625705353928e-01 + 5.828000000000e-10 6.792556046796e-02 + 5.928000000000e-10 -1.365768524997e-01 + 6.028000000000e-10 -3.374542253471e-01 + 6.128000000000e-10 -5.079466715988e-01 + 6.228000000000e-10 -6.149592289389e-01 + 6.328000000000e-10 -6.347974900667e-01 + 6.428000000000e-10 -5.630051271319e-01 + 6.528000000000e-10 -4.188061832544e-01 + 6.628000000000e-10 -2.376603787830e-01 + 6.728000000000e-10 -4.134818844143e-02 + 6.828000000000e-10 1.637586206522e-01 + 6.928000000000e-10 3.624175492031e-01 + 7.028000000000e-10 5.263633140706e-01 + 7.128000000000e-10 6.228964156442e-01 + 7.228000000000e-10 6.303896300717e-01 + 7.328000000000e-10 5.474437216466e-01 + 7.428000000000e-10 3.962386662731e-01 + 7.528000000000e-10 2.125149883232e-01 + 7.628000000000e-10 1.461648003679e-02 + 7.728000000000e-10 -1.908138897843e-01 + 7.828000000000e-10 -3.867729399792e-01 + 7.928000000000e-10 -5.435669596211e-01 + 8.028000000000e-10 -6.292531394829e-01 + 8.128000000000e-10 -6.243668066490e-01 + 8.228000000000e-10 -5.306765426618e-01 + 8.328000000000e-10 -3.731361043849e-01 + 8.428000000000e-10 -1.871403151425e-01 + 8.528000000000e-10 1.226616272226e-02 + 8.628000000000e-10 2.177097156913e-01 + 8.728000000000e-10 4.104603685680e-01 + 8.828000000000e-10 5.595160805387e-01 + 8.928000000000e-10 6.340210539113e-01 + 9.028000000000e-10 6.167734167151e-01 + 9.128000000000e-10 5.127945975126e-01 + 9.228000000000e-10 3.495872919270e-01 + 9.328000000000e-10 1.615373139215e-01 + 9.428000000000e-10 -3.927853585867e-02 + 9.528000000000e-10 -2.443951865104e-01 + 9.628000000000e-10 -4.333865230537e-01 + 9.728000000000e-10 -5.741458706841e-01 + 9.828000000000e-10 -6.371615177319e-01 + 9.928000000000e-10 -6.076273838542e-01 + 1.000000000000e-09 -5.316204064609e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/conditions.yaml new file mode 100644 index 00000000..5d00c883 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 5 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_05 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/CML_core_tb.sch new file mode 100644 index 00000000..a4275f71 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/CML_core_tb_6.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/CML_core_tb_6.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/CML_core_tb_6.data new file mode 100644 index 00000000..d41c6130 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/CML_core_tb_6.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 3.272923197830e-01 + 1.728000000000e-10 4.819566763926e-01 + 1.828000000000e-10 5.726826350468e-01 + 1.928000000000e-10 5.788408046581e-01 + 2.028000000000e-10 5.015057929381e-01 + 2.128000000000e-10 3.614946791662e-01 + 2.228000000000e-10 1.878018883160e-01 + 2.328000000000e-10 -5.152928654438e-04 + 2.428000000000e-10 -1.939629764799e-01 + 2.528000000000e-10 -3.754137148459e-01 + 2.628000000000e-10 -5.169596677951e-01 + 2.728000000000e-10 -5.868852209445e-01 + 2.828000000000e-10 -5.708977912689e-01 + 2.928000000000e-10 -4.753083054539e-01 + 3.028000000000e-10 -3.241657178363e-01 + 3.128000000000e-10 -1.455948464079e-01 + 3.228000000000e-10 4.499341463190e-02 + 3.328000000000e-10 2.376719771956e-01 + 3.428000000000e-10 4.128180830206e-01 + 3.528000000000e-10 5.403996474700e-01 + 3.628000000000e-10 5.911000287822e-01 + 3.728000000000e-10 5.556682151963e-01 + 3.828000000000e-10 4.448214476974e-01 + 3.928000000000e-10 2.852566745587e-01 + 4.028000000000e-10 1.031028047915e-01 + 4.128000000000e-10 -8.903168621584e-02 + 4.228000000000e-10 -2.798685004857e-01 + 4.328000000000e-10 -4.471531492488e-01 + 4.428000000000e-10 -5.593245084023e-01 + 4.528000000000e-10 -5.905190912946e-01 + 4.628000000000e-10 -5.363759912566e-01 + 4.728000000000e-10 -4.117695851479e-01 + 4.828000000000e-10 -2.452792947403e-01 + 4.928000000000e-10 -6.009673014036e-02 + 5.028000000000e-10 1.330294549602e-01 + 5.128000000000e-10 3.209066489495e-01 + 5.228000000000e-10 4.786196617327e-01 + 5.328000000000e-10 5.739939994269e-01 + 5.428000000000e-10 5.854521386947e-01 + 5.528000000000e-10 5.133999770894e-01 + 5.628000000000e-10 3.765766215401e-01 + 5.728000000000e-10 2.044210251017e-01 + 5.828000000000e-10 1.663948978675e-02 + 5.928000000000e-10 -1.768225768789e-01 + 6.028000000000e-10 -3.604735185863e-01 + 6.128000000000e-10 -5.068517002383e-01 + 6.228000000000e-10 -5.842923519665e-01 + 6.328000000000e-10 -5.760243982484e-01 + 6.428000000000e-10 -4.870560863823e-01 + 6.528000000000e-10 -3.396140103858e-01 + 6.628000000000e-10 -1.628160907611e-01 + 6.728000000000e-10 2.713518106981e-02 + 6.828000000000e-10 2.201313700592e-01 + 6.928000000000e-10 3.981398672845e-01 + 7.028000000000e-10 5.314129585100e-01 + 7.128000000000e-10 5.900629559558e-01 + 7.228000000000e-10 5.623346075405e-01 + 7.328000000000e-10 4.576489899043e-01 + 7.428000000000e-10 3.012060707577e-01 + 7.528000000000e-10 1.205607029165e-01 + 7.628000000000e-10 -7.111902777530e-02 + 7.728000000000e-10 -2.627143394217e-01 + 7.828000000000e-10 -4.335192481659e-01 + 7.928000000000e-10 -5.520469297325e-01 + 8.028000000000e-10 -5.913465255736e-01 + 8.128000000000e-10 -5.446422750292e-01 + 8.228000000000e-10 -4.255777736303e-01 + 8.328000000000e-10 -2.616434466132e-01 + 8.428000000000e-10 -7.774328533570e-02 + 8.528000000000e-10 1.151601059047e-01 + 8.628000000000e-10 3.042846665874e-01 + 8.728000000000e-10 4.662132820490e-01 + 8.828000000000e-10 5.684913559476e-01 + 8.928000000000e-10 5.881064262615e-01 + 9.028000000000e-10 5.231504152161e-01 + 9.128000000000e-10 3.912170597589e-01 + 9.228000000000e-10 2.211379352235e-01 + 9.328000000000e-10 3.445328650701e-02 + 9.428000000000e-10 -1.590552113490e-01 + 9.528000000000e-10 -3.445018956927e-01 + 9.628000000000e-10 -4.958047876980e-01 + 9.728000000000e-10 -5.805916053244e-01 + 9.828000000000e-10 -5.804363168583e-01 + 9.928000000000e-10 -4.981483730617e-01 + 1.000000000000e-09 -3.984864554057e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/conditions.yaml new file mode 100644 index 00000000..e9928240 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 6 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_06 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/CML_core_tb.sch new file mode 100644 index 00000000..b8634c09 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/CML_core_tb_7.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/CML_core_tb_7.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/CML_core_tb_7.data new file mode 100644 index 00000000..a10c27d2 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/CML_core_tb_7.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 3.046755204913e-01 + 1.728000000000e-10 4.588771864746e-01 + 1.828000000000e-10 5.518179717254e-01 + 1.928000000000e-10 5.630613181018e-01 + 2.028000000000e-10 4.930058654618e-01 + 2.128000000000e-10 3.600434340665e-01 + 2.228000000000e-10 1.913332065647e-01 + 2.328000000000e-10 7.030379563374e-03 + 2.428000000000e-10 -1.825845992720e-01 + 2.528000000000e-10 -3.607212321510e-01 + 2.628000000000e-10 -4.995152077763e-01 + 2.728000000000e-10 -5.681601776296e-01 + 2.828000000000e-10 -5.536475265944e-01 + 2.928000000000e-10 -4.620883849781e-01 + 3.028000000000e-10 -3.154948373540e-01 + 3.128000000000e-10 -1.405895328965e-01 + 3.228000000000e-10 4.643731481932e-02 + 3.328000000000e-10 2.350973253463e-01 + 3.428000000000e-10 4.054203097179e-01 + 3.528000000000e-10 5.270988155628e-01 + 3.628000000000e-10 5.727125157929e-01 + 3.728000000000e-10 5.352123535322e-01 + 3.828000000000e-10 4.254605305301e-01 + 3.928000000000e-10 2.685036737698e-01 + 4.028000000000e-10 8.911586636822e-02 + 4.128000000000e-10 -9.963398240146e-02 + 4.228000000000e-10 -2.857170287196e-01 + 4.328000000000e-10 -4.457726616042e-01 + 4.428000000000e-10 -5.482103366819e-01 + 4.528000000000e-10 -5.704216942123e-01 + 4.628000000000e-10 -5.109460128406e-01 + 4.728000000000e-10 -3.850868130838e-01 + 4.828000000000e-10 -2.198835933739e-01 + 4.928000000000e-10 -3.689980676769e-02 + 5.028000000000e-10 1.526833767467e-01 + 5.128000000000e-10 3.343900010501e-01 + 5.228000000000e-10 4.815572314350e-01 + 5.328000000000e-10 5.629454287650e-01 + 5.428000000000e-10 5.616466908200e-01 + 5.528000000000e-10 4.814338387350e-01 + 5.628000000000e-10 3.416630734205e-01 + 5.728000000000e-10 1.699699975451e-01 + 5.828000000000e-10 -1.585775886924e-02 + 5.928000000000e-10 -2.051574982768e-01 + 6.028000000000e-10 -3.803955463572e-01 + 6.128000000000e-10 -5.120569276360e-01 + 6.228000000000e-10 -5.710959641361e-01 + 6.328000000000e-10 -5.465908780276e-01 + 6.428000000000e-10 -4.471998258417e-01 + 6.528000000000e-10 -2.958148073664e-01 + 6.628000000000e-10 -1.190050287464e-01 + 6.728000000000e-10 6.896892282433e-02 + 6.828000000000e-10 2.566225290979e-01 + 6.928000000000e-10 4.230361487305e-01 + 7.028000000000e-10 5.367245944621e-01 + 7.128000000000e-10 5.726009405551e-01 + 7.228000000000e-10 5.255773298606e-01 + 7.328000000000e-10 4.088680395342e-01 + 7.428000000000e-10 2.480819861851e-01 + 7.528000000000e-10 6.719204479067e-02 + 7.628000000000e-10 -1.221352201548e-01 + 7.728000000000e-10 -3.064998235705e-01 + 7.828000000000e-10 -4.615352773482e-01 + 7.928000000000e-10 -5.551743835496e-01 + 8.028000000000e-10 -5.675398121722e-01 + 8.128000000000e-10 -4.990356074229e-01 + 8.228000000000e-10 -3.671187730269e-01 + 8.328000000000e-10 -1.988855738478e-01 + 8.428000000000e-10 -1.471402250170e-02 + 8.528000000000e-10 1.749906067695e-01 + 8.628000000000e-10 3.541421288266e-01 + 8.728000000000e-10 4.951614050915e-01 + 8.828000000000e-10 5.671473843583e-01 + 8.928000000000e-10 5.560712514825e-01 + 9.028000000000e-10 4.674591983192e-01 + 9.128000000000e-10 3.225884832919e-01 + 9.228000000000e-10 1.485020348748e-01 + 9.328000000000e-10 -3.823610122102e-02 + 9.428000000000e-10 -2.271067171072e-01 + 9.528000000000e-10 -3.988323544176e-01 + 9.628000000000e-10 -5.232527594701e-01 + 9.728000000000e-10 -5.724941479336e-01 + 9.828000000000e-10 -5.384465917756e-01 + 9.928000000000e-10 -4.314195039535e-01 + 1.000000000000e-09 -3.218668116164e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/conditions.yaml new file mode 100644 index 00000000..bcee4a2e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 7 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_07 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/CML_core_tb.sch new file mode 100644 index 00000000..056de1a6 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/CML_core_tb_8.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/CML_core_tb_8.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/CML_core_tb_8.data new file mode 100644 index 00000000..9bf52d4b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/CML_core_tb_8.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 3.334512303141e-01 + 1.728000000000e-10 4.920310241072e-01 + 1.828000000000e-10 5.871516315218e-01 + 1.928000000000e-10 5.960766354992e-01 + 2.028000000000e-10 5.190911466521e-01 + 2.128000000000e-10 3.785207326900e-01 + 2.228000000000e-10 2.049302653238e-01 + 2.328000000000e-10 1.651767251554e-02 + 2.428000000000e-10 -1.790271764811e-01 + 2.528000000000e-10 -3.657879864898e-01 + 2.628000000000e-10 -5.171831909383e-01 + 2.728000000000e-10 -5.997088663149e-01 + 2.828000000000e-10 -5.948111801226e-01 + 2.928000000000e-10 -5.063654012101e-01 + 3.028000000000e-10 -3.587863037418e-01 + 3.128000000000e-10 -1.821379391557e-01 + 3.228000000000e-10 7.888972519530e-03 + 3.328000000000e-10 2.035088728667e-01 + 3.428000000000e-10 3.875409021465e-01 + 3.528000000000e-10 5.320644301491e-01 + 3.628000000000e-10 6.042388280374e-01 + 3.728000000000e-10 5.883403890472e-01 + 3.828000000000e-10 4.910042429366e-01 + 3.928000000000e-10 3.383713820269e-01 + 4.028000000000e-10 1.596304490075e-01 + 4.128000000000e-10 -3.157975881199e-02 + 4.228000000000e-10 -2.269158813736e-01 + 4.328000000000e-10 -4.078630979115e-01 + 4.428000000000e-10 -5.452238343377e-01 + 4.528000000000e-10 -6.070914209056e-01 + 4.628000000000e-10 -5.804825164118e-01 + 4.728000000000e-10 -4.747613668514e-01 + 4.828000000000e-10 -3.176002092310e-01 + 4.928000000000e-10 -1.369439978288e-01 + 5.028000000000e-10 5.534658721980e-02 + 5.128000000000e-10 2.501430489142e-01 + 5.228000000000e-10 4.275696337474e-01 + 5.328000000000e-10 5.572530695454e-01 + 5.428000000000e-10 6.086048604787e-01 + 5.528000000000e-10 5.714423014991e-01 + 5.628000000000e-10 4.577558387660e-01 + 5.728000000000e-10 2.965226810522e-01 + 5.828000000000e-10 1.140863397721e-01 + 5.928000000000e-10 -7.916165526171e-02 + 6.028000000000e-10 -2.731282141304e-01 + 6.128000000000e-10 -4.465714488852e-01 + 6.228000000000e-10 -5.680918089739e-01 + 6.328000000000e-10 -6.087809432803e-01 + 6.428000000000e-10 -5.612546972849e-01 + 6.528000000000e-10 -4.400500904524e-01 + 6.628000000000e-10 -2.751690190519e-01 + 6.728000000000e-10 -9.106761382953e-02 + 6.828000000000e-10 1.029968797521e-01 + 6.928000000000e-10 2.958257130252e-01 + 7.028000000000e-10 4.648013192379e-01 + 7.128000000000e-10 5.777063572260e-01 + 7.228000000000e-10 6.076218987809e-01 + 7.328000000000e-10 5.499646386996e-01 + 7.428000000000e-10 4.217057221764e-01 + 7.528000000000e-10 2.535632375360e-01 + 7.628000000000e-10 6.789614061290e-02 + 7.728000000000e-10 -1.268193581673e-01 + 7.828000000000e-10 -3.181808612885e-01 + 7.928000000000e-10 -4.821903021659e-01 + 8.028000000000e-10 -5.860591830893e-01 + 8.128000000000e-10 -6.051306912086e-01 + 8.228000000000e-10 -5.376046096264e-01 + 8.328000000000e-10 -4.027756137924e-01 + 8.428000000000e-10 -2.317126300703e-01 + 8.528000000000e-10 -4.455549072905e-02 + 8.628000000000e-10 1.506398273088e-01 + 8.728000000000e-10 3.401881982667e-01 + 8.828000000000e-10 4.987168422738e-01 + 8.928000000000e-10 5.931649578198e-01 + 9.028000000000e-10 6.013494541833e-01 + 9.128000000000e-10 5.242449683991e-01 + 9.228000000000e-10 3.833231535447e-01 + 9.328000000000e-10 2.096470589865e-01 + 9.428000000000e-10 2.110110280871e-02 + 9.528000000000e-10 -1.743676839347e-01 + 9.628000000000e-10 -3.617308880367e-01 + 9.728000000000e-10 -5.142636715347e-01 + 9.828000000000e-10 -5.989629387124e-01 + 9.928000000000e-10 -5.962786821895e-01 + 1.000000000000e-09 -5.406592435476e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/conditions.yaml new file mode 100644 index 00000000..9b83fa72 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 8 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_08 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/CML_core_tb.sch new file mode 100644 index 00000000..24da899c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/CML_core_tb_9.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/CML_core_tb_9.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/CML_core_tb_9.data new file mode 100644 index 00000000..2993c56d --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/CML_core_tb_9.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.668053088994e-01 + 1.728000000000e-10 5.857254764211e-01 + 1.828000000000e-10 5.012885034242e-01 + 1.928000000000e-10 3.496119161339e-01 + 2.028000000000e-10 1.832231223385e-01 + 2.128000000000e-10 1.814016746348e-02 + 2.228000000000e-10 -1.582488922184e-01 + 2.328000000000e-10 -3.434810675640e-01 + 2.428000000000e-10 -5.067125803648e-01 + 2.528000000000e-10 -5.886170858536e-01 + 2.628000000000e-10 -5.623087079277e-01 + 2.728000000000e-10 -4.437897754944e-01 + 2.828000000000e-10 -2.803473323284e-01 + 2.928000000000e-10 -1.154437766492e-01 + 3.028000000000e-10 5.298892056425e-02 + 3.128000000000e-10 2.348763033985e-01 + 3.228000000000e-10 4.167289199396e-01 + 3.328000000000e-10 5.534898949576e-01 + 3.428000000000e-10 5.908111329708e-01 + 3.528000000000e-10 5.222863413108e-01 + 3.628000000000e-10 3.781315285794e-01 + 3.728000000000e-10 2.115997289284e-01 + 3.828000000000e-10 4.701053084038e-02 + 3.928000000000e-10 -1.267436670640e-01 + 4.028000000000e-10 -3.118715354619e-01 + 4.128000000000e-10 -4.825510114000e-01 + 4.228000000000e-10 -5.821722089926e-01 + 4.328000000000e-10 -5.742542254893e-01 + 4.428000000000e-10 -4.690576377049e-01 + 4.528000000000e-10 -3.091055349154e-01 + 4.628000000000e-10 -1.436815907828e-01 + 4.728000000000e-10 2.320195326925e-02 + 4.828000000000e-10 2.028356601470e-01 + 4.928000000000e-10 3.870062310368e-01 + 5.028000000000e-10 5.360981275586e-01 + 5.128000000000e-10 5.923134931039e-01 + 5.228000000000e-10 5.407044044462e-01 + 5.328000000000e-10 4.062163744597e-01 + 5.428000000000e-10 2.400594094322e-01 + 5.528000000000e-10 7.574547495214e-02 + 5.628000000000e-10 -9.573670339165e-02 + 5.728000000000e-10 -2.797908939581e-01 + 5.828000000000e-10 -4.563610748463e-01 + 5.928000000000e-10 -5.723989589010e-01 + 6.028000000000e-10 -5.833681745524e-01 + 6.128000000000e-10 -4.925316152611e-01 + 6.228000000000e-10 -3.380117706452e-01 + 6.328000000000e-10 -1.718187486666e-01 + 6.428000000000e-10 -6.311096017310e-03 + 6.528000000000e-10 1.710417477038e-01 + 6.628000000000e-10 3.561610603242e-01 + 6.728000000000e-10 5.157419068689e-01 + 6.828000000000e-10 5.903632413079e-01 + 6.928000000000e-10 5.566690398802e-01 + 7.028000000000e-10 4.332577725691e-01 + 7.128000000000e-10 2.687661939284e-01 + 7.228000000000e-10 1.040962406345e-01 + 7.328000000000e-10 -6.514380203775e-02 + 7.428000000000e-10 -2.477516573600e-01 + 7.528000000000e-10 -4.283810997893e-01 + 7.628000000000e-10 -5.595560501887e-01 + 7.728000000000e-10 -5.893136746958e-01 + 7.828000000000e-10 -5.141806750048e-01 + 7.928000000000e-10 -3.666907626534e-01 + 8.028000000000e-10 -2.001605247775e-01 + 8.128000000000e-10 -3.539844999637e-02 + 8.228000000000e-10 1.393801501742e-01 + 8.328000000000e-10 3.246733270368e-01 + 8.428000000000e-10 4.925514879874e-01 + 8.528000000000e-10 5.851746152462e-01 + 8.628000000000e-10 5.697858900390e-01 + 8.728000000000e-10 4.590951362034e-01 + 8.828000000000e-10 2.975143674948e-01 + 8.928000000000e-10 1.323427539482e-01 + 9.028000000000e-10 -3.514510890180e-02 + 9.128000000000e-10 -2.156968702842e-01 + 9.228000000000e-10 -3.991100939526e-01 + 9.328000000000e-10 -5.434600882914e-01 + 9.428000000000e-10 -5.921215711709e-01 + 9.528000000000e-10 -5.335762414989e-01 + 9.628000000000e-10 -3.950234022959e-01 + 9.728000000000e-10 -2.285812895409e-01 + 9.828000000000e-10 -6.423644498198e-02 + 9.928000000000e-10 1.081622418334e-01 + 1.000000000000e-09 2.412230503845e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/conditions.yaml new file mode 100644 index 00000000..3f03bbe2 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 9 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_09 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/CML_core_tb.sch new file mode 100644 index 00000000..498e92f5 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/CML_core_tb_10.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/CML_core_tb_10.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/CML_core_tb_10.data new file mode 100644 index 00000000..3f80dd94 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/CML_core_tb_10.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.428454097944e-01 + 1.728000000000e-10 5.887232665160e-01 + 1.828000000000e-10 5.330123444355e-01 + 1.928000000000e-10 4.002306682823e-01 + 2.028000000000e-10 2.376864868930e-01 + 2.128000000000e-10 7.678280982833e-02 + 2.228000000000e-10 -9.183070296933e-02 + 2.328000000000e-10 -2.735408409540e-01 + 2.428000000000e-10 -4.488104547239e-01 + 2.528000000000e-10 -5.660499400086e-01 + 2.628000000000e-10 -5.832044710923e-01 + 2.728000000000e-10 -5.025294495918e-01 + 2.828000000000e-10 -3.561389451591e-01 + 2.928000000000e-10 -1.931509973895e-01 + 3.028000000000e-10 -3.161724055927e-02 + 3.128000000000e-10 1.410162521305e-01 + 3.228000000000e-10 3.241425761048e-01 + 3.328000000000e-10 4.896722689474e-01 + 3.428000000000e-10 5.810994290094e-01 + 3.528000000000e-10 5.697787336600e-01 + 3.628000000000e-10 4.667491870485e-01 + 3.728000000000e-10 3.110523622229e-01 + 3.828000000000e-10 1.489204686804e-01 + 3.928000000000e-10 -1.441683887549e-02 + 4.028000000000e-10 -1.911114176137e-01 + 4.128000000000e-10 -3.736007816207e-01 + 4.228000000000e-10 -5.247269258094e-01 + 4.328000000000e-10 -5.883619802608e-01 + 4.428000000000e-10 -5.493709568696e-01 + 4.528000000000e-10 -4.268560645732e-01 + 4.628000000000e-10 -2.659216134563e-01 + 4.728000000000e-10 -1.046762237276e-01 + 4.828000000000e-10 6.154083598056e-02 + 4.928000000000e-10 2.417370283704e-01 + 5.028000000000e-10 4.207944424121e-01 + 5.128000000000e-10 5.525507732105e-01 + 5.228000000000e-10 5.875753342204e-01 + 5.328000000000e-10 5.224235076500e-01 + 5.428000000000e-10 3.839329178331e-01 + 5.528000000000e-10 2.211099477749e-01 + 5.628000000000e-10 5.996738384120e-02 + 5.728000000000e-10 -1.099674418154e-01 + 5.828000000000e-10 -2.925437637672e-01 + 5.928000000000e-10 -4.645883613969e-01 + 6.028000000000e-10 -5.726945090474e-01 + 6.128000000000e-10 -5.790563278825e-01 + 6.228000000000e-10 -4.898564008421e-01 + 6.328000000000e-10 -3.393681751694e-01 + 6.428000000000e-10 -1.767412253591e-01 + 6.528000000000e-10 -1.454956388405e-02 + 6.628000000000e-10 1.594975892711e-01 + 6.728000000000e-10 3.427835897317e-01 + 6.828000000000e-10 5.034181189969e-01 + 6.928000000000e-10 5.847881744116e-01 + 7.028000000000e-10 5.629416678024e-01 + 7.128000000000e-10 4.524088161704e-01 + 7.228000000000e-10 2.942348359352e-01 + 7.328000000000e-10 1.325830680191e-01 + 7.428000000000e-10 -3.185512433972e-02 + 7.528000000000e-10 -2.098392063323e-01 + 7.628000000000e-10 -3.915363466654e-01 + 7.728000000000e-10 -5.359377717046e-01 + 7.828000000000e-10 -5.890964735012e-01 + 7.928000000000e-10 -5.400822293487e-01 + 8.028000000000e-10 -4.113016871798e-01 + 8.128000000000e-10 -2.492332141259e-01 + 8.228000000000e-10 -8.824437749447e-02 + 8.328000000000e-10 7.936811900351e-02 + 8.428000000000e-10 2.605063461685e-01 + 8.528000000000e-10 4.375102433552e-01 + 8.628000000000e-10 5.608346246038e-01 + 8.728000000000e-10 5.853101833106e-01 + 8.828000000000e-10 5.109008400826e-01 + 8.928000000000e-10 3.675780917482e-01 + 9.028000000000e-10 2.045751110844e-01 + 9.128000000000e-10 4.327185431609e-02 + 9.228000000000e-10 -1.282588076844e-01 + 9.328000000000e-10 -3.112363383013e-01 + 9.428000000000e-10 -4.796448869807e-01 + 9.528000000000e-10 -5.779714766981e-01 + 9.628000000000e-10 -5.738664100326e-01 + 9.728000000000e-10 -4.763674754779e-01 + 9.828000000000e-10 -3.226217811241e-01 + 9.928000000000e-10 -1.602653782787e-01 + 1.000000000000e-09 -4.451885084543e-02 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/conditions.yaml new file mode 100644 index 00000000..62ddc3f2 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 10 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_10 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/CML_core_tb.sch new file mode 100644 index 00000000..d82d43e6 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/CML_core_tb_11.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/CML_core_tb_11.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/CML_core_tb_11.data new file mode 100644 index 00000000..9458f6ce --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/CML_core_tb_11.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.827936810554e-01 + 1.728000000000e-10 5.810792076977e-01 + 1.828000000000e-10 4.754509601432e-01 + 1.928000000000e-10 3.123193265552e-01 + 2.028000000000e-10 1.445094956986e-01 + 2.128000000000e-10 -2.384329014267e-02 + 2.228000000000e-10 -2.052873687362e-01 + 2.328000000000e-10 -3.914038413672e-01 + 2.428000000000e-10 -5.430039178242e-01 + 2.528000000000e-10 -5.974115721655e-01 + 2.628000000000e-10 -5.389960693485e-01 + 2.728000000000e-10 -3.964329868203e-01 + 2.828000000000e-10 -2.268489588437e-01 + 2.928000000000e-10 -6.061675885961e-02 + 3.028000000000e-10 1.135421560512e-01 + 3.128000000000e-10 3.001127750219e-01 + 3.228000000000e-10 4.761699337604e-01 + 3.328000000000e-10 5.845551088541e-01 + 3.428000000000e-10 5.810137437748e-01 + 3.528000000000e-10 4.742887126822e-01 + 3.628000000000e-10 3.105573370732e-01 + 3.728000000000e-10 1.429035289472e-01 + 3.828000000000e-10 -2.566941675042e-02 + 3.928000000000e-10 -2.070892792811e-01 + 4.028000000000e-10 -3.932550397965e-01 + 4.128000000000e-10 -5.440358639049e-01 + 4.228000000000e-10 -5.974545613679e-01 + 4.328000000000e-10 -5.378639915963e-01 + 4.428000000000e-10 -3.948698115068e-01 + 4.528000000000e-10 -2.251456197037e-01 + 4.628000000000e-10 -5.904004941792e-02 + 4.728000000000e-10 1.153874791980e-01 + 4.828000000000e-10 3.018826859494e-01 + 4.928000000000e-10 4.777357070651e-01 + 5.028000000000e-10 5.850209286479e-01 + 5.128000000000e-10 5.804772883663e-01 + 5.228000000000e-10 4.728085019241e-01 + 5.328000000000e-10 3.089457683616e-01 + 5.428000000000e-10 1.412323614058e-01 + 5.528000000000e-10 -2.730899411782e-02 + 5.628000000000e-10 -2.089765034267e-01 + 5.728000000000e-10 -3.949384733604e-01 + 5.828000000000e-10 -5.451565863598e-01 + 5.928000000000e-10 -5.973527500019e-01 + 6.028000000000e-10 -5.368466314030e-01 + 6.128000000000e-10 -3.931843583920e-01 + 6.228000000000e-10 -2.235601147375e-01 + 6.328000000000e-10 -5.734349959237e-02 + 6.428000000000e-10 1.171162736371e-01 + 6.528000000000e-10 3.037703409726e-01 + 6.628000000000e-10 4.791912331459e-01 + 6.728000000000e-10 5.855798214314e-01 + 6.828000000000e-10 5.798240328394e-01 + 6.928000000000e-10 4.714288640290e-01 + 7.028000000000e-10 3.072315620121e-01 + 7.128000000000e-10 1.396641030954e-01 + 7.228000000000e-10 -2.905607141113e-02 + 7.328000000000e-10 -2.107594500296e-01 + 7.428000000000e-10 -3.967211258950e-01 + 7.528000000000e-10 -5.461706344704e-01 + 7.628000000000e-10 -5.973374521174e-01 + 7.728000000000e-10 -5.357205733965e-01 + 7.828000000000e-10 -3.915911928777e-01 + 7.928000000000e-10 -2.218810155195e-01 + 8.028000000000e-10 -5.573969116904e-02 + 8.128000000000e-10 1.189424413261e-01 + 8.228000000000e-10 3.055646827560e-01 + 8.328000000000e-10 4.807259154011e-01 + 8.428000000000e-10 5.860453138042e-01 + 8.528000000000e-10 5.792476749867e-01 + 8.628000000000e-10 4.699583360894e-01 + 8.728000000000e-10 3.056009455537e-01 + 8.828000000000e-10 1.380131640820e-01 + 8.928000000000e-10 -3.071912961450e-02 + 9.028000000000e-10 -2.126264792163e-01 + 9.128000000000e-10 -3.984185561653e-01 + 9.228000000000e-10 -5.472502664204e-01 + 9.328000000000e-10 -5.972326176360e-01 + 9.428000000000e-10 -5.346663530098e-01 + 9.528000000000e-10 -3.899201147490e-01 + 9.628000000000e-10 -2.202777602246e-01 + 9.728000000000e-10 -5.405978815575e-02 + 9.828000000000e-10 1.206936521389e-01 + 9.928000000000e-10 3.074328997109e-01 + 1.000000000000e-09 4.391748152565e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/conditions.yaml new file mode 100644 index 00000000..3a3bb59b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 11 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_11 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/CML_core_tb.sch new file mode 100644 index 00000000..4c820c55 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/CML_core_tb_12.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/CML_core_tb_12.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/CML_core_tb_12.data new file mode 100644 index 00000000..17b5ef26 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/CML_core_tb_12.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.555711411691e-01 + 1.728000000000e-10 5.654533109598e-01 + 1.828000000000e-10 4.795726584841e-01 + 1.928000000000e-10 3.326502253637e-01 + 2.028000000000e-10 1.687296913114e-01 + 2.128000000000e-10 2.259632268033e-03 + 2.228000000000e-10 -1.737904072321e-01 + 2.328000000000e-10 -3.537060570041e-01 + 2.428000000000e-10 -5.045948747149e-01 + 2.528000000000e-10 -5.731435474460e-01 + 2.628000000000e-10 -5.391555089404e-01 + 2.728000000000e-10 -4.213148150041e-01 + 2.828000000000e-10 -2.626455484716e-01 + 2.928000000000e-10 -9.794124042607e-02 + 3.028000000000e-10 7.187921157535e-02 + 3.128000000000e-10 2.517461177776e-01 + 3.228000000000e-10 4.250624796943e-01 + 3.328000000000e-10 5.465250931262e-01 + 3.428000000000e-10 5.707653915460e-01 + 3.528000000000e-10 4.967299254069e-01 + 3.628000000000e-10 3.552764122875e-01 + 3.728000000000e-10 1.920279556884e-01 + 3.828000000000e-10 2.619193487626e-02 + 3.928000000000e-10 -1.481848868503e-01 + 4.028000000000e-10 -3.289567215963e-01 + 4.128000000000e-10 -4.870422839129e-01 + 4.228000000000e-10 -5.697831693720e-01 + 4.328000000000e-10 -5.497939882973e-01 + 4.428000000000e-10 -4.417146267181e-01 + 4.528000000000e-10 -2.858120458911e-01 + 4.628000000000e-10 -1.213979132799e-01 + 4.728000000000e-10 4.724925592827e-02 + 4.828000000000e-10 2.259536453083e-01 + 4.928000000000e-10 4.023731180618e-01 + 5.028000000000e-10 5.346129641317e-01 + 5.128000000000e-10 5.737179052380e-01 + 5.228000000000e-10 5.122194835459e-01 + 5.328000000000e-10 3.776695186105e-01 + 5.428000000000e-10 2.152751132312e-01 + 5.528000000000e-10 5.007645335031e-02 + 5.628000000000e-10 -1.228407452739e-01 + 5.728000000000e-10 -3.036742853578e-01 + 5.828000000000e-10 -4.679879288367e-01 + 5.928000000000e-10 -5.641705522090e-01 + 6.028000000000e-10 -5.586855895079e-01 + 6.128000000000e-10 -4.609840869152e-01 + 6.228000000000e-10 -3.089721186467e-01 + 6.328000000000e-10 -1.446728205678e-01 + 6.428000000000e-10 2.279331244334e-02 + 6.528000000000e-10 2.003088005884e-01 + 6.628000000000e-10 3.787966390790e-01 + 6.728000000000e-10 5.208271612122e-01 + 6.828000000000e-10 5.744915662569e-01 + 6.928000000000e-10 5.263276638189e-01 + 7.028000000000e-10 3.995002166786e-01 + 7.128000000000e-10 2.386440244848e-01 + 7.228000000000e-10 7.372747398587e-02 + 7.328000000000e-10 -9.758660335090e-02 + 7.428000000000e-10 -2.781765911571e-01 + 7.528000000000e-10 -4.474216397573e-01 + 7.628000000000e-10 -5.565126829014e-01 + 7.728000000000e-10 -5.655838789355e-01 + 7.828000000000e-10 -4.792180968458e-01 + 7.928000000000e-10 -3.318840785190e-01 + 8.028000000000e-10 -1.680007152563e-01 + 8.128000000000e-10 -1.392642620268e-03 + 8.228000000000e-10 1.746034541840e-01 + 8.328000000000e-10 3.545844335081e-01 + 8.428000000000e-10 5.051160584363e-01 + 8.528000000000e-10 5.732956921486e-01 + 8.628000000000e-10 5.387645428348e-01 + 8.728000000000e-10 4.207248762860e-01 + 8.828000000000e-10 2.618825805652e-01 + 8.928000000000e-10 9.726427312832e-02 + 9.028000000000e-10 -7.269024640303e-02 + 9.128000000000e-10 -2.524920750937e-01 + 9.228000000000e-10 -4.257908972026e-01 + 9.328000000000e-10 -5.468163600121e-01 + 9.428000000000e-10 -5.706862728602e-01 + 9.528000000000e-10 -4.961873446797e-01 + 9.628000000000e-10 -3.546245289348e-01 + 9.728000000000e-10 -1.912707334797e-01 + 9.828000000000e-10 -2.549745252487e-02 + 9.928000000000e-10 1.490100171927e-01 + 1.000000000000e-09 2.804042562760e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/conditions.yaml new file mode 100644 index 00000000..888ce14c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 12 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_12 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/CML_core_tb.sch new file mode 100644 index 00000000..f446017d --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/CML_core_tb_13.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/CML_core_tb_13.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/CML_core_tb_13.data new file mode 100644 index 00000000..8b7e6d70 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/CML_core_tb_13.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.371025020126e-01 + 1.728000000000e-10 5.671843434062e-01 + 1.828000000000e-10 5.026115974197e-01 + 1.928000000000e-10 3.698761175828e-01 + 2.028000000000e-10 2.107945230966e-01 + 2.128000000000e-10 4.885765443345e-02 + 2.228000000000e-10 -1.214244875766e-01 + 2.328000000000e-10 -3.000962430122e-01 + 2.428000000000e-10 -4.624539664009e-01 + 2.528000000000e-10 -5.578757965231e-01 + 2.628000000000e-10 -5.558325665603e-01 + 2.728000000000e-10 -4.651326499641e-01 + 2.828000000000e-10 -3.191410163203e-01 + 2.928000000000e-10 -1.584099737262e-01 + 3.028000000000e-10 5.260769792198e-03 + 3.128000000000e-10 1.792990320727e-01 + 3.228000000000e-10 3.568297244920e-01 + 3.328000000000e-10 5.033634481423e-01 + 3.428000000000e-10 5.679821613760e-01 + 3.528000000000e-10 5.348129833029e-01 + 3.628000000000e-10 4.215344084463e-01 + 3.728000000000e-10 2.671542738628e-01 + 3.828000000000e-10 1.058757320965e-01 + 3.928000000000e-10 -6.050653364250e-02 + 4.028000000000e-10 -2.376716892488e-01 + 4.128000000000e-10 -4.103945694446e-01 + 4.228000000000e-10 -5.351601037742e-01 + 4.328000000000e-10 -5.676142836602e-01 + 4.428000000000e-10 -5.052568222955e-01 + 4.528000000000e-10 -3.735630033165e-01 + 4.628000000000e-10 -2.147878950708e-01 + 4.728000000000e-10 -5.279672745046e-02 + 4.828000000000e-10 1.170845769200e-01 + 4.928000000000e-10 2.958542242500e-01 + 5.028000000000e-10 4.590288791838e-01 + 5.128000000000e-10 5.567565195036e-01 + 5.228000000000e-10 5.569827168059e-01 + 5.328000000000e-10 4.682426459242e-01 + 5.428000000000e-10 3.229559579659e-01 + 5.528000000000e-10 1.624050480172e-01 + 5.628000000000e-10 -1.216462084933e-03 + 5.728000000000e-10 -1.748700359540e-01 + 5.828000000000e-10 -3.527133673253e-01 + 5.928000000000e-10 -5.005383343433e-01 + 6.028000000000e-10 -5.676419424320e-01 + 6.128000000000e-10 -5.366502150486e-01 + 6.228000000000e-10 -4.250364870874e-01 + 6.328000000000e-10 -2.710292619083e-01 + 6.428000000000e-10 -1.098860218949e-01 + 6.528000000000e-10 5.636178196080e-02 + 6.628000000000e-10 2.332315395616e-01 + 6.728000000000e-10 4.065646248987e-01 + 6.828000000000e-10 5.330713538115e-01 + 6.928000000000e-10 5.680516295798e-01 + 7.028000000000e-10 5.077031668006e-01 + 7.128000000000e-10 3.773236938350e-01 + 7.228000000000e-10 2.186754316018e-01 + 7.328000000000e-10 5.685392835133e-02 + 7.428000000000e-10 -1.128372519467e-01 + 7.528000000000e-10 -2.914707069496e-01 + 7.628000000000e-10 -4.556375739225e-01 + 7.728000000000e-10 -5.554573322047e-01 + 7.828000000000e-10 -5.581623461271e-01 + 7.928000000000e-10 -4.712054490488e-01 + 8.028000000000e-10 -3.268259207673e-01 + 8.128000000000e-10 -1.662806807239e-01 + 8.228000000000e-10 -2.934244527428e-03 + 8.328000000000e-10 1.705229918111e-01 + 8.428000000000e-10 3.484637076667e-01 + 8.528000000000e-10 4.977273630891e-01 + 8.628000000000e-10 5.671286836934e-01 + 8.728000000000e-10 5.384999695443e-01 + 8.828000000000e-10 4.283929102026e-01 + 8.928000000000e-10 2.749581851622e-01 + 9.028000000000e-10 1.137763955641e-01 + 9.128000000000e-10 -5.216954389059e-02 + 9.228000000000e-10 -2.289115148628e-01 + 9.328000000000e-10 -4.026435402191e-01 + 9.428000000000e-10 -5.309621390281e-01 + 9.528000000000e-10 -5.682754939619e-01 + 9.628000000000e-10 -5.101282301777e-01 + 9.728000000000e-10 -3.809401272304e-01 + 9.828000000000e-10 -2.225992291958e-01 + 9.928000000000e-10 -6.078764252406e-02 + 1.000000000000e-09 5.969538211773e-02 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/conditions.yaml new file mode 100644 index 00000000..ab043f8b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 13 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_13 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/CML_core_tb.sch new file mode 100644 index 00000000..98f70c99 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/CML_core_tb_14.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/CML_core_tb_14.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/CML_core_tb_14.data new file mode 100644 index 00000000..e2d4a86a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/CML_core_tb_14.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.685994494077e-01 + 1.728000000000e-10 5.680033173677e-01 + 1.828000000000e-10 4.702563674856e-01 + 1.928000000000e-10 3.158730593689e-01 + 2.028000000000e-10 1.495129091369e-01 + 2.128000000000e-10 -1.953292317378e-02 + 2.228000000000e-10 -1.985217743373e-01 + 2.328000000000e-10 -3.791996140847e-01 + 2.428000000000e-10 -5.257312756755e-01 + 2.528000000000e-10 -5.827082806958e-01 + 2.628000000000e-10 -5.336126237469e-01 + 2.728000000000e-10 -4.031247045394e-01 + 2.828000000000e-10 -2.394215940201e-01 + 2.928000000000e-10 -7.255659698483e-02 + 3.028000000000e-10 1.005529440013e-01 + 3.128000000000e-10 2.828780215576e-01 + 3.228000000000e-10 4.542894564617e-01 + 3.328000000000e-10 5.653036008536e-01 + 3.428000000000e-10 5.725850512251e-01 + 3.528000000000e-10 4.810772025614e-01 + 3.628000000000e-10 3.289224425154e-01 + 3.728000000000e-10 1.627522206878e-01 + 3.828000000000e-10 -5.901236406385e-03 + 3.928000000000e-10 -1.839457166775e-01 + 4.028000000000e-10 -3.655051783869e-01 + 4.128000000000e-10 -5.167269598088e-01 + 4.228000000000e-10 -5.822517587470e-01 + 4.328000000000e-10 -5.410257088985e-01 + 4.428000000000e-10 -4.155309597132e-01 + 4.528000000000e-10 -2.526519838626e-01 + 4.628000000000e-10 -8.602442024441e-02 + 4.728000000000e-10 8.639716695153e-02 + 4.828000000000e-10 2.682378418749e-01 + 4.928000000000e-10 4.420446926342e-01 + 5.028000000000e-10 5.599611899078e-01 + 5.128000000000e-10 5.759765965943e-01 + 5.228000000000e-10 4.911677219482e-01 + 5.328000000000e-10 3.420625461523e-01 + 5.428000000000e-10 1.759664901080e-01 + 5.528000000000e-10 7.881982455238e-03 + 5.628000000000e-10 -1.694304774333e-01 + 5.728000000000e-10 -3.514381880500e-01 + 5.828000000000e-10 -5.071893150425e-01 + 5.928000000000e-10 -5.809527514514e-01 + 6.028000000000e-10 -5.479847244619e-01 + 6.128000000000e-10 -4.275846591595e-01 + 6.228000000000e-10 -2.659766117963e-01 + 6.328000000000e-10 -9.933722257759e-02 + 6.428000000000e-10 7.221956138870e-02 + 6.528000000000e-10 2.536833280759e-01 + 6.628000000000e-10 4.293709903854e-01 + 6.728000000000e-10 5.540487051204e-01 + 6.828000000000e-10 5.786193688372e-01 + 6.928000000000e-10 5.009476225142e-01 + 7.028000000000e-10 3.550417804446e-01 + 7.128000000000e-10 1.892841058759e-01 + 7.228000000000e-10 2.151387736973e-02 + 7.328000000000e-10 -1.548540580094e-01 + 7.428000000000e-10 -3.373021911532e-01 + 7.528000000000e-10 -4.969984208918e-01 + 7.628000000000e-10 -5.790298461209e-01 + 7.728000000000e-10 -5.542735467165e-01 + 7.828000000000e-10 -4.394491668012e-01 + 7.928000000000e-10 -2.791980749240e-01 + 8.028000000000e-10 -1.126948717144e-01 + 8.128000000000e-10 5.821099623132e-02 + 8.228000000000e-10 2.390333865018e-01 + 8.328000000000e-10 4.164796242174e-01 + 8.428000000000e-10 5.474016405952e-01 + 8.528000000000e-10 5.806820904512e-01 + 8.628000000000e-10 5.102199864307e-01 + 8.728000000000e-10 3.680116262167e-01 + 8.828000000000e-10 2.025355376563e-01 + 8.928000000000e-10 3.516640628822e-02 + 9.028000000000e-10 -1.404006287987e-01 + 9.128000000000e-10 -3.229571323578e-01 + 9.228000000000e-10 -4.863481312502e-01 + 9.328000000000e-10 -5.763266230399e-01 + 9.428000000000e-10 -5.600311989004e-01 + 9.528000000000e-10 -4.509360688916e-01 + 9.628000000000e-10 -2.924638512409e-01 + 9.728000000000e-10 -1.259546505516e-01 + 9.828000000000e-10 4.421130530697e-02 + 9.928000000000e-10 2.244486902223e-01 + 1.000000000000e-09 3.563189549212e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/conditions.yaml new file mode 100644 index 00000000..f3906847 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 14 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_14 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/CML_core_tb.sch new file mode 100644 index 00000000..ee3209dd --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/CML_core_tb_15.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/CML_core_tb_15.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/CML_core_tb_15.data new file mode 100644 index 00000000..2e85e4e6 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/CML_core_tb_15.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.344960387987e-01 + 1.728000000000e-10 5.452560643354e-01 + 1.828000000000e-10 4.673129977556e-01 + 1.928000000000e-10 3.303067915845e-01 + 2.028000000000e-10 1.707484920037e-01 + 2.128000000000e-10 5.181087662118e-03 + 2.228000000000e-10 -1.675494404811e-01 + 2.328000000000e-10 -3.401592495055e-01 + 2.428000000000e-10 -4.829519141621e-01 + 2.528000000000e-10 -5.505340174514e-01 + 2.628000000000e-10 -5.235059140976e-01 + 2.728000000000e-10 -4.172147065113e-01 + 2.828000000000e-10 -2.674081541308e-01 + 2.928000000000e-10 -1.048630150144e-01 + 3.028000000000e-10 6.333682141777e-02 + 3.128000000000e-10 2.380835653681e-01 + 3.228000000000e-10 4.036717768786e-01 + 3.328000000000e-10 5.212857330835e-01 + 3.428000000000e-10 5.508388819728e-01 + 3.528000000000e-10 4.886846456314e-01 + 3.628000000000e-10 3.600535598894e-01 + 3.728000000000e-10 2.028200071044e-01 + 3.828000000000e-10 3.817873185626e-02 + 3.928000000000e-10 -1.330304531359e-01 + 4.028000000000e-10 -3.073574559208e-01 + 4.128000000000e-10 -4.594561993841e-01 + 4.228000000000e-10 -5.448052398968e-01 + 4.328000000000e-10 -5.359418383134e-01 + 4.428000000000e-10 -4.429420179764e-01 + 4.528000000000e-10 -2.984950838016e-01 + 4.628000000000e-10 -1.373019478795e-01 + 4.728000000000e-10 2.965174653267e-02 + 4.828000000000e-10 2.035061242558e-01 + 4.928000000000e-10 3.733469326425e-01 + 5.028000000000e-10 5.041915675507e-01 + 5.128000000000e-10 5.527110611332e-01 + 5.228000000000e-10 5.072274444340e-01 + 5.328000000000e-10 3.888403459299e-01 + 5.428000000000e-10 2.345873591410e-01 + 5.528000000000e-10 7.106266792034e-02 + 5.628000000000e-10 -9.874543593339e-02 + 5.728000000000e-10 -2.735849121761e-01 + 5.828000000000e-10 -4.333235700941e-01 + 5.928000000000e-10 -5.351812080818e-01 + 6.028000000000e-10 -5.451422835470e-01 + 6.128000000000e-10 -4.665505412081e-01 + 6.228000000000e-10 -3.291302258797e-01 + 6.328000000000e-10 -1.694802467479e-01 + 6.428000000000e-10 -3.821233014841e-03 + 6.528000000000e-10 1.689419826635e-01 + 6.628000000000e-10 3.414985173658e-01 + 6.728000000000e-10 4.838530688650e-01 + 6.828000000000e-10 5.507420108834e-01 + 6.928000000000e-10 5.229758848356e-01 + 7.028000000000e-10 4.162178351163e-01 + 7.128000000000e-10 2.661956516874e-01 + 7.228000000000e-10 1.036319474485e-01 + 7.328000000000e-10 -6.464764646601e-02 + 7.428000000000e-10 -2.393878849216e-01 + 7.528000000000e-10 -4.048132784755e-01 + 7.628000000000e-10 -5.218578949147e-01 + 7.728000000000e-10 -5.507107181542e-01 + 7.828000000000e-10 -4.879111720627e-01 + 7.928000000000e-10 -3.589466891516e-01 + 8.028000000000e-10 -2.015905948669e-01 + 8.128000000000e-10 -3.693360096320e-02 + 8.228000000000e-10 1.343543548759e-01 + 8.328000000000e-10 3.086174200492e-01 + 8.428000000000e-10 4.604141752903e-01 + 8.528000000000e-10 5.450873437482e-01 + 8.628000000000e-10 5.355380307875e-01 + 8.728000000000e-10 4.419896176703e-01 + 8.828000000000e-10 2.973286305239e-01 + 8.928000000000e-10 1.360616231662e-01 + 9.028000000000e-10 -3.092064447201e-02 + 9.128000000000e-10 -2.048337989979e-01 + 9.228000000000e-10 -3.745222574082e-01 + 9.328000000000e-10 -5.049124474742e-01 + 9.428000000000e-10 -5.526994993257e-01 + 9.528000000000e-10 -5.065798817364e-01 + 9.628000000000e-10 -3.877585771317e-01 + 9.728000000000e-10 -2.333895166498e-01 + 9.828000000000e-10 -6.980875104219e-02 + 9.928000000000e-10 1.000379638374e-01 + 1.000000000000e-09 2.266578768883e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/conditions.yaml new file mode 100644 index 00000000..37399e5f --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 15 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_15 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/CML_core_tb.sch new file mode 100644 index 00000000..82789548 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/CML_core_tb_16.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/CML_core_tb_16.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/CML_core_tb_16.data new file mode 100644 index 00000000..f9e049c3 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/CML_core_tb_16.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.180119885725e-01 + 1.728000000000e-10 5.428150273087e-01 + 1.828000000000e-10 4.804584228924e-01 + 1.928000000000e-10 3.549741441244e-01 + 2.028000000000e-10 2.010895036379e-01 + 2.128000000000e-10 3.990849152816e-02 + 2.228000000000e-10 -1.285229050412e-01 + 2.328000000000e-10 -3.004511766915e-01 + 2.428000000000e-10 -4.509267588359e-01 + 2.528000000000e-10 -5.360472886334e-01 + 2.628000000000e-10 -5.308476150918e-01 + 2.728000000000e-10 -4.442065506601e-01 + 2.828000000000e-10 -3.056124141550e-01 + 2.928000000000e-10 -1.482443277933e-01 + 3.028000000000e-10 1.494851437600e-02 + 3.128000000000e-10 1.858420503105e-01 + 3.228000000000e-10 3.546289687231e-01 + 3.328000000000e-10 4.884116146647e-01 + 3.428000000000e-10 5.444051327513e-01 + 3.528000000000e-10 5.100351620157e-01 + 3.628000000000e-10 4.021886871948e-01 + 3.728000000000e-10 2.543879635859e-01 + 3.828000000000e-10 9.485214544103e-02 + 3.928000000000e-10 -7.075032672641e-02 + 4.028000000000e-10 -2.431563423365e-01 + 4.128000000000e-10 -4.051321357110e-01 + 4.228000000000e-10 -5.170375321361e-01 + 4.328000000000e-10 -5.425914254342e-01 + 4.428000000000e-10 -4.810164877195e-01 + 4.528000000000e-10 -3.557735325851e-01 + 4.628000000000e-10 -2.021049505527e-01 + 4.728000000000e-10 -4.082726638447e-02 + 4.828000000000e-10 1.274525546110e-01 + 4.928000000000e-10 2.995340763584e-01 + 5.028000000000e-10 4.501478854236e-01 + 5.128000000000e-10 5.358688831659e-01 + 5.228000000000e-10 5.310853197453e-01 + 5.328000000000e-10 4.449536567085e-01 + 5.428000000000e-10 3.064466861380e-01 + 5.528000000000e-10 1.492307891452e-01 + 5.628000000000e-10 -1.402970778054e-02 + 5.728000000000e-10 -1.847805764035e-01 + 5.828000000000e-10 -3.537555851935e-01 + 5.928000000000e-10 -4.877779299846e-01 + 6.028000000000e-10 -5.443965298452e-01 + 6.128000000000e-10 -5.104273583024e-01 + 6.228000000000e-10 -4.030190625192e-01 + 6.328000000000e-10 -2.552526844497e-01 + 6.428000000000e-10 -9.584365232983e-02 + 6.528000000000e-10 6.980767621840e-02 + 6.628000000000e-10 2.421063163491e-01 + 6.728000000000e-10 4.043299670627e-01 + 6.828000000000e-10 5.165725259787e-01 + 6.928000000000e-10 5.427511708711e-01 + 7.028000000000e-10 4.815471993596e-01 + 7.128000000000e-10 3.566618958690e-01 + 7.228000000000e-10 2.029878940739e-01 + 7.328000000000e-10 4.182623114247e-02 + 7.428000000000e-10 -1.264911878621e-01 + 7.528000000000e-10 -2.985161336122e-01 + 7.628000000000e-10 -4.494546695817e-01 + 7.728000000000e-10 -5.355872510690e-01 + 7.828000000000e-10 -5.314076392591e-01 + 7.928000000000e-10 -4.456031332240e-01 + 8.028000000000e-10 -3.073711989751e-01 + 8.128000000000e-10 -1.501267367277e-01 + 8.228000000000e-10 1.301977512060e-02 + 8.328000000000e-10 1.838083734602e-01 + 8.428000000000e-10 3.527931139928e-01 + 8.528000000000e-10 4.872248737515e-01 + 8.628000000000e-10 5.443010344572e-01 + 8.728000000000e-10 5.108995141754e-01 + 8.828000000000e-10 4.037638610128e-01 + 8.928000000000e-10 2.561974779182e-01 + 9.028000000000e-10 9.675266685198e-02 + 9.128000000000e-10 -6.878530852337e-02 + 9.228000000000e-10 -2.411372387693e-01 + 9.328000000000e-10 -4.034503900353e-01 + 9.428000000000e-10 -5.161800098612e-01 + 9.528000000000e-10 -5.428337693361e-01 + 9.628000000000e-10 -4.821501423095e-01 + 9.728000000000e-10 -3.574746220144e-01 + 9.828000000000e-10 -2.039425985968e-01 + 9.928000000000e-10 -4.275126436145e-02 + 1.000000000000e-09 7.745091708332e-02 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/conditions.yaml new file mode 100644 index 00000000..fd6ef12a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 16 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_16 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/CML_core_tb.sch new file mode 100644 index 00000000..61ee9699 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/CML_core_tb_17.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/CML_core_tb_17.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/CML_core_tb_17.data new file mode 100644 index 00000000..c30d205a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/CML_core_tb_17.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 5.463781676649e-01 + 1.728000000000e-10 5.536807365176e-01 + 1.828000000000e-10 4.700770949122e-01 + 1.928000000000e-10 3.283560096374e-01 + 2.028000000000e-10 1.661765018961e-01 + 2.128000000000e-10 -1.672370944420e-03 + 2.228000000000e-10 -1.765606556303e-01 + 2.328000000000e-10 -3.508537683178e-01 + 2.428000000000e-10 -4.950313094104e-01 + 2.528000000000e-10 -5.620298540958e-01 + 2.628000000000e-10 -5.312461007842e-01 + 2.728000000000e-10 -4.198540992456e-01 + 2.828000000000e-10 -2.664960217947e-01 + 2.928000000000e-10 -1.016301612782e-01 + 3.028000000000e-10 6.876015467442e-02 + 3.128000000000e-10 2.454396012797e-01 + 3.228000000000e-10 4.129162458203e-01 + 3.328000000000e-10 5.323840357395e-01 + 3.428000000000e-10 5.614013358642e-01 + 3.528000000000e-10 4.957648642518e-01 + 3.628000000000e-10 3.630462655612e-01 + 3.728000000000e-10 2.031966960814e-01 + 3.828000000000e-10 3.641362117762e-02 + 3.928000000000e-10 -1.368114278219e-01 + 4.028000000000e-10 -3.130570983897e-01 + 4.128000000000e-10 -4.678223855211e-01 + 4.228000000000e-10 -5.556303003937e-01 + 4.328000000000e-10 -5.462642326143e-01 + 4.428000000000e-10 -4.501399217455e-01 + 4.528000000000e-10 -3.025339874182e-01 + 4.628000000000e-10 -1.391211386078e-01 + 4.728000000000e-10 2.985973753259e-02 + 4.828000000000e-10 2.055652009596e-01 + 4.928000000000e-10 3.777164222946e-01 + 5.028000000000e-10 5.123237313715e-01 + 5.128000000000e-10 5.636674481973e-01 + 5.228000000000e-10 5.176804469731e-01 + 5.328000000000e-10 3.966493941254e-01 + 5.428000000000e-10 2.399755060346e-01 + 5.528000000000e-10 7.439347821169e-02 + 5.628000000000e-10 -9.728144141853e-02 + 5.728000000000e-10 -2.740298162715e-01 + 5.828000000000e-10 -4.370863804142e-01 + 5.928000000000e-10 -5.439077566444e-01 + 6.028000000000e-10 -5.568064057279e-01 + 6.128000000000e-10 -4.776550720163e-01 + 6.228000000000e-10 -3.379986837372e-01 + 6.328000000000e-10 -1.763039651121e-01 + 6.428000000000e-10 -8.754956992321e-03 + 6.528000000000e-10 1.657016199867e-01 + 6.628000000000e-10 3.406597684088e-01 + 6.728000000000e-10 4.880038370068e-01 + 6.828000000000e-10 5.608300027041e-01 + 6.928000000000e-10 5.358420893635e-01 + 7.028000000000e-10 4.284358145311e-01 + 7.128000000000e-10 2.764778248798e-01 + 7.228000000000e-10 1.119749819386e-01 + 7.328000000000e-10 -5.800762940386e-02 + 7.428000000000e-10 -2.344840217603e-01 + 7.528000000000e-10 -4.034266117712e-01 + 7.628000000000e-10 -5.273160770028e-01 + 7.728000000000e-10 -5.625139938790e-01 + 7.828000000000e-10 -5.021596064605e-01 + 7.928000000000e-10 -3.724404268933e-01 + 8.028000000000e-10 -2.133571863679e-01 + 8.128000000000e-10 -4.690703294164e-02 + 8.228000000000e-10 1.258913504065e-01 + 8.328000000000e-10 3.023910361449e-01 + 8.428000000000e-10 4.596790829686e-01 + 8.528000000000e-10 5.529129573994e-01 + 8.628000000000e-10 5.496313201411e-01 + 8.728000000000e-10 4.580052762854e-01 + 8.828000000000e-10 3.123772721548e-01 + 8.928000000000e-10 1.493839199912e-01 + 9.028000000000e-10 -1.918666707897e-02 + 9.128000000000e-10 -1.945822922857e-01 + 9.228000000000e-10 -3.676654591511e-01 + 9.328000000000e-10 -5.060424720484e-01 + 9.428000000000e-10 -5.633948067326e-01 + 9.528000000000e-10 -5.230854707832e-01 + 9.628000000000e-10 -4.056020491363e-01 + 9.728000000000e-10 -2.500708181275e-01 + 9.828000000000e-10 -8.477389482638e-02 + 9.928000000000e-10 8.642889056701e-02 + 1.000000000000e-09 2.140970415562e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/conditions.yaml new file mode 100644 index 00000000..c181174b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 17 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_17 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/CML_core_tb.sch new file mode 100644 index 00000000..daf632f5 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/CML_core_tb_18.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/CML_core_tb_18.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/CML_core_tb_18.data new file mode 100644 index 00000000..cc7811c4 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/CML_core_tb_18.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.311365518451e-01 + 1.728000000000e-10 -5.592957758203e-01 + 1.828000000000e-10 -4.797488633791e-01 + 1.928000000000e-10 -3.322306134120e-01 + 2.028000000000e-10 -1.729422319394e-01 + 2.128000000000e-10 -1.699345238010e-02 + 2.228000000000e-10 1.494505024445e-01 + 2.328000000000e-10 3.277321819870e-01 + 2.428000000000e-10 4.870149438745e-01 + 2.528000000000e-10 5.631997225486e-01 + 2.628000000000e-10 5.268554024906e-01 + 2.728000000000e-10 4.016412888170e-01 + 2.828000000000e-10 2.419982611570e-01 + 2.928000000000e-10 8.556825878920e-02 + 3.028000000000e-10 -7.465365168675e-02 + 3.128000000000e-10 -2.494948470587e-01 + 3.228000000000e-10 -4.232379127345e-01 + 3.328000000000e-10 -5.434286569117e-01 + 3.428000000000e-10 -5.557093238954e-01 + 3.528000000000e-10 -4.638334293452e-01 + 3.628000000000e-10 -3.116470017089e-01 + 3.728000000000e-10 -1.529016666152e-01 + 3.828000000000e-10 3.530326886623e-03 + 3.928000000000e-10 1.720120307534e-01 + 4.028000000000e-10 3.502496598539e-01 + 4.128000000000e-10 5.026743598077e-01 + 4.228000000000e-10 5.645714571224e-01 + 4.328000000000e-10 5.146411371541e-01 + 4.428000000000e-10 3.815837412567e-01 + 4.528000000000e-10 2.215521808706e-01 + 4.628000000000e-10 6.558760297240e-02 + 4.728000000000e-10 -9.625239139173e-02 + 4.828000000000e-10 -2.725616547809e-01 + 4.928000000000e-10 -4.433312319638e-01 + 5.028000000000e-10 -5.516126019735e-01 + 5.128000000000e-10 -5.493294749001e-01 + 5.228000000000e-10 -4.466582063962e-01 + 5.328000000000e-10 -2.911102791776e-01 + 5.428000000000e-10 -1.330529430787e-01 + 5.528000000000e-10 2.419306484897e-02 + 5.628000000000e-10 1.946826166774e-01 + 5.728000000000e-10 3.723408844791e-01 + 5.828000000000e-10 5.166736750015e-01 + 5.928000000000e-10 5.640453324252e-01 + 6.028000000000e-10 5.010275355383e-01 + 6.128000000000e-10 3.611142538615e-01 + 6.228000000000e-10 2.011675579635e-01 + 6.328000000000e-10 4.543787953785e-02 + 6.428000000000e-10 -1.182323448552e-01 + 6.528000000000e-10 -2.956572850723e-01 + 6.628000000000e-10 -4.624607451942e-01 + 6.728000000000e-10 -5.578545785905e-01 + 6.828000000000e-10 -5.411926355366e-01 + 6.928000000000e-10 -4.285055769816e-01 + 7.028000000000e-10 -2.706297728416e-01 + 7.128000000000e-10 -1.132730447688e-01 + 7.228000000000e-10 4.503568429756e-02 + 7.328000000000e-10 2.174591325681e-01 + 7.428000000000e-10 3.939419516133e-01 + 7.528000000000e-10 5.290105305676e-01 + 7.628000000000e-10 5.617453823606e-01 + 7.728000000000e-10 4.862367997259e-01 + 7.828000000000e-10 3.404724989022e-01 + 7.928000000000e-10 1.809244921990e-01 + 8.028000000000e-10 2.511358192793e-02 + 8.128000000000e-10 -1.405112120148e-01 + 8.228000000000e-10 -3.186423567873e-01 + 8.328000000000e-10 -4.803054508961e-01 + 8.428000000000e-10 -5.620811329932e-01 + 8.528000000000e-10 -5.312734499961e-01 + 8.628000000000e-10 -4.094530758118e-01 + 8.728000000000e-10 -2.501524174489e-01 + 8.828000000000e-10 -9.347907818178e-02 + 8.928000000000e-10 6.615100779827e-02 + 9.028000000000e-10 2.403448238761e-01 + 9.128000000000e-10 4.150145923347e-01 + 9.228000000000e-10 5.396682113219e-01 + 9.328000000000e-10 5.577613949069e-01 + 9.428000000000e-10 4.704097965482e-01 + 9.528000000000e-10 3.198411419468e-01 + 9.628000000000e-10 1.608480611662e-01 + 9.728000000000e-10 4.653662126493e-03 + 9.828000000000e-10 -1.630114284973e-01 + 9.928000000000e-10 -3.413270422713e-01 + 1.000000000000e-09 -4.613528250395e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/conditions.yaml new file mode 100644 index 00000000..7a230467 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 18 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_18 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/CML_core_tb.sch new file mode 100644 index 00000000..b07304f3 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/CML_core_tb_19.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/CML_core_tb_19.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/CML_core_tb_19.data new file mode 100644 index 00000000..ce7734f4 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/CML_core_tb_19.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.155675808532e-01 + 1.728000000000e-10 -5.590684876064e-01 + 1.828000000000e-10 -4.970485200967e-01 + 1.928000000000e-10 -3.613266108292e-01 + 2.028000000000e-10 -2.055839293821e-01 + 2.128000000000e-10 -5.419308304169e-02 + 2.228000000000e-10 1.051049218561e-01 + 2.328000000000e-10 2.795443727843e-01 + 2.428000000000e-10 4.471043056604e-01 + 2.528000000000e-10 5.502799551771e-01 + 2.628000000000e-10 5.466723192198e-01 + 2.728000000000e-10 4.475047904806e-01 + 2.828000000000e-10 2.965469054731e-01 + 2.928000000000e-10 1.424984493475e-01 + 3.028000000000e-10 -1.009734334473e-02 + 3.128000000000e-10 -1.761990552073e-01 + 3.228000000000e-10 -3.522714070339e-01 + 3.328000000000e-10 -5.015943728299e-01 + 3.428000000000e-10 -5.618459732258e-01 + 3.528000000000e-10 -5.151710002321e-01 + 3.628000000000e-10 -3.878721717088e-01 + 3.728000000000e-10 -2.320108967809e-01 + 3.828000000000e-10 -8.021590752923e-02 + 3.928000000000e-10 7.659358427726e-02 + 4.028000000000e-10 2.490479319101e-01 + 4.128000000000e-10 4.207782470121e-01 + 4.228000000000e-10 5.397262440240e-01 + 4.328000000000e-10 5.547212850072e-01 + 4.428000000000e-10 4.696030890105e-01 + 4.528000000000e-10 3.234581596635e-01 + 4.628000000000e-10 1.684623006214e-01 + 4.728000000000e-10 1.676979869404e-02 + 4.828000000000e-10 -1.464309122676e-01 + 4.928000000000e-10 -3.224564481247e-01 + 5.028000000000e-10 -4.808409761453e-01 + 5.128000000000e-10 -5.594658041433e-01 + 5.228000000000e-10 -5.302379687070e-01 + 5.328000000000e-10 -4.135626525439e-01 + 5.428000000000e-10 -2.587218271587e-01 + 5.528000000000e-10 -1.061069434306e-01 + 5.628000000000e-10 4.863244468104e-02 + 5.728000000000e-10 2.186435392419e-01 + 5.828000000000e-10 3.930244224828e-01 + 5.928000000000e-10 5.259796084394e-01 + 6.028000000000e-10 5.597842989924e-01 + 6.128000000000e-10 4.899102313230e-01 + 6.228000000000e-10 3.503762799238e-01 + 6.328000000000e-10 1.946627850762e-01 + 6.428000000000e-10 4.331344034385e-02 + 6.528000000000e-10 -1.170605128593e-01 + 6.628000000000e-10 -2.921153654664e-01 + 6.728000000000e-10 -4.574138319818e-01 + 6.828000000000e-10 -5.536758582513e-01 + 6.928000000000e-10 -5.425122630801e-01 + 7.028000000000e-10 -4.379661274856e-01 + 7.128000000000e-10 -2.855394493318e-01 + 7.228000000000e-10 -1.319119665575e-01 + 7.328000000000e-10 2.120629112930e-02 + 7.428000000000e-10 1.884806690649e-01 + 7.528000000000e-10 3.642798751115e-01 + 7.628000000000e-10 5.092746298205e-01 + 7.728000000000e-10 5.618748341869e-01 + 7.828000000000e-10 5.082788605290e-01 + 7.928000000000e-10 3.770821656158e-01 + 8.028000000000e-10 2.211144870134e-01 + 8.128000000000e-10 6.955039106327e-02 + 8.228000000000e-10 -8.822607507269e-02 + 8.328000000000e-10 -2.615556886470e-01 + 8.428000000000e-10 -4.317787817928e-01 + 8.528000000000e-10 -5.444558745209e-01 + 8.628000000000e-10 -5.517931188559e-01 + 8.728000000000e-10 -4.607631664440e-01 + 8.828000000000e-10 -3.124291013351e-01 + 8.928000000000e-10 -1.578021736335e-01 + 9.028000000000e-10 -5.805662459480e-03 + 9.128000000000e-10 1.585834552713e-01 + 9.228000000000e-10 3.347468424066e-01 + 9.328000000000e-10 4.896812097952e-01 + 9.428000000000e-10 5.608455231926e-01 + 9.528000000000e-10 5.243851341899e-01 + 9.628000000000e-10 4.031712702683e-01 + 9.728000000000e-10 2.477647716128e-01 + 9.828000000000e-10 9.552196707385e-02 + 9.928000000000e-10 -6.001371212577e-02 + 1.000000000000e-09 -1.819785427008e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/conditions.yaml new file mode 100644 index 00000000..1f44945e --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 19 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_19 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/CML_core_tb.sch new file mode 100644 index 00000000..ff550b9f --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/CML_core_tb_20.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp -40 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/CML_core_tb_20.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/CML_core_tb_20.data new file mode 100644 index 00000000..97f6482f --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/CML_core_tb_20.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.458151853251e-01 + 1.728000000000e-10 -5.643254766548e-01 + 1.828000000000e-10 -4.723962973094e-01 + 1.928000000000e-10 -3.161158967937e-01 + 2.028000000000e-10 -1.536236623040e-01 + 2.128000000000e-10 6.154159790893e-03 + 2.228000000000e-10 1.776400865005e-01 + 2.328000000000e-10 3.585728203369e-01 + 2.428000000000e-10 5.128898110550e-01 + 2.528000000000e-10 5.720795092985e-01 + 2.628000000000e-10 5.146802704471e-01 + 2.728000000000e-10 3.734987790907e-01 + 2.828000000000e-10 2.093224278876e-01 + 2.928000000000e-10 5.016262450452e-02 + 3.028000000000e-10 -1.160740173948e-01 + 3.128000000000e-10 -2.959691947518e-01 + 3.228000000000e-10 -4.664972833740e-01 + 3.328000000000e-10 -5.651437249055e-01 + 3.428000000000e-10 -5.468542207504e-01 + 3.528000000000e-10 -4.285892608711e-01 + 3.628000000000e-10 -2.656908007009e-01 + 3.728000000000e-10 -1.050444097649e-01 + 3.828000000000e-10 5.700889760574e-02 + 3.928000000000e-10 2.330826685219e-01 + 4.028000000000e-10 4.114835103448e-01 + 4.128000000000e-10 5.434543045193e-01 + 4.228000000000e-10 5.659306587180e-01 + 4.328000000000e-10 4.772694406511e-01 + 4.428000000000e-10 3.222111998943e-01 + 4.528000000000e-10 1.595126496403e-01 + 4.628000000000e-10 -8.158595572394e-05 + 4.728000000000e-10 -1.709892096568e-01 + 4.828000000000e-10 -3.519999279876e-01 + 4.928000000000e-10 -5.084951612902e-01 + 5.028000000000e-10 -5.720572917833e-01 + 5.128000000000e-10 -5.186602309448e-01 + 5.228000000000e-10 -3.795775987311e-01 + 5.328000000000e-10 -2.153237508215e-01 + 5.428000000000e-10 -5.608567178453e-02 + 5.528000000000e-10 1.096334054592e-01 + 5.628000000000e-10 2.892266745620e-01 + 5.728000000000e-10 4.609323786102e-01 + 5.828000000000e-10 5.635117430170e-01 + 5.928000000000e-10 5.495128317803e-01 + 6.028000000000e-10 4.341133868886e-01 + 6.128000000000e-10 2.716819382573e-01 + 6.228000000000e-10 1.108215375576e-01 + 6.328000000000e-10 -5.088594388569e-02 + 6.428000000000e-10 -2.264513702937e-01 + 6.528000000000e-10 -4.053353489572e-01 + 6.628000000000e-10 -5.403522985221e-01 + 6.728000000000e-10 -5.672014897407e-01 + 6.828000000000e-10 -4.820454848354e-01 + 6.928000000000e-10 -3.282943306675e-01 + 7.028000000000e-10 -1.653834725625e-01 + 7.128000000000e-10 -5.939055440262e-03 + 7.228000000000e-10 1.643952927308e-01 + 7.328000000000e-10 3.454317737162e-01 + 7.428000000000e-10 5.040001061821e-01 + 7.528000000000e-10 5.718789197400e-01 + 7.628000000000e-10 5.225332090982e-01 + 7.728000000000e-10 3.856179995450e-01 + 7.828000000000e-10 2.213278078794e-01 + 7.928000000000e-10 6.198746116702e-02 + 8.028000000000e-10 -1.032305577426e-01 + 8.128000000000e-10 -2.824883762098e-01 + 8.228000000000e-10 -4.552880309271e-01 + 8.328000000000e-10 -5.617059595217e-01 + 8.428000000000e-10 -5.520242696182e-01 + 8.528000000000e-10 -4.395509181377e-01 + 8.628000000000e-10 -2.776753414549e-01 + 8.728000000000e-10 -1.165949753256e-01 + 8.828000000000e-10 4.478485508267e-02 + 8.928000000000e-10 2.198282007479e-01 + 9.028000000000e-10 3.991459743212e-01 + 9.128000000000e-10 5.370997636905e-01 + 9.228000000000e-10 5.683346517250e-01 + 9.328000000000e-10 4.867396233883e-01 + 9.428000000000e-10 3.343950630196e-01 + 9.528000000000e-10 1.712745810974e-01 + 9.628000000000e-10 1.195401594982e-02 + 9.728000000000e-10 -1.578063240111e-01 + 9.828000000000e-10 -3.388254664564e-01 + 9.928000000000e-10 -4.993515803500e-01 + 1.000000000000e-09 -5.639567217174e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/conditions.yaml new file mode 100644 index 00000000..0c6bad2c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 20 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_20 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/CML_core_tb.sch new file mode 100644 index 00000000..8857e213 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/CML_core_tb_21.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/CML_core_tb_21.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/CML_core_tb_21.data new file mode 100644 index 00000000..db5e56e6 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/CML_core_tb_21.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.967584163944e-01 + 1.728000000000e-10 -5.441307121147e-01 + 1.828000000000e-10 -4.869491122499e-01 + 1.928000000000e-10 -3.554632512115e-01 + 2.028000000000e-10 -1.988621239548e-01 + 2.128000000000e-10 -4.121542293437e-02 + 2.228000000000e-10 1.234192116705e-01 + 2.328000000000e-10 2.975128220079e-01 + 2.428000000000e-10 4.558011352882e-01 + 2.528000000000e-10 5.430951048215e-01 + 2.628000000000e-10 5.249696364398e-01 + 2.728000000000e-10 4.172520503926e-01 + 2.828000000000e-10 2.649511784525e-01 + 2.928000000000e-10 1.072252439852e-01 + 3.028000000000e-10 -5.314590859624e-02 + 3.128000000000e-10 -2.244467961392e-01 + 3.228000000000e-10 -3.944081861133e-01 + 3.328000000000e-10 -5.185011785564e-01 + 3.428000000000e-10 -5.449839484085e-01 + 3.528000000000e-10 -4.705368687179e-01 + 3.628000000000e-10 -3.305422608546e-01 + 3.728000000000e-10 -1.730083852902e-01 + 3.828000000000e-10 -1.502725063011e-02 + 3.928000000000e-10 1.514848242575e-01 + 4.028000000000e-10 3.255090834192e-01 + 4.128000000000e-10 4.764210192724e-01 + 4.228000000000e-10 5.473819399546e-01 + 4.328000000000e-10 5.126114234729e-01 + 4.428000000000e-10 3.941363884649e-01 + 4.528000000000e-10 2.393230716168e-01 + 4.628000000000e-10 8.172293040000e-02 + 4.728000000000e-10 -8.009952092223e-02 + 4.828000000000e-10 -2.528470149998e-01 + 4.928000000000e-10 -4.193789155753e-01 + 5.028000000000e-10 -5.302774742884e-01 + 5.128000000000e-10 -5.393121879551e-01 + 5.228000000000e-10 -4.511079223488e-01 + 5.328000000000e-10 -3.052703536520e-01 + 5.428000000000e-10 -1.474976315314e-01 + 5.528000000000e-10 1.115548934129e-02 + 5.628000000000e-10 1.796144633165e-01 + 5.728000000000e-10 3.527923691049e-01 + 5.828000000000e-10 4.946340719334e-01 + 5.928000000000e-10 5.486364242717e-01 + 6.028000000000e-10 4.978842118109e-01 + 6.128000000000e-10 3.699928712855e-01 + 6.228000000000e-10 2.136243513812e-01 + 6.328000000000e-10 5.606424822427e-02 + 6.428000000000e-10 -1.074494638422e-01 + 6.528000000000e-10 -2.811956311550e-01 + 6.628000000000e-10 -4.429543495671e-01 + 6.728000000000e-10 -5.392711864894e-01 + 6.828000000000e-10 -5.310358699952e-01 + 6.928000000000e-10 -4.301531742275e-01 + 7.028000000000e-10 -2.798496238488e-01 + 7.128000000000e-10 -1.220649947350e-01 + 7.228000000000e-10 3.758346172733e-02 + 7.328000000000e-10 2.078957475644e-01 + 7.428000000000e-10 3.793298108372e-01 + 7.528000000000e-10 5.104288103282e-01 + 7.628000000000e-10 5.470998205174e-01 + 7.728000000000e-10 4.811320557219e-01 + 7.828000000000e-10 3.451918285639e-01 + 7.928000000000e-10 1.879491684004e-01 + 8.028000000000e-10 3.020898924804e-02 + 8.128000000000e-10 -1.351690342614e-01 + 8.228000000000e-10 -3.093059054867e-01 + 8.328000000000e-10 -4.647122494429e-01 + 8.428000000000e-10 -5.452822275400e-01 + 8.528000000000e-10 -5.201390848957e-01 + 8.628000000000e-10 -4.077752992205e-01 + 8.728000000000e-10 -2.542922053220e-01 + 8.828000000000e-10 -9.661975914604e-02 + 8.928000000000e-10 6.432342589314e-02 + 9.028000000000e-10 2.362706572610e-01 + 9.128000000000e-10 4.049510846020e-01 + 9.228000000000e-10 5.237279887269e-01 + 9.328000000000e-10 5.429357050019e-01 + 9.428000000000e-10 4.626367298941e-01 + 9.528000000000e-10 3.200395578321e-01 + 9.628000000000e-10 1.623716797215e-01 + 9.728000000000e-10 4.151080756644e-03 + 9.828000000000e-10 -1.631757576893e-01 + 9.928000000000e-10 -3.369512690495e-01 + 1.000000000000e-09 -4.509059119523e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/conditions.yaml new file mode 100644 index 00000000..8586e52a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 21 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_21 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/CML_core_tb.sch new file mode 100644 index 00000000..141c3009 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/CML_core_tb_22.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/CML_core_tb_22.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/CML_core_tb_22.data new file mode 100644 index 00000000..a4ce7c24 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/CML_core_tb_22.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.848304249426e-01 + 1.728000000000e-10 -5.391759724127e-01 + 1.828000000000e-10 -4.922259523619e-01 + 1.928000000000e-10 -3.698272371178e-01 + 2.028000000000e-10 -2.180065872843e-01 + 2.128000000000e-10 -6.460953632397e-02 + 2.228000000000e-10 9.486881736254e-02 + 2.328000000000e-10 2.659762288236e-01 + 2.428000000000e-10 4.283087304849e-01 + 2.528000000000e-10 5.305600274544e-01 + 2.628000000000e-10 5.328402076396e-01 + 2.728000000000e-10 4.435481399688e-01 + 2.828000000000e-10 3.004968146615e-01 + 2.928000000000e-10 1.466955607821e-01 + 3.028000000000e-10 -7.955269451838e-03 + 3.128000000000e-10 -1.732653913612e-01 + 3.228000000000e-10 -3.446973183600e-01 + 3.328000000000e-10 -4.867593957189e-01 + 3.428000000000e-10 -5.444778628748e-01 + 3.528000000000e-10 -5.012307219623e-01 + 3.628000000000e-10 -3.811909292380e-01 + 3.728000000000e-10 -2.294630790072e-01 + 3.828000000000e-10 -7.603948824832e-02 + 3.928000000000e-10 8.251748845427e-02 + 4.028000000000e-10 2.530057604989e-01 + 4.128000000000e-10 4.174101003034e-01 + 4.228000000000e-10 5.262084834453e-01 + 4.328000000000e-10 5.362794555234e-01 + 4.428000000000e-10 4.529098257573e-01 + 4.528000000000e-10 3.122318792142e-01 + 4.628000000000e-10 1.584523736303e-01 + 4.728000000000e-10 4.199840693064e-03 + 4.828000000000e-10 -1.601057245874e-01 + 4.928000000000e-10 -3.319184262514e-01 + 5.028000000000e-10 -4.782861050312e-01 + 5.128000000000e-10 -5.437882777035e-01 + 5.228000000000e-10 -5.078115699859e-01 + 5.328000000000e-10 -3.922181326894e-01 + 5.428000000000e-10 -2.413352028336e-01 + 5.528000000000e-10 -8.785436874396e-02 + 5.628000000000e-10 6.988521236924e-02 + 5.728000000000e-10 2.396851953072e-01 + 5.828000000000e-10 4.059032189477e-01 + 5.928000000000e-10 5.210647965533e-01 + 6.028000000000e-10 5.390696565050e-01 + 6.128000000000e-10 4.619069423368e-01 + 6.228000000000e-10 3.239253657148e-01 + 6.328000000000e-10 1.702371555105e-01 + 6.428000000000e-10 1.630025752745e-02 + 6.528000000000e-10 -1.469932571368e-01 + 6.628000000000e-10 -3.189977520107e-01 + 6.728000000000e-10 -4.692924010411e-01 + 6.828000000000e-10 -5.424709166410e-01 + 6.928000000000e-10 -5.139003061272e-01 + 7.028000000000e-10 -4.030319985636e-01 + 7.128000000000e-10 -2.532011514544e-01 + 7.228000000000e-10 -9.964112975079e-02 + 7.328000000000e-10 5.734317287693e-02 + 7.428000000000e-10 2.263630430604e-01 + 7.528000000000e-10 3.941121782167e-01 + 7.628000000000e-10 5.153270127073e-01 + 7.728000000000e-10 5.412967448822e-01 + 7.828000000000e-10 4.705474701310e-01 + 7.928000000000e-10 3.355637546850e-01 + 8.028000000000e-10 1.820411848493e-01 + 8.128000000000e-10 2.834442810943e-02 + 8.228000000000e-10 -1.339458962945e-01 + 8.328000000000e-10 -3.059576766696e-01 + 8.428000000000e-10 -4.598017832852e-01 + 8.528000000000e-10 -5.405123993680e-01 + 8.628000000000e-10 -5.194744212788e-01 + 8.728000000000e-10 -4.135975609875e-01 + 8.828000000000e-10 -2.650548198522e-01 + 8.928000000000e-10 -1.114064015915e-01 + 9.028000000000e-10 4.488627822513e-02 + 9.128000000000e-10 2.130539878193e-01 + 9.228000000000e-10 3.820706486624e-01 + 9.328000000000e-10 5.090159169311e-01 + 9.428000000000e-10 5.429577078007e-01 + 9.528000000000e-10 4.788190270704e-01 + 9.628000000000e-10 3.471301013300e-01 + 9.728000000000e-10 1.938672644672e-01 + 9.828000000000e-10 4.033398182710e-02 + 9.928000000000e-10 -1.209697116944e-01 + 1.000000000000e-09 -2.451863854579e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/conditions.yaml new file mode 100644 index 00000000..2f1f9908 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 22 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_22 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/CML_core_tb.sch new file mode 100644 index 00000000..b0417a2c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/CML_core_tb_23.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 27 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/CML_core_tb_23.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/CML_core_tb_23.data new file mode 100644 index 00000000..d5da674a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/CML_core_tb_23.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -5.031698867449e-01 + 1.728000000000e-10 -5.559494115492e-01 + 1.828000000000e-10 -4.998730322938e-01 + 1.928000000000e-10 -3.658283790605e-01 + 2.028000000000e-10 -2.057211236409e-01 + 2.128000000000e-10 -4.489568269094e-02 + 2.228000000000e-10 1.222382606752e-01 + 2.328000000000e-10 2.986158355312e-01 + 2.428000000000e-10 4.606359926614e-01 + 2.528000000000e-10 5.521473773306e-01 + 2.628000000000e-10 5.345812393627e-01 + 2.728000000000e-10 4.238201873249e-01 + 2.828000000000e-10 2.676796377075e-01 + 2.928000000000e-10 1.066794684340e-01 + 3.028000000000e-10 -5.678604565117e-02 + 3.128000000000e-10 -2.306492037078e-01 + 3.228000000000e-10 -4.028933320857e-01 + 3.328000000000e-10 -5.288428511057e-01 + 3.428000000000e-10 -5.537272595675e-01 + 3.528000000000e-10 -4.743039424122e-01 + 3.628000000000e-10 -3.290350313112e-01 + 3.728000000000e-10 -1.680892829913e-01 + 3.828000000000e-10 -6.795755635653e-03 + 3.928000000000e-10 1.629203496285e-01 + 4.028000000000e-10 3.391611982248e-01 + 4.128000000000e-10 4.905466116494e-01 + 4.228000000000e-10 5.578106684004e-01 + 4.328000000000e-10 5.155575864532e-01 + 4.428000000000e-10 3.893295485048e-01 + 4.528000000000e-10 2.300915101026e-01 + 4.628000000000e-10 6.929126792669e-02 + 4.728000000000e-10 -9.624408118273e-02 + 4.828000000000e-10 -2.719338399007e-01 + 4.928000000000e-10 -4.389200417759e-01 + 5.028000000000e-10 -5.449342986188e-01 + 5.128000000000e-10 -5.439031126331e-01 + 5.228000000000e-10 -4.446530253554e-01 + 5.328000000000e-10 -2.918490615077e-01 + 5.428000000000e-10 -1.307639726990e-01 + 5.528000000000e-10 3.164732743246e-02 + 5.628000000000e-10 2.039847772760e-01 + 5.728000000000e-10 3.784050515971e-01 + 5.828000000000e-10 5.154866410800e-01 + 5.928000000000e-10 5.571793595685e-01 + 6.028000000000e-10 4.917497295790e-01 + 6.128000000000e-10 3.529773366480e-01 + 6.228000000000e-10 1.923890461403e-01 + 6.328000000000e-10 3.147558002288e-02 + 6.428000000000e-10 -1.365240202614e-01 + 6.528000000000e-10 -3.130216882928e-01 + 6.628000000000e-10 -4.717005257356e-01 + 6.728000000000e-10 -5.548816454072e-01 + 6.828000000000e-10 -5.284672024606e-01 + 6.928000000000e-10 -4.119333253215e-01 + 7.028000000000e-10 -2.544413325779e-01 + 7.128000000000e-10 -9.352454025311e-02 + 7.228000000000e-10 7.062104261896e-02 + 7.328000000000e-10 2.452119740286e-01 + 7.428000000000e-10 4.158977506374e-01 + 7.528000000000e-10 5.351728589329e-01 + 7.628000000000e-10 5.508876924354e-01 + 7.728000000000e-10 4.641954978457e-01 + 7.828000000000e-10 3.159291426141e-01 + 7.928000000000e-10 1.548820672850e-01 + 8.028000000000e-10 -6.726886093597e-03 + 8.128000000000e-10 -1.773917774576e-01 + 8.228000000000e-10 -3.531882556336e-01 + 8.328000000000e-10 -4.999436828040e-01 + 8.428000000000e-10 -5.582723309440e-01 + 8.528000000000e-10 -5.076454127540e-01 + 8.628000000000e-10 -3.766411335267e-01 + 8.728000000000e-10 -2.167811502550e-01 + 8.828000000000e-10 -5.599118467032e-02 + 8.928000000000e-10 1.103715238301e-01 + 9.028000000000e-10 2.864948163408e-01 + 9.128000000000e-10 4.509329110582e-01 + 9.228000000000e-10 5.491880863676e-01 + 9.328000000000e-10 5.390993007317e-01 + 9.428000000000e-10 4.334459560763e-01 + 9.528000000000e-10 2.786741986561e-01 + 9.628000000000e-10 1.176317365997e-01 + 9.728000000000e-10 -4.533239585396e-02 + 9.828000000000e-10 -2.185195339366e-01 + 9.928000000000e-10 -3.918650482151e-01 + 1.000000000000e-09 -4.962236612550e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/conditions.yaml new file mode 100644 index 00000000..3d23fe4b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 23 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_23 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/CML_core_tb.sch new file mode 100644 index 00000000..6b2776b5 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/CML_core_tb_24.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP 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/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/CML_core_tb_24.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/CML_core_tb_24.data new file mode 100644 index 00000000..c41c24d8 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/CML_core_tb_24.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.327910324256e-01 + 1.728000000000e-10 -5.104523204344e-01 + 1.828000000000e-10 -4.919049595295e-01 + 1.928000000000e-10 -3.909061576120e-01 + 2.028000000000e-10 -2.463905832969e-01 + 2.128000000000e-10 -9.030729814880e-02 + 2.228000000000e-10 7.090337967192e-02 + 2.328000000000e-10 2.391128518003e-01 + 2.428000000000e-10 3.979068244163e-01 + 2.528000000000e-10 5.057784369939e-01 + 2.628000000000e-10 5.222442811568e-01 + 2.728000000000e-10 4.475463421234e-01 + 2.828000000000e-10 3.135857176625e-01 + 2.928000000000e-10 1.594708320831e-01 + 3.028000000000e-10 8.984576080604e-04 + 3.128000000000e-10 -1.645587525434e-01 + 3.228000000000e-10 -3.311340835825e-01 + 3.328000000000e-10 -4.679485266507e-01 + 3.428000000000e-10 -5.277100272002e-01 + 3.528000000000e-10 -4.910003875365e-01 + 3.628000000000e-10 -3.782517931754e-01 + 3.728000000000e-10 -2.293684093697e-01 + 3.828000000000e-10 -7.248392410840e-02 + 3.928000000000e-10 8.947351034921e-02 + 4.028000000000e-10 2.577913488707e-01 + 4.128000000000e-10 4.135082684608e-01 + 4.228000000000e-10 5.128426072357e-01 + 4.328000000000e-10 5.187626011362e-01 + 4.428000000000e-10 4.357788211303e-01 + 4.528000000000e-10 2.980558508264e-01 + 4.628000000000e-10 1.431490581765e-01 + 4.728000000000e-10 -1.591265626250e-02 + 4.828000000000e-10 -1.821667232795e-01 + 4.928000000000e-10 -3.475025723663e-01 + 5.028000000000e-10 -4.784637362759e-01 + 5.128000000000e-10 -5.282831491711e-01 + 5.228000000000e-10 -4.822697516961e-01 + 5.328000000000e-10 -3.637830931217e-01 + 5.428000000000e-10 -2.133005363205e-01 + 5.528000000000e-10 -5.603973127618e-02 + 5.628000000000e-10 1.066850525713e-01 + 5.728000000000e-10 2.750581839130e-01 + 5.828000000000e-10 4.273008627169e-01 + 5.928000000000e-10 5.181067568383e-01 + 6.028000000000e-10 5.139063333086e-01 + 6.128000000000e-10 4.233641609123e-01 + 6.228000000000e-10 2.823752498996e-01 + 6.328000000000e-10 1.269005897264e-01 + 6.428000000000e-10 -3.275126442225e-02 + 6.528000000000e-10 -1.996704202465e-01 + 6.628000000000e-10 -3.634780398743e-01 + 6.728000000000e-10 -4.879892997483e-01 + 6.828000000000e-10 -5.277920833828e-01 + 6.928000000000e-10 -4.727131411481e-01 + 7.028000000000e-10 -3.490253785841e-01 + 7.128000000000e-10 -1.971666354585e-01 + 7.228000000000e-10 -3.957870648492e-02 + 7.328000000000e-10 1.239927359929e-01 + 7.428000000000e-10 2.921256198799e-01 + 7.528000000000e-10 4.404193015741e-01 + 7.628000000000e-10 5.222557511529e-01 + 7.728000000000e-10 5.081185505306e-01 + 7.828000000000e-10 4.103785543253e-01 + 7.928000000000e-10 2.665844078783e-01 + 8.028000000000e-10 1.105880832534e-01 + 8.128000000000e-10 -4.965159634504e-02 + 8.228000000000e-10 -2.171832072956e-01 + 8.328000000000e-10 -3.790547756631e-01 + 8.428000000000e-10 -4.966582386238e-01 + 8.528000000000e-10 -5.262999861314e-01 + 8.628000000000e-10 -4.624510461450e-01 + 8.728000000000e-10 -3.339637098432e-01 + 8.828000000000e-10 -1.809943980113e-01 + 8.928000000000e-10 -2.300609478627e-02 + 9.028000000000e-10 1.413751270982e-01 + 9.128000000000e-10 3.090431666435e-01 + 9.228000000000e-10 4.527815787591e-01 + 9.328000000000e-10 5.253391487746e-01 + 9.428000000000e-10 5.013727724367e-01 + 9.528000000000e-10 3.969006854251e-01 + 9.628000000000e-10 2.506746363374e-01 + 9.728000000000e-10 9.427227745141e-02 + 9.828000000000e-10 -6.667584352686e-02 + 9.928000000000e-10 -2.346505575192e-01 + 1.000000000000e-09 -3.536890741260e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/conditions.yaml new file mode 100644 index 00000000..b187d61a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 24 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_24 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/CML_core_tb.sch new file mode 100644 index 00000000..60a09d77 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/CML_core_tb_25.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/CML_core_tb_25.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/CML_core_tb_25.data new file mode 100644 index 00000000..5b20472d --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/CML_core_tb_25.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.234652372470e-01 + 1.728000000000e-10 -5.023350411985e-01 + 1.828000000000e-10 -4.882370947196e-01 + 1.928000000000e-10 -3.934622991782e-01 + 2.028000000000e-10 -2.540849756424e-01 + 2.128000000000e-10 -1.022077626652e-01 + 2.228000000000e-10 5.487463989292e-02 + 2.328000000000e-10 2.201387084143e-01 + 2.428000000000e-10 3.793010385310e-01 + 2.528000000000e-10 4.928092825825e-01 + 2.628000000000e-10 5.196604221395e-01 + 2.728000000000e-10 4.569333044751e-01 + 2.828000000000e-10 3.319491455483e-01 + 2.928000000000e-10 1.828241959120e-01 + 3.028000000000e-10 2.875417263246e-02 + 3.128000000000e-10 -1.322085231319e-01 + 3.228000000000e-10 -2.979591628573e-01 + 3.328000000000e-10 -4.419921797151e-01 + 3.428000000000e-10 -5.181142235199e-01 + 3.528000000000e-10 -5.011276271936e-01 + 3.628000000000e-10 -4.047301057605e-01 + 3.728000000000e-10 -2.642146009991e-01 + 3.828000000000e-10 -1.120554869934e-01 + 3.928000000000e-10 4.449697941514e-02 + 4.028000000000e-10 2.092158976339e-01 + 4.128000000000e-10 3.698137386910e-01 + 4.228000000000e-10 4.880993908984e-01 + 4.328000000000e-10 5.216646824640e-01 + 4.428000000000e-10 4.646374646662e-01 + 4.528000000000e-10 3.428387452384e-01 + 4.628000000000e-10 1.944050088817e-01 + 4.728000000000e-10 4.065056841101e-02 + 4.828000000000e-10 -1.196538800530e-01 + 4.928000000000e-10 -2.856080481145e-01 + 5.028000000000e-10 -4.328604027743e-01 + 5.128000000000e-10 -5.155684125841e-01 + 5.228000000000e-10 -5.056146117143e-01 + 5.328000000000e-10 -4.141876506985e-01 + 5.428000000000e-10 -2.756803009980e-01 + 5.528000000000e-10 -1.238226525070e-01 + 5.628000000000e-10 3.221018080289e-02 + 5.728000000000e-10 1.964355129807e-01 + 5.828000000000e-10 3.583575591201e-01 + 5.928000000000e-10 4.816985038066e-01 + 6.028000000000e-10 5.224947498493e-01 + 6.128000000000e-10 4.718193125923e-01 + 6.228000000000e-10 3.536174083497e-01 + 6.328000000000e-10 2.061296412053e-01 + 6.428000000000e-10 5.261608296359e-02 + 6.528000000000e-10 -1.069794898843e-01 + 6.628000000000e-10 -2.730503720825e-01 + 6.728000000000e-10 -4.231934075288e-01 + 6.828000000000e-10 -5.124136353084e-01 + 6.928000000000e-10 -5.095785569986e-01 + 7.028000000000e-10 -4.234260154720e-01 + 7.128000000000e-10 -2.870921093466e-01 + 7.228000000000e-10 -1.356399571892e-01 + 7.328000000000e-10 1.994586721238e-02 + 7.428000000000e-10 1.835653494556e-01 + 7.528000000000e-10 3.466515630325e-01 + 7.628000000000e-10 4.747178407660e-01 + 7.728000000000e-10 5.227707225181e-01 + 7.828000000000e-10 4.785566684900e-01 + 7.928000000000e-10 3.642543025781e-01 + 8.028000000000e-10 2.178048074733e-01 + 8.128000000000e-10 6.456648208830e-02 + 8.228000000000e-10 -9.438288801709e-02 + 8.328000000000e-10 -2.603879663713e-01 + 8.428000000000e-10 -4.131715855760e-01 + 8.528000000000e-10 -5.086601982059e-01 + 8.628000000000e-10 -5.130504205797e-01 + 8.728000000000e-10 -4.323341026072e-01 + 8.828000000000e-10 -2.984457952852e-01 + 8.928000000000e-10 -1.474159969866e-01 + 9.028000000000e-10 7.721087988347e-03 + 9.128000000000e-10 1.707348336950e-01 + 9.228000000000e-10 3.347409452624e-01 + 9.328000000000e-10 4.672737333583e-01 + 9.428000000000e-10 5.224691058784e-01 + 9.528000000000e-10 4.848897255043e-01 + 9.628000000000e-10 3.746840785486e-01 + 9.728000000000e-10 2.294653719965e-01 + 9.828000000000e-10 7.645843789077e-02 + 9.928000000000e-10 -8.182784111963e-02 + 1.000000000000e-09 -2.014421894108e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/conditions.yaml new file mode 100644 index 00000000..5feb9da2 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 25 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_25 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/.spiceinit b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/.spiceinit @@ -0,0 +1,30 @@ +* 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/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/CML_core_tb.sch new file mode 100644 index 00000000..b257137a --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/CML_core_tb.sch @@ -0,0 +1,73 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 740 -940 740 -920 {lab=GND} +N 740 -1090 740 -1060 {lab=VDD} +N 600 -1020 620 -1020 {lab=Vinplus} +N 600 -980 620 -980 {lab=Vinminus} +N 860 -1020 880 -1020 {lab=Voplus} +N 860 -980 880 -980 {lab=Vominus} +N 1150 -850 1150 -820 {lab=VDD} +N 1150 -760 1150 -730 {lab=GND} +N 930 -850 930 -820 {lab=Vinminus} +N 930 -760 930 -730 {lab=GND} +N 720 -850 720 -820 {lab=Vinplus} +N 720 -760 720 -730 {lab=GND} +C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.param A=0 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write CML_core_tb.raw +set appendwrite +tran 10p 1n 160p + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/CML_core_tb_26.data vo_diff +quit + +.endc +"} +C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus} +C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus} +C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice + +.temp 80 +" +} +C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD} +C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus} +C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus} +C {CML_divider.sym} 740 -1000 0 1 {name=x1} +C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD} +C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND} +C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus} +C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 A 10G 0 0 0)" savecurrent=false} +C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus +value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"} +C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 A 10G 0 0 180)" savecurrent=false} +C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/CML_core_tb_26.data b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/CML_core_tb_26.data new file mode 100644 index 00000000..f50fb91c --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/CML_core_tb_26.data @@ -0,0 +1,85 @@ + 1.628000000000e-10 -4.323817786181e-01 + 1.728000000000e-10 -5.218197731172e-01 + 1.828000000000e-10 -5.130055457506e-01 + 1.928000000000e-10 -4.161806120260e-01 + 2.028000000000e-10 -2.707614247853e-01 + 2.128000000000e-10 -1.119567587354e-01 + 2.228000000000e-10 5.136762599758e-02 + 2.328000000000e-10 2.215286991565e-01 + 2.428000000000e-10 3.860326290053e-01 + 2.528000000000e-10 5.068500219960e-01 + 2.628000000000e-10 5.377768628838e-01 + 2.728000000000e-10 4.721051539524e-01 + 2.828000000000e-10 3.402635220541e-01 + 2.928000000000e-10 1.841583768191e-01 + 3.028000000000e-10 2.301269990977e-02 + 3.128000000000e-10 -1.440620364153e-01 + 3.228000000000e-10 -3.141964231002e-01 + 3.328000000000e-10 -4.612191139012e-01 + 3.428000000000e-10 -5.367771990781e-01 + 3.528000000000e-10 -5.127750466140e-01 + 3.628000000000e-10 -4.056871368496e-01 + 3.728000000000e-10 -2.562682158482e-01 + 3.828000000000e-10 -9.672900675225e-02 + 3.928000000000e-10 6.713808807349e-02 + 4.028000000000e-10 2.375373509974e-01 + 4.128000000000e-10 4.000093780223e-01 + 4.228000000000e-10 5.140628089507e-01 + 4.328000000000e-10 5.356814484820e-01 + 4.428000000000e-10 4.622754301517e-01 + 4.528000000000e-10 3.266573796267e-01 + 4.628000000000e-10 1.696986500434e-01 + 4.728000000000e-10 8.224133790347e-03 + 4.828000000000e-10 -1.595501346883e-01 + 4.928000000000e-10 -3.290121653328e-01 + 5.028000000000e-10 -4.717216871818e-01 + 5.128000000000e-10 -5.386966497187e-01 + 5.228000000000e-10 -5.060218758391e-01 + 5.328000000000e-10 -3.932361292887e-01 + 5.428000000000e-10 -2.420585407817e-01 + 5.528000000000e-10 -8.215190368253e-02 + 5.628000000000e-10 8.228124773791e-02 + 5.728000000000e-10 2.529751404914e-01 + 5.828000000000e-10 4.131313439142e-01 + 5.928000000000e-10 5.202699684622e-01 + 6.028000000000e-10 5.326658673636e-01 + 6.128000000000e-10 4.519586245162e-01 + 6.228000000000e-10 3.128850848163e-01 + 6.328000000000e-10 1.552673526240e-01 + 6.428000000000e-10 -6.618031234040e-03 + 6.528000000000e-10 -1.750036732844e-01 + 6.628000000000e-10 -3.436243240549e-01 + 6.728000000000e-10 -4.815176030347e-01 + 6.828000000000e-10 -5.397683152546e-01 + 6.928000000000e-10 -4.985592512398e-01 + 7.028000000000e-10 -3.805077765022e-01 + 7.128000000000e-10 -2.277734449826e-01 + 7.228000000000e-10 -6.758418108638e-02 + 7.328000000000e-10 9.750342024286e-02 + 7.428000000000e-10 2.682954130339e-01 + 7.528000000000e-10 4.258393021470e-01 + 7.628000000000e-10 5.256345626853e-01 + 7.728000000000e-10 5.289060292912e-01 + 7.828000000000e-10 4.411430993719e-01 + 7.928000000000e-10 2.990145992376e-01 + 8.028000000000e-10 1.407841701293e-01 + 8.128000000000e-10 -2.148551411031e-02 + 8.228000000000e-10 -1.904941552057e-01 + 8.328000000000e-10 -3.579942758686e-01 + 8.428000000000e-10 -4.907023738119e-01 + 8.528000000000e-10 -5.400209406036e-01 + 8.628000000000e-10 -4.904872044524e-01 + 8.728000000000e-10 -3.674750163499e-01 + 8.828000000000e-10 -2.134433797210e-01 + 8.928000000000e-10 -5.293556734921e-02 + 9.028000000000e-10 1.127840525322e-01 + 9.128000000000e-10 2.835604325687e-01 + 9.228000000000e-10 4.380556116504e-01 + 9.328000000000e-10 5.301928903803e-01 + 9.428000000000e-10 5.243535525106e-01 + 9.528000000000e-10 4.298886927263e-01 + 9.628000000000e-10 2.850186727532e-01 + 9.728000000000e-10 1.263001165080e-01 + 9.828000000000e-10 -3.646027271135e-02 + 9.928000000000e-10 -2.059993087376e-01 + 1.000000000000e-09 -3.287656823991e-01 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/CML_divider.sym b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/CML_divider.sym new file mode 100644 index 00000000..e46eb233 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/CML_divider.sym @@ -0,0 +1,30 @@ +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 -120 -20 -100 -20 {} +L 4 -120 20 -100 20 {} +L 4 100 -20 120 -20 {} +L 4 100 20 120 20 {} +L 7 0 -60 0 -40 {} +L 7 0 40 0 60 {} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out} +B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out} +B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in} +B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in} +B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout} +B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout} +P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {} +T {@symname} -44 -6 0 0 0.3 0.3 {} +T {@name} 45 -52 0 0 0.2 0.2 {} +T {Vo+} -95 -24 0 0 0.2 0.2 {} +T {Vo-} -95 16 0 0 0.2 0.2 {} +T {Vi+} 95 -16 2 0 0.2 0.2 {} +T {Vi-} 95 24 2 0 0.2 0.2 {} +T {vdd} 10 -39 0 1 0.2 0.2 {} +T {gnd} -10 34 2 1 0.2 0.2 {} diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/conditions.yaml b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/conditions.yaml new file mode 100644 index 00000000..dc34a5cc --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice +N: 26 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: CML_core_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/run_26 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/simulation_summary.csv b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/simulation_summary.csv new file mode 100644 index 00000000..b3ff8851 --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/simulation_summary.csv @@ -0,0 +1,28 @@ +run,corner,temperature,vdd,time,vo_diff,frequency,amplitude,voltage_swing +run_00,tt,-40,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.417, 0.566, 0.643, …]",5.902e+09,0.652,1.304 +run_01,ff,-40,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.388, 0.541, 0.624, …]",5.902e+09,0.636,1.273 +run_02,ss,-40,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.437, 0.584, 0.658, …]",5.902e+09,0.666,1.331 +run_03,tt,27,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.379, 0.531, 0.612, …]",5.902e+09,0.623,1.246 +run_04,ff,27,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.353, 0.507, 0.592, …]",5.902e+09,0.606,1.211 +run_05,ss,27,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.390, 0.545, 0.627, …]",5.902e+09,0.638,1.277 +run_06,tt,80,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.327, 0.482, 0.573, …]",5.902e+09,0.591,1.182 +run_07,ff,80,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.305, 0.459, 0.552, …]",5.902e+09,0.573,1.145 +run_08,ss,80,0.8,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.333, 0.492, 0.587, …]",5.902e+09,0.609,1.217 +run_09,tt,-40,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.567, 0.586, 0.501, …]",5.902e+09,0.592,1.184 +run_10,ff,-40,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.543, 0.589, 0.533, …]",5.902e+09,0.589,1.178 +run_11,ss,-40,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.583, 0.581, 0.475, …]",5.902e+09,0.592,1.183 +run_12,tt,27,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.556, 0.565, 0.480, …]",5.902e+09,0.574,1.148 +run_13,ff,27,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.537, 0.567, 0.503, …]",5.902e+09,0.568,1.136 +run_14,ss,27,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.569, 0.568, 0.470, …]",5.902e+09,0.582,1.163 +run_15,tt,80,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.534, 0.545, 0.467, …]",5.902e+09,0.553,1.105 +run_16,ff,80,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.518, 0.543, 0.480, …]",5.902e+09,0.544,1.089 +run_17,ss,80,1.2,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[0.546, 0.554, 0.470, …]",5.902e+09,0.564,1.127 +run_18,tt,-40,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.311e-01, -5.593e-01, -4.797e-01, …]",5.902e+09,0.563,1.127 +run_19,ff,-40,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.156e-01, -5.591e-01, -4.970e-01, …]",5.902e+09,0.562,1.124 +run_20,ss,-40,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.458e-01, -5.643e-01, -4.724e-01, …]",5.902e+09,0.572,1.144 +run_21,tt,27,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.968e-01, -5.441e-01, -4.869e-01, …]",5.902e+09,0.547,1.094 +run_22,ff,27,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.848e-01, -5.392e-01, -4.922e-01, …]",5.902e+09,0.544,1.087 +run_23,ss,27,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-5.032e-01, -5.559e-01, -4.999e-01, …]",5.902e+09,0.558,1.116 +run_24,tt,80,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.328e-01, -5.105e-01, -4.919e-01, …]",5.902e+09,0.527,1.054 +run_25,ff,80,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.235e-01, -5.023e-01, -4.882e-01, …]",5.902e+09,0.520,1.041 +run_26,ss,80,1.6,"[1.628e-10, 1.728e-10, 1.828e-10, …]","[-4.324e-01, -5.218e-01, -5.130e-01, …]",5.902e+09,0.539,1.078 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/simulation_summary.md b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/simulation_summary.md new file mode 100644 index 00000000..eb3c339b --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/simulation_summary.md @@ -0,0 +1,31 @@ +# Simulation Summary for CML divider frequency response + +| run | corner | temperature | vdd | time | vo_diff | frequency | amplitude | voltage_swing | +| :-- | -----: | ----------: | --: | ---: | ------: | --------: | --------: | ------------: | +| run_00 | tt | -40 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.417, 0.566, 0.643, …] | 5.902e+09 | 0.652 | 1.304 | +| run_01 | ff | -40 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.388, 0.541, 0.624, …] | 5.902e+09 | 0.636 | 1.273 | +| run_02 | ss | -40 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.437, 0.584, 0.658, …] | 5.902e+09 | 0.666 | 1.331 | +| run_03 | tt | 27 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.379, 0.531, 0.612, …] | 5.902e+09 | 0.623 | 1.246 | +| run_04 | ff | 27 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.353, 0.507, 0.592, …] | 5.902e+09 | 0.606 | 1.211 | +| run_05 | ss | 27 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.390, 0.545, 0.627, …] | 5.902e+09 | 0.638 | 1.277 | +| run_06 | tt | 80 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.327, 0.482, 0.573, …] | 5.902e+09 | 0.591 | 1.182 | +| run_07 | ff | 80 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.305, 0.459, 0.552, …] | 5.902e+09 | 0.573 | 1.145 | +| run_08 | ss | 80 | 0.8 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.333, 0.492, 0.587, …] | 5.902e+09 | 0.609 | 1.217 | +| run_09 | tt | -40 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.567, 0.586, 0.501, …] | 5.902e+09 | 0.592 | 1.184 | +| run_10 | ff | -40 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.543, 0.589, 0.533, …] | 5.902e+09 | 0.589 | 1.178 | +| run_11 | ss | -40 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.583, 0.581, 0.475, …] | 5.902e+09 | 0.592 | 1.183 | +| run_12 | tt | 27 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.556, 0.565, 0.480, …] | 5.902e+09 | 0.574 | 1.148 | +| run_13 | ff | 27 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.537, 0.567, 0.503, …] | 5.902e+09 | 0.568 | 1.136 | +| run_14 | ss | 27 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.569, 0.568, 0.470, …] | 5.902e+09 | 0.582 | 1.163 | +| run_15 | tt | 80 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.534, 0.545, 0.467, …] | 5.902e+09 | 0.553 | 1.105 | +| run_16 | ff | 80 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.518, 0.543, 0.480, …] | 5.902e+09 | 0.544 | 1.089 | +| run_17 | ss | 80 | 1.2 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [0.546, 0.554, 0.470, …] | 5.902e+09 | 0.564 | 1.127 | +| run_18 | tt | -40 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.311e-01, -5.593e-01, -4.797e-01, …] | 5.902e+09 | 0.563 | 1.127 | +| run_19 | ff | -40 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.156e-01, -5.591e-01, -4.970e-01, …] | 5.902e+09 | 0.562 | 1.124 | +| run_20 | ss | -40 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.458e-01, -5.643e-01, -4.724e-01, …] | 5.902e+09 | 0.572 | 1.144 | +| run_21 | tt | 27 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.968e-01, -5.441e-01, -4.869e-01, …] | 5.902e+09 | 0.547 | 1.094 | +| run_22 | ff | 27 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.848e-01, -5.392e-01, -4.922e-01, …] | 5.902e+09 | 0.544 | 1.087 | +| run_23 | ss | 27 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-5.032e-01, -5.559e-01, -4.999e-01, …] | 5.902e+09 | 0.558 | 1.116 | +| run_24 | tt | 80 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.328e-01, -5.105e-01, -4.919e-01, …] | 5.902e+09 | 0.527 | 1.054 | +| run_25 | ff | 80 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.235e-01, -5.023e-01, -4.882e-01, …] | 5.902e+09 | 0.520 | 1.041 | +| run_26 | ss | 80 | 1.6 | [1.628e-10, 1.728e-10, 1.828e-10, …] | [-4.324e-01, -5.218e-01, -5.130e-01, …] | 5.902e+09 | 0.539 | 1.078 | diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/vo_diff_vs_time.png b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/parameters/ac_params/vo_diff_vs_time.png new file mode 100644 index 0000000000000000000000000000000000000000..926b1f5ce2cb95eb82bf7c429094d388157e5021 GIT binary patch literal 314899 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

di6~LSwW) z5AipUmn>j~7*gHgZ-D_op=RX;kO-3pL%J#G{|4Edlr%M^LhBkt-3tQC5`EuXXmf!i z#do_&R@qD^i?vpEQ3;Eb|1aE5&D3i(fZ&52VWOKN0CY?u3SDa?Q_v((M@IzkA{pLZ z${5_kRj1cf@S>#wf<%yP>SuxUdit>>b}KlF9*Ms5d_u}QDc?IAJhGZdIHq$r!+o`aKiIQv%A^rdnVkqq{okA!W(AaC5^v~h32DWQBz1F9k&Fs4%RM$ID>*(7m2;h*qz;o&7D>6^bHDc zs^hDEIxw8-k=$m^!h*n(`918I?U1artZ(<4!7k(1MORGX28VWIKpfndD))hDBtzHW z8L2|@Y-Gg)X?L##JlZ`^0daKwY^p)i(E|_u3QH&P0PN^I_lc(cl9z|CDWOTy&nMKq z$6%V~>6tV*H%*V;C<(Z5Dny2mGXaDCuOu^F6A2ZYF-hG|J*P_RtRz1;*5JFUHr=##o`Y^+lExoDgKT?Mud}($r z3SUz%oKp%@@=ZTXN?xM|zFig}oROkFkm(d{B8N=AaaoOffUR;{h%Qg9F zFRN$0d2>FqZ&< z!wrUn!SfFMkRb(L)%X*H>;t%UA6Qb+nH&eC$}>P^OiYF8l}e5P?3)#vOmM2`h7Sf= zNEtv;`vJ1UfT|lv+6r+87SmsVP9GBdy#Zzv*9&!T`Nu~;gOYC>A3*u4Q@bECgynUv z+n}mhlikeC7bzh3*Jg|ObfU8Veom~Foe#xWAjjGNJCq{@R*$1MiF%)mN1!w*kk(kq z1Q)RBcMx&l29^*HAVBt5(9v@PDQ2*5Mi?{SfKTxU+3r4Ym~se?Jsssg#rOalt{MEsIdTRk8@5FS200^3`c&Lbw!I(Q4%giX?>pV(qI)2d1z zcP}>{oj)y|1Oh?O-XOWF_0eqU9NuzBNXVNr!Rh}m9zW>+hsS5!=7IPlu;7kES|mtt z4FlyMpQjK&0?NJHx_5t7&F1vgt|NdjGRo}V!_vC6N@BXt zC~K%2#rQ3bFeGTvc%bY41!so^TMtHdkqdgVA0BQtDyC&R*RUUXoKJ)Du%`HTv}v-g zjx5HKX3WELcXJXo^j=5bufKpdQF&%-zt&ZEo_{Ebhf`_ln)27j98_%mDSE{;nhR2` zS9nsbNFy+cq54mVRZlrEtl5kd3tD6Z)AYO|f@T83n7HKvjC8h4##i1(`kzePJ@hFz zP*h}|z^_7zB6ZiBdvD*U#3(&aUm=xAUpM0k5|jxgev_5fc%?|7e=ILPp}Kv5$>0|$ znhlp#sDAbi1v5QdQ8ws}1q}5>{RQbjfFes1EOxEk6 z$%NxA;{8I}?;Mj?z&l|qQ+lT`neg$7l|Y%JCCwv*;JLezh;^lYST7kp#*FIX3Ejo9 zc&Q2kgi|(|&P$wG5*(3a{v6)-hI70ZOU|Pt4b2-&1JKyfvP>)X<(Zr!ahe0f z{;-;cg(7#3`?uMo|4p&Ca1Bb9sm6x0)!l5}K}EwN(B@C%CW_D%Zi$6u_4$F(Zn$P0 z(9nud&|jeSy1{k_J{#FZrJp4MzbULfe3`Ub6Q5Mk?LKdkh#@41lg{PX=`JeOv}Nie zCY0)M3_^Bk)PDZ~I()JeyV&j#7JWzaFNkv%MjQ7P1IQ z+GY}vR`$QB{FBuGGnN1P|4ijCrZohC@H5tQ#pae4{?DHbYX#C()O>Qq27t%U_Y2?_ z!XY{d^#wn*@1Q{^M}XyjKfiQ)4d2f#1k6bOi$4Q(4{PSwf7WT=|NZ?AyOQa==8Zq& zV&ds-GGIPXwPMWD`YV= zHTIeVXZZ`a6BWCgvh(xoXDov|g%OD>!VN}gst+h@%-npysaOT|O-7sN958>8xeqHP zmkI5ai|%mE`6Vl$fz_#j83bA>`Kb6|xp7*fR zVujK$=q7i|1M90x9_QA%baeG=si??gxQ_sZXb0udTT? zS~xYugRlb3H)fo*|LBT3}0Hd#umq z<+df^OwsnZqw?%|s$wdo4)5jt=N?C3v)EHLTb(Il!h1as8YwAkmzHU5IkQRD zYU3{Ga1Clys`-e5h@^<;vQ!gR8v31qfV}*Lul?rrGEZ`Y!Crdze#Vb(VK(KVYkdbz zkIpe-y2`f-7yEi|t#O3bg1Z<9*x*R&)I{h+FvJ<#T?w_L%K|(n&-mnsRmJ4F$zQfI`qdB_Vg#>wZp7PM4*2GUszpQU7xj z+~MuOmIJD|FTSEbL9D6h;q?iV*%J-CwV>e4ex;4PKD^ zX#Z^)7(EeGqzLHl4kAa*$+xbJN?%CU9~ue1G5k`@)tqQS6*_L=5u;7EwHH%Xocjs)61UqgoY z<>;Gn7qmNbvA!OB_pEDgTMKMC)DoL18I7p%Byr1fk3&z`n?G=U!E78qaEo=Q*2K-K zr^--&A727P8VQ>xcQoUru3_nbb|p~+Tq%2_<>&n*>vR4mpS^@h=0B+8GR@@LB@tE3 z4&>bme$HGB7RU;u!Poud`@)vXEcvl&KK%4Okt*!F&vK=7?bkepLHfKW$sCp8!;&Gt z4`zR*od$U|ymbFInk~m7?2Z5KN!!WUR5#TMOETBXWCW@m0VNNF;VtC!4Qn~FS(JL? zM~HC_K)?pB4KldwW{3aqKbYIpMhTeXXY}D(RaYjK6sbBB@8wH``Ld}B9V&7xq<;S~ zfelK2x%zI7KoPw{hH1c>{T3paIM(gW$iiXJoQ&FOv9if7(?Ght6pt{(I6?zc`&`9P zYVagd38}pT&xZoT0}-YVuk9)^d<_09ZJg@kg5c=^_NOk-3bW31@R0;(0C*|`BN93|8l{}UX;GPXn_9(7tPS6oDVxrNj&k?~LrzfaW7iiC z3Wzy2=7tx%GwmCc*sq_OntG^Ppa;u}sy@vtfKTG;29+C`L1yfTg$Q-yn*kD(O#`_w zqYvKgNubf#-6a(h#6Tcj?~2|wafGl)BL9f1-xlY=)-*&Hds`)jx*$6tza~HG3!Ku1f(q% z`%H+Wny|jOXV%;w;ngza84UOCwUR{+D+#wJg=-76)V(~k0$Tz{akXxNC;i6sZw!qm zLL~zNM@)_rVfx9~o?^OMaSptVCW9-TTa>Wp5oTak4QpAy+++js%bKEgvWsg!@|^0z z#0R+IJldzQN#i^XpV}beCL0TUv9Mb@Lj`0vAZ)as-_s+h=v^qbHfcm98UG`!qr68I8X6yY$yiey-w_$QLL&2MWQ{B>7-MYq=3v&R|h<48W1yu zL2d72%s42fMUce?YxejZWfOxj?3JQHhGILFzbDgs?jkZ_cO))WtBF0h_#)%AY`=Uo z;vPk~7I9TV#7OJE#A}*Pf^DXi(j{6_dYChcUY@>{ugjBf)g2Z|3n|&Ln<=9Ab-ZLooDr&0z^^A$ps7{l>#933| z6^to+jXRHMs)q7jc*g2UZ90`e1DRPD`T`pO)UtQoyMxMA9S4Mo1N0^dCFKqnM$kfS zwEx1?0rc_)3h3sWH|aY)bRNzxZo*lKcVWrv+=@ zUQOhP*R^E>`D*Rs$EMe7KOuK6z+4`afJ;qLh_5iOf+GSgt=6t3a5P)K_zQInz$3GK zy`3rk3p#P55MBpj%~8HP?OFNP0YP}H-yb|ub9?M-k?i;JvVkPkK0OBWc@>r ziklZnRoG@UA(p1e7|GllQ(yAM>HMklr)Hk)5-kt(7O&R6(PRdIase0 z*^-y|BY+6eUaF5W{fEQP*s((h+CyNh!7XN;+%DqR^}2i>vi&A(oCrim}b+dYFc zT061-QX%$n6)upy&hJbwHt=9l+frPbqxSb8->^JD>j+v#T-w46Ig7kuuR#*0QS3SJ zBr-j?x+?~*1J80{qYojk!e!YmgOb+5muv3tUt#xMM`;tYT1=OC$?)qHOu zKUvSY@8C)bRAtI|PV1uWo^N^6RLTF*Hh3Sr(;;y4!We63k)^OpeviD6md091kU-pa zF4`GnBHl#v(8r9*BVsdw+www;$uDMuWT&%J`KQ0>BBq}%Eh{zQjcLV$TvzRytP+kv z5GrEYgh#X4YiFyDpzY*7?oD=}E|eVeaq&d`*n{r9`UbSI&LY*{1wq|(aI~NPyY3R# z;c8@!h5)d&wOs$X>hD&s-9fYan7=3U8JO~;LNO?009-vOC zRaU?Gb2xti#uZaA*a&EsKU3(*2Jp-Ph#U)nr#qm0Za|UB#yf9xoMndEV*g=1nmdnN zAQZhSzYv71hh~fbPupzJ?#%`*ENBYJqW8PwX#4S@>v0e||3MSIA0%%`0IXGUmbcNg z6MOq_Zco$QoZx49`T4MESwjW4>1ruH0>5SEWfVvz6 zSj%ygm#0qv&7xyIgWe;SfJN^V0(F2#a0h=7>fO0^JzQxxquVy?NhIUE28iJA(L^4A zhRrYL1E`n(p$x!S@*Ki`2!PU9^`Q#xzt{f1T>Hx+haIMtcUMQ`AO3DYUzgX{9@DA< z5D7s**DWR{hW8IUxMr*sfiVE!9%q9er{kVBe>?(1F@Bq4lRin%EY*zVcG#}KH{7gdW$Pb--2@C&$GxFi<~+6a1QbO zk{@#V%mWs=KWiFOXMb3TTPKzNRn%%@U91xE3i^8ti}?MF^rB<=sm90`rClT3K1`%d za*4fG^bmR&92bM?WMfZEZK+^?kIX~`|5bU{D0b!Lu2X^4*c`>;_apmi;=k$9cBHvU zBW5-hrc4$Z1PC&htZ6X0$+AQCyI9mXd3rmic_GoZ&jvCiye@&FhnmA@miis3Y0+D(8lrN4x;{yqmOn_tG=G$vt(&M- zonah&OJ&t|r%f$;+%NXMV(D(ys`}X zrTefzQefkecA3ntUnMtHc3d@zdrxfCHKyxyzH}yQCtVaB!Xjrqbnd;E0w~vdv2mi@ z!hfDI>V1fzh85oN*%w|I1r#}$024p-HT|*+CMSk!w) zQ~oUR>;0<%Yk`@VT`~x8hmZbcpVA-D1A5QL(%yiz;|{*m{O-Y|(~(9{#A>iL&GnhO z;6{jp*avZt#(Gx!>AmxSHKY@OhKAEG1y*(gMje6w|AB`R&jN}x-#kKp1Ed_P)a{9~ z1(3JVLD7XdX_LkL=BfG3u)gm4r7*bNlb10db)Bx?d0jqu#{B8jg(xYK@#tld0= z0xo(7A>1{8XAvNOfL$wRzc#Gw?44y19}kI$*%ly$SnH+zZS9pp2G@M!0cPTshy-<^ zIW?)25RRpl-|fUlCPAfd+oGi65y!K%Z1o&RGkB`^y32w+f6nUlI}->id2g zG&E93>r9G~j1uU4HCOWMQL`&d{7IbpEpS&Bbs0G_J(yc$`^h27p9zGf>G)Tc3O_Pt zwYEE9#a}|R>eQCVG3y!7Xrz1`X{ngoWN@w+)@X|U;RBGZ; zj)=l7($f9&UU9g2hmIO29uWoUymfy#A`!r2y|T*E@sYS!;W z2@KgtLzI$!U>(3B+R<~l{;327|0~8V~m-TM%r|oqSn>@#f59_my!NDDKIugAdd_le(x0* zz4iwz7QVDdzL{(N`X#r!JBB12^`l_bqAgVO4|+_D2tjSFUqURmN-%0p^xamhF37S- z@ok3Ob6Gzs<0?6{*%$R;IQOCJ5lQzS)xN3npKyrw4j&#*vpVK0m+1)TVimnV?E_>0 z%<3yn!c)@jUL!xRS_zBCpc0i9Mm6Vaf+^b-wj0o_G+;2Ia+l2(|=buOKuE6#OqF zvLu$|mNWCb)mBz--VAW=mE=qngdJBM4{!YHxHemR?v!P!yHZ?Mj$koveC;(WtG%1q zId5inWIA4dyxaO(`xDZ10UrQ^EDXI+k)P=-<3~ULXEIoU4_BAFL&Gl3+X;G_ItFP3 zNt|p*{Fmw(o@0PGB9oH zYIC@`e$7C?8G2zx=;bUuCU2}@FMF|OYw;%xmRcK2Woad~@>=ADGBLVRgmopUY~LRN zbmSE?@mwplG3m-Geu~YI_$leRYz>SGj-1B2#x4y_V;B4e5(5;5NmClvE>{W&V1LeG$R!^5=P9LD5SxcgMOjzX9X3Y)?E_|T z6VY#Gy)(}(NPz-n#C$!rtk|ULJ}~loTbthfkE8c$5uPlQVgWPQT~K9ItEV{$jqO7| z0i9D>zycSYDtTLIC+yjKn%QuAOc_^o@*zID5&JTnbM6@~(zS-xbgnK$4qC}<*?gi550XA?(0qkl6*y*a>JR16XrO5CCp zh*lck*~yi01fJ?p9q{s^`%>LncsTZTxmO+XX+wr*9;!xuLTH)h#1NEx1nqT`l^+5R^2XgM}Bdf$M@Jl1WbRjJED-jh~3S$q^t8uyB| zfFIpRH!*c#ALW*5M$B12#~nM7I(@Zb9PYUK@l2;wa{7!DQ__bGD_e#bHw{fY)8k!J z``*s%0*p}DrNGm$ymC&ve<&!sc#=Y-CY;ybe!zf8ckqDsB-zD^>_A8t2NUD{O7^j& z84g1Bb4eveUEW~VpH`{VUjr$!$}MGPeA5Z=w3Sry_r|?^c(z%#kkRYG%$?kH11E|4 zGaqSd*39w^?xyc6n+F#WLIVPNsix{H=RuQK?g5*gV|ML>M-I5@en08!Dlqr2;QK;C znCCxzpCvuM2xAO!TK5Y$ujGSm8U`|sW#M7$%|#c6WJ)zD@keV_a&f#tb*q#yDJ|bU zcO^r8>oW3-G>YfoB&_^>$B5jQva9$ns#wjI*l(2Sa4#~D9*D^kNVDxMqJ_L?^zasR zE3EV(b}oz7U(@f*|IGUw;qSUoMclpODwyYr$$29ku?$$++l>sFr=(h#->^grE3$ML z2TYS44SdEO7LMn2M|n3|xlf@}2uICHCxgm4UxwR&(e=DJ)|+Wry2lHSZg;1|kz=6- zr#SPg$odw{rK4(>;kL-}Q$97fj4I!=_IBw{WrS^9Vgz4Ak^^O|5Unw0pT_L?aD0rz zvWbs-Dw?61)J=&>zqzwa=aqIUTd%T$e4=Yd{OJ`M>;>5!!Ip?w2{jLM0H(UQk}S$C zjz}bnu`e3}wKII6b2!h@^A}NGMpga%NIj7*aEMmVzUPU(&Yd2fo?gp+^bRDdC{C1X z)*PJJGeyhM1YD8{Xls1Mv%3R?KGoHq_9*W2eWP-Hqm_<>9z^mIU{w28vwG@%o}$mu1_ zboODOcGVPjr>W+%#`e)Ly588~UO%FD*IQ(gc-HV1$1%1-8FI8TFR+baJE|(0E7&7p zIDZhqBq>~+!KgLvuMhqJFQQj6mV)gR=HX&B{Pj?VPfC$Nr`A2*W!e$1|B@Bn0JUD$ zMy{NBVD{e5D*VLHg!TAilGcJ@A#anXe1$zYsao6=WOIUp`o1;mk^@HKr3zF3pA;q1(<{liBm( zBN#W$oD9>1*rlhg9J#wBT9m7GaCGE^ELaG>R4}}DV^9*3bIPjxpjR6OK4k>u3j`>t z@FD^NgF?HR(lqf@NlI>DB7BSdQ@QgIL^le^le-~qyh(*>aH-r={J7gv>C)9a zjbJZbmqKh*3sOSd$TW=OtAD=m7^akZxO}}mg4XSHT78i(3*MX#8%6Z7Q*Q^_2t{vA zw}dH)(we~qT4)JZ49R%2#9}PIShNpVeDgG<-<6+n&waThso)gffGcMAuqB&L386Y~ zfXID1qyfeGRZXytuX}2XQ0R7}0KAH$nXzd3YHf(1p8`jAIqr~=G=1IOSohrdOOb7Z zgH<#KO-4gawBP9}A>U+Br?DGMBBu)ttUbIF(sRGvMXVA#B*P;HKcKp;Kc|J+&E8`a z(*DRgXd5d~w5;0a(QP-}Yp9hVA#xcBIka?;6aQ73(=pwV(IknTB&t(_SBuMgaJTn8 zU3rmaQdCqBOI7L&-7Rd7ajGK9B6q?I%d(#H|%DdFkutT2WR`SI42f??CjOFXd` z+VGwy8^1&5Usy>yi$gj;=!)gtt_hyhnitIPw2A#}#PieH<=eF{(Cizih}kL0wPWTF zHcvS;g=QvOSiqvjb3*D7Zs90 z_DJ~KEA1Rtf^viJ;8cCYc$SWM1*Fa!0POt>N^bjil3bF)Lk88?S-xm=ZW$QJp2L>A$ zen)-_18q9uafX8<=mm&_KC?@O+m<0(v>Avj}64WG|ps)iIfR`<+fKdOp57Er2aE8))o`2 ziy?jLaqwqSueDx$0U5Wj@DkxvsddFqW!iMJ^SST*0&(3Wcv6XxlWh^$a3mF84o(@pOkZnY4#BC(R0hA% zcA*;OFZ+Pydyl`Il4q2C`7{7#xS;ZwzU^u(aW2W;Xu;{e9<`90brOPg_b~Aa8Rpe^(X5?p` zSPfk17s7p>S+DlW7IUd(=0@cf9~+B5@0`X>MUcXhP;yvM<)7%y%QEOP_uu|!Bglxm07A7Qpuifa*$e?Dw;;JO6k26|w=_>oMt1l& z&F=$|KoxuaCesE!HyHm&g4cva6W!-#+ul}q;_Tt< z7%}Vw$ygpSkIvS%q>Mfgfa?00E zSL02bxAN~Dij$i;LG!G$6{5=0rlH~yl1Os(mRIVvCx791F--|7ddmf~_`!!o>+Aa z_gt-FAvK8}7cdWXUBQAy!^pwzym|Ev!56()Q47M0*96#7?9U;!qP}vco z3njs;r^BCln=ZYL(1eo@_&hV6LCABV_5muCn!X)7S;_};m)B&0v$)qeG^ zo9K|IgO6pAr~XqoeP07T#Nv`l6K|W`tB~c0=j$R?$QZgWNy-nuZ4L82F{PLs_6&yG ze=74$iU#lW4k?(L?ccU=OZL_644O0J0(IaT`tO+}GIYEJiP1v3`P&Q&?H$%4{FWkF zepnB`t>jRXCfeuuvX<%!*a(2w<0h2@}0L?0(o2?AU;1$Rqsumf1++|6KqdMc!!8)!^ab zUH;yzbTA|Yy4%ReB&0t)JUs6%^PihG{U%-q0%F9WS5uE9l&f91oyAXKcIB^_qzpA; z3U=8%Jr{pfMLff>aJ>71>%y@xM`M|B{6@e7Ej&tF=0Kv*WckB7vT0V~%<#G)a~`O4 z&1}*m?ZY-Mk9)P@5EKb8R1ZJ2zH&(}V`p<76T301ad}bLRRDjr==&Te7k;T|rTf|M z)z=uw$hl5DIQM-PIZTRh)~87yh%m`{pMvxDmNHR_ioq*LKP|U# z#87Nn=GAPvtF8(zdZz_UY|xcraKswfRAq&TYxBY6&4ABFt)_kwT|*JEh1c{aQ!gc{NdIM$s@Gt=a*na+@D} zNh~c+>F+=+PH)?;XuQf)^+?TNhE0XppR5Mv7n5(ZeffD$kVZ(&BZ*DVGw0ag1AWu9 zSoU61w%G349af!+4n13WQPZLW`yN@S^H`oeXVs!)a#y{BYxoT9+>sEte=v3BCC{DWJOG5_%#!clHfQbC15I>*MNp{0klt&86-`G|at zFO=H)MeNjZsuyJ%v2|FmuSpE_Q`WU9ZF=2yD#zV1Z>=9dF9Ms_Q9Uc=`u`rho9hG9 z>D>^sQ3kd4_c(-XUfX3NjPAHBJtn@=dBoKB4hu()a`sx)_bHmyARVT2FYoO@@m$baShM8Xf&EyD^2Evw~p3 zcI6U6?9#roBt^XrbF5s)6?(8`LM;`$Cc$kKnYzEfQo@=M{>f-Q2s}SNGnBMaUQ@Gu z8&DG8HzVn#T2GTJL2e!SVbpiI*PD%;A;6Oly+xeW`9nwoEY@i>2z%X6rlD&)SPLl) zeCS{ZZ75B)*mi^O;GLTB78sgC1he$P6)jb{Hv2rWj21-qaXw_bR;_pgFoV+PNZwFmT{8lkdNgwidOvdqu-RF z+8y^=R(Z1CFwDE1sa1tUj?=>{@;bEw@lW!|D@A&8>84=T(pJtypGaaGr2Uj{^-+!{~i8$wJue zXhUmafSM?XzTL+vu~undUXV62DY3#WOHz0xt+QlSqgGulLtavH!c=+J@8XmIK5^q+ zID1BKMbT>}%1XpZ@@5G~qFP&qK18A8M-&Hn(0PvAv!~e{RiRZhP1cenhU6W*KkT=} z=RI6;Hx(VvI1!6`=g6KTNk{a8l$DH zsSVz^)kgiEU2dUN$xSWp%2f0by@<52VO>>OCc%Mwa9EUDzb2g4hM9K%oy-(Nl}2sU zLl0zcsL%dWVY3G5I!=K_>zs*X{409)9OBhxG{+7QM;l$)f!M&yKYzIR8e1NR+{kx! zcJ>a9S5azpnBC?K?ST0e3`)KQyZD^$n*>;JD$v9mTzYU?ysGLSxJ4~uC_!|wY8!VI zz*^v^A>o!ntLMeULP??QTV<=Mc*TwCK<$aW=1d94F~xrlOY@jk7|Z)^ld4r8jM2$2yJq%Uq+s{G0!oLvpk@sn z)t-CvZG}ZfASUwFcz6R|)E~muG9_W_>7#Ed;Zj1pYp<7wr(r`V+mzXr;^15EFL#19j8Ili4Hq@W5+9xi093v;CbU5 z&Fow%S5r4Sf8pvHqo$ADJ7nzg;LSf~7QE)tN)d=ERvrg8j>x7RDsuHf7tR6_4R(03`TLaOa}_G-mstC1ddR_ zv5=X7pu$&;3-NtEhbkdNjUdCK-S~)^hYwp-NM<#)?l_U>t4U_)WiTe8o=)~PS8*O> zZ6&HoQz`NYq0eT`_EqwuZeIf{3+rDwdz|%1p`n)gMbgjMA%7P>-*{>t`d6#;S9AbL zk6`5_+HK+zdXsc{kR__~Defw`WZaJKa1zP&C=SM<9eP!0J)#e^r;7E_N> zLTNCGmXaBWv7rrFhtxTF^Kx=>zWd7NN_4on#l_)RAiDaIh0jYk*Q^@)AVa2Y))6Dk zx(*i@Ka@`aaR1o78=O#JFcd^Gwi9@E|G@}v0T^=PM9+WNe1s2#W5|31fAcOI%Fg{~ z2Z?q!{V2!%S1*!9KY$!jV5X+RMm_!bc=AY(Z_i-V zEk9BkRyD3o=Bq%T+g`7x)AF^+&$%j zLZ_6nK?quaexY!EaGMie!~vo}N703^cTev>{p!i?G@T3$@0ss=OA3}{N;D&lh~V!nq0nr=m^1eo6sWDr!P%2@fYI) zjc$kEn@HtALUgHMGANC@aPU$tkMf0W8Q17+PdTcL#5I||3Vh>JBx!aFi$e^V*>qB| z&q-qCzEf^F@Ds(i3*`o+>VG_9OLK z6y*Yxx&ij@Gbls{a%X|%)wK?i>^7_a9aIxfXg%cT=ac*Wiigs>k#`d3K>)NkNR`!O zB}_|AwXm{+pZ7`;S&S0b|~f$Pwg^X3_DpQek<2EW_Op5`ZV+!5ydbj8FNCK@f-M^sz{Ca-mXvV4v}yxKRanMg%s#ld-TR3H#rw&v&GB zikKX!+2vuG{TO_N)!g5GdD|6kS}Ub8tD8>SW={HMNo7~I2q(qnwigjNG8=gWKxCY} z*P@kvf>D*Ey(F5OJklnAf^z@96aReul(ALoC zNM)Mym&(kbGF+mspA&)CGdC{3vov%zk2gP?EqPVqNB^@U(QMNijr~?W;ipZTg06=dCyl9x(7FlNv;L2-eV>rUCg2^xQdQ zkJ4BwslhK8!DMC1DkIaiajn(a=Ph)nRZ`P9UgR0pqViLyXcoUhomD?n zm`imW`=oz$)_UbBtz@s4o&EJ$)Rc11g(##=bz86u$H72`U=@)5^kE+SBn|;NaGr$^ z+13LS?}jg5g2Xv^D7?)L2(@l1fk4v*VI9ao@gUK6BNVSE|bLr|&zb7g`2E3{B4 z(Z`$dUGR;k^W2UOJIuWoZJ;!I@OV&a49MEC-yf@mvTH!9YM&^G!}`~_`r+>ApHa)> zzq^O6-3z}EZ0LJN4?I9<5s36*!TAI7jDl?e)UYArQxt%S@$MpH&15m!d#jklD*v-Gz_+8k3yPd5*udow~ChGe89jbx1p93GeUgrHrkbm{c!UAsmg7D!V zLA5Uul%ezR`1p%KT=Dg5jx*m(5OMqY?fWwin3w4)aLogo+Yj4%$UQ?ru!BXHH^~SE zX!`+m+qc2tdH$cmhpevcNBlnpw=f{DK0vIvv$y`j{q}J5`uS%r3VbxyZlEaa0k+s7 zNbss`c8&|O>gm3L(C*vnW+OHzyt+)6fb|~u<+r}w9dAMUX6XF|c&&fqJyY{-S`7#V zzHI8WsV~Yx^$`nn4Qz1DaAExX5KZu>M27Zqe)NAWL{vQ^iHBYI~C5@fp~ zV8a_nr!R)Fm;U~&fF$+e$yjExY!(aE$6y6aIL zjft?ZG_@qhHZ`Xn*KBv6mxOGS(WH1X3Q#xs<+405kZ)usfUS2+)h3VnH zHvLDRyCYB?L*c2=?8&mSf5m4F)}s@0t=zs=r`n-G)ET4Y?7oI&)f7eUBR2V1lp^ZU zzjtHHB&cGrUqtV)7zB0LTiW`GrFxutef+POp2OwAllzg?~vo?0! z_4xkr8X|I}n7E^Xpc-*9e&_Yr*YEPjE5x99V_;eD*x{?*0E-y`I*f0?#`O(WTMcq# zA(voDk%uz}4-v3IH1yRX&~3^PR_D9qULO>p)dY0o?S+P-^va zSkqY`*1G^G>23|YGoC&^9>A!27rFCq)E_W2z|6|-VrOjGb6WKsxWfOZ%!hmJ+eh{v z1!#aLd&B&Y4A>0_#3sKgh=%V|aOn2D$oALpk0BqC9{1x$6PewGEM( zAkIj#=m1de{S>PT?UZda+Jp2khR_&2j z`>!0PW@T+dftdGeV`F1y&~pQG9ZJA!-~@zp2M|68ydn2k5T_3^F63=NTCHWU+d@#t zon7%qArB9acObvs@M@WsmexPB9{ex4%Ffq{gJ{85+;{W;W(LkletyN_PQw5v&Tay9 z0J%;+>jw({^MVtF`_>!^D#O{ZrU}i52n>(%V%76KLX1HBh05f~v553sR9>H-FsX*eKnKu!khxj(c0{e}}w1It83VY4}*8h z7LHO7eKNL8MSo(i?+Ng*IMLuAfT8g;d zy9&pNToek!Ly95}#NW`%s=YrJJCj1q(+ePHj*l`h9o16}%I&O~8v3N+EQB!UKW zRK>zBRD4#=J=PTPHbNf$#ca`t3U6>Eb2D#LVt*UWjIEOl;=%^;uN}rFI)|+8BK;q5 z?4jPJSLrIL0}95hBbIv3srpp>7pUr+q&s=y%hA|JPx@ZCIL7^Fn6=TSx>-ekxW(1Y4H< zj6Po2V9BuiDE&g^0_%cMxXM9;RsJ20AOqDIDJBM@>WJ+M`|#b%C3=_@yg|4jrWC0W zZ%wzIZ-q0yU0K*X=Y3R^TIEy6RXk248*TdA>_jkfG2VvLNc(uzK(dgGTkCGc7lOi1 zZQkzylr55R3*h&IDvEcTcwg7Sg!}AH8e}59fsh#Pz~*xS_Po{C zhr&k<)6iCs(isOuNw(8}Y`3zARQ(D9Z$U~OMDlQ&uR;QVaMb`MDnJ6_@LwDeywv!E zvDo6aRkv#x@rqlK3Y!Wyl2z%Q>$e-*II*h*S;d}|u6vuX@Ng(Ea1of7;2?4u6aX4< z6B|}l#l8y4euOumoPu6OHgqL}?qAoRyvF$EPg4LiEkG$KJS^-lXm#}gOVRB^`t_B8 z#P?ZfKZhoxEtgZuXyJWe(h3?6T+MAO~uLNoy9$CDk!5Py5?m0Wa zZ2t>{aH8ngNC2-S$RcLWQA*_i4G#7WjmRYsjrM#C^6?YZ)(EWn(n1Ym=pOt86n@{j zA@-cjxELpAO$7Bx2ttwpdnoWkoI_!?hk-cutaFb^+1CbpcxqC) zSPA>I4;s@n$#Cu#g2=9Lwtq6Oi3wE)jd@St19hNFile}cC|Q%d(3_Umx!SG-s0H-~ zBWQK>;Xu@}kD>8KzPo|gXBq|AeFAebo(uG&T-SK<7WN>?413$aIo zJT+gf+YYYp&RD7=M+c@q5Zi{I;gBas8Q@?VwxVFem8`^$fq?taPkPYl%_qfW9QLB6 zO-E_rSsejYfq&e^EMZbuy>Yewi^Q-j4FXlV1Q|}Hm*U|JNMWCONwq`z+9Q1SL(1r8 z-;EmJ$xwK8h2(K%whBukGNJiBF}7n?3Ec&wy${7FNEuQ!17sG)GL>SJWr0uhOqh|Z zRvwMwUlg@=P+5@CDs$G1*=P28zBe-zF}l7pzZhcuh+`;aY2@ECu;S8vaR#Ot^A*?# z?l&F6gBt0#(tMoO7>F}sFEuN+S}2oSTmCY`k^%>FY}?lZjIr)8Dt51_KHWKy<>-8R zqRX61UYm~O{W-#(CLnB!OU#U}1YE3CO-FL)h|fGzmtvIS@@L_aEjN6hO*cB+=AoG3 zA1j7Z1hQPYX`e}C`XfQk9D82U58ccAf2`w#2Gq@-sEMA*fC2_o0cXLNfCY3jbSOps z{&MnP*IncJ<;)B|uqx3(P+d?JJqMN~k^5@}rZdq`mB!7tk(77w}Qa}V@g0L!L;B5-`1y_;QJsz;(1dT5d zK1BkTJfi(agXHhf^V=wjjMNGKu6ba{z9IlUp8xKi$6nPJ0(MtKD5_{@%*g{+i?~kx z__mV;_>s4S!rt?g#0x!UDyC+JGea|Pi(5-ZomKO`YPCpxXWBfV9G0>?{D;*hsyI2c z>Cn~Fg0Tf@A8mE__i*2^rZnh@WW|;uiWz2IbXsJ!{uDDqfp;kqG1h6YV4qU%*Lc!K zWO{D>a_m3v^Bh9!$3JW%&yN?WTUhr)xAxBXpF+3#P;9M6$Wr7CdCBxr+X{eMj(=9Cw99P?pbQ}bfLF{Y^D7{+KQd%4BtX`XABF1REm&wnnutkGl9 zE)IApGA0i&CbE7&VUrRk`iSADo}$?!V%9STGcU8{w#{8Z-6fYd3sFO5X>x+Qo`JKL-tGB((n79m%95 zdaTBx5l_YUk51e;=79@wLM@S$PkH!0RuxMN;p!%_?%Y*!dd%AQ$2MOkfI78_OwATLESHGCK_-It6&CEKD-~Q|P#3$w;LK z2m;8jOk{co(zVASLV@}Hck{m|uvrpmFjUQ~x?H~FKIsCb5d<{I{q~5D*aVFN?*uLGmX< zl9Ht%VRBr&*+u&Nn_;G6xQY4s!C${NeTyF+{rlv;0zi)fQ!A(i7HX|gz*9eNr(lVv z`3fsX3=Rwk0=5Bk+}D)+@%UIf3}o}&Kb!;mGP4j5gOoVejrUTO0m%-rEeutGz*A2K zhOWn*TT2R@bt%i;S$ zA?^ZB7Gq=C3li%f_wq`aOpCjje1CyBvF?k4wT!e(?H*aG1FaGnV%`RdIPDxeCiE9iyfz#>-sh#FFl%o ztL7zb$?)POC8iu>3{NF44Nh_lp)O7BHlGX z!{MC0*IsMR-(;l@lO_2=gIe<$O!d&0h|0Q@=6@O6z7e4!!CND&;94luZw_I2`6J_H zI@=100w$ioyJ$z>j(mU=2ssUM5Btisq-McJ^rlRTmfR{Q z{^^rVGxO-xI$|260ok-<-h%$F^&B5{2aM#A7ewO?)0+q=dgaR+tA-3Eo{yBvNbY$@ zgxZF`LY29Cy26CC0!fAleCuqaYKllIKR@B4I7i;N5RbQWXBs_Lj#%Z^w`MoL5ma42 zBAp5$pr$7z8}4n`iJ|p4SzC5cqxIatft#a>@myyeU#-Ji4e~cPr&Xvkv!1^aGKoF! zWIZe^5SAH2qcT2178UA`pT{1Zu%_4v_#JcLO~^L(6~HrvC=MVbo$Kp>jaT&`95D%M zKq{5(GC|$J=UkYffM9I(aV8LKNR56s2Z)2e&(zVlD`meA{)%CrYyD&*rYmQ-48BEfT{rKG{Uc!6@mjQ%w$gV}(KY0rD za9BpriF$=JN?9lpEh2b_jhEuh8s;j40X@1d&InOrN^cx%LAF%9*Ft_BuHu{4D%e$|te1<0EOP z#r_HvhJ~a14MeIsREI|d7lOAf_yNyzBjTdV*#oWnU> zV6y2TDLH{%H>Rra!W(eBL@OZU4qLsKL~^}r6{Q-^)NrQ7@lJx7p>H_VtVGs1V&t7^ zfzcy{Ze^#d<;Ul`PdJHR3qVQ}xvJA0a=cPzW_ECUx$0 zYprCQqOrn$qvrE5JO9&}o!)blt|;o0$mKW@6aPUQ=AE3QHU7TZ%1Q(~T6V$SqMJ-n z$vv$EyVQWBCc5ET=&D2-F4&d?y9 z2Wa$LgAoikcZ1&A`y0XcLm7Ry4BLR6>~UO{kvwj*+GLCI-vJ!}N4f8BULU-axW;W- zWAE+lg`CP>-rf(}xsM{35M>zj?%tj|o9_wF`e8%c|Epao2&D_IO<*ksxN#tM0f+qm zCNsdoOb_7?z*-UO@0cM2I-AMLoc|r-!Epn0OQL0p`XN3EUUb+_b1&OnMOX*^uV24J znkt=_YrZDFNPYd2)IN6rDs#Zingm=?7Dh(KpAduvBKYB8US#zfK%L0QjNUU_F@O~A z0TU{-+jTHYGJ}Rt`GDEt3C2<$fWQPH3ILkmm)zxl?NYE-&p?9`2z-3qxiYGKxENR1sRnESaqmPao$dxJ3rh3bb8l54N^My{8zMw{y z;iZW0mSIb>)yN?!D?5KJlOG;F-f_s2hHosEjAL2TOfN(}dv8!6K zUh?kk--OrtABazY*+m7v-s%flN>mE1LscP%$Y$?hD1Br!=|X1yI;xxZ7pJgfO#K^5 z#7P~-kgu#GIu&&x54}Vl*J4$kawZ5JMw9|JRYB|3YP`79Jh|A`B(aEgA6r^iOF6!g z*S;=0fo-isrOEnJm8~Hj_HJ-KyHJm?)Y%BO8BFzz1GK8PA)Il%g}{b7JL%IURy!S2 z`-F@D*!>m}VUEyZ}dzflRF$1!n;nXnhdr%c}kRdW{S>fA`?qVZT3M$K*hSR>}|zbjs=?VlSDz>q?g~ zT5oFNj@roN7Z}>$tEHr1AghHWAKo+nGK(HJz%WFU(IJ7+EbBf5OW^cdE=8(OCDm%C z73GT}@u|qsL8RrpJUPAUpyBwgsHwTs!xPzcH1>@^6oKvTsb@ZHsN94-BfCz4x8pQQ zNkoI1dy~L_Wr?Bj!QJ^V_r0VK-e(?_q5Cf!{wJb7AKn$~;g=RJYFT^P>m-;8x8NQt zVk&bn`Xtu8lqR7@I_+8-vcijYNyRbZD%a&!6z1Pu(|GxOwe#2S`{o$L*y_5j7zplA1{T=m`eCg`wwOBqx` zeC{5A4cmw4eO6W>5b)?-!gb%wBQ(hTd-wWZIEdP!$HIxB9&&x=+rGG6tbRD`-s^fS>i!{j&G|moA2@ zPPHyHZvFW7H(09eKwEbc0La1m$l(zxjALMH@zkRwG|9^~-H!VBUVFSUm@9pCz&uE{ zH2N!QPZ0Vd?;Ef7{-&gh!E~Zj?`T+C?b=?*$ClMJ}J+lMokEMp1FJhY~DWky?q&)phG?4V`8@cF0&Ic03@Z zmmraeO#*Ri!xR^Jc3xJJ*K5oq{dUJ{s-gI4t=DI^2*z2(t3WYo;7u)~WPH@IL~0iq z|1FF1px0DJOtW%9B|GezO1@QrUmLC~@cHWC;iN3y5k_D6gb-&99CM|M_$554t&!8bxeWAWCX?2*3pfp*Yv zSy(w>07ZtV4RucHH3bO^+@{qA#+wYRu#=h#!Q}z98o3@KS)-Fj&{>|EW@h}TKNCP5 z5xMA_R~4N~?U`V~7}@^=Rfv&BMkf@jBG=Hlcg+J##IU6}z?6q&Gam zRfH>q@-6kUUG$Zzdrh6knsxMB57dd2;X&_y+O3l!3U@9eRTI%qQ;P&ZfDu&~=@P_i zYWZb#zt)R3n8e#YK16Mw{D5Y-R#MYFM2CzK78DBPtnAq*e#A;y)bx$z>zkO7FK*ik z$bCOe5a{U>*XD^j>Z({xqo6*)ZBIMtLVQj34)IWYPmGq0fWc^Fdx#4Y;58@Y%8D== zftmwikZ?XcfOAS<`_B2vZ@5IIvNw-gp7}Qvki>!A@2oBRDkU0PaKPZNa?csm1(QaJ zE?Zq`I;a{h5J%Xtr8($!Fk zbGY$3U6^cFG#M*%`@N1t4X&~RrhX$1gC@u<t*_gAM+9=S%+dgRW2fvx7|&HT=@aJTvt2 zs$v=QxkO%3+%n2!M)Y6Nk961p=zUm=X$QiO< z@qLmif#e|xM7Gi{GnRo1ZA?umcFNCej2hDcii>EX;tGy%$#$MkKX|?qW#IUt!_)TI z8+__D_?(URLj+-{NNT>ih5ZE9=asS^i*{{pCtocqOWIae*Ag3iwDSstD}?&3Uw310 zsIrt32bvO(*}NF2D+Bl_F9O!NT>}RESrtz`9${H0!dlEkT-r`&@?4`Drs9(6Dy1?` zdHS-H!K_2&4N?jYG;g08lpU=_r7A3WOE%*mAxif&8Qmae>mq-uqtrRa$nS@d3N`0M zzj^84VAs%|_9Hx(v6g2fi$&@env4G1OEHT`URx(hwdIqP zHz$uA#hDaI4#8m!75PusyzI<=V?C|siK|_ElwXpCo7tqJ@1pG^c4@GxW2~?K**pRs zKtzZSJ%9YC+TU>G-@BT+vmo3252u9tS-SXu5p&d*#4yL2J=st%xWk~1HcXk?fPq{K zt(sWh8lcl~xI$7Hu}u`6$CMteKIe4$J+RCtT&j6R5pgj(17?E@)cWUuf zA^~Mq|F`v5Cg&?gt`0OsfhrbdsR|s7bF~S=)!|7Z)7_4!zwn$~r+yX-G7fx3ig&>f zW?-R`V#^ai?AH5M!~mzrFHxYAW-NTB<8LcIgOL_hriQA5F;{PuGM8TYntFUdrjAe;GW0ArBa&e)vkkgpj+;1au2H?msOB+8EjL+xxRYX zR;d;Xw_b)FzZ;M;2(+J0?zKX3WBI_YP?Jr!0XNd0Zq)k@c9&Z8HuiL!?;u}RVSS<_ zA5TY#k0%u|Te@D5ONK}x4bz)AUGF_g)R+#4>-ENg2f7&;{_2)e#|DC0HZD7oeYCT{ zXY_El*eWDFe@;Zx8xF!hS-3cuVrCcK`1}Rbp+YXhgT&HT}zj} z5&QQo&rb(1QdQGBl;@N;^~Ri!=IxqGR&a76jmPy1F>w=1WhPnkCN2G-Y^2fErlZC2LT?^-SJDBrbkwoV|%&R(wC&hsb zgo}q(fx}+chY|XfZz;y{o_>SJiAOiF$8sgLUY$xMk3FEIZhQy#La;EMj1{ha>3;qd zZM!N{gKlZ<0b5BzrzwUaJO8EY8#mU<%m%$BdaB&pb5k&ge}e8h>eSGLrLmtb*ZyAm zpL71O((0?AZ;8*oj2VYYoQm7Sg4Td#uZoalcIB#PYchN{TexP2re*Om`WP$JLR_AvvTn<9L(;)~ z&OmW`$hT!n%tIjI_MFkRU4 zi-b&X4*dm8=ryzMgT!rEFeu+AdyTj0jFpxiRFoGmh4=VNphW0gw&7@^44yC=#XQW| zEivjY&CgP2(bNf&=6S%C4znJ@GoOTY66Dfpwthb=l#pM3Z}%;c&o!fey%lb;`ebcy zNn(6q zdzZ*DmyWKI>q^g>sBq65pL}@E`Aq^1UQ_goI)UzYee5^TltkXi$MZfOC&WODmoy&z zr^otxLEGv39L_MpSR5xl?$YndQTnA}-8c`pF>24Lnk`7E8MsMh+nmH)m=A1V^XCH2 zyhJ*RD%Dnaf)xk77PZ6hsun&@7-gt+~FpE-0U_aO$=LUNor-D>ilbxVWPWDbz&yn z*@lxyaecT^gOnAQe(Q|VYJ|mG9PgZFoEcHLucRx`i@{^)o#$N=9;!@BFapc*)#AR6 z8%0QJ6F}V1ie9JRXw-0St7s?IH$L)Bb3FS>vwqw}gLG#h8qCkFloH!x@g%1=wRoMU z!py*?Nc$Qgb2Oh&wqg?NgrlrdJQ00ivuM<5%%o=#C;T}3BR8*;D#Qf|w}~kF%p<=1 zB?D*7#Jhkm)@f6BYg^MLU;w+SR7bY^sBVAB**j7z&?jN^LSm$9nFDmmqkdu5=r=S{ zL?2g{_8I7`NLnZ0)=wE9l`c5qrAt57tJjH!!!B3Kx5E-UnG|Yx8vdg(0FP9^6GA|u zwN2Yp(htha{6ag$Vv$czNmXH*~uP0B`JFf`n4tYq^#7Ji^Q2n(T_4}92=#EIti1uf;e6> zy5Ds|EKgq6kj4Q|(>x9@^Wx&i$RF}4^*>E2t?wM$x~=ex8w_z)VtQ(mRhe5ZS>NH0 zh;Zmz<%D>daWC3^mb2>`f38r)8Yc#qCC(zzoRh@tO0(g9B7Q{Y^c$sM1EvNnYuo!r8M*TyTXqWzO4$RAwEk>YjJ$LDs*^0n zW^tsuQmt$qEAy-MAvnHjPQ|41%E>lzjwdV(dV0pkvRw`3j0$0k!lM}7_4oO~AMQfJ zSyg-FgEB9I8HnjkUSF2pYGp6nC$Gx)I6b1dFs2Ml@*gdozAJwnq@^TYVykFc&3s0k zgr#l#1-biw@G=G?+ZJFOjG`&CvF{rxO3U*dlrl&zgdq^|Ha8*Zl}1DtBh+?%-TgWj zX~8G>%m91%F*CNCuZML}8%{?lz;Lt+?&1v9)-eQ!L<@)EQ_BWD8P~Y1XmgfYt>S_U z?jq({kR9eTG&aVnfLAe9dTChxG$;Gl5}>J;dcxtMOV~3}+>g&l^IUaR$CJXe-9yfR zmtSh}ljRBCJR_?VADvft zg{OV_lm*DBiOx3nR)NjyF|nNI?!@vz}xh0N50 z>>GyRS_)XNf`#f=9BzV?qa&)R&Nag@*x$g)gKr{fx{Q(Ys9Vp>_{m5{97aqkL z<{C0CR{S~iyHteYE8?{uX8R*1kYlDFko1h$Zi-C|B+mHBgi@SJ#^O7p&Ul$;rZR9O zC-CW85?oyvVz#>ug*3L5xN7SD;M}-*;ClDs**aR3g(#h`pwE+KW!nD|t+|)gm-Tyw z$iNyTt+L^o)k$5{wcg`AvZBdS`FMzSiJRPtlj($c>_ukZrk23DoIj1pRX({p-8Jlq zB=2Z+-(PjpW_bM{)Ce+r#w;P-QOozO7ta%TEtNYWExb!qU+f2iQF>7csR#;%=ta>> zL%L5h$na|Br3vFL=w`C2jZde=(bm{QuYV%Nf2v-X#6cLSOvF5W*RRIxqD$34v!ySX ztLd`%3^5WR@e?789fycjg;I!Nm(tUT6GaYtjjuAiJIXPl^y{)hy{To;(>}bb9%6Qd zW11T3$R%`2e3%6)`wASUjpy^UDDi}O6D%$_RqwOR&x4%%ER1)beKzrRgB{g|6G4kO znN3Sht^jxX3l-|+mf!1nR1fy2QoR8j()|Po>Rmc{w8v@bIAg!0Nc!*^OLR-B_jw}v zzP*F>jj6#0zJ*6L#`CU;QBpdc{6P)$W1Xf!{ro2+{wdbfFx^6Oh8WT`IF8)=H&4$T z>g3%VC<`+OK5$FFc=BuOl_1Byk&LC&&S5}OP>T8Ti3ZxUxUY&b80=nf*c&O~YUJxm zOyz=ER?~d(cOiM%Btuks3{`_4cqw#eE9TyMw+{_#NlPZNE>OR!3MeyLzBd6TpFg7v z`T<w;6@4Dk;Qk=eX$U=CbRNmWh z3Ge(w&yIAT&B=bSMSdw8w=I(NyF*06kZ0MyDXR90Xh)PbXLTYGFyiHMNu+8_75M~r z$}E>1wcJBo(|{RPB!HVO>M60Xb0v)5)=+vE;(c@CV}}rlMb7F&m?i43+RN0F@^v0BWpO%{c@eqS2jHQOL;R*LT z{QC~GQUVZennrzo(c3`ZfI$C((2Ie=R+Ek@irvbhd(c#+Tv`F1Fz>fRa7LiCJ8gn< zm04|Ro1oujONMG``Lm5^>kbLT?sDJ`S2w8YnR7z7!}6Z04E!=-WGV6Gz1gWW9P2nc zZqaIHQ;M;l4D!1I3**f3W`vG-^ri%dB~g_0XdP4v?`je6*5C%K=d0I9Bjrk&6dc7V zbDrDRtc$f@ngYjyyU5gaQQWjyKet~ayo}|1*_!?83hs7*Q>7+z?v65xF6!Y=y<_3&pf+@=k}^j?^o4SEX42!9oW3I$Lfx$2E^$bT;VIK_)nUHod>Jf z4bm$zKfw0bbMFUIf885cN+TF^9}9RE8t!s3NwZWP&`Ne@C@o?%cn*mD2YZ=ZW|S;q zC9^GE7{(8Ip*Pj<#9*b&66VwShYzduUAdjzA#yma;c{~eo;y4Kb=n+TvDz?*8klbS z_4h4G4-cYRTyZs?(sMH=-GorCM9}f>pFTy8EFFnQzF$5XL~1MUvFP2z|CA~65-ul< zxQsy8Q<7Za0n>%Arzz}RQH8rQ8_ttrP8q2YV`YWPI8qjR-HIR<cVF~(au`h@OeX=o(yNz{=z)dl2NlX7AHqH`aD~bQ@MqNls+Tmsa1O^ zrIbb2l`WxN zu?XQ^w4rNKLV5HW>t~GHy8d}vcq`2(Lz=;FLDL5%B{maxfy!Uxqtk87kZD3>nI+O4d zzR#sux$AAG1FO7kCz2kKE~z8p``7Lp_UkTRh!m!%wgh)ewpzPx#$ButXx(dA8E)E-Mde~#Iv%7Z|b8j<7 zu+4w?eR6(0QfuNUC0#{6?KRaB&9ArqF?&yL&*F4vXk{g%6UPJ&EjPUlEv=1z+@-i1 zY+tWlj_1zz4*l>&7j2M9YHDl6aB>OU#?d`T&UsGM$T#VNv{wVG_Fi)AeImmsaC7qt zE$w%}h^fB?Xfv!Mwh^%;I#eM|HMlzXeoF76>Sj7H7i2E)&g)ki>vtvVXnsE!<^S%r zoq2Vvmh64+I@rsPe|}}ljvrCEfBVmwm!vQ;<=ulD|2l0khZlM@VEM9{?3_Pf!*1wv z3@Mapfsxl5EaI>W-S%&1a~J|-dgL|?MP{!_hUmeQt??+lpGyG8vrYY(kE<2Oq@az# zqrCd|1aDVy)^5xs4c72WrP<0#!R=-v+GjRkK%`nm?SG5&UZ^<7u^uytW0#Xv)c7D9 zb-K-7?R=^7bx)Doyou=~b3kZ+yi@K{5v9AabeOGDb^<-seT#5?>@36z-b5KW6pd6~ zuRJTt&anA|$MvQO?srra{!81W1@oy74>P@3WaTkSd zN*3EokHik{(0(}a_stPjq9|oYnF_WM^BqR59m^U!=P}ArtwAZN*zrciOL5qT&j=B)b2H^d28x7G=xqlWEkHZF5s2dUPT_IS_` zG28}? zfI0m->upxmXW8y-yWbQ9uxdWK|2(ReUMR+*F9AzLL--<*(4R8UR(tHhpg}#At)e|a z#T^j{`Ft1R8tbsXNt&D9wnq1D9*hjGgeL95c%uRw)yAiX3GAv?E5Y6L#h|+ zsvi$K+SAHN=Jt5QFX1;*ggoRH8m*JU<2je&yIOWxIKGr_3%2*mFl9_NyaKzKYfG({ zOD$1tHLsD;hu3e6TsIBGoraX^07W6`Gi_jmzeM{KKhyx#xd%wwE@Ck)TC+TT>Wky$ z(>GNr1=t*;tk|L+x`1XN2!^5e&Kt$L47*TS^zZdv2nOeuwEDOEO_xwi$$!9s)DMRi z1OGi#k1k34RxwiJg+yG@&M3<#>!QIKzKkE%?n0Kz0*_&ao5)mgreDqai(rWElTJyq zmoIS6J5#GH#VA1oR5likV<*ODK6Pofr+S60$q0<6*p%Qe=6#P$kv*RuVTt-E1Lq}G;=uD?S@U5dQD&eo5 z6XZ#V)d#ice9uhOEZz9VU0d9<*)uymgGzJHO13`}ok|ns=$;K$q$aDD>~pLz zY#`>Be)mM~B}0Quvq7EZ7nRCZx;%u0#ieypqXtXstcdz4Q9{jo_i87+H&wDWTTgFa z7}ff}k`%!Fjg{3ACz$o5Uj-dqn5a^`8ms2B5;6#+a*QiFU|d&7e(L<(fF&(65q2PM zsAFwVmCBF15KUlIwxRS3?Mw`@8gI3@g5(s-G3MlVH&4T>ri4MArGitizzWT)=>mrxf_Z zYQ3aOL-(`|CznREHSw+|Jl;#JC;2o3CxP(9rJ(kwbC;oWz<`88kMk178$xwT5e7J5 z8h$Q=dj0U*?3p_10Pw|aA@a0I`cRyWF94r%2S~mW{+9RxHFAgo2(?W-r}_DEZt{1b zyc?OQt#`$9y|ygaY9D~BuUxP<8VFo1NJeA&E}_H>C`tnJ=~H~{NJtk0B6Ai}Bn{%A zx_-1Riy~4)6m12`d%-ZVzitY#EzUq4Pn+$QzzdlEQqE{2Q^2O>x>SV`Js5olB*_z-hqVNX=LL|%aVA@W3H zt%>q`WbBFM3Qu=b8;2K4a)3{RMu@LL+_aajj4+cIS|Mf8vd6eS@qH-6)8nDrc~mt1 zJgM4M3_ae4I_~Nokuv(QIQ^`z+}eSMK-mgMfFW#^Jx7}0M4k~NH<)Yi4LN|CWc5z0 z!hQp-=0%as>|=7<^(}U-hDK!^GQ)7RJj$%D=SMoh^5NzwxX5K?U_;T#nYnnD5GGY6 zAvYASv0|1-iN88Q(1BGD%-{N%u&Ciu)n!!m&B^t&=}PzWZ#HsC5pXQuPeL*?bMHfz zLgbqtJ1jMvyHqk34StdPCE{87f7-sKHJ>-ykg>OTPI4)QM7!oU+D&FBFn`ylYt|3} zIxFdmy{Xl0BC`QTruHKa)Jd{uLLBFG>n<~2{H6grx!nI^e_t(Z8J>i~#G*($FXFGX zWYL*&o8hMuz`$6NB^ZOXq5thNTOs*g>xF>DZ!fI>nebwLPv^ryYVjL-i{v3N1b|}R~;l*gi(1A2sa$z?Rmbn`gEwV&RDg9e@Sg|?Z@THE3zccU)d**naqpC zt{QD~Th$Y-U>+drPrCaiv|)|5P;hyIp;fJ-CJ#Vdh5Y!{P1W#e7*xlss}^nMcT(r5 z#ypLQ0tV_>ai8fJkoH>3#G6OGJl)kpTCRv=2Bh-9`xY ze_nP1-xA5QXXdw_P@+Q@@Pay$-e||kmq>#I7RXs8bdYJScbf$PRc>!@zXRu18syky ztM5skeEu;PxXT_CscHxRTW#&@Msb(&IwHbd71`;62rOzpgA=>&`}WtTTFbq8r<)_T zX_2KUFcemuT-rKLT{eQYi$8^)8(BBB79^-Jov6cH5!3_qg{P8_s z6++9!E&;!K0G1y8wnVzn^RPq3Hz&!;K>ipeCsiJ0aI$&z;;wjDi!NOczF^;Bc|&{b zX{65QK4-szJXL%zqcHJU`R=!`%V^b%bUrNsq6!}_DrmKd4jH;=|C};s(m7!$2;N#F zvVvs}Z@FUNtG8*oRGoB|Wn zRD$k80?R9Ax-~j#;(SFu>^pAIY?PPZG{&R3h!)L%C}dbLwXSC>Q z5{n4+yt!0MB)KJhZP>;fPPv2e#>$H+-R!X#{p!m+g3%hMcV7H=hg}?uQTG$Zd_FkE z5^l5y+|n>BxqIROKglekofT1Y8IvqKfuele#=`x3s>>-3B9EpC&(s{xza~%lx&ztr z+*)I93zbMFk6eUXaWEb~z-Nmdk{Zwj(2pSJASXoEmU?+mZIh2017A_L6J2BWYh0c| zf>x~n(}00>|4^l{1$vJK2}E)2?Ytjn$Lgn8lYeY@G4pI{_EVi`#( z&qZPb^1I&t-g|a${tpOzKLMk&ybuLr&h#}%5f8maVC#Aly*DQL*Bu1~MF<#oR@+?3 zWl$mXfF}^_;(^RG@GSoXPjKtersTheS--Cs<_ba-cEC0bF;{e0Z^#fJH6oA@Fhhd6 zXxR`b^ZW5C&I?LP?4Nyi#|s5?7Z?JqA~_`ZDO|3@0rf|Rh1?jBI8wsZ`!7}F$o%~G z^gCn&qyYIwVKOuj2O(1Ow`DH!tP>3qWEq6ajv(d>$`>>LbE5A8{6kRSpab6ohS_%n zD3A9aFSMD=`Y$(kfZS3NDk?_2=%cI4>v^yWPy6Vn>-J3%z#m|0J-%6tbm_jUWuGYC}ijqVwI|NoDY=-!%4 zQwj%$`~(Ab`SHLGoPb*QvG6i!IsK+SsH9oP+IiuVXg0 zVyzTKJnQ9(0OF&AjrgoJhPdZ~&PpW%CHF2tIg{e0s?;j{!afSt*ibUI*;*md%&#fM zq1w6Li>O`+JFb)wB7T+U=sK`T6jZJkEO@n~09=qSEc6c!SH?nA4xvsOR`jT0ENs#q z3r=UGOMcmQ-2n+`uV>swnj$Lo-2L1rhU>5%ahg8zSui2*%HMKM4cmO?6rk zo`*YT@V*}(n}C|H?fX?9b{sbkd;6qTGU`S;&azL9LL3PWvf|a{Q>5{qr)=!po-em^ z(!?)Q$)kQZ85eof@c7D9h)$(Zzk)U*qp&7}O78PW5Ew0F9WGMxK-SysV#d%kfwA0t zk}8|$z$Q0!r?7sKWr|7f=8Zg~_rM&X@-Ov0cnoEel7FV-iIL=jjyx$ z`Ert!q2XZw(XJLs+rgsmc3$_B8g=B0fQ3NWv$SJVlXnmM{|~*ul;?%Fx3>o+&;+5U z&x+lss0n>VdI#PQE`I)zjqN)D&aNX`5PA0I9|@!r21^@ANe!55tcOC3flL@1Sh%4; zV`#x>vYjLXVT(XqcnBpKTR(dwG5>p=k(Hl+0FkAjt8L@eO@jNMA1e^M3e>+V?0#4) zraqM5+G<+q1jw1?nzde~!}6S0yMXwxpEdioyg&gcFmGyK2ga@dN(KP7(b40f4Sr42 zt^Wha8xR3*<5hQD^Na|Fc00kJmG^&$p+y*Y9qplo`V(N^TrhpZs6U66=Yqet6%W9` zHEo+=I-0Y6%Lpy9AaQmEB;NhEO2`qL4g<&fi+{YvZ7yHQcYdNkBsu^YHu3!${`>vE zoqs@Yy$SyxjAlvS98$4QLC}oL_x}PQ7dd{MyfDa3|FicN06o7&kiYt}YMsD9fUa4; zA`DO;oo7vxU{T!!BFOL{CxkWgY=06-1WSznZm_SfduV$a`x#UP$u$=6^eNEainoDPDVaX=93HZmp# z+-{I=bO79hnW9M6*fFREgZ%9f!5iTV^!dP|eh5^mJWz@s^mi!z3Pk8-zt4rhdcV)? zCHJ84_@m?FuQ6{Uu%O{yn(aSAZMlyLPqZG06e>QrY_Q0|)XCen>&{cm-~= z%02%O1#xxmH}vktX`vUj2;6YvG+Mv&Sy+-}G)ffPNp~|aGW&xKo&iX1T~BBwjJnQj z>yc-4{)iyn&JP5i7-J2%`5#MCOnc--2!k<8@oA7B%AGWjHy*HwNn>zDuPS=%l|1J4 zw;|5$eZ!|lUQ!U$)I>zk*+e*P4&Y?kB&3BIR5fKFl_w#TZpdcB3oMJ?TW1$XoTHiu z26=^`R!c+X7XQ_GrfZWJ;ntf|APZGOZ$?I3q(UqPdcL;|ENJKu1t*;^GPbTmeNVuJOs0T#_a9MC)OUQG}NzDQhc5`I$nV! zPLX*zqC2HcII$c5kY#|@{JWv=12tEB`)&{6D&)IXA z>@0ky(pkc-Z9W0EhQYy`swQ;$BWG{T4`ep6oDWxxy=FUf%{NmPp0ch|$X3{dj}EjE z>+G-?5srE_IvlIO*$G5Kso8dVqB`xGuxP<~p{5AA5697HAulNv_g9Pu)EXICeZv?C z3KyhR1jDS`m}AJ?mBn|Qyi*k5$XdBSC1|+m4l)&EM`vSo@zdm~@$%MYD&jgcmYn@u z+1mbTl-hqnwV2ARk*@k#KmHWImn)<; zhx<3gTu0@&s63ks&HA2L7K`Q4{4TB}Y6yeTBd#in!S&#j8qox%UG!N<3Ec|fk9PMf}}Vm#6Zj1UmT%l&3r@G*J{ zz)mMXh$K>fp3k;ouh}8Uii_E~^a1|}@oR2;-rxJ&I(Z+1TC28wTS=-q8L+>wG|Dob z2OcZK|Ca{Kn}3Db=CU>jSuY?`4P=h_Sa1QQVnXI`sKA1lSAp^u5HTMBR?Y52wgEl$ z8q{a+*6uMez1~qVrYHg!Ws*WzAF_b%xm0&Wg}tDFyKoDBhYoA&k?*s=-ySh|4}1^K%)Y(pM$z{vKZ+O2+|Aw*Pq1?c)141t$ zSH^_{ew!b~o6MM{S3OtqP%QC3(f`Y~u>MD~?~(QXSH=5XVANxULc8H0j?vWT&(}FQ zpa5^~1Yop`K=ntncTL~Ha+eHHMyJp+tbXFRZlG%MRI4S6pxelvC!5+9CS_AEX0Z`< zm)LZG!>OQ*d@?Sz`8*H#DDIXg>u!|`p|~o!FkQ5DrGizB&|Q^qk=}-6jlEf%z_jh3 zx6_S4_UPNEE}x#$=sm3&Q~B|7(urg$8<|>mN-2q)JkAc zBt`P55nez+Yo}r@q%^&Vf#j})?9!YwWQ;Y6-rbD*re6+7I`qWVsM|u2+W4d!%QzI) z(W|<2dYnWQEZM7nirJD4)u-<1IbuZy zlJ&GrLxNq6k94N;-U**3Mj`Oq*v3#M4Oyhe?_Zx&tx|dtDj9{h>k2g1DxQo|BvS8< z!eklNXumOz3fo-TS(^n5;g?@2r+r!Dj&$q<`ICKzq~|%tk>(@ z=^{AOlN-eMGpZmSo#^H8VNA9?>Bi@(8}5(b)jSJ^&rXn3Yqr9L>EdcxRlN9Qg#R@} z|CJ@99<#*{`;Z30gFeBn`n_SsF7N%|p!2u}Rpm&{ZNH^8Fe z38Im%fxUI>eZrnlH`v=nR_abYfNkyyfXzbZ<}|aX8RO)Ko}K=+0+!!ck`1Vf>Cveo zkYjq=XH?r(>C&~}j*TS$@}=-;O|$RTDMTJ7+J&l*GA&2V-H%#OJ@Fr6tE#$AMrj-z zK|fvt$ICN~vu{6t{w(IPo^1Lr9U=o)5>!@vIn#2N<2F1L?!(th@4mXNswWp<{}+=3 z;R&Io4Is)!wLNB_p6SRZmozT#4^5>MPq|&%IlS)F`qAKqsEO*VL>S}uHSxT=h73pT z4g)N@z}UK!K?c3@cd=*(9vG-X>Z^mA1z@Y*gsfL31 zaPu4-%?9X&gi!He+GWA}M;o$?j!~_jUY*ChvGO*M`|(JG*Nb^7Wj=bJ#G!zVEBHQP z2@`b0Q;Icdl?5X^Kyoy}XC{Oxe%-_^7g@AnySp0Mnn&|8ueWnGRJC?uC6~YV1+W?A zbw961ioC8%DxPC#cowRsXiMs$`XDwTwD{ri14V27bNcxjOmP5Fr7V7R%)%YG4SGlN7YN2 z*rpc34!YWjq_l?E)SE{91wJ1MU7q9ZMq7m{skrj-u@T|&CJ^Tjra5zm2csefi9C$= z7F>q+W=)@Oz}4QFsN?ddQ7UgQ+eCrj3QwGu%M^%Q zvI}A^q4c*PM65n2p|1+VBrIS&92CeEw_4xR~W-#4EzH<7KzKJZ} z-~DRcwh*6#>Le9BM0*0Q9<1uQv6M0S0B>iJh} zHIy~jRaXU5opus`xO-@^O)wgD_3h5H)!U2!HJiV=)L{nhq?Zffy_V(aLt0KXZEg05 zzp>kDBc1L3Nlhb=j zGZ^0iQ`E7YYU<6}EAsA{A3Fev@n4EG2&0C8rhv2w@kj5NJ8VcsU-jnXk<6RU>T_ls zUtS(=2V8EQ_f9r`c~Tta>*DeOBB&Arq~BXW_cXZFT^MX3{??f2iO z{9yZ--s+J>QGh^CGui)Z791kt48UH$bGi6xZf%5f^z6_u%o6b32J|nPSdL5FiSd`l~cmEy6?^Xk%*>jXh24mAsF4+38l!-|B+ zGxN{q(zR<+BnUKY)OeUWRZ=ZUBEKE%vX-C5brHC6R`htjBeb@Jjk++ zM2I$f0cN3E6Q*JotwGw0BZ_xG_CST9lCp@P<_UYX9C@D{tb#o-MK>JEK&{r26b8rV zXo1+gP^C0_5jRKnn#Q=TpufGqwVReonJXr3!W&ibQ4*ecSr@?=T{V$;HlW{* zm$a10{pN&M-hgM7e@9&+H~#1TdTW;)nFDaP%iiHs8Q;iaN_$`T8y3`BQ9)jAfWw9y z<&fpPyBDG~KrIZ`w3q@H2z1@g^+CKzB47|O9L50B^C>ECizLG^T(Fdd;N>rYlAh=J zcWthhcbxzr6%QPg-xMte0dgM1U)|JSK@5sNmzC}98NtEu`M$f+y=od@2Q~j5qu&!E z`0-&nNGbanU{l14oG||r&pW6C?NBXPi^J9#ER1lGLRCe@!f=`Ps#@Igy>iq`u=@cJ z%zvGM^R^AH^h(b4E^oGfSI_?gznht40r zZ)VMP{J!fzl2nC8Z~u7j5BMx-*>=wV@K;mAh4JB?zLlZVcU2q`F;v2&1j}7^2{1#X zs11sYYH{M~8ZMW;GpobCCp+nL(+mmiD>6nTTpI?fF{f4;d}WN_6vsw6{HK6bHsq4U z3bJ*hRN7Gm?O_I-?vwplYwrQzojRMj%A(%U8<&5HBJ#Idr%K$OgW@dyFOtC1YSJ}r+oLchGy}Z(QK33 zVN1B$ltn;Yb2zpXpF>j2>bGi+@?xW_PA97Xs-#8wr5^fM=(KO}KJf}R%CIrSg-0(n zR4!DB28H#3d}Xp;SNEnayxlc6=^_CyH1|zSG`pHCJ+lVF*2S{asKQVe>89d?$`mFT zPKd9V96YmA4h#@|c`C$HF`Q}%z0j`0-iEw-5o`D32N0zeTq)rjym;BX_x>QD<}sND z6CP{Kx~rzgf*icFF^c8JOxm0l12l23sAB&rQdUzR$DXf63YoiVI#t>)X^0FC&-ndE zobjz3O}zN?R_4S1;p;7X45`X>u!d=UmlA5l4?Z#uCIzjm(&W+|`E~B+e>)YOh_d=joD~b26nwT(OlahvH^c^6 z`MTi_1(t+R5aX{RXIJdt^;6#R9j~Cd@5Rux^4*Im$zJS_o4+VW4iYl}fNKa24G;St z;|=0S{OUn!fd=N_2&;K7-IgDmsMkBA6@(P;jVZK!gjB zV#$J?nGnd8^o)D%#6qysi^jeS_wo*A*)ADCIUrXpE$$f~rUZ)9>t}2!qYBE( z5XK7^8UAm>udH*g5HQtUBlLX$Z>A5L{eUBfVUS(vLr0e=-DaKsnf7->l}^L7fJ}{d zV_)#S5{1H0Vrs7hi80-6KKzGgrppXP-`vL{1k>~u?Kt(**r^XOZz-%*nFUKP=YOSU ztv6mKBo3sy`g43O38TWDK=ant!n{HA2KG5tDFPU>k9GCENs-{bNwq`aMnHR0) zZmf9I3s=gw8Ely>bAk-SRQ96)R%PGSuerE7@^AGj9MMa@^&LcW6bk92n06x7H%w@7 zgz;d+`fK&m5NG5ZH=iM~Dk+~OY0lXd$`&3{!Mozmd+A^kvU3-IFw{`{X@!>6@Sqk> zc#dR(#f^7GSS*zq#rRGwP_$5OK%tn1RY!Y~I~#-u{-PPT>ZuI3`mv4O5YO?AwOFoH zFjq(UnMz86N8`QG!tYylV`F-&->PWQCjKxzokC@mx?@TK@?``<(*M0WdG403+`s(oPoh|A&$I|56}+{K#c*pIcoW1%m?k?$ag+ zUtbHsuEBkpv9)CqEuII#vc^zljR&}_?EK&x7bHcl4pf&i?1H}yh8+-S=$N6_P-VZnQ zislFZ8{IIyxq1G?61e{f;#x!Q^0p)+I0z@+88zkn-^X=w!ZL5;*3{At;JgB06a-B< z1i*nn=-^KKk!F?N?`)_u+6QEA%J(_meC(dn5&VZ=6ZpZ_{Pu9=7V-a~zPi9z9b%{p z+$@F13|i#tATeH`is>F8Cvotsk%%APjt#g5;?oc$a3D1%^wBEoE{KZoCyL31go$~p zIupNjC7S*0AN!s~#yI8u8w>lu{0C>UW9)9aTvpfi5uTlO@vl^TVX+;%`^+o9dDz6i ziq}n%S<=;D-zn<>JKwR>i`ztGX`Wa~xtQKv_~pEgjFdFz1U-3LElRKkw<6XQ_AL+y z{?v-ocoIew8vew-q#`unS{*Fue{smj*W$zxZ+EHp#uxSIV}onhAe@dp%%Gh=`B$wP zWcZIJ-B;8eGr1?FFq?F~NHqDxsfbm{1=H(r(U)%(gI`ZR7z>W=T~OisdxXJTvMJZu z#nsXe9STL2r?`g^>sDcaa#TTT4VDp3|z4;T62CFLsV_cVk83$wtyLr-A9{e5zYKIBesvLHh8 z0wfBV(px3L%E0G&qG{_T+8!;_XX0cl6)m`ZoV{-m?9$FQrrN-WoXt={vG|-li0TGr z#=qHRjO*;vjJ}&H&}()8z;<;2eYdNSm>b-U$P~*7_YDa~rmSY^he3nV3p1+)vV6fX zb`JrT$!<=C`}QgISbhwL%gd7JuF75) z?H_L~MEvno3T1U1?(p=mtxBS*P6sfv4dq4VU?{;XPvfQL;-O{{${Ux^X@ra%Fv^EZ z_j4Ns`H!a(G3eD5TQwcaKN{FK`(!3 zn^|q#vp~cBZ?kW*L2)2|m9lYN`SGIiV~6dqS=XVW!#1Gds}C*;W+CC#J%aY>v|h6dWehh9rLwa zT&foRS2f0?>xtbk3*9x3ohaxb?;}hQal!s{$^I8$b0ePGp!wnG^M5eL${RCn6FX{~ z=juV4h&L1xz=^bmM?*5ZyREz3>a}#XT!+=G7W(_f>=RRQDJdI{Y!$JNhE@xkfC#Nd z!8YE-5mPK9K~u#YS;IwEJ^DBgj;JSFOa@;-$+{5dYHapbdp=~F=S$|U7fMCv2&6_x zB9m)07OY-ab+fwzw7#zBjbZzO(DPD)rzGLuJc@kFp+~clh8TDQ~H5>I(KUvgGN&n&`zB_rHjI=`ea*7TF=6WDoT5hGTfs6N@XCoc~U3G!du@hd249Ha`4wZ_{JsxK;*B2VvrtC*hPk@wUPoJh`ChI5(k@^AQ;$Cm z8+Ups`loizz;2OLH_IqkPHCZ#6UW`B_valuJj};!Pq!r>&u3RB#@ttGiy0KLG^%5B zRU`9}pM4s;qPX~mOoiR!ANCBJCWa)+E;80iV@@Z4mjE82r0t~E!qWYIZ2iG|^i!k|83;6^M z>-!n3Y?T%RB6Xl48u_&&i>ram#fx5hpSfh(Bci?rEVGst;gTMSSASw<*DEPn;2YHp z`jpI3@CGbv@M}V&S41-}(F?ZbF1=IDtVwG9Cda#_^3iPnW}r=fX#M4nLC9jMQS&3b z7^QY6MA;a8w~izRP9?kn$MrL*;^UOO#lCphN1S+W1}!oe{n;84)4wrQNrb0p8mF+~ zTT{hIj$|lv|s|EP7>`96f?5LG3 z#yy(ad8QjxN9Z294s_$8-G|#v4K@2^Bfz^a9e=4{qF$=(GOV)YG*2laevY#0`_E$J z=T3U_zw{kxjOM=5uQ;V?8g6me=NxKy{@Wy&w8m3o-8W6}CC|~?V1?{dlNUbs_(ztp z7|A!}kyp~cFGn)0#Qqg=^6qPPuf*8?@*$(wu>p3YNI0*sQ%A(L_n;nZc95!QDUN$b zWtkiKm+{Mi)#$lU&F>Vl{Gq;ReEi9N3)mTTR_U)cGyHW6mcyluk2OVI;YN6(PqW)_ z#ocMbDLFS1kS>HT_OAYlhz|8?(Ow1>e-l~zm3GHu+Lh)pn#YLsIe?~=JaHR&tNHal z(O0Z;>a=b0`ID-6JZuS$0hix2DOyy~G>;q2goPyGJHijapEt$ohAoXZ;< zvg<5g`&SG{+T_Q*DQ_{V4hbuAK18wD+DVOZ!%|zri8%Q8h#eAGjODCm=kzbSRJBHe z&$41!$5ph-27`lEWS|_4tJR#?$;sb;IecfXX5Gppgi$!bB_L$f!ub7r$pNmDI|k;R z`e1~bG#39^wu$9TRxyPW7A8p*n(JR&)n{b-%=`V+qW<-3)I9$ufD_# zhx;U-X+|4Mzv6i8$xH6iDEqZ&TKk$+1>Qb?@XEg;->t19&4Lrj{1bb)`k*_Rxh$o{ z03%|bu=L<_vg(X0->h#UWPBwdV&-(r8|@Q_a(yFLEUx|`qQ(XG#)AyFihMa&Msm;4 zhOu0%E#=yuTihP^jLi`kJazs;(9|$MqkbJj6*luDl5t=aeGI3x^vA@-ggd4GHp=^? z_fz-xL~@hfA0y3~WNIV#l4VIP5GvH@60&=onW?yTTmnBLFzfV?fvAnW0JS^A9@KyI zCPCeuFr1levy6pt5nR0EH*%rRwf%@-zGN1sOE&gVRf-VnYB4I~cPI*qkt@)yt+a;g zaOh3o5O+(e3=tXeacsjo%Be>N=_PAYWE0`gP#%0lv2)CulAT3s{E8$>_%I<;pc5U% z!l*%Ci{$O|&^!9I+5c6LF{z0p3r+*|kUN~c?lF38!M2WnzFzdN$wTM|iWEtJ=}*zcG$tSq~`_LH`lq`&Me{G@!wP z(>*$0OpK*BfCWsW>@hxR3DTAXcQMErA73-tt&WrY1n}PQ=H!gS24Ba4aer+~j}`36 zF_F=koipw}s?J@jAxfuADOp;Tx|)2=Bl}_ZZuUybS8m9F*EsoDLa}GW>5y0~&PP3N z(MBo&BPNZ<;TROegAIS!sI98iUvpK66HnzwyLX@7N^~v>B4J<|_6!jDc5k{y1zy!L zgnbm1%Am0dyYy5J8}b;)F~P{s2I6+EF6rKty~BM4?UOzLK6JuVX^S8Xh^Vka2$}?m-f~&okvsg zKUS{Ne%58zk&Q>b>-#&hN~<9Y@00$xPWvVO!0Y+a0s+}z&q%ZAtF}O#n9o-jdmDw> zI8KtH?qo~}lcsI(H(@#K>z^C_@ym^&E6l4LYl)EJX6&mjt>PBDjE-7BZbq7levEIo z9L`p(pJ}-Fm>?A{E?EwBF{>W|9WG`qwWzEeeG6(6Qh=9ek9!hhfl{p0r{HB{FI}o6 z#fV2+;kfaO2ST>;45Mn8#$pZ$-fxU;N9E(4<=;hJrtz7P)uvVSk(sx3dN$@v&b3cm zm2`%jCf%g47nj1?t)xl|nf%CEZu6^Vm3F<#es`W_|bx z1QnZm#W-~{^&_Tbr@ej3FgW?*nFjLfm}D06jjEsFcQFl=QfR6a!la*kPx)9k8BKKV z^a+`qGlhDXV9b)PnkQ_d%O+Z7f_eQcJH;;%7sbx-jkc7oXxuH%Wm>kNeHHIF34`=( zgPR#eTeiEo6!e*2Z;TaBJP4PEYhP7;9Q`Z=Lc!f}RG-(CejoLS_)Jn9zP~CGd74RB z?jb5z)M$rDK(T#~MOc`g;#WZ(>OAmD{%iTC7f>KmoB0nS%xJTM#^6|*;nBPAWF-!k zZOm@Bt+VvJ-zu}RO>>lqp79(D664Az!oYjqR7r_%XZqsm0E7YU#jnX1fSYqyAZq`+jo-o97)9-4Ou`3%ZO8!=4Qbfy|!F!G86q7=F zs~}}=Kpp*(n?FMN1J-qz3lq)#Gma4^*{AyV`gqgvc(dFgc7}6g`wMC0FvZv*Vgodw zJ9Viis|-@Yt+6*PrFh9$w~C9OKHX3C?q)EIv_X>acV23=X+(==yiMR7Q7z4oMFk&X zBf=lmNik`scV%+?d%6b<6(&_Q9bbrH^+zpYYn)8$BQ*AagjUCD+%DfS+<&>=}X`t6s_ zkNuJ&`8GP{%!s^;wck|LroUQKaSl^g2Uv#Z%NviUl~^Q^&|mVhtcq$|tWXI@cDN8P zc^>eWN`6NpIBAf+AVtNDJrVSe{HXDUbUd<2&G|z%9w+Ab3mxwyid+V4Pg6zgZ~Yy{ zJ2m_;w1rz1#)^HJ8CtUvOr`tJGGu7lYd?HT7d=0tdB-`Vxz|Z3HS=H&wKpC00j=y& zB^n2BFOUQL|KD}S`QLSRGR~)?y)G_1qa=ZA5oU8dGg5>UA=4XT8m6G3N)XY>_MPrs zmVRho1A+NqQ8r-&zhPDUFquwTLNAf7e5_GdL0&=aDgoNL-$EhbZ~PLaZo|KN$>B$q zBYWSk{M|5y+Aenz4Pi;OaCb2&<#}Iz=EgT4>|-06`^y@*&RL?bxm^}*+=F6-!s)wq zawUH9wlv5PVK)fv=fd^+kaJ>g#fv4h#xy_8wHe#xaW%rhrDNs%A)Kt5!ioq~1a0I| zlplfcX&*ky8S^m z7($5{gVP=24NRYBDARWP_BDZmG?`0dVh`ttO#IlMUfkjKKcnheDqQEjvRcZt13mZx z%7Hp9(vWSMB}B67;{YPsYmV zoz-SVk_`#}!A~)~>mq>niu8!P|FsEp32Mm0lA*{uGpN&l9SD78M}{Pa!Pyy~b~U8& zMW1;uap>=Iq3leJR*Xtx@czL1H>M45qESu8*7Im7RmmpjK0(;TweGP}Px``KKRB6d zl6g~;Vfh?(89Lc1qO4;-RvG$dSX%wYgi&NLe`GQ>rynf=j5)keO~M=MskQ~eyY`zh$mT!4h*|n56q_2!|?Fg2$O&<5ZDWHs_!%k z=H7nN@AWSxu%Y`C&N+#;z`9-)V{(K*V}2j4Pg(sxS7N|-(AxXuS?Y`>Ti`Uv*5>hJ z&*M7^#{bhM+*%+CUzOKVl^DoVS0m0yNwUFc+>yaxDnx8#rIy81S6?Mu-}G8aGbybM zv6(|LU6e=vLtP)}9q28;imm-q0Jcmfg1s~Y(4>+UI}NhSb7DECZNwF2N#Jd=|s5Rk5fBz}aASDP&Z}~yp^Y4YLeD8bN zD^FuW`h82w#M-Q0wSHmTW}D_9Cpt0N)}3b>7Kejf2G*Y4h_Su-f9qZ`5@dZ2@b6C7 z3{v^@TCz{>?Jn-^z6vbj6}Q$%J-=m%#SSbQd0oSGXaKiFTUZNipPyVGD1S=ddT<8U z&BJQ+G*lQU3Yz)UYhUE+;oNpt$Qq)ieFSK zn=dBi6^kFjREFvg8>l~r&q1e^MrQyOG3QvJcimkv(x6h4aLHw(G5tlp)s#?)6$9r%4h?{C-XuOe?(g znzM2@Q$`h3p25$DTz>$xWZ{HGsR1=UfS{fs?KsxYa;bRlhV=dR2Xy#oTS?tL{=_L1`Eh{E--7(H-lH_9h^pK*UeD35Tkd0XLaSb$9YIZ*6AV`x9PZN0 z0e`ao41pUgf1&KacUJU9mMm}9J$a(qu(uQhsx`lU(E~ECD;oX?s9Y( zXLzTvS2*DB$J^1ctE7^<<8%&qu#aiW$0$swby3}P%>~dv_pQ9P zcwH%YVd^iom3pKbv6QYPz+Bm)MXEpbr1yRex9L!Pjk=9zJdo5tw;?h}iH=(Ca{+QM zXP(~NnjeQ8D(fCg@+#fbx>W%d&hCkEVra;kkA$f4EsVWZ_4M0s;qnAXA)ck=Ph34w zaANTkE0Qu3RLs5@TT*0$I9FEAc6gg4uSgH%vD~=hBa*PC)%;peL7`TOz|lMgO}igS zP3?0$Y=cm~b5-7ujl~*Ym9q%TAGV7U$zns}#VP$hy>aN8`dHl_9puY#jDdYZ@09p$ z|6Qa%R_S&3s^;k^U?q#flB5Tz5%`6F*P^iR9q&dgYg6IT_0VRv9cn&TL@U-Rlc|NT zJgO7m+DTGn*W!Em0fll^csta4xBU976Ll$Gvb$jywQtR5m9go(nLm1A^;q}dH?8<@ zTDXlR4}aZHTL`3e@(jr@zsP(i)Detr`Ct10qTpHlZ9J!NOp6?`I|dvb)_F-0rq5b} z2qkhugcdB^^aIl`&-3xDR2sr%G;0{x@!iQCH~(DdvMh#h*dSHQgUzM>;XA1~H}eM$ z7;J4n{xp8;>C?S-R&Y9|LQ^}i)Z zMFj$EBCbAaM0qM=okv}d$2tcw&q11ITsz;_+0-)f*1SKEf{9$Zb1M2^8rG4Wsw zi>N4?r8$h%Kxu+j7{prJpGwHW(9EZF^nWjI(PX>)I01H@@23~pY1so!MXPl)0-E}I zLyUaNVa*JhC^jbfdQt6%dIShueaBS%W@Sv~k{rEkiYN%%7RYw$L)MEL(WZS32+ZLR zr5d+W)s~#(Nd2k@cJ(T#;kS!(Tt?N|`*x;zuuiN8^sjYkk0y?n9etGi_?=Qw`xKjn zs@0qlt>hv#*~@|m%WVs}Uo%TA(`f$f;#AG0XB#lD5nhs+2{HW>My-e9yaxm0CLms2 zzq=(IP|h-QYyRsC3!`|5@|4b?`Uw3ulL(^8YpbU|edrl#Q6V}n0F3(}xd zGhpn?&?U&k_kkdR#)ETE&GvC1c?qGR>vZiZq(+7i|K3Uy`$2*Dun(}`9b5ZItkDI& zsc5rI!rfS5>6ms%{3OOxXDN49L($b5RvgD(^7DAr5*qX~b;v>#?Ec|aU*f%IT1p=x zlFWp0cZ#o3L3V*29vDOW>U3v^p+aYQOBx zmLhp$%^y5;_Ms7h^9>REQZr`hN$khL*JX-0&Shx3I$jfE-+25sHs4A!5RP}Z0#s40 zwDDK6eYmin`h3mb2B6Zn<#(g{}L6WKGvmDk}jAZR8WwXilHs1utuW zV-iYM;N;}&0bZTzgL6#8c$$k-U;$jp{*{Albg*k}WfjU?+3XM0hQJwArd_oMA|8-| zvVL_B*##oThHCh;{bVQg4-B^3Muel=1~h$NkPPv!Y9t4Q;(r&cxWM!6=~aFukE5O7 z3jZ3$8P)i4qHanz)z2`qJA6}-fOO7VSV0qsCNe%eYdy%?oUzp}?VnW2H;GKcqCgLy zfu>G%jiNhKx}V(?^Z8&i+f*0fIDT4Ue@x@m44{Bpn6Y@(ius&QoflHf(dfZDmQANA6*3n1ywZNrZ*pzdqi8L$t1}} z1?tGMKkX6Qt?r?{yMtAJ`^W>?ydW>!ACPyn`@!Y3VUdfIv*yP>h-}>faqd@F&J&Zo zN7sTC6%~I^H~+C_@O=<0o`ei9^$iUd5K9DzchX56+T;F5dh@ugwSh-1=_ zV~~UEr@!gI^Sf?0rbTJujWGX^Tx+Y0OQXP;VRZBNMv~j50MG8I6TY+nTcdws=Qz3- z_9exF_!xd`kEY^8b7>EG{0S@UKJ^CicdO9Ph866TyNRTE#%{)~uq?vTxCDazPL20{ zVy@uA7ZQ**CVfWfWo}#XRZNi5u*WGk6US`IvBDKJF1U$x#3T*>s=xE0o^WK{vdR`=66ESjNTcVV87s1_GEvR}q zDlmLUht2Q9pc5I5EEYCzdLJitXDTbD!$l{!{L7C!R`)~qX%vaR>9cT+l}2ie#o1}L z*VxAysB!X!ePCZtG2~{UL-W78)}yT^izRoi+3DA5_A3-KLloB}K6oQY+sE-OGQ*}` zeTvYtXXKga#45(cW{qTGD844$iOc9_A(L>E80Gs`-8Y{RSLuh8wWW~;>NEUUmDq;5 z+4RIt!uiJ+$jE5MVu>cDRQnl~Ol0bes*R@(^009B4fT7`8u=$ni(e7vcIsmRPMDgC zf6bd{nP)-1yS}DSD znPu7zWE5>}ZPn@W5fT>{2hB%Q=QS%x0N2JsM_jJA#(ge)_ru@p30Oq;fTx}c3wa7? z&v+LN>Wn+4Ha8~+g>N|7I)1AGmxs2Y+dTGKT>pQWYuUH$A#rioG_v_!U0j4dxBNgR*fo5BD5RZ(m_HL)uOa;{ z5a?$5+#jB-@Gd61L5^4`uO0gJjSVCJ9tw~jRAY6W76Mse0h=jb;vc9K4V956{l%h|rxugxMtoJwY2d1y~STkO28DC5eoL z#1!NT_3d0B3_byqS%*k&^{0(@_cJL(L`2=^s6T%?3qaHXJ$?N!sRGDJ{|4yHka%xG z0svLT7t--+gS1!h1~1=#xp{B!`LqEtyk9ng{5DrtSC6+Kw+#}rfQ5BCH|8quxpycC zjw^h4^Z~RJFR(Bp1a=Mq-@owo1%HV~ILL6d2jn^fHW!d8hl3e%cyh7}Z1Zo&nBRIp zB7Cr_LV0sIE^Zi@fnE1yUE5Gp`$^rTrK4kP6HvTC%muW8Yn>egT>Dl)PD)Kp{Q>-W z-5ltUjTKTYLONeKz=_HEGZt5t`Y+6wMx9=loR;*IvON5sc7>ZYmveEbB*vVz=v=rn zK8p;&J^?>#4}s-2#VXExrUJ~bhlsH;1zh(EhMRz8;~9)j>u7)b(G%wfS#8>snyDJw zyY)+x?N$4*}~k@e=Qt`WnMvTXbG>zUX6MmLM*&iukt^ zDEq$YwYf;j@VSsg^x?D`z^i4 z?!3F6+^bYU+SU3v-%bfW{NB*QNPMQa$kpy0MhhFt=6W|-$q~)>4Nm{wAD8+ez?LW5v3*L@N_5A*sV&* z9;8|$XP`20Bd5L4QHJ@-O*;yGjDl^fdhXjmewtdheSe~tu2-96_fysw zu)~5`XGKI&n?!vwrBr*~G3Ox;bfBMVmM+18J%`N9AxKl3 z-B~Q!V-z#8rb9?lClczKAN7x#@ufZ00$h-4z9%9wC82k0V7n0w`mQ0@_OV03Ga63gOgfr8<+9m;@YA9>bg)u4;D^vdtpi4X+3Uo^8=A;ie;F z7VZ9eJ9apI_K1DKLPe|(y7w)2>cQ$2wU3E}LhOS^PY2X8Jpm7AU0cDVcfedT1o#*| zkop_6qW~y^PC+mR1&aZs1WDJ^<2j_?A7QTgFAEmj;v2$HMiWky)F*I55S%;=kUH!F zNQfEmj6#~S_Uj4vm;iFQnZ?DX&GYm2DXe&z7pRR;4D{^6!hq22 z+IPTf`r&;BiU&TFcnM-4389d-HuuxZp}W7w_e+Dq15m7@FbHIKfo$!KO&w7^J)-u_ zTZkau@vf}vo*5D!`+)p;&z$8J7y5UgcK?}t`m2l@1gmY}gz)t6<;ejmgD}t+h*EUc z`Ct!)V!nL3lZIq_*r-8Jg!|#?KFFx0Xxj97o$<`VxE| zrq@UFFmE1z&%U|n!}S8d7C-i_6xWyY3jOPZ+dIV=}>VzTV&|s zX*_uz-Wm4k^CVsrB}E6B3DoQ2%m+(~Xiu4AR@{j99i#-92oI38YpbwL?;;wm)YiI*h*Q;i5g^ zJyTN(tN*GJyQ5QqJ5+!pB}-}Wq9;tMyY}#d>#vMhv3#reEV6g;-JXwCC0GL+Mb)vg z6MBjo+3FO0Cy=C|EV^%|5aksdDR&>4hMdn#S$HhIQFV&~Nd>ik8sa*(S)&FW#|DAu z#PO0G+^#B%be?_0rS-e@?l2VCX2IB8bLAg881)*l)BYaG@s!@GWo%tVvFO(3BZ#!C z(iC%H<7PbJOz9TbkqWAnT7Jmn^LRzuDi_S~wgfH1C@V;dEKBd|a@yF5zjAWH7KMFX zDHhET>sVx-=kw=Fx4lkKs=th=cT=*v~lp+fK+KP(8Jy>xWlOr zbrNM&&fIxa23s#bEZeyCDa=Jmj^C(%+}u2zVhKyP4WfRXx?nVB-DKCs5!`uS|LIE6 zE2duh??Jf2_iL}{-=UMQ5bE^m8UH3&LE$Yx$F{VS~COzF+hIqXU;%jVC0KtkLH=l$~Pq#a8P=oGfQaS_A5b;9RI*))oAQ|8q z-CzLNgO%*d-;0yAmIMeH1Qf^M{%+|zF41puXZ^4A0Uw}o)bWSeQ^YUA56hF604x~|rHn^M zV+vo!#W+5kHeC(8>csX1$03dO>m!7KNC}=39LrTTDdGb5UB&G=WTApmL-!!89aI@> zbkGeKQ4j+{c%&40NH97tld3$-Zop5|ffFkg#2I@DUu?92Dsl%}&2fmdN?UjSKadhk zcuXIRc9(r6=;c7x4A%Qwy^4X3+l^6RujmQbphu4H0B#M?zX=Nit`Zzo^)K*YC-U0% zee8#jnb68`{=y3wK=uJ*u%;#6)Z;!#cA*}decqY4?NC{t=>dDdW@vG{R&q=|Q~IZ?wxM3o4Nb124b1cIYU&r?P% z6o#pO5bjhxBzJuo_o?j2KQm$VP>9A5c+AK=;dG`77Cf^QV& zmimrq+D6tekGjLpcTGVQK5}ny&tcm@G9NrtOp}SljjjDmkjjoHT_{t$)5r)_#|`1L z&2y66Xyl@L9q-%D2CCz*xUCPzTnro$-%o!n+^-$sP|sDYLY_n>vV9m|^%@hC(uoQm;CVB=3&gam7Q#iq-UePK*gp z(WKC2W>4~V9S`nU9>Ka9UhBF3E;D(bff}z_#F(Yfywrh=P;?JWh6^D zo|k6gpNS3}3hrG|BqLzm2Anl*f`i`ad;Haj0C+T*#u<^M0S4U)-$>S1$fSy^>NQXCAaKPPiVc6zhZVxGVy~@ugy1)!=Msn_h9NQC6Jw^S#PnWn#7T_d@pPH7Trn z=?AR)t@^MB5$P17HCWW8p%1Z9$zhXx2$^~@3f;q`U;hxF&-08BwBj4nWd`V?nFkrL zNi!w&a+b;1_%8Laq*JvU)1&d8ldni(}tXSm&JCWSgA2Lo?n?9p$0?+0&b=8&AjI4{_mSw!Lr)N4; z&;X_6st;G$BTdY4wDLoS(C3?K-~{(Yux%@hRiMk6J(g`todp8HyF9 z4+7yYV1D}4qccAEc)JPQqy{2?pA)1QIHN%A?w?;FZzFg3|E_jDl0q;C zn7FLW)Knc6%koktsAzO>ZG+bXT&4te2?}(&T|SSsgBb9zFJwX2HK(q8vH#`YK19&m z0yXE_#eIzs-Y+XN^J_)Lhn{l{P1-aCE`b)0w>aHk!~XaM+UfuO1MI4zFOQ*K4+21$ z5Cbx%->>7ZC8R>*=AU?~^D7ZWN93SmSrh8nj{}tQkjSfX-@+X*YH32F; zCj8ZeOr$7Gs?IwxeMsy&f*07?qI^lpcSyYaEk%X;d;T>8Vz?_n zXLhu8!@0lktN6oPo8Y$4Y$imIO1XDGUW8kL{vrz9F8?J=M>Fo11Kzn2#4?@lXTK7L zcHHc~#7^f?);QM7;Li6os3-)KoApgXgBay!Mi1dI-;v zgdq9@D6bb4FU;=-w^tta5k~IgMPs@ALG5Az=TE`{ZQ2JNnFFQzfk?_SYa6kl(<;*GbA2 ze7gcSi?GpX)K(7};SUfFzU?EF`j9Mn{(9o+*YhU`1~&|?;!1BWB*gNtpj_|g49zs7 zmp&aC5f(DHLPjMT`E_*(;2#n`d}wn}KJ_At!r8vKaDvY89PbamT`52PR+hKF1(cRB z=yWY4sRlZV8UeewNeJfHpl5Nu(b4{s)j?qQk&G#O5@#E1S)DgN?K{nDYF{*cd1#XM zej45S1Ta4UjP?hFYd%;sEd!jq$>~Ge<|Er%(3sqTjj@MJP8-;Qw}+yHqT4w*oSS5Q zpB_+Y9n!N#@5tl@VJWh%7O)b#qn=Q=;t|lR#OBpb*n;4oLsUAATs! z_RUc*yU>KC!*?ROs76DSAYTcqjDJ{XQ?}hHEpl$DZrcLixq`WM<<=oOC&m)x0<%lM zFi;N_|WYee|M>rhl4z70U0|F|L~d@gEet9 zX_=ggWdwVHQXf<)>C>p#k6L_f z|EK+0LY7o4zNbDN#powzx=s#@8B{tZ zl45hmOq?lI?~iAHUuU%HBR!1W ze3JkhU0OZm>Df-Jj|GZ0aVHWB=g!7Dz-IVd0Cn66AK*FW4A% z;MaWvsw&LDn3F$j<0=0W&|!7G6pt@%ED?ORTg_i-s9LQU)@)=USe>#RC@v9qVC!1_ zn&Vkts?pbcvrY@;M?V3CZU3$Wn`sIh9J3B_aw*Bj-!G%$Prp)Jo4aFwxKL*% z{mnI0HbUp8 zSoJl9%oRBB;6G~?7!@;Iylq=pSkMaZ-}V=9;ds&dEz=nlfEbEPJ*V<@9d~K_%*@Q% zxACifK=1_!e_Pvr*Je4HE%f*A{@Z!40b|*jzRc$gGZ4oZ7ja92fF{48f+JRRI|G7 zBD#KnF@YWrEc}nFKkX}j-}0Vhr&|K07UNO`-Rd2F4TFlhG^cYG8BNhY^nN)L75dX% zUn9947kEdCjed!48YB1;tifmI76h|Agh_dm3JY)0vWm%b^(IxP0!A&r76tdisy^R^ zK^{~#aMn+yuGYU6jwQDfACQiYKaGv`YY+RNJA|bAVwt9T%QQ*BLnwNdqB6qn<58a< zoX@}5SOcI}FrHcRHA|BzonW!nBi{8`1#o?oj_CDjE1thgjs7edb2dBhupO}*lG8SW ziSU$aWGHV*u6y}Eue})l$)&bqRyh=ho4-qF{%uM{)!gY_M!x>%I?c=*tjJ`}I*b)P zJoi=8yqD8Bk&0|taSr)uey8l=<;JY@Vek@b`iZs*PB)ZZ!{k_Oeo=zo6*yoNotPy7 zNT}zJH@4(;La)x89Q_KuG%>zhk3fkSR}M|Fu0rY=VF2k@YxshtS$`USt>h2**sAY< zJ|&9)o=XaAu+d7>(wB{H&sy&LV6vO0c|+v(~lYpNC!sTVXyliZTwe04GYjihf4zj71DSyzXP#N*n* zsVoV#ed(r)zbw%4$q(f^&SV@JW}4s^*7j>|=pZ*+G(glkKYwq2?8jX#TmT=)SU`P9 znWyz(!5R0yr3&w25{C zg0!n=Yjm$AzOE1cc8uezBgHFbqN6lksnGgAY@JnDRd3YoX-TEKyQI58kOt|J4v}so z1*E&XQMx+?q@|=&KtdX%OYpqw|DE$)or`_p+pt=Ru%O2NFjxw(J}3ipHn zeBPuib;1Tjk_IeNQ9nPwPGE$VO0|SI`MKT)Okz)GaTHT$fBnUwkt8%lWW+^+lsvJEEzC9aHZ@Ze|aHHn7+4$zxJcRm_Icj`C5N>xx1KIVY{+hSK`st~k( zaA@cbAPy%1w<45IaU|~Ze^@r4JPOmQ(1vE*UXtD>;!l47I3{CaVglX@;9M@eY6#x*QU3m1eGoXRxKtgJ!-qXA4xy4suo*u}LEga5;(qpIi?E)=Id*9b=P`cohi^4hsxnHvfgZtiq#f zjnHJmJ75#Ind)D&!*hy9dp_XAF3Au>f0!OC?>4R$`-lFSh%LctWC4*(^qqdP40o-9 zX0IL0uqKOCK8R#HOk9&+vl&vCIdvMw8?Hk$7dcMNW(ToVw6&(pu#%CHWA^KKH$~sE zF=mQSu+54pF&By%^*7LbFDkf28f$)Zt%xR~7-@ z4Sn=_Se{)gI}$eW6zny6lg+3FT&abo{9- z&!k`1si~u6(0|<{l+n5JvMe#wEg{GB^2wZq z>s*`&vSWLJCC?<30Wlau;sw!?=@7x{S{&2>01X8s7WQ8Nk$?j>xoc`?t|EY3atm&< z5vW%Hcv1+23}r64rZS0=g4m6n0I3*gF#{?OOjlQz-5P7-vkCEkzL1vd%=q7x@qcd! z!J~lEWk_v*{Vk9KI0A^G7et-`tQH#;q5aQ@e1bYgUUbk}yA|AH0$`CM_;A#)RBwp} z4?p^B6>P=-r9uH87n9<7P!Ryneo!q65m%svHe)2juamX4Wuc*=p-qzidOufl4mL(T z4Qp+8zq4L^AOkyn@aKU4(l)>X8X{bE12luhhYz>u5$K|TW(AFYAtXL%VSX$v?LUr% z*{?vUBBN{_c4{&Q(5WUj1^{4Yveu-9a*EZPJ zzvGhLyPSa#0;6H5woQOA0i(-8^BT9W0P7DexM<=;zJcL1gxrHZhr>tFyvYW?2anT# z-2fWP!Oh(VE$tD_?-KzUCq2&=hdrEp5mK!|;}I}uiGo010HFbK_l=)+jJ?^v)zxuA zAs^64*9l~`c>Ak76xP(72E4d(4N;(qGhYebjQF(dPpdJcGm&(y==LD37c}pY{NQMj zp*tp(ga7dIJ8vyjcJ648N3d{u#1eY+D>_>oB)C9o@aTECVm6;8tYOAXc|%I{@u!L0 z3o6A?oU%kUDoi}uO6@eYxg8&iU;?{4@ z7s_6vgt%&c@1Syj{@F8;+ov`ei&DD2OyVu+E|x6ogb&UrW?A$w2mKKyPN4kXfU?O1 zIjw|!6$C;R9Y)%Al)9|f@{&w3@pEnxbVvI8;8ON=yF8}0k`L%L5GBpNY0xZ6aIT(4 zpzaXQXbS0&89uP+g>J)4O=qXX7M)6~yU`cZ@7q}fc&ONEdbwf2WgSIO8~9tu4yM}S zb^v31v5EVJu3((fRqM63wgX{B7h0do53P*q#px96{YK=c{%p!whVZmdiBC!|<-dG+ zA)AY!ILMY^9fPhS{j9HWWzVF9HSoQznvzm*MiUywX4G za+6D(oPzUzOi^o6DulmBMI%!!ocbtL3 zH6hWpsZ8j=7P`&p4`1_eSQ34wb4l8w6_WXP;Z~>8*QjO@k*c2g%bQHz`G*v~jO}AK zoHJ?A37r+Ty==)py#7@c^qw(3>aVPnIHl5*sQVHbvBb$gzcz2k!)rcqzgtid0M$Fs|?od1*3|1irI{ma0Q9t^>o;bD~vc)2|7FSu)C zx8lzp_F!yweq(RTUuuQ1W!49M`oua4ZN;Hi)YBuFZEn8A;C`g*r9g@p(? zfY!4Eu+nYKzxx`x8$U`Zr^Y{PH(wVtUKyQu`dlCBHNVB#fZ%T6wR(C39_(LB=sO9o z$+89p{{WS<-t5*5^l$H=&>y;+M`)`6aWtcz?CZ7yhHW6sq>)P=4B+amOs)`YfLM>^ zxcqT~*X^L{5YRP&;V4-2M1hy>(iZtki0t>Q@)F@J`p8}8IYD2ps1MLajl*$P4PeF% zmCaq>@H{K{c>#hxLMH)~4nSl;=mqriq0pg*MkwF`infqkX{SKZF<*h$S2E>TPA}aKVm=vc^NxlCcRvie(n7kXOekF; zD*NK6-ZiBV0xeINH{sWqo(sAPhibS^Hq?T9mL|L!n0Z07J>#1E!Bj}2v&)bVwu)~eDjn;*Eq@s!e~ zk}SXM`Bp#u+suuRn#=UHUdX;ZF11-K&%i+aD6-(O^JtjCH=*g|VRSrSKUc6+iTUW{ zeC{JH_uQMPSGNms1`F+GKf;+-nf1>?E1$vx^*p|Wi-c=Kt(Y+u%CLd`qQ~+f2B~%U zS(9rYuDYw`3P|rG43%u7t`AXT2>3i7AE`&3nf_0UkFqIpch#C1%QHMcr6VPu5F3Z5 zLC*O1k52#o`{!7qS3}A!SLAU$6S{?5R7uta>mPASVw%h3$*Xi~r+Qs$g_ouFUh-L0L32znh(55C3&JCEc zRniTU2dAiv*QT@03s#Fn(^Vut9{2M)R~PUOgJRB|O6S%8^sI z@(WGcEW4A0Z$3U{rqWlaQyokq!&M9^pNBAVroBn42--+qX%BxdTgOSk#+ih>R;}Rs{31-nPf9BX+xk!h785q@jrI1 zUteaQn&v5d$Dp+%%PrnZ#asagv_hq#e-Yty)f*rA$o+3kRYb35cOQ7P|1gAtoVkA+ z|LMBH7d}0V06p;WBgTPsq>iWIYsKam1u@T_l0n+%NHGrvh}*5rdvFM6HkYoWvs67jNTUBLrtUzln*bFkW^ki?Bknt`&JLI2*Es zE58>c@|ln9)3obH+>f;3s?3GDW_9+5Vm3Q!FnlB!>{0X5wJijBrUhA$g^;b*o@)jv zHs_{3P>mtnFq<+78||WZ{tNswW#><=WQFRJ`LY9r{CIk$(o485%TIs~SqPxiG3)%N4D;Qp5f&PAW-T-zyi)ZcPadVmUb; z3r_xv0c!6OUCkD2D!XU&7Y}K$1BH|soA-EL(UnYt`2{FaCc|6>os`lZ{=tT7SW1F~ zuqEMS5>iqTgqn}2IaHj+EGY>3HCe|V+_fVo9CT@prC4XIF`^fj{tvm11sW^#PY#1y z>BUN#?xXr>)HBu9YqhJxWJ11J$W2%P5{0@U7kubkUjJc`o?-B;O>`%5(_C3DzD+dh z(r-xJU)`ef{8zh3NMYn5Um^CD{Mm%{b@xfS%fs+W>hnM26Oohsq|V*+W5iGH)WB-c zF8$SRW}f8BHmcy&oNz`&)J2vqE&NIvy860ci9~i>Wud7~fuF2BFJ;ru(h^=#GOx>+u+GpzjJroP7JdmOe9(hmBFB=&cNNG7>A zv0UYaoMPI4_#zIgbR+jnlNEtcdH&Yl{gT_qRaeY8_N51q$2PN8NQj70{Bn zyS*v-3BH!+HShzyoR$X@0vI~0#hhK8rI(+3?1@Ks+dmP1?NMI;qq9`h4DM6QHSVWRP+ChkJpc(l~ls9_~}$ZI@&~h zZ^QZ8UsNf6AjBSWE(`F(-;-Ni6g z)@w-^ar2b~SaUdLKFWkgmGt_x)donjQPrhE94$djQY*6?M8sxJMBj6+eq^ z>16zip}iwrMjK~M=n@2_i>hO^yF#+rhW(r0^en7L8DcH`DdW?N6O~>6eQ6#;fcd#U{M8f3>2X0##Ip z%WBp}>@X*RV*kC;y-8Z6Ld=m?bS4+xVnS(e_R zv{_D&@T3KNr(WjdJSp$+j1;sZpkx2jlK*0UyeHK!2siDDb)+zK2PY40=iPgzsOU07 z!dDcyy)**HO)4Z5GlarfMxH6JFJL+d=4k zIR)>~?c<%O>6adp)Aza0bs)L{c7|y2kEPyl3vq;~|ThU3ltdz4IE`*Yyl8MA7$~ z<5$We+*J5qd(CppTEo&6r$?U#rwE*EzL7bi5ZNUVWne^ZU9*UVTHP?HV_TLk)Ujd| zu?^OXJ&|x(u@_S#2c0nPl`alA=emT1q+&P1rW3lNRFW0%5o|Zi#_vb69w{4aAg(a0 zE56n%ND(#C<|w4g_$l0J;VwBNRl?5joulGRW%J|~pZGm$7yNCC`5$kaYZU5!Vx@)1 z?-GM2a;7>1chxT2GF39_pI$P8kv_+(W!;c10Re|^Z21xIdcR|A88n3c6igT}st#_I zHwg)el^@7>9mfM|xby_o5BB<^*LnjJB8rW?5*PA^wH=&(V$u5U-T9J9Z_raqdOY5^ zWi9X-b6%CxF3e%)ewd!EW^h zM@L5R{`1lc2`%EG>46J!jN&?OvrS-MpHzwRoXfQ2s#S(t`4uiGVyb;sVu7w4tz7gu zvDBdQ_^@O%cEO}6F0Eyu%Db4iE?w1{ zirz}$!LNVH7PwuL`9{O5%7%v1{dDVFRXK;ok?;q-e&F7?yc(L8j9Xf=dd)1&Ny){l z_ll~LeawuPo9V7RaEd9`aPqx%2E&NlX6Gxa1g4datC7c8^Ofg5Rs+0E%A$x8oLmgd z$@WTEZ@U~uE<~uMJ0zzfn1e9OQf-+ELHagctzpP!%A)j&yqh*vKh+SIhq9;}3K>$J~XqKMDAU6-a)2$6zGv{9NJfLHT9QF=WV+Q_B2X zJ8Nn5gVNiYDx1$G^a&Pc**ARs4;GwMCGm8*D@18MLfV5g8uo#lPV15$@3AW?7HEHD-j|Cq$MCEXYll;TNno2)D9Jc;;6{WUzaO~Ju8gdEp52Hv zR7yR<%y6*jePeY!*@I64cn@Elr5q$?-tf?_6kV==5Vv4YW_iR88&o z8AWbix-2)4Nj7XZGl%eB5Y6chKz1f^EM$sLBK4)K2s7%YEL$iP2{;wa&XUh5w$LjJ zv7<5oLrfn3vvk&&cNTho2a#(^_^6(wdX~13vcMM}JU!OW>M95wJOgVc*vbieMp7sQ z`EOW!;8apFqYFt_zqRipqQ$$T>>iXMaYrudfG43#fXnea`lw3&P|ic(aL|zHKK(lN#Z;(vs0`ls1$9;iC&8OGQor*oEo^* zK*Xy>`+gtM59meaOM_^{bkHJM^`@>8a^muX zEpk4Khf(uGD3Dr0)rw*X2Ydx?>*GybL#xOx`7^eR^=HCbxZgy|S+Pj5h0k`f97^l|-~)J3D3P0f$?TC{b0(xK z?7zc4KTA*xXE9s%Fhy^eF{L&(^!Vx%$gUXfH6nTDH{Up2H}en`|Nly3Eg=B8ULgBP zSlH_S6-5`n8?tOkxtQS@qs4j|!uAl)LsVt%TCBMZl=ep;9it>s4+dLf&d(7P2ryb=XUN_>-)<=&fH zzAh8kK?CX6%n1qUKl-UfE9nTmj}qv_#SO~2H7Xn0I+JYj@%ly*{zS08a(m?5dtqmm zi(O|EE~w^8dek{AG;of=>SG$Zwocw#>n_zidHAVHIjwYsITe6nz%FU}Ga!}bq5fL9 z=HCl#bNL>QBhefff7p9??F9aBLM@ATE$R$k_Yr-JHj~PJH#RPP;&&hMD7L~%VU&Vu zdNMKnYmQTJ8J>nN=+ zHnOFQ@^&o8mL@)mLHUbqro}5V`|gfh;q}2GDqqwKbg|9JJf-B+L!`bvW>zWR!@-bhF-;d20@ya$_b~0e)pI{rjbkJZ#=(6)H;C#hN zD6QB$y(7%`cnQP#DmhZt)?tZ}dXJZjXWNqhu~^_KH{<*Xk7?gfH&$WXuGg8=*CD@T z@5PT)*Q&SmJ^&J5^Iq8LUxgKt9$nNsGj)u33W{E9=ZE$v<}zau-0k(+G`wxTkVX{hRxFdQpA7d#8IxQf?@+{!QZyifS1&Vt=wD*2WbX=%Rj9{6pD^qCCd2>iF)2zSd>Wh6c5Fr=7DcjG_#U(FEZb2lk*>AMvt*t9-ov$%eCJDU;35KBlG*eT$w`n0lHNL;D9YhHCmjD}`vlokJn*sYyD?Y=qr%XtsO!8*~)XH1@msCjM_ZZkJ35`_9HilVn z^50;k_5d>@R?W)us0S5Dg3KI3k6`?Hwgcq#(&DwA^@X+`R&}_x2ZK+V>$QBy)Oylh z)EjqsExEJ=tr)NgwtB1S8f}sJ7%mCTiS+FDdz$~qX;pLf$t_T36&4_V&5^~(O^Icc zpBpt}Rd7h@8N1|JX69tKWKhCoA3LU zoED`RIP2%*74|(6j}>u=rSzTvRZgb;tM`$qxqslOO5V1Hm)XpIr)ze=Svub8C`7{z zSFCH&M0G{*Xr??FwL2vy)wBAOeo5M~bsP?2n{Bb@%+uRn{`CwrU3j4z6Lo>w5p!tN zGx(CCT3WT(h!6JJ$EwgB{k=vK`Q;!pHvJIi%GOs}#CaE_MuqDgq6e}mJ(9)xafPz| z9TO8w>DcK_88YH6{}12u6?%r#6dvL%3f!h(wi%l1{(gE2qePHep3Nal7KLS4uVbe0 zC}^pnW_+iHE-BHFj9lSA7$)6Z-goSrTxu>z@1mzWuF3prO)Rweg_j2#lW;U|$5sGH zE%NV?lVA-c^*Te}PzPgZ)!;bz0a!&d`~JcdJg@Z%+D~VwU@q=Q27m?%Ax^&U_n29J?t~a90O`XjtGtUtw9=~DrG+8zWqiWj< zvOcz0Ze08z)5BEY0%F_4Q3==gBhFJa!I|onX>nvzXNblhW2>vJvDBPz;So`9vPs!9 zT;oUU7#;7))m(*@(@e@SQneZx=3L^J%ksy4l)I6!iLXt3oyuwdl@b1uWzYp9q>GyvE>s5_*n;SCdWF(bVq}a z$gMEc$PLszOgrFILNR*BUf1b)4^bKHNgq?1(qgBU;(7^D^z7qI`W0mU`*2s$nJ~Q>kCt5^%3Jbr_0=?Zj>vF}^{~Bwi;61Yg-ayRBbY^}QI+ z_B|h&9J%|;WDZW+aq*fNucf7bX(*83I9T`^qmTcVPql*mlx%F#ADa=Nfdd5VEzuvQ zUGUWMFf-cc^L2e^-Rl;U6srkid1Bs2%6xw#^ej>O$JAMxi@=o#PC=?AUU-&5>p1zM ziQ5%bjt4h<7N1YPR(zbU*BHycsKYA7R4hkVym0dn>JTS>=Q+I4eSM)M*G9^wO8R1C z7BU#wxpa)Ex?@dv^i!JcS+Q39JX0zyG@b*=%X;bgy*^DDN8=x7zhwKEqc1*F*VB#a z?J22*KV;SRCFgK9#;aCJA>PdC-uk?^(ZfT5Lcgp2uH%!0Ze|CNP>F4pafCJ%^ zBMfr{o7wr>f3_A^?dC}scGQC5tV`0oI!eP>H%n7~N_VWJMUku{Zi3igo~~7qB&w$V zd88Eqf1!|;v8`*k&D3|u{<1&(-XL{iEiN{)@@>h>;ox7RTdI*8z3EJKUk(5IFDRh^ z{H7BqlXbG;{hHrTII5VM687;Q3(TwIH5xv<=CCO3L}glB;q0conA|j>=y+P7SFf1b z777e_5SiD{@W4wY8D_MdH)(&2dnag?1;lN4ShdPltY>Vc-+j7rw=CwQ?E9VU;8_|- z{BlDkmOn94sZg!S9F|jaw9Fm6Cc>S}`5Di7h;4C`|DY8eP>M-dStZ5$n#d7Hi~PzN z9H4#Q1>dVAbY03QM@};ZTb|L`mf}BE4l_HRl1d|K-^IZOx^vg|ZfcZfMsM{99e;pf zE^nM1n>dD1Q)#CbkTDm2iZ|IOU@uyZ2vKM+ zq#FnMzjBPYg%uT1itJsA$i8`*-@S_BsS~ZlVSh1dqFn)H~~a1 zKuKr%cz*>vz`&{uWvUJDUJMj zg{7PlnXG$C_`A0(WUg`+OuTwD1ubgGZBbo8x}6X3i0o0B?%dy*go6Y-KG`u!8qTGS z_dGu(g(JNT5HRw5C<}929!Eb?5)9l=g{#iZF`0K$%!7wN@;XY8(aOsrueIqdCX7sS z3JKTe_n?>-B*lLVIPz+BhU?2}U4iDBZ!ALou6+v{r!$moIG9z`*pMp~%xRp8*~f|6 zRxyaz?%){wlu9WH7Lx+84V3T($T2W)_-TdGkSQS`(JoW=j=ygx?5mrWp+2^=)RxxgK74F*de?437wAQJ53PB>FB=YD6m~&k_*dA)} z6|IfuTV=iL+E6sPm*{1R|?f+w>-xzcYl{Yw&;)qtx`*;DVNukD9L{dK%m0$WY0 zuQZ)6Vu%!AW8U(Nj0`3Av}+61#UElZ+nWd_!w>bUX$=m^Cj4Z*4lPfAKtrxnEVZ)7 zQsO)&s;M{k(~Is(S;1(In3>^L4g7F+=a5-^6MNu;!wlF4fWG2 zL^mZX&XxxIdf@doYXvp|cXml*$QlkjCs8fH|EOMhB-&@NKU>n+5# zQ#{s~UGG)0p|eD?Njk8B1p!@*{|UG*r)2NuTfPolAFtdsh(B;UW#0WK#N{4m6Tg2fFZLU= z{2V*DnDJWtT(6X3MAZQrYQqMVTLUzz1illEcDXss2`(({#vbOeofjgX!51EiZZY zX|Oo%Qj>L|{EfhbFtBJrQm@1Ol^uZDBBU@L1=MU9gR{xsy(Vy#sk&3sOi}kvUH!cH zuFZifp(b#PG7i6%E+c4mr)={CbzXqY`>1~eCj2U>5(^+O3!Cs2%5{BJ@lhA)>Pn3r z^+iOD7EiZc9twqzBtcpQ^H~}VziPO;9FoBn(@#3rU7C}g^hqEylv)s5o*`OGK8YWd zJTQmD!f2U4fK{^2O5IbY;Go)urRYUb+voC8>t9n6i1LX{V@hi2IcHq85na@8Hlng{ zBVQV|d4QJLT9(1kKd0H8YGYPR-PB?%CfMANhQ=1lKN1b&I~2nm_8k1(_m zX@jv-q;YOR#F*Mb)DALHwvS2IQ3t7+2KY7O8r1#?boezs4Jm?fS@@qlnw#fXD603w z&Nbt)PW3uCURMc&$B5kPv6ZhfA||l(^z_Ibdh9mb(jZL{9agjFKz)+je z{m|=9F#c-Icd>cAMC^)bzEbbg;i(qJISZUmy3nFD{(pBZ0xXSP zL1rZuGQ!^R@eU9`>unIM|9??KU;c}Fhs>89gE~Nhx8?uvzYAssF%R@@Ne(Ig}% z7waKMWa~KM@&{Z92tenp*A9L@3?#uey2xAr0i5q09d{v#H(W(8By)re+z@J!EvH=Mhbn&`Q zYvRDg-8Hrbl00nzu?%uRg31D(nSA!k{g5~OQ%6}?pf2km{0otu0RrQ(`>R8*rBS0n z;K?6{6pq8;$ZLn~DzdU+H%SU#ZYMmy_5oYF|BpFSpbPyMvVMAVw48aH)qO`YA?jIe z2yu=;m>(88l2;$e+6L41Nue%8;TMhBqbsLZ$Gh>Q3{oc9N%$V5Q{HAp0n_I6&h41{*tsJ#X?vyI$`e2>| zD^H=$fh$)5(0`dk?luL_xR2o2K`Z+o0HV>8;6QU{H4)r5Ddq zSYXJ!e>4i7giCzuz3`c%Fq}e2X1NASES7_wDr3Vxw9)Ab0jucNG8(*1o@hPQp0e>+ zQv!xk&zm6Hy5^UipU+*nABf$9?em41H5vi=#~h#HMg|`eA9w$RFeiQ)%d2$<-X#4m8ho5fLk> z3XUE{3)U`7S|z4YB+XfVef5v*>sSI`R@_7SM1=E+szr%1QAtj7ER3iH|7y;0xtmaP z12J@0zl>$-^4+_B&N4&VfwI z;-v@UcsyyenTSX%y}TRm^5V{lBo!fp{)lruyQ*KB?uXk#dY?*HXFItNUJm<6I!SWR zn_QTlvO4qGRLW6m6OOJF>wNU#Tf>Bw{XYn}y{ULE89ZkesCopaDXieDd^gC^Gw63Q8!j5Nsv;6#FGnB*ua&=Nez`=L9Ui3IPI3gF($aX2C zmXKZ>k}pH_A8t|6aVVG%QWmGaH0bpEds!k*M;vnw0)JT-Z-7@~*uLfGAe5?mHb??7 zHNOKinwnM$WCMrP$sk-boBiY6=-Akp6J$<-UX!9XA0AqPt)z9oIO}#;R;+%Tch&o_ z3VMwi?SjO={lmkR(;IM25awtHD8g_ZKlG6>;z#`jG@SGL06?C_I`v-YxCJgye&QIU z7vg{aNaCajpLQmZ341twLt*$c73Yr|06c6iZKRM*18Rhz-*wI=<*=qZH;VmhI^@Mz z+x@p={1gH>X0Z_R0;1;p1;vQ>X8of$^doNphp`{xHVLntJqJ8d&sqVY zVt;RM;}r$S;sAvP0EQ%H8fl1cKtwV4p!N<9Hb)rpwhd3c2|#Uz-XHW_FGWD`)ZaZ> z@l7cIloI*Z?Ch*$3|Uorz>)t+@tf@_TXATj}L{L1WT z@AdGFAC?z7H>O^_5bcLzl)**FLna#txO#kp?h77py8xZ~n*zkF3to(I-z|K6)H!KC ztcJ%Pb^363nhp`$AYh01-k~7r_JtRK>y>-kmHvi$MXCp_%J3IWi}?c!eZw}N?V+YJMZrZLsV&1 zKj5tOKP_D%3ws{-yFAQp;=z|>?(EOPJeFaeW2aJ&@98K?ux>>0?!^00S?ZZ-IA$B4 zW?SlPBk=t(fD_CZ(*O9%VWA?T0-G$*Ka~7qu!fOq!A+ZeHQbpk*9&#@?&Nf8e8>I# zk)Aq8Z`!upFpV;+&)H~NX%d{BLyvx$O0wA8U~*I$9;_+%t0GHRouya=MFDvvFc@c$ zS!~4a{0DBh?HucqB^*tfXRkOzw1LMeS74wSsLjARF_{ve#Hsutjq>09B{y3TG z%Bp}ea5N<2$$t@2GI+yKt8SIXurX_bph@)|V2X9y7}Qpl37uEZ$1Pcl0DByzMTvq& zQKkknE#FM8F;s^}9=pPz5B&?vQ6qfza?&?)WsQufh-fjTzbR^C#)74ZO2($q`s-dC zomn}mBCwV3wB8K5J!aiVPs(P5#CQB2=PxGOZwp_Lj&<(IfB(h&1ZINvO@t&as!eV@ z8BNZ}#>cC}VPM(V`{ltW%w?>gQ)?%?Sohh}8&1XD9e)7D3^tTKRQ1|am|ok8|91wJ zhf*89(6a&wQWwAK<4wY!LpO=bS~T|eO9n^u>BL{2m1_RH>)uWK>}@nuyA!WTcW-Nm z{y=Ui;zmBD5G&@IIao~!^EJI!SFN+pyc~f(9ntxP{{r>k=B#;2AR_15jKR-nPm-oe z8O6>hy}@3)fO77}MpLZ|4F=^h4P>%E zjvD=U*Mk)2P0N=31N~Khdowe*86K}KlJ((ot<9f)fEWo^NKKPBc>y>ZxpNgVwf2BE zHcI|Z447`)t8vhg_V>~&blZV~cB#|r0&e;dvdaNfrN_}?Z@c>;%p%}w0$cq@v~Y>O z|9Y+I>2DotS8Om4jZN&PZ4wx9RR7ecb&aho$cmj~8C{j@zy=}Q0G}^pj5`}3pqOgq zpG1^S1$p!}JL{luwSoG9i~twhXR4`X=u{OJ6bGu!n%BaiI}rA2`-4*F1pINZ8~}v` zHI{%{#Lg;jB7Q#==K|oj(|p+GKx%!|aWNpqHTdJ`Zp|oIe94G?n6UPZluOfUMpLP)a^L z+yWlbgetfWcq`N0cYOqX>I>eD9Kyn*0L)ZpuB`?OY2Nx~_Dk;WuWK$M*K}%4-Jkt7 z=WYa>ql?8NG~}b1EyQJ8vx2Pih_GE<7C;a>RG=0wrq0_}K zS)!|5nH}#`dB8}d!m6C$pxqV7Kp^XdCHJ~#NRL4(f3WPdFANA)KHcW&M)OQ?kx@SQ zS=T2N_Ug4u4^3@?0>l0v@*jTDpYco zS8bICI&Hi!1~FAaMrJirr9x!L{6RB^xSv&~;SAk`*S;cC%u~Sk6l+b-p}+L{@s~6$y1FbcW%XW7P^!-!Fvr>2Zd#FTzSkB{ImeRbDti* z(&}n&P}*oVaNUC_15+plx_|FfE;vaoq`oaI$I$&u@i!neSCu7{#JXL>MmWi-fJb%WYRk4}CqH~3DOj}R9 zHg@T|K&W|P0k@Dy|42zrpx6&7KV-MR($*%EfZQ#pcU1A^wMzvB13erUY*Anka^X^l zvx0w)+aRTF_|vv>*O`p!h%;$R@FIqa!ka-!u6_Wvjo#43Pjqo28W6`TZ6DL}Wcxbo z&-TAap&ZaVIF58XE;o(mQdA2uV%y>jBf@p9zB^IZv}PF`-V74XzT zr$>l+2&JR1@x^YLtndL>%~|+n?MwpY1M0?gb}Za)#Uw)R1!)V0S9KAQK&R z0%eAh%aUc9^V8k#MY&E_By@28&v4vC$_6=;{Xyfwo{6&3WSb^yvKyCI$Ow4Bac|+* zZuz@QvaGSiFwGnMAH4zp<2TuZ)6k=>@dGi$Y6D2dLQQ7V%-?Es!WVIEpy)EEM9Nxc zS@RIvt#x{h_yOi3@cnx9@0t-J0el;0?AD*QNk4}v``5Cvcc6bAgXko$*8b6@z5NCq zrhylEAGCLCKBqhGH9k3M`#%AM32GMceSZUTn}LK$i~Y(V1VMOgzPp?J`1Po6p;FIv zc-N=#4M=qVd1y2Q{E0*3z{fon+b|9PAo7c$PyCm`q<_@M^`}$mIM0EgzoJK8ms5x< zqPIszW&=W|yn(7`pO_2W#h%es1uQSCzR8f}?BBGkp{_@smctry-iy12H(@~n++vyJ zi#cMS4A$_q-p@FL3gV+m>q2&VrumlpAv-@#s9+}Hn;j_DzInSElLowV%@L@^cK+Ac z_eqVjnJiFp>~#*O&Jof^Mg$x~eb(S-DYiYDf)2G^-l{P7=V8$%i4t$5lFAulRb=p` z9T(qi=py;+S=uqSY|xA}fhaA~5-x?})Nkie1J?ojsah&xBO0Lda={lO4{Yj7UWyWD zgG2VV_Cnk%PML6O4{Bb+bNOzaT@!o$nXNu+qBi8t1{v9zH;G2lR(fPyS1hvO`X9sTj1P+n6gFY0fUc>MdTXOb;@%niF!K4Fqa8S^cAaA6nFKy z!xJZ$L&`T6*OH6yLod6r*sT_uY%}C~?E|A%Ux?{`5g<@4q?`0?{U)CKIrZz zH((?_8PQWq$&F~bf4?KO$r5ORU6O@qc`;uqS_ z^h^g?a_C5{9*kW%-_KVT*HAG_grapFMMv2mcLr_2bod9-1|HkIsO0Z&;3UC2?O$GW zu$hb$Ta6gDB9$#}QH-_?;lk)pC{wivi+z8M_uK0<@?vCCQ&5ZwAF%2~R%RSV@;?5g z^w1ki;AKRJd<8Ssx}X!Tgz3S8@I5om`pc1?m|lZ0BaEF

)rEo=p?6 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 z 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 ~}u z^NZq5>FV&#&Koo43en$UpFqJjKa3c-?ru z12Rt^MJ=re;7&0feojSF*-Zikw!fJ-c2qw)SK+OH zkfJ(5!a-Tbhb-`_6RoEa6|GX{LW#k<^W)oJmR`iFH=hu#U&C)7On<(;?8QR5Satde z$cwU08PYs(`5iN9{5KA%HVl_rG@b}W-(UKEK_|{5N5LT9T`v8SeX~VT+DL(QdwV^A z{Hfr-*^6Lc0&;h1YUVY=36A(O+G1;m7>b@gs9P9PsE zl1_24{0GRA4K6p@3X6(vMoDAr0oq|gPEL$cSs`G{}|%E|+OPv$@E z3&4u3?ui0yO-z6@*8QlcvmEn_)p}pSVb%dbZ{Lr~?>WL-M;otL3T{sVo*~3_Y(* z10l#Ixw*XzqsTqY00F}v0EhW~UTMr`j(~|ZHZyY)@R-SXdGWMtI3moK$R7c$vWFbt zBTNIv`bhvzA?W1944h8>e7s+MsJGe^gCStk8~@Ja?0h+`Fg7#0+mGRQJgaIk{O?;T zk9&PjR>*gcP{3xIeSU7;s7VJztG{Q^(L-hW|bFv#znM>ltM*5PSp7xlRC( zk!c49!r6Ay{2x3BShPEU;f|P@IpOnT%JaV^&K8IhHe3OflXlmuUmG`ox#cWUOFSbz zJ=z^vp1r3_FVZRU357S}@>~DK$3}lJiJRN;MXM;3EAr{`qVSoF1Uv|d!sx@*+ErW1 z-idsQ_%=GNPEueUOHSd;G_%ZB_v#lje`7H*Q5(8X~RcdU6 zB?%8M6qdo{Y{~E)pnWDJCkIa-kxt?Zxi$H*I;cf=mUCc7P zp-B0^OZHr(#Ls2Q+UtCOX;v+~niwcjiF?}6Lsg*`Vi?Ucyo&J^i0s19Jb+4^Q0+U) z`N)WmM+0sFbPBn`L+Mqh)vdM2QVd1$G!*HB%}u4No6QhpGZBw(k1-d+PSOt!c56DR z=;tC78Yio=TfL#P<@x}m6myK>{WH7=tOs?Sr)cd> zAS3n($=dWHQ?i@mwaB3IL(2!X=3ERY z`V)ewBJBHq<~tf~Dn7L7jG#VyYr8n}s`TUPhkQwV=w04i5B9xitVZP^2Vhgvg2a1zvZJa72b~*ras?++F>?yJsmMgX?!hY z7Bsw#A!4W_B04&{$qe=wVA(D*7%M3$ePfg9&LRBuL<}tZPM`+z?dvW1FkrJ9|HNbf zHq##;{#*M0T|cbb6{t;2{}i_<|MZYXFeKBx0qc%~*W)h{5D$P%E!+JNhg>f6I3`C% zT6!N~wjOrg{oV(1n`^BDv6$~u0C~%GderYNw{o~*({j#t8f_7k zeqm`fv_Q>z!jPktbN_MNx$<#40zSWbE+O32;HU0PDwg!6s4P2xb+%Hy4gxG;Y_KRr zS4yE9Ekq%3p1NZkgB#;-(5n~6rz`oosq=5ozJus`tUzDp=iSDOGSP>%Benr^VJFp@O7Z^R_Tc*&Q_SEj`Cmv=kCwQS~L?1y`#D@pRph%_{=b_*d z_VGGg#*;{oFzC(4YpW=5c1OJW5WCk2TcR8yHZSEchAYAtZ&lqE92yE+KK`eW_4n`> zNargcYh=iqd9h!|JfQN@cJ_zB+KIkXT2WmZ+{;R0F`v>-$aZTt`!gB)08=|GY(!ND z3`j?lX{U=~$UkBKTLMc;QTH z)hZaX{yDd~k`>keOPe0ivI)JQE;}%gFO_Xg03((J(wP4^;I6>&taaVh?aBfW|+0dF0V{+_TaGGX+9he93(jOCbZrLV#XE;^&cUm zOPk#4+BCe7;)Hu0J*l&rfdboHPIF|$a&i|){$c^V8L3F{! zthzl~uZ$utbHo;f^C)Mf?~LL~Puler(9&YW91;x~Kf+&upvG*kq>TkhogyfJ{z))m zE6t&e6z6-;UwHonzqJxAoBeOUOTNAG3f*8jn-{2$eE7eZUjYX3bp~DVU?hU@=_8~6 z$J$#!W!bLlqLiehARz(*3W6ft-7P33(uhb%NVg&&ARW@7fPhFU2m;a}-67p6-MR1g zpL?A>*EwsAGxk1bjQP*;4?g~n?|a|(x#PO8>$*W|c_HJerS-wEibl22p!)2Rmh5(A zy0*4}$%~ZcMtpz3sh?8xb8nS0e|ac@WCO zIc&@SF}W(%JhyFB>^PZxxuWM$ZIJ4HVj+5QWZKr&W>=wye0H6Ov3`Djs@KQR|&?Zi2W=Se_Hvv{;Jt?e}7CZMk%ow_kUKoSUPZI2T?s@ zd5E;VkQt$Fn+IoADeG>bVz5BE0AZ`MAQKZ)OPbo3+}xnxU|dXm!I%z>T#ddOpUb(Q z#H_K3j~+klM6qXyiH+s38Rswfb+W43J)OWvXXJDHMGUS%RT<&iXestJ4IRfClDL|N z-&GjjwcIU#nUz|xG=H`sy|PI+nBDS;rPj>ySwZ@emi6csr-L3}*#}-u4^NkRcN6JswUQ8J}2h2gACrEks=yQMZ4QUDVYW#F2V|CAD|Mi)qkoi&kNZf~2_wNQw z)i;J5*zXZYc@eIE6r$viZ;09?bFJPvmwy@KLVXj9*H~E##U@#W<%{E_VGL9*z|acF z^eeKgNe(&;ka&k7QMIx6GayaNU5`MCrn&DYzC%R#B4%X#&{+AAxG+t+&lYFdo&8(; zMxtZ0{q_c4`IiGKGOwP`>V&_Z=ognx`ruV&#GS|~=}XAzK9HZ8+4?~+MSoJ_!xx9% zkYxpf{u*&YGdC?=$)^uT(C~H&cBTqeRlG|>t5|NBa(eqG8OTX#wAzfd(=dFVRl%6K zTSs7X0K!EDBz2ZK`0EZ~EHYo6!GV7oc^I>UKgX zE_Ji3)|TL7k;8~(Jccx5>tSbf&*4S6lEp}`_+dWZKZ znrK;yDLTE#@0+RaAx3}kZM6LSU@U>dw3&G6=EkbW*D}H-4ZXnb>%2*!(8Zi#<1tPD z;BDw#T6f)br9Vfj0+X;5Kf-C3vA@&V4(H%890~~4Hl)eO*jRr6Q2;YL9xZ>UP8v?6 zA@?of;=5QurX%v8EPf6F)Dv|zk#mnp9n=nE92q~7{SO#^&nzS5Uf1p;;9y&frP zS=kck{ZyAUHGePQJZ#?a{Czu)PJzVGYo81q^QzI{7tN}p+4oGI7Z0*n^#j}6+bMZ0 zNu>g=&VWUq@ZZ0*?_a+@C%c7>HjKai^TAY_OqT!TaOAHIDXkyMx5jD0v#OsjqMVa^ zvZTKISb<{ujWC92!bBztgMEPg4!{5M`*#shQNG!~LRWpP<-S@pMKV{$j&YO5@}Xx?59HG@F*yEq%11@KeE1UH$>*7l$6#Qf${1D}zR_0)cxs#3)>TQl8Qr zV_Ca)@_rX3cZ>B9C_FqK84dd8c6(Uw_)ePVi6MzfFGYLlK)IJr+wj~kUTWqhgS;%6 z&09_Gt2p10A{Kxi$M@{Le4@)SV?wMsjys-(KB0`~s%3n8&y{U(X=ruGuzu4Nn8hBl zq}ueC2neIkWxHXE=u$*ecKwtby)9auMT2o|KOZaI6U8rvn7k%!V`5>RyYrN)=hh}> zUK`)+iW3=4HG1JwBh$Aus*h^XD7Y1`pHHa;Tm9V&IgYKUqYYnI*gEHWVaZE$JvaSl zeS416{nx&Z6Nk)f)&6|5+4koLXgRjV8n#?%K2K|F_--0C$8%3UVR%}?w8)r#YKuza zPmrG-dfxf8wTOWJ(=RNZNRQ>{mrW&-IIb@^@_-D_f%4(~gU>}OVGDVJ6k&o{#K|dF z)&<_`5_&P!{fP_WKf3_qVw{@7G1+@vpGVS*Eh@gN2baf~YGD})Avp&{}P+MPWDD!RH<&`mG2$8o*<^POR`yQAY-o$nPu z=xauFpnv?t+?PL=drouscPwsve7xU;Qjm?^L768P9a!@I#DPMW;qLVE&px z)--P<(bCmbbaSh?q#7|8Oeb#&Vnfg_U!*_Pn;e zu8j9l;``k9(G#w#i37~_B8?QLVO;6g=GuN0mkW!&dL-#B5|pUwck!e4WLVzro{3Pk zdYP?vcu7^){n>^+rK=_~n-YOes=7DET+LM?4dqdvX>O)>lB$|n5u>xREr|E=3OAeV z@O9p{9>y;ZUiezsX~U5^AN)87H}Cv|uJME4ZK2YW_xfN4=@pwc1*3iQ zr@69n@mv8SVf&0p?imGvZ{)Y!aC?T^i)AFGSyS5-NwrwpL}y$NTD3;=HAU>R+KT6w zGGAYzV8k5y-IVK$?{CNHx5Wyv)S+w3VD#!|ErzR$ zjG&yY8IB3^WNQYEvvUSj-5h(-A3!vuA?;&^%YSpgww39YZrM-8KPf2XNzdAYeu)?d zSDJ817FE$r4vxGZC}LA~bPCHDv_yJA#Ja<>H1VUYGp}DG+(+cXmDTk%8-BTUtyGq^t;0XV4xcK;F*5@2_Ur=h9oMDkKDsZ!!C z=Evc+1RksFFyAo(qurD!@0;&;yT#Iylc}K(tp$g0Ik0lnoQzr~SBjEsC1 zUibC&1tgFYKC?u2|2812>M$D(pZW!6m52un--P2e@Oz;KAE-01s$B$ZbgyMKl^L$> zGx(0{lhtE296fc&3YVC>kC&%v#H8L4Ad^LSrSdUJHsW~>exDz{f9K}p1FNnexl6i&MwUb!=4i_N|QYD?1%Lpb_|ntIB}Y6Gmm<| z&@~_JQrbPl@MpH0o5pzLZS}sdM?+pP{Dl)6OBOYGa+YC;NKWX&7uVFhuT2vVVn()u z&d!^?_4>s=sAZfrT(=k^vCWsc74T?6*B3XkwYsDfO<@5*^r^ zvuxaFuPOFK?^l&x*K;ppEmHOCH$Q&daS7;)m8kwBYtt|IT}1(fUl&iJS2n-poz3Yb z3cH~@j?+TP?ID9K)0zn7l*i6wLgrVj)zC8Aaem1%dOxf|Wh=lrz83k>xr*c5{)CaH z!}jAOgEk0vTbW}|{GnMysCWz{|ZME?hYgkKpZPg|fUGufN0)`VvV>!agP z!-2!myN(X!0&vRzlDDwwU2V_}K!_B$sX?7K{Uxu!q$8e#={|e7EOd%G6|Zgs8V%FW zWI(qUI}#l9lvWaE0e_bJsMb^M;Zk2;4~A;D@7!rlbG=JX@4M2Ujb3C_=bNVg9`Q@M zr~fmiyqw=B0K|4JJ8nf~(?e-rIoz4J6SaTQbaf6QVZ_jVsknvabaagf;|)MdTqcd!HouOa_x1N9hWX$yC$NAYZAwf<)fRPIsc6(X zghnJ0=9u5y_bo*)&m4e^f!|s%Waxc-8`s|#j=4?Mw(K31#QE;3tM3$vZ+4y^+W|7C zVrR#GdhmA+mc11cD3#kT?OLTfFiewwkk@ zelE%uV92o13kfAX_;ut9l&gr8l!?2iB@Hu1P=9zU9ra}?!I04$Ind3`BxGa@mqItN z`x4mL_HJZXR8YQel6?F)ddlU(rTfF-*2Sj5WTD5+xb9k&TP`Io^XH^;`wJI73o{Nf z>|bs08NTplbkRH{48VH?Z7=g=1U$&CxC&7Rxb7~WO2aNgx9UN;;r&Xn zx0lLyhK1hX=F&DaWgB&zSH*HC3@hg4xOh~E@P@SXKT|60W-87uNl?oOXuCX*yZPQ( zE&oqv{BjcZptM8!l%c)fx&$+=YHy+f2A0su!PIHd<=yzj0bHv0%GQ%HZE*sptyjC| z=afV@{;Y{5$&*wGkg$}g-w-2n*p?iyY^`+QGj)mSU5)lhvvIi+>< z@N(}mAmS!%W9s3rnMx;?n2qPJ@NFY>^35dwOvEe-2g;3!&v!k|EemJd$r!8sduL_0 zdsI`<|Beiq*;@T^t(^#&ge~#Qz~{eXmAWQWzSom&U6`eFiq{jh8sZA{KN(o^zIbq` zW<5$fSMPdnKY}TMQK2O{8h!0xx8{%_ed~MV%Zb4GkcRvZ*m!?sWPZHcdZH94>dGp- zi@G{5{pi;T$?Hx$E{ot->J?lu)i}1hjecJ<%6z^gZ%l0h<1RQjSa9(BRlAMt<&5x> zR|{=vWGv?Ikx>s|uIqk!j_An(z}xdc4j(Qa-udWz^kf6oMWF+}Z-1W{8g@g4%aPOx zq$YrG{^a%?6zlx3xd|+aW+QeZ-Xuy66O8=)d~@T*C3cZQ>46s&w~h?%_)or(HOsc` z3caczFO#;%ve@dfGFTOTJ%!5YBmVE~+KjxG8+z{+`$#`n=QlA)IQmhu+ZOhzo7;2I z{gfj&94RDH_w#-n*t@ZtP?Y{E|t{VI+az6K%eu@XnPI{hLwV&5RSId zoF?9Z>Vn0tBRk%!8(sAVzdMvgxi>#CgCB~d-xH<9qiyNI)+fPy!=9ne@))@j=4jLJ z^+MUo!mOvJ+Rc5}6peCQ>_0F?A_Adw4pHN7&?~gt}@xkFxfuWpW#x(+kg4be73mKjv-Q zl9_hS=xmdWq*je)?)EvaGuk6IL%AA83=elkY-1zY9Cuoc7t#&f0XUTsgiy@5BupHpHo+L=^&5 z4I!36C_3J0e{c+7d)Si)U)};a2EoXXmiyK>cJRwvDc36sU*!I$!c(^{7mE zPY7FOrXi2l9p42d3cRJ5O#3bmha&-{t$;*~lr=ebM`Y9vd@pyp$9#HijlJBkL=nFLR{#1*d1FccWN+as)jU6N+>eZG z#@D$4c7Uz+(jH2~*9`b5+v{fNtT^N@M{`e=k}mBrTQ z^ai2umbf+{gSb#l5ThzAlQ4#{FpSuL(@vj*yQv*i=^QQ_ickAV! z+~2T>4K42USZJHJG_-*9#jF91D4~q1>TZ%M16OL@q3si(u z-ao0)j>@nf(Qr(wZQVbk()H_8M@#|U+qk5a4i%I~GAd;IE(mD%ZH zIkg3TFQ;r87q-(mRccAUrQA8?jESOZ!4?qG*bgJ}6uf^jeO-4tlZz88>CpO!71WDQ}gh2|%AI`qGm6Upkwe4BMSgjnSXJMzn;2QgY$SEh+#!A=_`p&@wqq-{Dhd~hPlIrD4rX< z)^xxNxFr=pL`+=gwv^JcI+zze7T3R$Sy55ZZ}>WcsGr<@itYjb7GKANMs> zr~8e1(p#fxxzx?1G=36^=yD6eusLM?)RtZ|A9wG>ZtqL~WB$|RXN~AYi3Axm+Ybc8 zWxI zUe0IwYX|b9Ch^3{5=94laTG^`A35qrm=;uuP~Rzjc_AHHd5uA}?c|R{W6m2Ls$B^p z^(b`g>90+_FIw)k8Sp&v5ao;Q^DS?=W>CToj2J znUn`TKbc6w89((^c;iD)L_= zXS5kjPN=th2MqeFUwL55qb0qqw{uNm&$*h3b*Ua8%EHA? zuULFazhIa~Bu+bB))y&C@J)CHeoE%~Gx+IKsleGbhZUz7w&`vuF5M#$I4GY3%m9BlrB+UBl)g3%3|wNw`_R2&6%6~ zUBOtsPHjgkdh?ka(_@PJPxl!OMHn97eD?fvpMUa_>Rk7DO>2uKcg$SoBbrLpdY2%J z4JlRA@4-a89!iOjkvL@i5LN|5J(=NE>Dm*YeO#4m8M(*aPhW8xk zh(Wimu6xG?H&v$s`F#SrKq7r?bOx-FUnU|+^*oKklKBd92djL&!5+o2aT&p(O)e8W zq@sLSL^-8Dmv5$y4oZnJ0VDdOxRidxH7TNz8+22awT?@|p8~Syo*GJsLiu{tc%Yc057_a)dJ}8tA&(r)LjND6Sb*>?mSL)P8ACKW4?-zpsTW*-+%> z0_XUd+_OvTG1Rb7w=EQRpI2fiBBb=~9`Yks-dr!d@vX_%VnAMJn{jMS>TZ$$ESWU# z)6-A39)#G9HJJa%!J;#i?iT^l`|Q~>>cfZmTG7$bQl_R1Ps^;g(@p`+nb|$2;9g!1 z;v>0sEhsDualB12=x%Qpx-XN3PMs9izh&zL zqfP3jM!@$-nmr+>G~v!bU-_sf*E7=m+q4E>f_;0Cjm_&=GN`>`)<&#V2972sC zVgBgwr^x)ExzFH>Ri5U1uKWI(m!8T!ZgVS?_Iy{y7D&(5@_WCZta5w_xf(>%7b_)d z4xKR%xq)AWO6p~B+bcEZBIWX{j5sST{uC z!5sf~=D8=X+r?Ac6y-mJtm?Th2W-x0S@Y(pajf2An&OdI*bQOM8iGp}=t32ClLFs# z0uVo5ZjUSjp%Bn=a6DTUKijs*G(03;4|PCOvmG#| z=0J-bxq6u_-f13gy4y;_3%ceDEIF+4cMr+@N0r-V3zy4m@C{Wxf(J!zqO4C<6HDYb zSFbDlVo_>gxZA@B)UOKi-pB=Ux(l9vvPrUV4Gt<^5%|W#6`=qsAhLuN(8xKMlI_)O zI#-VVu%#t<*Kqjb#>bi%F9u{aqAC{istoxW>I;M6EUKG-STDrg zN~$8KIVkPlZ8kGhK=+*aR4u(~V8uk^5$y$s>g=g#sWg?Y#ctr)(gGjzlOuNjq+#@) z&wS}68<=Pt4cSRJA}702AN0QDsTXG5Yi-v4W;5SuyMFdf{z6#8LegUJchEa;ZJgvT zH0}Mr5>iC2GC|GmLZwM@TMca!1A_Q3LS-kl7hcmD;Y9Iuqiq+Wc40;_+K;{bK}<~z zK6%z-Wq)%DuVCBpx{v<9 z(#sy34X10mkH$IiBx$}XYy0&ELp3{gFWoUfmQaR>@jx!ll>6@1t&)5jrY3^XzQc-R zVaHn~@jok;Iiu1M`V(<< z8!3@mb^=9SB(Dl7K`2%lbJ6GY)M}NF-(A0B`-;E6<%>_O;F_t`VaY{VN2xC|?+`p= zVf@|I9BXuWS}s2Kq3*0wguT#eKS9X2+$=c@y`0MT8Q>wSWP()mz9 zT0#RLeqg`Ozz_kj>Xc*DAG=A!MX26SL&9i7A8F99e#znbeFJ}=O$1l{6WfxkXl}Sf zMj=YN$BWt%m!Am(rX(mVYtMgi<71>3^`c#Jd_f%hMlO%=qS{nGHPuDz zp1c}lc=)RQjPTfeK2}4T8?$YBOKZN}wf1fUHP^PQ zuqS|+)}tl~!hbiv>2oOr9lBschKRIyEhaw$kkoxl5<`tKFV_;q zlxI`kYQ>yLVtCP@R7;}c#rLbIY7neQtYCk7@1?%KeD&S+m8k?w(_kI+T9pY~$-5Wc z-ru{g&-KfprC-(W=y*_8{9sAdogh|>uv3s#GTzz?x12DI60>E`*yR2(CR)9)v|QybK(sV~yaPuZto5s45zED);KpFh<+&|P zgoNS8z*ovFCjj?F0{o0@3h-cTkKo-~ z*dK$s1-N`vQc^n>t*1Dw11N{tm>aCRb%p(~syePU$BRiY_C8f|b^d4C4a;?pF3(|0 z90@V;o8Qk&;MBu{M<>C_wf&uJv2&cfK}EQ8Fi@OU@EY>LflCA1pWZ&Tt=^B1)%R{I zx1U3{nIOyDsu;zbV_}2_>(8WLvnqOV zPcPNoO`C8(`I+pL&=a>Up*Cx?7Yx6qOJjAL%|n~U9wca%p<~w*bXYpjz3HKx?F*^9 zch6VXjElj*K+a;qcnGsDDDy5RL{szN-TwZq0s>Pw0_W|ao;P_=!yng?d6~vX+-&He z)C{YumVll$ zgIeNAk1dH%M(Z|Dyx5hZ1otakcn2F`sUH{KF*6=Bl@^!6?} zxw*zCdn<@s113DfQ_bTQ4j@1v2nSskN8!v$cG@ERBf8zWE=rxrpUNBIbc8@!|orn)&#^g^Ku2eU zp3EWJ6e@ZDi@k-_2q{fN04*xxqe>r@*z6C|4)lbCp5=M(+`2f~?5Q8T^a`?+Nw?25(3O_fPXEVRPu`xsNQVQ-+qT;NhScY6QFn8`K8>KBIDWdQ(%-%pNF>!>?*GcAmxFuiKOSYAN0DiFksn;GxE zZF<7V8}PhWi%iBOFttW+=$b;*h+YLH^iQeyy1KgYe6}=&zfQgwc4TH|9__yQr(7#7 zMZ_(p?5&fJ;58Ox)tk@xn&J6-_qTPm5amL3?=Pu?QWJ9;er*W^OqkQ#EwtHk;WYD0 zO9-14ww*M<;NqMk26TwXf~REI&Qi7Ae8W3$e7QFRnZt#7-1Iq{qeTL9n1`~QW^kHG zu?~BJGBatg>h;eV)dvoa*!+2ee^#pCh9x6tr&tSU36ZtC!bj6@Q!v({8egvogA<0x zrC{7gDWrAKTmfBl1q4c={ZV@#6O;L#7=%g=PklV1nrUs72jP=C!lg&%Ehte@QLUYw zW{@V}{h*ki6Z`xYo|&o3OJtw!l;nBXC>q-x*kyTymH4l9*Pp9Bp+lGy~ zI6Cfi-=P!wzw_t`nErWALo6AjOape#-)yQU{+Rm`#3dHo!-bKga z9~_i$&CS03{R=5A_3;5h{{n3PpBSN%4f~YCF8f5?7ALZM3yZ0IyIln?*kPBnW%Z1@ z>r~u}6Y|uGj@PI67_iY8Ou9{FjGPiu0JPC_1CmoD7+zt1$~KmqJ6HEo6|6- zwAU>b|611JLzz6^{K2QWHu<7VvxZk<<@XGKeh&DSE?A6RB;s)}?I?Kuel??d3W|#w z*DDl)j?A!15TLwc@*POc-rMf{)$TWczEf9MN74AtWa>xQU}7dpDVkDZf)&q!1Px}GcKp=K`#ZWzTgQT)HiSMfRSShxT@d9^{*6j4 z_Fqw{bp%7Vvv=3`-Q8e~*)gzR?y|BrEWDb54{j==2})VPC)Ph~r@}g)GcYn{_S?f- zr;L9NAL@D_6UDeuwX2FKD_}Vzkmiu;M2W4!57NPL+Gu|r9HI&UFWo@i2k{T0bp*2G zT|GuD4`u{2uujZ0+u_x#S7$g`iHV6hIXQqFOI#erD&9UnJrparQT!;Ek%wphyMD{> zM?gb?WK|CGIU$j^=83OgPfBfk$wK-%Wh%MCv9ea%aY!U>nPc6DP9}TR7R-|c-Av~YRtZCEEPR0G9J{S zBqA#kO;Jd_vCmw1K~az8Av!%4RXD0w`bG{@r2Yi=n2X46O7xp@D@9jcrTBnGMDM9s z$Dch+tfvICk@NAjP@S^2-nh-Q+B~L7-7VKTFVjbiK1z)B-?DBo|DAQq z4XoQWSBHON-P-v*-FvunjLcdf?aqPzgPxTY58@dd``vH$uwQ9tv0xS_?NVt)k$iS%=M~7&n<8#W3C8k@+yF1o*IaF_<&j`? zmb@w$!(lsT>BJ%YoS*Oc?CItc+ZUoj>7*Ie&)KQ1QB zbld%n8!oAMexKtrNl{(=5eMqw3|EM1?%W$xLUvyJdk#Y#AJcPRpK7()1f!w7rN=r~ z#zR&0$Ckn<4!|Jzqr_}8arM>g%kQ}NaTYOb+6B*lyQ5Jn{P!Hr>Ho#y)Wlu}(L9VY zvYP}QS=bu0Z^SD453l{*(}jEuAjuSEv0v~whnJC+mDSJXK+od{+zur$Jw|+MqMz60 zRuBnM6QI1MKg?aj{&^T-=qw(|`l zw6hUyr~(I^b!YARuh5dI0pl8p4o*hX-lk>Dfmv7{D zB4A1q!JCu!&be!McsF&ivTrkxS2o&6m98#Xyj+x89h+2~|0$4CpLZqy1|37%T@;kad^9;!Azx z17-&QKe7OWf`X7mWZ>8kBFg~q(N!vLY#>L$`WDd3V!}XeIc953Cm9B9z}aOtuE#)p zCV)(I_rZfDQ2fop5f%H)dYoHMv@}0YL`vE?|2rBf!jafI>HhxHCwiatgDd2E;vmkc z04fmD`63J7KyS+hHA=Ra)}eF)zdb$JKA6L=T!g+MK-MiGzDckJlM<2-qC{Dp3UWDD7%c;li z$}2zX&QvRMPgVB9BYcwIa!b@4ujke94B+zgf6Lx2+`csN+;P1axEy)^6D2#`z__|R zdrCyF|1TA$3_g7y5hYQfek~MBNC_4X*Cin#K@UtI;OL;I53eC51fofXrB-@QgPH(- zEM{I=>_rSEShWin0h)sL1DWO|3pjKoX6?oO!!nyNg4?kKjnZ9c_AjoMnzjJ>`$5e- zRElQsPFHD!;{m$bj%n1!g72wk-$bV8*eio9;oF0G=;MTBcoMfkoVg1zHYzr@2^p07 zUcm!(qo7Tt53CX6?i36uGX!KeTLkVV5T#!Di>gZ5Fpa8M3vL?aXFFVm_hpBuVpqL%SsaVG3ckqN| zipY(FzY})}OzYQttK_S68)kJyq?#`{g&<3k(7bC|gg)HKi#tTz7rH zCC&fic#W3KZ|HNrZ&56Y#sA~qm@UMps5j_pH!&S^1TNYN{{)5XSgGTLU=-sZ{(Gn0%Gb4%fAN$t-c>PEPY+V1DsQs`1fKLLTxqrR! zf4nkgTqT2StStI(8#)E}@ws9QkHW2>M|{#E1b}iL}dj zWWg>%hJ@9{Vu+Ov)GW|31+!7wYEQqaK&nWj<5pdEeb-P2kY569oqYPk#thISObUHC;r&ay+W>e+CME{UX50d-0@ftAU0#3^897%FtD*G= zGap`S-lWTO#N-hP^zN&7L2ivC@usFG0GvL_yr+QH2oP~VbiaWkgQ^#hWfLJnW%REE zzJG5Di+n+Ja(N2T7HJy+LBaVp+5x^p&bTh~BhaKV!4lBpLImA73^#2GCIb+I=xyEW zK}$2psc?dm)hc0gvGKoPKSBv27}P;xLUI24=O6iC?+ZpC+a}rk4Epm&_p*XPE^HnF z9Uvp!f<6vpwv+B__t%|;0N>$)z5y7v2=Z|$aFgvbf}B*l?@Q(la=LCA!5a=*=+!t* zns+55>rCM*!3Y@EhK7#)#e6nAh;+c9#XK!^f-%B{xiKtBzBsr6OR6y509nJacK zWOHfH3+}H5)l}f20S&kmK#_1I;o9u}W=cyQQ91Yjs$cm}t_HR)OhXX>b{Rt54LIsyUl|7=e6z-9Dpm0JCCIX& z2PxnGFHBZo=@|0xgNSwxh6|acrLj=Ayz1l`Mttc&u>kgSu0UuW1#to5T!I|GqrLuz z6@acFiU~NZ^avIQR}psOUb-O@T;#8Caz+7OWe-BYh`6|SidlkLZhQ&K$ctEBq_ePOWAtJMrdhGC<{kA_woG44;jS9wcb(VrBpCcl2EesV{ z)nl;Z^osQC-iQ-5k~WaWXnt_JyqIn|XD`7Irr-A#rP+05KTP)Ms#xl{x(mms0wyiZ za6N+{Fw70)K6Zs`VD#bzwu{T5U^~zp1%VJbVI;!i^V&@d#;@A|a3X1zork9>=o(W5 z7=^$EM?+yVs0xJm1*cnWq-AL6I^eJTE*sQ(dU{kMs-SBI7cF#Xr|a5cS^fVa|Kf*p z4Fv`0c6Cs5vV)REIYp4H=JG;lu``KDTh+vb{_OmG8xEBbEdLD*4Sl)g^(fzJxB&kG z8!?2bpp`WUXbGp4VkD{lzUCw|5RaeE6WItu6QD$*2`=?R8Sp+MXUF2&ppS;^O&xfO>+o|~D~_4UC(fOzZh5KE0r96}2jz_UfArSL{5AgC_( zI(7c|3z9L}#>NKhLHC7KAouRwo1UNddy7TL>q;F?BT^6iVyX^PV`EgZ*gs2VZ2CX_ zK#9Zv{qm#S?^+d@n3(*)My*DDY$_})+>`&54*+Y0kuu9cmSj;cs+O>u*UHYp6Oo;Z zOUlxch(UgJZ1=gu9;X~)?{99MUD6X+e` zAST;^4#`nmLxZ%cx;m+Js-eEV2<(T>0C7b5Qt(E^aXDgqbZB+B9(oo3HPhYQ-H+MX z@BI8QTwPtU|B5;;6M=~;4vOo^-rc?Z{cR8tH4F}FGC!cBLxJ=$0$@_g%Qlei0LV>c z{UbJ3v)bZenrIU|WyMy*YyhQ*D=6T==SCcjP>kT|a)lCTdvE1&#rdS`96s_vp?Ad} z(timjcI2lMD>Naf8Y!`*#l^&vv=AAa0mOR^u@(CinI0icGx)Xkd{()k9M6s#PAev> ztQ-=t1ZP{u+S>Xpp2);6uc!PD2IN7~zF-Ex=YACcEvV2{-#QIueg95sV`Bq1u?cLM z62BXEc8>&XQI5!Jv>b+3KY<5{Jy`kc0@IZcGObn^8*9j?z zN^R+w`r^H~~GY@9H8z=|SB4!leuiX-`g0aH;KIhJ}Suup6PQ|NT3&u;33GG*ehl z-P7Oy_SY}bv$L~l_#tSz5YwftgM;f~3vNJ-xOM9mDge)=eL$`-difGx{MRKsmc~Y) zT6_8J=cR*#!$MmQ<<`pD8r~aqr-|;d&C|opmJj!zMnp!w0X`p$(7D%sCnY+4&dx># zkZ&>ZquODSHYO8OwtG7}C#P>@WUs@I8QAFE0L~~#P>^JaorN2Vbdbs_Dhpjdf91f0 zh8zYEE$|yNv$MW{GuDodQkIpKp?sP2fXo~W@l&Z4%VMgi+NKc zSn`K^Pkb92rFC?5={Y$`-n@AO@ums%F~yKWVYGRdTl2f9zrQ~PhlzBG`I;qWOZNrQ zEs`Lr^~W-6-l^VV5a&ESJ&Qb#U%9%uNoZ@61Cr7J1C$$IA1dTp3Zx{8kq){X6h2QG z?DsS^F|ka+Cw?05$8LW0_ z5*XbuwzLceHz{!1csgT6uiFM^(dhZ}0Qk|C5}T|kwkjXm|`lz2QMym`}i{@B_%RBd3@SY zRYoOE^ycK`B>tksi)0ykV$dB=FD?c^mXm;I1BwtNy`$9r{*9xms)`J>_4M`q)1`EKN{M`@QVOlyJJ4 z_wnPc*I%qc^SYCVl1=o|AcBhDyUrjaRH@MaL;I`F8+hzklWRUhR*H#>!;^5~0YjY` zIbVpfQkt4%05~J6D^wIXq^(_D1x^9qIYdQ85gRnb8Wpm_48#rKldrGOYl&j2Sw%7n z2?@dIoHst3O)iYu!V%ZrA&>W#2@qR( zdU=6~r!N*EjnUB8C-MCDpV+cP{o>@=)ELAY8ZY7chPqcP)G{Vyj%d@dwSXsfdRSVxE&HLo;z5Dkg zVL>a%X?fkRLR*FqKt#{Bq#!K9q!Eroz7;g^rz_2+{#I9$o_oOYI@#%4QRyKM?ij7ZSPw>01)M zAPXz2KP@9v+TSzhk(t}!$NkDOEctZD7JsNp8?;hV(zP(a<`(2%58FT@+f&mjMto8TtR`Lk_<)E zg5XPVD@a-rE(|w#Ax8avCM`X`v7rk1%?H-Jf(sOJc&-`gKf#AX6Bj$*yXN%wPb^@p z%isi-4o0jMUa3E($nWWhLnVZKXplK)K&2T~P*4zI09FOIHRrsg7X1MzYR{f!_O!r{ z86)L$;Mh8z9obiS=h?Uz7^LcXaVCWDzWgK2%gc*g!GM4OXtHFO9;SZ%QDdl~s!9M1 zgUH<6ySaIJ(V?OE`Gz$H6y%@29G*ajZV1%|13o@J6?6;>^Yg8-46%xL`T5IxPar$t zp!^-L_@?y-JObg^Xfa-YpKCky>$}5Jm+tu&VmPugKJ9Ps81Y8Z_OE+Jv~2b(T2*~g-$u~f=t`N2B(WbN$i z-jdgR8%F=P_%5uq?&Lh*N(_q8qf%^x(KQCB5@3e4G+laSn^FggbGqc^dVb!5yRsT4U5`KjIycC!EfBpg_WHSEOX8-yz#}JDh%2=Bx zpp`{MMX#aq1r828d~5?rd=OD!HsGI{O0&1O$8I-Wi@E!4aWJO%iv`r9L_yN^D!)hb zdIz@Kz-$(3S0fV>v|^pB&^=HKyqYH~{lMc?1ve7|x^j6&lK2GRX%LD@TUe~HTK=sW z2D$}12w&q96D1i*W+2FfZa6@-3+Gkp-t~sIHe9In9#p5mr_?1RFnSsZ-`o_$;@AWP z%@BB|mzS|0Ja_>9y+a9?fbS!I%y9ATHpT_u4;e!&Er-UO)#kY7;p3Jsx)3RW9u@w} z>-5*B51i>MbDCOO0Z@kBg8Ch(mf}#7!@#i@Ue_Mq@yY%iHVjF68~WN?{QMNqD;xoP zq6j!j$h{!@aW<8mlYQG>+ip&U7%M7>6VCy=rw?|)$|3;EJG@&yY;i8s~mvB6nS5}PIhVr4dhP~z+HGg(PG-0{} zWyw1jCCouw1*2u{W$P;*_9{0Efd@tczuW+$cvL{av?s=Ws^LS!SRxYaW&mz59;{ijL%43Q3MoLK^g9XRV4pL|{1uBZKpui3GzwG8{*0EZGW(i1$-0>~-^=L`FFWqndb%X8XV~S_z zhf`3E_(3^3?rdsm3ZdKZBPaMCK*rQvYe%&*=;qRbQj8V+vRM7zy{ienQ$m$$UIoyY zKX4e*OG-$PzYK6p2n^#)fmBrZ>G!2&H-u|m_&flq`Z+q*g1TPQn4RVw42KW7XTtj{ zJiu>y4gEVk9LblEx>pw2uRyk?prka03IXwQKn!PZD}9)TA%peG=VHNRetWc!A3uV% z(F41czS{^`9T*gZ^z%=DT7;AeLUEN}VtuEus_HCu=lPK%;-%joa*)Btbc#)M~gMLW@Z;1tjNJ=F$cF zl>tzhBehL!EehOY8Dry*5gULWsAtF;gWeyCYkx>I04LLt1Z}~?)&Qp*j63Wc9l!Dn zo&vxn1F_J5um&9+9n3WtGoR|{7y&qnw8)N*j_jZgAg74@32AEvrfwruZd}sz#PC0O z!|9b392BH6lxOr!OG}enc%q|&f&!@+KT@7i80$5FdZ=ApT?haI_qZ6^6}V2=EA)}r zK%8v(AI!aZK+gNV_J3zg#!Qj1%wsHN$efTNLM2HdGzt-l2&D{>nGBW6(4az5N@QlC z(nMsQN`x|$^t|4&&faJ5Gwk#Hp5O2HoIlQ5o7R2beecibJzUrIzTQPoFY)y%Q6?T3 zxUAmWw{JO}9!HLJ#2lc<*VRK=8-p125;fhddGl(J6_>AA@f^m|xp1S8kH^7-tuit* zXE`_kTYl3s2yY!lbiMTGQLFs?e8Ih24_WEM4+nDqQ&Uqtl9C3W$JJ|8SQsTatquK(NnGFy>%Tv{rj^pZD@wl5Rt&Kh2Q12A;owRw`|InAdyA!D=9fd-v|0NzoU3 z^9Jw)2Z$nark&jeT2$?i2K!IYY{&?>7%%%=neFw3cfUw8io|i~6R^Csp`jfh#kLUe zbyk!a`zPstnT#?qhz#Mgb*oy_3w}4|@GsX0p9PN=(6pH)x#@8J*JE>>csT3lIUSb> z5P(I64|L+^Gt4k@_;97Z3-app>2qpo+Pl?}uU!{_dd{M~L!9b= zbuco`GV1&REWbhP)>|l|4uis6zj5QDMEk(}Tc`HyQKLNmNF>qd*H4YRuy?@XBM+C{ zAnwzUwe8t+!ijgpg0|he*P*t*N)OhHYZ!9$Xziir>p_%+n?|P4EqJ9$2M!R@&=K5XRl zGbyyFd$g=X@(*TTi@Gi700L9xg6t^o9XlFv(nUutXdMk4?S;faN`|!KQ#y(MuH?(X z!<3FJTk!pmTw(dZDElO2uV6YpRr(>S5v~VNWFMGPkFJG39 zQ$>Gg7Bjm#+`%FeviaMR8CxIke49aQDr0>{W@gG9U&RFsL5v8h*i%ffCf~bY{29Q4l!laZ53=7*xP#X2YUMwQV@9!IVaS$JAe%3k5A7I>X za$?#^yMnaa!-v{z7(_c>>?$;WphM#_A% zXwb@UeolFb_n!nOCMM>UKYH}Yjzs93%h#i;o1H60nXbv~CxdqLiyr>-;H)tWaSlaP?$oLjH;AOoFC8=pLx2^Sjr z@S(-5TyET$(WAY`jvM##OJTMy zaWhX#VQgU$VKkWEDkEpV3*g)JRlNme;oZq(yG8(VuDcby-7!X8AgU5wdy&_k)9CgHJ#IfF0V zaFejt_kSU_rZRxHyy%INTxXJfFc$$tuSwHHaGu=*Z$;0~?JH;~J-YKt6b%RlUzqeQ zw>o;<`ii;flxw&C{Id=T@)FlcnJ0UC!Q<96t)m!t7}qK#dF+&H4rqBuR^njyJ};^E zh!G<;H|zZ@w0rl9FUo<=Q;ZE2zo4${Y&Dt=BJJ>{OXK{UNH9!0i27IZw(gQQ9vmGY z!=z7f{YH%$Q-w(FYqN5UOE=999jXgZj;<}=5V5J}kt0W)M*@LUg|4C4QC#55e?R0oZFNdBOmGRp0!;1wW9~-3 zqZC_mTIR2ei|W>`n-olZk@c2+$Qy}_>(CJQuBS^zjtQL{-zScbMEC0nq-t@Vcdwzf z2Pot2qxD#?J);BB8z2QNd1)qP89KiY@wZGoF{|aKSH>s`GlCA!tBueS3X?s403tzC zqbyT~@GF5osvbHT5;6>85LRC;?*4-ZS^g>I-O*csFZKJNq@&ky$5RflB!7xxC52GJ zlDL7s;-9-sqSpK)^WK7dXZpnW*VKnv$-^To4V#DCl6lv$}PPfRen_Xw2Lzruu zcliZv!lSxrb?<%|r>6$ZnwdEy`%iH%=yvXi+CIG>VaPqi#f%xq@sX$fH`!!m+SDxx z)-0(qZ29uD7Hz8yb2?ZfaH&<)^fUGL_giq4@rjuW7SuO1G^DyXniks<4&6Q}s=&N) z{{2#w+O=oRo;~?>MaKFnCwcXjR8tW%Eg#**f~mIDrnD%EZ;wOUQxOT23TFLj-nrI~ zuU)GNQ-w@zBzu3_H>|~!*Wsd{cf&gzX#iot10D&fp*+->(7jl3OF)6E>RIuNZD_+m z8r!vP8)ym;-0JY*!$#Ds)mp%@ui3smz4q$+OO`GjMbZEyvpm*PA$%fVZi_#y>82Kd zLzzdGEtwiHY1N^!W#M6ASr6_)5CF*Dc22x|^Uj^C%!7Ga4_f^*vDYYKu5gZ|=O@pf z-wScRdtksiv|TDTnqd8u5vif$)HEi}aJR9w^?@CT&%RAjpdKkNNT%|}BIx0>slFs3 zgLUB@`!zPo8nk#u4_#gJ_i+}<R z`&+Pmgsw!R*c#oZhuXkRmTL88R)Q%%*HBWZHg4<*OrmFKSQp$;!k5#-vr4O1um1M! zTU$Vb^XJcF5>0BT-^(GZJ3UKGR{8S%U8z8rMx9*TNZvOzuLzAgLbBM5BhpG27AGK0SN>{OPM#HGo?N4<6iodR!g0i+EE! zUER{EHhGUx$EQFCS}V6ML~-z~v{aK?P&!s9CB9IvUD*^&TP|D}1}h__noxqPD$19E zw$-}#r68TN(z5?Tg@E{=KYbl@Jm{gv_4J4g{{TExoqhr&q#1Dn7~0tORSuQ~PxJFP zO4CI7932-YN1;KZM(g-8vIibaj9(X!|0L|e)1M_Ph%7sn)X)ZcHja&|}yk1;GtEUjKc=W*|!<{2|F)qTHve zTq_`fThnhmNE}8r1`L??t&GC&tn*71kaEv9c5zORHu9Zl4jIyVSmrm~fdj1}$8%2G zHJbBB^Lc;nT|Jm+gXOr<@6rp zR;6BCQ-)H9M4|I2T$I-C`K!~bSQttH;?h=Eb zE(z~4-5yzXi<|-W>Z;QF7czRxJm<)OJHt+`9bs;08G0zPg+3k2qlg5o_vY5wjY^a|> zdl3|^qB!1T-U-Nd_Z6k?))fokS2%V%iV}}obq#ow+*9lGrhHmXV8I$4I)skOz1YlQ z8gU$);WAS?KXKVtRvt#QKmYwz3yX70>vD*%a_bf$yPZ0DD6czpYgMzW{x@jkdlPV^ zp91BWH*X#^sOQ4f-2=NeYrH|APw^{`cWF4NuL+nsX8d6be?DGSR+nfx zKdW!&d=9XLD0;Jnyna)Mn%3icWBqxBZALIAZ*=eRb#8>Os{{x#GW5YV53Q(vmogT` zoi!2Q4HkpskOmDKR-xpOvH0p+)^eQ+Hp_<`4je0K9YCPEpqQXC4O+CQJ#peh(83Wt zqxS7Q zD%u~V1yQ#%=YW+*HRlvK)Tm&y4!ki3p?V_l2T^SlN+3L^EDj7^ZP_zw>(=@c4h`A> zHLIM9YN%G5Hf@d_OUy}m0vNzkuSQ}PxPu^S?rJ~bYaz#gC;B424fLLgiOB(77nNa! zr!Mqckf+a03uM3+PL%HbglQ`f&^2ey^rLU9%H>2T*^q>wmkU&Ux zG&xUKW(z{YqgHrucC5b@J#}`)N}bE?DU)=jLo*{j6G-*<^qj$WxD6{w+v)HxzTBH( z6DQWEvUu|#w%eAL1F9&H(NrVh&7M6Q96~|%I(zo)6LOie%jnUgYhT0GWDQa0R;VOO zFbW#!^)#O#6tvj&G?F4B>VRi>ZrD(ZB(1S)tZ0&y-)`L8&7sxFQ>Rp$H{VcEmRvD{ z?p^wSrYGCDmlhu{2|lDL&w?CA8S;#30#NxfnPU-@gZYPk9EysT@F!o^0ttDdEaIRB z-|2Hqz_1lgj*b#jS2B>K@IVZSmr@%()~cs*-+=viL!#?brR5FY!-rc`T5JcmFiQEE{h=Pd zTepsev=C(k58K>@ezxAwiXVME!b0A!sl1(f?Ml6 z$bz(fLbVTA&{%3+yjO;e8#nI6LzyB6?EA*#H;5u=->AUE#Fh%7A_T>R=D#8lgAWYH zVCJMgND*O`%r8=Wfn@seam7!yHYhJogJ^CAkf>oC_^))B0lWSqn`7_y7Ni_)gs==l!IGEQ)Zcx8Nho5ej zI1^@-KFoEsj7Z2E#1zo9_(Iv`l5Bh%I|+D1(FbFO-Gz? zJS=RolhcXlLi)In;NTJ90M2F0fN8+DdbZ3KP%XaLGRbWlYln&+K6-Qzscnxvve{D* z6n%XrmpXzX#6Rz(sm{6SVSbt-gD71~5elyOmJ~IhIWhb$jgB2YeI>1zao25;gQa}t z3-k*JuuA$KUXbYga$~gNwzvnmxl_0m2j_Nd-@bu@Iw&Bz5UK=9*p`tJeSK{pL3M3g zzlW>X@fJu}RK5%Ijitrc14puCs{>CNBeQPN9*gOe<^0bqi@+q`Z6OrAGW(| zueks2B?P$k+?$PsQxaQEe<8QTaNGrw+~I+scDq5`6PvPg1^HI3IPGeDFV2<=;1>W zs3ByYO0Ip}IM5)9Nxjt)?jV?G^rg?BT6fiNIzAz#M6PdhPVpu!}| zdiwO-8f|nQmt`V~p$%S3hbB1&&G^bp?`xLUl*DAW6wbxA9Xr;E>fXg^%H{C0gEI;a zpSWfJbBxdw^;+o;Yu`{~=uoSkg@C#Xmo8mz)_pzN#mIdlE9U$r+b@uHRmOD6fOu`_o}Jyc8K}>{7BXf>5v21|K)L=azI3O0 zC^(QlV~4)x8iV%slc!g$Qbpv0fKruGIDDuOqHl#o)_HLC$g%LDVQTxF>EA(;&>3vx zN;c)x%Ew-c4=iu?EPpOH{#%11+=zMiOWjU@t{%V;!F)NTA)nR=1#F65fD80*n^ zY7hJdd()(nc!WdjkDWI#%2ojIq|>+D5jT9YUhjnD%d@L1hVVxAnXF}-9#lx!cP<;8yOet!Zyk;zZu)71 zZG8-U!S>c8KYUoY>(JbpGd<{uHIOL+EZ!}dYmpY`k30cOjBg~`-r%`#(zkX^IklAs zhB&(he4fI@-A!P>AA-tYUJ@A?uK{ZzLVPp|F%%3G+0VJUD!$!TBuTZE}1^C+=p5=6wa966!5xp?n(tsKxvv$2V3 z-1XoteOA*DXPuZ)oAO<%I~-UJHi=(asLo7S{SEq6pgTnY&hM$`He=I!qU~@52KWSc zA3fShTU%S2Lt@;G%yLX)q`ILG67BQMnSl>0#=w6^Sj0DEA;8)#TkedDH}R*kWi7lH zW*hV-W@cs?@rJ6I-yuV1I3)k?6QTXig}9}q(31)_1iygd_9_~=mk*k#stR?AsP9r% zmZ_7wcYe%+< zH+Ww&Lv5PlM-vW)(48-{jvo7hq%#HCxsXttE@o3VaF1qF4XNxI%Cw$&fhoeXzfqlK z^CmKj1JFVBbv#yCGcf1bf!mRPM{Ih1Fc)nHNFey?stb75RHs^6@*%GkYG1bjzAN`F z-q*bB%=PQn0};4SBKy9f=ma(%1$T0qbrUCJW1D;$yy8&`D2yTXSjy*w6KiO(hRis> zavE0LX~DX=z2{tSK(%rhJ?A~hunE-0h{7g+(234OGJ8EOZ5ySzsIq%T&fCw?I1ZSh zZJXLQ0f6P8uFFPAcvI(1nxyLT{^34^@NY`aRLP90 z(?2Je91bhk&y5&?poX@!H+r}bO88V1+i#iuZ^vJMpq95ILhtnV7d2Zu5aalh=YM<} zm!6s$NS!%l>{u1UeSdhtxO+Ox3@^KxlCt*KT-5ZPd-oc^V=nntG)prqp|uHR)d_c` zY$5(_&TuEOHJSiSdxRAh3Cllf&cA8c$~!EYq}HFfWHaT9%3QSz}M5xkPXm3Ic=R&e!r<;hQ%G zpXby!3hCF3{m2nTr)B=fN0i6bOtr4e&yP=9aMG?Z4O06X)$J-MoN53 z^Td*A7oKZ-#T*BRao+XY905^RhkOV2@2aH*FG$sqo{Un1AFhiQ?j)sP}YqYuh^F!F~fPjf`!GUC9Banob$g#M%^uN_Sq=Wx5 zklOz3n>V1$jpxpplZvL`1}VtNS4ok9+(oWj=#eAoOiEqn8zZz#B)OU$Q@L@m(Z6Oh$@Qitc=?@aBaXJ@0y>a3|bE5iP#mQbj|uARmO zOUht*Z`dV+Y18&W)OxL=*a~HYuJR+lc!6WDmtMv5u-w7CWdbr#08~}gG;WU_6D7sm zd+IRt+xz=%ty8DY8v;Yg7gw&Addsi=<)O!b;*9v}-T*M9R3uQtXe3E9cVfh&_{E+0 z-8)-c<3Aarxy@+!@HNqepjev7EWu(mG!J7$<-vh@3&L}R=b8?;I)?0e;yr}R_Tb=l zT$e2Z%jQ#IM1F9&`+&t3!5{YcI|OL!rxnc4j+izgD=UlAa};n=`(0yiJbs*fF~;3= z%84~E6}w~RIe*9-?2p2qubFlzn2&gmxG|CuO1(o@hbZT(%v8#7lbxt8?*s4%g_0Mt z4r$D3Mt96zvYK3IJ;2#hVFWy3zw7(EpENERBnw`v9V)+#zP^zr^Z42g@nL!pH-Fsh zn7#BN2FwQrkzpE5`dl+wU!UJJh^t?z+6)WZ4z~0C+czU2*lf_(2-gT3pb6t_es*Dy z#WXTWF=AgokZ<%tX>3l_JmWLP7j zV34aGRz1pQ0StQAqh|=_l+T)u$`0*d8j#$EWA8_P4O@5kf5tsWXQf!(9THacb%G<_ zq#={-f^!>B%C1P|0~oPR_F)`7`FgIvi!aj?mK-noLD@(niqLIVE`f6#VxE-GTp(;t zj(`nJ$yrMG$ZFt*O@|b~41-5aJ@Fp6V|#dbH`Ve55ok3t-o&uPYqJb>4T^FYt}(J| z&g*H8F+It3b+@dzeSVS@P6HT>c^u5)0r|3U7{rK#vd6gFd`J4Fw24(rH8AHjd;I!q}uD1StL?*_vFrQEjQMP{x4W!ZyylDW>XB@FBTOb zQSczdch=QS7?~ec5TI*aG4JlGcv>}Mvq@>1TN6wRPmC++`W;W@us-F8f7;itUq606 z;;U*NAa!H(O_bhot6zRHt~pXC*=(p=v4N8S2Y%pB52v*u&sP~nveY*&dAS@Vph~M- zo0i{K0==A%c6-Kqv&_uQS_)e6T4kAaOi2bN;q@7aSF6(YM@|bCNC6@^yO?afi=yEe z4W`0RUvpdd^zKb@e^Qm_y9#Aoyfd_tEpxTS0Tn;Ik<}Vt`Akvy23%70Q=);w0nz6k z8&FXs<;Df$1Hn{#Se%VM|9%xpk2h@TvVdtms$IC6WCFHSh-G}h*+!J4u_gdOV#?VBziSw!h}`t9gbTW&zhyN z8~TYQkr`vd&;M+6>|C;X{)mzJ)jiO0n1{a`damBZQ{`whbsh5(nXMN-35spK}v+=^z?WRFU$vad#ZJS9s{pBn%B(QyQ(T+$h^;-S+>sAJ}<9u zE&`8T=M0+}xkOa*tr7pmw>}>zeCv?E@vZ6>9x*-X9WK%XeT1Y}I;P^!g0V`%b*oUg z*05LlB%_B8ujtl&v!*VdG-RaO?J6ELMj6f9PIc%Uh@FXh4Zr>C}R238Ip0+gOIFja{;ASj!PCXaMi2~MrGD!{7pP#KeE3iwEFP)IB@`XZ)(JZ+ z-31pjB`4>bSAIPem9?8T)s~{%!$W}yrY6)CMjgy7I_$VfE#ZCs{Lk94N8^p7G(Y_J zG%IFCnYA;Io;XpDG={&WDAl+Do@dUSiT3}2_DQu_Gi4%(aFwDHp|ajWq44LyfoJlZ z38I@}$evJRA_gS|w$>2iy2zNHNizy!^oHWRr!MZ6i6$%2j07f$2!@=sk^qpCqX1xM$ zD9xLJl6fH$MiBl%6k{ocJ1sN!rN35f(xk((fqN4KF6P^&A8q8M26^N~3-KK5)HnA} zbz%YqF>cuhre{oJcDu7Kg+AwQSW&#IySP`qv*-HT{=JS6PJ?KL{*9gv{s8 z4W#Q|2fUne{rWN2dZ$~1)--bR-VMA4G6sKpJmEoDj zv*jD@{UvG{p>*DWvOj-*hh9DT*EC9nn_5o`+qWH~P1jm=>#^x*gFf=(I&0-$a&Fz* zdDqPH@`lQ37KQ@CFF>UJ8e)ktT_aV(um2TUrDpW6KW22K`d@tRzZ-zbaR7G~fwV)f zt-m<6lCcjyCp=N?u6*&B*H3=U8=PL!$Fi2__&59X!uttmLU`n!J@^*6sO#3Rud#Xa zX8eAtkik!nA7K@fo<126^dd)td~2w(o7yNfe5w|@8^$|yrUyo*cMq*R)G@0QQ2-LR zViQhIE4Oq>Zlub1TF~K7ZeALa@C@3A#U?SFz}t+VyO8l$amq;#8DnH(f=iEW?bF4X zY;X0{*A!5aX17V67Ghj#@8Nj(&`Jr2X_34tY1)I!HotW%LH~&9SW|)Pl|rVZCa+%2 zhXhidiDfPtu*T`(M>|nrtBaHk=nux0&R?h`ro7QPR;5{oRy|j18 zqsHN5#|#Y4L`PpBxrq1|-cepuE3`f^q(IqEn^9+XKK-2DRE7vd1w-j6GuV&}rpGMc z9XUn~Y0KABX)sj5n=6C@6rV$695WpqHxtUA5k{MSDJd$tK;bW}C6D+b(~Y#nox65T z;TYEkCor2f?P;Zw`1gPYH90pKvbCO?+8*=a7e9YlfrSGx3y@%q%sfCEjAEi$(H5;c zDzVX%CvRUE0aB3SAlSAZ#pHK*R#-|;i*rOC(G`OyKPP5;jqiAgex(Xgj%V3lSN9nK zdShMtKIcG31gWK+%NjcnG?SnhgEtw-NL``TdEJk6tHBWw#71|zt-GBBKJA3=t#ABp?Dg>dUsYA%E zd$FQHY~u~?DtPaVge9=c%RXywth_R2>wqdcVb%N6ta+dH^iZR~i|5$cjY0I3@{|831Ar_M4FUYR2U**t zPoEtMzsSfQt%j`JOY>-ll#_1tcw*uKA0J+Q3^g!g00saSOF%w_F5?UYIWoHl@G0#r zGH~z*%h$b`knyJyY_XE?caJ zOX|X?r0EHZF-Qiq2?wl>tO?kXCf3wUJrVleA)hQM$v06Sva&ye9XLGP zul==*7kNv)w{zdVF;b|*nB9ZIqDjI$o2F|tG)j{#v1iYkE$?9gD%W`^pG#q+r?=MP zT&tEX6Y94a5@Hf=x{W7#O@OrXDZ0uMkKOw0LF^mIi0d~|f3KmwQ^E`||F zMS5sZiA%uI`XLA#$);(zGEgfKe*3buATNPD`^YvR(lW_B=y_2|iHLtIiBXghV~DiD zRNQIk2H^P}O5T5dXX7|RUtep0qm6`WhnMJ;x9!_ki>m`B8+Mko*bF_ypn}2Z!~=MtIgGDDAxUu1a-*}BiwWvy-OJ)0E^n%)He$+@MlwjpTu_rR8$4io_3Cv2 zug~g%`4R8u;UWwLm$c_QG-PW@m_foBe+1N?jgyli?9LKE@WVXa*b}*t zrjsUV{8{JNR?r~m&=!Mh5Et-M&YnIs76MNeG56}%?;17p%wMt)sp1UAjSD|@!e*#- zi%)KbLn_ag_3eL@Xg6LvRk3jK;&lkGfnN!&N(u-)7t3~UpFC;%V?L9tfn6^McLZEQ z8r%papzP|Sj7bRYfan0LDkxxr)1Dg@-*TBjU55NmY(p;Hx>Z}0SqK85pK7Ark#a!( zutwb!Dc1`Nd$hdunLw+@H$pD64+Wc~kyQ6sSs@m=OrZ&}7?=O^?rjvY!SgO0jf$!d zfkQo}>@svg@(21XR1L$q^r(l)OG>R;9qiau@MFw)`=6y*s&&4moW7? z6KLMK>}*1UCgaD7B8K59L;?|Y>m^WOpax5OqCLAwlU*HamS}~!g%uMkiZCv$ssI3% z4*198it;v8_h0m0{?;OA={Gc)%gwfrNoaDj6GkBJVg$m*Yp>*RwdCVJpP8GP`OsEq z^y(FzwF)%SclV5Yr`C*~LE3zIGx7*7k@zPZ7`&n>DC0F2hOC!iCq%PSDR17aPdy~u zo{Z~KlT+wpx?y*EMoAYW-Ka^TX$8&gbk;rhFRy7_GHZl;nC&Cj4(J6GAN2tT>H(*S zE|yvs?8ALsiAhZ>ovO$33+4rwoVt@=5Fu3^@OAvk*)eDHN{>to*aAM=FXxDV_QIj( z7Tk8|#eo*zROVy?xjN3SXzS*)7FdlMWSCTQD9YlC#UMn{_YT6 zoarSpvdaXGxW54nPoDh(8rJ&y-maZlh0&}*i)mR5Z-dCI=b*M(o1#6Yt!8%0P;oQ>M4umUrh zHYJ5j9PPX3KV@^lJsKkjMiNy&yV5TV-1Z`4dwtF}&ffO}{mrqg6_=={0omoNQy3qt zK7-jjbWC2SlKEy+)6(p;dqn`xRq9Dm$C94vaa|ZAul*Lanh2?&I6ddTz8j$SGb=OG z3-p-wSyZG7lY8qRYC2E7a|#Qb7Oi%?KKRrqApc4N$uJF=TVXQPF+*opg==D7Kw@P_ z@h<-V8XJ(F9=4mo!}(RV?b=nH88f(i;dGVj*S|&(6kRoc(r)nJR;Xb}wbgd+YBF%0 zWdP=QGU^IkBv2TreK(7!?}_Dk=vMd+tU2@21*5*RpV7{Npo)ITBHp<=ET;#l9!Vn& zauN1(!fn!oGgM<2d@V3C(wFc4Il!bR5fyc)#0lVl8q{wT1Cfi9nQpMyLk*DW+BEaw z!7y+}uqRG0Wq#Hor3 zMYLQgK)qs)akbDX zCMF%QWm2hIw@Et6o3V!u9TF;$j4G-jWd04(3(Q@Nx9zgo;Dgd@81Y||F9|NIea)IR z<1;7xe`Vw`tGeB?Wy|~ruZXjl=2BAAKEh{ulK%&>!JyLUz$JF01tT+$aSGtNBE9pY zm=Wd>@Loo`La3EPuwzSy2CMW4Q8aGeyi0Kme~j!bALq$dLsuoPEvV!*C+c-d^Y%?7_ns}Ufe&x7G$Jt)|L61S1h~fn|v5e z(Nkp@yiaU83C57W@4!R*R8kVkmv%E!&w`?!h|-ZEVsW&fZ5oH>B zm~XYuw6-WO?W9RF9W1*yfZnBeC-n*qT9S1!{5Pf${GS_kFzaWY?Rau`NkWpTc`&d= z*QCRJf1wUp_E=j~BNV^#@YLC8)h(*2Rn=efH9394qV8Kq^!{P)8v7TV@lJX9^?X;JJxjn}zS+tC3Zn3{elYwd3&;zsa9q9E&h_<&G7#9Q` zKYo90kJT=8Niv};x+#=QW1hEa(u9f6nxdVcwm<^9+_i4x@Rz$XeyQ-yfh~Rm8~YM5 ziNHMJ{K-;td&dfl1L!G%mRsS#a&}d@E)LRbai0b;RZ@sO2kq&t!hTdz#qaKa-gV|o z2PsnVfRV{P851vB#rWt2zQ-7-0eq5c)8SBqyYc>O?*1}2DIalT&L51zHsvkQYf5#9 zgRxgJd}h$oq9`p>eqUWX`)XC+PvMa9LQfIHN6=zj;q zCy1wkwjuDp&3=X!h@cP z?27$cWELG9jbLU2oFoo6t`0UMSxXer7Am9p8E{!hfx;Qua`UGS4&h>>;#p z!QAxNxPiL5vth*)9)wtMaW#b1OcyCN?P;N`x&4-vv9Tu`vWAZvR~xYdMOpdc*746! z@?161+A~W9N+4ngUH4LLFK_Qgs*@nA_U+x9N>-BAwQ-v^6Ukj@V!OTj zfH0O`MH}D81Wxmeq{J4aFJ6NuOVM5c-U{~&;Vu|#XM>!Og;6J@uW$^A!w?3 zP_1+U#o&dSil@*b?uS<`1hK%)=&K48Ftp= zgNV#$3MjDnwkx--hu?bz8DEYDNd7iU;r`#E+2wL0)7OE4w$p$EaSsUj>*=l z6y?ks>2l7Soppl1;3}o5sg8Wnw^{GC4AArgB&ZDP91P~6qVtA)0KZsgZFMTSaSW@B z^6CDQ-op5|cW@}^xXTsIOO>`?)lcLtMXRc*X^#G!M>`2ge1}e*b`bj{GeDAgxw8+f z>L3039R&f|N4GbYYtaepkgT~h$t6J7B`odhHE_Nry7i>RF9?g{7B$>-rId+8pJ(1yJ(%l2$2&K@3OLcM4FdO zZIx=HE~w>>Pp=&fw{PofeC)TNNOdbE0~sZugETbOD2&iZ2A2%2t!PEp?v%@na%XLA zW2aoE2}f|5oXdL5NHAW$ia1wg81uHfq6^9N9k}ODU6GB`liuU0ba5Q$R!o)9WfF1^ zRaF`9XQOeqsb2xKZe(We^7+}%64=_lI7jS<(Z@A9l%2T@W2t-Cp_v!AYt&aA-f@Qp3=>U=!UK_kwp&Z8!_@5T zsZV^SPXJb6KCE58!RG+^0TIO?jEtlBJ|z5pvd$Scga`mbT2WGr+4g9CY8Da-T76+6I*2vd|IdtDa={A}kMrBDKc;l8i4ugtnXuDXQ_8 zjMHt~-*?8;0k@xWtR-yA@r^$p_7<&k=gyryqM{b;xb^kp$BSYU!XB%2KC*{zHu_S9 z2TgaoPMtick0euVUC&1g<+dRSCNwfy&|)|XD&=B9)-Vq%ugUY?2b-GIUZ z90+D{L}lue2}#PF4NQ$*k4&Ae#^jxOw$pAt*Uhhv?uc7u6b7on{-ygD{|EkmnSboh zW3sX3V7Jp3`?7(lKDED$_$_^xGikwj$iX^ohFE-C6x2n0DFXxBS|lu~g`({2;@9

(f&b68=? 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 M7-tc0He=2I0mYjj`v3p{ literal 0 HcmV?d00001 diff --git a/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/summary.md b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/summary.md new file mode 100644 index 00000000..10bb6ebe --- /dev/null +++ b/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-17_08-43-29/summary.md @@ -0,0 +1,11 @@ + +# CACE Summary for CML_divider + +**netlist source**: schematic + +| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | +| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | +| Frequency | ngspice | frequency | 4.3 GHz | 5.902 GHz | 5.0 GHz | 5.902 GHz | 5.2 GHz | 5.902 GHz | Fail ❌ | +| Amplitude | ngspice | amplitude | 0.2 V | 0.520 V | 0.4 V | 0.573 V | 0.6 V | 0.666 V | Fail ❌ | +| Voltage swing | ngspice | voltage_swing | 0.4 V | 1.041 V | 0.8 V | 1.145 V | 1.2 V | 1.331 V | Fail ❌ | + diff --git a/modules/module_4_type_2_PLL/CML_divider/testbench/CML_core_tb.sch b/modules/module_4_type_2_PLL/CML_divider/testbench/CML_core_tb.sch index 0fc8ac25..52af1de9 100644 --- a/modules/module_4_type_2_PLL/CML_divider/testbench/CML_core_tb.sch +++ b/modules/module_4_type_2_PLL/CML_divider/testbench/CML_core_tb.sch @@ -1,19 +1,20 @@ -v {xschem version=3.4.6 file_version=1.2} +v {xschem version=3.4.8RC file_version=1.3} G {} K {} V {} S {} +F {} E {} B 2 1110 -700 1910 -300 {flags=graph -y1=0.72 -y2=1.2 +y1=0.29 +y2=1.1 ypos1=0 ypos2=2 divy=5 subdivy=1 unity=1 -x1=2.9974739e-10 -x2=5.9578291e-10 +x1=1.628e-10 +x2=1e-09 divx=5 subdivx=1 xlabmag=1.0 @@ -26,15 +27,15 @@ color="4 7" node="vo_m vo_p"} B 2 1110 -1120 1910 -720 {flags=graph -y1=0.17956962 -y2=0.4801486 +y1=0.3 +y2=0.9 ypos1=0 ypos2=2 divy=5 subdivy=1 unity=1 -x1=2.9974739e-10 -x2=5.9578291e-10 +x1=1.628e-10 +x2=1e-09 divx=5 subdivx=1 xlabmag=1.0 @@ -48,15 +49,15 @@ node="vinplus vinminus" } B 2 1930 -1120 2730 -720 {flags=graph -y1=-0.41 -y2=0.41 +y1=-0.79 +y2=0.79 ypos1=0 ypos2=2 divy=5 subdivy=1 unity=1 -x1=2.9974739e-10 -x2=5.9578291e-10 +x1=1.628e-10 +x2=1e-09 divx=5 subdivx=1 xlabmag=1.0 @@ -83,7 +84,7 @@ C {code_shown.sym} 10 -1150 0 0 {name=transient_tb only_toplevel=false value=" .include CML_core_tb.save .param temp=100 -.param A = 0.3 +.param A = 0 .ic V(Voplus)=1.2 .control set noaskquit diff --git a/modules/module_4_type_2_PLL/CML_divider/xschem/CML_divider.sch b/modules/module_4_type_2_PLL/CML_divider/xschem/CML_divider.sch index ad08aabc..30f06097 100644 --- a/modules/module_4_type_2_PLL/CML_divider/xschem/CML_divider.sch +++ b/modules/module_4_type_2_PLL/CML_divider/xschem/CML_divider.sch @@ -1,8 +1,9 @@ -v {xschem version=3.4.6 file_version=1.2} +v {xschem version=3.4.8RC file_version=1.3} G {} K {} V {} S {} +F {} E {} N 310 -500 310 -440 {lab=#net1} N 420 -440 530 -440 {lab=#net1} @@ -135,7 +136,7 @@ m=1 model=sg13_lv_nmos spiceprefix=X } -C {isource.sym} 730 -250 0 0 {name=I0 value=200u} +C {isource.sym} 730 -250 0 0 {name=I0 value=400u} C {sg13g2_pr/sg13_lv_nmos.sym} 1060 -380 0 1 {name=M4 l=0.2u w=2u @@ -210,7 +211,7 @@ m=1 model=sg13_lv_nmos spiceprefix=X } -C {isource.sym} 1690 -250 0 0 {name=I1 value=200u} +C {isource.sym} 1690 -250 0 0 {name=I1 value=400u} C {sg13g2_pr/sg13_lv_nmos.sym} 2020 -380 0 1 {name=M10 l=0.2u w=2u diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/cace/LC_Oscillator.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/cace/LC_Oscillator.yaml new file mode 100644 index 00000000..cd625789 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/cace/LC_Oscillator.yaml @@ -0,0 +1,115 @@ +#-------------------------------------------------------------- +# CACE circuit characterization file +#-------------------------------------------------------------- + +name: LC_Oscillator +description: LC based voltage controlled oscillator +PDK: ihp-sg13g2 + +cace_format: 5.2 + +authorship: + designer: Phillip F. Baade-Pedersen + company: IHP + 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.6 + Vinplus: + description: Positive Input + type: signal + direction: input + Vinminus: + description: Negative Input + type: signal + direction: input + +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: + ac_params: + description: Frequency characterization of the LC-VCO + display: VCO Control Voltage Repsonse + spec: + frequency: + display: Frequency + description: Output frequency of the VCO + unit: GHz + minimum: + value: 4.3 + typical: + value: 5.0 + maximum: + value: 5.2 + amplitude: + display: Amplitude + description: Differential output amplitude (half swing) + unit: V + minimum: + value: 0.2 + typical: + value: 0.4 + maximum: + value: 0.6 + voltage_swing: + display: Voltage swing + description: Differential peak-to-peak output swing + unit: V + minimum: + value: 0.4 + typical: + value: 0.8 + maximum: + value: 1.2 + tool: + ngspice: + template: LC_Oscillator_tb.sch + format: ascii + suffix: .data + variables: [time, vo_diff] + script: freq.py + script_variables: [frequency, amplitude, voltage_swing] + plot: + vo_diff_vs_time: + type: xyplot + xaxis: time + yaxis: vo_diff + conditions: + vdd: + minimum: 0.8 + typical: 1.2 + maximum: 1.6 + corner: + enumerate: [tt, ff, ss] + temperature: + minimum: -40 + typical: 27 + maximum: 80 + + diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/cace/scripts/__pycache__/freq.cpython-310.pyc b/modules/module_4_type_2_PLL/LC_Oscillator/cace/scripts/__pycache__/freq.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6523f1edfe29df3546f7001eb2feb7e343e923f8 GIT binary patch literal 863 zcmYjPJ#Q2-5cSyJkK6lDBqEeRM`*4|Bx(dfNR(+(k><3ly{FCX?JlQS{P8T%fBha;unl+3;(P)tG1mT&A2*FOvxRG9gqIcm$8af@>yOail4J-dP`bt3Mk$*n=?#|wyWA%%!;;A zm8;suVr;ZqnWo@j>;0IJkICMW*&hUs-GHZ_4%rrZejiaE6bZ*YzXl~1%swG5h|2{x zM=F}bKa0PL^PnQgq~}|pOsNttpRzu3>@vEEd{`4+Y~dj2#$om{CdK#~yj1BI-X}gG zZP}+j@#!J!6Us<@9C*m^Ax?d~r9S%s@j+1QGh*3}4SnW^2dp3Yks46tu^-IAkI6>V z>#oOXc81bbOO468ovErUZ^OwLAefWw##G>-H2UL8H^l}A`Le4kw^AC%>$Z0JT+i%P z)y(hr|9nk10P1h{>2!#^=`hNT$u}r!-Jo3RoG_F_QI-x9f=~fP{(5OkXZrwW{^2 Oa340j(Gg4G1^)wphSre) literal 0 HcmV?d00001 diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/cace/scripts/freq.py b/modules/module_4_type_2_PLL/LC_Oscillator/cace/scripts/freq.py new file mode 100644 index 00000000..3c457ffe --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/cace/scripts/freq.py @@ -0,0 +1,41 @@ +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']) + v = np.array(results['vo_diff']) + + if len(t) < 2 or len(v) == 0: + return { + 'frequency': [0.0], + 'amplitude': [0.0], + 'voltage_swing': [0.0] + } + + # --- Compute sampling frequency --- + dt = np.mean(np.diff(t)) + fs = 1.0 / dt + + # --- FFT to find main tone --- + Y = np.fft.fft(v - np.mean(v)) # remove DC + freqs = np.fft.fftfreq(len(Y), d=dt) + + # Use positive frequencies only + mask = freqs > 0 + freqs = freqs[mask] + Y = np.abs(Y[mask]) + + freq_peak = freqs[np.argmax(Y)] + + # --- Compute amplitude and voltage swing --- + v_max = np.max(v) + v_min = np.min(v) + voltage_swing = v_max - v_min + amplitude = voltage_swing / 2.0 + + return { + 'frequency': [freq_peak], + 'amplitude': [amplitude], + 'voltage_swing': [voltage_swing] + } diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/cace/templates/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/cace/templates/LC_Oscillator_tb.sch new file mode 100644 index 00000000..adca2361 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/cace/templates/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=CACE\{vdd\} savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP 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 {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/cace/templates/xschemrc b/modules/module_4_type_2_PLL/LC_Oscillator/cace/templates/xschemrc new file mode 100644 index 00000000..36e35c71 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/cace/templates/xschemrc @@ -0,0 +1 @@ +source [file dirname [info script]]/../../xschem/xschemrc diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider.md b/modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider.md new file mode 100644 index 00000000..06216088 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider.md @@ -0,0 +1,54 @@ +# CML_divider + +- Description: Current mode logic divider +- PDK: ihp-sg13g2 + +## Authorship + +- Designer: Phillip F. Baade-Pedersen +- Company: IHP +- 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.6 +- Vinplus + + Description: Positive Input + + Type: signal + + Direction: input +- Vinminus + + Description: Negative Input + + Type: signal + + Direction: input + +## 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 CML_divider](CML_divider_symbol.svg) + +## Schematic + +![Schematic of CML_divider](CML_divider_schematic.svg) diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider/schematic/frequency.png b/modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider/schematic/frequency.png new file mode 100644 index 0000000000000000000000000000000000000000..e4b0a21a410ea45152b21e69092b27c4fd38834f GIT binary patch literal 187075 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�wTWw%38sW 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 t6~vlD*Y&45GNmD literal 0 HcmV?d00001 diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider/schematic/vo_diff_vs_time.png b/modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider/schematic/vo_diff_vs_time.png new file mode 100644 index 0000000000000000000000000000000000000000..b3049faebba33274e93528743f61a9e391cf7306 GIT binary patch literal 188877 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�wTWw%38sW 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 + + + diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider_symbol.svg b/modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider_symbol.svg new file mode 100644 index 00000000..5de9a6fa --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/docs/CML_divider_symbol.svg @@ -0,0 +1,160 @@ + + + + diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/docs/LC VCO.md b/modules/module_4_type_2_PLL/LC_Oscillator/docs/LC VCO.md new file mode 100644 index 00000000..66d1484a --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/docs/LC VCO.md @@ -0,0 +1,54 @@ +# LC VCO + +- Description: LC based voltage controlled oscillator +- PDK: ihp-sg13g2 + +## Authorship + +- Designer: Phillip F. Baade-Pedersen +- Company: IHP +- 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.6 +- Vinplus + + Description: Positive Input + + Type: signal + + Direction: input +- Vinminus + + Description: Negative Input + + Type: signal + + Direction: input + +## 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 LC VCO](LC VCO_symbol.svg) + +## Schematic + +![Schematic of LC VCO](LC VCO_schematic.svg) diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/docs/LC VCO_schematic.md b/modules/module_4_type_2_PLL/LC_Oscillator/docs/LC VCO_schematic.md new file mode 100644 index 00000000..0ab01435 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/docs/LC VCO_schematic.md @@ -0,0 +1,13 @@ + +# CACE Summary for LC VCO + +**netlist source**: schematic + +| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | +| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | +| Frequency | ngspice | frequency | 4.3 GHz | ​ | 5.0 GHz | ​ | 5.2 GHz | ​ | Skip 🟧 | +| Amplitude | ngspice | amplitude | 0.2 V | ​ | 0.4 V | ​ | 0.6 V | ​ | Skip 🟧 | +| Voltage swing | ngspice | voltage_swing | 0.4 V | ​ | 0.8 V | ​ | 1.2 V | ​ | Skip 🟧 | + + +## Plots diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/LC_Oscillator_tb.sch new file mode 100644 index 00000000..adca2361 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=CACE\{vdd\} savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP 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 {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/LC_Oscillator_tb.sch new file mode 100644 index 00000000..f2c9ddb3 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/LC_Oscillator_tb_0.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP 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/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp -40 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/conditions.yaml new file mode 100644 index 00000000..367b2deb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 0 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_00 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/LC_Oscillator_tb.sch new file mode 100644 index 00000000..99a2d4a7 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/LC_Oscillator_tb_1.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP 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/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp -40 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/LC_Oscillator_tb_1.data b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/LC_Oscillator_tb_1.data new file mode 100644 index 00000000..4770777e --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/LC_Oscillator_tb_1.data @@ -0,0 +1,985 @@ + 1.628000000000e-10 8.565847765148e-03 + 1.728000000000e-10 -6.623891474136e-03 + 1.828000000000e-10 -2.149900452262e-02 + 1.928000000000e-10 -3.395630969603e-02 + 2.028000000000e-10 -4.214225425156e-02 + 2.128000000000e-10 -4.473303828337e-02 + 2.228000000000e-10 -4.114646211559e-02 + 2.328000000000e-10 -3.164780138673e-02 + 2.428000000000e-10 -1.733493719066e-02 + 2.528000000000e-10 -1.475902708514e-05 + 2.628000000000e-10 1.801229056757e-02 + 2.728000000000e-10 3.424177589497e-02 + 2.828000000000e-10 4.630842904386e-02 + 2.928000000000e-10 5.233854800642e-02 + 3.028000000000e-10 5.124830570286e-02 + 3.128000000000e-10 4.292499959640e-02 + 3.228000000000e-10 2.826279486373e-02 + 3.328000000000e-10 9.061328259784e-03 + 3.428000000000e-10 -1.218446227620e-02 + 3.528000000000e-10 -3.258407773430e-02 + 3.628000000000e-10 -4.922711402870e-02 + 3.728000000000e-10 -5.960412956689e-02 + 3.828000000000e-10 -6.200216373737e-02 + 3.928000000000e-10 -5.578779277007e-02 + 4.028000000000e-10 -4.151822253240e-02 + 4.128000000000e-10 -2.087977319278e-02 + 4.228000000000e-10 3.509538925168e-03 + 4.328000000000e-10 2.840051879831e-02 + 4.428000000000e-10 5.031045098685e-02 + 4.528000000000e-10 6.600621989769e-02 + 4.628000000000e-10 7.301026491956e-02 + 4.728000000000e-10 7.001348113487e-02 + 4.828000000000e-10 5.708793198415e-02 + 4.928000000000e-10 3.568931903424e-02 + 5.028000000000e-10 8.468468856595e-03 + 5.128000000000e-10 -2.103839002910e-02 + 5.228000000000e-10 -4.879745780418e-02 + 5.328000000000e-10 -7.079799197054e-02 + 5.428000000000e-10 -8.366402612507e-02 + 5.528000000000e-10 -8.522467190017e-02 + 5.628000000000e-10 -7.488213568832e-02 + 5.728000000000e-10 -5.369274103188e-02 + 5.828000000000e-10 -2.420558417064e-02 + 5.928000000000e-10 9.838250210788e-03 + 6.028000000000e-10 4.389786137865e-02 + 6.128000000000e-10 7.313612196732e-02 + 6.228000000000e-10 9.317029381508e-02 + 6.328000000000e-10 1.008048636013e-01 + 6.428000000000e-10 9.453797659594e-02 + 6.528000000000e-10 7.483018560343e-02 + 6.628000000000e-10 4.398985582914e-02 + 6.728000000000e-10 5.816660175979e-03 + 6.828000000000e-10 -3.471277835159e-02 + 6.928000000000e-10 -7.196764451569e-02 + 7.028000000000e-10 -1.005123794459e-01 + 7.128000000000e-10 -1.159090211734e-01 + 7.228000000000e-10 -1.154865796847e-01 + 7.328000000000e-10 -9.886473682816e-02 + 7.428000000000e-10 -6.792628487378e-02 + 7.528000000000e-10 -2.639734963927e-02 + 7.628000000000e-10 2.046243705070e-02 + 7.728000000000e-10 6.630959146633e-02 + 7.828000000000e-10 1.045518775622e-01 + 7.928000000000e-10 1.293821610824e-01 + 8.028000000000e-10 1.367642385318e-01 + 8.128000000000e-10 1.251543282211e-01 + 8.228000000000e-10 9.576163056961e-02 + 8.328000000000e-10 5.209178012908e-02 + 8.428000000000e-10 -4.716536260219e-04 + 8.528000000000e-10 -5.503568951117e-02 + 8.628000000000e-10 -1.039481915095e-01 + 8.728000000000e-10 -1.398621887364e-01 + 8.828000000000e-10 -1.571023681366e-01 + 8.928000000000e-10 -1.527074493028e-01 + 9.028000000000e-10 -1.268841473858e-01 + 9.128000000000e-10 -8.271620952443e-02 + 9.228000000000e-10 -2.557497283731e-02 + 9.328000000000e-10 3.730076356702e-02 + 9.428000000000e-10 9.737305611173e-02 + 9.528000000000e-10 1.457918680082e-01 + 9.628000000000e-10 1.750145185305e-01 + 9.728000000000e-10 1.802461947543e-01 + 9.828000000000e-10 1.603197408994e-01 + 9.928000000000e-10 1.176824119846e-01 + 1.002800000000e-09 5.756980044695e-02 + 1.012800000000e-09 -1.263233340685e-02 + 1.022800000000e-09 -8.376839157059e-02 + 1.032800000000e-09 -1.456472567414e-01 + 1.042800000000e-09 -1.886636295923e-01 + 1.052800000000e-09 -2.058960621597e-01 + 1.062800000000e-09 -1.944877494144e-01 + 1.072800000000e-09 -1.558485614831e-01 + 1.082800000000e-09 -9.489134263772e-02 + 1.092800000000e-09 -1.902197000496e-02 + 1.102800000000e-09 6.229009031031e-02 + 1.112800000000e-09 1.378489952403e-01 + 1.122800000000e-09 1.961211712824e-01 + 1.132800000000e-09 2.277675427041e-01 + 1.142800000000e-09 2.276792690371e-01 + 1.152800000000e-09 1.957996236798e-01 + 1.162800000000e-09 1.365033947536e-01 + 1.172800000000e-09 5.710999759203e-02 + 1.182800000000e-09 -3.281557852986e-02 + 1.192800000000e-09 -1.215027536798e-01 + 1.202800000000e-09 -1.958065523494e-01 + 1.212800000000e-09 -2.437702073058e-01 + 1.222800000000e-09 -2.576465834890e-01 + 1.232800000000e-09 -2.354650174880e-01 + 1.242800000000e-09 -1.806372456341e-01 + 1.252800000000e-09 -1.003377740586e-01 + 1.262800000000e-09 -4.126861861743e-03 + 1.272800000000e-09 9.611425108892e-02 + 1.282800000000e-09 1.861956072748e-01 + 1.292800000000e-09 2.517905222458e-01 + 1.302800000000e-09 2.821769778638e-01 + 1.312800000000e-09 2.727859287957e-01 + 1.322800000000e-09 2.254968734748e-01 + 1.332800000000e-09 1.471439457690e-01 + 1.342800000000e-09 4.734420155532e-02 + 1.352800000000e-09 -6.217085627007e-02 + 1.362800000000e-09 -1.668425131519e-01 + 1.372800000000e-09 -2.504703767335e-01 + 1.382800000000e-09 -2.992061368173e-01 + 1.392800000000e-09 -3.053740860997e-01 + 1.402800000000e-09 -2.688571666281e-01 + 1.412800000000e-09 -1.956392857484e-01 + 1.422800000000e-09 -9.526820760645e-02 + 1.432800000000e-09 2.064423377160e-02 + 1.442800000000e-09 1.377441586155e-01 + 1.452800000000e-09 2.387487692491e-01 + 1.462800000000e-09 3.069885276481e-01 + 1.472800000000e-09 3.312940016123e-01 + 1.482800000000e-09 3.087332460370e-01 + 1.492800000000e-09 2.438003425051e-01 + 1.502800000000e-09 1.459228782210e-01 + 1.512800000000e-09 2.675528154954e-02 + 1.522800000000e-09 -9.989323254924e-02 + 1.532800000000e-09 -2.165669171724e-01 + 1.542800000000e-09 -3.044094152250e-01 + 1.552800000000e-09 -3.485960235307e-01 + 1.562800000000e-09 -3.427607575271e-01 + 1.572800000000e-09 -2.894065015153e-01 + 1.582800000000e-09 -1.972625556750e-01 + 1.592800000000e-09 -7.810211478713e-02 + 1.602800000000e-09 5.472825060320e-02 + 1.612800000000e-09 1.843966116536e-01 + 1.622800000000e-09 2.908095559772e-01 + 1.632800000000e-09 3.558590888161e-01 + 1.642800000000e-09 3.692442316508e-01 + 1.652800000000e-09 3.307223350896e-01 + 1.662800000000e-09 2.475868121857e-01 + 1.672800000000e-09 1.315745105428e-01 + 1.682800000000e-09 -4.079222825593e-03 + 1.692800000000e-09 -1.435429995432e-01 + 1.702800000000e-09 -2.665813122457e-01 + 1.712800000000e-09 -3.525130357787e-01 + 1.722800000000e-09 -3.869480154763e-01 + 1.732800000000e-09 -3.660777008945e-01 + 1.742800000000e-09 -2.951075954925e-01 + 1.752800000000e-09 -1.852697962593e-01 + 1.762800000000e-09 -5.003961644183e-02 + 1.772800000000e-09 9.570838775550e-02 + 1.782800000000e-09 2.325870018499e-01 + 1.792800000000e-09 3.383589237856e-01 + 1.802800000000e-09 3.947155694288e-01 + 1.812800000000e-09 3.937033119961e-01 + 1.822800000000e-09 3.380452287662e-01 + 1.832800000000e-09 2.375835586000e-01 + 1.842800000000e-09 1.058771022711e-01 + 1.852800000000e-09 -4.263709142904e-02 + 1.862800000000e-09 -1.900030812380e-01 + 1.872800000000e-09 -3.136174772286e-01 + 1.882800000000e-09 -3.920351657100e-01 + 1.892800000000e-09 -4.127475496018e-01 + 1.902800000000e-09 -3.750956063842e-01 + 1.912800000000e-09 -2.869666643123e-01 + 1.922800000000e-09 -1.616297384997e-01 + 1.932800000000e-09 -1.361936686049e-02 + 1.942800000000e-09 1.406172908134e-01 + 1.952800000000e-09 2.792550977877e-01 + 1.962800000000e-09 3.787902254899e-01 + 1.972800000000e-09 4.222752019079e-01 + 1.982800000000e-09 4.049636745954e-01 + 1.992800000000e-09 3.322404542947e-01 + 2.002800000000e-09 2.161669656339e-01 + 2.012800000000e-09 7.155597417732e-02 + 2.022800000000e-09 -8.609695822051e-02 + 2.032800000000e-09 -2.365608931503e-01 + 2.042800000000e-09 -3.555005072039e-01 + 2.052800000000e-09 -4.220083679648e-01 + 2.062800000000e-09 -4.266839455959e-01 + 2.072800000000e-09 -3.718713557942e-01 + 2.082800000000e-09 -2.678107467016e-01 + 2.092800000000e-09 -1.293389822449e-01 + 2.102800000000e-09 2.833059759397e-02 + 2.112800000000e-09 1.869316309130e-01 + 2.122800000000e-09 3.225548631596e-01 + 2.132800000000e-09 4.114580730440e-01 + 2.142800000000e-09 4.392996189887e-01 + 2.152800000000e-09 4.046990788426e-01 + 2.162800000000e-09 3.155287259736e-01 + 2.172800000000e-09 1.857669328139e-01 + 2.182800000000e-09 3.100609329061e-02 + 2.192800000000e-09 -1.321357735721e-01 + 2.202800000000e-09 -2.812168735149e-01 + 2.212800000000e-09 -3.909783649353e-01 + 2.222800000000e-09 -4.424317039182e-01 + 2.232800000000e-09 -4.297962552407e-01 + 2.242800000000e-09 -3.581672876146e-01 + 2.252800000000e-09 -2.398314541407e-01 + 2.262800000000e-09 -9.060415921491e-02 + 2.272800000000e-09 7.370156232135e-02 + 2.282800000000e-09 2.327406642123e-01 + 2.292800000000e-09 3.610812402931e-01 + 2.302800000000e-09 4.359613021736e-01 + 2.312800000000e-09 4.465932936766e-01 + 2.322800000000e-09 3.946758460222e-01 + 2.332800000000e-09 2.903633413539e-01 + 2.342800000000e-09 1.490814320965e-01 + 2.352800000000e-09 -1.333288892615e-02 + 2.362800000000e-09 -1.786941067316e-01 + 2.372800000000e-09 -3.225940541688e-01 + 2.382800000000e-09 -4.198004357210e-01 + 2.392800000000e-09 -4.543826061232e-01 + 2.402800000000e-09 -4.240642183875e-01 + 2.412800000000e-09 -3.364619230030e-01 + 2.422800000000e-09 -2.056261310073e-01 + 2.432800000000e-09 -4.773390668730e-02 + 2.442800000000e-09 1.205103020653e-01 + 2.452800000000e-09 2.765989735636e-01 + 2.462800000000e-09 3.942780198243e-01 + 2.472800000000e-09 4.530256200664e-01 + 2.482800000000e-09 4.458454361230e-01 + 2.492800000000e-09 3.771089597392e-01 + 2.502800000000e-09 2.590322560292e-01 + 2.512800000000e-09 1.080243658844e-01 + 2.522800000000e-09 -5.985674037922e-02 + 2.532800000000e-09 -2.244886384860e-01 + 2.542800000000e-09 -3.599549763928e-01 + 2.552800000000e-09 -4.421185539775e-01 + 2.562800000000e-09 -4.588122144071e-01 + 2.572800000000e-09 -4.109453959140e-01 + 2.582800000000e-09 -3.083210663626e-01 + 2.592800000000e-09 -1.665340021254e-01 + 2.602800000000e-09 -1.918960245398e-03 + 2.612800000000e-09 1.675875769713e-01 + 2.622800000000e-09 3.175414250831e-01 + 2.632800000000e-09 4.217363825489e-01 + 2.642800000000e-09 4.627955001612e-01 + 2.652800000000e-09 4.374378080077e-01 + 2.662800000000e-09 3.527037087818e-01 + 2.672800000000e-09 2.225282328465e-01 + 2.682800000000e-09 6.361477386471e-02 + 2.692800000000e-09 -1.074134056266e-01 + 2.702800000000e-09 -2.683293174503e-01 + 2.712800000000e-09 -3.923708888313e-01 + 2.722800000000e-09 -4.577157265511e-01 + 2.732800000000e-09 -4.561433383224e-01 + 2.742800000000e-09 -3.912820300801e-01 + 2.752800000000e-09 -2.750324972595e-01 + 2.762800000000e-09 -1.240259515575e-01 + 2.772800000000e-09 4.546874544153e-02 + 2.782800000000e-09 2.137198549189e-01 + 2.792800000000e-09 3.547230737872e-01 + 2.802800000000e-09 4.433262911118e-01 + 2.812800000000e-09 4.660118939978e-01 + 2.822800000000e-09 4.228178430882e-01 + 2.832800000000e-09 3.231988957707e-01 + 2.842800000000e-09 1.825239554937e-01 + 2.852800000000e-09 1.727661570061e-02 + 2.862800000000e-09 -1.547743143133e-01 + 2.872800000000e-09 -3.093893720213e-01 + 2.882800000000e-09 -4.197404386452e-01 + 2.892800000000e-09 -4.671075240980e-01 + 2.902800000000e-09 -4.471244698056e-01 + 2.912800000000e-09 -3.661465754023e-01 + 2.922800000000e-09 -2.378192597947e-01 + 2.932800000000e-09 -7.914736082213e-02 + 2.942800000000e-09 9.331378294460e-02 + 2.952800000000e-09 2.577867008033e-01 + 2.962800000000e-09 3.873034187893e-01 + 2.972800000000e-09 4.589364882447e-01 + 2.982800000000e-09 4.631805908471e-01 + 2.992800000000e-09 4.028270250116e-01 + 3.002800000000e-09 2.893363123088e-01 + 3.012800000000e-09 1.393597470328e-01 + 3.022800000000e-09 -3.063556880097e-02 + 3.032800000000e-09 -2.013814052113e-01 + 3.042800000000e-09 -3.470226276845e-01 + 3.052800000000e-09 -4.416260499703e-01 + 3.062800000000e-09 -4.703310480236e-01 + 3.072800000000e-09 -4.322310417489e-01 + 3.082800000000e-09 -3.361540356479e-01 + 3.092800000000e-09 -1.972404253456e-01 + 3.102800000000e-09 -3.231555310905e-02 + 3.112800000000e-09 1.411799563874e-01 + 3.122800000000e-09 2.994223650651e-01 + 3.132800000000e-09 4.152221791762e-01 + 3.142800000000e-09 4.685998370601e-01 + 3.152800000000e-09 4.540939134812e-01 + 3.162800000000e-09 3.773785356728e-01 + 3.172800000000e-09 2.516679605498e-01 + 3.182800000000e-09 9.407885516327e-02 + 3.192800000000e-09 -7.887416464771e-02 + 3.202800000000e-09 -2.459478717170e-01 + 3.212800000000e-09 -3.801896018949e-01 + 3.222800000000e-09 -4.576067346946e-01 + 3.232800000000e-09 -4.675033846747e-01 + 3.242800000000e-09 -4.120188059455e-01 + 3.252800000000e-09 -3.019928515940e-01 + 3.262800000000e-09 -1.538556841242e-01 + 3.272800000000e-09 1.574221587344e-02 + 3.282800000000e-09 1.880273575048e-01 + 3.292800000000e-09 3.374731560090e-01 + 3.302800000000e-09 4.375927824630e-01 + 3.312800000000e-09 4.722276160387e-01 + 3.322800000000e-09 4.394728179656e-01 + 3.332800000000e-09 3.474679258640e-01 + 3.342800000000e-09 2.110086369028e-01 + 3.352800000000e-09 4.714137951617e-02 + 3.362800000000e-09 -1.269894630117e-01 + 3.372800000000e-09 -2.880867264094e-01 + 3.382800000000e-09 -4.088031944697e-01 + 3.392800000000e-09 -4.680988870807e-01 + 3.402800000000e-09 -4.592921241222e-01 + 3.412800000000e-09 -3.871978285746e-01 + 3.422800000000e-09 -2.645956971867e-01 + 3.432800000000e-09 -1.086192007355e-01 + 3.442800000000e-09 6.422771174779e-02 + 3.452800000000e-09 2.332753985508e-01 + 3.462800000000e-09 3.717351258273e-01 + 3.472800000000e-09 4.548095059111e-01 + 3.482800000000e-09 4.705087702614e-01 + 3.492800000000e-09 4.200936052323e-01 + 3.502800000000e-09 3.138151971609e-01 + 3.512800000000e-09 1.678570834827e-01 + 3.522800000000e-09 -9.579372347908e-04 + 3.532800000000e-09 -1.743244822223e-01 + 3.542800000000e-09 -3.271309629627e-01 + 3.552800000000e-09 -4.324794853007e-01 + 3.562800000000e-09 -4.729631803739e-01 + 3.572800000000e-09 -4.456403714768e-01 + 3.582800000000e-09 -3.579322491441e-01 + 3.592800000000e-09 -2.242351632985e-01 + 3.602800000000e-09 -6.174301902098e-02 + 3.612800000000e-09 1.126368717887e-01 + 3.622800000000e-09 2.761780887100e-01 + 3.632800000000e-09 4.014954393735e-01 + 3.642800000000e-09 4.665433122351e-01 + 3.652800000000e-09 4.634231147494e-01 + 3.662800000000e-09 3.961193938497e-01 + 3.672800000000e-09 2.769067659845e-01 + 3.682800000000e-09 1.228353245717e-01 + 3.692800000000e-09 -4.955744212608e-02 + 3.702800000000e-09 -2.201785923467e-01 + 3.712800000000e-09 -3.625009693756e-01 + 3.722800000000e-09 -4.510435187990e-01 + 3.732800000000e-09 -4.725240343663e-01 + 3.742800000000e-09 -4.272935759713e-01 + 3.752800000000e-09 -3.251349761767e-01 + 3.762800000000e-09 -1.817816988896e-01 + 3.772800000000e-09 -1.399929677941e-02 + 3.782800000000e-09 1.601934204406e-01 + 3.792800000000e-09 3.161306635674e-01 + 3.802800000000e-09 4.266066932948e-01 + 3.812800000000e-09 4.729940673219e-01 + 3.822800000000e-09 4.512575108576e-01 + 3.832800000000e-09 3.680617087705e-01 + 3.842800000000e-09 2.373645464036e-01 + 3.852800000000e-09 7.644846640062e-02 + 3.862800000000e-09 -9.795067289430e-02 + 3.872800000000e-09 -2.637087038063e-01 + 3.882800000000e-09 -3.934887886897e-01 + 3.892800000000e-09 -4.643111521684e-01 + 3.902800000000e-09 -4.670057284135e-01 + 3.912800000000e-09 -4.046800401979e-01 + 3.922800000000e-09 -2.890703064379e-01 + 3.932800000000e-09 -1.370846966255e-01 + 3.942800000000e-09 3.465969810963e-02 + 3.952800000000e-09 2.066352067046e-01 + 3.962800000000e-09 3.526476939046e-01 + 3.972800000000e-09 4.466203079955e-01 + 3.982800000000e-09 4.739661877248e-01 + 3.992800000000e-09 4.340790150692e-01 + 4.002800000000e-09 3.360577526346e-01 + 4.012800000000e-09 1.952929872287e-01 + 4.022800000000e-09 2.875607565439e-02 + 4.032800000000e-09 -1.459344999421e-01 + 4.042800000000e-09 -3.046493678996e-01 + 4.052800000000e-09 -4.199902890985e-01 + 4.062800000000e-09 -4.721456560185e-01 + 4.072800000000e-09 -4.559838665905e-01 + 4.082800000000e-09 -3.774451190249e-01 + 4.092800000000e-09 -2.499818754192e-01 + 4.102800000000e-09 -9.087893717463e-02 + 4.112800000000e-09 8.323982893517e-02 + 4.122800000000e-09 2.508660796846e-01 + 4.132800000000e-09 3.848097443252e-01 + 4.142800000000e-09 4.612668658649e-01 + 4.152800000000e-09 4.697760488018e-01 + 4.162800000000e-09 4.125281636231e-01 + 4.172800000000e-09 3.006969751536e-01 + 4.182800000000e-09 1.509887464708e-01 + 4.192800000000e-09 -1.987179515385e-02 + 4.202800000000e-09 -1.928956714792e-01 + 4.212800000000e-09 -3.422872952982e-01 + 4.222800000000e-09 -4.414912449693e-01 + 4.232800000000e-09 -4.746452361276e-01 + 4.242800000000e-09 -4.401548815867e-01 + 4.252800000000e-09 -3.464145908319e-01 + 4.262800000000e-09 -2.084288560753e-01 + 4.272800000000e-09 -4.333172742228e-02 + 4.282800000000e-09 1.315940736929e-01 + 4.292800000000e-09 2.927910195776e-01 + 4.302800000000e-09 4.127675569662e-01 + 4.312800000000e-09 4.706789700956e-01 + 4.322800000000e-09 4.601927145820e-01 + 4.332800000000e-09 3.863943372810e-01 + 4.342800000000e-09 2.622720978871e-01 + 4.352800000000e-09 1.050822334031e-01 + 4.362800000000e-09 -6.860376592355e-02 + 4.372800000000e-09 -2.378844368567e-01 + 4.382800000000e-09 -3.757822787491e-01 + 4.392800000000e-09 -4.575905442447e-01 + 4.402800000000e-09 -4.716763254174e-01 + 4.412800000000e-09 -4.195768515197e-01 + 4.422800000000e-09 -3.117637124862e-01 + 4.432800000000e-09 -1.645809069339e-01 + 4.442800000000e-09 5.115103349040e-03 + 4.452800000000e-09 1.788468425873e-01 + 4.462800000000e-09 3.312865176307e-01 + 4.472800000000e-09 4.355206693674e-01 + 4.482800000000e-09 4.744509211811e-01 + 4.492800000000e-09 4.454510006000e-01 + 4.502800000000e-09 3.561830472421e-01 + 4.512800000000e-09 2.212198360573e-01 + 4.522800000000e-09 5.780113762664e-02 + 4.532800000000e-09 -1.170674128273e-01 + 4.542800000000e-09 -2.804349169052e-01 + 4.552800000000e-09 -4.048183152457e-01 + 4.562800000000e-09 -4.683848084627e-01 + 4.572800000000e-09 -4.635939063375e-01 + 4.582800000000e-09 -3.946956894196e-01 + 4.592800000000e-09 -2.741521351817e-01 + 4.602800000000e-09 -1.191064393987e-01 + 4.612800000000e-09 5.387485396358e-02 + 4.622800000000e-09 2.244979979662e-01 + 4.632800000000e-09 3.660810740072e-01 + 4.642800000000e-09 4.532550875399e-01 + 4.652800000000e-09 4.730999036855e-01 + 4.662800000000e-09 4.262449129937e-01 + 4.672800000000e-09 3.226896490576e-01 + 4.682800000000e-09 1.783022178503e-01 + 4.692800000000e-09 9.838296857974e-03 + 4.702800000000e-09 -1.645353582805e-01 + 4.712800000000e-09 -3.199587214992e-01 + 4.722800000000e-09 -4.292293008043e-01 + 4.732800000000e-09 -4.740280425164e-01 + 4.742800000000e-09 -4.506425555136e-01 + 4.752800000000e-09 -3.659729577984e-01 + 4.762800000000e-09 -2.341388038166e-01 + 4.772800000000e-09 -7.245221035558e-02 + 4.782800000000e-09 1.022845417253e-01 + 4.792800000000e-09 2.677426310905e-01 + 4.802800000000e-09 3.965038035874e-01 + 4.812800000000e-09 4.658004581856e-01 + 4.822800000000e-09 4.668279312006e-01 + 4.832800000000e-09 4.029611099853e-01 + 4.842800000000e-09 2.861138397854e-01 + 4.852800000000e-09 1.332768542746e-01 + 4.862800000000e-09 -3.893129834670e-02 + 4.872800000000e-09 -2.108040910926e-01 + 4.882800000000e-09 -3.560051302283e-01 + 4.892800000000e-09 -4.485698098559e-01 + 4.902800000000e-09 -4.742726054249e-01 + 4.912800000000e-09 -4.327903311673e-01 + 4.922800000000e-09 -3.334339933896e-01 + 4.932800000000e-09 -1.917221189869e-01 + 4.942800000000e-09 -2.460305884562e-02 + 4.952800000000e-09 1.501836581240e-01 + 4.962800000000e-09 3.083246301974e-01 + 4.972800000000e-09 4.224263057872e-01 + 4.982800000000e-09 4.730147753422e-01 + 4.992800000000e-09 4.552555595324e-01 + 5.002800000000e-09 3.752703329085e-01 + 5.012800000000e-09 2.467002234326e-01 + 5.022800000000e-09 8.687410099858e-02 + 5.032800000000e-09 -8.754355118003e-02 + 5.042800000000e-09 -2.548484149851e-01 + 5.052800000000e-09 -3.877650550252e-01 + 5.062800000000e-09 -4.626862501264e-01 + 5.072800000000e-09 -4.695229769423e-01 + 5.082800000000e-09 -4.107421319896e-01 + 5.092800000000e-09 -2.976942205378e-01 + 5.102800000000e-09 -1.471696511119e-01 + 5.112800000000e-09 2.412143939182e-02 + 5.122800000000e-09 1.970272273367e-01 + 5.132800000000e-09 3.456078902411e-01 + 5.142800000000e-09 4.434054596104e-01 + 5.152800000000e-09 4.749137143451e-01 + 5.162800000000e-09 4.388300870660e-01 + 5.172800000000e-09 3.437624600744e-01 + 5.182800000000e-09 2.048452480459e-01 + 5.192800000000e-09 3.919018718436e-02 + 5.202800000000e-09 -1.358216564581e-01 + 5.212800000000e-09 -2.964496640181e-01 + 5.222800000000e-09 -4.151953185653e-01 + 5.232800000000e-09 -4.714539884979e-01 + 5.242800000000e-09 -4.592779849991e-01 + 5.252800000000e-09 -3.840593294788e-01 + 5.262800000000e-09 -2.589011364918e-01 + 5.272800000000e-09 -1.010736249809e-01 + 5.282800000000e-09 7.283353409179e-02 + 5.292800000000e-09 2.417384561984e-01 + 5.302800000000e-09 3.785820233063e-01 + 5.312800000000e-09 4.588562995259e-01 + 5.322800000000e-09 4.712954828909e-01 + 5.332800000000e-09 4.176930150512e-01 + 5.342800000000e-09 3.087007794761e-01 + 5.352800000000e-09 1.607551554706e-01 + 5.362800000000e-09 -9.318966073580e-03 + 5.372800000000e-09 -1.829010391211e-01 + 5.382800000000e-09 -3.345208199769e-01 + 5.392800000000e-09 -4.373511375540e-01 + 5.402800000000e-09 -4.746403928746e-01 + 5.412800000000e-09 -4.440615944149e-01 + 5.422800000000e-09 -3.534898096378e-01 + 5.432800000000e-09 -2.176267692740e-01 + 5.442800000000e-09 -5.369083698243e-02 + 5.452800000000e-09 1.212383949646e-01 + 5.462800000000e-09 2.840320668661e-01 + 5.472800000000e-09 4.071920020820e-01 + 5.482800000000e-09 4.691563769682e-01 + 5.492800000000e-09 4.627337230041e-01 + 5.502800000000e-09 3.924167805893e-01 + 5.512800000000e-09 2.708218029078e-01 + 5.522800000000e-09 1.151325703666e-01 + 5.532800000000e-09 -5.808604409659e-02 + 5.542800000000e-09 -2.283668346156e-01 + 5.552800000000e-09 -3.689338506287e-01 + 5.562800000000e-09 -4.545944114773e-01 + 5.572800000000e-09 -4.727956223372e-01 + 5.582800000000e-09 -4.244298465829e-01 + 5.592800000000e-09 -3.195193275972e-01 + 5.602800000000e-09 -1.741778534261e-01 + 5.612800000000e-09 -5.358366924951e-03 + 5.622800000000e-09 1.687933165768e-01 + 5.632800000000e-09 3.233026003791e-01 + 5.642800000000e-09 4.310517889594e-01 + 5.652800000000e-09 4.740864689953e-01 + 5.662800000000e-09 4.490218121806e-01 + 5.672800000000e-09 3.629873663565e-01 + 5.682800000000e-09 2.302354097758e-01 + 5.692800000000e-09 6.805690093617e-02 + 5.702800000000e-09 -1.066966219157e-01 + 5.712800000000e-09 -2.715119446656e-01 + 5.722800000000e-09 -3.989522881566e-01 + 5.732800000000e-09 -4.665254863655e-01 + 5.742800000000e-09 -4.658095418967e-01 + 5.752800000000e-09 -4.004422715597e-01 + 5.762800000000e-09 -2.825015838173e-01 + 5.772800000000e-09 -1.290234075158e-01 + 5.782800000000e-09 4.339682016018e-02 + 5.792800000000e-09 2.148831804687e-01 + 5.802800000000e-09 3.589945727159e-01 + 5.812800000000e-09 4.499415092275e-01 + 5.822800000000e-09 4.738883904946e-01 + 5.832800000000e-09 4.308003606745e-01 + 5.842800000000e-09 3.301936966910e-01 + 5.852800000000e-09 1.876929001866e-01 + 5.862800000000e-09 2.018600177563e-02 + 5.872800000000e-09 -1.544675648521e-01 + 5.882800000000e-09 -3.117918152553e-01 + 5.892800000000e-09 -4.244460935844e-01 + 5.902800000000e-09 -4.732989916592e-01 + 5.912800000000e-09 -4.538551715275e-01 + 5.922800000000e-09 -3.724707197969e-01 + 5.932800000000e-09 -2.429293930070e-01 + 5.942800000000e-09 -8.255753872722e-02 + 5.952800000000e-09 9.194835307785e-02 + 5.962800000000e-09 2.586988629088e-01 + 5.972800000000e-09 3.903732859135e-01 + 5.982800000000e-09 4.636092982994e-01 + 5.992800000000e-09 4.687053227866e-01 + 6.002800000000e-09 4.084027490221e-01 + 6.012800000000e-09 2.942212446980e-01 + 6.022800000000e-09 1.430125040608e-01 + 6.032800000000e-09 -2.854632169854e-02 + 6.042800000000e-09 -2.011429939245e-01 + 6.052800000000e-09 -3.487167427034e-01 + 6.062800000000e-09 -4.449512923493e-01 + 6.072800000000e-09 -4.747217614837e-01 + 6.082800000000e-09 -4.370219810782e-01 + 6.092800000000e-09 -3.406707431978e-01 + 6.102800000000e-09 -2.009190734339e-01 + 6.112800000000e-09 -3.483039496099e-02 + 6.122800000000e-09 1.401149295526e-01 + 6.132800000000e-09 3.000046663157e-01 + 6.142800000000e-09 4.173662516033e-01 + 6.152800000000e-09 4.719186723503e-01 + 6.162800000000e-09 4.580601076316e-01 + 6.172800000000e-09 3.814166126838e-01 + 6.182800000000e-09 2.552438607025e-01 + 6.192800000000e-09 9.682909699965e-02 + 6.202800000000e-09 -7.722362060396e-02 + 6.212800000000e-09 -2.456491354280e-01 + 6.222800000000e-09 -3.813211202293e-01 + 6.232800000000e-09 -4.599582708496e-01 + 6.242800000000e-09 -4.706777413223e-01 + 6.252800000000e-09 -4.155356321955e-01 + 6.262800000000e-09 -3.053653191959e-01 + 6.272800000000e-09 -1.566879170227e-01 + 6.282800000000e-09 1.371085740630e-02 + 6.292800000000e-09 1.870612586314e-01 + 6.302800000000e-09 3.377566073318e-01 + 6.312800000000e-09 4.390789711742e-01 + 6.322800000000e-09 4.746456163415e-01 + 6.332800000000e-09 4.424366831788e-01 + 6.342800000000e-09 3.505443090925e-01 + 6.352800000000e-09 2.137969205601e-01 + 6.362800000000e-09 4.937909817654e-02 + 6.372800000000e-09 -1.255499536179e-01 + 6.382800000000e-09 -2.876826670580e-01 + 6.392800000000e-09 -4.095207289710e-01 + 6.402800000000e-09 -4.697973288731e-01 + 6.412800000000e-09 -4.616809805366e-01 + 6.422800000000e-09 -3.899125057551e-01 + 6.432800000000e-09 -2.672636303499e-01 + 6.442800000000e-09 -1.109503029327e-01 + 6.452800000000e-09 6.246383288399e-02 + 6.462800000000e-09 2.323325258173e-01 + 6.472800000000e-09 3.717934722252e-01 + 6.482800000000e-09 4.558521722737e-01 + 6.492800000000e-09 4.723391088429e-01 + 6.502800000000e-09 4.224167520594e-01 + 6.512800000000e-09 3.162952943994e-01 + 6.522800000000e-09 1.701860640694e-01 + 6.532800000000e-09 1.000477967367e-03 + 6.542800000000e-09 -1.729810717500e-01 + 6.552800000000e-09 -3.266355645455e-01 + 6.562800000000e-09 -4.329259684052e-01 + 6.572800000000e-09 -4.742519127223e-01 + 6.582800000000e-09 -4.475467448575e-01 + 6.592800000000e-09 -3.601627907113e-01 + 6.602800000000e-09 -2.264866563705e-01 + 6.612800000000e-09 -6.379017160263e-02 + 6.622800000000e-09 1.110155637962e-01 + 6.632800000000e-09 2.752350046292e-01 + 6.642800000000e-09 4.014087265439e-01 + 6.652800000000e-09 4.673148546842e-01 + 6.662800000000e-09 4.649004614592e-01 + 6.672800000000e-09 3.980600329821e-01 + 6.682800000000e-09 2.790321210295e-01 + 6.692800000000e-09 1.248995369545e-01 + 6.702800000000e-09 -4.775761376258e-02 + 6.712800000000e-09 -2.188913987365e-01 + 6.722800000000e-09 -3.619578933878e-01 + 6.732800000000e-09 -4.513379357395e-01 + 6.742800000000e-09 -4.735767036704e-01 + 6.752800000000e-09 -4.289177472422e-01 + 6.762800000000e-09 -3.270792720198e-01 + 6.772800000000e-09 -1.837891138026e-01 + 6.782800000000e-09 -1.588063220561e-02 + 6.792800000000e-09 1.586628233663e-01 + 6.802800000000e-09 3.152040608694e-01 + 6.812800000000e-09 4.264555535234e-01 + 6.822800000000e-09 4.736211185569e-01 + 6.832800000000e-09 4.525338445846e-01 + 6.842800000000e-09 3.697775198292e-01 + 6.852800000000e-09 2.392766418386e-01 + 6.862800000000e-09 7.835426776512e-02 + 6.872800000000e-09 -9.625333402000e-02 + 6.882800000000e-09 -2.624739722823e-01 + 6.892800000000e-09 -3.929428925867e-01 + 6.902800000000e-09 -4.645406277227e-01 + 6.912800000000e-09 -4.679407790726e-01 + 6.922800000000e-09 -4.061506714192e-01 + 6.932800000000e-09 -2.908549498372e-01 + 6.942800000000e-09 -1.389652565318e-01 + 6.952800000000e-09 3.286816907369e-02 + 6.962800000000e-09 2.051712260444e-01 + 6.972800000000e-09 3.517659527209e-01 + 6.982800000000e-09 4.464775550294e-01 + 6.992800000000e-09 4.745545249943e-01 + 7.002800000000e-09 4.352771209666e-01 + 7.012800000000e-09 3.376699569210e-01 + 7.022800000000e-09 1.970971349632e-01 + 7.032800000000e-09 3.057545777721e-02 + 7.042800000000e-09 -1.443109453580e-01 + 7.052800000000e-09 -3.034816773329e-01 + 7.062800000000e-09 -4.194927868430e-01 + 7.072800000000e-09 -4.723820442461e-01 + 7.082800000000e-09 -4.568824625256e-01 + 7.092800000000e-09 -3.788475933070e-01 + 7.102800000000e-09 -2.516820325120e-01 + 7.112800000000e-09 -9.268712680832e-02 + 7.122800000000e-09 8.151209524791e-02 + 7.132800000000e-09 2.494695531010e-01 + 7.142800000000e-09 3.839956138423e-01 + 7.152800000000e-09 4.611737821072e-01 + 7.162800000000e-09 4.703851325923e-01 + 7.172800000000e-09 4.137125917880e-01 + 7.182800000000e-09 3.022693307072e-01 + 7.192800000000e-09 1.527479248670e-01 + 7.202800000000e-09 -1.809929548498e-02 + 7.212800000000e-09 -1.913383544872e-01 + 7.222800000000e-09 -3.412094024588e-01 + 7.232800000000e-09 -4.410868393714e-01 + 7.242800000000e-09 -4.749516312112e-01 + 7.252800000000e-09 -4.410909822616e-01 + 7.262800000000e-09 -3.478189916534e-01 + 7.272800000000e-09 -2.101013876511e-01 + 7.282800000000e-09 -4.510235019386e-02 + 7.292800000000e-09 1.299253977771e-01 + 7.302800000000e-09 2.914845600347e-01 + 7.312800000000e-09 4.120616682106e-01 + 7.322800000000e-09 4.706787147807e-01 + 7.332800000000e-09 4.608620978397e-01 + 7.342800000000e-09 3.876036751466e-01 + 7.352800000000e-09 2.638374740977e-01 + 7.362800000000e-09 1.068210554762e-01 + 7.372800000000e-09 -6.687000044466e-02 + 7.382800000000e-09 -2.364003702191e-01 + 7.392800000000e-09 -3.748108644234e-01 + 7.402800000000e-09 -4.572976813842e-01 + 7.412800000000e-09 -4.720734801543e-01 + 7.422800000000e-09 -4.205712591755e-01 + 7.432800000000e-09 -3.131934542431e-01 + 7.442800000000e-09 -1.662554351338e-01 + 7.452800000000e-09 3.362078591334e-03 + 7.462800000000e-09 1.772344659818e-01 + 7.472800000000e-09 3.300822975106e-01 + 7.482800000000e-09 4.349428027832e-01 + 7.492800000000e-09 4.745689466133e-01 + 7.502800000000e-09 4.462110869897e-01 + 7.512800000000e-09 3.574466585827e-01 + 7.522800000000e-09 2.228017580891e-01 + 7.532800000000e-09 5.953451258630e-02 + 7.542800000000e-09 -1.153737073076e-01 + 7.552800000000e-09 -2.790387245777e-01 + 7.562800000000e-09 -4.039727376582e-01 + 7.572800000000e-09 -4.682237229421e-01 + 7.582800000000e-09 -4.641062188637e-01 + 7.592800000000e-09 -3.957719710120e-01 + 7.602800000000e-09 -2.756236169881e-01 + 7.612800000000e-09 -1.207944204032e-01 + 7.622800000000e-09 5.214154529606e-02 + 7.632800000000e-09 2.229572650225e-01 + 7.642800000000e-09 3.650018343726e-01 + 7.652800000000e-09 4.528257247543e-01 + 7.662800000000e-09 4.733554050676e-01 + 7.672800000000e-09 4.271122510333e-01 + 7.682800000000e-09 3.240186390719e-01 + 7.692800000000e-09 1.799080569477e-01 + 7.702800000000e-09 1.156396165785e-02 + 7.712800000000e-09 -1.628978383933e-01 + 7.722800000000e-09 -3.186752855182e-01 + 7.732800000000e-09 -4.285332245252e-01 + 7.742800000000e-09 -4.740129549462e-01 + 7.752800000000e-09 -4.512743763487e-01 + 7.762800000000e-09 -3.671298785255e-01 + 7.772800000000e-09 -2.356471175821e-01 + 7.782800000000e-09 -7.414686057647e-02 + 7.792800000000e-09 1.005862088749e-01 + 7.802800000000e-09 2.662930371615e-01 + 7.812800000000e-09 3.955638632692e-01 + 7.822800000000e-09 4.655253901029e-01 + 7.832800000000e-09 4.672253597262e-01 + 7.842800000000e-09 4.039362057204e-01 + 7.852800000000e-09 2.875091045666e-01 + 7.862800000000e-09 1.349164722422e-01 + 7.872800000000e-09 -3.721205311042e-02 + 7.882800000000e-09 -2.092346121642e-01 + 7.892800000000e-09 -3.548550449829e-01 + 7.902800000000e-09 -4.480430557238e-01 + 7.912800000000e-09 -4.744225883963e-01 + 7.922800000000e-09 -4.335591521118e-01 + 7.932800000000e-09 -3.346841485691e-01 + 7.942800000000e-09 -1.932753134533e-01 + 7.952800000000e-09 -2.630396132149e-02 + 7.962800000000e-09 1.485343115213e-01 + 7.972800000000e-09 3.069892415430e-01 + 7.982800000000e-09 4.216477116045e-01 + 7.992800000000e-09 4.728702585346e-01 + 8.002800000000e-09 4.557232401713e-01 + 8.012800000000e-09 3.762881772866e-01 + 8.022800000000e-09 2.481194886286e-01 + 8.032800000000e-09 8.853106428805e-02 + 8.042800000000e-09 -8.582393141835e-02 + 8.052800000000e-09 -2.533152569581e-01 + 8.062800000000e-09 -3.866914138870e-01 + 8.072800000000e-09 -4.622558207343e-01 + 8.082800000000e-09 -4.697688746084e-01 + 8.092800000000e-09 -4.115886187123e-01 + 8.102800000000e-09 -2.989980714899e-01 + 8.112800000000e-09 -1.487599918270e-01 + 8.122800000000e-09 2.240414183855e-02 + 8.132800000000e-09 1.954055199189e-01 + 8.142800000000e-09 3.443552001071e-01 + 8.152800000000e-09 4.427463670226e-01 + 8.162800000000e-09 4.749261945068e-01 + 8.172800000000e-09 4.394758060526e-01 + 8.182800000000e-09 3.449195026343e-01 + 8.192800000000e-09 2.063439121537e-01 + 8.202800000000e-09 4.087599756883e-02 + 8.212800000000e-09 -1.341410090845e-01 + 8.222800000000e-09 -2.950357913485e-01 + 8.232800000000e-09 -4.143046390550e-01 + 8.242800000000e-09 -4.712206916280e-01 + 8.252800000000e-09 -4.597006365364e-01 + 8.262800000000e-09 -3.850445606437e-01 + 8.272800000000e-09 -2.602943890551e-01 + 8.282800000000e-09 -1.027104187955e-01 + 8.292800000000e-09 7.112315283271e-02 + 8.302800000000e-09 2.401965119711e-01 + 8.312800000000e-09 3.774806041106e-01 + 8.322800000000e-09 4.583835764264e-01 + 8.332800000000e-09 4.714907765348e-01 + 8.342800000000e-09 4.184924468259e-01 + 8.352800000000e-09 3.099686075230e-01 + 8.362800000000e-09 1.623201243326e-01 + 8.372800000000e-09 -7.613825411722e-03 + 8.382800000000e-09 -1.812704069480e-01 + 8.392800000000e-09 -3.332349363132e-01 + 8.402800000000e-09 -4.366421565884e-01 + 8.412800000000e-09 -4.745986707762e-01 + 8.422800000000e-09 -4.446569429567e-01 + 8.432800000000e-09 -3.546065371207e-01 + 8.442800000000e-09 -2.190983212356e-01 + 8.452800000000e-09 -5.536126962348e-02 + 8.462800000000e-09 1.195549184502e-01 + 8.472800000000e-09 2.825923048430e-01 + 8.482800000000e-09 4.062562225692e-01 + 8.492800000000e-09 4.688730969708e-01 + 8.502800000000e-09 4.631104868282e-01 + 8.512800000000e-09 3.933635998169e-01 + 8.522800000000e-09 2.721870789832e-01 + 8.532800000000e-09 1.167499416076e-01 + 8.542800000000e-09 -5.638196955604e-02 + 8.552800000000e-09 -2.268112149334e-01 + 8.562800000000e-09 -3.677980708712e-01 + 8.572800000000e-09 -4.540761454032e-01 + 8.582800000000e-09 -4.729436182328e-01 + 8.592800000000e-09 -4.251868570138e-01 + 8.602800000000e-09 -3.207540438367e-01 + 8.612800000000e-09 -1.757193094519e-01 + 8.622800000000e-09 -7.051028071431e-03 + 8.632800000000e-09 1.671564851030e-01 + 8.642800000000e-09 3.219880303847e-01 + 8.652800000000e-09 4.302978217420e-01 + 8.662800000000e-09 4.739953643084e-01 + 8.672800000000e-09 4.495709711196e-01 + 8.682800000000e-09 3.640667109922e-01 + 8.692800000000e-09 2.316815367625e-01 + 8.702800000000e-09 6.971189047814e-02 + 8.712800000000e-09 -1.050126109129e-01 + 8.722800000000e-09 -2.700504144539e-01 + 8.732800000000e-09 -3.979761284175e-01 + 8.742800000000e-09 -4.661950695379e-01 + 8.752800000000e-09 -4.661408570960e-01 + 8.762800000000e-09 -4.013504459573e-01 + 8.772800000000e-09 -2.838384525463e-01 + 8.782800000000e-09 -1.306209322973e-01 + 8.792800000000e-09 4.170011600994e-02 + 8.802800000000e-09 2.133153427600e-01 + 8.812800000000e-09 3.578255374043e-01 + 8.822800000000e-09 4.493777986227e-01 + 8.832800000000e-09 4.739887747192e-01 + 8.842800000000e-09 4.315143982636e-01 + 8.852800000000e-09 3.313917620330e-01 + 8.862800000000e-09 1.892038776100e-01 + 8.872800000000e-09 2.185909083850e-02 + 8.882800000000e-09 -1.528300951299e-01 + 8.892800000000e-09 -3.104515068882e-01 + 8.902800000000e-09 -4.236463961325e-01 + 8.912800000000e-09 -4.731545405718e-01 + 8.922800000000e-09 -4.543517724566e-01 + 8.932800000000e-09 -3.735048686574e-01 + 8.942800000000e-09 -2.443420736462e-01 + 8.952800000000e-09 -8.418938130572e-02 + 8.962800000000e-09 9.027087799323e-02 + 8.972800000000e-09 2.572206813225e-01 + 8.982800000000e-09 3.893584732367e-01 + 8.992800000000e-09 4.632298697608e-01 + 9.002800000000e-09 4.689866550207e-01 + 9.012800000000e-09 4.092656789911e-01 + 9.022800000000e-09 2.955218062106e-01 + 9.032800000000e-09 1.445822119896e-01 + 9.042800000000e-09 -2.686495159047e-02 + 9.052800000000e-09 -1.995697369395e-01 + 9.062800000000e-09 -3.475183876848e-01 + 9.072800000000e-09 -4.443420504350e-01 + 9.082800000000e-09 -4.747711594458e-01 + 9.092800000000e-09 -4.376871679957e-01 + 9.102800000000e-09 -3.418282382604e-01 + 9.112800000000e-09 -2.024004468846e-01 + 9.122800000000e-09 -3.648439602198e-02 + 9.132800000000e-09 1.384784950754e-01 + 9.142800000000e-09 2.986421666329e-01 + 9.152800000000e-09 4.165250479668e-01 + 9.162800000000e-09 4.717236198520e-01 + 9.172800000000e-09 4.585048257160e-01 + 9.182800000000e-09 3.824056744264e-01 + 9.192800000000e-09 2.566232741498e-01 + 9.202800000000e-09 9.843789561041e-02 + 9.212800000000e-09 -7.555326317816e-02 + 9.222800000000e-09 -2.441554104755e-01 + 9.232800000000e-09 -3.802685152522e-01 + 9.242800000000e-09 -4.595254273568e-01 + 9.252800000000e-09 -4.708980436339e-01 + 9.262800000000e-09 -4.163426325433e-01 + 9.272800000000e-09 -3.066233790089e-01 + 9.282800000000e-09 -1.582287590700e-01 + 9.292800000000e-09 1.204158483739e-02 + 9.302800000000e-09 1.854755615929e-01 + 9.312800000000e-09 3.365187856105e-01 + 9.322800000000e-09 4.384121015246e-01 + 9.332800000000e-09 4.746325438472e-01 + 9.342800000000e-09 4.430438328376e-01 + 9.352800000000e-09 3.516554423001e-01 + 9.362800000000e-09 2.152473815735e-01 + 9.372800000000e-09 5.101666211968e-02 + 9.382800000000e-09 -1.239088110897e-01 + 9.392800000000e-09 -2.862898538942e-01 + 9.402800000000e-09 -4.086283865924e-01 + 9.412800000000e-09 -4.695453664284e-01 + 9.422800000000e-09 -4.620727802601e-01 + 9.432800000000e-09 -3.908572400200e-01 + 9.442800000000e-09 -2.686111439183e-01 + 9.452800000000e-09 -1.125381264041e-01 + 9.462800000000e-09 6.079870306913e-02 + 9.472800000000e-09 2.308216899808e-01 + 9.482800000000e-09 3.707015176506e-01 + 9.492800000000e-09 4.553681422057e-01 + 9.502800000000e-09 4.725064407028e-01 + 9.512800000000e-09 4.231763569955e-01 + 9.522800000000e-09 3.175166157190e-01 + 9.532800000000e-09 1.717013832461e-01 + 9.542800000000e-09 2.657335955213e-03 + 9.552800000000e-09 -1.713870925589e-01 + 9.562800000000e-09 -3.253654144422e-01 + 9.572800000000e-09 -4.322097206151e-01 + 9.582800000000e-09 -4.741848054597e-01 + 9.592800000000e-09 -4.481034122689e-01 + 9.602800000000e-09 -3.612331987207e-01 + 9.612800000000e-09 -2.279096366069e-01 + 9.622800000000e-09 -6.541185777728e-02 + 9.632800000000e-09 1.093725922642e-01 + 9.642800000000e-09 2.738177273356e-01 + 9.652800000000e-09 4.004725473997e-01 + 9.662800000000e-09 4.670119955316e-01 + 9.672800000000e-09 4.652431338827e-01 + 9.682800000000e-09 3.989630884507e-01 + 9.692800000000e-09 2.803492903980e-01 + 9.702800000000e-09 1.264668581205e-01 + 9.712800000000e-09 -4.609901262979e-02 + 9.722800000000e-09 -2.173662583407e-01 + 9.732800000000e-09 -3.608299222224e-01 + 9.742800000000e-09 -4.508055807148e-01 + 9.752800000000e-09 -4.736936144943e-01 + 9.762800000000e-09 -4.296319777317e-01 + 9.772800000000e-09 -3.282621309804e-01 + 9.782800000000e-09 -1.852727462566e-01 + 9.792800000000e-09 -1.751785697417e-02 + 9.802800000000e-09 1.570670899042e-01 + 9.812800000000e-09 3.139061628357e-01 + 9.822800000000e-09 4.256911863098e-01 + 9.832800000000e-09 4.734981197836e-01 + 9.842800000000e-09 4.530355607929e-01 + 9.852800000000e-09 3.708008431751e-01 + 9.862800000000e-09 2.406649872183e-01 + 9.872800000000e-09 7.995256048710e-02 + 9.882800000000e-09 -9.461609584678e-02 + 9.892800000000e-09 -2.610384551620e-01 + 9.902800000000e-09 -3.919661505565e-01 + 9.912800000000e-09 -4.641867401380e-01 + 9.922800000000e-09 -4.682314424888e-01 + 9.932800000000e-09 -4.070067908672e-01 + 9.942800000000e-09 -2.921347567102e-01 + 9.952800000000e-09 -1.405043945224e-01 + 9.962800000000e-09 3.122434420400e-02 + 9.972800000000e-09 2.036393764277e-01 + 9.982800000000e-09 3.506070576859e-01 + 9.992800000000e-09 4.458981402800e-01 + 1.000000000000e-08 4.734856603609e-01 diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/conditions.yaml new file mode 100644 index 00000000..a047ec8a --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 1 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_01 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/LC_Oscillator_tb.sch new file mode 100644 index 00000000..37f086ac --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/LC_Oscillator_tb_2.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP 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/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp -40 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/conditions.yaml new file mode 100644 index 00000000..f01f6d74 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 2 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_02 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/LC_Oscillator_tb.sch new file mode 100644 index 00000000..24f72f1e --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/LC_Oscillator_tb_3.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp -40 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/conditions.yaml new file mode 100644 index 00000000..b514bdcd --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 3 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_03 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/LC_Oscillator_tb.sch new file mode 100644 index 00000000..fe098a0e --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/LC_Oscillator_tb_4.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp -40 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/LC_Oscillator_tb_4.data b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/LC_Oscillator_tb_4.data new file mode 100644 index 00000000..19009f58 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/LC_Oscillator_tb_4.data @@ -0,0 +1,985 @@ + 1.628000000000e-10 8.921994627659e-03 + 1.728000000000e-10 -6.250808440754e-03 + 1.828000000000e-10 -2.116804767766e-02 + 1.928000000000e-10 -3.372846155594e-02 + 2.028000000000e-10 -4.207000227283e-02 + 2.128000000000e-10 -4.485044885753e-02 + 2.228000000000e-10 -4.146155897630e-02 + 2.328000000000e-10 -3.213851726985e-02 + 2.428000000000e-10 -1.794904402856e-02 + 2.528000000000e-10 -6.740515719510e-04 + 2.628000000000e-10 1.740337941421e-02 + 2.728000000000e-10 3.378321602764e-02 + 2.828000000000e-10 4.608874413608e-02 + 2.928000000000e-10 5.241893360409e-02 + 3.028000000000e-10 5.165015136617e-02 + 3.128000000000e-10 4.362313304756e-02 + 3.228000000000e-10 2.918518855169e-02 + 3.328000000000e-10 1.009495160689e-02 + 3.428000000000e-10 -1.118175750834e-02 + 3.528000000000e-10 -3.176558968677e-02 + 3.628000000000e-10 -4.873433358115e-02 + 3.728000000000e-10 -5.954255433562e-02 + 3.828000000000e-10 -6.242134423960e-02 + 3.928000000000e-10 -5.667002718705e-02 + 4.028000000000e-10 -4.277710392370e-02 + 4.128000000000e-10 -2.236733489352e-02 + 4.228000000000e-10 1.988354771792e-03 + 4.328000000000e-10 2.706248547920e-02 + 4.428000000000e-10 4.936670909158e-02 + 4.528000000000e-10 6.563449908759e-02 + 4.628000000000e-10 7.331743160663e-02 + 4.728000000000e-10 7.100908996647e-02 + 4.828000000000e-10 5.868298839128e-02 + 4.928000000000e-10 3.770339657785e-02 + 5.028000000000e-10 1.064747017608e-02 + 5.128000000000e-10 -1.899517863991e-02 + 5.228000000000e-10 -4.720038524516e-02 + 5.328000000000e-10 -6.991903857100e-02 + 5.428000000000e-10 -8.368777271167e-02 + 5.528000000000e-10 -8.621232681665e-02 + 5.628000000000e-10 -7.675853709417e-02 + 5.728000000000e-10 -5.625437182350e-02 + 5.828000000000e-10 -2.714209092355e-02 + 5.928000000000e-10 6.914493850628e-03 + 6.028000000000e-10 4.141002012865e-02 + 6.128000000000e-10 7.150566836107e-02 + 6.228000000000e-10 9.270929130215e-02 + 6.328000000000e-10 1.016352170926e-01 + 6.428000000000e-10 9.661044960707e-02 + 6.528000000000e-10 7.792996715380e-02 + 6.628000000000e-10 4.775195316774e-02 + 6.728000000000e-10 9.761935560826e-03 + 6.828000000000e-10 -3.113327384765e-02 + 6.928000000000e-10 -6.930043890945e-02 + 7.028000000000e-10 -9.921284591060e-02 + 7.128000000000e-10 -1.162558680250e-01 + 7.228000000000e-10 -1.175227238189e-01 + 7.328000000000e-10 -1.023912549938e-01 + 7.428000000000e-10 -7.253916421377e-02 + 7.528000000000e-10 -3.153166054773e-02 + 7.628000000000e-10 1.548849238805e-02 + 7.728000000000e-10 6.222231353547e-02 + 7.828000000000e-10 1.020102611965e-01 + 7.928000000000e-10 1.288575859551e-01 + 8.028000000000e-10 1.384426505669e-01 + 8.128000000000e-10 1.288976095327e-01 + 8.228000000000e-10 1.011463962497e-01 + 8.328000000000e-10 5.847847385186e-02 + 8.428000000000e-10 6.108600629801e-03 + 8.528000000000e-10 -4.917845777647e-02 + 8.628000000000e-10 -9.971737969867e-02 + 8.728000000000e-10 -1.379824764087e-01 + 8.828000000000e-10 -1.579723987019e-01 + 8.928000000000e-10 -1.563186320242e-01 + 9.028000000000e-10 -1.328336956928e-01 + 9.128000000000e-10 -9.030689177497e-02 + 9.228000000000e-10 -3.388766220079e-02 + 9.328000000000e-10 2.936447519655e-02 + 9.428000000000e-10 9.098324672890e-02 + 9.528000000000e-10 1.419948085473e-01 + 9.628000000000e-10 1.745151474406e-01 + 9.728000000000e-10 1.832481868698e-01 + 9.828000000000e-10 1.664953737483e-01 + 9.928000000000e-10 1.262987251441e-01 + 1.002800000000e-09 6.761241259028e-02 + 1.012800000000e-09 -2.418684924749e-03 + 1.022800000000e-09 -7.481185217514e-02 + 1.032800000000e-09 -1.393577864768e-01 + 1.042800000000e-09 -1.861297522272e-01 + 1.052800000000e-09 -2.076382899597e-01 + 1.062800000000e-09 -2.003623473869e-01 + 1.072800000000e-09 -1.651819516889e-01 + 1.082800000000e-09 -1.065964610032e-01 + 1.092800000000e-09 -3.166009633409e-02 + 1.102800000000e-09 5.039213235322e-02 + 1.112800000000e-09 1.284796890952e-01 + 1.122800000000e-09 1.908498174133e-01 + 1.132800000000e-09 2.275652715078e-01 + 1.142800000000e-09 2.326910039080e-01 + 1.152800000000e-09 2.053663291324e-01 + 1.162800000000e-09 1.494426366223e-01 + 1.172800000000e-09 7.193057220656e-02 + 1.182800000000e-09 -1.792758245217e-02 + 1.192800000000e-09 -1.086570322314e-01 + 1.202800000000e-09 -1.870864655464e-01 + 1.212800000000e-09 -2.406967153409e-01 + 1.222800000000e-09 -2.608055727329e-01 + 1.232800000000e-09 -2.444468472138e-01 + 1.242800000000e-09 -1.942608476892e-01 + 1.252800000000e-09 -1.169980746105e-01 + 1.262800000000e-09 -2.190058620565e-02 + 1.272800000000e-09 7.956249782048e-02 + 1.282800000000e-09 1.734352131179e-01 + 1.292800000000e-09 2.450054166458e-01 + 1.302800000000e-09 2.825743353158e-01 + 1.312800000000e-09 2.803454085579e-01 + 1.322800000000e-09 2.391651231399e-01 + 1.332800000000e-09 1.652292078880e-01 + 1.342800000000e-09 6.776444727939e-02 + 1.352800000000e-09 -4.190987202742e-02 + 1.362800000000e-09 -1.496920269615e-01 + 1.372800000000e-09 -2.393029670321e-01 + 1.382800000000e-09 -2.959604106075e-01 + 1.392800000000e-09 -3.105789904966e-01 + 1.402800000000e-09 -2.816900231698e-01 + 1.412800000000e-09 -2.143385700721e-01 + 1.422800000000e-09 -1.176719919293e-01 + 1.432800000000e-09 -2.948068161086e-03 + 1.442800000000e-09 1.161254689452e-01 + 1.452800000000e-09 2.225924265623e-01 + 1.462800000000e-09 2.990992079698e-01 + 1.472800000000e-09 3.329916975252e-01 + 1.482800000000e-09 3.196543043894e-01 + 1.492800000000e-09 2.622822708717e-01 + 1.502800000000e-09 1.696470758988e-01 + 1.512800000000e-09 5.313433641967e-02 + 1.522800000000e-09 -7.406871108000e-02 + 1.532800000000e-09 -1.952262237003e-01 + 1.542800000000e-09 -2.912206491799e-01 + 1.552800000000e-09 -3.458067478473e-01 + 1.562800000000e-09 -3.506595440929e-01 + 1.572800000000e-09 -3.067197000923e-01 + 1.582800000000e-09 -2.216247412189e-01 + 1.592800000000e-09 -1.067007281746e-01 + 1.602800000000e-09 2.510843771076e-02 + 1.612800000000e-09 1.578919358611e-01 + 1.622800000000e-09 2.718570651088e-01 + 1.632800000000e-09 3.477711179388e-01 + 1.642800000000e-09 3.732137824146e-01 + 1.652800000000e-09 3.458649997465e-01 + 1.662800000000e-09 2.715717618435e-01 + 1.672800000000e-09 1.614584010114e-01 + 1.682800000000e-09 2.853599196156e-02 + 1.692800000000e-09 -1.123017860849e-01 + 1.702800000000e-09 -2.416947098647e-01 + 1.712800000000e-09 -3.383573619805e-01 + 1.722800000000e-09 -3.857550101288e-01 + 1.732800000000e-09 -3.776340034606e-01 + 1.742800000000e-09 -3.176135214662e-01 + 1.752800000000e-09 -2.157122008236e-01 + 1.762800000000e-09 -8.500432499227e-02 + 1.772800000000e-09 6.021258031861e-02 + 1.782800000000e-09 2.018012160835e-01 + 1.792800000000e-09 3.176104285963e-01 + 1.802800000000e-09 3.875747165972e-01 + 1.812800000000e-09 4.009383861108e-01 + 1.822800000000e-09 3.581582283391e-01 + 1.832800000000e-09 2.675288769078e-01 + 1.842800000000e-09 1.421184055722e-01 + 1.852800000000e-09 -3.901509251237e-03 + 1.862800000000e-09 -1.539366822210e-01 + 1.872800000000e-09 -2.862205949025e-01 + 1.882800000000e-09 -3.781668462419e-01 + 1.892800000000e-09 -4.144214651565e-01 + 1.902800000000e-09 -3.915491840032e-01 + 1.912800000000e-09 -3.155956469369e-01 + 1.922800000000e-09 -1.986422460254e-01 + 1.932800000000e-09 -5.500034010946e-02 + 1.942800000000e-09 9.981449357150e-02 + 1.952800000000e-09 2.454024209467e-01 + 1.962800000000e-09 3.579056910055e-01 + 1.972800000000e-09 4.176943093436e-01 + 1.982800000000e-09 4.167742454749e-01 + 1.992800000000e-09 3.582592144858e-01 + 2.002800000000e-09 2.525833399567e-01 + 2.012800000000e-09 1.142978561212e-01 + 2.022800000000e-09 -4.159301784655e-02 + 2.032800000000e-09 -1.966429426895e-01 + 2.042800000000e-09 -3.270817166028e-01 + 2.052800000000e-09 -4.100385249536e-01 + 2.062800000000e-09 -4.325117044248e-01 + 2.072800000000e-09 -3.940123852562e-01 + 2.082800000000e-09 -3.027400653538e-01 + 2.092800000000e-09 -1.726041809664e-01 + 2.102800000000e-09 -1.885519826214e-02 + 2.112800000000e-09 1.418246072692e-01 + 2.122800000000e-09 2.869359449510e-01 + 2.132800000000e-09 3.917117969030e-01 + 2.142800000000e-09 4.383235969801e-01 + 2.152800000000e-09 4.219259348302e-01 + 2.162800000000e-09 3.479959069502e-01 + 2.172800000000e-09 2.288697224962e-01 + 2.182800000000e-09 8.006737798443e-02 + 2.192800000000e-09 -8.266467947510e-02 + 2.202800000000e-09 -2.388643542497e-01 + 2.212800000000e-09 -3.633025207845e-01 + 2.222800000000e-09 -4.339852653313e-01 + 2.232800000000e-09 -4.411048141661e-01 + 2.242800000000e-09 -3.868823222763e-01 + 2.252800000000e-09 -2.815570163898e-01 + 2.262800000000e-09 -1.403884170706e-01 + 2.272800000000e-09 2.099480119986e-02 + 2.282800000000e-09 1.843559307938e-01 + 2.292800000000e-09 3.253407535663e-01 + 2.302800000000e-09 4.191680183483e-01 + 2.312800000000e-09 4.507381846417e-01 + 2.322800000000e-09 4.183393833576e-01 + 2.332800000000e-09 3.297751826446e-01 + 2.342800000000e-09 1.989521059959e-01 + 2.352800000000e-09 4.176395877447e-02 + 2.362800000000e-09 -1.250923521218e-01 + 2.372800000000e-09 -2.791274601792e-01 + 2.382800000000e-09 -3.943138385417e-01 + 2.392800000000e-09 -4.506324123643e-01 + 2.402800000000e-09 -4.416995472468e-01 + 2.412800000000e-09 -3.722208987518e-01 + 2.422800000000e-09 -2.542306958715e-01 + 2.432800000000e-09 -1.038652736393e-01 + 2.442800000000e-09 6.291172212762e-02 + 2.452800000000e-09 2.260486056548e-01 + 2.462800000000e-09 3.597725597509e-01 + 2.472800000000e-09 4.402818384856e-01 + 2.482800000000e-09 4.558679769751e-01 + 2.492800000000e-09 4.076481076217e-01 + 2.502800000000e-09 3.053014017551e-01 + 2.512800000000e-09 1.642107173059e-01 + 2.522800000000e-09 5.671515369448e-04 + 2.532800000000e-09 -1.678196854010e-01 + 2.542800000000e-09 -3.166564149620e-01 + 2.552800000000e-09 -4.199147703135e-01 + 2.562800000000e-09 -4.605033484456e-01 + 2.572800000000e-09 -4.352905918033e-01 + 2.582800000000e-09 -3.512387167325e-01 + 2.592800000000e-09 -2.220027888455e-01 + 2.602800000000e-09 -6.408877715887e-02 + 2.612800000000e-09 1.059779299059e-01 + 2.622800000000e-09 2.661962371749e-01 + 2.632800000000e-09 3.899438617947e-01 + 2.642800000000e-09 4.555083155741e-01 + 2.652800000000e-09 4.546918031364e-01 + 2.662800000000e-09 3.910200666679e-01 + 2.672800000000e-09 2.760898290895e-01 + 2.682800000000e-09 1.262790538554e-01 + 2.692800000000e-09 -4.221009789778e-02 + 2.702800000000e-09 -2.099324509407e-01 + 2.712800000000e-09 -3.510942988630e-01 + 2.722800000000e-09 -4.405344134422e-01 + 2.732800000000e-09 -4.646346045347e-01 + 2.742800000000e-09 -4.232645692404e-01 + 2.752800000000e-09 -3.255397533868e-01 + 2.762800000000e-09 -1.864509325663e-01 + 2.772800000000e-09 -2.241169486077e-02 + 2.782800000000e-09 1.490455107885e-01 + 2.792800000000e-09 3.040335022258e-01 + 2.802800000000e-09 4.157477114685e-01 + 2.812800000000e-09 4.651753084844e-01 + 2.822800000000e-09 4.476787031850e-01 + 2.832800000000e-09 3.692946733017e-01 + 2.842800000000e-09 2.431531487035e-01 + 2.852800000000e-09 8.607496287730e-02 + 2.862800000000e-09 -8.550570604083e-02 + 2.872800000000e-09 -2.502876457362e-01 + 2.882800000000e-09 -3.814782019869e-01 + 2.892800000000e-09 -4.558661454137e-01 + 2.902800000000e-09 -4.634059767151e-01 + 2.912800000000e-09 -4.063986482226e-01 + 2.922800000000e-09 -2.957821712642e-01 + 2.932800000000e-09 -1.478738003041e-01 + 2.942800000000e-09 2.086294715543e-02 + 2.952800000000e-09 1.916563949557e-01 + 2.962800000000e-09 3.390338111768e-01 + 2.972800000000e-09 4.368295448345e-01 + 2.982800000000e-09 4.695165362290e-01 + 2.992800000000e-09 4.355905542618e-01 + 3.002800000000e-09 3.432563752922e-01 + 3.012800000000e-09 2.070987869421e-01 + 3.022800000000e-09 4.393288895437e-02 + 3.032800000000e-09 -1.291288499820e-01 + 3.042800000000e-09 -2.888743630168e-01 + 3.052800000000e-09 -4.081109436161e-01 + 3.062800000000e-09 -4.661142599300e-01 + 3.072800000000e-09 -4.566083238403e-01 + 3.082800000000e-09 -3.845804641094e-01 + 3.092800000000e-09 -2.625257997302e-01 + 3.102800000000e-09 -1.073334765858e-01 + 3.112800000000e-09 6.456512253068e-02 + 3.122800000000e-09 2.326589081955e-01 + 3.132800000000e-09 3.703006655202e-01 + 3.142800000000e-09 4.528586138424e-01 + 3.152800000000e-09 4.685664616132e-01 + 3.162800000000e-09 4.187380479215e-01 + 3.172800000000e-09 3.136005825752e-01 + 3.182800000000e-09 1.688667961361e-01 + 3.192800000000e-09 9.733615405871e-04 + 3.202800000000e-09 -1.717642854068e-01 + 3.212800000000e-09 -3.244081174794e-01 + 3.222800000000e-09 -4.301069871010e-01 + 3.232800000000e-09 -4.714594277117e-01 + 3.242800000000e-09 -4.454561626519e-01 + 3.252800000000e-09 -3.592880284839e-01 + 3.262800000000e-09 -2.269832643950e-01 + 3.272800000000e-09 -6.559043446264e-02 + 3.282800000000e-09 1.080934692085e-01 + 3.292800000000e-09 2.716780820259e-01 + 3.302800000000e-09 3.978727676700e-01 + 3.312800000000e-09 4.645002145836e-01 + 3.322800000000e-09 4.634120857435e-01 + 3.332800000000e-09 3.983174281598e-01 + 3.342800000000e-09 2.810702994589e-01 + 3.352800000000e-09 1.284583075515e-01 + 3.362800000000e-09 -4.300149698164e-02 + 3.372800000000e-09 -2.136164383732e-01 + 3.382800000000e-09 -3.571082366090e-01 + 3.392800000000e-09 -4.478049278643e-01 + 3.402800000000e-09 -4.720302129109e-01 + 3.412800000000e-09 -4.297707213783e-01 + 3.422800000000e-09 -3.303256611329e-01 + 3.432800000000e-09 -1.889792421143e-01 + 3.442800000000e-09 -2.250261986662e-02 + 3.452800000000e-09 1.513991276841e-01 + 3.462800000000e-09 3.085110454873e-01 + 3.472800000000e-09 4.215659335673e-01 + 3.482800000000e-09 4.713628921550e-01 + 3.492800000000e-09 4.533587901538e-01 + 3.502800000000e-09 3.737313297403e-01 + 3.512800000000e-09 2.458170804436e-01 + 3.522800000000e-09 8.674325671948e-02 + 3.532800000000e-09 -8.688222895823e-02 + 3.542800000000e-09 -2.535404479030e-01 + 3.552800000000e-09 -3.860697503614e-01 + 3.562800000000e-09 -4.609840679314e-01 + 3.572800000000e-09 -4.682823451065e-01 + 3.582800000000e-09 -4.104027260808e-01 + 3.592800000000e-09 -2.984305839203e-01 + 3.602800000000e-09 -1.488965131335e-01 + 3.612800000000e-09 2.153067125047e-02 + 3.622800000000e-09 1.939395321978e-01 + 3.632800000000e-09 3.425879510211e-01 + 3.642800000000e-09 4.410203685950e-01 + 3.652800000000e-09 4.736836707245e-01 + 3.662800000000e-09 4.391649814867e-01 + 3.672800000000e-09 3.457882238040e-01 + 3.682800000000e-09 2.083045637322e-01 + 3.692800000000e-09 4.373289914739e-02 + 3.702800000000e-09 -1.307056804697e-01 + 3.712800000000e-09 -2.916118155640e-01 + 3.722800000000e-09 -4.115337855708e-01 + 3.732800000000e-09 -4.696439109073e-01 + 3.742800000000e-09 -4.597469432446e-01 + 3.752800000000e-09 -3.869279422469e-01 + 3.762800000000e-09 -2.638060821614e-01 + 3.772800000000e-09 -1.074421302892e-01 + 3.782800000000e-09 6.562307109516e-02 + 3.792800000000e-09 2.347495607656e-01 + 3.802800000000e-09 3.730820709844e-01 + 3.812800000000e-09 4.558386905224e-01 + 3.822800000000e-09 4.713042465502e-01 + 3.832800000000e-09 4.208768875657e-01 + 3.842800000000e-09 3.148820557592e-01 + 3.852800000000e-09 1.691643273111e-01 + 3.862800000000e-09 2.829386904943e-04 + 3.872800000000e-09 -1.733586281059e-01 + 3.882800000000e-09 -3.266668644367e-01 + 3.892800000000e-09 -4.326277125095e-01 + 3.902800000000e-09 -4.738404147601e-01 + 3.912800000000e-09 -4.473770320676e-01 + 3.922800000000e-09 -3.605157090959e-01 + 3.932800000000e-09 -2.273866643799e-01 + 3.942800000000e-09 -6.515361349030e-02 + 3.952800000000e-09 1.093170532062e-01 + 3.962800000000e-09 2.735185943241e-01 + 3.972800000000e-09 4.000125402027e-01 + 3.982800000000e-09 4.665714642395e-01 + 3.992800000000e-09 4.651243190541e-01 + 4.002800000000e-09 3.994631589069e-01 + 4.012800000000e-09 2.815248154703e-01 + 4.022800000000e-09 1.281933706433e-01 + 4.032800000000e-09 -4.394739061428e-02 + 4.042800000000e-09 -2.151221907104e-01 + 4.052800000000e-09 -3.589289516718e-01 + 4.062800000000e-09 -4.496167225687e-01 + 4.072800000000e-09 -4.735657157348e-01 + 4.082800000000e-09 -4.308368783964e-01 + 4.092800000000e-09 -3.308029140452e-01 + 4.102800000000e-09 -1.888298145487e-01 + 4.112800000000e-09 -2.175716621820e-02 + 4.122800000000e-09 1.526518643747e-01 + 4.132800000000e-09 3.100828836229e-01 + 4.142800000000e-09 4.231771449789e-01 + 4.152800000000e-09 4.727547739386e-01 + 4.162800000000e-09 4.543506967264e-01 + 4.172800000000e-09 3.742117454177e-01 + 4.182800000000e-09 2.457439415578e-01 + 4.192800000000e-09 8.614177780489e-02 + 4.202800000000e-09 -8.794394483725e-02 + 4.212800000000e-09 -2.549149229177e-01 + 4.222800000000e-09 -3.875205872007e-01 + 4.232800000000e-09 -4.622580274916e-01 + 4.242800000000e-09 -4.692042087824e-01 + 4.252800000000e-09 -4.108715136736e-01 + 4.262800000000e-09 -2.984067137502e-01 + 4.272800000000e-09 -1.484001251954e-01 + 4.282800000000e-09 2.244180062553e-02 + 4.292800000000e-09 1.951502745586e-01 + 4.302800000000e-09 3.439025126611e-01 + 4.312800000000e-09 4.422036576329e-01 + 4.322800000000e-09 4.745616072385e-01 + 4.332800000000e-09 4.396346376939e-01 + 4.342800000000e-09 3.458080034430e-01 + 4.352800000000e-09 2.078896432033e-01 + 4.362800000000e-09 4.293587942445e-02 + 4.372800000000e-09 -1.317933532978e-01 + 4.382800000000e-09 -2.928275806171e-01 + 4.392800000000e-09 -4.126613480749e-01 + 4.402800000000e-09 -4.705004677170e-01 + 4.412800000000e-09 -4.602275549369e-01 + 4.422800000000e-09 -3.869887610318e-01 + 4.432800000000e-09 -2.634566161830e-01 + 4.442800000000e-09 -1.067342012463e-01 + 4.452800000000e-09 6.661325683136e-02 + 4.462800000000e-09 2.358864408292e-01 + 4.472800000000e-09 3.741709705060e-01 + 4.482800000000e-09 4.568953273597e-01 + 4.492800000000e-09 4.722437434658e-01 + 4.502800000000e-09 4.213646257723e-01 + 4.512800000000e-09 3.148077473449e-01 + 4.522800000000e-09 1.685706542989e-01 + 4.532800000000e-09 -7.651596677591e-04 + 4.542800000000e-09 -1.747330700286e-01 + 4.552800000000e-09 -3.281499924725e-01 + 4.562800000000e-09 -4.339538589992e-01 + 4.572800000000e-09 -4.748080938550e-01 + 4.582800000000e-09 -4.478731627364e-01 + 4.592800000000e-09 -3.604989698281e-01 + 4.602800000000e-09 -2.268803164459e-01 + 4.612800000000e-09 -6.422299724315e-02 + 4.622800000000e-09 1.105678958497e-01 + 4.632800000000e-09 2.749076086023e-01 + 4.642800000000e-09 4.012942281260e-01 + 4.652800000000e-09 4.675306858113e-01 + 4.662800000000e-09 4.656412141460e-01 + 4.672800000000e-09 3.994955566370e-01 + 4.682800000000e-09 2.810905230765e-01 + 4.692800000000e-09 1.273579319141e-01 + 4.702800000000e-09 -4.509532717215e-02 + 4.712800000000e-09 -2.164303176781e-01 + 4.722800000000e-09 -3.601773315364e-01 + 4.732800000000e-09 -4.505842241570e-01 + 4.742800000000e-09 -4.741219797391e-01 + 4.752800000000e-09 -4.309293860112e-01 + 4.762800000000e-09 -3.304432928346e-01 + 4.772800000000e-09 -1.880806116897e-01 + 4.782800000000e-09 -2.069958202730e-02 + 4.792800000000e-09 1.538931433705e-01 + 4.802800000000e-09 3.113139840135e-01 + 4.812800000000e-09 4.241767051763e-01 + 4.822800000000e-09 4.734158341239e-01 + 4.832800000000e-09 4.545995714633e-01 + 4.842800000000e-09 3.739914181026e-01 + 4.852800000000e-09 2.451034881635e-01 + 4.862800000000e-09 8.516127580212e-02 + 4.872800000000e-09 -8.915874824276e-02 + 4.882800000000e-09 -2.561908091088e-01 + 4.892800000000e-09 -3.886335688705e-01 + 4.902800000000e-09 -4.630164702780e-01 + 4.912800000000e-09 -4.695157597566e-01 + 4.922800000000e-09 -4.107228212142e-01 + 4.932800000000e-09 -2.978399695944e-01 + 4.942800000000e-09 -1.474970000778e-01 + 4.952800000000e-09 2.358731398575e-02 + 4.962800000000e-09 1.963912534580e-01 + 4.972800000000e-09 3.450333277823e-01 + 4.982800000000e-09 4.430219367099e-01 + 4.992800000000e-09 4.749559116142e-01 + 5.002800000000e-09 4.395747521071e-01 + 5.012800000000e-09 3.453261277554e-01 + 5.022800000000e-09 2.070641307093e-01 + 5.032800000000e-09 4.185660405175e-02 + 5.042800000000e-09 -1.330037743139e-01 + 5.052800000000e-09 -2.939840477710e-01 + 5.062800000000e-09 -4.135559186122e-01 + 5.072800000000e-09 -4.709929512517e-01 + 5.082800000000e-09 -4.602708164376e-01 + 5.092800000000e-09 -3.866015950148e-01 + 5.102800000000e-09 -2.627080497222e-01 + 5.112800000000e-09 -1.057178776598e-01 + 5.122800000000e-09 6.779121120354e-02 + 5.132800000000e-09 2.370624100016e-01 + 5.142800000000e-09 3.751402346198e-01 + 5.152800000000e-09 4.574865017811e-01 + 5.162800000000e-09 4.723865396267e-01 + 5.172800000000e-09 4.210695463150e-01 + 5.182800000000e-09 3.141394718327e-01 + 5.192800000000e-09 1.676250222324e-01 + 5.202800000000e-09 -1.893567871449e-03 + 5.212800000000e-09 -1.759056745189e-01 + 5.222800000000e-09 -3.291759542458e-01 + 5.232800000000e-09 -4.346480215161e-01 + 5.242800000000e-09 -4.750738316095e-01 + 5.252800000000e-09 -4.476975604131e-01 + 5.262800000000e-09 -3.599296907806e-01 + 5.272800000000e-09 -2.260071158686e-01 + 5.282800000000e-09 -6.314278374685e-02 + 5.292800000000e-09 1.117368152039e-01 + 5.302800000000e-09 2.759907885790e-01 + 5.312800000000e-09 4.020973709050e-01 + 5.322800000000e-09 4.679225179291e-01 + 5.332800000000e-09 4.655871578271e-01 + 5.342800000000e-09 3.990297552070e-01 + 5.352800000000e-09 2.802932379138e-01 + 5.362800000000e-09 1.263310747026e-01 + 5.372800000000e-09 -4.624705151399e-02 + 5.382800000000e-09 -2.175522564699e-01 + 5.392800000000e-09 -3.610768156466e-01 + 5.402800000000e-09 -4.511029572012e-01 + 5.412800000000e-09 -4.742001739690e-01 + 5.422800000000e-09 -4.305812705505e-01 + 5.432800000000e-09 -3.297378238057e-01 + 5.442800000000e-09 -1.871204958541e-01 + 5.452800000000e-09 -1.958209949485e-02 + 5.462800000000e-09 1.550362180770e-01 + 5.472800000000e-09 3.123008687635e-01 + 5.482800000000e-09 4.248285533615e-01 + 5.492800000000e-09 4.736378179562e-01 + 5.502800000000e-09 4.543842110300e-01 + 5.512800000000e-09 3.733921736459e-01 + 5.522800000000e-09 2.442146615801e-01 + 5.532800000000e-09 8.408494027472e-02 + 5.542800000000e-09 -9.030848600058e-02 + 5.552800000000e-09 -2.572473578524e-01 + 5.562800000000e-09 -3.894088164732e-01 + 5.572800000000e-09 -4.633788743673e-01 + 5.582800000000e-09 -4.694330098105e-01 + 5.592800000000e-09 -4.102340046607e-01 + 5.602800000000e-09 -2.970295877087e-01 + 5.612800000000e-09 -1.464718517950e-01 + 5.622800000000e-09 2.472394900496e-02 + 5.632800000000e-09 1.974925386302e-01 + 5.642800000000e-09 3.459137819305e-01 + 5.652800000000e-09 4.435241069265e-01 + 5.662800000000e-09 4.750188446031e-01 + 5.672800000000e-09 4.392144174707e-01 + 5.682800000000e-09 3.446134640946e-01 + 5.692800000000e-09 2.061043539537e-01 + 5.702800000000e-09 4.074968783448e-02 + 5.712800000000e-09 -1.341323271673e-01 + 5.722800000000e-09 -2.949594179372e-01 + 5.732800000000e-09 -4.142013456325e-01 + 5.742800000000e-09 -4.712110012441e-01 + 5.752800000000e-09 -4.600539110552e-01 + 5.762800000000e-09 -3.860026769341e-01 + 5.772800000000e-09 -2.618219618434e-01 + 5.782800000000e-09 -1.046506404501e-01 + 5.792800000000e-09 6.892945435888e-02 + 5.802800000000e-09 2.381121768711e-01 + 5.812800000000e-09 3.759169099421e-01 + 5.822800000000e-09 4.578534644463e-01 + 5.832800000000e-09 4.723080115626e-01 + 5.842800000000e-09 4.205853003269e-01 + 5.852800000000e-09 3.133376124304e-01 + 5.862800000000e-09 1.666157937244e-01 + 5.872800000000e-09 -3.011438398817e-03 + 5.882800000000e-09 -1.769945970476e-01 + 5.892800000000e-09 -3.300568654908e-01 + 5.902800000000e-09 -4.351616491558e-01 + 5.912800000000e-09 -4.751529980297e-01 + 5.922800000000e-09 -4.473553956259e-01 + 5.932800000000e-09 -3.592351067647e-01 + 5.942800000000e-09 -2.250644169344e-01 + 5.952800000000e-09 -6.205398129327e-02 + 5.962800000000e-09 1.128527272200e-01 + 5.972800000000e-09 2.769660080806e-01 + 5.982800000000e-09 4.027559156229e-01 + 5.992800000000e-09 4.681584410967e-01 + 6.002800000000e-09 4.653885956488e-01 + 6.012800000000e-09 3.984494643980e-01 + 6.022800000000e-09 2.794251089873e-01 + 6.032800000000e-09 1.252834074848e-01 + 6.042800000000e-09 -4.736830932679e-02 + 6.052800000000e-09 -2.185957676920e-01 + 6.062800000000e-09 -3.618621388760e-01 + 6.072800000000e-09 -4.514923122388e-01 + 6.082800000000e-09 -4.741536604854e-01 + 6.092800000000e-09 -4.301297743724e-01 + 6.102800000000e-09 -3.289631360056e-01 + 6.112800000000e-09 -1.861326459236e-01 + 6.122800000000e-09 -1.847977239638e-02 + 6.132800000000e-09 1.561228633589e-01 + 6.142800000000e-09 3.131978969901e-01 + 6.152800000000e-09 4.253730300088e-01 + 6.162800000000e-09 4.737527994173e-01 + 6.172800000000e-09 4.540770725745e-01 + 6.182800000000e-09 3.727277960554e-01 + 6.192800000000e-09 2.432946987902e-01 + 6.202800000000e-09 8.301343849234e-02 + 6.212800000000e-09 -9.141812088599e-02 + 6.222800000000e-09 -2.582335829207e-01 + 6.232800000000e-09 -3.900952881195e-01 + 6.242800000000e-09 -4.636499073123e-01 + 6.252800000000e-09 -4.692696610234e-01 + 6.262800000000e-09 -4.096854012518e-01 + 6.272800000000e-09 -2.961870275969e-01 + 6.282800000000e-09 -1.454447797529e-01 + 6.292800000000e-09 2.583267691745e-02 + 6.302800000000e-09 1.985391989423e-01 + 6.312800000000e-09 3.467212589319e-01 + 6.322800000000e-09 4.439481011219e-01 + 6.332800000000e-09 4.750105925649e-01 + 6.342800000000e-09 4.387992257750e-01 + 6.352800000000e-09 3.438687754268e-01 + 6.362800000000e-09 2.051385125058e-01 + 6.372800000000e-09 3.966235980499e-02 + 6.382800000000e-09 -1.352177297072e-01 + 6.392800000000e-09 -2.958740506851e-01 + 6.402800000000e-09 -4.147791240383e-01 + 6.412800000000e-09 -4.713659407564e-01 + 6.422800000000e-09 -4.597870099747e-01 + 6.432800000000e-09 -3.853728427213e-01 + 6.442800000000e-09 -2.609272788819e-01 + 6.452800000000e-09 -1.035971018674e-01 + 6.462800000000e-09 7.003325247877e-02 + 6.472800000000e-09 2.391110623893e-01 + 6.482800000000e-09 3.766346716993e-01 + 6.492800000000e-09 4.581642162527e-01 + 6.502800000000e-09 4.721842475265e-01 + 6.512800000000e-09 4.200720522133e-01 + 6.522800000000e-09 3.125258739116e-01 + 6.532800000000e-09 1.656162171473e-01 + 6.542800000000e-09 -4.101565251238e-03 + 6.552800000000e-09 -1.780407994483e-01 + 6.562800000000e-09 -3.308865270871e-01 + 6.572800000000e-09 -4.356247401792e-01 + 6.582800000000e-09 -4.751903625282e-01 + 6.592800000000e-09 -4.469854481218e-01 + 6.602800000000e-09 -3.585297030204e-01 + 6.612800000000e-09 -2.241285188885e-01 + 6.622800000000e-09 -6.098819473744e-02 + 6.632800000000e-09 1.139318125234e-01 + 6.642800000000e-09 2.778956461170e-01 + 6.652800000000e-09 4.033680717374e-01 + 6.662800000000e-09 4.683552507659e-01 + 6.672800000000e-09 4.651634260349e-01 + 6.682800000000e-09 3.978578316763e-01 + 6.692800000000e-09 2.785616367438e-01 + 6.702800000000e-09 1.242551180056e-01 + 6.712800000000e-09 -4.845753585481e-02 + 6.722800000000e-09 -2.195985235262e-01 + 6.732800000000e-09 -3.626046206166e-01 + 6.742800000000e-09 -4.518444767662e-01 + 6.752800000000e-09 -4.740809680108e-01 + 6.762800000000e-09 -4.296660441547e-01 + 6.772800000000e-09 -3.281910708526e-01 + 6.782800000000e-09 -1.851612686760e-01 + 6.792800000000e-09 -1.740573341372e-02 + 6.802800000000e-09 1.571724984386e-01 + 6.812800000000e-09 3.140546881788e-01 + 6.822800000000e-09 4.258812834062e-01 + 6.832800000000e-09 4.738414589468e-01 + 6.842800000000e-09 4.537566539097e-01 + 6.852800000000e-09 3.720641979526e-01 + 6.862800000000e-09 2.423888380726e-01 + 6.872800000000e-09 8.196725981161e-02 + 6.882800000000e-09 -9.249379793095e-02 + 6.892800000000e-09 -2.591817856482e-01 + 6.902800000000e-09 -3.907462343651e-01 + 6.912800000000e-09 -4.638942717642e-01 + 6.922800000000e-09 -4.690920029795e-01 + 6.932800000000e-09 -4.091359274803e-01 + 6.942800000000e-09 -2.953564183406e-01 + 6.952800000000e-09 -1.444404430849e-01 + 6.962800000000e-09 2.691026696538e-02 + 6.972800000000e-09 1.995500208960e-01 + 6.982800000000e-09 3.474939241121e-01 + 6.992800000000e-09 4.443446395705e-01 + 7.002800000000e-09 4.749862586126e-01 + 7.012800000000e-09 4.383808953813e-01 + 7.022800000000e-09 3.431336072748e-01 + 7.032800000000e-09 2.041930538090e-01 + 7.042800000000e-09 3.860383894511e-02 + 7.052800000000e-09 -1.362689581225e-01 + 7.062800000000e-09 -2.967541171234e-01 + 7.072800000000e-09 -4.153281346461e-01 + 7.082800000000e-09 -4.715026678129e-01 + 7.092800000000e-09 -4.595144522147e-01 + 7.102800000000e-09 -3.847499593822e-01 + 7.112800000000e-09 -2.600506751530e-01 + 7.122800000000e-09 -1.025702225937e-01 + 7.132800000000e-09 7.110448640387e-02 + 7.142800000000e-09 2.400757299797e-01 + 7.152800000000e-09 3.773223792182e-01 + 7.162800000000e-09 4.584546052916e-01 + 7.172800000000e-09 4.720525015111e-01 + 7.182800000000e-09 4.195633982345e-01 + 7.192800000000e-09 3.117299147950e-01 + 7.202800000000e-09 1.646411276352e-01 + 7.212800000000e-09 -5.161039097261e-03 + 7.222800000000e-09 -1.790536862020e-01 + 7.232800000000e-09 -3.316854144100e-01 + 7.242800000000e-09 -4.360652072394e-01 + 7.252800000000e-09 -4.752166704094e-01 + 7.262800000000e-09 -4.466169102477e-01 + 7.272800000000e-09 -3.578372811604e-01 + 7.282800000000e-09 -2.232149678243e-01 + 7.292800000000e-09 -5.995141451143e-02 + 7.302800000000e-09 1.149782254260e-01 + 7.312800000000e-09 2.787935796428e-01 + 7.322800000000e-09 4.039551204642e-01 + 7.332800000000e-09 4.685378923459e-01 + 7.342800000000e-09 4.649365331667e-01 + 7.352800000000e-09 3.972763577699e-01 + 7.362800000000e-09 2.777182658313e-01 + 7.372800000000e-09 1.232540598684e-01 + 7.382800000000e-09 -4.951511219396e-02 + 7.392800000000e-09 -2.205691911061e-01 + 7.402800000000e-09 -3.633199246793e-01 + 7.412800000000e-09 -4.521792946842e-01 + 7.422800000000e-09 -4.740030026091e-01 + 7.432800000000e-09 -4.292091504183e-01 + 7.442800000000e-09 -3.274363876557e-01 + 7.452800000000e-09 -1.842151195254e-01 + 7.462800000000e-09 -1.636207908478e-02 + 7.472800000000e-09 1.581899392828e-01 + 7.482800000000e-09 3.148823737174e-01 + 7.492800000000e-09 4.263688108291e-01 + 7.502800000000e-09 4.739210414447e-01 + 7.512800000000e-09 4.534394592006e-01 + 7.522800000000e-09 3.714149720879e-01 + 7.532800000000e-09 2.415061105286e-01 + 7.542800000000e-09 8.095008936837e-02 + 7.552800000000e-09 -9.353751812068e-02 + 7.562800000000e-09 -2.600994703389e-01 + 7.572800000000e-09 -3.913734459131e-01 + 7.582800000000e-09 -4.641259334052e-01 + 7.592800000000e-09 -4.689140539086e-01 + 7.602800000000e-09 -4.085977826616e-01 + 7.612800000000e-09 -2.945466239484e-01 + 7.622800000000e-09 -1.434634565774e-01 + 7.632800000000e-09 2.795670975379e-02 + 7.642800000000e-09 2.005296575054e-01 + 7.652800000000e-09 3.482404344091e-01 + 7.662800000000e-09 4.447248280863e-01 + 7.672800000000e-09 4.749576095877e-01 + 7.682800000000e-09 4.379702095616e-01 + 7.692800000000e-09 3.424163607885e-01 + 7.702800000000e-09 2.032730182620e-01 + 7.712800000000e-09 3.757542631316e-02 + 7.722800000000e-09 -1.372885979838e-01 + 7.732800000000e-09 -2.976057869227e-01 + 7.742800000000e-09 -4.158570695952e-01 + 7.752800000000e-09 -4.716308960513e-01 + 7.762800000000e-09 -4.592455639971e-01 + 7.772800000000e-09 -3.841417375387e-01 + 7.782800000000e-09 -2.591973001521e-01 + 7.792800000000e-09 -1.015721327385e-01 + 7.802800000000e-09 7.214422877077e-02 + 7.812800000000e-09 2.410103677704e-01 + 7.822800000000e-09 3.779866808324e-01 + 7.832800000000e-09 4.587325294057e-01 + 7.842800000000e-09 4.719206939081e-01 + 7.852800000000e-09 4.190662270437e-01 + 7.862800000000e-09 3.109547342056e-01 + 7.872800000000e-09 1.636930937070e-01 + 7.882800000000e-09 -6.189893137636e-03 + 7.892800000000e-09 -1.800359125821e-01 + 7.902800000000e-09 -3.324584472924e-01 + 7.912800000000e-09 -4.364893560947e-01 + 7.922800000000e-09 -4.752385710400e-01 + 7.932800000000e-09 -4.462558398640e-01 + 7.942800000000e-09 -3.571625280082e-01 + 7.952800000000e-09 -2.223265311913e-01 + 7.962800000000e-09 -5.894428530680e-02 + 7.972800000000e-09 1.159935138078e-01 + 7.982800000000e-09 2.796633756902e-01 + 7.992800000000e-09 4.045220478586e-01 + 8.002800000000e-09 4.687118860166e-01 + 8.012800000000e-09 4.647131567104e-01 + 8.022800000000e-09 3.967093215780e-01 + 8.032800000000e-09 2.768978003204e-01 + 8.042800000000e-09 1.222813100937e-01 + 8.052800000000e-09 -5.054176955126e-02 + 8.062800000000e-09 -2.215102523483e-01 + 8.072800000000e-09 -3.640119101125e-01 + 8.082800000000e-09 -4.525013022850e-01 + 8.092800000000e-09 -4.739242681687e-01 + 8.102800000000e-09 -4.287629550407e-01 + 8.112800000000e-09 -3.267018200055e-01 + 8.122800000000e-09 -1.832955094722e-01 + 8.132800000000e-09 -1.534862323570e-02 + 8.142800000000e-09 1.591768648725e-01 + 8.152800000000e-09 3.156839087936e-01 + 8.162800000000e-09 4.268393215903e-01 + 8.172800000000e-09 4.739953788447e-01 + 8.182800000000e-09 4.531289024867e-01 + 8.192800000000e-09 3.707826827383e-01 + 8.202800000000e-09 2.406479350063e-01 + 8.212800000000e-09 7.996210601300e-02 + 8.222800000000e-09 -9.455036108959e-02 + 8.232800000000e-09 -2.609888582590e-01 + 8.242800000000e-09 -3.919799218048e-01 + 8.252800000000e-09 -4.643481220436e-01 + 8.262800000000e-09 -4.687387900253e-01 + 8.272800000000e-09 -4.080733124051e-01 + 8.282800000000e-09 -2.937590870246e-01 + 8.292800000000e-09 -1.425142352874e-01 + 8.302800000000e-09 2.897263701370e-02 + 8.312800000000e-09 2.014797360792e-01 + 8.322800000000e-09 3.489631778949e-01 + 8.332800000000e-09 4.450913812836e-01 + 8.342800000000e-09 4.749272494988e-01 + 8.352800000000e-09 4.375693113287e-01 + 8.362800000000e-09 3.417184556468e-01 + 8.372800000000e-09 2.023789541406e-01 + 8.382800000000e-09 3.657678476710e-02 + 8.392800000000e-09 -1.382778477462e-01 + 8.402800000000e-09 -2.984309701800e-01 + 8.412800000000e-09 -4.163682181519e-01 + 8.422800000000e-09 -4.717528941997e-01 + 8.432800000000e-09 -4.589822762073e-01 + 8.442800000000e-09 -3.835495312736e-01 + 8.452800000000e-09 -2.583677798614e-01 + 8.462800000000e-09 -1.006027036240e-01 + 8.472800000000e-09 7.315334912653e-02 + 8.482800000000e-09 2.419164953594e-01 + 8.492800000000e-09 3.786295050504e-01 + 8.502800000000e-09 4.589999646750e-01 + 8.512800000000e-09 4.717905441024e-01 + 8.522800000000e-09 4.185817932699e-01 + 8.532800000000e-09 3.102009855836e-01 + 8.542800000000e-09 1.627721178290e-01 + 8.552800000000e-09 -7.188753107588e-03 + 8.562800000000e-09 -1.809886776543e-01 + 8.572800000000e-09 -3.332072315661e-01 + 8.582800000000e-09 -4.368989084043e-01 + 8.592800000000e-09 -4.752576147492e-01 + 8.602800000000e-09 -4.459034105088e-01 + 8.612800000000e-09 -3.565061054176e-01 + 8.622800000000e-09 -2.214632980491e-01 + 8.632800000000e-09 -5.796634781083e-02 + 8.642800000000e-09 1.169786467988e-01 + 8.652800000000e-09 2.805063955936e-01 + 8.662800000000e-09 4.050703751487e-01 + 8.672800000000e-09 4.688786355596e-01 + 8.682800000000e-09 4.644943846068e-01 + 8.692800000000e-09 3.961573725589e-01 + 8.702800000000e-09 2.761003910130e-01 + 8.712800000000e-09 1.213365361636e-01 + 8.722800000000e-09 -5.153828810958e-02 + 8.732800000000e-09 -2.224228563487e-01 + 8.742800000000e-09 -3.646819188955e-01 + 8.752800000000e-09 -4.528117860280e-01 + 8.762800000000e-09 -4.738457972672e-01 + 8.772800000000e-09 -4.283281105398e-01 + 8.782800000000e-09 -3.259875734726e-01 + 8.792800000000e-09 -1.824021957242e-01 + 8.802800000000e-09 -1.436472012693e-02 + 8.812800000000e-09 1.601342665905e-01 + 8.822800000000e-09 3.164604971745e-01 + 8.832800000000e-09 4.272940159130e-01 + 8.842800000000e-09 4.740654594224e-01 + 8.852800000000e-09 4.528256320820e-01 + 8.862800000000e-09 3.701675730450e-01 + 8.872800000000e-09 2.398141382327e-01 + 8.882800000000e-09 7.900276799010e-02 + 8.892800000000e-09 -9.553318893173e-02 + 8.902800000000e-09 -2.618510310670e-01 + 8.912800000000e-09 -3.925667833725e-01 + 8.922800000000e-09 -4.645617864454e-01 + 8.932800000000e-09 -4.685668510319e-01 + 8.942800000000e-09 -4.075627858079e-01 + 8.952800000000e-09 -2.929936949125e-01 + 8.962800000000e-09 -1.415923245157e-01 + 8.972800000000e-09 2.995879538227e-02 + 8.982800000000e-09 2.024012224116e-01 + 8.992800000000e-09 3.496631972269e-01 + 9.002800000000e-09 4.454452252897e-01 + 9.012800000000e-09 4.748958389535e-01 + 9.022800000000e-09 4.371785193807e-01 + 9.032800000000e-09 3.410398456534e-01 + 9.042800000000e-09 2.015104759426e-01 + 9.052800000000e-09 3.560724990779e-02 + 9.062800000000e-09 -1.392375916003e-01 + 9.072800000000e-09 -2.992306557216e-01 + 9.082800000000e-09 -4.168624991331e-01 + 9.092800000000e-09 -4.718693474070e-01 + 9.102800000000e-09 -4.587249549050e-01 + 9.112800000000e-09 -3.829733573589e-01 + 9.122800000000e-09 -2.575617970342e-01 + 9.132800000000e-09 -9.966134601027e-02 + 9.142800000000e-09 7.413265450908e-02 + 9.152800000000e-09 2.427950475487e-01 + 9.162800000000e-09 3.792517638854e-01 + 9.172800000000e-09 4.592576225583e-01 + 9.182800000000e-09 4.716624560228e-01 + 9.192800000000e-09 4.181101639976e-01 + 9.202800000000e-09 3.092265329602e-01 + 9.212800000000e-09 1.613826760635e-01 + 9.222800000000e-09 -8.591362378177e-03 + 9.232800000000e-09 -1.821948797593e-01 + 9.242800000000e-09 -3.340150894862e-01 + 9.252800000000e-09 -4.371621210986e-01 + 9.262800000000e-09 -4.749554282351e-01 + 9.272800000000e-09 -4.451076323293e-01 + 9.282800000000e-09 -3.553515682906e-01 + 9.292800000000e-09 -2.201127094289e-01 + 9.302800000000e-09 -5.656081616114e-02 + 9.312800000000e-09 1.182861505677e-01 + 9.322800000000e-09 2.815142984545e-01 + 9.332800000000e-09 4.055953487096e-01 + 9.342800000000e-09 4.688405149588e-01 + 9.352800000000e-09 4.639282574056e-01 + 9.362800000000e-09 3.951697954098e-01 + 9.372800000000e-09 2.748410208718e-01 + 9.382800000000e-09 1.199553529026e-01 + 9.392800000000e-09 -5.290213319449e-02 + 9.402800000000e-09 -2.235831261205e-01 + 9.412800000000e-09 -3.654339231997e-01 + 9.422800000000e-09 -4.530258550273e-01 + 9.432800000000e-09 -4.735141556152e-01 + 9.442800000000e-09 -4.275270401763e-01 + 9.452800000000e-09 -3.248487299410e-01 + 9.462800000000e-09 -1.810818003189e-01 + 9.472800000000e-09 -1.299077535256e-02 + 9.482800000000e-09 1.613974715264e-01 + 9.492800000000e-09 3.174079009097e-01 + 9.502800000000e-09 4.277524528595e-01 + 9.512800000000e-09 4.739771135621e-01 + 9.522800000000e-09 4.522321956163e-01 + 9.532800000000e-09 3.691771378048e-01 + 9.542800000000e-09 2.385719436969e-01 + 9.552800000000e-09 7.764528823620e-02 + 9.562800000000e-09 -9.686221532971e-02 + 9.572800000000e-09 -2.629550288587e-01 + 9.582800000000e-09 -3.932467336316e-01 + 9.592800000000e-09 -4.647055554736e-01 + 9.602800000000e-09 -4.681803379887e-01 + 9.612800000000e-09 -4.067303902511e-01 + 9.622800000000e-09 -2.918469601552e-01 + 9.632800000000e-09 -1.402757453327e-01 + 9.642800000000e-09 3.131421333503e-02 + 9.652800000000e-09 2.036177559532e-01 + 9.662800000000e-09 3.505322257024e-01 + 9.672800000000e-09 4.458123436490e-01 + 9.682800000000e-09 4.747262934582e-01 + 9.692800000000e-09 4.365256422635e-01 + 9.702800000000e-09 3.400168603682e-01 + 9.712800000000e-09 2.002625637283e-01 + 9.722800000000e-09 3.426034245284e-02 + 9.732800000000e-09 -1.405291730806e-01 + 9.742800000000e-09 -3.002636586864e-01 + 9.752800000000e-09 -4.174484725967e-01 + 9.762800000000e-09 -4.719250075856e-01 + 9.772800000000e-09 -4.582708742877e-01 + 9.782800000000e-09 -3.820983680033e-01 + 9.792800000000e-09 -2.563983408258e-01 + 9.802800000000e-09 -9.834411992492e-02 + 9.812800000000e-09 7.546768052518e-02 + 9.822800000000e-09 2.439578803486e-01 + 9.832800000000e-09 3.800357419997e-01 + 9.842800000000e-09 4.595268514096e-01 + 9.852800000000e-09 4.714010914262e-01 + 9.862800000000e-09 4.173874847971e-01 + 9.872800000000e-09 3.081621115291e-01 + 9.882800000000e-09 1.601168816176e-01 + 9.892800000000e-09 -9.932484823151e-03 + 9.902800000000e-09 -1.834427530536e-01 + 9.912800000000e-09 -3.349615688487e-01 + 9.922800000000e-09 -4.376364193680e-01 + 9.932800000000e-09 -4.749013873935e-01 + 9.942800000000e-09 -4.445619952081e-01 + 9.952800000000e-09 -3.544142263967e-01 + 9.962800000000e-09 -2.189205271704e-01 + 9.972800000000e-09 -5.523950154618e-02 + 9.982800000000e-09 1.195908539713e-01 + 9.992800000000e-09 2.826034683724e-01 + 1.000000000000e-08 3.777061594093e-01 diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/conditions.yaml new file mode 100644 index 00000000..3f88ef7f --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 4 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_04 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/LC_Oscillator_tb.sch new file mode 100644 index 00000000..5ce5e08c --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/LC_Oscillator_tb_5.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp -40 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/conditions.yaml new file mode 100644 index 00000000..4b006409 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 5 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_05 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/LC_Oscillator_tb.sch new file mode 100644 index 00000000..c846cb86 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/LC_Oscillator_tb_6.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp -40 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/conditions.yaml new file mode 100644 index 00000000..32678e67 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 6 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_06 +temperature: '-40' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/LC_Oscillator_tb.sch new file mode 100644 index 00000000..21baf117 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/LC_Oscillator_tb_7.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp -40 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/LC_Oscillator_tb_7.data b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/LC_Oscillator_tb_7.data new file mode 100644 index 00000000..ad238f94 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/LC_Oscillator_tb_7.data @@ -0,0 +1,985 @@ + 1.628000000000e-10 8.466139813278e-03 + 1.728000000000e-10 -6.989764545663e-03 + 1.828000000000e-10 -2.211384336733e-02 + 1.928000000000e-10 -3.476199246532e-02 + 2.028000000000e-10 -4.304137789423e-02 + 2.128000000000e-10 -4.559970872536e-02 + 2.228000000000e-10 -4.184348474317e-02 + 2.328000000000e-10 -3.204685309230e-02 + 2.428000000000e-10 -1.733723205359e-02 + 2.528000000000e-10 4.303944679023e-04 + 2.628000000000e-10 1.889333321150e-02 + 2.728000000000e-10 3.547830745135e-02 + 2.828000000000e-10 4.775513119003e-02 + 2.928000000000e-10 5.380112818945e-02 + 3.028000000000e-10 5.250953109056e-02 + 3.128000000000e-10 4.377624879079e-02 + 3.228000000000e-10 2.853565001972e-02 + 3.328000000000e-10 8.655457124699e-03 + 3.428000000000e-10 -1.327969731390e-02 + 3.528000000000e-10 -3.427735200553e-02 + 3.628000000000e-10 -5.132690805429e-02 + 3.728000000000e-10 -6.183800886884e-02 + 3.828000000000e-10 -6.405258370227e-02 + 3.928000000000e-10 -5.733769961496e-02 + 4.028000000000e-10 -4.229750097009e-02 + 4.128000000000e-10 -2.069916677185e-02 + 4.228000000000e-10 4.711284927248e-03 + 4.328000000000e-10 3.053386013499e-02 + 4.428000000000e-10 5.314690810909e-02 + 4.528000000000e-10 6.918917963707e-02 + 4.628000000000e-10 7.609939053053e-02 + 4.728000000000e-10 7.255015258786e-02 + 4.828000000000e-10 5.866649319868e-02 + 4.928000000000e-10 3.600881759449e-02 + 5.028000000000e-10 7.376234974355e-03 + 5.128000000000e-10 -2.350373526855e-02 + 5.228000000000e-10 -5.239138589360e-02 + 5.328000000000e-10 -7.508361413270e-02 + 5.428000000000e-10 -8.806281423305e-02 + 5.528000000000e-10 -8.910158685147e-02 + 5.628000000000e-10 -7.764249945861e-02 + 5.728000000000e-10 -5.486688582529e-02 + 5.828000000000e-10 -2.351209371064e-02 + 5.928000000000e-10 1.245191353547e-02 + 6.028000000000e-10 4.818680767640e-02 + 6.128000000000e-10 7.860335472599e-02 + 6.228000000000e-10 9.912261037184e-02 + 6.328000000000e-10 1.063880526397e-01 + 6.428000000000e-10 9.891116957065e-02 + 6.528000000000e-10 7.730282696693e-02 + 6.628000000000e-10 4.409533474647e-02 + 6.728000000000e-10 3.372731748605e-03 + 6.828000000000e-10 -3.954512314516e-02 + 6.928000000000e-10 -7.865333197232e-02 + 7.028000000000e-10 -1.081937317105e-01 + 7.128000000000e-10 -1.235163259529e-01 + 7.228000000000e-10 -1.219048436906e-01 + 7.328000000000e-10 -1.031190792809e-01 + 7.428000000000e-10 -6.931095685739e-02 + 7.528000000000e-10 -2.453879442551e-02 + 7.628000000000e-10 2.552929073880e-02 + 7.728000000000e-10 7.407148496569e-02 + 7.828000000000e-10 1.140358860996e-01 + 7.928000000000e-10 1.392792795913e-01 + 8.028000000000e-10 1.456389048407e-01 + 8.128000000000e-10 1.316857938071e-01 + 8.228000000000e-10 9.894433759839e-02 + 8.328000000000e-10 5.131248576436e-02 + 8.428000000000e-10 -5.358847182381e-03 + 8.528000000000e-10 -6.360439334869e-02 + 8.628000000000e-10 -1.151693300350e-01 + 8.728000000000e-10 -1.521976935050e-01 + 8.828000000000e-10 -1.687585975713e-01 + 8.928000000000e-10 -1.619616918764e-01 + 9.028000000000e-10 -1.323664149588e-01 + 9.128000000000e-10 -8.352936591315e-02 + 9.228000000000e-10 -2.135282415633e-02 + 9.328000000000e-10 4.628086258094e-02 + 9.428000000000e-10 1.100989443702e-01 + 9.528000000000e-10 1.605478047932e-01 + 9.628000000000e-10 1.896462439023e-01 + 9.728000000000e-10 1.925702503435e-01 + 9.828000000000e-10 1.685263276057e-01 + 9.928000000000e-10 1.205488998475e-01 + 1.002800000000e-09 5.449574894669e-02 + 1.012800000000e-09 -2.155796518877e-02 + 1.022800000000e-09 -9.762801796948e-02 + 1.032800000000e-09 -1.626265512104e-01 + 1.042800000000e-09 -2.062702568865e-01 + 1.052800000000e-09 -2.214542197751e-01 + 1.062800000000e-09 -2.056913513097e-01 + 1.072800000000e-09 -1.611050525126e-01 + 1.082800000000e-09 -9.336703872958e-02 + 1.092800000000e-09 -1.061720602163e-02 + 1.102800000000e-09 7.681080719049e-02 + 1.112800000000e-09 1.566723821773e-01 + 1.122800000000e-09 2.164982231637e-01 + 1.132800000000e-09 2.465448999219e-01 + 1.142800000000e-09 2.420026709856e-01 + 1.152800000000e-09 2.036160440623e-01 + 1.162800000000e-09 1.367299362288e-01 + 1.172800000000e-09 4.953318443319e-02 + 1.182800000000e-09 -4.757680257613e-02 + 1.192800000000e-09 -1.417261588456e-01 + 1.202800000000e-09 -2.185923016248e-01 + 1.212800000000e-09 -2.655522626421e-01 + 1.222800000000e-09 -2.750103865102e-01 + 1.232800000000e-09 -2.458943395528e-01 + 1.242800000000e-09 -1.828059434037e-01 + 1.252800000000e-09 -9.389402413968e-02 + 1.262800000000e-09 1.045751031358e-02 + 1.272800000000e-09 1.172736856871e-01 + 1.282800000000e-09 2.110056930002e-01 + 1.292800000000e-09 2.763578111715e-01 + 1.302800000000e-09 3.025386031491e-01 + 1.312800000000e-09 2.858704579490e-01 + 1.322800000000e-09 2.296325291215e-01 + 1.332800000000e-09 1.419074289003e-01 + 1.342800000000e-09 3.316992042992e-02 + 1.352800000000e-09 -8.388044866598e-02 + 1.362800000000e-09 -1.932562695278e-01 + 1.372800000000e-09 -2.774871132734e-01 + 1.382800000000e-09 -3.223780566378e-01 + 1.392800000000e-09 -3.210388786384e-01 + 1.402800000000e-09 -2.748900041793e-01 + 1.412800000000e-09 -1.914986746518e-01 + 1.422800000000e-09 -8.149991087129e-02 + 1.432800000000e-09 4.270361021551e-02 + 1.442800000000e-09 1.654373376734e-01 + 1.452800000000e-09 2.678894497884e-01 + 1.462800000000e-09 3.327285903944e-01 + 1.472800000000e-09 3.493769879676e-01 + 1.482800000000e-09 3.166274602608e-01 + 1.492800000000e-09 2.408120410241e-01 + 1.502800000000e-09 1.326694748108e-01 + 1.512800000000e-09 4.559994348836e-03 + 1.522800000000e-09 -1.285808451592e-01 + 1.532800000000e-09 -2.476156377920e-01 + 1.542800000000e-09 -3.326770493974e-01 + 1.552800000000e-09 -3.692677257119e-01 + 1.562800000000e-09 -3.527790337499e-01 + 1.572800000000e-09 -2.877386960688e-01 + 1.582800000000e-09 -1.845642103220e-01 + 1.592800000000e-09 -5.585498905103e-02 + 1.602800000000e-09 8.423770813714e-02 + 1.612800000000e-09 2.172230888271e-01 + 1.622800000000e-09 3.216305140932e-01 + 1.632800000000e-09 3.793200081802e-01 + 1.642800000000e-09 3.816575817800e-01 + 1.652800000000e-09 3.306744528029e-01 + 1.662800000000e-09 2.356167608227e-01 + 1.672800000000e-09 1.093849130849e-01 + 1.682800000000e-09 -3.424811960080e-02 + 1.692800000000e-09 -1.780292689347e-01 + 1.702800000000e-09 -3.000094283801e-01 + 1.712800000000e-09 -3.790547845963e-01 + 1.722800000000e-09 -4.021625609396e-01 + 1.732800000000e-09 -3.680613987977e-01 + 1.742800000000e-09 -2.841630955072e-01 + 1.752800000000e-09 -1.632830293936e-01 + 1.762800000000e-09 -1.937509270894e-02 + 1.772800000000e-09 1.316812223706e-01 + 1.782800000000e-09 2.686010377709e-01 + 1.792800000000e-09 3.682172692356e-01 + 1.802800000000e-09 4.132987677366e-01 + 1.812800000000e-09 3.985512450192e-01 + 1.822800000000e-09 3.289587064992e-01 + 1.832800000000e-09 2.163065908104e-01 + 1.842800000000e-09 7.502947693200e-02 + 1.852800000000e-09 -7.990405891181e-02 + 1.862800000000e-09 -2.287060480024e-01 + 1.872800000000e-09 -3.473140267261e-01 + 1.882800000000e-09 -4.147306069316e-01 + 1.892800000000e-09 -4.210768315507e-01 + 1.902800000000e-09 -3.684083344391e-01 + 1.912800000000e-09 -2.667937231795e-01 + 1.922800000000e-09 -1.308757715911e-01 + 1.932800000000e-09 2.458718836226e-02 + 1.942800000000e-09 1.816993375366e-01 + 1.952800000000e-09 3.167355318502e-01 + 1.962800000000e-09 4.059791159530e-01 + 1.972800000000e-09 4.347218061084e-01 + 1.982800000000e-09 4.013744125492e-01 + 1.992800000000e-09 3.137217430464e-01 + 2.002800000000e-09 1.856967600762e-01 + 2.012800000000e-09 3.258994811420e-02 + 2.022800000000e-09 -1.293338004401e-01 + 2.032800000000e-09 -2.777513251262e-01 + 2.042800000000e-09 -3.874198526342e-01 + 2.052800000000e-09 -4.391252423722e-01 + 2.062800000000e-09 -4.269341888354e-01 + 2.072800000000e-09 -3.559124884989e-01 + 2.082800000000e-09 -2.384361755451e-01 + 2.092800000000e-09 -9.026491116925e-02 + 2.102800000000e-09 7.316848133267e-02 + 2.112800000000e-09 2.316131160024e-01 + 2.122800000000e-09 3.595637305914e-01 + 2.132800000000e-09 4.341431816790e-01 + 2.142800000000e-09 4.444691258232e-01 + 2.152800000000e-09 3.923194864196e-01 + 2.162800000000e-09 2.880130541319e-01 + 2.172800000000e-09 1.471074503876e-01 + 2.182800000000e-09 -1.486480588787e-02 + 2.192800000000e-09 -1.798385967885e-01 + 2.202800000000e-09 -3.232377500798e-01 + 2.212800000000e-09 -4.197337742534e-01 + 2.222800000000e-09 -4.533447559595e-01 + 2.232800000000e-09 -4.219933380368e-01 + 2.242800000000e-09 -3.335147840304e-01 + 2.252800000000e-09 -2.022524095992e-01 + 2.262800000000e-09 -4.431159067591e-02 + 2.272800000000e-09 1.238405564056e-01 + 2.282800000000e-09 2.794809180091e-01 + 2.292800000000e-09 3.961695871127e-01 + 2.302800000000e-09 4.533549186274e-01 + 2.312800000000e-09 4.443648364834e-01 + 2.322800000000e-09 3.739215677309e-01 + 2.332800000000e-09 2.545997632806e-01 + 2.342800000000e-09 1.029721003714e-01 + 2.352800000000e-09 -6.519899449665e-02 + 2.362800000000e-09 -2.296000110886e-01 + 2.372800000000e-09 -3.639811575946e-01 + 2.382800000000e-09 -4.441864068486e-01 + 2.392800000000e-09 -4.584115852263e-01 + 2.402800000000e-09 -4.080160649881e-01 + 2.412800000000e-09 -3.032676948905e-01 + 2.422800000000e-09 -1.601412790287e-01 + 2.432800000000e-09 5.251962647117e-03 + 2.442800000000e-09 1.749031095668e-01 + 2.452800000000e-09 3.239080249012e-01 + 2.462800000000e-09 4.259246070814e-01 + 2.472800000000e-09 4.639146984263e-01 + 2.482800000000e-09 4.352261783007e-01 + 2.492800000000e-09 3.474474807024e-01 + 2.502800000000e-09 2.150578918144e-01 + 2.512800000000e-09 5.480659346689e-02 + 2.522800000000e-09 -1.168253653714e-01 + 2.532800000000e-09 -2.771009760446e-01 + 2.542800000000e-09 -3.989201473998e-01 + 2.552800000000e-09 -4.606923726105e-01 + 2.562800000000e-09 -4.550120427969e-01 + 2.572800000000e-09 -3.862269692701e-01 + 2.582800000000e-09 -2.668535894327e-01 + 2.592800000000e-09 -1.138588993645e-01 + 2.602800000000e-09 5.675441709923e-02 + 2.612800000000e-09 2.248204631246e-01 + 2.622800000000e-09 3.637734406674e-01 + 2.632800000000e-09 4.485709877067e-01 + 2.642800000000e-09 4.665412537078e-01 + 2.652800000000e-09 4.185581580288e-01 + 2.662800000000e-09 3.146773534458e-01 + 2.672800000000e-09 1.710002474767e-01 + 2.682800000000e-09 4.047806431867e-03 + 2.692800000000e-09 -1.683320588814e-01 + 2.702800000000e-09 -3.212083323794e-01 + 2.712800000000e-09 -4.276118799342e-01 + 2.722800000000e-09 -4.695916842881e-01 + 2.732800000000e-09 -4.438832211121e-01 + 2.742800000000e-09 -3.577318472782e-01 + 2.752800000000e-09 -2.255571298340e-01 + 2.762800000000e-09 -6.449380898856e-02 + 2.772800000000e-09 1.090045938277e-01 + 2.782800000000e-09 2.723763322301e-01 + 2.792800000000e-09 3.981848781019e-01 + 2.802800000000e-09 4.640164290864e-01 + 2.812800000000e-09 4.617186627229e-01 + 2.822800000000e-09 3.951987540893e-01 + 2.832800000000e-09 2.767861972704e-01 + 2.842800000000e-09 1.236178604328e-01 + 2.852800000000e-09 -4.812460673360e-02 + 2.862800000000e-09 -2.185275826952e-01 + 2.872800000000e-09 -3.609548753329e-01 + 2.882800000000e-09 -4.497203671813e-01 + 2.892800000000e-09 -4.713174550646e-01 + 2.902800000000e-09 -4.260983579490e-01 + 2.912800000000e-09 -3.239291873884e-01 + 2.922800000000e-09 -1.807853621365e-01 + 2.932800000000e-09 -1.331311632460e-02 + 2.942800000000e-09 1.607455013966e-01 + 2.952800000000e-09 3.165719656036e-01 + 2.962800000000e-09 4.267896770044e-01 + 2.972800000000e-09 4.726057617794e-01 + 2.982800000000e-09 4.501063281125e-01 + 2.992800000000e-09 3.661315040334e-01 + 3.002800000000e-09 2.349343767897e-01 + 3.012800000000e-09 7.388416317358e-02 + 3.022800000000e-09 -1.006048354406e-01 + 3.032800000000e-09 -2.662518120143e-01 + 3.042800000000e-09 -3.954651858862e-01 + 3.052800000000e-09 -4.651286367795e-01 + 3.062800000000e-09 -4.663150363018e-01 + 3.072800000000e-09 -4.024431617829e-01 + 3.082800000000e-09 -2.855793986349e-01 + 3.092800000000e-09 -1.329052805520e-01 + 3.102800000000e-09 3.924852498510e-02 + 3.112800000000e-09 2.112734009248e-01 + 3.122800000000e-09 3.566043651541e-01 + 3.132800000000e-09 4.490491589415e-01 + 3.142800000000e-09 4.742713548499e-01 + 3.152800000000e-09 4.320662315472e-01 + 3.162800000000e-09 3.319308732453e-01 + 3.172800000000e-09 1.897206912988e-01 + 3.182800000000e-09 2.233835206417e-02 + 3.192800000000e-09 -1.527028002678e-01 + 3.202800000000e-09 -3.108294934257e-01 + 3.212800000000e-09 -4.244095105846e-01 + 3.222800000000e-09 -4.738811249070e-01 + 3.232800000000e-09 -4.546636813110e-01 + 3.242800000000e-09 -3.731627809948e-01 + 3.252800000000e-09 -2.434006859041e-01 + 3.262800000000e-09 -8.287741968615e-02 + 3.272800000000e-09 9.203264769826e-02 + 3.282800000000e-09 2.593829531702e-01 + 3.292800000000e-09 3.915509066388e-01 + 3.302800000000e-09 4.648190271045e-01 + 3.312800000000e-09 4.694814285780e-01 + 3.322800000000e-09 4.084421898142e-01 + 3.332800000000e-09 2.934641035178e-01 + 3.342800000000e-09 1.416907367557e-01 + 3.352800000000e-09 -3.041662304960e-02 + 3.362800000000e-09 -2.035739552230e-01 + 3.372800000000e-09 -3.513753389878e-01 + 3.382800000000e-09 -4.472322356084e-01 + 3.392800000000e-09 -4.760009502568e-01 + 3.402800000000e-09 -4.369057561626e-01 + 3.412800000000e-09 -3.390494381695e-01 + 3.422800000000e-09 -1.981098690340e-01 + 3.432800000000e-09 -3.118481118679e-02 + 3.442800000000e-09 1.444303124881e-01 + 3.452800000000e-09 3.044629268034e-01 + 3.462800000000e-09 4.211216195391e-01 + 3.472800000000e-09 4.741093252734e-01 + 3.482800000000e-09 4.581799324185e-01 + 3.492800000000e-09 3.793231058787e-01 + 3.502800000000e-09 2.512793480194e-01 + 3.512800000000e-09 9.159667092441e-02 + 3.522800000000e-09 -8.338002993409e-02 + 3.532800000000e-09 -2.520675535009e-01 + 3.542800000000e-09 -3.868931258099e-01 + 3.552800000000e-09 -4.636148800139e-01 + 3.562800000000e-09 -4.717487403617e-01 + 3.572800000000e-09 -4.136495415777e-01 + 3.582800000000e-09 -3.007557096774e-01 + 3.592800000000e-09 -1.501336050778e-01 + 3.602800000000e-09 2.164393821360e-02 + 3.612800000000e-09 1.956193556042e-01 + 3.622800000000e-09 3.456026192388e-01 + 3.632800000000e-09 4.446878243237e-01 + 3.642800000000e-09 4.769450424446e-01 + 3.652800000000e-09 4.410145727453e-01 + 3.662800000000e-09 3.455888713645e-01 + 3.672800000000e-09 2.061314283902e-01 + 3.682800000000e-09 3.989194098803e-02 + 3.692800000000e-09 -1.360347924182e-01 + 3.702800000000e-09 -2.977106506365e-01 + 3.712800000000e-09 -4.172525563496e-01 + 3.722800000000e-09 -4.737163678312e-01 + 3.732800000000e-09 -4.611466549167e-01 + 3.742800000000e-09 -3.850298251877e-01 + 3.752800000000e-09 -2.588319704609e-01 + 3.762800000000e-09 -1.001326809534e-01 + 3.772800000000e-09 7.473812872463e-02 + 3.782800000000e-09 2.445685035634e-01 + 3.792800000000e-09 3.818810515303e-01 + 3.802800000000e-09 4.618495653957e-01 + 3.812800000000e-09 4.732758813551e-01 + 3.822800000000e-09 4.181821540207e-01 + 3.832800000000e-09 3.075886005860e-01 + 3.842800000000e-09 1.583398974582e-01 + 3.852800000000e-09 -1.286142282478e-02 + 3.862800000000e-09 -1.873875968758e-01 + 3.872800000000e-09 -3.393146053252e-01 + 3.882800000000e-09 -4.414880224909e-01 + 3.892800000000e-09 -4.772098699021e-01 + 3.902800000000e-09 -4.445167108017e-01 + 3.912800000000e-09 -3.516731171757e-01 + 3.922800000000e-09 -2.138950579202e-01 + 3.932800000000e-09 -4.854479614909e-02 + 3.942800000000e-09 1.274676899440e-01 + 3.952800000000e-09 2.905682944747e-01 + 3.962800000000e-09 4.128420511819e-01 + 3.972800000000e-09 4.727154592925e-01 + 3.982800000000e-09 4.635204705676e-01 + 3.992800000000e-09 3.902597564221e-01 + 4.002800000000e-09 2.660889177421e-01 + 4.012800000000e-09 1.085604808583e-01 + 4.022800000000e-09 -6.599659067807e-02 + 4.032800000000e-09 -2.367554728027e-01 + 4.042800000000e-09 -3.763851225831e-01 + 4.052800000000e-09 -4.596223108533e-01 + 4.062800000000e-09 -4.744860630735e-01 + 4.072800000000e-09 -4.224705146052e-01 + 4.082800000000e-09 -3.142241002925e-01 + 4.092800000000e-09 -1.664201078869e-01 + 4.102800000000e-09 4.125050196675e-03 + 4.112800000000e-09 1.790956973466e-01 + 4.122800000000e-09 3.328549591598e-01 + 4.132800000000e-09 4.380405475600e-01 + 4.142800000000e-09 4.772041503683e-01 + 4.152800000000e-09 4.477655978477e-01 + 4.162800000000e-09 3.575540779602e-01 + 4.172800000000e-09 2.215245610048e-01 + 4.182800000000e-09 5.713048588447e-02 + 4.192800000000e-09 -1.188774093696e-01 + 4.202800000000e-09 -2.832993216564e-01 + 4.212800000000e-09 -4.082210019730e-01 + 4.222800000000e-09 -4.714715088490e-01 + 4.232800000000e-09 -4.656574935981e-01 + 4.242800000000e-09 -3.952892180809e-01 + 4.252800000000e-09 -2.732031958405e-01 + 4.262800000000e-09 -1.169006230138e-01 + 4.272800000000e-09 5.726993253497e-02 + 4.282800000000e-09 2.288629049266e-01 + 4.292800000000e-09 3.707198117451e-01 + 4.302800000000e-09 4.571768783685e-01 + 4.312800000000e-09 4.754695944617e-01 + 4.322800000000e-09 4.265553603994e-01 + 4.332800000000e-09 3.208219159625e-01 + 4.342800000000e-09 1.746542471985e-01 + 4.352800000000e-09 4.802120491386e-03 + 4.362800000000e-09 -1.706074385717e-01 + 4.372800000000e-09 -3.262108806456e-01 + 4.382800000000e-09 -4.344581267006e-01 + 4.392800000000e-09 -4.771451680179e-01 + 4.402800000000e-09 -4.510480969579e-01 + 4.412800000000e-09 -3.635440038363e-01 + 4.422800000000e-09 -2.293171442323e-01 + 4.432800000000e-09 -6.590084671053e-02 + 4.442800000000e-09 1.100845607684e-01 + 4.452800000000e-09 2.758258588352e-01 + 4.462800000000e-09 4.034269243422e-01 + 4.472800000000e-09 4.701302614642e-01 + 4.482800000000e-09 4.677855971396e-01 + 4.492800000000e-09 4.003923821779e-01 + 4.502800000000e-09 2.804556477047e-01 + 4.512800000000e-09 1.254099469774e-01 + 4.522800000000e-09 -4.835166565084e-02 + 4.532800000000e-09 -2.207626993989e-01 + 4.542800000000e-09 -3.648587246303e-01 + 4.552800000000e-09 -4.545918482823e-01 + 4.562800000000e-09 -4.763955506546e-01 + 4.572800000000e-09 -4.306676311464e-01 + 4.582800000000e-09 -3.273876605705e-01 + 4.592800000000e-09 -1.827434539071e-01 + 4.602800000000e-09 -1.363788571176e-02 + 4.612800000000e-09 1.620927189990e-01 + 4.622800000000e-09 3.194111211814e-01 + 4.632800000000e-09 4.306209628650e-01 + 4.642800000000e-09 4.767900742715e-01 + 4.652800000000e-09 4.540375318351e-01 + 4.662800000000e-09 3.692834881328e-01 + 4.672800000000e-09 2.369280875122e-01 + 4.682800000000e-09 7.455966942192e-02 + 4.692800000000e-09 -1.013073815294e-01 + 4.702800000000e-09 -2.682509253907e-01 + 4.712800000000e-09 -3.984278421241e-01 + 4.722800000000e-09 -4.685316943221e-01 + 4.732800000000e-09 -4.696479350674e-01 + 4.742800000000e-09 -4.052549028970e-01 + 4.752800000000e-09 -2.875196588931e-01 + 4.762800000000e-09 -1.337856747937e-01 + 4.772800000000e-09 3.949190623014e-02 + 4.782800000000e-09 2.126175683181e-01 + 4.792800000000e-09 3.588446454857e-01 + 4.802800000000e-09 4.517831117713e-01 + 4.812800000000e-09 4.770713907739e-01 + 4.822800000000e-09 4.345401996538e-01 + 4.832800000000e-09 3.337555060048e-01 + 4.842800000000e-09 1.906913623553e-01 + 4.852800000000e-09 2.239234812557e-02 + 4.862800000000e-09 -1.535704079347e-01 + 4.872800000000e-09 -3.125002392849e-01 + 4.882800000000e-09 -4.265897124991e-01 + 4.892800000000e-09 -4.762059300145e-01 + 4.902800000000e-09 -4.567984003440e-01 + 4.912800000000e-09 -3.748249224706e-01 + 4.922800000000e-09 -2.443925187766e-01 + 4.932800000000e-09 -8.312115009272e-02 + 4.942800000000e-09 9.255474633847e-02 + 4.952800000000e-09 2.606058933136e-01 + 4.962800000000e-09 3.932708694081e-01 + 4.972800000000e-09 4.667308932730e-01 + 4.982800000000e-09 4.712999521588e-01 + 4.992800000000e-09 4.099249449583e-01 + 5.002800000000e-09 2.944294131218e-01 + 5.012800000000e-09 1.420463159022e-01 + 5.022800000000e-09 -3.069156734404e-02 + 5.032800000000e-09 -2.044477886824e-01 + 5.042800000000e-09 -3.527136062233e-01 + 5.052800000000e-09 -4.487944534799e-01 + 5.062800000000e-09 -4.775434288295e-01 + 5.072800000000e-09 -4.382152742605e-01 + 5.082800000000e-09 -3.399581636226e-01 + 5.092800000000e-09 -1.985184857667e-01 + 5.102800000000e-09 -3.107120244623e-02 + 5.112800000000e-09 1.450515767240e-01 + 5.122800000000e-09 3.055043067152e-01 + 5.132800000000e-09 4.223999342451e-01 + 5.142800000000e-09 4.754109291761e-01 + 5.152800000000e-09 4.593204972537e-01 + 5.162800000000e-09 3.801546889977e-01 + 5.172800000000e-09 2.517057137597e-01 + 5.182800000000e-09 9.158801302282e-02 + 5.192800000000e-09 -8.381782429189e-02 + 5.202800000000e-09 -2.528769742020e-01 + 5.212800000000e-09 -3.879385101571e-01 + 5.222800000000e-09 -4.647100111230e-01 + 5.232800000000e-09 -4.727322188524e-01 + 5.242800000000e-09 -4.143942994523e-01 + 5.252800000000e-09 -3.011741752533e-01 + 5.262800000000e-09 -1.501891252249e-01 + 5.272800000000e-09 2.194829564394e-02 + 5.282800000000e-09 1.962463034631e-01 + 5.292800000000e-09 3.464541297304e-01 + 5.302800000000e-09 4.456107218955e-01 + 5.312800000000e-09 4.777964949045e-01 + 5.322800000000e-09 4.416800288519e-01 + 5.332800000000e-09 3.459867236821e-01 + 5.342800000000e-09 2.062219802150e-01 + 5.352800000000e-09 3.967660151698e-02 + 5.362800000000e-09 -1.365304243349e-01 + 5.372800000000e-09 -2.984146410074e-01 + 5.382800000000e-09 -4.180406497683e-01 + 5.392800000000e-09 -4.744567271423e-01 + 5.402800000000e-09 -4.617371116238e-01 + 5.412800000000e-09 -3.853979400223e-01 + 5.422800000000e-09 -2.589392772755e-01 + 5.432800000000e-09 -9.997734755715e-02 + 5.442800000000e-09 7.513706514536e-02 + 5.452800000000e-09 2.451570094540e-01 + 5.462800000000e-09 3.825595621222e-01 + 5.472800000000e-09 4.624984168790e-01 + 5.482800000000e-09 4.738027946703e-01 + 5.492800000000e-09 4.185212724050e-01 + 5.502800000000e-09 3.077030632441e-01 + 5.512800000000e-09 1.582251826602e-01 + 5.522800000000e-09 -1.318905683136e-02 + 5.532800000000e-09 -1.878874450171e-01 + 5.542800000000e-09 -3.399072841509e-01 + 5.552800000000e-09 -4.420666737440e-01 + 5.562800000000e-09 -4.776861298338e-01 + 5.572800000000e-09 -4.448297850357e-01 + 5.582800000000e-09 -3.517887326296e-01 + 5.592800000000e-09 -2.138069264691e-01 + 5.602800000000e-09 -4.826804758506e-02 + 5.612800000000e-09 1.279013082333e-01 + 5.622800000000e-09 2.910946044862e-01 + 5.632800000000e-09 4.133676515130e-01 + 5.642800000000e-09 4.731526340500e-01 + 5.652800000000e-09 4.638117913056e-01 + 5.662800000000e-09 3.903737011204e-01 + 5.672800000000e-09 2.660187194753e-01 + 5.682800000000e-09 1.083206557955e-01 + 5.692800000000e-09 -6.637982070487e-02 + 5.702800000000e-09 -2.372296346854e-01 + 5.712800000000e-09 -3.768692624037e-01 + 5.722800000000e-09 -4.600308904011e-01 + 5.732800000000e-09 -4.747632431584e-01 + 5.742800000000e-09 -4.225853728223e-01 + 5.752800000000e-09 -3.141689661470e-01 + 5.762800000000e-09 -1.662088197856e-01 + 5.772800000000e-09 4.468820534805e-03 + 5.782800000000e-09 1.795294267627e-01 + 5.792800000000e-09 3.333090355624e-01 + 5.802800000000e-09 4.384328096014e-01 + 5.812800000000e-09 4.774757046058e-01 + 5.822800000000e-09 4.478850790557e-01 + 5.832800000000e-09 3.575133073738e-01 + 5.842800000000e-09 2.213360225655e-01 + 5.852800000000e-09 5.681743531260e-02 + 5.862800000000e-09 -1.192799823371e-01 + 5.872800000000e-09 -2.837313282315e-01 + 5.882800000000e-09 -4.086053505701e-01 + 5.892800000000e-09 -4.717441117828e-01 + 5.902800000000e-09 -4.657852498153e-01 + 5.912800000000e-09 -3.952630762155e-01 + 5.922800000000e-09 -2.730340302391e-01 + 5.932800000000e-09 -1.166125913657e-01 + 5.942800000000e-09 5.764676738210e-02 + 5.952800000000e-09 2.292770271142e-01 + 5.962800000000e-09 3.711000896944e-01 + 5.972800000000e-09 4.574558876103e-01 + 5.982800000000e-09 4.756110983940e-01 + 5.992800000000e-09 4.265474821653e-01 + 6.002800000000e-09 3.206735475821e-01 + 6.012800000000e-09 1.743898497004e-01 + 6.022800000000e-09 4.448916495225e-03 + 6.032800000000e-09 -1.710064114036e-01 + 6.042800000000e-09 -3.265913626529e-01 + 6.052800000000e-09 -4.347509898033e-01 + 6.062800000000e-09 -4.773070591371e-01 + 6.072800000000e-09 -4.510634346157e-01 + 6.082800000000e-09 -3.634186898934e-01 + 6.092800000000e-09 -2.290739559560e-01 + 6.102800000000e-09 -6.556783475352e-02 + 6.112800000000e-09 1.104709710745e-01 + 6.122800000000e-09 2.762080312971e-01 + 6.132800000000e-09 4.037363976918e-01 + 6.142800000000e-09 4.703152504397e-01 + 6.152800000000e-09 4.678259027023e-01 + 6.162800000000e-09 4.002910459757e-01 + 6.172800000000e-09 2.802331290685e-01 + 6.182800000000e-09 1.250960204722e-01 + 6.192800000000e-09 -4.872509513337e-02 + 6.202800000000e-09 -2.211450503981e-01 + 6.212800000000e-09 -3.651842217791e-01 + 6.222800000000e-09 -4.548024644098e-01 + 6.232800000000e-09 -4.764652454278e-01 + 6.242800000000e-09 -4.305946177071e-01 + 6.252800000000e-09 -3.271894874756e-01 + 6.262800000000e-09 -1.824504834952e-01 + 6.272800000000e-09 -1.327957858391e-02 + 6.282800000000e-09 1.624734377412e-01 + 6.292800000000e-09 3.197530518999e-01 + 6.302800000000e-09 4.308617720119e-01 + 6.312800000000e-09 4.768943044729e-01 + 6.322800000000e-09 4.539978905406e-01 + 6.332800000000e-09 3.691133505818e-01 + 6.342800000000e-09 2.366557828440e-01 + 6.352800000000e-09 7.421615083890e-02 + 6.362800000000e-09 -1.016852396175e-01 + 6.372800000000e-09 -2.686071210685e-01 + 6.382800000000e-09 -3.986984802544e-01 + 6.392800000000e-09 -4.686710957586e-01 + 6.402800000000e-09 -4.696425267464e-01 + 6.412800000000e-09 -4.051141216648e-01 + 6.422800000000e-09 -2.872691059898e-01 + 6.432800000000e-09 -1.334584184195e-01 + 6.442800000000e-09 3.986316666413e-02 + 6.452800000000e-09 2.129832070320e-01 + 6.462800000000e-09 3.591419067990e-01 + 6.472800000000e-09 4.519586678999e-01 + 6.482800000000e-09 4.771042276463e-01 + 6.492800000000e-09 4.344337029007e-01 + 6.502800000000e-09 3.335316931896e-01 + 6.512800000000e-09 1.903838056087e-01 + 6.522800000000e-09 2.203183607233e-02 + 6.532800000000e-09 -1.539414341544e-01 + 6.542800000000e-09 -3.128224877673e-01 + 6.552800000000e-09 -4.268043088633e-01 + 6.562800000000e-09 -4.762811039202e-01 + 6.572800000000e-09 -4.567310023978e-01 + 6.582800000000e-09 -3.746321381175e-01 + 6.592800000000e-09 -2.441055516640e-01 + 6.602800000000e-09 -8.277276232589e-02 + 6.612800000000e-09 9.292777843222e-02 + 6.622800000000e-09 2.609488265047e-01 + 6.632800000000e-09 3.935222457883e-01 + 6.642800000000e-09 4.668477501341e-01 + 6.652800000000e-09 4.712718639171e-01 + 6.662800000000e-09 4.097646013993e-01 + 6.672800000000e-09 2.941650805410e-01 + 6.682800000000e-09 1.417129879197e-01 + 6.692800000000e-09 -3.106095135127e-02 + 6.702800000000e-09 -2.048046118808e-01 + 6.712800000000e-09 -3.529969421756e-01 + 6.722800000000e-09 -4.489531583373e-01 + 6.732800000000e-09 -4.775586503813e-01 + 6.742800000000e-09 -4.380928484099e-01 + 6.752800000000e-09 -3.397222487124e-01 + 6.762800000000e-09 -1.982043110850e-01 + 6.772800000000e-09 -3.071038608927e-02 + 6.782800000000e-09 1.454172910402e-01 + 6.792800000000e-09 3.058169614656e-01 + 6.802800000000e-09 4.226023559295e-01 + 6.812800000000e-09 4.754729369498e-01 + 6.822800000000e-09 4.592408245964e-01 + 6.832800000000e-09 3.799520144132e-01 + 6.842800000000e-09 2.514124911435e-01 + 6.852800000000e-09 9.123816606774e-02 + 6.862800000000e-09 -8.418791592592e-02 + 6.872800000000e-09 -2.532136521620e-01 + 6.882800000000e-09 -3.881816102370e-01 + 6.892800000000e-09 -4.648173688836e-01 + 6.902800000000e-09 -4.726945652972e-01 + 6.912800000000e-09 -4.142257944162e-01 + 6.922800000000e-09 -3.009043159731e-01 + 6.932800000000e-09 -1.498539895534e-01 + 6.942800000000e-09 2.231580510659e-02 + 6.952800000000e-09 1.965986180984e-01 + 6.962800000000e-09 3.467315287456e-01 + 6.972800000000e-09 4.457628617478e-01 + 6.982800000000e-09 4.778050372802e-01 + 6.992800000000e-09 4.415517018843e-01 + 7.002800000000e-09 3.457464972810e-01 + 7.012800000000e-09 2.059058157726e-01 + 7.022800000000e-09 3.931667260556e-02 + 7.032800000000e-09 -1.368931822236e-01 + 7.042800000000e-09 -2.987233040296e-01 + 7.052800000000e-09 -4.182387909151e-01 + 7.062800000000e-09 -4.745140282773e-01 + 7.072800000000e-09 -4.616528300485e-01 + 7.082800000000e-09 -3.851916756618e-01 + 7.092800000000e-09 -2.586441056717e-01 + 7.102800000000e-09 -9.962798039283e-02 + 7.112800000000e-09 7.550478869192e-02 + 7.122800000000e-09 2.454904850622e-01 + 7.132800000000e-09 3.827994434710e-01 + 7.142800000000e-09 4.626034017599e-01 + 7.152800000000e-09 4.737641733398e-01 + 7.162800000000e-09 4.183524109321e-01 + 7.172800000000e-09 3.074331171173e-01 + 7.182800000000e-09 1.578908395540e-01 + 7.192800000000e-09 -1.355506726442e-02 + 7.202800000000e-09 -1.882385727441e-01 + 7.212800000000e-09 -3.401845445382e-01 + 7.222800000000e-09 -4.422195373183e-01 + 7.232800000000e-09 -4.776955714157e-01 + 7.242800000000e-09 -4.447023493228e-01 + 7.252800000000e-09 -3.515493106693e-01 + 7.262800000000e-09 -2.134915967458e-01 + 7.272800000000e-09 -4.790939384136e-02 + 7.282800000000e-09 1.282631642341e-01 + 7.292800000000e-09 2.914035117420e-01 + 7.302800000000e-09 4.135672232198e-01 + 7.312800000000e-09 4.732116550678e-01 + 7.322800000000e-09 4.637291481888e-01 + 7.332800000000e-09 3.901688625588e-01 + 7.342800000000e-09 2.657247114820e-01 + 7.352800000000e-09 1.079727319264e-01 + 7.362800000000e-09 -6.674639374281e-02 + 7.372800000000e-09 -2.375631806078e-01 + 7.382800000000e-09 -3.771107558749e-01 + 7.392800000000e-09 -4.601382593739e-01 + 7.402800000000e-09 -4.747271420590e-01 + 7.412800000000e-09 -4.224188163651e-01 + 7.422800000000e-09 -3.139009311784e-01 + 7.432800000000e-09 -1.658762698801e-01 + 7.442800000000e-09 4.833309578931e-03 + 7.452800000000e-09 1.798803203712e-01 + 7.462800000000e-09 3.335879669447e-01 + 7.472800000000e-09 4.385887870407e-01 + 7.482800000000e-09 4.774886068971e-01 + 7.492800000000e-09 4.477608938282e-01 + 7.502800000000e-09 3.572765392053e-01 + 7.512800000000e-09 2.210226207003e-01 + 7.522800000000e-09 5.646035718955e-02 + 7.532800000000e-09 -1.196414289430e-01 + 7.542800000000e-09 -2.840417111952e-01 + 7.552800000000e-09 -4.088081431133e-01 + 7.562800000000e-09 -4.718068979663e-01 + 7.572800000000e-09 -4.657062253992e-01 + 7.582800000000e-09 -3.950613186004e-01 + 7.592800000000e-09 -2.727423241357e-01 + 7.602800000000e-09 -1.162666205891e-01 + 7.612800000000e-09 5.801230408689e-02 + 7.622800000000e-09 2.296113885286e-01 + 7.632800000000e-09 3.713444859236e-01 + 7.642800000000e-09 4.575672834577e-01 + 7.652800000000e-09 4.755792178117e-01 + 7.662800000000e-09 4.263847442086e-01 + 7.672800000000e-09 3.204092041404e-01 + 7.682800000000e-09 1.740612329676e-01 + 7.692800000000e-09 4.087529447587e-03 + 7.702800000000e-09 -1.713564811844e-01 + 7.712800000000e-09 -3.268725058010e-01 + 7.722800000000e-09 -4.349117012973e-01 + 7.732800000000e-09 -4.773258039171e-01 + 7.742800000000e-09 -4.509452717666e-01 + 7.752800000000e-09 -3.631873316681e-01 + 7.762800000000e-09 -2.287648515919e-01 + 7.772800000000e-09 -6.521414107180e-02 + 7.782800000000e-09 1.108309277049e-01 + 7.792800000000e-09 2.765197523039e-01 + 7.802800000000e-09 4.039432789773e-01 + 7.812800000000e-09 4.703835108704e-01 + 7.822800000000e-09 4.677527296412e-01 + 7.832800000000e-09 4.000948080107e-01 + 7.842800000000e-09 2.799460485425e-01 + 7.852800000000e-09 1.247539657070e-01 + 7.862800000000e-09 -4.908814413599e-02 + 7.872800000000e-09 -2.214795187659e-01 + 7.882800000000e-09 -3.654317407213e-01 + 7.892800000000e-09 -4.549190199048e-01 + 7.902800000000e-09 -4.764393812900e-01 + 7.912800000000e-09 -4.304378595616e-01 + 7.922800000000e-09 -3.269302969602e-01 + 7.932800000000e-09 -1.821259556415e-01 + 7.942800000000e-09 -1.292114756039e-02 + 7.952800000000e-09 1.628228259919e-01 + 7.962800000000e-09 3.200365272312e-01 + 7.972800000000e-09 4.310273494099e-01 + 7.982800000000e-09 4.769190023559e-01 + 7.992800000000e-09 4.538858106705e-01 + 8.002800000000e-09 3.688874206665e-01 + 8.012800000000e-09 2.363509181399e-01 + 8.022800000000e-09 7.386574101900e-02 + 8.032800000000e-09 -1.020437968743e-01 + 8.042800000000e-09 -2.689202457647e-01 + 8.052800000000e-09 -3.989095216433e-01 + 8.062800000000e-09 -4.687448904292e-01 + 8.072800000000e-09 -4.695752181126e-01 + 8.082800000000e-09 -4.049233786267e-01 + 8.092800000000e-09 -2.869866137251e-01 + 8.102800000000e-09 -1.331201891712e-01 + 8.112800000000e-09 4.022378807474e-02 + 8.122800000000e-09 2.133178050623e-01 + 8.132800000000e-09 3.593925596107e-01 + 8.142800000000e-09 4.520804335776e-01 + 8.152800000000e-09 4.770844101920e-01 + 8.162800000000e-09 4.342829256391e-01 + 8.172800000000e-09 3.332776278686e-01 + 8.182800000000e-09 1.900632657547e-01 + 8.192800000000e-09 2.167625561841e-02 + 8.202800000000e-09 -1.542901972038e-01 + 8.212800000000e-09 -3.131082983988e-01 + 8.222800000000e-09 -4.269747426681e-01 + 8.232800000000e-09 -4.763117303201e-01 + 8.242800000000e-09 -4.566249614477e-01 + 8.252800000000e-09 -3.744115867695e-01 + 8.262800000000e-09 -2.438048584906e-01 + 8.272800000000e-09 -8.242556976626e-02 + 8.282800000000e-09 9.328494803525e-02 + 8.292800000000e-09 2.612633157748e-01 + 8.302800000000e-09 3.937374002606e-01 + 8.312800000000e-09 4.669270315583e-01 + 8.322800000000e-09 4.712103424563e-01 + 8.332800000000e-09 4.095792714057e-01 + 8.342800000000e-09 2.938871193716e-01 + 8.352800000000e-09 1.413785114537e-01 + 8.362800000000e-09 -3.141915349502e-02 + 8.372800000000e-09 -2.051392760944e-01 + 8.382800000000e-09 -3.532506346727e-01 + 8.392800000000e-09 -4.490800779400e-01 + 8.402800000000e-09 -4.775448225675e-01 + 8.412800000000e-09 -4.379479927183e-01 + 8.422800000000e-09 -3.394732583322e-01 + 8.432800000000e-09 -1.978876772335e-01 + 8.442800000000e-09 -3.035760356896e-02 + 8.452800000000e-09 1.457654073660e-01 + 8.462800000000e-09 3.061050144214e-01 + 8.472800000000e-09 4.227775370985e-01 + 8.482800000000e-09 4.755095795536e-01 + 8.492800000000e-09 4.591411330509e-01 + 8.502800000000e-09 3.797371241634e-01 + 8.512800000000e-09 2.511161183445e-01 + 8.522800000000e-09 9.089420700442e-02 + 8.532800000000e-09 -8.454376699587e-02 + 8.542800000000e-09 -2.535296621264e-01 + 8.552800000000e-09 -3.884011306166e-01 + 8.562800000000e-09 -4.649024424250e-01 + 8.572800000000e-09 -4.726391089479e-01 + 8.582800000000e-09 -4.140461093665e-01 + 8.592800000000e-09 -3.006310459559e-01 + 8.602800000000e-09 -1.495232861054e-01 + 8.612800000000e-09 2.267163010245e-02 + 8.622800000000e-09 1.969334355376e-01 + 8.632800000000e-09 3.469884101696e-01 + 8.642800000000e-09 4.458951716816e-01 + 8.652800000000e-09 4.777974404816e-01 + 8.662800000000e-09 4.414129699938e-01 + 8.672800000000e-09 3.455027239087e-01 + 8.682800000000e-09 2.055931104810e-01 + 8.692800000000e-09 3.896663892318e-02 + 8.702800000000e-09 -1.372407278583e-01 + 8.712800000000e-09 -2.990136907898e-01 + 8.722800000000e-09 -4.184188484211e-01 + 8.732800000000e-09 -4.745564410371e-01 + 8.742800000000e-09 -4.615587968332e-01 + 8.752800000000e-09 -3.849818381228e-01 + 8.762800000000e-09 -2.583517201230e-01 + 8.772800000000e-09 -9.928720090367e-02 + 8.782800000000e-09 7.585904367118e-02 + 8.792800000000e-09 2.458074515076e-01 + 8.802800000000e-09 3.830226046356e-01 + 8.812800000000e-09 4.628050478379e-01 + 8.822800000000e-09 4.739728452864e-01 + 8.832800000000e-09 4.184216115660e-01 + 8.842800000000e-09 3.073025172153e-01 + 8.852800000000e-09 1.575938724208e-01 + 8.862800000000e-09 -1.398846935309e-02 + 8.872800000000e-09 -1.887539587450e-01 + 8.882800000000e-09 -3.406974227049e-01 + 8.892800000000e-09 -4.426373277054e-01 + 8.902800000000e-09 -4.779573597295e-01 + 8.912800000000e-09 -4.447804051675e-01 + 8.922800000000e-09 -3.514425476255e-01 + 8.932800000000e-09 -2.132222649804e-01 + 8.942800000000e-09 -4.750832545387e-02 + 8.952800000000e-09 1.287504010348e-01 + 8.962800000000e-09 2.919031380023e-01 + 8.972800000000e-09 4.139892297159e-01 + 8.982800000000e-09 4.734873559923e-01 + 8.992800000000e-09 4.638268668189e-01 + 9.002800000000e-09 3.900856165077e-01 + 9.012800000000e-09 2.654799744928e-01 + 9.022800000000e-09 1.075992374466e-01 + 9.032800000000e-09 -6.720992097730e-02 + 9.042800000000e-09 -2.380520230428e-01 + 9.052800000000e-09 -3.775400924440e-01 + 9.062800000000e-09 -4.604325740844e-01 + 9.072800000000e-09 -4.748501059603e-01 + 9.082800000000e-09 -4.223629300938e-01 + 9.092800000000e-09 -3.136825974274e-01 + 9.102800000000e-09 -1.655288161755e-01 + 9.112800000000e-09 5.274154259959e-03 + 9.122800000000e-09 1.803597510211e-01 + 9.132800000000e-09 3.340274269736e-01 + 9.142800000000e-09 4.389084877726e-01 + 9.152800000000e-09 4.776428671288e-01 + 9.162800000000e-09 4.477372695807e-01 + 9.172800000000e-09 3.570878442505e-01 + 9.182800000000e-09 2.207009388304e-01 + 9.192800000000e-09 5.604123558005e-02 + 9.202800000000e-09 -1.201114629703e-01 + 9.212800000000e-09 -2.844914830667e-01 + 9.222800000000e-09 -4.091565006999e-01 + 9.232800000000e-09 -4.719968581872e-01 + 9.242800000000e-09 -4.657187870050e-01 + 9.252800000000e-09 -3.949051284963e-01 + 9.262800000000e-09 -2.724462438573e-01 + 9.272800000000e-09 -1.158687332265e-01 + 9.282800000000e-09 5.847148828301e-02 + 9.292800000000e-09 2.300684373752e-01 + 9.302800000000e-09 3.717199460025e-01 + 9.312800000000e-09 4.577947893552e-01 + 9.322800000000e-09 4.756322624723e-01 + 9.332800000000e-09 4.262657158391e-01 + 9.342800000000e-09 3.201435262257e-01 + 9.352800000000e-09 1.736882382542e-01 + 9.362800000000e-09 3.643987745229e-03 + 9.372800000000e-09 -1.718164715270e-01 + 9.382800000000e-09 -3.272739075652e-01 + 9.392800000000e-09 -4.351813143953e-01 + 9.402800000000e-09 -4.774253440387e-01 + 9.412800000000e-09 -4.508700329503e-01 + 9.422800000000e-09 -3.629571698706e-01 + 9.432800000000e-09 -2.284169523119e-01 + 9.442800000000e-09 -6.478681117813e-02 + 9.452800000000e-09 1.112911320779e-01 + 9.462800000000e-09 2.769435886212e-01 + 9.472800000000e-09 4.042542422607e-01 + 9.482800000000e-09 4.705302405925e-01 + 9.492800000000e-09 4.677224843076e-01 + 9.502800000000e-09 3.999021973771e-01 + 9.512800000000e-09 2.796247021249e-01 + 9.522800000000e-09 1.243450566914e-01 + 9.532800000000e-09 -4.954361349528e-02 + 9.542800000000e-09 -2.219194937138e-01 + 9.552800000000e-09 -3.657799234792e-01 + 9.562800000000e-09 -4.551134354832e-01 + 9.572800000000e-09 -4.764581287035e-01 + 9.582800000000e-09 -4.302881341125e-01 + 9.592800000000e-09 -3.266415720306e-01 + 9.602800000000e-09 -1.817405837255e-01 + 9.612800000000e-09 -1.247702258645e-02 + 9.622800000000e-09 1.632724462293e-01 + 9.632800000000e-09 3.204188068832e-01 + 9.642800000000e-09 4.312723940243e-01 + 9.652800000000e-09 4.769917704315e-01 + 9.662800000000e-09 4.537853612118e-01 + 9.672800000000e-09 3.686370799473e-01 + 9.682800000000e-09 2.359904520170e-01 + 9.692800000000e-09 7.343517218223e-02 + 9.702800000000e-09 -1.024983544981e-01 + 9.712800000000e-09 -2.693310663391e-01 + 9.722800000000e-09 -3.992025434055e-01 + 9.732800000000e-09 -4.688710407827e-01 + 9.742800000000e-09 -4.695245899526e-01 + 9.752800000000e-09 -4.047134989318e-01 + 9.762800000000e-09 -2.866535001364e-01 + 9.772800000000e-09 -1.327068665846e-01 + 9.782800000000e-09 4.067632729916e-02 + 9.792800000000e-09 2.137488509905e-01 + 9.802800000000e-09 3.597277481363e-01 + 9.812800000000e-09 4.522596730338e-01 + 9.822800000000e-09 4.770876261574e-01 + 9.832800000000e-09 4.341194617068e-01 + 9.842800000000e-09 3.329787897830e-01 + 9.852800000000e-09 1.896729293557e-01 + 9.862800000000e-09 2.123300606649e-02 + 9.872800000000e-09 -1.547341279350e-01 + 9.882800000000e-09 -3.134816302211e-01 + 9.892800000000e-09 -4.272091226288e-01 + 9.902800000000e-09 -4.763730816394e-01 + 9.912800000000e-09 -4.565138795470e-01 + 9.922800000000e-09 -3.741529043818e-01 + 9.932800000000e-09 -2.434394900180e-01 + 9.942800000000e-09 -8.199468845216e-02 + 9.952800000000e-09 9.373590569501e-02 + 9.962800000000e-09 2.616679459920e-01 + 9.972800000000e-09 3.940229568870e-01 + 9.982800000000e-09 4.670449336712e-01 + 9.992800000000e-09 4.711516240493e-01 + 1.000000000000e-08 4.323406262949e-01 diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/conditions.yaml new file mode 100644 index 00000000..f677d6cc --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 7 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_07 +temperature: '-40' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/LC_Oscillator_tb.sch new file mode 100644 index 00000000..61381427 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/LC_Oscillator_tb_8.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp -40 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/conditions.yaml new file mode 100644 index 00000000..35f59447 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 8 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_08 +temperature: '-40' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/LC_Oscillator_tb.sch new file mode 100644 index 00000000..127bee86 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/LC_Oscillator_tb_9.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP 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/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 27 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/conditions.yaml new file mode 100644 index 00000000..7574932f --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 9 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_09 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/LC_Oscillator_tb.sch new file mode 100644 index 00000000..286e4f0c --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/LC_Oscillator_tb_10.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP 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/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 27 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/LC_Oscillator_tb_10.data b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/LC_Oscillator_tb_10.data new file mode 100644 index 00000000..b7f86069 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/LC_Oscillator_tb_10.data @@ -0,0 +1,985 @@ + 1.628000000000e-10 7.784089647675e-03 + 1.728000000000e-10 -6.659867527503e-03 + 1.828000000000e-10 -2.065836564882e-02 + 1.928000000000e-10 -3.223183497866e-02 + 2.028000000000e-10 -3.967063809564e-02 + 2.128000000000e-10 -4.179084703358e-02 + 2.228000000000e-10 -3.812078754614e-02 + 2.328000000000e-10 -2.898703649634e-02 + 2.428000000000e-10 -1.548756892133e-02 + 2.528000000000e-10 6.375687295537e-04 + 2.628000000000e-10 1.722177212335e-02 + 2.728000000000e-10 3.195248709933e-02 + 2.828000000000e-10 4.269136137453e-02 + 2.928000000000e-10 4.779016992350e-02 + 3.028000000000e-10 4.634832244203e-02 + 3.128000000000e-10 3.836165802964e-02 + 3.228000000000e-10 2.474052176555e-02 + 3.328000000000e-10 7.202795888793e-03 + 3.428000000000e-10 -1.193518862712e-02 + 3.528000000000e-10 -3.004917466656e-02 + 3.628000000000e-10 -4.455651087068e-02 + 3.728000000000e-10 -5.328857165539e-02 + 3.828000000000e-10 -5.482486386471e-02 + 3.928000000000e-10 -4.872252714300e-02 + 4.028000000000e-10 -3.559778133135e-02 + 4.128000000000e-10 -1.705752539469e-02 + 4.228000000000e-10 4.494514684145e-03 + 4.328000000000e-10 2.614990918727e-02 + 4.428000000000e-10 4.486858984942e-02 + 4.528000000000e-10 5.790499680702e-02 + 4.628000000000e-10 6.322761536228e-02 + 4.728000000000e-10 5.984554126646e-02 + 4.828000000000e-10 4.797198577690e-02 + 4.928000000000e-10 2.900503894818e-02 + 5.028000000000e-10 5.354576688624e-03 + 5.128000000000e-10 -1.984566286256e-02 + 5.228000000000e-10 -4.312025347072e-02 + 5.328000000000e-10 -6.111668946312e-02 + 5.428000000000e-10 -7.110590788686e-02 + 5.528000000000e-10 -7.142203495109e-02 + 5.628000000000e-10 -6.173530049101e-02 + 5.728000000000e-10 -4.310134196595e-02 + 5.828000000000e-10 -1.783859548906e-02 + 5.928000000000e-10 1.075961503623e-02 + 6.028000000000e-10 3.882583046492e-02 + 6.128000000000e-10 6.238623562187e-02 + 6.228000000000e-10 7.793696325367e-02 + 6.328000000000e-10 8.301116327128e-02 + 6.428000000000e-10 7.658901562543e-02 + 6.528000000000e-10 5.925537503877e-02 + 6.628000000000e-10 3.310547039510e-02 + 6.728000000000e-10 1.475565202656e-03 + 6.828000000000e-10 -3.143628246095e-02 + 6.928000000000e-10 -6.105869531550e-02 + 7.028000000000e-10 -8.306545944817e-02 + 7.128000000000e-10 -9.406086743390e-02 + 7.228000000000e-10 -9.216062921479e-02 + 7.328000000000e-10 -7.729185188302e-02 + 7.428000000000e-10 -5.118768714920e-02 + 7.528000000000e-10 -1.712523584952e-02 + 7.628000000000e-10 2.047047781981e-02 + 7.728000000000e-10 5.648855402944e-02 + 7.828000000000e-10 8.574056972983e-02 + 7.928000000000e-10 1.038101477910e-01 + 8.028000000000e-10 1.078060471304e-01 + 8.128000000000e-10 9.679553692925e-02 + 8.228000000000e-10 7.195903105367e-02 + 8.328000000000e-10 3.636541105657e-02 + 8.428000000000e-10 -5.463976843783e-03 + 8.528000000000e-10 -4.794552017313e-02 + 8.628000000000e-10 -8.510161379414e-02 + 8.728000000000e-10 -1.114516353823e-01 + 8.828000000000e-10 -1.228469522842e-01 + 8.928000000000e-10 -1.172662109428e-01 + 9.028000000000e-10 -9.514637917753e-02 + 9.128000000000e-10 -5.918133055417e-02 + 9.228000000000e-10 -1.385862264427e-02 + 9.328000000000e-10 3.491713431321e-02 + 9.428000000000e-10 8.039772010753e-02 + 9.528000000000e-10 1.159989414826e-01 + 9.628000000000e-10 1.362728766964e-01 + 9.728000000000e-10 1.378609481665e-01 + 9.828000000000e-10 1.201654675877e-01 + 9.928000000000e-10 8.531845800935e-02 + 1.002800000000e-09 3.762175912380e-02 + 1.012800000000e-09 -1.685664100816e-02 + 1.022800000000e-09 -7.076872562088e-02 + 1.032800000000e-09 -1.164143387352e-01 + 1.042800000000e-09 -1.469386398655e-01 + 1.052800000000e-09 -1.575081369809e-01 + 1.062800000000e-09 -1.461809922494e-01 + 1.072800000000e-09 -1.142388546131e-01 + 1.082800000000e-09 -6.564521610040e-02 + 1.092800000000e-09 -6.477028338857e-03 + 1.102800000000e-09 5.551055899345e-02 + 1.112800000000e-09 1.116757578142e-01 + 1.122800000000e-09 1.536617521164e-01 + 1.132800000000e-09 1.749454695942e-01 + 1.142800000000e-09 1.720483324045e-01 + 1.152800000000e-09 1.450719574156e-01 + 1.162800000000e-09 9.740616623873e-02 + 1.172800000000e-09 3.499844305237e-02 + 1.182800000000e-09 -3.419951466736e-02 + 1.192800000000e-09 -1.008328088904e-01 + 1.202800000000e-09 -1.551785296701e-01 + 1.212800000000e-09 -1.888856529531e-01 + 1.222800000000e-09 -1.965705933516e-01 + 1.232800000000e-09 -1.768002414982e-01 + 1.242800000000e-09 -1.321419091464e-01 + 1.252800000000e-09 -6.827389201366e-02 + 1.262800000000e-09 6.827702466584e-03 + 1.272800000000e-09 8.336025885241e-02 + 1.282800000000e-09 1.504593031496e-01 + 1.292800000000e-09 1.978603910187e-01 + 1.302800000000e-09 2.180818567316e-01 + 1.312800000000e-09 2.079052450326e-01 + 1.322800000000e-09 1.687064524759e-01 + 1.332800000000e-09 1.056178667003e-01 + 1.342800000000e-09 2.645093149787e-02 + 1.352800000000e-09 -5.878344866897e-02 + 1.362800000000e-09 -1.384073626212e-01 + 1.372800000000e-09 -2.004578366494e-01 + 1.382800000000e-09 -2.351719689609e-01 + 1.392800000000e-09 -2.370664505839e-01 + 1.402800000000e-09 -2.058292150192e-01 + 1.412800000000e-09 -1.458438935471e-01 + 1.422800000000e-09 -6.475716165821e-02 + 1.432800000000e-09 2.744164779056e-02 + 1.442800000000e-09 1.186677467126e-01 + 1.452800000000e-09 1.956043873574e-01 + 1.462800000000e-09 2.461346489277e-01 + 1.472800000000e-09 2.622474799613e-01 + 1.482800000000e-09 2.416352030673e-01 + 1.492800000000e-09 1.874639466145e-01 + 1.502800000000e-09 1.069845739780e-01 + 1.512800000000e-09 1.009520608409e-02 + 1.522800000000e-09 -9.106408139084e-02 + 1.532800000000e-09 -1.823274741956e-01 + 1.542800000000e-09 -2.495165532310e-01 + 1.552800000000e-09 -2.818828040775e-01 + 1.562800000000e-09 -2.745581207843e-01 + 1.572800000000e-09 -2.289962194531e-01 + 1.582800000000e-09 -1.517946716251e-01 + 1.592800000000e-09 -5.273212621184e-02 + 1.602800000000e-09 5.618995023295e-02 + 1.612800000000e-09 1.604972711969e-01 + 1.622800000000e-09 2.444161671126e-01 + 1.632800000000e-09 2.943962014625e-01 + 1.642800000000e-09 3.026512636799e-01 + 1.652800000000e-09 2.685672940552e-01 + 1.662800000000e-09 1.975937651808e-01 + 1.672800000000e-09 9.915618588642e-02 + 1.682800000000e-09 -1.489027129124e-02 + 1.692800000000e-09 -1.302005676574e-01 + 1.702800000000e-09 -2.300668810611e-01 + 1.712800000000e-09 -2.984666266787e-01 + 1.722800000000e-09 -3.244277600467e-01 + 1.732800000000e-09 -3.045745987982e-01 + 1.742800000000e-09 -2.426927806087e-01 + 1.752800000000e-09 -1.477216196967e-01 + 1.762800000000e-09 -3.139676254756e-02 + 1.772800000000e-09 9.232691310211e-02 + 1.782800000000e-09 2.065220425914e-01 + 1.792800000000e-09 2.932599629582e-01 + 1.802800000000e-09 3.382935040035e-01 + 1.812800000000e-09 3.350299473546e-01 + 1.822800000000e-09 2.851798716137e-01 + 1.832800000000e-09 1.966887736117e-01 + 1.842800000000e-09 8.108943403843e-02 + 1.852800000000e-09 -4.803738359387e-02 + 1.862800000000e-09 -1.741533489436e-01 + 1.872800000000e-09 -2.782175427887e-01 + 1.882800000000e-09 -3.430632454928e-01 + 1.892800000000e-09 -3.585195638344e-01 + 1.902800000000e-09 -3.235686388709e-01 + 1.912800000000e-09 -2.445803840568e-01 + 1.922800000000e-09 -1.326504675920e-01 + 1.932800000000e-09 -1.161369150663e-03 + 1.942800000000e-09 1.340350508802e-01 + 1.952800000000e-09 2.536568075272e-01 + 1.962800000000e-09 3.382368790699e-01 + 1.972800000000e-09 3.739572232827e-01 + 1.982800000000e-09 3.563858698632e-01 + 1.992800000000e-09 2.897470720799e-01 + 2.002800000000e-09 1.843747531456e-01 + 2.012800000000e-09 5.355673147228e-02 + 2.022800000000e-09 -8.756785206581e-02 + 2.032800000000e-09 -2.202412903868e-01 + 2.042800000000e-09 -3.235651345994e-01 + 2.052800000000e-09 -3.801973248936e-01 + 2.062800000000e-09 -3.819058381622e-01 + 2.072800000000e-09 -3.304777237958e-01 + 2.082800000000e-09 -2.347590586909e-01 + 2.092800000000e-09 -1.076349684809e-01 + 2.102800000000e-09 3.615656008761e-02 + 2.112800000000e-09 1.788395910068e-01 + 2.122800000000e-09 2.990754445312e-01 + 2.132800000000e-09 3.766999684906e-01 + 2.142800000000e-09 3.994054837080e-01 + 2.152800000000e-09 3.656344975690e-01 + 2.162800000000e-09 2.822758836089e-01 + 2.172800000000e-09 1.616598406643e-01 + 2.182800000000e-09 1.832930249153e-02 + 2.192800000000e-09 -1.310497621301e-01 + 2.202800000000e-09 -2.656171151081e-01 + 2.212800000000e-09 -3.633167820065e-01 + 2.222800000000e-09 -4.079268224947e-01 + 2.232800000000e-09 -3.939643447081e-01 + 2.242800000000e-09 -3.257168286326e-01 + 2.252800000000e-09 -2.143483923546e-01 + 2.262800000000e-09 -7.434239809691e-02 + 2.272800000000e-09 7.846683795038e-02 + 2.282800000000e-09 2.243660398535e-01 + 2.292800000000e-09 3.404626412950e-01 + 2.302800000000e-09 4.069796514891e-01 + 2.312800000000e-09 4.142045273947e-01 + 2.322800000000e-09 3.635765112493e-01 + 2.332800000000e-09 2.643669189659e-01 + 2.342800000000e-09 1.305063704248e-01 + 2.352800000000e-09 -2.251360669008e-02 + 2.362800000000e-09 -1.763889433776e-01 + 2.372800000000e-09 -3.084397271067e-01 + 2.382800000000e-09 -3.963276425257e-01 + 2.392800000000e-09 -4.259528481910e-01 + 2.402800000000e-09 -3.950370554860e-01 + 2.412800000000e-09 -3.105222442364e-01 + 2.422800000000e-09 -1.854052395825e-01 + 2.432800000000e-09 -3.509179383709e-02 + 2.442800000000e-09 1.233864114973e-01 + 2.452800000000e-09 2.684037392958e-01 + 2.462800000000e-09 3.761954567272e-01 + 2.472800000000e-09 4.285328194067e-01 + 2.482800000000e-09 4.189333712574e-01 + 2.492800000000e-09 3.516629841554e-01 + 2.502800000000e-09 2.380432042435e-01 + 2.512800000000e-09 9.314062099093e-02 + 2.522800000000e-09 -6.671581036802e-02 + 2.532800000000e-09 -2.214484888113e-01 + 2.542800000000e-09 -3.470161294258e-01 + 2.552800000000e-09 -4.218394295557e-01 + 2.562800000000e-09 -4.348364634641e-01 + 2.572800000000e-09 -3.868412735930e-01 + 2.582800000000e-09 -2.871193433810e-01 + 2.592800000000e-09 -1.501420903318e-01 + 2.602800000000e-09 8.063297121841e-03 + 2.612800000000e-09 1.690689949570e-01 + 2.622800000000e-09 3.095616643207e-01 + 2.632800000000e-09 4.057282015950e-01 + 2.642800000000e-09 4.419357774049e-01 + 2.652800000000e-09 4.150352824089e-01 + 2.662800000000e-09 3.316759993386e-01 + 2.672800000000e-09 2.050752787361e-01 + 2.682800000000e-09 5.122065668030e-02 + 2.692800000000e-09 -1.127330077779e-01 + 2.702800000000e-09 -2.649322249861e-01 + 2.712800000000e-09 -3.805821719951e-01 + 2.722800000000e-09 -4.399305823462e-01 + 2.732800000000e-09 -4.353849935071e-01 + 2.742800000000e-09 -3.706659017489e-01 + 2.752800000000e-09 -2.570498965088e-01 + 2.762800000000e-09 -1.100674197876e-01 + 2.772800000000e-09 5.371372715236e-02 + 2.782800000000e-09 2.142405466398e-01 + 2.792800000000e-09 3.469029563600e-01 + 2.802800000000e-09 4.288049497323e-01 + 2.812800000000e-09 4.475754527741e-01 + 2.822800000000e-09 4.032982397379e-01 + 2.832800000000e-09 3.049606660745e-01 + 2.842800000000e-09 1.672121284256e-01 + 2.852800000000e-09 6.450097651431e-03 + 2.862800000000e-09 -1.589791713108e-01 + 2.872800000000e-09 -3.055795872043e-01 + 2.882800000000e-09 -4.085709642949e-01 + 2.892800000000e-09 -4.509872697262e-01 + 2.902800000000e-09 -4.287200001321e-01 + 2.912800000000e-09 -3.480542072781e-01 + 2.922800000000e-09 -2.220219917981e-01 + 2.932800000000e-09 -6.677635946007e-02 + 2.942800000000e-09 1.003946153395e-01 + 2.952800000000e-09 2.576936990537e-01 + 2.962800000000e-09 3.797480517140e-01 + 2.972800000000e-09 4.455492824081e-01 + 2.982800000000e-09 4.463599195047e-01 + 2.992800000000e-09 3.852178566768e-01 + 3.002800000000e-09 2.731396395150e-01 + 3.012800000000e-09 1.258412005484e-01 + 3.022800000000e-09 -3.994800195094e-02 + 3.032800000000e-09 -2.043868820749e-01 + 3.042800000000e-09 -3.426615187531e-01 + 3.052800000000e-09 -4.308874750838e-01 + 3.062800000000e-09 -4.554462644072e-01 + 3.072800000000e-09 -4.155712221552e-01 + 3.082800000000e-09 -3.198023065937e-01 + 3.092800000000e-09 -1.827375836516e-01 + 3.102800000000e-09 -2.102333061567e-02 + 3.112800000000e-09 1.471704802241e-01 + 3.122800000000e-09 2.984356907304e-01 + 3.132800000000e-09 4.073607614246e-01 + 3.142800000000e-09 4.557116379003e-01 + 3.152800000000e-09 4.384054498170e-01 + 3.162800000000e-09 3.611839198038e-01 + 3.172800000000e-09 2.368023815305e-01 + 3.182800000000e-09 8.159145489484e-02 + 3.192800000000e-09 -8.721294249676e-02 + 3.202800000000e-09 -2.480918736884e-01 + 3.212800000000e-09 -3.754167083369e-01 + 3.222800000000e-09 -4.471540577074e-01 + 3.232800000000e-09 -4.534131237490e-01 + 3.242800000000e-09 -3.964676514103e-01 + 3.252800000000e-09 -2.869335133494e-01 + 3.262800000000e-09 -1.405118892420e-01 + 3.272800000000e-09 2.596537456314e-02 + 3.282800000000e-09 1.929661181239e-01 + 3.292800000000e-09 3.357223275059e-01 + 3.302800000000e-09 4.296254937819e-01 + 3.312800000000e-09 4.598706383866e-01 + 3.322800000000e-09 4.247775242581e-01 + 3.332800000000e-09 3.323319718407e-01 + 3.342800000000e-09 1.969265328565e-01 + 3.352800000000e-09 3.535188779061e-02 + 3.362800000000e-09 -1.344365262098e-01 + 3.372800000000e-09 -2.892894859737e-01 + 3.382800000000e-09 -4.034199682007e-01 + 3.392800000000e-09 -4.575036969558e-01 + 3.402800000000e-09 -4.454027720159e-01 + 3.412800000000e-09 -3.721623806589e-01 + 3.422800000000e-09 -2.501876608071e-01 + 3.432800000000e-09 -9.586614060034e-02 + 3.442800000000e-09 7.363109857073e-02 + 3.452800000000e-09 2.371555785352e-01 + 3.462800000000e-09 3.690248221087e-01 + 3.472800000000e-09 4.463480107618e-01 + 3.482800000000e-09 4.580808549052e-01 + 3.492800000000e-09 4.056803813512e-01 + 3.502800000000e-09 2.992775673600e-01 + 3.512800000000e-09 1.544337174143e-01 + 3.522800000000e-09 -1.194963863457e-02 + 3.532800000000e-09 -1.806848192460e-01 + 3.542800000000e-09 -3.271987993084e-01 + 3.552800000000e-09 -4.263446139565e-01 + 3.562800000000e-09 -4.621856138910e-01 + 3.572800000000e-09 -4.320830827961e-01 + 3.582800000000e-09 -3.435596744799e-01 + 3.592800000000e-09 -2.105590330172e-01 + 3.602800000000e-09 -4.972831586786e-02 + 3.612800000000e-09 1.210412452503e-01 + 3.622800000000e-09 2.789245098132e-01 + 3.632800000000e-09 3.979134926577e-01 + 3.642800000000e-09 4.576669863947e-01 + 3.652800000000e-09 4.509476670886e-01 + 3.662800000000e-09 3.820489553515e-01 + 3.672800000000e-09 2.629563914800e-01 + 3.682800000000e-09 1.100197191913e-01 + 3.692800000000e-09 -5.964101586349e-02 + 3.702800000000e-09 -2.252936903691e-01 + 3.712800000000e-09 -3.613261671017e-01 + 3.722800000000e-09 -4.441003574480e-01 + 3.732800000000e-09 -4.614026594595e-01 + 3.742800000000e-09 -4.138220967260e-01 + 3.752800000000e-09 -3.109425776687e-01 + 3.762800000000e-09 -1.681059074830e-01 + 3.772800000000e-09 -2.268994852485e-03 + 3.782800000000e-09 1.677290200395e-01 + 3.792800000000e-09 3.176028300025e-01 + 3.802800000000e-09 4.217905579717e-01 + 3.812800000000e-09 4.632551732332e-01 + 3.822800000000e-09 4.383464477259e-01 + 3.832800000000e-09 3.538867460325e-01 + 3.842800000000e-09 2.234772407893e-01 + 3.852800000000e-09 6.382569407611e-02 + 3.862800000000e-09 -1.073899475357e-01 + 3.872800000000e-09 -2.677651336316e-01 + 3.882800000000e-09 -3.912047521925e-01 + 3.892800000000e-09 -4.565883441923e-01 + 3.902800000000e-09 -4.554460097973e-01 + 3.912800000000e-09 -3.910699889117e-01 + 3.922800000000e-09 -2.750837118446e-01 + 3.932800000000e-09 -1.237975183305e-01 + 3.942800000000e-09 4.570595162128e-02 + 3.952800000000e-09 2.131139740323e-01 + 3.962800000000e-09 3.529672859645e-01 + 3.972800000000e-09 4.409841058878e-01 + 3.982800000000e-09 4.638015683590e-01 + 3.992800000000e-09 4.211166369263e-01 + 4.002800000000e-09 3.219343462406e-01 + 4.012800000000e-09 1.813277681250e-01 + 4.022800000000e-09 1.630147871208e-02 + 4.032800000000e-09 -1.546302210530e-01 + 4.042800000000e-09 -3.075214032216e-01 + 4.052800000000e-09 -4.165004619146e-01 + 4.062800000000e-09 -4.634872611642e-01 + 4.072800000000e-09 -4.437983815862e-01 + 4.082800000000e-09 -3.635308177919e-01 + 4.092800000000e-09 -2.359092887993e-01 + 4.102800000000e-09 -7.765390782437e-02 + 4.112800000000e-09 9.373201772503e-02 + 4.122800000000e-09 2.562844770479e-01 + 4.132800000000e-09 3.839057318863e-01 + 4.142800000000e-09 4.544992132053e-01 + 4.152800000000e-09 4.585889463925e-01 + 4.162800000000e-09 3.988814150345e-01 + 4.172800000000e-09 2.863903243241e-01 + 4.182800000000e-09 1.371781067508e-01 + 4.192800000000e-09 -3.169282604538e-02 + 4.202800000000e-09 -2.003463810105e-01 + 4.212800000000e-09 -3.435783771702e-01 + 4.222800000000e-09 -4.365916971653e-01 + 4.232800000000e-09 -4.649007707332e-01 + 4.242800000000e-09 -4.272702176886e-01 + 4.252800000000e-09 -3.320787404687e-01 + 4.262800000000e-09 -1.940663570380e-01 + 4.272800000000e-09 -3.024978038692e-02 + 4.282800000000e-09 1.411680845784e-01 + 4.292800000000e-09 2.966457751739e-01 + 4.302800000000e-09 4.101263253141e-01 + 4.312800000000e-09 4.624796470527e-01 + 4.322800000000e-09 4.480226856046e-01 + 4.332800000000e-09 3.721961972599e-01 + 4.342800000000e-09 2.477375423560e-01 + 4.352800000000e-09 9.127619301935e-02 + 4.362800000000e-09 -7.983691314818e-02 + 4.372800000000e-09 -2.441153187182e-01 + 4.382800000000e-09 -3.755682116318e-01 + 4.392800000000e-09 -4.513626234966e-01 + 4.402800000000e-09 -4.608893159701e-01 + 4.412800000000e-09 -4.060144085357e-01 + 4.422800000000e-09 -2.972045339829e-01 + 4.432800000000e-09 -1.502843389782e-01 + 4.442800000000e-09 1.770383036498e-02 + 4.452800000000e-09 1.873078026921e-01 + 4.462800000000e-09 3.336366657319e-01 + 4.472800000000e-09 4.314751892973e-01 + 4.482800000000e-09 4.652451969038e-01 + 4.492800000000e-09 4.327480744676e-01 + 4.502800000000e-09 3.418704235141e-01 + 4.512800000000e-09 2.068223219818e-01 + 4.522800000000e-09 4.438308912178e-02 + 4.532800000000e-09 -1.273657548724e-01 + 4.542800000000e-09 -2.852891197506e-01 + 4.552800000000e-09 -4.032140797853e-01 + 4.562800000000e-09 -4.610485028832e-01 + 4.572800000000e-09 -4.520156525292e-01 + 4.582800000000e-09 -3.807817570123e-01 + 4.592800000000e-09 -2.596162652910e-01 + 4.602800000000e-09 -1.050440708772e-01 + 4.612800000000e-09 6.569646982077e-02 + 4.622800000000e-09 2.315971140706e-01 + 4.632800000000e-09 3.668203641221e-01 + 4.642800000000e-09 4.478469676290e-01 + 4.652800000000e-09 4.629110177392e-01 + 4.662800000000e-09 4.130026515692e-01 + 4.672800000000e-09 3.080111872749e-01 + 4.682800000000e-09 1.634915141478e-01 + 4.692800000000e-09 -3.514613028456e-03 + 4.702800000000e-09 -1.739547178593e-01 + 4.712800000000e-09 -3.232867101363e-01 + 4.722800000000e-09 -4.259386501435e-01 + 4.732800000000e-09 -4.652503916860e-01 + 4.742800000000e-09 -4.380148814762e-01 + 4.752800000000e-09 -3.514016128612e-01 + 4.762800000000e-09 -2.192420193746e-01 + 4.772800000000e-09 -5.833140437924e-02 + 4.782800000000e-09 1.135091211298e-01 + 4.792800000000e-09 2.736098032151e-01 + 4.802800000000e-09 3.957615610476e-01 + 4.812800000000e-09 4.591035531904e-01 + 4.822800000000e-09 4.556424751340e-01 + 4.832800000000e-09 3.890598815876e-01 + 4.842800000000e-09 2.712310689991e-01 + 4.852800000000e-09 1.185981022732e-01 + 4.862800000000e-09 -5.168059484053e-02 + 4.872800000000e-09 -2.190558727968e-01 + 4.882800000000e-09 -3.578853984433e-01 + 4.892800000000e-09 -4.440330700439e-01 + 4.902800000000e-09 -4.645899554968e-01 + 4.912800000000e-09 -4.196538314181e-01 + 4.922800000000e-09 -3.185213727509e-01 + 4.932800000000e-09 -1.764530460088e-01 + 4.942800000000e-09 -1.050354171419e-02 + 4.952800000000e-09 1.606366765616e-01 + 4.962800000000e-09 3.127967482944e-01 + 4.972800000000e-09 4.201196199331e-01 + 4.982800000000e-09 4.649069628538e-01 + 4.992800000000e-09 4.429246681300e-01 + 5.002800000000e-09 3.606104980742e-01 + 5.012800000000e-09 2.314012175641e-01 + 5.022800000000e-09 7.208279377563e-02 + 5.032800000000e-09 -9.973459200862e-02 + 5.042800000000e-09 -2.618483990651e-01 + 5.052800000000e-09 -3.880687793830e-01 + 5.062800000000e-09 -4.567353524356e-01 + 5.072800000000e-09 -4.587150118203e-01 + 5.082800000000e-09 -3.968295952444e-01 + 5.092800000000e-09 -2.824659174998e-01 + 5.102800000000e-09 -1.319068920268e-01 + 5.112800000000e-09 3.773654873434e-02 + 5.122800000000e-09 2.063617780017e-01 + 5.132800000000e-09 3.485733937318e-01 + 5.142800000000e-09 4.397014730782e-01 + 5.152800000000e-09 4.657138917902e-01 + 5.162800000000e-09 4.257929326783e-01 + 5.172800000000e-09 3.286191875664e-01 + 5.182800000000e-09 1.891271672882e-01 + 5.192800000000e-09 2.438066949749e-02 + 5.202800000000e-09 -1.472579817434e-01 + 5.212800000000e-09 -3.020185678262e-01 + 5.222800000000e-09 -4.138394249242e-01 + 5.232800000000e-09 -4.639696140297e-01 + 5.242800000000e-09 -4.471858694252e-01 + 5.252800000000e-09 -3.692699362302e-01 + 5.262800000000e-09 -2.431840763376e-01 + 5.272800000000e-09 -8.563740000533e-02 + 5.282800000000e-09 8.593084283218e-02 + 5.292800000000e-09 2.497967938743e-01 + 5.302800000000e-09 3.798616425212e-01 + 5.312800000000e-09 4.535531012553e-01 + 5.322800000000e-09 4.607447230406e-01 + 5.332800000000e-09 4.036788676121e-01 + 5.342800000000e-09 2.930831825917e-01 + 5.352800000000e-09 1.449231216967e-01 + 5.362800000000e-09 -2.372353537968e-02 + 5.372800000000e-09 -1.932038939551e-01 + 5.382800000000e-09 -3.384475414681e-01 + 5.392800000000e-09 -4.343627497127e-01 + 5.402800000000e-09 -4.658215804235e-01 + 5.412800000000e-09 -4.310508762143e-01 + 5.422800000000e-09 -3.382509926020e-01 + 5.432800000000e-09 -2.018114384953e-01 + 5.442800000000e-09 -3.852936604479e-02 + 5.452800000000e-09 1.333723457116e-01 + 5.462800000000e-09 2.905369529892e-01 + 5.472800000000e-09 4.067830470489e-01 + 5.482800000000e-09 4.623867532741e-01 + 5.492800000000e-09 4.510381155635e-01 + 5.502800000000e-09 3.777447310967e-01 + 5.512800000000e-09 2.549987312790e-01 + 5.522800000000e-09 9.940457087836e-02 + 5.532800000000e-09 -7.173604174221e-02 + 5.542800000000e-09 -2.371927570430e-01 + 5.552800000000e-09 -3.710181605127e-01 + 5.562800000000e-09 -4.499392846619e-01 + 5.572800000000e-09 -4.626725410626e-01 + 5.582800000000e-09 -4.105897135743e-01 + 5.592800000000e-09 -3.038420782660e-01 + 5.602800000000e-09 -1.581266529284e-01 + 5.612800000000e-09 9.494886388667e-03 + 5.622800000000e-09 1.797897987550e-01 + 5.632800000000e-09 3.280377424125e-01 + 5.642800000000e-09 4.287737330298e-01 + 5.652800000000e-09 4.657772226903e-01 + 5.662800000000e-09 4.362752922691e-01 + 5.672800000000e-09 3.477545809179e-01 + 5.682800000000e-09 2.142265526081e-01 + 5.692800000000e-09 5.250507665738e-02 + 5.702800000000e-09 -1.194724435416e-01 + 5.712800000000e-09 -2.788196833148e-01 + 5.722800000000e-09 -3.993068205250e-01 + 5.732800000000e-09 -4.604121620007e-01 + 5.742800000000e-09 -4.546242889022e-01 + 5.752800000000e-09 -3.859908289306e-01 + 5.762800000000e-09 -2.666033491956e-01 + 5.772800000000e-09 -1.129812260285e-01 + 5.782800000000e-09 5.767402241059e-02 + 5.792800000000e-09 2.246046276940e-01 + 5.802800000000e-09 3.620521952619e-01 + 5.812800000000e-09 4.461073304719e-01 + 5.822800000000e-09 4.643401252579e-01 + 5.832800000000e-09 4.172366815637e-01 + 5.842800000000e-09 3.143592846029e-01 + 5.852800000000e-09 1.711143068783e-01 + 5.862800000000e-09 4.566670750442e-03 + 5.872800000000e-09 -1.664327401516e-01 + 5.882800000000e-09 -3.175329113221e-01 + 5.892800000000e-09 -4.229637669331e-01 + 5.902800000000e-09 -4.654521247406e-01 + 5.912800000000e-09 -4.412069648268e-01 + 5.922800000000e-09 -3.569880314517e-01 + 5.932800000000e-09 -2.264147157086e-01 + 5.942800000000e-09 -6.629670865894e-02 + 5.952800000000e-09 1.056625360072e-01 + 5.962800000000e-09 2.670482269645e-01 + 5.972800000000e-09 3.916347879650e-01 + 5.982800000000e-09 4.580786662907e-01 + 5.992800000000e-09 4.577337466718e-01 + 6.002800000000e-09 3.937973205459e-01 + 6.012800000000e-09 2.778753135488e-01 + 6.022800000000e-09 1.263343489293e-01 + 6.032800000000e-09 -4.368826615545e-02 + 6.042800000000e-09 -2.118938277747e-01 + 6.052800000000e-09 -3.527616182583e-01 + 6.062800000000e-09 -4.418243122917e-01 + 6.072800000000e-09 -4.655221633647e-01 + 6.082800000000e-09 -4.234337772518e-01 + 6.092800000000e-09 -3.245111353770e-01 + 6.102800000000e-09 -1.838402790935e-01 + 6.112800000000e-09 -1.849128672026e-02 + 6.122800000000e-09 1.530323117181e-01 + 6.132800000000e-09 3.067763803488e-01 + 6.142800000000e-09 4.167434530420e-01 + 6.152800000000e-09 4.646561805620e-01 + 6.162800000000e-09 4.456827416393e-01 + 6.172800000000e-09 3.658357298385e-01 + 6.182800000000e-09 2.383219487326e-01 + 6.192800000000e-09 7.991420565154e-02 + 6.202800000000e-09 -9.187426196225e-02 + 6.212800000000e-09 -2.551048138521e-01 + 6.222800000000e-09 -3.836160383702e-01 + 6.232800000000e-09 -4.551368232752e-01 + 6.242800000000e-09 -4.600203503978e-01 + 6.252800000000e-09 -4.008687286054e-01 + 6.262800000000e-09 -2.886484962333e-01 + 6.272800000000e-09 -1.394366238604e-01 + 6.282800000000e-09 2.967038226358e-02 + 6.292800000000e-09 1.988301258599e-01 + 6.302800000000e-09 3.428266320266e-01 + 6.312800000000e-09 4.367338153881e-01 + 6.322800000000e-09 4.658848119220e-01 + 6.332800000000e-09 4.289160492320e-01 + 6.342800000000e-09 3.343235983005e-01 + 6.352800000000e-09 1.966532743133e-01 + 6.362800000000e-09 3.269656159853e-02 + 6.372800000000e-09 -1.391874311830e-01 + 6.382800000000e-09 -2.954426087855e-01 + 6.392800000000e-09 -4.099168518298e-01 + 6.402800000000e-09 -4.632750747741e-01 + 6.412800000000e-09 -4.496623515138e-01 + 6.422800000000e-09 -3.744121039550e-01 + 6.432800000000e-09 -2.502208573721e-01 + 6.442800000000e-09 -9.374844109163e-02 + 6.452800000000e-09 7.764521429026e-02 + 6.462800000000e-09 2.425208620912e-01 + 6.472800000000e-09 3.748509191156e-01 + 6.482800000000e-09 4.516362491880e-01 + 6.492800000000e-09 4.620714809045e-01 + 6.502800000000e-09 4.078953353029e-01 + 6.512800000000e-09 2.995045182133e-01 + 6.522800000000e-09 1.527183020330e-01 + 6.532800000000e-09 -1.539186023077e-02 + 6.542800000000e-09 -1.854179327746e-01 + 6.552800000000e-09 -3.324836142119e-01 + 6.562800000000e-09 -4.312600110220e-01 + 6.572800000000e-09 -4.659730641156e-01 + 6.582800000000e-09 -4.342690398898e-01 + 6.592800000000e-09 -3.439367874791e-01 + 6.602800000000e-09 -2.091517597943e-01 + 6.612800000000e-09 -4.673005759543e-02 + 6.622800000000e-09 1.252752702108e-01 + 6.632800000000e-09 2.837758598315e-01 + 6.642800000000e-09 4.025470729359e-01 + 6.652800000000e-09 4.613208021475e-01 + 6.662800000000e-09 4.531442782792e-01 + 6.672800000000e-09 3.825675108871e-01 + 6.682800000000e-09 2.618002847241e-01 + 6.692800000000e-09 1.073717703404e-01 + 6.702800000000e-09 -6.347728391370e-02 + 6.712800000000e-09 -2.297978810519e-01 + 6.722800000000e-09 -3.657513998192e-01 + 6.732800000000e-09 -4.476863754557e-01 + 6.742800000000e-09 -4.636463541381e-01 + 6.752800000000e-09 -4.144855799428e-01 + 6.762800000000e-09 -3.100108736820e-01 + 6.772800000000e-09 -1.657500180306e-01 + 6.782800000000e-09 1.236610810712e-03 + 6.792800000000e-09 1.719457732083e-01 + 6.802800000000e-09 3.218730014659e-01 + 6.812800000000e-09 4.253686710342e-01 + 6.822800000000e-09 4.655911916829e-01 + 6.832800000000e-09 4.391730818514e-01 + 6.842800000000e-09 3.531759726955e-01 + 6.852800000000e-09 2.213821812303e-01 + 6.862800000000e-09 6.060450868195e-02 + 6.872800000000e-09 -1.113635969234e-01 + 6.882800000000e-09 -2.719133830028e-01 + 6.892800000000e-09 -3.948131386516e-01 + 6.902800000000e-09 -4.590530776998e-01 + 6.912800000000e-09 -4.564579328037e-01 + 6.922800000000e-09 -3.905791322604e-01 + 6.932800000000e-09 -2.732242419119e-01 + 6.942800000000e-09 -1.208249375369e-01 + 6.952800000000e-09 4.945996165515e-02 + 6.962800000000e-09 2.171453683631e-01 + 6.972800000000e-09 3.566094649225e-01 + 6.982800000000e-09 4.436088957834e-01 + 6.992800000000e-09 4.650494912821e-01 + 7.002800000000e-09 4.208873096450e-01 + 7.012800000000e-09 3.203283025437e-01 + 7.022800000000e-09 1.785926420292e-01 + 7.032800000000e-09 1.274687035518e-02 + 7.042800000000e-09 -1.585672865284e-01 + 7.052800000000e-09 -3.112303746417e-01 + 7.062800000000e-09 -4.193324003696e-01 + 7.072800000000e-09 -4.650063465996e-01 + 7.082800000000e-09 -4.438532578744e-01 + 7.092800000000e-09 -3.621964551318e-01 + 7.102800000000e-09 -2.334145263154e-01 + 7.112800000000e-09 -7.429798863601e-02 + 7.122800000000e-09 9.756733276303e-02 + 7.132800000000e-09 2.600469438093e-01 + 7.142800000000e-09 3.869480060546e-01 + 7.152800000000e-09 4.564797941152e-01 + 7.162800000000e-09 4.593258998739e-01 + 7.172800000000e-09 3.981714422719e-01 + 7.182800000000e-09 2.843285302663e-01 + 7.192800000000e-09 1.340588748922e-01 + 7.202800000000e-09 -3.552601495374e-02 + 7.212800000000e-09 -2.043882498534e-01 + 7.222800000000e-09 -3.471670301578e-01 + 7.232800000000e-09 -4.391048797555e-01 + 7.242800000000e-09 -4.659898744892e-01 + 7.252800000000e-09 -4.268579405105e-01 + 7.262800000000e-09 -3.302929315019e-01 + 7.272800000000e-09 -1.911805151426e-01 + 7.282800000000e-09 -2.659126376788e-02 + 7.292800000000e-09 1.451578269673e-01 + 7.302800000000e-09 3.003564990672e-01 + 7.312800000000e-09 4.129085934664e-01 + 7.322800000000e-09 4.639033290898e-01 + 7.332800000000e-09 4.479514464838e-01 + 7.342800000000e-09 3.707194448343e-01 + 7.352800000000e-09 2.451029934353e-01 + 7.362800000000e-09 8.780469473559e-02 + 7.372800000000e-09 -8.375619502576e-02 + 7.382800000000e-09 -2.479271823497e-01 + 7.392800000000e-09 -3.786210589747e-01 + 7.402800000000e-09 -4.531450374871e-01 + 7.412800000000e-09 -4.611933444704e-01 + 7.422800000000e-09 -4.048770906574e-01 + 7.432800000000e-09 -2.948400812273e-01 + 7.442800000000e-09 -1.470136314130e-01 + 7.452800000000e-09 2.152331413455e-02 + 7.462800000000e-09 1.911814760690e-01 + 7.472800000000e-09 3.369359178029e-01 + 7.482800000000e-09 4.336250422195e-01 + 7.492800000000e-09 4.659473103904e-01 + 7.502800000000e-09 4.319783490924e-01 + 7.512800000000e-09 3.398120387672e-01 + 7.522800000000e-09 2.037851675773e-01 + 7.532800000000e-09 4.070365964183e-02 + 7.542800000000e-09 -1.312539424045e-01 + 7.552800000000e-09 -2.887986342595e-01 + 7.562800000000e-09 -4.057308654510e-01 + 7.572800000000e-09 -4.621789165484e-01 + 7.582800000000e-09 -4.516639884160e-01 + 7.592800000000e-09 -3.790749206440e-01 + 7.602800000000e-09 -2.568318179419e-01 + 7.612800000000e-09 -1.015234141122e-01 + 7.622800000000e-09 6.956430657438e-02 + 7.632800000000e-09 2.352734619948e-01 + 7.642800000000e-09 3.696805653539e-01 + 7.652800000000e-09 4.494072507897e-01 + 7.662800000000e-09 4.629920373066e-01 + 7.672800000000e-09 4.116716606159e-01 + 7.682800000000e-09 3.055088300078e-01 + 7.692800000000e-09 1.601588999707e-01 + 7.702800000000e-09 -7.315119512075e-03 + 7.712800000000e-09 -1.777409030436e-01 + 7.722800000000e-09 -3.264515447034e-01 + 7.732800000000e-09 -4.279280469845e-01 + 7.742800000000e-09 -4.657835990355e-01 + 7.752800000000e-09 -4.370900010157e-01 + 7.762800000000e-09 -3.492234737568e-01 + 7.772800000000e-09 -2.161374075578e-01 + 7.782800000000e-09 -5.464813817248e-02 + 7.792800000000e-09 1.173452409870e-01 + 7.802800000000e-09 2.770277870905e-01 + 7.812800000000e-09 3.981646126383e-01 + 7.822800000000e-09 4.601016700009e-01 + 7.832800000000e-09 4.551532277799e-01 + 7.842800000000e-09 3.872379375610e-01 + 7.852800000000e-09 2.683741506261e-01 + 7.862800000000e-09 1.150607278364e-01 + 7.872800000000e-09 -5.551211477228e-02 + 7.882800000000e-09 -2.226578842400e-01 + 7.892800000000e-09 -3.606509574066e-01 + 7.902800000000e-09 -4.454896803287e-01 + 7.912800000000e-09 -4.645684378747e-01 + 7.922800000000e-09 -4.182348964174e-01 + 7.932800000000e-09 -3.159590261432e-01 + 7.942800000000e-09 -1.731001612585e-01 + 7.952800000000e-09 -6.724745105632e-03 + 7.962800000000e-09 1.643719535288e-01 + 7.972800000000e-09 3.158977523504e-01 + 7.982800000000e-09 4.220416898166e-01 + 7.992800000000e-09 4.653718934877e-01 + 8.002800000000e-09 4.419383690975e-01 + 8.012800000000e-09 3.583871677680e-01 + 8.022800000000e-09 2.282757839670e-01 + 8.032800000000e-09 6.841092304402e-02 + 8.042800000000e-09 -1.035357400170e-01 + 8.052800000000e-09 -2.652223125241e-01 + 8.062800000000e-09 -3.904285749981e-01 + 8.072800000000e-09 -4.576899775146e-01 + 8.082800000000e-09 -4.581843107413e-01 + 8.092800000000e-09 -3.949754711062e-01 + 8.102800000000e-09 -2.795931905434e-01 + 8.112800000000e-09 -1.283782517288e-01 + 8.122800000000e-09 4.153908513751e-02 + 8.132800000000e-09 2.099289133955e-01 + 8.142800000000e-09 3.513103785885e-01 + 8.152800000000e-09 4.411362730501e-01 + 8.162800000000e-09 4.656742557393e-01 + 8.172800000000e-09 4.243611029473e-01 + 8.182800000000e-09 3.260530566428e-01 + 8.192800000000e-09 1.857848130623e-01 + 8.202800000000e-09 2.062742197559e-02 + 8.212800000000e-09 -1.509656002326e-01 + 8.222800000000e-09 -3.051029391416e-01 + 8.232800000000e-09 -4.157579612180e-01 + 8.242800000000e-09 -4.644410051084e-01 + 8.252800000000e-09 -4.462141436171e-01 + 8.262800000000e-09 -3.670633436100e-01 + 8.272800000000e-09 -2.400765847501e-01 + 8.282800000000e-09 -8.198979024144e-02 + 8.292800000000e-09 8.971049739905e-02 + 8.302800000000e-09 2.531649891753e-01 + 8.312800000000e-09 3.822359374469e-01 + 8.322800000000e-09 4.545428953193e-01 + 8.332800000000e-09 4.602650644385e-01 + 8.342800000000e-09 4.018737933680e-01 + 8.352800000000e-09 2.902485297620e-01 + 8.362800000000e-09 1.414251485740e-01 + 8.372800000000e-09 -2.750794874843e-02 + 8.382800000000e-09 -1.967785659775e-01 + 8.392800000000e-09 -3.412242432682e-01 + 8.402800000000e-09 -4.358587938602e-01 + 8.412800000000e-09 -4.658476682341e-01 + 8.422800000000e-09 -4.296788280156e-01 + 8.432800000000e-09 -3.357407146107e-01 + 8.442800000000e-09 -1.985220337517e-01 + 8.452800000000e-09 -3.481568794989e-02 + 8.462800000000e-09 1.370701348803e-01 + 8.472800000000e-09 2.936524555797e-01 + 8.482800000000e-09 4.087685315317e-01 + 8.492800000000e-09 4.629417567097e-01 + 8.502800000000e-09 4.501521656433e-01 + 8.512800000000e-09 3.756148124522e-01 + 8.522800000000e-09 2.519517033636e-01 + 8.532800000000e-09 9.580243921001e-02 + 8.542800000000e-09 -7.549555227423e-02 + 8.552800000000e-09 -2.405796919331e-01 + 8.562800000000e-09 -3.734516592895e-01 + 8.572800000000e-09 -4.510123054497e-01 + 8.582800000000e-09 -4.622825723256e-01 + 8.592800000000e-09 -4.088680447616e-01 + 8.602800000000e-09 -3.010762665481e-01 + 8.612800000000e-09 -1.546820084910e-01 + 8.622800000000e-09 1.324764662253e-02 + 8.632800000000e-09 1.833694258867e-01 + 8.642800000000e-09 3.308638443427e-01 + 8.652800000000e-09 4.303519949622e-01 + 8.662800000000e-09 4.658971588524e-01 + 8.672800000000e-09 4.349937144381e-01 + 8.682800000000e-09 3.453207882528e-01 + 8.692800000000e-09 2.109942175722e-01 + 8.702800000000e-09 4.882919702486e-02 + 8.712800000000e-09 -1.231644715299e-01 + 8.722800000000e-09 -2.819721785942e-01 + 8.732800000000e-09 -4.013669442831e-01 + 8.742800000000e-09 -4.609471142108e-01 + 8.752800000000e-09 -4.535925733981e-01 + 8.762800000000e-09 -3.837329838364e-01 + 8.772800000000e-09 -2.635015426741e-01 + 8.782800000000e-09 -1.094026524439e-01 + 8.792800000000e-09 6.133911851039e-02 + 8.802800000000e-09 2.278489301402e-01 + 8.812800000000e-09 3.643232226631e-01 + 8.822800000000e-09 4.470206584862e-01 + 8.832800000000e-09 4.638123012098e-01 + 8.842800000000e-09 4.154163657328e-01 + 8.852800000000e-09 3.115479076455e-01 + 8.862800000000e-09 1.676866254357e-01 + 8.872800000000e-09 8.906808820122e-04 + 8.882800000000e-09 -1.698958405567e-01 + 8.892800000000e-09 -3.202286354128e-01 + 8.902800000000e-09 -4.244184361064e-01 + 8.912800000000e-09 -4.654670138850e-01 + 8.922800000000e-09 -4.398513575101e-01 + 8.932800000000e-09 -3.545208098977e-01 + 8.942800000000e-09 -2.231954925540e-01 + 8.952800000000e-09 -6.268384627991e-02 + 8.962800000000e-09 1.092566421112e-01 + 8.972800000000e-09 2.700913693337e-01 + 8.982800000000e-09 3.935945055867e-01 + 8.992800000000e-09 4.586360787693e-01 + 9.002800000000e-09 4.568682226341e-01 + 9.012800000000e-09 3.917116397645e-01 + 9.022800000000e-09 2.748980863720e-01 + 9.032800000000e-09 1.228330459995e-01 + 9.042800000000e-09 -4.733543371486e-02 + 9.052800000000e-09 -2.151930116187e-01 + 9.062800000000e-09 -3.551578508464e-01 + 9.072800000000e-09 -4.429066325595e-01 + 9.082800000000e-09 -4.651748199707e-01 + 9.092800000000e-09 -4.217795294709e-01 + 9.102800000000e-09 -3.218324324715e-01 + 9.112800000000e-09 -1.805026281001e-01 + 9.122800000000e-09 -1.485569366440e-02 + 9.132800000000e-09 1.565196046300e-01 + 9.142800000000e-09 3.095665782616e-01 + 9.152800000000e-09 4.183452010810e-01 + 9.162800000000e-09 4.648384822366e-01 + 9.172800000000e-09 4.444885859803e-01 + 9.182800000000e-09 3.635040294619e-01 + 9.192800000000e-09 2.351990414366e-01 + 9.202800000000e-09 7.635606664153e-02 + 9.212800000000e-09 -9.546785208762e-02 + 9.222800000000e-09 -2.582118732041e-01 + 9.232800000000e-09 -3.856963922463e-01 + 9.242800000000e-09 -4.558526024219e-01 + 9.252800000000e-09 -4.593272327195e-01 + 9.262800000000e-09 -3.989366824841e-01 + 9.272800000000e-09 -2.857852305482e-01 + 9.282800000000e-09 -1.360054709359e-01 + 9.292800000000e-09 3.330050172351e-02 + 9.302800000000e-09 2.021784404858e-01 + 9.312800000000e-09 3.453376604514e-01 + 9.322800000000e-09 4.379725932482e-01 + 9.332800000000e-09 4.657042185510e-01 + 9.342800000000e-09 4.274144755104e-01 + 9.352800000000e-09 3.315766736420e-01 + 9.362800000000e-09 1.930050357455e-01 + 9.372800000000e-09 2.875375385395e-02 + 9.382800000000e-09 -1.429186262233e-01 + 9.392800000000e-09 -2.983852992978e-01 + 9.402800000000e-09 -4.115514641635e-01 + 9.412800000000e-09 -4.633659311023e-01 + 9.422800000000e-09 -4.482703694550e-01 + 9.432800000000e-09 -3.718057205708e-01 + 9.442800000000e-09 -2.467854144256e-01 + 9.452800000000e-09 -8.988297401063e-02 + 9.462800000000e-09 8.151404967106e-02 + 9.472800000000e-09 2.458403928294e-01 + 9.482800000000e-09 3.770479460035e-01 + 9.492800000000e-09 4.523476265408e-01 + 9.502800000000e-09 4.612556180294e-01 + 9.512800000000e-09 4.057447961718e-01 + 9.522800000000e-09 2.963629765236e-01 + 9.532800000000e-09 1.489900797691e-01 + 9.542800000000e-09 -1.930759076695e-02 + 9.552800000000e-09 -1.890141488124e-01 + 9.562800000000e-09 -3.351705364224e-01 + 9.572800000000e-09 -4.325691596133e-01 + 9.582800000000e-09 -4.657426265792e-01 + 9.592800000000e-09 -4.326098808504e-01 + 9.602800000000e-09 -3.411496065201e-01 + 9.612800000000e-09 -2.056326732975e-01 + 9.622800000000e-09 -4.285889153263e-02 + 9.632800000000e-09 1.290449138607e-01 + 9.642800000000e-09 2.868709681360e-01 + 9.652800000000e-09 4.044226441116e-01 + 9.662800000000e-09 4.616923589764e-01 + 9.672800000000e-09 4.520295451842e-01 + 9.682800000000e-09 3.801974456021e-01 + 9.692800000000e-09 2.585344401990e-01 + 9.702800000000e-09 1.036001194999e-01 + 9.712800000000e-09 -6.734237900509e-02 + 9.722800000000e-09 -2.332167424265e-01 + 9.732800000000e-09 -3.681396593132e-01 + 9.742800000000e-09 -4.486419805133e-01 + 9.752800000000e-09 -4.630845706588e-01 + 9.762800000000e-09 -4.125638176617e-01 + 9.772800000000e-09 -3.070460872634e-01 + 9.782800000000e-09 -1.621346275889e-01 + 9.792800000000e-09 5.114602884473e-03 + 9.802800000000e-09 1.755953103032e-01 + 9.812800000000e-09 3.247060753281e-01 + 9.822800000000e-09 4.268883663454e-01 + 9.832800000000e-09 4.655935476313e-01 + 9.842800000000e-09 4.377336225167e-01 + 9.852800000000e-09 3.505682171311e-01 + 9.862800000000e-09 2.179845523073e-01 + 9.872800000000e-09 5.679231329547e-02 + 9.882800000000e-09 -1.151519233912e-01 + 9.892800000000e-09 -2.751127298994e-01 + 9.902800000000e-09 -3.968627871110e-01 + 9.912800000000e-09 -4.596231585185e-01 + 9.922800000000e-09 -4.555307752008e-01 + 9.932800000000e-09 -3.883695919340e-01 + 9.942800000000e-09 -2.700784914521e-01 + 9.952800000000e-09 -1.171279413116e-01 + 9.962800000000e-09 5.330739378300e-02 + 9.972800000000e-09 2.206176409949e-01 + 9.982800000000e-09 3.591197913484e-01 + 9.992800000000e-09 4.447287668034e-01 + 1.000000000000e-08 4.658065634617e-01 diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/conditions.yaml new file mode 100644 index 00000000..bbc20751 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 10 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_10 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/LC_Oscillator_tb.sch new file mode 100644 index 00000000..6b4e889e --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/LC_Oscillator_tb_11.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP 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/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 27 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/conditions.yaml new file mode 100644 index 00000000..293acdd4 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 11 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_11 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/LC_Oscillator_tb.sch new file mode 100644 index 00000000..b32ccf22 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/LC_Oscillator_tb_12.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 27 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/conditions.yaml new file mode 100644 index 00000000..0c069899 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 12 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_12 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/LC_Oscillator_tb.sch new file mode 100644 index 00000000..74d02ed3 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/LC_Oscillator_tb_13.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 27 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/LC_Oscillator_tb_13.data b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/LC_Oscillator_tb_13.data new file mode 100644 index 00000000..67e81b75 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/LC_Oscillator_tb_13.data @@ -0,0 +1,985 @@ + 1.628000000000e-10 8.118333159888e-03 + 1.728000000000e-10 -6.329880087169e-03 + 1.828000000000e-10 -2.038793042648e-02 + 1.928000000000e-10 -3.207435952431e-02 + 2.028000000000e-10 -3.966808522856e-02 + 2.128000000000e-10 -4.196532154741e-02 + 2.228000000000e-10 -3.846876423700e-02 + 2.328000000000e-10 -2.947722603866e-02 + 2.428000000000e-10 -1.606265062070e-02 + 2.528000000000e-10 5.522883945974e-05 + 2.628000000000e-10 1.672059021555e-02 + 2.728000000000e-10 3.161888249487e-02 + 2.828000000000e-10 4.259548573610e-02 + 2.928000000000e-10 4.797276826952e-02 + 3.028000000000e-10 4.681150216804e-02 + 3.128000000000e-10 3.906521496404e-02 + 3.228000000000e-10 2.560427717806e-02 + 3.328000000000e-10 8.114579241002e-03 + 3.428000000000e-10 -1.110628299341e-02 + 3.528000000000e-10 -2.943495558178e-02 + 3.628000000000e-10 -4.426910369524e-02 + 3.728000000000e-10 -5.340070968539e-02 + 3.828000000000e-10 -5.535530628813e-02 + 3.928000000000e-10 -4.962959255005e-02 + 4.028000000000e-10 -3.678155954440e-02 + 4.128000000000e-10 -1.836978656083e-02 + 4.228000000000e-10 3.233781828361e-03 + 4.328000000000e-10 2.512978998091e-02 + 4.428000000000e-10 4.425963300747e-02 + 4.528000000000e-10 5.783059459081e-02 + 4.628000000000e-10 6.374067346046e-02 + 4.728000000000e-10 6.091597005686e-02 + 4.828000000000e-10 4.948696039717e-02 + 4.928000000000e-10 3.078044739555e-02 + 5.028000000000e-10 7.155216598295e-03 + 5.128000000000e-10 -1.827820678648e-02 + 5.228000000000e-10 -4.203240526396e-02 + 5.328000000000e-10 -6.070358413016e-02 + 5.428000000000e-10 -7.147598537560e-02 + 5.528000000000e-10 -7.257483778110e-02 + 5.628000000000e-10 -6.355725231376e-02 + 5.728000000000e-10 -4.537788426842e-02 + 5.828000000000e-10 -2.027778215589e-02 + 5.928000000000e-10 8.494442877233e-03 + 6.028000000000e-10 3.707400757461e-02 + 6.128000000000e-10 6.143925452483e-02 + 6.228000000000e-10 7.798712884381e-02 + 6.328000000000e-10 8.411385694924e-02 + 6.428000000000e-10 7.864904811785e-02 + 6.528000000000e-10 6.203775923011e-02 + 6.628000000000e-10 3.626320211173e-02 + 6.728000000000e-10 4.587556015235e-03 + 6.828000000000e-10 -2.881734371817e-02 + 6.928000000000e-10 -5.934532499629e-02 + 7.028000000000e-10 -8.256603450632e-02 + 7.128000000000e-10 -9.492002737809e-02 + 7.228000000000e-10 -9.432918822386e-02 + 7.328000000000e-10 -8.053689460766e-02 + 7.428000000000e-10 -5.511567428599e-02 + 7.528000000000e-10 -2.122337584007e-02 + 7.628000000000e-10 1.676947183595e-02 + 7.728000000000e-10 5.374110262062e-02 + 7.828000000000e-10 8.442972102290e-02 + 7.928000000000e-10 1.042185919051e-01 + 8.028000000000e-10 1.099392754611e-01 + 8.128000000000e-10 1.004252736436e-01 + 8.228000000000e-10 7.665382783078e-02 + 8.328000000000e-10 4.153080614375e-02 + 8.428000000000e-10 -5.207639454321e-04 + 8.528000000000e-10 -4.394067010580e-02 + 8.628000000000e-10 -8.266995463503e-02 + 8.728000000000e-10 -1.110371637933e-01 + 8.828000000000e-10 -1.246112647038e-01 + 8.928000000000e-10 -1.210506685526e-01 + 9.028000000000e-10 -1.005063955054e-01 + 9.128000000000e-10 -6.545430944823e-02 + 9.228000000000e-10 -2.023209722296e-02 + 9.328000000000e-10 2.933038222068e-02 + 9.428000000000e-10 7.644528334888e-02 + 9.528000000000e-10 1.143487890617e-01 + 9.628000000000e-10 1.372814966351e-01 + 9.728000000000e-10 1.414916696159e-01 + 9.828000000000e-10 1.260001266767e-01 + 9.928000000000e-10 9.264193540934e-02 + 1.002800000000e-09 4.551151506458e-02 + 1.012800000000e-09 -9.454170453994e-03 + 1.022800000000e-09 -6.493078911725e-02 + 1.032800000000e-09 -1.130750739555e-01 + 1.042800000000e-09 -1.466692519551e-01 + 1.052800000000e-09 -1.604566539052e-01 + 1.062800000000e-09 -1.520775271232e-01 + 1.072800000000e-09 -1.223781799979e-01 + 1.082800000000e-09 -7.501648728838e-02 + 1.092800000000e-09 -1.587951346879e-02 + 1.102800000000e-09 4.738449534648e-02 + 1.112800000000e-09 1.060709887452e-01 + 1.122800000000e-09 1.515274335088e-01 + 1.132800000000e-09 1.767360923952e-01 + 1.142800000000e-09 1.776277363422e-01 + 1.152800000000e-09 1.537544732604e-01 + 1.162800000000e-09 1.081178565516e-01 + 1.172800000000e-09 4.640802770048e-02 + 1.182800000000e-09 -2.360630266324e-02 + 1.192800000000e-09 -9.260951697163e-02 + 1.202800000000e-09 -1.506591688898e-01 + 1.212800000000e-09 -1.888366375907e-01 + 1.222800000000e-09 -2.011069133707e-01 + 1.232800000000e-09 -1.854353984296e-01 + 1.242800000000e-09 -1.438751784911e-01 + 1.252800000000e-09 -8.167803193011e-02 + 1.262800000000e-09 -6.491650819830e-03 + 1.272800000000e-09 7.199645640080e-02 + 1.282800000000e-09 1.428210702599e-01 + 1.292800000000e-09 1.952503068067e-01 + 1.302800000000e-09 2.210383591419e-01 + 1.312800000000e-09 2.161053858967e-01 + 1.322800000000e-09 1.810824519961e-01 + 1.332800000000e-09 1.206357215445e-01 + 1.342800000000e-09 4.228189281548e-02 + 1.352800000000e-09 -4.422696190055e-02 + 1.362800000000e-09 -1.272941136502e-01 + 1.372800000000e-09 -1.946206408677e-01 + 1.382800000000e-09 -2.355959178338e-01 + 1.392800000000e-09 -2.437640791397e-01 + 1.402800000000e-09 -2.179758037362e-01 + 1.412800000000e-09 -1.619214107266e-01 + 1.422800000000e-09 -8.282152409986e-02 + 1.432800000000e-09 9.643941640021e-03 + 1.442800000000e-09 1.036448152011e-01 + 1.452800000000e-09 1.857503968156e-01 + 1.462800000000e-09 2.431331277952e-01 + 1.472800000000e-09 2.666701248207e-01 + 1.482800000000e-09 2.528898813064e-01 + 1.492800000000e-09 2.040446972701e-01 + 1.502800000000e-09 1.268548961360e-01 + 1.512800000000e-09 3.087522185073e-02 + 1.522800000000e-09 -7.212167205012e-02 + 1.532800000000e-09 -1.681151545107e-01 + 1.542800000000e-09 -2.424134302561e-01 + 1.552800000000e-09 -2.831334740968e-01 + 1.562800000000e-09 -2.840196710190e-01 + 1.572800000000e-09 -2.453535488572e-01 + 1.582800000000e-09 -1.729640283560e-01 + 1.592800000000e-09 -7.616996910053e-02 + 1.602800000000e-09 3.340643323040e-02 + 1.612800000000e-09 1.416532408371e-01 + 1.622800000000e-09 2.325923328299e-01 + 1.632800000000e-09 2.916005393809e-01 + 1.642800000000e-09 3.093450353758e-01 + 1.652800000000e-09 2.837361654433e-01 + 1.662800000000e-09 2.191668825782e-01 + 1.672800000000e-09 1.245343155859e-01 + 1.682800000000e-09 1.131167659439e-02 + 1.692800000000e-09 -1.066963176945e-01 + 1.702800000000e-09 -2.129640497678e-01 + 1.712800000000e-09 -2.906582639549e-01 + 1.722800000000e-09 -3.272075425720e-01 + 1.732800000000e-09 -3.174494508733e-01 + 1.742800000000e-09 -2.637647814897e-01 + 1.752800000000e-09 -1.743055240699e-01 + 1.762800000000e-09 -6.042760327623e-02 + 1.772800000000e-09 6.446565691211e-02 + 1.782800000000e-09 1.839894278309e-01 + 1.792800000000e-09 2.798215509124e-01 + 1.802800000000e-09 3.361844416978e-01 + 1.812800000000e-09 3.444671254267e-01 + 1.822800000000e-09 3.047172979617e-01 + 1.832800000000e-09 2.236890609449e-01 + 1.842800000000e-09 1.123069911143e-01 + 1.852800000000e-09 -1.627008928154e-02 + 1.862800000000e-09 -1.462445923459e-01 + 1.872800000000e-09 -2.587062409495e-01 + 1.882800000000e-09 -3.352579308068e-01 + 1.892800000000e-09 -3.635848856536e-01 + 1.902800000000e-09 -3.405221523104e-01 + 1.912800000000e-09 -2.709016077932e-01 + 1.922800000000e-09 -1.650600701246e-01 + 1.932800000000e-09 -3.600540334472e-02 + 1.942800000000e-09 1.012073529594e-01 + 1.952800000000e-09 2.279408673934e-01 + 1.962800000000e-09 3.240089749085e-01 + 1.972800000000e-09 3.734060817495e-01 + 1.982800000000e-09 3.692692247948e-01 + 1.992800000000e-09 3.141744722065e-01 + 2.002800000000e-09 2.171376545412e-01 + 2.012800000000e-09 9.078127575214e-02 + 2.022800000000e-09 -5.030383196161e-02 + 2.032800000000e-09 -1.883417259332e-01 + 2.042800000000e-09 -3.023702214815e-01 + 2.052800000000e-09 -3.732533268466e-01 + 2.062800000000e-09 -3.900332845996e-01 + 2.072800000000e-09 -3.521123022363e-01 + 2.082800000000e-09 -2.667206779093e-01 + 2.092800000000e-09 -1.460681676105e-01 + 2.102800000000e-09 -4.458802488335e-03 + 2.112800000000e-09 1.414577224901e-01 + 2.122800000000e-09 2.709546007001e-01 + 2.132800000000e-09 3.626618306851e-01 + 2.142800000000e-09 4.015454764630e-01 + 2.152800000000e-09 3.831990840382e-01 + 2.162800000000e-09 3.124252409049e-01 + 2.172800000000e-09 2.004121313527e-01 + 2.182800000000e-09 6.137175054528e-02 + 2.192800000000e-09 -8.896242812385e-02 + 2.202800000000e-09 -2.308893526109e-01 + 2.212800000000e-09 -3.419026653314e-01 + 2.222800000000e-09 -4.031714378733e-01 + 2.232800000000e-09 -4.060771008908e-01 + 2.242800000000e-09 -3.526975228895e-01 + 2.252800000000e-09 -2.524091617817e-01 + 2.262800000000e-09 -1.189305147869e-01 + 2.272800000000e-09 3.241396735371e-02 + 2.282800000000e-09 1.833248621638e-01 + 2.292800000000e-09 3.112947165559e-01 + 2.302800000000e-09 3.946250134851e-01 + 2.312800000000e-09 4.202054691252e-01 + 2.322800000000e-09 3.864827655205e-01 + 2.332800000000e-09 3.006167611216e-01 + 2.342800000000e-09 1.754959797360e-01 + 2.352800000000e-09 2.629365844288e-02 + 2.362800000000e-09 -1.300248492494e-01 + 2.372800000000e-09 -2.719001696978e-01 + 2.382800000000e-09 -3.759402532125e-01 + 2.392800000000e-09 -4.247015148067e-01 + 2.402800000000e-09 -4.124585425180e-01 + 2.412800000000e-09 -3.438144170811e-01 + 2.422800000000e-09 -2.299997971873e-01 + 2.432800000000e-09 -8.582903732498e-02 + 2.442800000000e-09 7.247111492238e-02 + 2.452800000000e-09 2.248780042397e-01 + 2.462800000000e-09 3.475453276696e-01 + 2.472800000000e-09 4.194241681801e-01 + 2.482800000000e-09 4.301288544802e-01 + 2.492800000000e-09 3.808824169464e-01 + 2.502800000000e-09 2.809130703503e-01 + 2.512800000000e-09 1.444881125297e-01 + 2.522800000000e-09 -1.253107404764e-02 + 2.532800000000e-09 -1.718136371814e-01 + 2.542800000000e-09 -3.101711430307e-01 + 2.552800000000e-09 -4.040995956319e-01 + 2.562800000000e-09 -4.385091423663e-01 + 2.572800000000e-09 -4.106414144299e-01 + 2.582800000000e-09 -3.273628242038e-01 + 2.592800000000e-09 -2.015201499732e-01 + 2.602800000000e-09 -4.862981685419e-02 + 2.612800000000e-09 1.141055787451e-01 + 2.622800000000e-09 2.649300200356e-01 + 2.632800000000e-09 3.792064786424e-01 + 2.642800000000e-09 4.374865540866e-01 + 2.652800000000e-09 4.325059930459e-01 + 2.662800000000e-09 3.680573160250e-01 + 2.672800000000e-09 2.551745750266e-01 + 2.682800000000e-09 1.091526125364e-01 + 2.692800000000e-09 -5.355546829550e-02 + 2.702800000000e-09 -2.130861126566e-01 + 2.712800000000e-09 -3.449651596758e-01 + 2.722800000000e-09 -4.264347529644e-01 + 2.732800000000e-09 -4.453246873631e-01 + 2.742800000000e-09 -4.017703881649e-01 + 2.752800000000e-09 -3.045133473877e-01 + 2.762800000000e-09 -1.679324619323e-01 + 2.772800000000e-09 -8.285473917623e-03 + 2.782800000000e-09 1.562980215830e-01 + 2.792800000000e-09 3.025223359820e-01 + 2.802800000000e-09 4.056694288413e-01 + 2.812800000000e-09 4.488189593091e-01 + 2.822800000000e-09 4.278238297910e-01 + 2.832800000000e-09 3.487548987603e-01 + 2.842800000000e-09 2.242725875071e-01 + 2.852800000000e-09 7.032176828239e-02 + 2.862800000000e-09 -9.596326524693e-02 + 2.872800000000e-09 -2.530861487432e-01 + 2.882800000000e-09 -3.757688997666e-01 + 2.892800000000e-09 -4.430851625781e-01 + 2.902800000000e-09 -4.459871235921e-01 + 2.912800000000e-09 -3.869977109299e-01 + 2.922800000000e-09 -2.768445362651e-01 + 2.932800000000e-09 -1.310371492313e-01 + 2.942800000000e-09 3.380326263983e-02 + 2.952800000000e-09 1.981731247287e-01 + 2.962800000000e-09 3.374436612182e-01 + 2.972800000000e-09 4.275702968466e-01 + 2.982800000000e-09 4.546398656723e-01 + 2.992800000000e-09 4.175656358904e-01 + 3.002800000000e-09 3.246498271808e-01 + 3.012800000000e-09 1.898601853114e-01 + 3.022800000000e-09 2.941777533130e-02 + 3.032800000000e-09 -1.385872560314e-01 + 3.042800000000e-09 -2.910543834608e-01 + 3.052800000000e-09 -4.024756392776e-01 + 3.062800000000e-09 -4.541407828005e-01 + 3.072800000000e-09 -4.404859793210e-01 + 3.082800000000e-09 -3.667502422999e-01 + 3.092800000000e-09 -2.451126864370e-01 + 3.102800000000e-09 -9.169112840623e-02 + 3.112800000000e-09 7.644296819031e-02 + 3.122800000000e-09 2.382598453738e-01 + 3.132800000000e-09 3.682321395545e-01 + 3.142800000000e-09 4.438327127081e-01 + 3.152800000000e-09 4.544971555775e-01 + 3.162800000000e-09 4.019036812626e-01 + 3.172800000000e-09 2.959880137235e-01 + 3.182800000000e-09 1.520506025881e-01 + 3.192800000000e-09 -1.315519910156e-02 + 3.202800000000e-09 -1.806039929181e-01 + 3.212800000000e-09 -3.258740389523e-01 + 3.222800000000e-09 -4.240022196462e-01 + 3.232800000000e-09 -4.593665771975e-01 + 3.242800000000e-09 -4.295062528378e-01 + 3.252800000000e-09 -3.418340584706e-01 + 3.262800000000e-09 -2.099495221168e-01 + 3.272800000000e-09 -5.028016519775e-02 + 3.282800000000e-09 1.194061255892e-01 + 3.292800000000e-09 2.765061996897e-01 + 3.302800000000e-09 3.951294510824e-01 + 3.312800000000e-09 4.550423057885e-01 + 3.322800000000e-09 4.491100297740e-01 + 3.332800000000e-09 3.815336042676e-01 + 3.342800000000e-09 2.639074487548e-01 + 3.352800000000e-09 1.123085093664e-01 + 3.362800000000e-09 -5.625278034606e-02 + 3.372800000000e-09 -2.213316966911e-01 + 3.382800000000e-09 -3.574779324160e-01 + 3.392800000000e-09 -4.410358796373e-01 + 3.402800000000e-09 -4.597454536682e-01 + 3.412800000000e-09 -4.140555472770e-01 + 3.422800000000e-09 -3.131435745935e-01 + 3.432800000000e-09 -1.719981304477e-01 + 3.442800000000e-09 -7.456347188642e-03 + 3.452800000000e-09 1.619384444144e-01 + 3.462800000000e-09 3.121755973591e-01 + 3.472800000000e-09 4.176715471907e-01 + 3.482800000000e-09 4.611913340066e-01 + 3.492800000000e-09 4.388165552092e-01 + 3.502800000000e-09 3.569807819634e-01 + 3.512800000000e-09 2.287947345495e-01 + 3.522800000000e-09 7.075549543791e-02 + 3.532800000000e-09 -9.963983866421e-02 + 3.542800000000e-09 -2.603980993236e-01 + 3.552800000000e-09 -3.855076746848e-01 + 3.562800000000e-09 -4.535695748161e-01 + 3.572800000000e-09 -4.556556129987e-01 + 3.582800000000e-09 -3.946059920447e-01 + 3.592800000000e-09 -2.815021053120e-01 + 3.602800000000e-09 -1.322991860343e-01 + 3.612800000000e-09 3.601808641551e-02 + 3.622800000000e-09 2.035990719556e-01 + 3.632800000000e-09 3.452455022615e-01 + 3.642800000000e-09 4.363867750363e-01 + 3.652800000000e-09 4.630914134452e-01 + 3.662800000000e-09 4.245140308492e-01 + 3.672800000000e-09 3.292511388972e-01 + 3.682800000000e-09 1.916257681554e-01 + 3.692800000000e-09 2.822946085214e-02 + 3.702800000000e-09 -1.425823562409e-01 + 3.712800000000e-09 -2.972905787763e-01 + 3.722800000000e-09 -4.098819992646e-01 + 3.732800000000e-09 -4.614890618223e-01 + 3.742800000000e-09 -4.467473736716e-01 + 3.752800000000e-09 -3.711476731439e-01 + 3.762800000000e-09 -2.471518178539e-01 + 3.772800000000e-09 -9.121597851664e-02 + 3.782800000000e-09 7.935581494084e-02 + 3.792800000000e-09 2.432276793441e-01 + 3.802800000000e-09 3.744398520853e-01 + 3.812800000000e-09 4.504460355719e-01 + 3.822800000000e-09 4.605978322721e-01 + 3.832800000000e-09 4.064517126209e-01 + 3.842800000000e-09 2.983854674100e-01 + 3.852800000000e-09 1.520974657290e-01 + 3.862800000000e-09 -1.542197163856e-02 + 3.872800000000e-09 -1.849058045193e-01 + 3.882800000000e-09 -3.315523322791e-01 + 3.892800000000e-09 -4.300668075557e-01 + 3.902800000000e-09 -4.648618749959e-01 + 3.912800000000e-09 -4.337042390616e-01 + 3.922800000000e-09 -3.442461467300e-01 + 3.932800000000e-09 -2.103375026730e-01 + 3.942800000000e-09 -4.865237496286e-02 + 3.952800000000e-09 1.228517406447e-01 + 3.962800000000e-09 2.812812443106e-01 + 3.972800000000e-09 4.004170080205e-01 + 3.982800000000e-09 4.599602468471e-01 + 3.992800000000e-09 4.529787401664e-01 + 4.002800000000e-09 3.838930720043e-01 + 4.012800000000e-09 2.645113156922e-01 + 4.022800000000e-09 1.111413933258e-01 + 4.032800000000e-09 -5.904369625906e-02 + 4.042800000000e-09 -2.253780865912e-01 + 4.052800000000e-09 -3.621204181117e-01 + 4.062800000000e-09 -4.454702871460e-01 + 4.072800000000e-09 -4.633211212436e-01 + 4.082800000000e-09 -4.163339354597e-01 + 4.092800000000e-09 -3.138828283629e-01 + 4.102800000000e-09 -1.711617011204e-01 + 4.112800000000e-09 -5.164966849806e-03 + 4.122800000000e-09 1.654039270449e-01 + 4.132800000000e-09 3.162875187871e-01 + 4.142800000000e-09 4.217131510606e-01 + 4.152800000000e-09 4.645221221178e-01 + 4.162800000000e-09 4.410092636363e-01 + 4.172800000000e-09 3.578068388630e-01 + 4.182800000000e-09 2.282013674734e-01 + 4.192800000000e-09 6.884224994401e-02 + 4.202800000000e-09 -1.026484494940e-01 + 4.212800000000e-09 -2.640768493746e-01 + 4.222800000000e-09 -3.892297273708e-01 + 4.232800000000e-09 -4.567030651034e-01 + 4.242800000000e-09 -4.577720680306e-01 + 4.252800000000e-09 -3.954853391064e-01 + 4.262800000000e-09 -2.810865251218e-01 + 4.272800000000e-09 -1.306757065043e-01 + 4.282800000000e-09 3.865986007792e-02 + 4.292800000000e-09 2.069139383978e-01 + 4.302800000000e-09 3.486967401475e-01 + 4.312800000000e-09 4.393744821236e-01 + 4.322800000000e-09 4.651800546095e-01 + 4.332800000000e-09 4.254666247556e-01 + 4.342800000000e-09 3.290005218314e-01 + 4.352800000000e-09 1.902451970352e-01 + 4.362800000000e-09 2.588436539890e-02 + 4.372800000000e-09 -1.456096748375e-01 + 4.382800000000e-09 -3.005432042722e-01 + 4.392800000000e-09 -4.127928517400e-01 + 4.402800000000e-09 -4.635971684159e-01 + 4.412800000000e-09 -4.477982209741e-01 + 4.422800000000e-09 -3.710575970817e-01 + 4.432800000000e-09 -2.459758808486e-01 + 4.442800000000e-09 -8.911228571392e-02 + 4.452800000000e-09 8.214805330871e-02 + 4.462800000000e-09 2.463187122203e-01 + 4.472800000000e-09 3.773055761320e-01 + 4.482800000000e-09 4.525934808350e-01 + 4.492800000000e-09 4.617396586560e-01 + 4.502800000000e-09 4.064985469685e-01 + 4.512800000000e-09 2.973843830534e-01 + 4.522800000000e-09 1.501994802996e-01 + 4.532800000000e-09 -1.800290177413e-02 + 4.542800000000e-09 -1.878395686477e-01 + 4.552800000000e-09 -3.343687574671e-01 + 4.562800000000e-09 -4.322741189919e-01 + 4.572800000000e-09 -4.661384606847e-01 + 4.582800000000e-09 -4.339235055172e-01 + 4.592800000000e-09 -3.434358049598e-01 + 4.602800000000e-09 -2.086371583929e-01 + 4.612800000000e-09 -4.625937216720e-02 + 4.622800000000e-09 1.256572140803e-01 + 4.632800000000e-09 2.840816915916e-01 + 4.642800000000e-09 4.027245906015e-01 + 4.652800000000e-09 4.614061781875e-01 + 4.662800000000e-09 4.534007521510e-01 + 4.672800000000e-09 3.832900237663e-01 + 4.682800000000e-09 2.630017213252e-01 + 4.692800000000e-09 1.089205519723e-01 + 4.702800000000e-09 -6.172936557681e-02 + 4.712800000000e-09 -2.281613217844e-01 + 4.722800000000e-09 -3.645330909071e-01 + 4.732800000000e-09 -4.471007140221e-01 + 4.742800000000e-09 -4.639599776723e-01 + 4.752800000000e-09 -4.159485880480e-01 + 4.762800000000e-09 -3.125696922621e-01 + 4.772800000000e-09 -1.691105238657e-01 + 4.782800000000e-09 -2.603684691393e-03 + 4.792800000000e-09 1.681565785648e-01 + 4.802800000000e-09 3.187971992124e-01 + 4.812800000000e-09 4.235398875513e-01 + 4.822800000000e-09 4.653959670138e-01 + 4.832800000000e-09 4.408578641000e-01 + 4.842800000000e-09 3.567071498920e-01 + 4.852800000000e-09 2.263293305346e-01 + 4.862800000000e-09 6.641573344862e-02 + 4.872800000000e-09 -1.053527253629e-01 + 4.882800000000e-09 -2.666644619863e-01 + 4.892800000000e-09 -3.912516361012e-01 + 4.902800000000e-09 -4.578243819878e-01 + 4.912800000000e-09 -4.578712038233e-01 + 4.922800000000e-09 -3.946115597014e-01 + 4.932800000000e-09 -2.793969223462e-01 + 4.942800000000e-09 -1.283886851856e-01 + 4.952800000000e-09 4.129468878808e-02 + 4.962800000000e-09 2.095455727262e-01 + 4.972800000000e-09 3.508880546119e-01 + 4.982800000000e-09 4.407474295700e-01 + 4.992800000000e-09 4.655580392828e-01 + 5.002800000000e-09 4.248516107926e-01 + 5.012800000000e-09 3.275258318163e-01 + 5.022800000000e-09 1.881241751544e-01 + 5.032800000000e-09 2.334640539983e-02 + 5.042800000000e-09 -1.482594569894e-01 + 5.052800000000e-09 -3.028947855418e-01 + 5.062800000000e-09 -4.144329506743e-01 + 5.072800000000e-09 -4.642807432812e-01 + 5.082800000000e-09 -4.474781784948e-01 + 5.092800000000e-09 -3.698298860047e-01 + 5.102800000000e-09 -2.440329656709e-01 + 5.112800000000e-09 -8.668465228179e-02 + 5.122800000000e-09 8.478990663520e-02 + 5.132800000000e-09 2.487989655326e-01 + 5.142800000000e-09 3.791969853372e-01 + 5.152800000000e-09 4.535749055313e-01 + 5.162800000000e-09 4.617046939254e-01 + 5.172800000000e-09 4.055158563968e-01 + 5.182800000000e-09 2.956275486451e-01 + 5.192800000000e-09 1.478994149070e-01 + 5.202800000000e-09 -2.059728565443e-02 + 5.212800000000e-09 -1.903929305617e-01 + 5.222800000000e-09 -3.364642025147e-01 + 5.232800000000e-09 -4.335463782432e-01 + 5.242800000000e-09 -4.664188322976e-01 + 5.252800000000e-09 -4.332259315072e-01 + 5.262800000000e-09 -3.419053965202e-01 + 5.272800000000e-09 -2.064968458796e-01 + 5.282800000000e-09 -4.374455410251e-02 + 5.292800000000e-09 1.282529225505e-01 + 5.302800000000e-09 2.863656497143e-01 + 5.312800000000e-09 4.042957296256e-01 + 5.322800000000e-09 4.620226668407e-01 + 5.332800000000e-09 4.530225055951e-01 + 5.342800000000e-09 3.820210122439e-01 + 5.352800000000e-09 2.610412745402e-01 + 5.362800000000e-09 1.065072388411e-01 + 5.372800000000e-09 -6.433154158614e-02 + 5.382800000000e-09 -2.305923568364e-01 + 5.392800000000e-09 -3.663790185107e-01 + 5.402800000000e-09 -4.480499659093e-01 + 5.412800000000e-09 -4.639096199779e-01 + 5.422800000000e-09 -4.149597505314e-01 + 5.432800000000e-09 -3.108141933420e-01 + 5.442800000000e-09 -1.668253123199e-01 + 5.452800000000e-09 -3.618506917058e-05 + 5.462800000000e-09 1.706848746162e-01 + 5.472800000000e-09 3.208821592183e-01 + 5.482800000000e-09 4.248155012115e-01 + 5.492800000000e-09 4.656842586728e-01 + 5.502800000000e-09 4.401698595632e-01 + 5.512800000000e-09 3.551882433268e-01 + 5.522800000000e-09 2.242040299216e-01 + 5.532800000000e-09 6.392364495261e-02 + 5.542800000000e-09 -1.079281184276e-01 + 5.552800000000e-09 -2.689434840618e-01 + 5.562800000000e-09 -3.928360615698e-01 + 5.572800000000e-09 -4.584561441852e-01 + 5.582800000000e-09 -4.575024640068e-01 + 5.592800000000e-09 -3.933524099047e-01 + 5.602800000000e-09 -2.774502739918e-01 + 5.612800000000e-09 -1.259978089761e-01 + 5.622800000000e-09 4.387146236667e-02 + 5.632800000000e-09 2.119623366055e-01 + 5.642800000000e-09 3.527396510213e-01 + 5.652800000000e-09 4.417159722361e-01 + 5.662800000000e-09 4.655312934773e-01 + 5.672800000000e-09 4.238868057698e-01 + 5.682800000000e-09 3.257997045121e-01 + 5.692800000000e-09 1.858774400811e-01 + 5.702800000000e-09 2.081792963996e-02 + 5.712800000000e-09 -1.507648601345e-01 + 5.722800000000e-09 -3.049859138563e-01 + 5.732800000000e-09 -4.157414205873e-01 + 5.742800000000e-09 -4.646177672856e-01 + 5.752800000000e-09 -4.468460561784e-01 + 5.762800000000e-09 -3.683641495695e-01 + 5.772800000000e-09 -2.419536530265e-01 + 5.782800000000e-09 -8.423338895786e-02 + 5.792800000000e-09 8.734051009756e-02 + 5.802800000000e-09 2.510833651151e-01 + 5.812800000000e-09 3.808194458453e-01 + 5.822800000000e-09 4.542622083011e-01 + 5.832800000000e-09 4.613954514501e-01 + 5.842800000000e-09 4.043139536734e-01 + 5.852800000000e-09 2.937320090099e-01 + 5.862800000000e-09 1.455542382256e-01 + 5.872800000000e-09 -2.314020417758e-02 + 5.882800000000e-09 -1.928030453336e-01 + 5.892800000000e-09 -3.383452689609e-01 + 5.902800000000e-09 -4.345710650730e-01 + 5.912800000000e-09 -4.664586764265e-01 + 5.922800000000e-09 -4.323276804977e-01 + 5.932800000000e-09 -3.402385095793e-01 + 5.942800000000e-09 -2.042987193448e-01 + 5.952800000000e-09 -4.125400619105e-02 + 5.962800000000e-09 1.307444825352e-01 + 5.972800000000e-09 2.884788387204e-01 + 5.982800000000e-09 4.056585396031e-01 + 5.992800000000e-09 4.624292109601e-01 + 6.002800000000e-09 4.524626910091e-01 + 6.012800000000e-09 3.806213948167e-01 + 6.022800000000e-09 2.590158523765e-01 + 6.032800000000e-09 1.040990492803e-01 + 6.042800000000e-09 -6.685943597889e-02 + 6.052800000000e-09 -2.328882320460e-01 + 6.062800000000e-09 -3.680501055686e-01 + 6.072800000000e-09 -4.488158122305e-01 + 6.082800000000e-09 -4.636953739880e-01 + 6.092800000000e-09 -4.138476555227e-01 + 6.102800000000e-09 -3.089902030416e-01 + 6.112800000000e-09 -1.645320957257e-01 + 6.122800000000e-09 2.479430073602e-03 + 6.132800000000e-09 1.731064449962e-01 + 6.142800000000e-09 3.228204962359e-01 + 6.152800000000e-09 4.259304233965e-01 + 6.162800000000e-09 4.658245537500e-01 + 6.172800000000e-09 4.393666149908e-01 + 6.182800000000e-09 3.536001685615e-01 + 6.192800000000e-09 2.220623325123e-01 + 6.202800000000e-09 6.146754863650e-02 + 6.212800000000e-09 -1.104187102753e-01 + 6.222800000000e-09 -2.710994753613e-01 + 6.232800000000e-09 -3.942798137135e-01 + 6.242800000000e-09 -4.589546082066e-01 + 6.252800000000e-09 -4.570271858163e-01 + 6.262800000000e-09 -3.920258117712e-01 + 6.272800000000e-09 -2.754818645304e-01 + 6.282800000000e-09 -1.236311778869e-01 + 6.292800000000e-09 4.638093308446e-02 + 6.302800000000e-09 2.142761424956e-01 + 6.312800000000e-09 3.544683418697e-01 + 6.322800000000e-09 4.425636581446e-01 + 6.332800000000e-09 4.654046036130e-01 + 6.342800000000e-09 4.228555110850e-01 + 6.352800000000e-09 3.240474581992e-01 + 6.362800000000e-09 1.836462881643e-01 + 6.372800000000e-09 1.834379254607e-02 + 6.382800000000e-09 -1.531826480454e-01 + 6.392800000000e-09 -3.069681187252e-01 + 6.402800000000e-09 -4.169386978419e-01 + 6.412800000000e-09 -4.648601385627e-01 + 6.422800000000e-09 -4.461483781397e-01 + 6.432800000000e-09 -3.668690236288e-01 + 6.442800000000e-09 -2.398832576331e-01 + 6.452800000000e-09 -8.182651028951e-02 + 6.462800000000e-09 8.981578726653e-02 + 6.472800000000e-09 2.532706959222e-01 + 6.482800000000e-09 3.823390043543e-01 + 6.492800000000e-09 4.548594696647e-01 + 6.502800000000e-09 4.610222990239e-01 + 6.512800000000e-09 4.030809581009e-01 + 6.522800000000e-09 2.918402478760e-01 + 6.532800000000e-09 1.432454570748e-01 + 6.542800000000e-09 -2.561838176677e-02 + 6.552800000000e-09 -1.951270715808e-01 + 6.562800000000e-09 -3.401316661950e-01 + 6.572800000000e-09 -4.355094657575e-01 + 6.582800000000e-09 -4.664344412479e-01 + 6.592800000000e-09 -4.313952806947e-01 + 6.602800000000e-09 -3.385701641342e-01 + 6.612800000000e-09 -2.021304161624e-01 + 6.622800000000e-09 -3.882013596530e-02 + 6.632800000000e-09 1.331582369472e-01 + 6.642800000000e-09 2.905034651529e-01 + 6.652800000000e-09 4.069373290773e-01 + 6.662800000000e-09 4.627707890205e-01 + 6.672800000000e-09 4.518654250433e-01 + 6.682800000000e-09 3.792152609748e-01 + 6.692800000000e-09 2.570142276227e-01 + 6.702800000000e-09 1.017406186295e-01 + 6.712800000000e-09 -6.931675006813e-02 + 6.722800000000e-09 -2.351010976841e-01 + 6.732800000000e-09 -3.696390292449e-01 + 6.742800000000e-09 -4.495151037922e-01 + 6.752800000000e-09 -4.634399001437e-01 + 6.762800000000e-09 -4.127238575279e-01 + 6.772800000000e-09 -3.071839890543e-01 + 6.782800000000e-09 -1.622823550779e-01 + 6.792800000000e-09 4.930992643047e-03 + 6.802800000000e-09 1.754501732209e-01 + 6.812800000000e-09 3.246784121238e-01 + 6.822800000000e-09 4.269766906034e-01 + 6.832800000000e-09 4.659193307984e-01 + 6.842800000000e-09 4.385462590716e-01 + 6.852800000000e-09 3.520239117253e-01 + 6.862800000000e-09 2.199584430111e-01 + 6.872800000000e-09 5.906989544285e-02 + 6.882800000000e-09 -1.128361296039e-01 + 6.892800000000e-09 -2.731770556609e-01 + 6.902800000000e-09 -3.956532286312e-01 + 6.912800000000e-09 -4.594035096339e-01 + 6.922800000000e-09 -4.565297345580e-01 + 6.932800000000e-09 -3.907054931626e-01 + 6.942800000000e-09 -2.735457413010e-01 + 6.952800000000e-09 -1.213176025072e-01 + 6.962800000000e-09 4.882214803332e-02 + 6.972800000000e-09 2.165143613615e-01 + 6.982800000000e-09 3.561258670933e-01 + 6.992800000000e-09 4.433574595115e-01 + 7.002800000000e-09 4.652494141579e-01 + 7.012800000000e-09 4.218236582066e-01 + 7.022800000000e-09 3.223210559759e-01 + 7.032800000000e-09 1.814627588526e-01 + 7.042800000000e-09 1.593336129655e-02 + 7.052800000000e-09 -1.555272738532e-01 + 7.062800000000e-09 -3.088779556240e-01 + 7.072800000000e-09 -4.180771919395e-01 + 7.082800000000e-09 -4.651388409780e-01 + 7.092800000000e-09 -4.455763669783e-01 + 7.102800000000e-09 -3.654951698942e-01 + 7.112800000000e-09 -2.379101041011e-01 + 7.122800000000e-09 -7.948288991030e-02 + 7.132800000000e-09 9.226781858122e-02 + 7.142800000000e-09 2.554775822718e-01 + 7.152800000000e-09 3.839176733943e-01 + 7.162800000000e-09 4.555458785912e-01 + 7.172800000000e-09 4.607545558630e-01 + 7.182800000000e-09 4.019543655584e-01 + 7.192800000000e-09 2.900415527409e-01 + 7.202800000000e-09 1.410052811994e-01 + 7.212800000000e-09 -2.805902059700e-02 + 7.222800000000e-09 -1.974484979302e-01 + 7.232800000000e-09 -3.419506141139e-01 + 7.242800000000e-09 -4.365102070688e-01 + 7.252800000000e-09 -4.664926036495e-01 + 7.262800000000e-09 -4.305530853915e-01 + 7.272800000000e-09 -3.369872720877e-01 + 7.282800000000e-09 -2.000318255417e-01 + 7.292800000000e-09 -3.643289668601e-02 + 7.302800000000e-09 1.355528654940e-01 + 7.312800000000e-09 2.925387784549e-01 + 7.322800000000e-09 4.082549611902e-01 + 7.332800000000e-09 4.631732041512e-01 + 7.342800000000e-09 4.513416096651e-01 + 7.352800000000e-09 3.778846238545e-01 + 7.362800000000e-09 2.550800646235e-01 + 7.372800000000e-09 9.943358429974e-02 + 7.382800000000e-09 -7.174354259143e-02 + 7.392800000000e-09 -2.373076722811e-01 + 7.402800000000e-09 -3.712467618758e-01 + 7.412800000000e-09 -4.502554937389e-01 + 7.422800000000e-09 -4.632413789284e-01 + 7.432800000000e-09 -4.116643425653e-01 + 7.442800000000e-09 -3.054403320481e-01 + 7.452800000000e-09 -1.600853975466e-01 + 7.462800000000e-09 7.344882945771e-03 + 7.472800000000e-09 1.777750000275e-01 + 7.482800000000e-09 3.265386357026e-01 + 7.492800000000e-09 4.280463642810e-01 + 7.502800000000e-09 4.660552091904e-01 + 7.512800000000e-09 4.377782503164e-01 + 7.522800000000e-09 3.505034949327e-01 + 7.532800000000e-09 2.179063197448e-01 + 7.542800000000e-09 5.671394239587e-02 + 7.552800000000e-09 -1.152257628057e-01 + 7.562800000000e-09 -2.752440240978e-01 + 7.572800000000e-09 -3.970350346697e-01 + 7.582800000000e-09 -4.597372952697e-01 + 7.592800000000e-09 -4.557940216728e-01 + 7.602800000000e-09 -3.892065106878e-01 + 7.612800000000e-09 -2.715340400066e-01 + 7.622800000000e-09 -1.190322689766e-01 + 7.632800000000e-09 5.113494307809e-02 + 7.642800000000e-09 2.185392055905e-01 + 7.652800000000e-09 3.575188411831e-01 + 7.662800000000e-09 4.438820315032e-01 + 7.672800000000e-09 4.648614802257e-01 + 7.682800000000e-09 4.206250712968e-01 + 7.692800000000e-09 3.205126428852e-01 + 7.702800000000e-09 1.792885468332e-01 + 7.712800000000e-09 1.362045032823e-02 + 7.722800000000e-09 -1.576971873349e-01 + 7.732800000000e-09 -3.105608573277e-01 + 7.742800000000e-09 -4.189762813448e-01 + 7.752800000000e-09 -4.651302150631e-01 + 7.762800000000e-09 -4.447074553290e-01 + 7.772800000000e-09 -3.639298551199e-01 + 7.782800000000e-09 -2.358756628647e-01 + 7.792800000000e-09 -7.720970476313e-02 + 7.802800000000e-09 9.452585497623e-02 + 7.812800000000e-09 2.573922491217e-01 + 7.822800000000e-09 3.851545137962e-01 + 7.832800000000e-09 4.559006938369e-01 + 7.842800000000e-09 4.602138824713e-01 + 7.852800000000e-09 4.006461146698e-01 + 7.862800000000e-09 2.881714243932e-01 + 7.872800000000e-09 1.388081578262e-01 + 7.882800000000e-09 -3.034849936682e-02 + 7.892800000000e-09 -1.995286506554e-01 + 7.902800000000e-09 -3.434754355493e-01 + 7.912800000000e-09 -4.372157702973e-01 + 7.922800000000e-09 -4.663003904868e-01 + 7.932800000000e-09 -4.295372306231e-01 + 7.942800000000e-09 -3.353263104314e-01 + 7.952800000000e-09 -1.979567382298e-01 + 7.962800000000e-09 -3.416546522731e-02 + 7.972800000000e-09 1.377449058153e-01 + 7.982800000000e-09 2.943173352715e-01 + 7.992800000000e-09 4.093061094118e-01 + 8.002800000000e-09 4.633437696143e-01 + 8.012800000000e-09 4.506516182935e-01 + 8.022800000000e-09 3.764720018691e-01 + 8.032800000000e-09 2.531552317982e-01 + 8.042800000000e-09 9.722278857999e-02 + 8.052800000000e-09 -7.399807211244e-02 + 8.062800000000e-09 -2.392882377709e-01 + 8.072800000000e-09 -3.726118629890e-01 + 8.082800000000e-09 -4.507789345186e-01 + 8.092800000000e-09 -4.628827360892e-01 + 8.102800000000e-09 -4.105200179923e-01 + 8.112800000000e-09 -3.036947824373e-01 + 8.122800000000e-09 -1.579663313152e-01 + 8.132800000000e-09 9.610802490023e-03 + 8.142800000000e-09 1.798991918369e-01 + 8.152800000000e-09 3.281760299330e-01 + 8.162800000000e-09 4.289102527833e-01 + 8.172800000000e-09 4.660347838355e-01 + 8.182800000000e-09 4.369225450229e-01 + 8.192800000000e-09 3.489717481980e-01 + 8.202800000000e-09 2.159175089225e-01 + 8.212800000000e-09 5.448684232874e-02 + 8.222800000000e-09 -1.174353185928e-01 + 8.232800000000e-09 -2.771047745347e-01 + 8.242800000000e-09 -3.982198825161e-01 + 8.252800000000e-09 -4.600636000710e-01 + 8.262800000000e-09 -4.552568248015e-01 + 8.272800000000e-09 -3.879242229076e-01 + 8.282800000000e-09 -2.697030590792e-01 + 8.292800000000e-09 -1.168758525617e-01 + 8.302800000000e-09 5.338366944069e-02 + 8.312800000000e-09 2.205732795323e-01 + 8.322800000000e-09 3.589933183607e-01 + 8.332800000000e-09 4.445464460845e-01 + 8.342800000000e-09 4.646488983863e-01 + 8.352800000000e-09 4.196117780131e-01 + 8.362800000000e-09 3.188740682032e-01 + 8.372800000000e-09 1.772479122049e-01 + 8.382800000000e-09 1.139172259245e-02 + 8.392800000000e-09 -1.598413962457e-01 + 8.402800000000e-09 -3.122809413855e-01 + 8.412800000000e-09 -4.199692433012e-01 + 8.422800000000e-09 -4.652565250693e-01 + 8.432800000000e-09 -4.439936852692e-01 + 8.442800000000e-09 -3.625180526793e-01 + 8.452800000000e-09 -2.339731723419e-01 + 8.462800000000e-09 -7.503276446744e-02 + 8.472800000000e-09 9.673315187073e-02 + 8.482800000000e-09 2.593086444088e-01 + 8.492800000000e-09 3.864457691449e-01 + 8.502800000000e-09 4.563534630504e-01 + 8.512800000000e-09 4.597989997198e-01 + 8.522800000000e-09 3.994727095963e-01 + 8.532800000000e-09 2.864269749325e-01 + 8.542800000000e-09 1.367125154605e-01 + 8.552800000000e-09 -3.257061101665e-02 + 8.562800000000e-09 -2.015837054158e-01 + 8.572800000000e-09 -3.450215936952e-01 + 8.582800000000e-09 -4.379856864374e-01 + 8.592800000000e-09 -4.662047667963e-01 + 8.602800000000e-09 -4.286353841505e-01 + 8.612800000000e-09 -3.337805201738e-01 + 8.622800000000e-09 -1.959831765058e-01 + 8.632800000000e-09 -3.197535139364e-02 + 8.642800000000e-09 1.398919612761e-01 + 8.652800000000e-09 2.960898915869e-01 + 8.662800000000e-09 4.103915652083e-01 + 8.672800000000e-09 4.635831044197e-01 + 8.682800000000e-09 4.500536232522e-01 + 8.692800000000e-09 3.751610580261e-01 + 8.702800000000e-09 2.513280001238e-01 + 8.712800000000e-09 9.509424816947e-02 + 8.722800000000e-09 -7.619394690571e-02 + 8.732800000000e-09 -2.412413011971e-01 + 8.742800000000e-09 -3.739853967845e-01 + 8.752800000000e-09 -4.515924565928e-01 + 8.762800000000e-09 -4.631105045002e-01 + 8.772800000000e-09 -4.099078657425e-01 + 8.782800000000e-09 -3.022881356787e-01 + 8.792800000000e-09 -1.559709657708e-01 + 8.802800000000e-09 1.197871883668e-02 + 8.812800000000e-09 1.823383802375e-01 + 8.822800000000e-09 3.302931896988e-01 + 8.832800000000e-09 4.303354813804e-01 + 8.842800000000e-09 4.665677644958e-01 + 8.852800000000e-09 4.365369125085e-01 + 8.862800000000e-09 3.477682608091e-01 + 8.872800000000e-09 2.140787916860e-01 + 8.882800000000e-09 5.221959121681e-02 + 8.892800000000e-09 -1.198684724487e-01 + 8.902800000000e-09 -2.793413534399e-01 + 8.912800000000e-09 -3.998684941136e-01 + 8.922800000000e-09 -4.608641619409e-01 + 8.932800000000e-09 -4.551366954360e-01 + 8.942800000000e-09 -3.869494452863e-01 + 8.952800000000e-09 -2.680339955728e-01 + 8.962800000000e-09 -1.147213970221e-01 + 8.972800000000e-09 5.578828565161e-02 + 8.982800000000e-09 2.229000091014e-01 + 8.992800000000e-09 3.608499333585e-01 + 9.002800000000e-09 4.456161876907e-01 + 9.012800000000e-09 4.648043193361e-01 + 9.022800000000e-09 4.188812100313e-01 + 9.032800000000e-09 3.173997609688e-01 + 9.042800000000e-09 1.752362948116e-01 + 9.052800000000e-09 9.056465681611e-03 + 9.062800000000e-09 -1.622137306944e-01 + 9.072800000000e-09 -3.143159311894e-01 + 9.082800000000e-09 -4.213093287170e-01 + 9.092800000000e-09 -4.657067244379e-01 + 9.102800000000e-09 -4.435369681284e-01 + 9.112800000000e-09 -3.612657466889e-01 + 9.122800000000e-09 -2.321158296734e-01 + 9.132800000000e-09 -7.278408062904e-02 + 9.142800000000e-09 9.911940647607e-02 + 9.152800000000e-09 2.614857464959e-01 + 9.162800000000e-09 3.880351399399e-01 + 9.172800000000e-09 4.570914792723e-01 + 9.182800000000e-09 4.596160099208e-01 + 9.192800000000e-09 3.984500789332e-01 + 9.202800000000e-09 2.847359344551e-01 + 9.212800000000e-09 1.345691520248e-01 + 9.222800000000e-09 -3.493477546788e-02 + 9.232800000000e-09 -2.038558675102e-01 + 9.242800000000e-09 -3.468247587920e-01 + 9.252800000000e-09 -4.390079871600e-01 + 9.262800000000e-09 -4.663194600172e-01 + 9.272800000000e-09 -4.278753653082e-01 + 9.282800000000e-09 -3.322927220008e-01 + 9.292800000000e-09 -1.939790513442e-01 + 9.302800000000e-09 -2.967083863064e-02 + 9.312800000000e-09 1.422226170142e-01 + 9.322800000000e-09 2.980872016207e-01 + 9.332800000000e-09 4.117039503009e-01 + 9.342800000000e-09 4.640154495192e-01 + 9.352800000000e-09 4.495896153609e-01 + 9.362800000000e-09 3.739102894832e-01 + 9.372800000000e-09 2.494820017508e-01 + 9.382800000000e-09 9.287158089721e-02 + 9.392800000000e-09 -7.854774721359e-02 + 9.402800000000e-09 -2.433934935986e-01 + 9.412800000000e-09 -3.755654262564e-01 + 9.422800000000e-09 -4.523306020081e-01 + 9.432800000000e-09 -4.629318121162e-01 + 9.442800000000e-09 -4.088944681154e-01 + 9.452800000000e-09 -3.006131399513e-01 + 9.462800000000e-09 -1.538538033887e-01 + 9.472800000000e-09 1.431016572078e-02 + 9.482800000000e-09 1.845853524582e-01 + 9.492800000000e-09 3.320901068328e-01 + 9.502800000000e-09 4.313682685653e-01 + 9.512800000000e-09 4.667007219230e-01 + 9.522800000000e-09 4.357990527528e-01 + 9.532800000000e-09 3.463047619787e-01 + 9.542800000000e-09 2.121011810256e-01 + 9.552800000000e-09 4.994574015244e-02 + 9.562800000000e-09 -1.221755250572e-01 + 9.572800000000e-09 -2.813345390121e-01 + 9.582800000000e-09 -4.011976939691e-01 + 9.592800000000e-09 -4.613241613861e-01 + 9.602800000000e-09 -4.547046959353e-01 + 9.612800000000e-09 -3.857312315368e-01 + 9.622800000000e-09 -2.662188447241e-01 + 9.632800000000e-09 -1.125308418547e-01 + 9.642800000000e-09 5.811613266870e-02 + 9.652800000000e-09 2.250456324980e-01 + 9.662800000000e-09 3.624489148595e-01 + 9.672800000000e-09 4.463975513791e-01 + 9.682800000000e-09 4.646852332412e-01 + 9.692800000000e-09 4.179266651016e-01 + 9.702800000000e-09 3.154839613510e-01 + 9.712800000000e-09 1.725777900289e-01 + 9.722800000000e-09 6.253628647848e-03 + 9.732800000000e-09 -1.647794164684e-01 + 9.742800000000e-09 -3.162350021308e-01 + 9.752800000000e-09 -4.222435254205e-01 + 9.762800000000e-09 -4.655351629575e-01 + 9.772800000000e-09 -4.423393851837e-01 + 9.782800000000e-09 -3.592595442771e-01 + 9.792800000000e-09 -2.295868870697e-01 + 9.802800000000e-09 -7.001555229933e-02 + 9.812800000000e-09 1.018172202550e-01 + 9.822800000000e-09 2.637151159726e-01 + 9.832800000000e-09 3.894058063411e-01 + 9.842800000000e-09 4.573804246669e-01 + 9.852800000000e-09 4.588302271332e-01 + 9.862800000000e-09 3.967598241271e-01 + 9.872800000000e-09 2.824022778434e-01 + 9.882800000000e-09 1.318801482237e-01 + 9.892800000000e-09 -3.769121150598e-02 + 9.902800000000e-09 -2.063128036268e-01 + 9.912800000000e-09 -3.485693523865e-01 + 9.922800000000e-09 -4.397407193722e-01 + 9.932800000000e-09 -4.659661993700e-01 + 9.942800000000e-09 -4.265430171005e-01 + 9.952800000000e-09 -3.302090287242e-01 + 9.962800000000e-09 -1.914306825298e-01 + 9.972800000000e-09 -2.692694651887e-02 + 9.982800000000e-09 1.448342393448e-01 + 9.992800000000e-09 3.001601116225e-01 + 1.000000000000e-08 3.874460036265e-01 diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/conditions.yaml new file mode 100644 index 00000000..57678b46 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 13 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_13 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/LC_Oscillator_tb.sch new file mode 100644 index 00000000..e2272eb3 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/LC_Oscillator_tb_14.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 27 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/conditions.yaml new file mode 100644 index 00000000..044497be --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 14 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_14 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/LC_Oscillator_tb.sch new file mode 100644 index 00000000..782eef46 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/LC_Oscillator_tb_15.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 27 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/conditions.yaml new file mode 100644 index 00000000..bd8fcce6 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 15 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_15 +temperature: '27' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/LC_Oscillator_tb.sch new file mode 100644 index 00000000..cff378d0 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/LC_Oscillator_tb_16.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 27 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/LC_Oscillator_tb_16.data b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/LC_Oscillator_tb_16.data new file mode 100644 index 00000000..5e709abb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/LC_Oscillator_tb_16.data @@ -0,0 +1,985 @@ + 1.628000000000e-10 7.664266602321e-03 + 1.728000000000e-10 -6.974544317808e-03 + 1.828000000000e-10 -2.114756544424e-02 + 1.928000000000e-10 -3.284406071824e-02 + 2.028000000000e-10 -4.032773586307e-02 + 2.128000000000e-10 -4.239749434108e-02 + 2.228000000000e-10 -3.857776873058e-02 + 2.328000000000e-10 -2.920629589559e-02 + 2.428000000000e-10 -1.540702159534e-02 + 2.528000000000e-10 1.041489081761e-03 + 2.628000000000e-10 1.792575498155e-02 + 2.728000000000e-10 3.288429795724e-02 + 2.828000000000e-10 4.373560897033e-02 + 2.928000000000e-10 4.880204848639e-02 + 3.028000000000e-10 4.717348869070e-02 + 3.128000000000e-10 3.885903693432e-02 + 3.228000000000e-10 2.480445762043e-02 + 3.328000000000e-10 6.781733187206e-03 + 3.428000000000e-10 -1.282614909074e-02 + 3.528000000000e-10 -3.132174567024e-02 + 3.628000000000e-10 -4.605713095944e-02 + 3.728000000000e-10 -5.481746903823e-02 + 3.828000000000e-10 -5.615982047639e-02 + 3.928000000000e-10 -4.965188382529e-02 + 4.028000000000e-10 -3.595215720792e-02 + 4.128000000000e-10 -1.673691971372e-02 + 4.228000000000e-10 5.500696985542e-03 + 4.328000000000e-10 2.775268286082e-02 + 4.428000000000e-10 4.688247109391e-02 + 4.528000000000e-10 6.006744662961e-02 + 4.628000000000e-10 6.523356378563e-02 + 4.728000000000e-10 6.139139325967e-02 + 4.828000000000e-10 4.880039629003e-02 + 4.928000000000e-10 2.894364073750e-02 + 5.028000000000e-10 4.345050716460e-03 + 5.128000000000e-10 -2.172983093548e-02 + 5.228000000000e-10 -4.567150116468e-02 + 5.328000000000e-10 -6.401176797791e-02 + 5.428000000000e-10 -7.394670918179e-02 + 5.528000000000e-10 -7.379265490690e-02 + 5.628000000000e-10 -6.326356189785e-02 + 5.728000000000e-10 -4.351880784432e-02 + 5.828000000000e-10 -1.701020498036e-02 + 5.928000000000e-10 1.281021226036e-02 + 6.028000000000e-10 4.188974078105e-02 + 6.128000000000e-10 6.608721197710e-02 + 6.228000000000e-10 8.177702060135e-02 + 6.328000000000e-10 8.644051155215e-02 + 6.428000000000e-10 7.908925464962e-02 + 6.528000000000e-10 6.041535027894e-02 + 6.628000000000e-10 3.267884173800e-02 + 6.728000000000e-10 -5.798664902144e-04 + 6.828000000000e-10 -3.493547918858e-02 + 6.928000000000e-10 -6.559099235606e-02 + 7.028000000000e-10 -8.803481909377e-02 + 7.128000000000e-10 -9.876817336701e-02 + 7.228000000000e-10 -9.591140350770e-02 + 7.328000000000e-10 -7.950578518610e-02 + 7.428000000000e-10 -5.147009152942e-02 + 7.528000000000e-10 -1.531684173757e-02 + 7.628000000000e-10 2.424811957827e-02 + 7.728000000000e-10 6.179110201947e-02 + 7.828000000000e-10 9.187469174175e-02 + 7.928000000000e-10 1.099516053685e-01 + 8.028000000000e-10 1.130739487372e-01 + 8.128000000000e-10 1.003962549740e-01 + 8.228000000000e-10 7.330798518648e-02 + 8.328000000000e-10 3.512423867735e-02 + 8.428000000000e-10 -9.274625875989e-03 + 8.528000000000e-10 -5.390697141546e-02 + 8.628000000000e-10 -9.244789408516e-02 + 8.728000000000e-10 -1.191674535876e-01 + 8.828000000000e-10 -1.298510044272e-01 + 8.928000000000e-10 -1.225344169196e-01 + 9.028000000000e-10 -9.786275760819e-02 + 9.128000000000e-10 -5.881616105577e-02 + 9.228000000000e-10 -1.029207547875e-02 + 9.328000000000e-10 4.132897369431e-02 + 9.428000000000e-10 8.888651327740e-02 + 9.528000000000e-10 1.253889724911e-01 + 9.628000000000e-10 1.452093609654e-01 + 9.728000000000e-10 1.450682052188e-01 + 9.828000000000e-10 1.245781704535e-01 + 9.928000000000e-10 8.617600784123e-02 + 1.002800000000e-09 3.463202806769e-02 + 1.012800000000e-09 -2.344510579714e-02 + 1.022800000000e-09 -8.020764363171e-02 + 1.032800000000e-09 -1.274658508810e-01 + 1.042800000000e-09 -1.580404244940e-01 + 1.052800000000e-09 -1.670300971805e-01 + 1.062800000000e-09 -1.527069844375e-01 + 1.072800000000e-09 -1.167804640828e-01 + 1.082800000000e-09 -6.370309413465e-02 + 1.092800000000e-09 -8.920953624081e-05 + 1.102800000000e-09 6.568216528916e-02 + 1.112800000000e-09 1.243418998840e-01 + 1.122800000000e-09 1.670422612764e-01 + 1.132800000000e-09 1.870694724273e-01 + 1.142800000000e-09 1.811158310476e-01 + 1.152800000000e-09 1.497497435913e-01 + 1.162800000000e-09 9.693741157335e-02 + 1.172800000000e-09 2.922969866950e-02 + 1.182800000000e-09 -4.473844788247e-02 + 1.192800000000e-09 -1.148677792510e-01 + 1.202800000000e-09 -1.707679977764e-01 + 1.212800000000e-09 -2.037283948173e-01 + 1.222800000000e-09 -2.084426151566e-01 + 1.232800000000e-09 -1.839595240519e-01 + 1.242800000000e-09 -1.335312401679e-01 + 1.252800000000e-09 -6.353355561581e-02 + 1.262800000000e-09 1.733064411967e-02 + 1.272800000000e-09 9.843321332346e-02 + 1.282800000000e-09 1.680706361495e-01 + 1.292800000000e-09 2.154092918623e-01 + 1.302800000000e-09 2.329029047876e-01 + 1.312800000000e-09 2.178001862749e-01 + 1.322800000000e-09 1.722265042865e-01 + 1.332800000000e-09 1.021734355209e-01 + 1.342800000000e-09 1.629843635529e-02 + 1.352800000000e-09 -7.455684506767e-02 + 1.362800000000e-09 -1.577576228446e-01 + 1.372800000000e-09 -2.205495839327e-01 + 1.382800000000e-09 -2.529161809240e-01 + 1.392800000000e-09 -2.497775003305e-01 + 1.402800000000e-09 -2.117131876971e-01 + 1.412800000000e-09 -1.440955086652e-01 + 1.422800000000e-09 -5.542154472344e-02 + 1.432800000000e-09 4.345076476820e-02 + 1.442800000000e-09 1.393839360236e-01 + 1.452800000000e-09 2.180496048963e-01 + 1.462800000000e-09 2.668397184268e-01 + 1.472800000000e-09 2.780066242598e-01 + 1.482800000000e-09 2.501641977977e-01 + 1.492800000000e-09 1.876561957236e-01 + 1.502800000000e-09 9.875006011794e-02 + 1.512800000000e-09 -5.784532915443e-03 + 1.522800000000e-09 -1.127606803276e-01 + 1.532800000000e-09 -2.068242434734e-01 + 1.542800000000e-09 -2.730320121326e-01 + 1.552800000000e-09 -3.006975387053e-01 + 1.562800000000e-09 -2.858568178283e-01 + 1.572800000000e-09 -2.313000787818e-01 + 1.582800000000e-09 -1.448704090382e-01 + 1.592800000000e-09 -3.727941563281e-02 + 1.602800000000e-09 7.849587750230e-02 + 1.612800000000e-09 1.867055607283e-01 + 1.622800000000e-09 2.705299317491e-01 + 1.632800000000e-09 3.162286206003e-01 + 1.642800000000e-09 3.168171516729e-01 + 1.652800000000e-09 2.731101042104e-01 + 1.662800000000e-09 1.920723516103e-01 + 1.672800000000e-09 8.428100970002e-02 + 1.682800000000e-09 -3.753673335121e-02 + 1.692800000000e-09 -1.578099622917e-01 + 1.702800000000e-09 -2.585369979336e-01 + 1.712800000000e-09 -3.232027324066e-01 + 1.722800000000e-09 -3.414591046118e-01 + 1.732800000000e-09 -3.114930350654e-01 + 1.742800000000e-09 -2.388176747508e-01 + 1.752800000000e-09 -1.336964090077e-01 + 1.762800000000e-09 -8.733483456430e-03 + 1.772800000000e-09 1.210033381107e-01 + 1.782800000000e-09 2.371327506751e-01 + 1.792800000000e-09 3.208920476278e-01 + 1.802800000000e-09 3.584092949943e-01 + 1.812800000000e-09 3.446391005727e-01 + 1.822800000000e-09 2.832016365155e-01 + 1.832800000000e-09 1.836883050945e-01 + 1.842800000000e-09 5.862426064238e-02 + 1.852800000000e-09 -7.750082053694e-02 + 1.862800000000e-09 -2.066774971787e-01 + 1.872800000000e-09 -3.086857481854e-01 + 1.882800000000e-09 -3.663914903807e-01 + 1.892800000000e-09 -3.710558466007e-01 + 1.902800000000e-09 -3.237924309806e-01 + 1.912800000000e-09 -2.328813386425e-01 + 1.922800000000e-09 -1.106381337489e-01 + 1.932800000000e-09 2.878548575196e-02 + 1.942800000000e-09 1.682086866608e-01 + 1.952800000000e-09 2.868728145995e-01 + 1.962800000000e-09 3.649358996569e-01 + 1.972800000000e-09 3.897572147684e-01 + 1.982800000000e-09 3.591861155467e-01 + 1.992800000000e-09 2.796352916362e-01 + 2.002800000000e-09 1.630170370466e-01 + 2.012800000000e-09 2.337676217078e-02 + 2.022800000000e-09 -1.231036509093e-01 + 2.032800000000e-09 -2.560309418385e-01 + 2.042800000000e-09 -3.536903114402e-01 + 2.052800000000e-09 -3.996020287209e-01 + 2.062800000000e-09 -3.878314304887e-01 + 2.072800000000e-09 -3.224535388574e-01 + 2.082800000000e-09 -2.142870553244e-01 + 2.092800000000e-09 -7.737119699997e-02 + 2.102800000000e-09 7.287682892676e-02 + 2.112800000000e-09 2.171249553235e-01 + 2.122800000000e-09 3.327777596836e-01 + 2.132800000000e-09 4.000610008765e-01 + 2.142800000000e-09 4.088456594564e-01 + 2.152800000000e-09 3.602345539433e-01 + 2.162800000000e-09 2.633195865932e-01 + 2.172800000000e-09 1.318307185607e-01 + 2.182800000000e-09 -1.912070909136e-02 + 2.192800000000e-09 -1.715400835152e-01 + 2.202800000000e-09 -3.029500586447e-01 + 2.212800000000e-09 -3.911015042984e-01 + 2.222800000000e-09 -4.216049696389e-01 + 2.232800000000e-09 -3.919070066363e-01 + 2.242800000000e-09 -3.088411752976e-01 + 2.252800000000e-09 -1.853441272068e-01 + 2.262800000000e-09 -3.656214986606e-02 + 2.272800000000e-09 1.207511756771e-01 + 2.282800000000e-09 2.650950743176e-01 + 2.292800000000e-09 3.727807105463e-01 + 2.302800000000e-09 4.254246312199e-01 + 2.312800000000e-09 4.163184157729e-01 + 2.322800000000e-09 3.496649503580e-01 + 2.332800000000e-09 2.368645519684e-01 + 2.342800000000e-09 9.291994465891e-02 + 2.352800000000e-09 -6.612811890161e-02 + 2.362800000000e-09 -2.202857443065e-01 + 2.372800000000e-09 -3.455061869126e-01 + 2.382800000000e-09 -4.201535242629e-01 + 2.392800000000e-09 -4.329865849042e-01 + 2.402800000000e-09 -3.848495066174e-01 + 2.412800000000e-09 -2.851617245890e-01 + 2.422800000000e-09 -1.485014539146e-01 + 2.432800000000e-09 9.324769976178e-03 + 2.442800000000e-09 1.699782736860e-01 + 2.452800000000e-09 3.100451579339e-01 + 2.462800000000e-09 4.056736387126e-01 + 2.472800000000e-09 4.411426430852e-01 + 2.482800000000e-09 4.133919248179e-01 + 2.492800000000e-09 3.292952328390e-01 + 2.502800000000e-09 2.022993783505e-01 + 2.512800000000e-09 4.833020548908e-02 + 2.522800000000e-09 -1.155888851000e-01 + 2.532800000000e-09 -2.674485143838e-01 + 2.542800000000e-09 -3.823404871336e-01 + 2.552800000000e-09 -4.404964157852e-01 + 2.562800000000e-09 -4.344628836688e-01 + 2.572800000000e-09 -3.682243644064e-01 + 2.582800000000e-09 -2.534237131145e-01 + 2.592800000000e-09 -1.057595251374e-01 + 2.602800000000e-09 5.838261382967e-02 + 2.612800000000e-09 2.187978784978e-01 + 2.622800000000e-09 3.506394600823e-01 + 2.632800000000e-09 4.310000029342e-01 + 2.642800000000e-09 4.476945622936e-01 + 2.652800000000e-09 4.011687573087e-01 + 2.662800000000e-09 3.008573660759e-01 + 2.672800000000e-09 1.617585012236e-01 + 2.682800000000e-09 1.611849622618e-04 + 2.692800000000e-09 -1.655098486753e-01 + 2.702800000000e-09 -3.114104966265e-01 + 2.712800000000e-09 -4.126659337419e-01 + 2.722800000000e-09 -4.525049113337e-01 + 2.732800000000e-09 -4.272972047406e-01 + 2.742800000000e-09 -3.438442734766e-01 + 2.752800000000e-09 -2.156819288947e-01 + 2.762800000000e-09 -5.906555644004e-02 + 2.772800000000e-09 1.087763002158e-01 + 2.782800000000e-09 2.656499907499e-01 + 2.792800000000e-09 3.859312869327e-01 + 2.802800000000e-09 4.488001286004e-01 + 2.812800000000e-09 4.460621523562e-01 + 2.822800000000e-09 3.813460165413e-01 + 2.832800000000e-09 2.662910556080e-01 + 2.842800000000e-09 1.169671943001e-01 + 2.852800000000e-09 -5.001392069462e-02 + 2.862800000000e-09 -2.144646846525e-01 + 2.872800000000e-09 -3.511395890654e-01 + 2.882800000000e-09 -4.362317904681e-01 + 2.892800000000e-09 -4.566927898993e-01 + 2.902800000000e-09 -4.124833675778e-01 + 2.912800000000e-09 -3.128692252496e-01 + 2.922800000000e-09 -1.730045366281e-01 + 2.932800000000e-09 -9.505140230597e-03 + 2.942800000000e-09 1.592535155313e-01 + 2.952800000000e-09 3.092971242634e-01 + 2.962800000000e-09 4.150891438795e-01 + 2.972800000000e-09 4.589689589988e-01 + 2.982800000000e-09 4.366863947835e-01 + 2.992800000000e-09 3.547147651727e-01 + 3.002800000000e-09 2.265824912242e-01 + 3.012800000000e-09 6.887583057600e-02 + 3.022800000000e-09 -1.011638219780e-01 + 3.032800000000e-09 -2.614034489871e-01 + 3.042800000000e-09 -3.858292553354e-01 + 3.052800000000e-09 -4.528064415839e-01 + 3.062800000000e-09 -4.534109357767e-01 + 3.072800000000e-09 -3.908458440891e-01 + 3.082800000000e-09 -2.765999577696e-01 + 3.092800000000e-09 -1.269020842694e-01 + 3.102800000000e-09 4.149314397079e-02 + 3.112800000000e-09 2.085376363002e-01 + 3.122800000000e-09 3.488415841470e-01 + 3.132800000000e-09 4.379544107666e-01 + 3.142800000000e-09 4.620317252590e-01 + 3.152800000000e-09 4.205054483539e-01 + 3.162800000000e-09 3.223689526791e-01 + 3.172800000000e-09 1.827689108086e-01 + 3.182800000000e-09 1.853345284365e-02 + 3.192800000000e-09 -1.520797304567e-01 + 3.202800000000e-09 -3.051442690347e-01 + 3.212800000000e-09 -4.147052910464e-01 + 3.222800000000e-09 -4.623335988615e-01 + 3.232800000000e-09 -4.431393275110e-01 + 3.242800000000e-09 -3.632010234414e-01 + 3.252800000000e-09 -2.359223026521e-01 + 3.262800000000e-09 -7.807049691850e-02 + 3.272800000000e-09 9.313914251019e-02 + 3.282800000000e-09 2.557467957936e-01 + 3.292800000000e-09 3.835492530672e-01 + 3.302800000000e-09 4.542504604591e-01 + 3.312800000000e-09 4.582045173692e-01 + 3.322800000000e-09 3.981483291691e-01 + 3.332800000000e-09 2.853354312558e-01 + 3.342800000000e-09 1.360234927873e-01 + 3.352800000000e-09 -3.294019005911e-02 + 3.362800000000e-09 -2.017100778923e-01 + 3.372800000000e-09 -3.449030071487e-01 + 3.382800000000e-09 -4.375891602828e-01 + 3.392800000000e-09 -4.651743116581e-01 + 3.402800000000e-09 -4.265346037418e-01 + 3.412800000000e-09 -3.303309767562e-01 + 3.422800000000e-09 -1.916061062695e-01 + 3.432800000000e-09 -2.732465644289e-02 + 3.442800000000e-09 1.444035893214e-01 + 3.452800000000e-09 2.998033828982e-01 + 3.462800000000e-09 4.126541133823e-01 + 3.472800000000e-09 4.637876124191e-01 + 3.482800000000e-09 4.477002380637e-01 + 3.492800000000e-09 3.701243619657e-01 + 3.502800000000e-09 2.442324974382e-01 + 3.512800000000e-09 8.684260108371e-02 + 3.522800000000e-09 -8.487364566079e-02 + 3.532800000000e-09 -2.491966099119e-01 + 3.542800000000e-09 -3.798657226946e-01 + 3.552800000000e-09 -4.540323660650e-01 + 3.562800000000e-09 -4.613343744426e-01 + 3.572800000000e-09 -4.040144321454e-01 + 3.582800000000e-09 -2.930362781147e-01 + 3.592800000000e-09 -1.446006136325e-01 + 3.602800000000e-09 2.438587753254e-02 + 3.612800000000e-09 1.943139820106e-01 + 3.622800000000e-09 3.399043623507e-01 + 3.632800000000e-09 4.358634065484e-01 + 3.642800000000e-09 4.668816726500e-01 + 3.652800000000e-09 4.312588863977e-01 + 3.662800000000e-09 3.372833117607e-01 + 3.672800000000e-09 1.998312839179e-01 + 3.682800000000e-09 3.594997946511e-02 + 3.692800000000e-09 -1.364106268276e-01 + 3.702800000000e-09 -2.936916332386e-01 + 3.712800000000e-09 -4.095109241493e-01 + 3.722800000000e-09 -4.640662654368e-01 + 3.732800000000e-09 -4.511958137075e-01 + 3.742800000000e-09 -3.761846317735e-01 + 3.752800000000e-09 -2.519595393049e-01 + 3.762800000000e-09 -9.535406533175e-02 + 3.772800000000e-09 7.651004765035e-02 + 3.782800000000e-09 2.421843070969e-01 + 3.792800000000e-09 3.754261881126e-01 + 3.802800000000e-09 4.529041102811e-01 + 3.812800000000e-09 4.635441226783e-01 + 3.822800000000e-09 4.090778439774e-01 + 3.832800000000e-09 3.001486485868e-01 + 3.842800000000e-09 1.528511819675e-01 + 3.852800000000e-09 -1.586324157163e-02 + 3.862800000000e-09 -1.866320197702e-01 + 3.872800000000e-09 -3.343341500939e-01 + 3.882800000000e-09 -4.333850221745e-01 + 3.892800000000e-09 -4.677859670417e-01 + 3.902800000000e-09 -4.352457792003e-01 + 3.912800000000e-09 -3.437799350642e-01 + 3.922800000000e-09 -2.079551509251e-01 + 3.932800000000e-09 -4.468825070859e-02 + 3.942800000000e-09 1.281161217310e-01 + 3.952800000000e-09 2.871187079470e-01 + 3.962800000000e-09 4.058269541111e-01 + 3.972800000000e-09 4.638234490004e-01 + 3.982800000000e-09 4.542652737270e-01 + 3.992800000000e-09 3.819660578109e-01 + 4.002800000000e-09 2.595816254746e-01 + 4.012800000000e-09 1.039265569504e-01 + 4.022800000000e-09 -6.791758892401e-02 + 4.032800000000e-09 -2.347914757526e-01 + 4.042800000000e-09 -3.705114479017e-01 + 4.052800000000e-09 -4.512965576676e-01 + 4.062800000000e-09 -4.653460992128e-01 + 4.072800000000e-09 -4.138580365691e-01 + 4.082800000000e-09 -3.071299223111e-01 + 4.092800000000e-09 -1.611213287244e-01 + 4.102800000000e-09 7.173297645594e-03 + 4.112800000000e-09 1.786392332344e-01 + 4.122800000000e-09 3.283477267047e-01 + 4.132800000000e-09 4.304615590181e-01 + 4.142800000000e-09 4.682964590505e-01 + 4.152800000000e-09 4.389439124752e-01 + 4.162800000000e-09 3.499867364351e-01 + 4.172800000000e-09 2.157750921258e-01 + 4.182800000000e-09 5.328439761921e-02 + 4.192800000000e-09 -1.197403061708e-01 + 4.202800000000e-09 -2.802382298159e-01 + 4.212800000000e-09 -4.016597574593e-01 + 4.222800000000e-09 -4.631024539093e-01 + 4.232800000000e-09 -4.569703440817e-01 + 4.242800000000e-09 -3.874490503155e-01 + 4.252800000000e-09 -2.669635893864e-01 + 4.262800000000e-09 -1.123347304930e-01 + 4.272800000000e-09 5.938966192370e-02 + 4.282800000000e-09 2.273374185002e-01 + 4.292800000000e-09 3.654122994943e-01 + 4.302800000000e-09 4.494212444884e-01 + 4.312800000000e-09 4.668462653350e-01 + 4.322800000000e-09 4.183460001664e-01 + 4.332800000000e-09 3.138634623558e-01 + 4.342800000000e-09 1.692051650577e-01 + 4.352800000000e-09 1.410593859758e-03 + 4.362800000000e-09 -1.706423959182e-01 + 4.372800000000e-09 -3.222345887895e-01 + 4.382800000000e-09 -4.273141183177e-01 + 4.392800000000e-09 -4.685336525990e-01 + 4.402800000000e-09 -4.423622873729e-01 + 4.412800000000e-09 -3.559440647968e-01 + 4.422800000000e-09 -2.234012093258e-01 + 4.432800000000e-09 -6.175074711390e-02 + 4.442800000000e-09 1.114030993082e-01 + 4.452800000000e-09 2.732849561085e-01 + 4.462800000000e-09 3.973180263371e-01 + 4.472800000000e-09 4.620730586685e-01 + 4.482800000000e-09 4.592557153682e-01 + 4.492800000000e-09 3.925398442030e-01 + 4.502800000000e-09 2.740591801748e-01 + 4.512800000000e-09 1.205738242570e-01 + 4.522800000000e-09 -5.088958059287e-02 + 4.532800000000e-09 -2.197490777766e-01 + 4.542800000000e-09 -3.600298394982e-01 + 4.552800000000e-09 -4.471701732014e-01 + 4.562800000000e-09 -4.679450003513e-01 + 4.572800000000e-09 -4.224643005053e-01 + 4.582800000000e-09 -3.203036431719e-01 + 4.592800000000e-09 -1.770945530035e-01 + 4.602800000000e-09 -9.916003813214e-03 + 4.612800000000e-09 1.625825298936e-01 + 4.622800000000e-09 3.159129452110e-01 + 4.632800000000e-09 4.238513555783e-01 + 4.642800000000e-09 4.684120524954e-01 + 4.652800000000e-09 4.454333162902e-01 + 4.662800000000e-09 3.616104976461e-01 + 4.672800000000e-09 2.308230728837e-01 + 4.682800000000e-09 7.010770432388e-02 + 4.692800000000e-09 -1.030570995747e-01 + 4.702800000000e-09 -2.661910901479e-01 + 4.712800000000e-09 -3.927241236810e-01 + 4.722800000000e-09 -4.607353062860e-01 + 4.732800000000e-09 -4.612285216158e-01 + 4.742800000000e-09 -3.973544705198e-01 + 4.752800000000e-09 -2.809446907664e-01 + 4.762800000000e-09 -1.286787295534e-01 + 4.772800000000e-09 4.242899432680e-02 + 4.782800000000e-09 2.120839524621e-01 + 4.792800000000e-09 3.544573401597e-01 + 4.802800000000e-09 4.446555424287e-01 + 4.812800000000e-09 4.687567022316e-01 + 4.822800000000e-09 4.263139694892e-01 + 4.832800000000e-09 3.265253785796e-01 + 4.842800000000e-09 1.848316550113e-01 + 4.852800000000e-09 1.834724854228e-02 + 4.862800000000e-09 -1.544945489318e-01 + 4.872800000000e-09 -3.094519149607e-01 + 4.882800000000e-09 -4.201635483021e-01 + 4.892800000000e-09 -4.680287519248e-01 + 4.902800000000e-09 -4.482471740598e-01 + 4.912800000000e-09 -3.670574210263e-01 + 4.922800000000e-09 -2.380854203554e-01 + 4.932800000000e-09 -7.836948417301e-02 + 4.942800000000e-09 9.472131605117e-02 + 4.952800000000e-09 2.590064515875e-01 + 4.962800000000e-09 3.879495005266e-01 + 4.972800000000e-09 4.590293432641e-01 + 4.982800000000e-09 4.626467938185e-01 + 4.992800000000e-09 4.016591241874e-01 + 5.002800000000e-09 2.874933270737e-01 + 5.012800000000e-09 1.366314627342e-01 + 5.022800000000e-09 -3.391719605281e-02 + 5.032800000000e-09 -2.041539920187e-01 + 5.042800000000e-09 -3.484380303835e-01 + 5.052800000000e-09 -4.415959514326e-01 + 5.062800000000e-09 -4.690205298607e-01 + 5.072800000000e-09 -4.296903092295e-01 + 5.082800000000e-09 -3.324053680881e-01 + 5.092800000000e-09 -1.923873982378e-01 + 5.102800000000e-09 -2.676867692164e-02 + 5.112800000000e-09 1.462295826053e-01 + 5.122800000000e-09 3.026393297007e-01 + 5.132800000000e-09 4.160112005670e-01 + 5.142800000000e-09 4.671069540852e-01 + 5.152800000000e-09 4.505104841539e-01 + 5.162800000000e-09 3.720677643271e-01 + 5.172800000000e-09 2.450943950505e-01 + 5.182800000000e-09 8.656814023140e-02 + 5.192800000000e-09 -8.624320803601e-02 + 5.202800000000e-09 -2.514784043799e-01 + 5.212800000000e-09 -3.826822979672e-01 + 5.222800000000e-09 -4.568964753157e-01 + 5.232800000000e-09 -4.638231190379e-01 + 5.242800000000e-09 -4.058041153178e-01 + 5.252800000000e-09 -2.939218767771e-01 + 5.262800000000e-09 -1.445135907223e-01 + 5.272800000000e-09 2.541781775865e-02 + 5.282800000000e-09 1.961612078016e-01 + 5.292800000000e-09 3.422796793935e-01 + 5.302800000000e-09 4.383506324078e-01 + 5.312800000000e-09 4.690913983257e-01 + 5.322800000000e-09 4.328953571456e-01 + 5.332800000000e-09 3.382927715816e-01 + 5.342800000000e-09 2.001561159803e-01 + 5.352800000000e-09 3.542422391298e-02 + 5.362800000000e-09 -1.377545536658e-01 + 5.372800000000e-09 -2.956597486021e-01 + 5.382800000000e-09 -4.117649039312e-01 + 5.392800000000e-09 -4.662293147622e-01 + 5.402800000000e-09 -4.529637698973e-01 + 5.412800000000e-09 -3.773355266407e-01 + 5.422800000000e-09 -2.523711029840e-01 + 5.432800000000e-09 -9.500683125120e-02 + 5.442800000000e-09 7.756932841411e-02 + 5.452800000000e-09 2.438142072883e-01 + 5.462800000000e-09 3.773568564909e-01 + 5.472800000000e-09 4.548015667943e-01 + 5.482800000000e-09 4.651287927709e-01 + 5.492800000000e-09 4.101477164177e-01 + 5.502800000000e-09 3.005849979850e-01 + 5.512800000000e-09 1.526276345283e-01 + 5.522800000000e-09 -1.671068086496e-02 + 5.532800000000e-09 -1.879962664823e-01 + 5.542800000000e-09 -3.360038064272e-01 + 5.552800000000e-09 -4.350670404128e-01 + 5.562800000000e-09 -4.692171357610e-01 + 5.572800000000e-09 -4.362371600768e-01 + 5.582800000000e-09 -3.442205734381e-01 + 5.592800000000e-09 -2.078120603889e-01 + 5.602800000000e-09 -4.399361871475e-02 + 5.612800000000e-09 1.292794167594e-01 + 5.622800000000e-09 2.885811030032e-01 + 5.632800000000e-09 4.073363110215e-01 + 5.642800000000e-09 4.651286994211e-01 + 5.652800000000e-09 4.551891177608e-01 + 5.662800000000e-09 3.824020391996e-01 + 5.672800000000e-09 2.594944076480e-01 + 5.682800000000e-09 1.033438491830e-01 + 5.692800000000e-09 -6.892714700509e-02 + 5.702800000000e-09 -2.360907735767e-01 + 5.712800000000e-09 -3.718843822518e-01 + 5.722800000000e-09 -4.525056320354e-01 + 5.732800000000e-09 -4.662179080721e-01 + 5.742800000000e-09 -4.142899160792e-01 + 5.752800000000e-09 -3.070848842695e-01 + 5.762800000000e-09 -1.606236187967e-01 + 5.772800000000e-09 8.063294413724e-03 + 5.782800000000e-09 1.798092027416e-01 + 5.792800000000e-09 3.296144723505e-01 + 5.802800000000e-09 4.316026024095e-01 + 5.812800000000e-09 4.691352602748e-01 + 5.822800000000e-09 4.393772828167e-01 + 5.832800000000e-09 3.499779099653e-01 + 5.842800000000e-09 2.153439570460e-01 + 5.852800000000e-09 5.248772291422e-02 + 5.862800000000e-09 -1.208092298411e-01 + 5.872800000000e-09 -2.814224335561e-01 + 5.882800000000e-09 -4.027542007684e-01 + 5.892800000000e-09 -4.639238314122e-01 + 5.902800000000e-09 -4.574119512254e-01 + 5.912800000000e-09 -3.874729348324e-01 + 5.922800000000e-09 -2.665865318224e-01 + 5.932800000000e-09 -1.116124924994e-01 + 5.942800000000e-09 6.037589281750e-02 + 5.952800000000e-09 2.284532173010e-01 + 5.962800000000e-09 3.664713305262e-01 + 5.972800000000e-09 4.502401512919e-01 + 5.982800000000e-09 4.673117572575e-01 + 5.992800000000e-09 4.184122700938e-01 + 6.002800000000e-09 3.135407382749e-01 + 6.012800000000e-09 1.685478314385e-01 + 6.022800000000e-09 4.930169171302e-04 + 6.032800000000e-09 -1.717053644180e-01 + 6.042800000000e-09 -3.232757122754e-01 + 6.052800000000e-09 -4.281501715882e-01 + 6.062800000000e-09 -4.690368391453e-01 + 6.072800000000e-09 -4.424779840291e-01 + 6.082800000000e-09 -3.556779928680e-01 + 6.092800000000e-09 -2.228038732050e-01 + 6.102800000000e-09 -6.089377325164e-02 + 6.112800000000e-09 1.124210199175e-01 + 6.122800000000e-09 2.743141743718e-01 + 6.132800000000e-09 3.981797456550e-01 + 6.142800000000e-09 4.626228538294e-01 + 6.152800000000e-09 4.594272131113e-01 + 6.162800000000e-09 3.923322355857e-01 + 6.172800000000e-09 2.735180465714e-01 + 6.182800000000e-09 1.197717126998e-01 + 6.192800000000e-09 -5.186472013402e-02 + 6.202800000000e-09 -2.207649238640e-01 + 6.212800000000e-09 -3.609165159668e-01 + 6.222800000000e-09 -4.477738391192e-01 + 6.232800000000e-09 -4.681852222922e-01 + 6.242800000000e-09 -4.223268843341e-01 + 6.252800000000e-09 -3.198253536388e-01 + 6.262800000000e-09 -1.763473102731e-01 + 6.272800000000e-09 -8.982039437124e-03 + 6.282800000000e-09 1.635876126806e-01 + 6.292800000000e-09 3.168310622333e-01 + 6.302800000000e-09 4.245205520260e-01 + 6.312800000000e-09 4.687307903454e-01 + 6.322800000000e-09 4.453736360192e-01 + 6.332800000000e-09 3.612017290043e-01 + 6.342800000000e-09 2.301330182353e-01 + 6.352800000000e-09 6.921688292670e-02 + 6.362800000000e-09 -1.040475870182e-01 + 6.372800000000e-09 -2.671361986136e-01 + 6.382800000000e-09 -3.934594426785e-01 + 6.392800000000e-09 -4.611370230412e-01 + 6.402800000000e-09 -4.612520577930e-01 + 6.412800000000e-09 -3.970195016399e-01 + 6.422800000000e-09 -2.803129698450e-01 + 6.432800000000e-09 -1.278327136914e-01 + 6.442800000000e-09 4.339793621030e-02 + 6.452800000000e-09 2.130454869379e-01 + 6.462800000000e-09 3.552509220557e-01 + 6.472800000000e-09 4.451430134717e-01 + 6.482800000000e-09 4.688749870171e-01 + 6.492800000000e-09 4.260659728975e-01 + 6.502800000000e-09 3.259624909572e-01 + 6.512800000000e-09 1.840358047712e-01 + 6.522800000000e-09 1.740504195152e-02 + 6.532800000000e-09 -1.554679584984e-01 + 6.542800000000e-09 -3.103040454563e-01 + 6.552800000000e-09 -4.207437921098e-01 + 6.562800000000e-09 -4.682490523525e-01 + 6.572800000000e-09 -4.480936775650e-01 + 6.582800000000e-09 -3.665722058255e-01 + 6.592800000000e-09 -2.373457850655e-01 + 6.602800000000e-09 -7.746130210985e-02 + 6.612800000000e-09 9.569628305997e-02 + 6.622800000000e-09 2.599064530008e-01 + 6.632800000000e-09 3.886180524625e-01 + 6.642800000000e-09 4.593555398608e-01 + 6.652800000000e-09 4.625982413789e-01 + 6.662800000000e-09 4.012627299847e-01 + 6.672800000000e-09 2.868173569801e-01 + 6.682800000000e-09 1.357640831716e-01 + 6.692800000000e-09 -3.488320500924e-02 + 6.702800000000e-09 -2.050901619048e-01 + 6.712800000000e-09 -3.491887541055e-01 + 6.722800000000e-09 -4.420300161588e-01 + 6.732800000000e-09 -4.690822358330e-01 + 6.742800000000e-09 -4.293904431265e-01 + 6.752800000000e-09 -3.318023913763e-01 + 6.762800000000e-09 -1.915684299403e-01 + 6.772800000000e-09 -2.582266991708e-02 + 6.782800000000e-09 1.471885101963e-01 + 6.792800000000e-09 3.034620065971e-01 + 6.802800000000e-09 4.165520945543e-01 + 6.812800000000e-09 4.672843237133e-01 + 6.822800000000e-09 4.503168576248e-01 + 6.832800000000e-09 3.715496269309e-01 + 6.842800000000e-09 2.443329238081e-01 + 6.852800000000e-09 8.565233716324e-02 + 6.862800000000e-09 -8.721185001892e-02 + 6.872800000000e-09 -2.523604048396e-01 + 6.882800000000e-09 -3.833247194281e-01 + 6.892800000000e-09 -4.571919489730e-01 + 6.902800000000e-09 -4.637433214291e-01 + 6.912800000000e-09 -4.053802592406e-01 + 6.922800000000e-09 -2.932260265956e-01 + 6.932800000000e-09 -1.436370246939e-01 + 6.942800000000e-09 2.638186911296e-02 + 6.952800000000e-09 1.970861474685e-01 + 6.962800000000e-09 3.430127479307e-01 + 6.972800000000e-09 4.387632027596e-01 + 6.982800000000e-09 4.691300448494e-01 + 6.992800000000e-09 4.325739818738e-01 + 7.002800000000e-09 3.376746611685e-01 + 7.012800000000e-09 1.993314748888e-01 + 7.022800000000e-09 3.448096661822e-02 + 7.032800000000e-09 -1.387046797470e-01 + 7.042800000000e-09 -2.964702339618e-01 + 7.052800000000e-09 -4.122923879720e-01 + 7.062800000000e-09 -4.663930385262e-01 + 7.072800000000e-09 -4.527579407483e-01 + 7.082800000000e-09 -3.768082699232e-01 + 7.092800000000e-09 -2.516050079864e-01 + 7.102800000000e-09 -9.409246456133e-02 + 7.112800000000e-09 7.853162635772e-02 + 7.122800000000e-09 2.446874452655e-01 + 7.132800000000e-09 3.779902192601e-01 + 7.142800000000e-09 4.550882958425e-01 + 7.152800000000e-09 4.650411547424e-01 + 7.162800000000e-09 4.097179332496e-01 + 7.172800000000e-09 2.998861881111e-01 + 7.182800000000e-09 1.517524509766e-01 + 7.192800000000e-09 -1.766946826208e-02 + 7.202800000000e-09 -1.889144668742e-01 + 7.212800000000e-09 -3.367309678536e-01 + 7.222800000000e-09 -4.354751102968e-01 + 7.232800000000e-09 -4.692521503196e-01 + 7.242800000000e-09 -4.359132759345e-01 + 7.252800000000e-09 -3.436015388899e-01 + 7.262800000000e-09 -2.069887352862e-01 + 7.272800000000e-09 -4.305460321032e-02 + 7.282800000000e-09 1.302243182732e-01 + 7.292800000000e-09 2.893875876708e-01 + 7.302800000000e-09 4.078618696239e-01 + 7.312800000000e-09 4.652916678570e-01 + 7.322800000000e-09 4.549834438218e-01 + 7.332800000000e-09 3.818758289910e-01 + 7.342800000000e-09 2.587304169940e-01 + 7.352800000000e-09 1.024336339501e-01 + 7.362800000000e-09 -6.988457824246e-02 + 7.372800000000e-09 -2.369607605323e-01 + 7.382800000000e-09 -3.725174328127e-01 + 7.392800000000e-09 -4.527941312946e-01 + 7.402800000000e-09 -4.661330393578e-01 + 7.412800000000e-09 -4.138634119000e-01 + 7.422800000000e-09 -3.063897708511e-01 + 7.432800000000e-09 -1.597531764729e-01 + 7.442800000000e-09 9.016902070073e-03 + 7.452800000000e-09 1.807241786377e-01 + 7.462800000000e-09 3.303421804470e-01 + 7.472800000000e-09 4.320145305794e-01 + 7.482800000000e-09 4.691755145675e-01 + 7.492800000000e-09 4.390589917734e-01 + 7.502800000000e-09 3.493642170673e-01 + 7.512800000000e-09 2.145256124731e-01 + 7.522800000000e-09 5.155379687803e-02 + 7.532800000000e-09 -1.217508745935e-01 + 7.542800000000e-09 -2.822294607375e-01 + 7.552800000000e-09 -4.032842550779e-01 + 7.562800000000e-09 -4.640916914801e-01 + 7.572800000000e-09 -4.572097037402e-01 + 7.582800000000e-09 -3.869500281334e-01 + 7.592800000000e-09 -2.658264577248e-01 + 7.602800000000e-09 -1.107075125337e-01 + 7.612800000000e-09 6.132811648014e-02 + 7.622800000000e-09 2.293204102570e-01 + 7.632800000000e-09 3.671053168434e-01 + 7.642800000000e-09 4.505323117389e-01 + 7.652800000000e-09 4.672318501112e-01 + 7.662800000000e-09 4.179912006221e-01 + 7.672800000000e-09 3.128511619973e-01 + 7.682800000000e-09 1.676833870172e-01 + 7.692800000000e-09 -4.547319851387e-04 + 7.702800000000e-09 -1.726170694705e-01 + 7.712800000000e-09 -3.240045724004e-01 + 7.722800000000e-09 -4.285671943201e-01 + 7.732800000000e-09 -4.690839889224e-01 + 7.742800000000e-09 -4.421670997174e-01 + 7.752800000000e-09 -3.550713562528e-01 + 7.762800000000e-09 -2.219918689915e-01 + 7.772800000000e-09 -5.996587769395e-02 + 7.782800000000e-09 1.133589037792e-01 + 7.792800000000e-09 2.751217633628e-01 + 7.802800000000e-09 3.987149042172e-01 + 7.812800000000e-09 4.627981449510e-01 + 7.822800000000e-09 4.592330207458e-01 + 7.832800000000e-09 3.918171385163e-01 + 7.842800000000e-09 2.727650179179e-01 + 7.852800000000e-09 1.188734966965e-01 + 7.862800000000e-09 -5.281185931337e-02 + 7.872800000000e-09 -2.216310983036e-01 + 7.882800000000e-09 -3.615546641648e-01 + 7.892800000000e-09 -4.480738459771e-01 + 7.902800000000e-09 -4.681146909231e-01 + 7.912800000000e-09 -4.219152472552e-01 + 7.922800000000e-09 -3.191443707776e-01 + 7.932800000000e-09 -1.754905686412e-01 + 7.942800000000e-09 -8.040492577127e-03 + 7.952800000000e-09 1.644970549667e-01 + 7.962800000000e-09 3.175633142728e-01 + 7.972800000000e-09 4.249458362164e-01 + 7.982800000000e-09 4.687883885322e-01 + 7.992800000000e-09 4.450735522371e-01 + 8.002800000000e-09 3.606049350847e-01 + 8.012800000000e-09 2.293291593857e-01 + 8.022800000000e-09 6.829573741024e-02 + 8.032800000000e-09 -1.049820570284e-01 + 8.042800000000e-09 -2.679457347695e-01 + 8.052800000000e-09 -3.940019828902e-01 + 8.062800000000e-09 -4.613225420525e-01 + 8.072800000000e-09 -4.610687439028e-01 + 8.082800000000e-09 -3.965146838192e-01 + 8.092800000000e-09 -2.795688157061e-01 + 8.102800000000e-09 -1.269422295447e-01 + 8.112800000000e-09 4.433986217445e-02 + 8.122800000000e-09 2.139113728231e-01 + 8.132800000000e-09 3.558947791059e-01 + 8.142800000000e-09 4.454530364826e-01 + 8.152800000000e-09 4.688162086721e-01 + 8.162800000000e-09 4.256659903447e-01 + 8.172800000000e-09 3.252918647774e-01 + 8.182800000000e-09 1.831877919673e-01 + 8.192800000000e-09 1.647002802967e-02 + 8.202800000000e-09 -1.563754783600e-01 + 8.212800000000e-09 -3.110406697016e-01 + 8.222800000000e-09 -4.211788717107e-01 + 8.232800000000e-09 -4.683189204053e-01 + 8.242800000000e-09 -4.478062044189e-01 + 8.252800000000e-09 -3.659868137152e-01 + 8.262800000000e-09 -2.365511577981e-01 + 8.272800000000e-09 -7.654745729663e-02 + 8.282800000000e-09 9.662728626489e-02 + 8.292800000000e-09 2.607184036677e-01 + 8.302800000000e-09 3.891689696379e-01 + 8.312800000000e-09 4.595549824596e-01 + 8.322800000000e-09 4.624327742735e-01 + 8.332800000000e-09 4.007748494939e-01 + 8.342800000000e-09 2.860862296845e-01 + 8.352800000000e-09 1.348827207646e-01 + 8.362800000000e-09 -3.582128126017e-02 + 8.372800000000e-09 -2.059597102743e-01 + 8.382800000000e-09 -3.498443393635e-01 + 8.392800000000e-09 -4.423571724603e-01 + 8.402800000000e-09 -4.690421901879e-01 + 8.412800000000e-09 -4.290079589075e-01 + 8.422800000000e-09 -3.311460755638e-01 + 8.432800000000e-09 -1.907307083396e-01 + 8.442800000000e-09 -2.489339670075e-02 + 8.452800000000e-09 1.480970777988e-01 + 8.462800000000e-09 3.042077598377e-01 + 8.472800000000e-09 4.170027846721e-01 + 8.482800000000e-09 4.673733227014e-01 + 8.492800000000e-09 4.500492154599e-01 + 8.502800000000e-09 3.709811916254e-01 + 8.512800000000e-09 2.435503358873e-01 + 8.522800000000e-09 8.474572058405e-02 + 8.532800000000e-09 -8.814220320326e-02 + 8.542800000000e-09 -2.531799828584e-01 + 8.552800000000e-09 -3.838908777649e-01 + 8.562800000000e-09 -4.574106056723e-01 + 8.572800000000e-09 -4.635975130975e-01 + 8.582800000000e-09 -4.049097350188e-01 + 8.592800000000e-09 -2.925081089459e-01 + 8.602800000000e-09 -1.427644960264e-01 + 8.612800000000e-09 2.731666536515e-02 + 8.622800000000e-09 1.979601194150e-01 + 8.632800000000e-09 3.436809635643e-01 + 8.642800000000e-09 4.391084582379e-01 + 8.652800000000e-09 4.691095376366e-01 + 8.662800000000e-09 4.322095061829e-01 + 8.672800000000e-09 3.368928985927e-01 + 8.682800000000e-09 1.982044632161e-01 + 8.692800000000e-09 3.328748292720e-02 + 8.702800000000e-09 -1.397907460972e-01 + 8.712800000000e-09 -2.972809960802e-01 + 8.722800000000e-09 -4.126827903971e-01 + 8.732800000000e-09 -4.663084092799e-01 + 8.742800000000e-09 -4.522326114772e-01 + 8.752800000000e-09 -3.759388122305e-01 + 8.762800000000e-09 -2.505187248281e-01 + 8.772800000000e-09 -9.291412254591e-02 + 8.782800000000e-09 7.967445192077e-02 + 8.792800000000e-09 2.456298544672e-01 + 8.802800000000e-09 3.785684083142e-01 + 8.812800000000e-09 4.552056136132e-01 + 8.822800000000e-09 4.647002980707e-01 + 8.832800000000e-09 4.089901158564e-01 + 8.842800000000e-09 2.988866803157e-01 + 8.852800000000e-09 1.506087014056e-01 + 8.862800000000e-09 -1.883745866191e-02 + 8.872800000000e-09 -1.899552286123e-01 + 8.882800000000e-09 -3.374716666082e-01 + 8.892800000000e-09 -4.357856583871e-01 + 8.902800000000e-09 -4.690969613895e-01 + 8.912800000000e-09 -4.353384238061e-01 + 8.922800000000e-09 -3.427079186954e-01 + 8.932800000000e-09 -2.059032714601e-01 + 8.942800000000e-09 -4.189128493875e-02 + 8.952800000000e-09 1.313291507323e-01 + 8.962800000000e-09 2.902642081555e-01 + 8.972800000000e-09 4.083542326391e-01 + 8.982800000000e-09 4.653259728819e-01 + 8.992800000000e-09 4.545764243838e-01 + 9.002800000000e-09 3.811073673562e-01 + 9.012800000000e-09 2.577163969282e-01 + 9.022800000000e-09 1.012931365515e-01 + 9.032800000000e-09 -7.102831138895e-02 + 9.042800000000e-09 -2.379457193960e-01 + 9.052800000000e-09 -3.731734936642e-01 + 9.062800000000e-09 -4.530102686784e-01 + 9.072800000000e-09 -4.658953807172e-01 + 9.082800000000e-09 -4.132289783744e-01 + 9.092800000000e-09 -3.054620612447e-01 + 9.102800000000e-09 -1.586537832549e-01 + 9.112800000000e-09 1.017248035994e-02 + 9.122800000000e-09 1.817880774797e-01 + 9.132800000000e-09 3.311403052398e-01 + 9.142800000000e-09 4.324059501558e-01 + 9.152800000000e-09 4.691102262035e-01 + 9.162800000000e-09 4.385694488727e-01 + 9.172800000000e-09 3.485404045662e-01 + 9.182800000000e-09 2.134867177560e-01 + 9.192800000000e-09 5.041125749658e-02 + 9.202800000000e-09 -1.228649815627e-01 + 9.212800000000e-09 -2.831459884459e-01 + 9.222800000000e-09 -4.038408722570e-01 + 9.232800000000e-09 -4.642001988832e-01 + 9.242800000000e-09 -4.568746514943e-01 + 9.252800000000e-09 -3.862433936164e-01 + 9.262800000000e-09 -2.648579868420e-01 + 9.272800000000e-09 -1.095932317512e-01 + 9.282800000000e-09 6.246838319782e-02 + 9.292800000000e-09 2.303276041376e-01 + 9.302800000000e-09 3.678067006841e-01 + 9.312800000000e-09 4.508080420641e-01 + 9.322800000000e-09 4.670576116587e-01 + 9.332800000000e-09 4.174150955840e-01 + 9.342800000000e-09 3.119694816487e-01 + 9.352800000000e-09 1.666141498285e-01 + 9.362800000000e-09 -1.598897540464e-03 + 9.372800000000e-09 -1.736917974346e-01 + 9.382800000000e-09 -3.248360374444e-01 + 9.392800000000e-09 -4.290081867973e-01 + 9.402800000000e-09 -4.690748916597e-01 + 9.412800000000e-09 -4.417318027890e-01 + 9.422800000000e-09 -3.542928349449e-01 + 9.432800000000e-09 -2.209845197832e-01 + 9.442800000000e-09 -5.883968416087e-02 + 9.452800000000e-09 1.144753238926e-01 + 9.462800000000e-09 2.760608941454e-01 + 9.472800000000e-09 3.993110606018e-01 + 9.482800000000e-09 4.629546341337e-01 + 9.492800000000e-09 4.589465431600e-01 + 9.502800000000e-09 3.911532442510e-01 + 9.512800000000e-09 2.718288005794e-01 + 9.522800000000e-09 1.177792588363e-01 + 9.532800000000e-09 -5.394705682948e-02 + 9.542800000000e-09 -2.226511266769e-01 + 9.552800000000e-09 -3.622858772814e-01 + 9.562800000000e-09 -4.483902653613e-01 + 9.572800000000e-09 -4.679845008891e-01 + 9.582800000000e-09 -4.213801997220e-01 + 9.592800000000e-09 -3.182958389839e-01 + 9.602800000000e-09 -1.744441153284e-01 + 9.612800000000e-09 -6.906786421147e-03 + 9.622800000000e-09 1.655769906234e-01 + 9.632800000000e-09 3.184166837392e-01 + 9.642800000000e-09 4.254213267503e-01 + 9.652800000000e-09 4.688191408308e-01 + 9.662800000000e-09 4.446772345709e-01 + 9.672800000000e-09 3.598595000617e-01 + 9.682800000000e-09 2.283455819428e-01 + 9.692800000000e-09 6.718320212138e-02 + 9.702800000000e-09 -1.060978991889e-01 + 9.712800000000e-09 -2.688993892690e-01 + 9.722800000000e-09 -3.946258281187e-01 + 9.732800000000e-09 -4.615134996907e-01 + 9.742800000000e-09 -4.608175455040e-01 + 9.752800000000e-09 -3.958823318708e-01 + 9.762800000000e-09 -2.786570833923e-01 + 9.772800000000e-09 -1.258643950722e-01 + 9.782800000000e-09 4.546905829843e-02 + 9.792800000000e-09 2.149387568206e-01 + 9.802800000000e-09 3.566467864510e-01 + 9.812800000000e-09 4.457992136378e-01 + 9.822800000000e-09 4.687188497086e-01 + 9.832800000000e-09 4.251620141211e-01 + 9.842800000000e-09 3.244689829017e-01 + 9.852800000000e-09 1.821597652597e-01 + 9.862800000000e-09 1.534612931094e-02 + 9.872800000000e-09 -1.574573869663e-01 + 9.882800000000e-09 -3.119092570766e-01 + 9.892800000000e-09 -4.216800259422e-01 + 9.902800000000e-09 -4.683799397995e-01 + 9.912800000000e-09 -4.474399205894e-01 + 9.922800000000e-09 -3.652673258168e-01 + 9.932800000000e-09 -2.355868305983e-01 + 9.942800000000e-09 -7.544705922058e-02 + 9.952800000000e-09 9.774076485998e-02 + 9.962800000000e-09 2.616817305570e-01 + 9.972800000000e-09 3.898134970001e-01 + 9.982800000000e-09 4.597752069390e-01 + 9.992800000000e-09 4.622155396903e-01 + 1.000000000000e-08 4.230865375912e-01 diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/conditions.yaml new file mode 100644 index 00000000..739a2d27 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 16 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_16 +temperature: '27' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/LC_Oscillator_tb.sch new file mode 100644 index 00000000..0d420f2f --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/LC_Oscillator_tb_17.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 27 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/conditions.yaml new file mode 100644 index 00000000..2502cf4b --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 17 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_17 +temperature: '27' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/LC_Oscillator_tb.sch new file mode 100644 index 00000000..6dc2ee70 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/LC_Oscillator_tb_18.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP 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/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 80 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/conditions.yaml new file mode 100644 index 00000000..55193bf9 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 18 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_18 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/LC_Oscillator_tb.sch new file mode 100644 index 00000000..12f93083 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/LC_Oscillator_tb_19.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP 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/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 80 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/LC_Oscillator_tb_19.data b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/LC_Oscillator_tb_19.data new file mode 100644 index 00000000..04e15afb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/LC_Oscillator_tb_19.data @@ -0,0 +1,985 @@ + 1.628000000000e-10 7.148700138490e-03 + 1.728000000000e-10 -6.556248283308e-03 + 1.828000000000e-10 -1.971437135227e-02 + 1.928000000000e-10 -3.046832510057e-02 + 2.028000000000e-10 -3.724484206798e-02 + 2.128000000000e-10 -3.898722404017e-02 + 2.228000000000e-10 -3.531874717656e-02 + 2.328000000000e-10 -2.661104433390e-02 + 2.428000000000e-10 -1.394722371181e-02 + 2.528000000000e-10 1.010890375025e-03 + 2.628000000000e-10 1.623518558993e-02 + 2.728000000000e-10 2.959972790204e-02 + 2.828000000000e-10 3.917676561508e-02 + 2.928000000000e-10 4.351854183212e-02 + 3.028000000000e-10 4.187897998930e-02 + 3.128000000000e-10 3.433491833145e-02 + 3.228000000000e-10 2.178964009036e-02 + 3.328000000000e-10 5.862674403261e-03 + 3.428000000000e-10 -1.131445345393e-02 + 3.528000000000e-10 -2.737440631426e-02 + 3.628000000000e-10 -4.003447001271e-02 + 3.728000000000e-10 -4.742374767739e-02 + 3.828000000000e-10 -4.836506885182e-02 + 3.928000000000e-10 -4.256093597883e-02 + 4.028000000000e-10 -3.065096603476e-02 + 4.128000000000e-10 -1.413831435399e-02 + 4.228000000000e-10 4.797692448234e-03 + 4.328000000000e-10 2.357802655500e-02 + 4.428000000000e-10 3.956516961760e-02 + 4.528000000000e-10 5.043395269242e-02 + 4.628000000000e-10 5.451894284417e-02 + 4.728000000000e-10 5.107393783219e-02 + 4.828000000000e-10 4.039477807846e-02 + 4.928000000000e-10 2.378773582336e-02 + 5.028000000000e-10 3.413561417878e-03 + 5.128000000000e-10 -1.798715588926e-02 + 5.228000000000e-10 -3.745223885697e-02 + 5.328000000000e-10 -5.219304612990e-02 + 5.428000000000e-10 -6.000529045762e-02 + 5.528000000000e-10 -5.961153530135e-02 + 5.628000000000e-10 -5.086480313709e-02 + 5.728000000000e-10 -3.478185641254e-02 + 5.828000000000e-10 -1.341169371011e-02 + 5.928000000000e-10 1.040945866726e-02 + 6.028000000000e-10 3.341949825708e-02 + 6.128000000000e-10 5.236916475376e-02 + 6.228000000000e-10 6.447462396568e-02 + 6.328000000000e-10 6.785013248012e-02 + 6.428000000000e-10 6.180915454835e-02 + 6.528000000000e-10 4.697450683375e-02 + 6.628000000000e-10 2.519746679797e-02 + 6.728000000000e-10 -6.776776351147e-04 + 6.828000000000e-10 -2.716208434665e-02 + 6.928000000000e-10 -5.056367134551e-02 + 7.028000000000e-10 -6.749672582915e-02 + 7.128000000000e-10 -7.539559216107e-02 + 7.228000000000e-10 -7.292479233089e-02 + 7.328000000000e-10 -6.019185889536e-02 + 7.428000000000e-10 -3.873280044736e-02 + 7.528000000000e-10 -1.130779870607e-02 + 7.628000000000e-10 1.843768499398e-02 + 7.728000000000e-10 4.641599263197e-02 + 7.828000000000e-10 6.863616257149e-02 + 7.928000000000e-10 8.179396300279e-02 + 8.028000000000e-10 8.380193448312e-02 + 8.128000000000e-10 7.412652679349e-02 + 8.228000000000e-10 5.386352623579e-02 + 8.328000000000e-10 2.557596790521e-02 + 8.428000000000e-10 -7.030899690316e-03 + 8.528000000000e-10 -3.954688119292e-02 + 8.628000000000e-10 -6.739251915773e-02 + 8.728000000000e-10 -8.649559268171e-02 + 8.828000000000e-10 -9.393416573073e-02 + 8.928000000000e-10 -8.838791787859e-02 + 9.028000000000e-10 -7.035847201347e-02 + 9.128000000000e-10 -4.208134290242e-02 + 9.228000000000e-10 -7.209932410129e-03 + 9.328000000000e-10 2.961392813569e-02 + 9.428000000000e-10 6.330095111983e-02 + 9.528000000000e-10 8.899032817750e-02 + 9.628000000000e-10 1.028055993739e-01 + 9.728000000000e-10 1.025103411192e-01 + 9.828000000000e-10 8.786720591515e-02 + 9.928000000000e-10 6.063594554746e-02 + 1.002800000000e-09 2.429231581003e-02 + 1.012800000000e-09 -1.640725204041e-02 + 1.022800000000e-09 -5.592731109875e-02 + 1.032800000000e-09 -8.865561721934e-02 + 1.042800000000e-09 -1.097431255659e-01 + 1.052800000000e-09 -1.158862907220e-01 + 1.062800000000e-09 -1.059221446957e-01 + 1.072800000000e-09 -8.096333148560e-02 + 1.082800000000e-09 -4.416377846535e-02 + 1.092800000000e-09 -2.658805670344e-04 + 1.102800000000e-09 4.485683762439e-02 + 1.112800000000e-09 8.489574096964e-02 + 1.122800000000e-09 1.140298593979e-01 + 1.132800000000e-09 1.277941551577e-01 + 1.142800000000e-09 1.238991423665e-01 + 1.152800000000e-09 1.026147696876e-01 + 1.162800000000e-09 6.660558568785e-02 + 1.172800000000e-09 2.045707725809e-02 + 1.182800000000e-09 -2.977040382182e-02 + 1.192800000000e-09 -7.715799040877e-02 + 1.202800000000e-09 -1.149245187352e-01 + 1.212800000000e-09 -1.374116372868e-01 + 1.222800000000e-09 -1.410361906765e-01 + 1.232800000000e-09 -1.249774939878e-01 + 1.242800000000e-09 -9.121657356521e-02 + 1.252800000000e-09 -4.402957513171e-02 + 1.262800000000e-09 1.048639543592e-02 + 1.272800000000e-09 6.497276354141e-02 + 1.282800000000e-09 1.117276895535e-01 + 1.292800000000e-09 1.438573561656e-01 + 1.302800000000e-09 1.564112839747e-01 + 1.312800000000e-09 1.472444164192e-01 + 1.322800000000e-09 1.173904520081e-01 + 1.332800000000e-09 7.064630499838e-02 + 1.342800000000e-09 1.298851375611e-02 + 1.352800000000e-09 -4.796590495619e-02 + 1.362800000000e-09 -1.037738506580e-01 + 1.372800000000e-09 -1.462838567932e-01 + 1.382800000000e-09 -1.690469648080e-01 + 1.392800000000e-09 -1.684589187758e-01 + 1.402800000000e-09 -1.443307853150e-01 + 1.412800000000e-09 -9.974170663916e-02 + 1.422800000000e-09 -4.039423500355e-02 + 1.432800000000e-09 2.602020404264e-02 + 1.442800000000e-09 9.051891950498e-02 + 1.452800000000e-09 1.438453665716e-01 + 1.462800000000e-09 1.779999435746e-01 + 1.472800000000e-09 1.876679852542e-01 + 1.482800000000e-09 1.711644043150e-01 + 1.492800000000e-09 1.306516256143e-01 + 1.502800000000e-09 7.135015911371e-02 + 1.512800000000e-09 7.956327021845e-04 + 1.522800000000e-09 -7.167424360659e-02 + 1.532800000000e-09 -1.358854828244e-01 + 1.542800000000e-09 -1.822694385988e-01 + 1.552800000000e-09 -2.036931671261e-01 + 1.562800000000e-09 -1.967898467271e-01 + 1.572800000000e-09 -1.624014513528e-01 + 1.582800000000e-09 -1.050598207809e-01 + 1.592800000000e-09 -3.207327467436e-02 + 1.602800000000e-09 4.713294477471e-02 + 1.612800000000e-09 1.217469234933e-01 + 1.622800000000e-09 1.808393320889e-01 + 1.632800000000e-09 2.153821990715e-01 + 1.642800000000e-09 2.200025335940e-01 + 1.652800000000e-09 1.938916561667e-01 + 1.662800000000e-09 1.406366438872e-01 + 1.672800000000e-09 6.716207549639e-02 + 1.682800000000e-09 -1.719516702157e-02 + 1.692800000000e-09 -1.012741747911e-01 + 1.702800000000e-09 -1.730554267322e-01 + 1.712800000000e-09 -2.216048287376e-01 + 1.722800000000e-09 -2.393973127106e-01 + 1.732800000000e-09 -2.237503440226e-01 + 1.742800000000e-09 -1.769173085615e-01 + 1.752800000000e-09 -1.051814588075e-01 + 1.762800000000e-09 -1.766078446920e-02 + 1.772800000000e-09 7.440307377995e-02 + 1.782800000000e-09 1.582616177664e-01 + 1.792800000000e-09 2.213276907858e-01 + 1.802800000000e-09 2.538171424413e-01 + 1.812800000000e-09 2.507767745020e-01 + 1.822800000000e-09 2.127681399725e-01 + 1.832800000000e-09 1.451586894143e-01 + 1.842800000000e-09 5.667012824847e-02 + 1.852800000000e-09 -4.154856627854e-02 + 1.862800000000e-09 -1.363787066297e-01 + 1.872800000000e-09 -2.139238658971e-01 + 1.882800000000e-09 -2.621247503047e-01 + 1.892800000000e-09 -2.735421173292e-01 + 1.902800000000e-09 -2.467114619458e-01 + 1.912800000000e-09 -1.857012223731e-01 + 1.922800000000e-09 -9.868333479581e-02 + 1.932800000000e-09 3.422216277006e-03 + 1.942800000000e-09 1.074824256018e-01 + 1.952800000000e-09 1.987566180838e-01 + 1.962800000000e-09 2.631919442829e-01 + 1.972800000000e-09 2.907163946638e-01 + 1.982800000000e-09 2.773803318602e-01 + 1.992800000000e-09 2.255222603737e-01 + 2.002800000000e-09 1.425137686338e-01 + 2.012800000000e-09 3.896421212897e-02 + 2.022800000000e-09 -7.219349468508e-02 + 2.032800000000e-09 -1.758637825119e-01 + 2.042800000000e-09 -2.564151818236e-01 + 2.052800000000e-09 -3.011190007746e-01 + 2.062800000000e-09 -3.032508857680e-01 + 2.072800000000e-09 -2.631141437102e-01 + 2.082800000000e-09 -1.868443968754e-01 + 2.092800000000e-09 -8.449104035527e-02 + 2.102800000000e-09 3.128188250133e-02 + 2.112800000000e-09 1.454282993861e-01 + 2.122800000000e-09 2.413002992226e-01 + 2.132800000000e-09 3.037884198607e-01 + 2.142800000000e-09 3.231821041828e-01 + 2.152800000000e-09 2.971704310716e-01 + 2.162800000000e-09 2.302255938592e-01 + 2.172800000000e-09 1.317293079600e-01 + 2.182800000000e-09 1.401633510291e-02 + 2.192800000000e-09 -1.082173826294e-01 + 2.202800000000e-09 -2.179172364091e-01 + 2.212800000000e-09 -2.980594054383e-01 + 2.222800000000e-09 -3.359507712982e-01 + 2.232800000000e-09 -3.262521456316e-01 + 2.242800000000e-09 -2.712644014697e-01 + 2.252800000000e-09 -1.793305661427e-01 + 2.262800000000e-09 -6.240746237994e-02 + 2.272800000000e-09 6.524620183146e-02 + 2.282800000000e-09 1.867115388883e-01 + 2.292800000000e-09 2.836817423597e-01 + 2.302800000000e-09 3.405920534211e-01 + 2.312800000000e-09 3.488563324357e-01 + 2.322800000000e-09 3.083679804650e-01 + 2.332800000000e-09 2.258653773592e-01 + 2.342800000000e-09 1.125792171780e-01 + 2.352800000000e-09 -1.760508630673e-02 + 2.362800000000e-09 -1.482510567441e-01 + 2.372800000000e-09 -2.604995925893e-01 + 2.382800000000e-09 -3.364632566419e-01 + 2.392800000000e-09 -3.641874700021e-01 + 2.402800000000e-09 -3.404387828583e-01 + 2.412800000000e-09 -2.699172030902e-01 + 2.422800000000e-09 -1.629947399732e-01 + 2.432800000000e-09 -3.316150693893e-02 + 2.442800000000e-09 1.037975206654e-01 + 2.452800000000e-09 2.291431356829e-01 + 2.462800000000e-09 3.233578151894e-01 + 2.472800000000e-09 3.711917109186e-01 + 2.482800000000e-09 3.659591826516e-01 + 2.492800000000e-09 3.099687304721e-01 + 2.502800000000e-09 2.122024988077e-01 + 2.512800000000e-09 8.561512425561e-02 + 2.522800000000e-09 -5.459606428701e-02 + 2.532800000000e-09 -1.903194940107e-01 + 2.542800000000e-09 -3.012178023833e-01 + 2.552800000000e-09 -3.692569685188e-01 + 2.562800000000e-09 -3.840694207960e-01 + 2.572800000000e-09 -3.449920942662e-01 + 2.582800000000e-09 -2.590898711929e-01 + 2.592800000000e-09 -1.384869769108e-01 + 2.602800000000e-09 2.048874826807e-03 + 2.612800000000e-09 1.452390308013e-01 + 2.622800000000e-09 2.707131119232e-01 + 2.632800000000e-09 3.583479502921e-01 + 2.642800000000e-09 3.941649286666e-01 + 2.652800000000e-09 3.739364679171e-01 + 2.662800000000e-09 3.023289525811e-01 + 2.672800000000e-09 1.903511757031e-01 + 2.682800000000e-09 5.234751706855e-02 + 2.692800000000e-09 -9.523535196489e-02 + 2.702800000000e-09 -2.326331900274e-01 + 2.712800000000e-09 -3.384915022605e-01 + 2.722800000000e-09 -3.954476343935e-01 + 2.732800000000e-09 -3.954635278762e-01 + 2.742800000000e-09 -3.405864023401e-01 + 2.752800000000e-09 -2.400414613364e-01 + 2.762800000000e-09 -1.073822622810e-01 + 2.772800000000e-09 4.150886108833e-02 + 2.782800000000e-09 1.878356108149e-01 + 2.792800000000e-09 3.098996526972e-01 + 2.802800000000e-09 3.876851778252e-01 + 2.812800000000e-09 4.091864879724e-01 + 2.822800000000e-09 3.730116305614e-01 + 2.832800000000e-09 2.862387815883e-01 + 2.842800000000e-09 1.615399061279e-01 + 2.852800000000e-09 1.429949387993e-02 + 2.862800000000e-09 -1.377718240006e-01 + 2.872800000000e-09 -2.734104276057e-01 + 2.882800000000e-09 -3.708389529822e-01 + 2.892800000000e-09 -4.143280005550e-01 + 2.902800000000e-09 -3.985830553671e-01 + 2.912800000000e-09 -3.279611141443e-01 + 2.922800000000e-09 -2.137506193658e-01 + 2.932800000000e-09 -7.088140529828e-02 + 2.942800000000e-09 8.383155584913e-02 + 2.952800000000e-09 2.301126537707e-01 + 2.962800000000e-09 3.453744099013e-01 + 2.972800000000e-09 4.105361931211e-01 + 2.982800000000e-09 4.162425531004e-01 + 2.992800000000e-09 3.639558813817e-01 + 3.002800000000e-09 2.629029125712e-01 + 3.012800000000e-09 1.270995026131e-01 + 3.022800000000e-09 -2.719291589066e-02 + 3.032800000000e-09 -1.809203370349e-01 + 3.042800000000e-09 -3.115907576558e-01 + 3.052800000000e-09 -3.977041004153e-01 + 3.062800000000e-09 -4.257831376299e-01 + 3.072800000000e-09 -3.935742468913e-01 + 3.082800000000e-09 -3.078952416981e-01 + 3.092800000000e-09 -1.816394011369e-01 + 3.102800000000e-09 -3.059579160053e-02 + 3.112800000000e-09 1.273597191001e-01 + 3.122800000000e-09 2.705441670977e-01 + 3.132800000000e-09 3.760484564013e-01 + 3.142800000000e-09 4.265486444738e-01 + 3.152800000000e-09 4.157289179505e-01 + 3.162800000000e-09 3.477458376719e-01 + 3.172800000000e-09 2.336790781647e-01 + 3.182800000000e-09 8.853881898550e-02 + 3.192800000000e-09 -7.056518593147e-02 + 3.202800000000e-09 -2.231789432522e-01 + 3.212800000000e-09 -3.459807468487e-01 + 3.222800000000e-09 -4.185276194298e-01 + 3.232800000000e-09 -4.301823716164e-01 + 3.242800000000e-09 -3.816512696214e-01 + 3.252800000000e-09 -2.819123727269e-01 + 3.262800000000e-09 -1.451618865825e-01 + 3.272800000000e-09 1.211424434142e-02 + 3.282800000000e-09 1.708533900892e-01 + 3.292800000000e-09 3.081886012680e-01 + 3.302800000000e-09 4.015423298995e-01 + 3.312800000000e-09 4.360991422248e-01 + 3.322800000000e-09 4.086339662461e-01 + 3.332800000000e-09 3.254912783119e-01 + 3.342800000000e-09 1.995309697241e-01 + 3.352800000000e-09 4.677353324670e-02 + 3.362800000000e-09 -1.148989549350e-01 + 3.372800000000e-09 -2.637105684554e-01 + 3.382800000000e-09 -3.760215960330e-01 + 3.392800000000e-09 -4.332315189045e-01 + 3.402800000000e-09 -4.278880002964e-01 + 3.412800000000e-09 -3.634729823184e-01 + 3.422800000000e-09 -2.508347204023e-01 + 3.432800000000e-09 -1.051490163853e-01 + 3.442800000000e-09 5.642111967785e-02 + 3.452800000000e-09 2.135062591801e-01 + 3.462800000000e-09 3.424039579032e-01 + 3.472800000000e-09 4.216061231566e-01 + 3.482800000000e-09 4.392439009265e-01 + 3.492800000000e-09 3.951648797999e-01 + 3.502800000000e-09 2.979284288406e-01 + 3.512800000000e-09 1.617038729252e-01 + 3.522800000000e-09 3.094406264446e-03 + 3.532800000000e-09 -1.589639631847e-01 + 3.542800000000e-09 -3.015127026753e-01 + 3.552800000000e-09 -4.012118749243e-01 + 3.562800000000e-09 -4.420392036281e-01 + 3.572800000000e-09 -4.197340828683e-01 + 3.582800000000e-09 -3.400302595468e-01 + 3.592800000000e-09 -2.155815496487e-01 + 3.602800000000e-09 -6.250732511425e-02 + 3.612800000000e-09 1.013863584631e-01 + 3.622800000000e-09 2.544326524613e-01 + 3.632800000000e-09 3.725556128024e-01 + 3.642800000000e-09 4.360684993020e-01 + 3.652800000000e-09 4.363722865961e-01 + 3.662800000000e-09 3.761769816303e-01 + 3.672800000000e-09 2.659607738525e-01 + 3.682800000000e-09 1.209022932249e-01 + 3.692800000000e-09 -4.184245833596e-02 + 3.702800000000e-09 -2.021147489527e-01 + 3.712800000000e-09 -3.360741465119e-01 + 3.722800000000e-09 -4.213766501735e-01 + 3.732800000000e-09 -4.449720124966e-01 + 3.742800000000e-09 -4.057782947501e-01 + 3.752800000000e-09 -3.118206707814e-01 + 3.762800000000e-09 -1.770969985886e-01 + 3.772800000000e-09 -1.825180588927e-02 + 3.782800000000e-09 1.459741071650e-01 + 3.792800000000e-09 2.927138819686e-01 + 3.802800000000e-09 3.980981908841e-01 + 3.812800000000e-09 4.449162722959e-01 + 3.822800000000e-09 4.279069945588e-01 + 3.832800000000e-09 3.523939747505e-01 + 3.842800000000e-09 2.304948648088e-01 + 3.852800000000e-09 7.806858961289e-02 + 3.862800000000e-09 -8.705373884443e-02 + 3.872800000000e-09 -2.434126417664e-01 + 3.882800000000e-09 -3.667031627096e-01 + 3.892800000000e-09 -4.362916349468e-01 + 3.902800000000e-09 -4.424154161085e-01 + 3.912800000000e-09 -3.869309646048e-01 + 3.922800000000e-09 -2.798446345973e-01 + 3.932800000000e-09 -1.362158039085e-01 + 3.942800000000e-09 2.684030268943e-02 + 3.952800000000e-09 1.894474697250e-01 + 3.962800000000e-09 3.277914979301e-01 + 3.972800000000e-09 4.188614643566e-01 + 3.982800000000e-09 4.484580123404e-01 + 3.992800000000e-09 4.145031315586e-01 + 4.002800000000e-09 3.243953444562e-01 + 4.012800000000e-09 1.918579412469e-01 + 4.022800000000e-09 3.351987347420e-02 + 4.032800000000e-09 -1.321041421442e-01 + 4.042800000000e-09 -2.823608026371e-01 + 4.052800000000e-09 -3.930187530303e-01 + 4.062800000000e-09 -4.458303316835e-01 + 4.072800000000e-09 -4.344302042391e-01 + 4.082800000000e-09 -3.633699593281e-01 + 4.092800000000e-09 -2.443591503268e-01 + 4.102800000000e-09 -9.320218954166e-02 + 4.112800000000e-09 7.241823590303e-02 + 4.122800000000e-09 2.313604515469e-01 + 4.132800000000e-09 3.592426659465e-01 + 4.142800000000e-09 4.346215599414e-01 + 4.152800000000e-09 4.465826608248e-01 + 4.162800000000e-09 3.960804614218e-01 + 4.172800000000e-09 2.925783535359e-01 + 4.182800000000e-09 1.509275659802e-01 + 4.192800000000e-09 -1.182037376398e-02 + 4.202800000000e-09 -1.761014444495e-01 + 4.212800000000e-09 -3.182457116187e-01 + 4.222800000000e-09 -4.147234091036e-01 + 4.232800000000e-09 -4.502443861846e-01 + 4.242800000000e-09 -4.216953104870e-01 + 4.252800000000e-09 -3.357864506240e-01 + 4.262800000000e-09 -2.058942068049e-01 + 4.272800000000e-09 -4.858679705157e-02 + 4.282800000000e-09 1.178524954807e-01 + 4.292800000000e-09 2.710610567089e-01 + 4.302800000000e-09 3.865836270775e-01 + 4.312800000000e-09 4.452265969897e-01 + 4.322800000000e-09 4.395062868883e-01 + 4.332800000000e-09 3.731571253711e-01 + 4.342800000000e-09 2.574215751877e-01 + 4.352800000000e-09 1.079772567998e-01 + 4.362800000000e-09 -5.763880726732e-02 + 4.372800000000e-09 -2.186405831505e-01 + 4.382800000000e-09 -3.506797463517e-01 + 4.392800000000e-09 -4.316187371044e-01 + 4.402800000000e-09 -4.494103896830e-01 + 4.412800000000e-09 -4.040682854076e-01 + 4.422800000000e-09 -3.044597969385e-01 + 4.432800000000e-09 -1.651628025086e-01 + 4.442800000000e-09 -3.151005009160e-03 + 4.452800000000e-09 1.623299471195e-01 + 4.462800000000e-09 3.078346913894e-01 + 4.472800000000e-09 4.094342698254e-01 + 4.482800000000e-09 4.508056471657e-01 + 4.492800000000e-09 4.277695176214e-01 + 4.502800000000e-09 3.464754759972e-01 + 4.512800000000e-09 2.197351894046e-01 + 4.522800000000e-09 6.377451979619e-02 + 4.532800000000e-09 -1.031789201592e-01 + 4.542800000000e-09 -2.590613479212e-01 + 4.552800000000e-09 -3.792818416463e-01 + 4.562800000000e-09 -4.437538409464e-01 + 4.572800000000e-09 -4.438478644656e-01 + 4.582800000000e-09 -3.824340874877e-01 + 4.592800000000e-09 -2.702434040912e-01 + 4.602800000000e-09 -1.227760926410e-01 + 4.612800000000e-09 4.255957006791e-02 + 4.622800000000e-09 2.053469797291e-01 + 4.632800000000e-09 3.413399298812e-01 + 4.642800000000e-09 4.277829578033e-01 + 4.652800000000e-09 4.514961040063e-01 + 4.662800000000e-09 4.115053677173e-01 + 4.672800000000e-09 3.160333583063e-01 + 4.682800000000e-09 1.793392706242e-01 + 4.692800000000e-09 1.831471168221e-02 + 4.702800000000e-09 -1.481022872447e-01 + 4.712800000000e-09 -2.967423528805e-01 + 4.722800000000e-09 -4.033577943192e-01 + 4.732800000000e-09 -4.505353421439e-01 + 4.742800000000e-09 -4.330646939644e-01 + 4.752800000000e-09 -3.564206992869e-01 + 4.762800000000e-09 -2.329235320056e-01 + 4.772800000000e-09 -7.867056750310e-02 + 4.782800000000e-09 8.833703701769e-02 + 4.792800000000e-09 2.464194557553e-01 + 4.802800000000e-09 3.709576766856e-01 + 4.812800000000e-09 4.410728138436e-01 + 4.822800000000e-09 4.469925130856e-01 + 4.832800000000e-09 3.906873535991e-01 + 4.842800000000e-09 2.823280405418e-01 + 4.852800000000e-09 1.371764027989e-01 + 4.862800000000e-09 -2.748809763935e-02 + 4.872800000000e-09 -1.916279789479e-01 + 4.882800000000e-09 -3.311820964222e-01 + 4.892800000000e-09 -4.228883965678e-01 + 4.902800000000e-09 -4.524749665361e-01 + 4.912800000000e-09 -4.179469588790e-01 + 4.922800000000e-09 -3.268375012521e-01 + 4.932800000000e-09 -1.930362269311e-01 + 4.942800000000e-09 -3.333190640457e-02 + 4.952800000000e-09 1.336351275887e-01 + 4.962800000000e-09 2.850243389742e-01 + 4.972800000000e-09 3.963750379220e-01 + 4.982800000000e-09 4.493213773298e-01 + 4.992800000000e-09 4.375462491890e-01 + 5.002800000000e-09 3.657094634544e-01 + 5.012800000000e-09 2.456540061969e-01 + 5.022800000000e-09 9.333551717566e-02 + 5.032800000000e-09 -7.345189170439e-02 + 5.042800000000e-09 -2.334277955384e-01 + 5.052800000000e-09 -3.620185196221e-01 + 5.062800000000e-09 -4.376356743324e-01 + 5.072800000000e-09 -4.493733383532e-01 + 5.082800000000e-09 -3.982745749729e-01 + 5.092800000000e-09 -2.939157477925e-01 + 5.102800000000e-09 -1.512781481447e-01 + 5.112800000000e-09 1.247935907657e-02 + 5.122800000000e-09 1.776888349322e-01 + 5.132800000000e-09 3.205270437796e-01 + 5.142800000000e-09 4.173137839880e-01 + 5.152800000000e-09 4.527266476960e-01 + 5.162800000000e-09 4.237235060298e-01 + 5.172800000000e-09 3.371129892632e-01 + 5.182800000000e-09 2.063816216319e-01 + 5.192800000000e-09 4.820123453350e-02 + 5.202800000000e-09 -1.190627133892e-01 + 5.212800000000e-09 -2.729280772878e-01 + 5.222800000000e-09 -3.888006633784e-01 + 5.232800000000e-09 -4.474247144904e-01 + 5.242800000000e-09 -4.413661284824e-01 + 5.252800000000e-09 -3.744436368231e-01 + 5.262800000000e-09 -2.579925491708e-01 + 5.272800000000e-09 -1.077883034052e-01 + 5.282800000000e-09 5.855820359311e-02 + 5.292800000000e-09 2.201699217775e-01 + 5.302800000000e-09 3.525793225546e-01 + 5.312800000000e-09 4.335671920830e-01 + 5.322800000000e-09 4.511095701252e-01 + 5.332800000000e-09 4.052950583099e-01 + 5.342800000000e-09 3.050743963154e-01 + 5.352800000000e-09 1.651124085734e-01 + 5.362800000000e-09 2.453406883355e-03 + 5.372800000000e-09 -1.635874072246e-01 + 5.382800000000e-09 -3.094660799040e-01 + 5.392800000000e-09 -4.111651170660e-01 + 5.402800000000e-09 -4.523567448826e-01 + 5.412800000000e-09 -4.289277900293e-01 + 5.422800000000e-09 -3.471071645222e-01 + 5.432800000000e-09 -2.197814536101e-01 + 5.442800000000e-09 -6.324398612689e-02 + 5.452800000000e-09 1.042204038601e-01 + 5.462800000000e-09 2.604685273157e-01 + 5.472800000000e-09 3.808242547212e-01 + 5.482800000000e-09 4.451748873662e-01 + 5.492800000000e-09 4.449433602630e-01 + 5.502800000000e-09 3.830711531518e-01 + 5.512800000000e-09 2.703585424667e-01 + 5.522800000000e-09 1.223716801552e-01 + 5.532800000000e-09 -4.343152127598e-02 + 5.542800000000e-09 -2.065716438055e-01 + 5.552800000000e-09 -3.427257951236e-01 + 5.562800000000e-09 -4.290958478040e-01 + 5.572800000000e-09 -4.525359066652e-01 + 5.582800000000e-09 -4.121402236532e-01 + 5.592800000000e-09 -3.161981038449e-01 + 5.602800000000e-09 -1.790304235564e-01 + 5.612800000000e-09 -1.757599494896e-02 + 5.622800000000e-09 1.491786199266e-01 + 5.632800000000e-09 2.979971258897e-01 + 5.642800000000e-09 4.045803087305e-01 + 5.652800000000e-09 4.515297208669e-01 + 5.662800000000e-09 4.336987038356e-01 + 5.672800000000e-09 3.566272526616e-01 + 5.682800000000e-09 2.326927119262e-01 + 5.692800000000e-09 7.803903677108e-02 + 5.702800000000e-09 -8.929279535557e-02 + 5.712800000000e-09 -2.475661837267e-01 + 5.722800000000e-09 -3.721080937986e-01 + 5.732800000000e-09 -4.420356039653e-01 + 5.742800000000e-09 -4.476316030416e-01 + 5.752800000000e-09 -3.909313268800e-01 + 5.762800000000e-09 -2.821617554345e-01 + 5.772800000000e-09 -1.366320418911e-01 + 5.782800000000e-09 2.834432294743e-02 + 5.792800000000e-09 1.926838745143e-01 + 5.802800000000e-09 3.322730500098e-01 + 5.812800000000e-09 4.238301631456e-01 + 5.822800000000e-09 4.531246455905e-01 + 5.832800000000e-09 4.182270087871e-01 + 5.842800000000e-09 3.267281222976e-01 + 5.852800000000e-09 1.925649055690e-01 + 5.862800000000e-09 3.255872128929e-02 + 5.872800000000e-09 -1.346146639370e-01 + 5.882800000000e-09 -2.860658576396e-01 + 5.892800000000e-09 -3.973039070802e-01 + 5.902800000000e-09 -4.499889190912e-01 + 5.912800000000e-09 -4.378672938782e-01 + 5.922800000000e-09 -3.656580869349e-01 + 5.932800000000e-09 -2.452512222201e-01 + 5.942800000000e-09 -9.263589885403e-02 + 5.952800000000e-09 7.436522049121e-02 + 5.962800000000e-09 2.344283045648e-01 + 5.972800000000e-09 3.629433615632e-01 + 5.982800000000e-09 4.383309082897e-01 + 5.992800000000e-09 4.497425449808e-01 + 6.002800000000e-09 3.982829151160e-01 + 6.012800000000e-09 2.935775837171e-01 + 6.022800000000e-09 1.506446452819e-01 + 6.032800000000e-09 -1.333310888113e-02 + 6.042800000000e-09 -1.786522004354e-01 + 6.052800000000e-09 -3.214506252573e-01 + 6.062800000000e-09 -4.180415406940e-01 + 6.072800000000e-09 -4.531483429842e-01 + 6.082800000000e-09 -4.237934241428e-01 + 6.092800000000e-09 -3.368386752578e-01 + 6.102800000000e-09 -2.058098565868e-01 + 6.112800000000e-09 -4.740247032705e-02 + 6.122800000000e-09 1.199911591083e-01 + 6.132800000000e-09 2.738503733411e-01 + 6.142800000000e-09 3.895624310380e-01 + 6.152800000000e-09 4.479038287138e-01 + 6.162800000000e-09 4.415044550403e-01 + 6.172800000000e-09 3.742394859462e-01 + 6.182800000000e-09 2.574856932616e-01 + 6.192800000000e-09 1.070448037276e-01 + 6.202800000000e-09 -5.945129415316e-02 + 6.212800000000e-09 -2.210902476148e-01 + 6.222800000000e-09 -3.533778429436e-01 + 6.232800000000e-09 -4.341106359302e-01 + 6.242800000000e-09 -4.513236412508e-01 + 6.252800000000e-09 -4.051660174368e-01 + 6.262800000000e-09 -3.046342192661e-01 + 6.272800000000e-09 -1.644241824532e-01 + 6.282800000000e-09 -1.597687104830e-03 + 6.292800000000e-09 1.645013262186e-01 + 6.302800000000e-09 3.102975938827e-01 + 6.312800000000e-09 4.117736296715e-01 + 6.322800000000e-09 4.526496809116e-01 + 6.332800000000e-09 4.288773116639e-01 + 6.342800000000e-09 3.467384945714e-01 + 6.352800000000e-09 2.191532900740e-01 + 6.362800000000e-09 6.243116668248e-02 + 6.372800000000e-09 -1.051205706633e-01 + 6.382800000000e-09 -2.613258061701e-01 + 6.392800000000e-09 -3.814955608889e-01 + 6.402800000000e-09 -4.455519965392e-01 + 6.412800000000e-09 -4.449824384864e-01 + 6.422800000000e-09 -3.827837072787e-01 + 6.432800000000e-09 -2.697949113003e-01 + 6.442800000000e-09 -1.216048446404e-01 + 6.452800000000e-09 4.431272990907e-02 + 6.462800000000e-09 2.074482717505e-01 + 6.472800000000e-09 3.434569154053e-01 + 6.482800000000e-09 4.295589302343e-01 + 6.492800000000e-09 4.526677323571e-01 + 6.502800000000e-09 4.119381484774e-01 + 6.512800000000e-09 3.157037971491e-01 + 6.522800000000e-09 1.783138790857e-01 + 6.532800000000e-09 1.672070461295e-02 + 6.542800000000e-09 -1.500651785273e-01 + 6.552800000000e-09 -2.987800270015e-01 + 6.562800000000e-09 -4.051271152203e-01 + 6.572800000000e-09 -4.517576970242e-01 + 6.582800000000e-09 -4.335892375834e-01 + 6.592800000000e-09 -3.562119702528e-01 + 6.602800000000e-09 -2.320358295781e-01 + 6.612800000000e-09 -7.721932382598e-02 + 6.622800000000e-09 9.017852369161e-02 + 6.632800000000e-09 2.483915429759e-01 + 6.642800000000e-09 3.727359980060e-01 + 6.652800000000e-09 4.423639703294e-01 + 6.662800000000e-09 4.476228769375e-01 + 6.672800000000e-09 3.906033473837e-01 + 6.682800000000e-09 2.815703297821e-01 + 6.692800000000e-09 1.358542224595e-01 + 6.702800000000e-09 -2.921905543934e-02 + 6.712800000000e-09 -1.935393867442e-01 + 6.722800000000e-09 -3.329731407507e-01 + 6.732800000000e-09 -4.242569877345e-01 + 6.742800000000e-09 -4.532191334792e-01 + 6.752800000000e-09 -4.179913503037e-01 + 6.762800000000e-09 -3.262087975954e-01 + 6.772800000000e-09 -1.918356638224e-01 + 6.782800000000e-09 -3.170465554624e-02 + 6.792800000000e-09 1.354879795326e-01 + 6.802800000000e-09 2.868272173136e-01 + 6.812800000000e-09 3.978246369545e-01 + 6.822800000000e-09 4.501891374374e-01 + 6.832800000000e-09 4.377317720538e-01 + 6.842800000000e-09 3.652219350369e-01 + 6.852800000000e-09 2.445816952961e-01 + 6.862800000000e-09 9.181417442116e-02 + 6.872800000000e-09 -7.524320241308e-02 + 6.882800000000e-09 -2.352392066114e-01 + 6.892800000000e-09 -3.635534079937e-01 + 6.902800000000e-09 -4.386399758076e-01 + 6.912800000000e-09 -4.497148284065e-01 + 6.922800000000e-09 -3.979386785893e-01 + 6.932800000000e-09 -2.929751890382e-01 + 6.942800000000e-09 -1.498635038181e-01 + 6.952800000000e-09 1.420345890372e-02 + 6.962800000000e-09 1.794982142068e-01 + 6.972800000000e-09 3.221391512618e-01 + 6.982800000000e-09 4.184562565203e-01 + 6.992800000000e-09 4.532304753875e-01 + 7.002800000000e-09 4.235464462256e-01 + 7.012800000000e-09 3.363110845818e-01 + 7.022800000000e-09 2.050772806964e-01 + 7.032800000000e-09 4.655087830826e-02 + 7.042800000000e-09 -1.208581519926e-01 + 7.052800000000e-09 -2.746043652828e-01 + 7.062800000000e-09 -3.900763135214e-01 + 7.072800000000e-09 -4.480974792065e-01 + 7.082800000000e-09 -4.413628553731e-01 + 7.092800000000e-09 -3.737985800655e-01 + 7.102800000000e-09 -2.568138667525e-01 + 7.112800000000e-09 -1.062247036159e-01 + 7.122800000000e-09 6.032481086846e-02 + 7.132800000000e-09 2.218965196501e-01 + 7.142800000000e-09 3.539849918828e-01 + 7.152800000000e-09 4.344180933327e-01 + 7.162800000000e-09 4.512945383319e-01 + 7.172800000000e-09 4.048205989524e-01 + 7.182800000000e-09 3.040315720209e-01 + 7.192800000000e-09 1.636449243428e-01 + 7.202800000000e-09 7.310997426349e-04 + 7.212800000000e-09 -1.653441829344e-01 + 7.222800000000e-09 -3.109857585534e-01 + 7.232800000000e-09 -4.121905650896e-01 + 7.242800000000e-09 -4.527345878258e-01 + 7.252800000000e-09 -4.286327234880e-01 + 7.262800000000e-09 -3.462148146484e-01 + 7.272800000000e-09 -2.184271262887e-01 + 7.282800000000e-09 -6.158668581548e-02 + 7.292800000000e-09 1.059825748726e-01 + 7.302800000000e-09 2.620796529042e-01 + 7.312800000000e-09 3.820147090838e-01 + 7.322800000000e-09 4.457541018708e-01 + 7.332800000000e-09 4.448503265094e-01 + 7.342800000000e-09 3.823519830960e-01 + 7.352800000000e-09 2.691313908070e-01 + 7.362800000000e-09 1.207925821351e-01 + 7.372800000000e-09 -4.518044806513e-02 + 7.382800000000e-09 -2.082537425182e-01 + 7.392800000000e-09 -3.440697336480e-01 + 7.402800000000e-09 -4.298767486274e-01 + 7.412800000000e-09 -4.526505931314e-01 + 7.422800000000e-09 -4.116043288987e-01 + 7.432800000000e-09 -3.151114799416e-01 + 7.442800000000e-09 -1.775436699036e-01 + 7.452800000000e-09 -1.586108401901e-02 + 7.462800000000e-09 1.509060016887e-01 + 7.472800000000e-09 2.994732552628e-01 + 7.482800000000e-09 4.055552446561e-01 + 7.492800000000e-09 4.518577755664e-01 + 7.502800000000e-09 4.333613685931e-01 + 7.512800000000e-09 3.557031954498e-01 + 7.522800000000e-09 2.313212265592e-01 + 7.532800000000e-09 7.638306707386e-02 + 7.542800000000e-09 -9.103790894707e-02 + 7.552800000000e-09 -2.491508297629e-01 + 7.562800000000e-09 -3.732685310033e-01 + 7.572800000000e-09 -4.425839241033e-01 + 7.582800000000e-09 -4.475093395178e-01 + 7.592800000000e-09 -3.901883110754e-01 + 7.602800000000e-09 -2.809201118140e-01 + 7.612800000000e-09 -1.350517639326e-01 + 7.622800000000e-09 3.008200039167e-02 + 7.632800000000e-09 1.943479060390e-01 + 7.642800000000e-09 3.335978834820e-01 + 7.652800000000e-09 4.245929249058e-01 + 7.662800000000e-09 4.532218782474e-01 + 7.672800000000e-09 4.176760083879e-01 + 7.682800000000e-09 3.256317822098e-01 + 7.692800000000e-09 1.910769229022e-01 + 7.702800000000e-09 3.085187663860e-02 + 7.712800000000e-09 -1.363292828189e-01 + 7.722800000000e-09 -2.875301070108e-01 + 7.732800000000e-09 -3.982700946290e-01 + 7.742800000000e-09 -4.503098978561e-01 + 7.752800000000e-09 -4.375242704341e-01 + 7.762800000000e-09 -3.647306057776e-01 + 7.772800000000e-09 -2.438801411396e-01 + 7.782800000000e-09 -9.098645929918e-02 + 7.792800000000e-09 7.610062103479e-02 + 7.802800000000e-09 2.360054926400e-01 + 7.812800000000e-09 3.641017446377e-01 + 7.822800000000e-09 4.388807689593e-01 + 7.832800000000e-09 4.496228216452e-01 + 7.842800000000e-09 3.975427835286e-01 + 7.852800000000e-09 2.923399216838e-01 + 7.862800000000e-09 1.490714714847e-01 + 7.872800000000e-09 -1.506186328175e-02 + 7.882800000000e-09 -1.803107819833e-01 + 7.892800000000e-09 -3.227775586578e-01 + 7.902800000000e-09 -4.188126725671e-01 + 7.912800000000e-09 -4.532556221154e-01 + 7.922800000000e-09 -4.232518061215e-01 + 7.932800000000e-09 -3.357510021860e-01 + 7.942800000000e-09 -2.043307717794e-01 + 7.952800000000e-09 -4.570496696407e-02 + 7.962800000000e-09 1.217004827930e-01 + 7.972800000000e-09 2.753180020773e-01 + 7.982800000000e-09 3.905407570148e-01 + 7.992800000000e-09 4.482409267913e-01 + 8.002800000000e-09 4.411776601887e-01 + 8.012800000000e-09 3.733262552326e-01 + 8.022800000000e-09 2.561263095202e-01 + 8.032800000000e-09 1.054058229458e-01 + 8.042800000000e-09 -6.118043076191e-02 + 8.052800000000e-09 -2.226704240164e-01 + 8.062800000000e-09 -3.545502986493e-01 + 8.072800000000e-09 -4.346813731784e-01 + 8.082800000000e-09 -4.512257838136e-01 + 8.092800000000e-09 -4.044453279617e-01 + 8.102800000000e-09 -3.034123134946e-01 + 8.112800000000e-09 -1.628637659678e-01 + 8.122800000000e-09 1.227403854043e-04 + 8.132800000000e-09 1.661611212644e-01 + 8.142800000000e-09 3.116385510449e-01 + 8.152800000000e-09 4.125686421349e-01 + 8.162800000000e-09 4.527835271671e-01 + 8.172800000000e-09 4.283600783758e-01 + 8.182800000000e-09 3.456742908771e-01 + 8.192800000000e-09 2.176969643918e-01 + 8.202800000000e-09 6.075113117837e-02 + 8.212800000000e-09 -1.068237739657e-01 + 8.222800000000e-09 -2.628035899010e-01 + 8.232800000000e-09 -3.824997032154e-01 + 8.242800000000e-09 -4.459235737529e-01 + 8.252800000000e-09 -4.446918798180e-01 + 8.262800000000e-09 -3.819034904249e-01 + 8.272800000000e-09 -2.684624086510e-01 + 8.282800000000e-09 -1.199863799953e-01 + 8.292800000000e-09 4.603137612030e-02 + 8.302800000000e-09 2.090337758211e-01 + 8.312800000000e-09 3.446523580322e-01 + 8.322800000000e-09 4.301647660121e-01 + 8.332800000000e-09 4.526086953756e-01 + 8.342800000000e-09 4.112540123518e-01 + 8.352800000000e-09 3.145126892591e-01 + 8.362800000000e-09 1.767773800346e-01 + 8.372800000000e-09 1.501511692795e-02 + 8.382800000000e-09 -1.517250350381e-01 + 8.392800000000e-09 -3.001396658121e-01 + 8.402800000000e-09 -4.059560327283e-01 + 8.412800000000e-09 -4.520205631328e-01 + 8.422800000000e-09 -4.333013889991e-01 + 8.432800000000e-09 -3.553501134873e-01 + 8.442800000000e-09 -2.307017917929e-01 + 8.452800000000e-09 -7.557691179721e-02 + 8.462800000000e-09 9.193544079149e-02 + 8.472800000000e-09 2.500118267419e-01 + 8.482800000000e-09 3.739500525906e-01 + 8.492800000000e-09 4.429749828217e-01 + 8.502800000000e-09 4.475628116676e-01 + 8.512800000000e-09 3.899136556992e-01 + 8.522800000000e-09 2.803664639685e-01 + 8.532800000000e-09 1.342921979718e-01 + 8.542800000000e-09 -3.095980481447e-02 + 8.552800000000e-09 -1.952272295913e-01 + 8.562800000000e-09 -3.343389203470e-01 + 8.572800000000e-09 -4.250708604665e-01 + 8.582800000000e-09 -4.533696663363e-01 + 8.592800000000e-09 -4.174882844728e-01 + 8.602800000000e-09 -3.251489451374e-01 + 8.612800000000e-09 -1.903685195829e-01 + 8.622800000000e-09 -3.000103383995e-02 + 8.632800000000e-09 1.372172585006e-01 + 8.642800000000e-09 2.883217905722e-01 + 8.652800000000e-09 3.988318116407e-01 + 8.662800000000e-09 4.505550418705e-01 + 8.672800000000e-09 4.374310982897e-01 + 8.682800000000e-09 3.643286108290e-01 + 8.692800000000e-09 2.432325104502e-01 + 8.702800000000e-09 9.017208092605e-02 + 8.712800000000e-09 -7.698638669816e-02 + 8.722800000000e-09 -2.368381648259e-01 + 8.732800000000e-09 -3.647439781147e-01 + 8.742800000000e-09 -4.392271095061e-01 + 8.752800000000e-09 -4.496318190528e-01 + 8.762800000000e-09 -3.972297454706e-01 + 8.772800000000e-09 -2.917592971055e-01 + 8.782800000000e-09 -1.483002995478e-01 + 8.792800000000e-09 1.593497814495e-02 + 8.802800000000e-09 1.811717426943e-01 + 8.812800000000e-09 3.234908782015e-01 + 8.822800000000e-09 4.192578535185e-01 + 8.832800000000e-09 4.533691567007e-01 + 8.842800000000e-09 4.230327410595e-01 + 8.852800000000e-09 3.352442492525e-01 + 8.862800000000e-09 2.036095302049e-01 + 8.872800000000e-09 4.485411613014e-02 + 8.882800000000e-09 -1.225772356004e-01 + 8.892800000000e-09 -2.760907078269e-01 + 8.902800000000e-09 -3.910792039687e-01 + 8.912800000000e-09 -4.484610142738e-01 + 8.922800000000e-09 -4.410605637271e-01 + 8.932800000000e-09 -3.729046886868e-01 + 8.942800000000e-09 -2.554663339083e-01 + 8.952800000000e-09 -1.045887957783e-01 + 8.962800000000e-09 6.205981505962e-02 + 8.972800000000e-09 2.234905463095e-01 + 8.982800000000e-09 3.551769795941e-01 + 8.992800000000e-09 4.350108318704e-01 + 9.002800000000e-09 4.512178790282e-01 + 9.012800000000e-09 4.041174506079e-01 + 9.022800000000e-09 3.028213425265e-01 + 9.032800000000e-09 1.620889968087e-01 + 9.042800000000e-09 -9.924088109476e-04 + 9.052800000000e-09 -1.670140235930e-01 + 9.062800000000e-09 -3.123420802246e-01 + 9.072800000000e-09 -4.130036886060e-01 + 9.082800000000e-09 -4.528865389636e-01 + 9.092800000000e-09 -4.281310782305e-01 + 9.102800000000e-09 -3.451616986157e-01 + 9.112800000000e-09 -2.169760700597e-01 + 9.122800000000e-09 -5.990554642082e-02 + 9.132800000000e-09 1.076929419654e-01 + 9.142800000000e-09 2.635694599151e-01 + 9.152800000000e-09 3.830337087674e-01 + 9.162800000000e-09 4.461410144829e-01 + 9.172800000000e-09 4.445734193731e-01 + 9.182800000000e-09 3.814819626487e-01 + 9.192800000000e-09 2.678043947074e-01 + 9.202800000000e-09 1.191742902063e-01 + 9.212800000000e-09 -4.690413962261e-02 + 9.222800000000e-09 -2.098486274487e-01 + 9.232800000000e-09 -3.452772829161e-01 + 9.242800000000e-09 -4.304954499246e-01 + 9.252800000000e-09 -4.526033413583e-01 + 9.262800000000e-09 -4.109293493119e-01 + 9.272800000000e-09 -3.139257444767e-01 + 9.282800000000e-09 -1.760081177959e-01 + 9.292800000000e-09 -1.415196561556e-02 + 9.302800000000e-09 1.525732116921e-01 + 9.312800000000e-09 3.008427992731e-01 + 9.322800000000e-09 4.063949573273e-01 + 9.332800000000e-09 4.521293740465e-01 + 9.342800000000e-09 4.330785923072e-01 + 9.352800000000e-09 3.548436621013e-01 + 9.362800000000e-09 2.299870281050e-01 + 9.372800000000e-09 7.473788162702e-02 + 9.382800000000e-09 -9.279973807112e-02 + 9.392800000000e-09 -2.507772460749e-01 + 9.402800000000e-09 -3.744888347925e-01 + 9.412800000000e-09 -4.432003893128e-01 + 9.422800000000e-09 -4.474532871830e-01 + 9.432800000000e-09 -3.895007293034e-01 + 9.442800000000e-09 -2.797162000302e-01 + 9.452800000000e-09 -1.334874635932e-01 + 9.462800000000e-09 3.182693263112e-02 + 9.472800000000e-09 1.960410584103e-01 + 9.482800000000e-09 3.349690861408e-01 + 9.492800000000e-09 4.254114804469e-01 + 9.502800000000e-09 4.533758279939e-01 + 9.512800000000e-09 4.171747267070e-01 + 9.522800000000e-09 3.245718547999e-01 + 9.532800000000e-09 1.896078083623e-01 + 9.542800000000e-09 2.914458686168e-02 + 9.552800000000e-09 -1.380632740455e-01 + 9.562800000000e-09 -2.890295264146e-01 + 9.572800000000e-09 -3.992814056422e-01 + 9.582800000000e-09 -4.506787354590e-01 + 9.592800000000e-09 -4.372250333377e-01 + 9.602800000000e-09 -3.638370987793e-01 + 9.612800000000e-09 -2.425291719588e-01 + 9.622800000000e-09 -8.934108102947e-02 + 9.632800000000e-09 7.784809038302e-02 + 9.642800000000e-09 2.376089032823e-01 + 9.652800000000e-09 3.652960855145e-01 + 9.662800000000e-09 4.394704812004e-01 + 9.672800000000e-09 4.495409940984e-01 + 9.682800000000e-09 3.968335606967e-01 + 9.692800000000e-09 2.911223051032e-01 + 9.702800000000e-09 1.475052155362e-01 + 9.712800000000e-09 -1.679738560355e-02 + 9.722800000000e-09 -1.819885123124e-01 + 9.732800000000e-09 -3.241328388856e-01 + 9.742800000000e-09 -4.196166178959e-01 + 9.752800000000e-09 -4.533952907688e-01 + 9.762800000000e-09 -4.227377063925e-01 + 9.772800000000e-09 -3.346824428589e-01 + 9.782800000000e-09 -2.028601212935e-01 + 9.792800000000e-09 -4.400439860500e-02 + 9.802800000000e-09 1.234236306485e-01 + 9.812800000000e-09 2.768078469650e-01 + 9.822800000000e-09 3.915459502709e-01 + 9.832800000000e-09 4.486053590697e-01 + 9.842800000000e-09 4.408748739016e-01 + 9.852800000000e-09 3.724306116446e-01 + 9.862800000000e-09 2.547759754158e-01 + 9.872800000000e-09 1.037662637715e-01 + 9.882800000000e-09 -6.291942160305e-02 + 9.892800000000e-09 -2.242679826661e-01 + 9.902800000000e-09 -3.557446468578e-01 + 9.912800000000e-09 -4.352750113677e-01 + 9.922800000000e-09 -4.511486238742e-01 + 9.932800000000e-09 -4.037404398857e-01 + 9.942800000000e-09 -3.021993202790e-01 + 9.952800000000e-09 -1.613042783594e-01 + 9.962800000000e-09 1.850204572038e-03 + 9.972800000000e-09 1.678345791808e-01 + 9.982800000000e-09 3.129973889485e-01 + 9.992800000000e-09 4.133827788063e-01 + 1.000000000000e-08 4.484478536981e-01 diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/conditions.yaml new file mode 100644 index 00000000..6b58f300 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 19 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_19 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/LC_Oscillator_tb.sch new file mode 100644 index 00000000..f4413a3d --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/LC_Oscillator_tb_20.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP 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/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 80 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/conditions.yaml new file mode 100644 index 00000000..a736c299 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 20 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: tt +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_20 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/LC_Oscillator_tb.sch new file mode 100644 index 00000000..f5b0c8d4 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/LC_Oscillator_tb_21.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 80 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/conditions.yaml new file mode 100644 index 00000000..ce71a314 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 21 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_21 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/LC_Oscillator_tb.sch new file mode 100644 index 00000000..ff1fd492 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/LC_Oscillator_tb_22.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 80 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/LC_Oscillator_tb_22.data b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/LC_Oscillator_tb_22.data new file mode 100644 index 00000000..3bcfec59 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/LC_Oscillator_tb_22.data @@ -0,0 +1,985 @@ + 1.628000000000e-10 7.462015324670e-03 + 1.728000000000e-10 -6.256359287127e-03 + 1.828000000000e-10 -1.947939464126e-02 + 1.928000000000e-10 -3.034608665676e-02 + 2.028000000000e-10 -3.727079390626e-02 + 2.128000000000e-10 -3.917713039254e-02 + 2.228000000000e-10 -3.566402772378e-02 + 2.328000000000e-10 -2.707763600809e-02 + 2.428000000000e-10 -1.447813124100e-02 + 2.528000000000e-10 4.893286847443e-04 + 2.628000000000e-10 1.580373551747e-02 + 2.728000000000e-10 2.933423360913e-02 + 2.828000000000e-10 3.913545495466e-02 + 2.928000000000e-10 4.373093390651e-02 + 3.028000000000e-10 4.233865012378e-02 + 3.128000000000e-10 3.499740504213e-02 + 3.228000000000e-10 2.257588627703e-02 + 3.328000000000e-10 6.667647601252e-03 + 3.428000000000e-10 -1.060854651401e-02 + 3.528000000000e-10 -2.688147204474e-02 + 3.628000000000e-10 -3.984650084814e-02 + 3.728000000000e-10 -4.759459078779e-02 + 3.828000000000e-10 -4.889923297470e-02 + 3.928000000000e-10 -4.340960680427e-02 + 4.028000000000e-10 -3.171564611244e-02 + 4.128000000000e-10 -1.528141085475e-02 + 4.228000000000e-10 3.736367483853e-03 + 4.328000000000e-10 2.275994025390e-02 + 4.428000000000e-10 3.912897403376e-02 + 4.528000000000e-10 5.047226151644e-02 + 4.628000000000e-10 5.506070810499e-02 + 4.728000000000e-10 5.207617346251e-02 + 4.828000000000e-10 4.174493772919e-02 + 4.928000000000e-10 2.531567528440e-02 + 5.028000000000e-10 4.911723956107e-03 + 5.128000000000e-10 -1.673757535376e-02 + 5.228000000000e-10 -3.664841605540e-02 + 5.328000000000e-10 -5.198143089124e-02 + 5.428000000000e-10 -6.045703787421e-02 + 5.528000000000e-10 -6.070345153897e-02 + 5.628000000000e-10 -5.247997862317e-02 + 5.728000000000e-10 -3.672223292437e-02 + 5.828000000000e-10 -1.542077171418e-02 + 5.928000000000e-10 8.614774586663e-03 + 6.028000000000e-10 3.211102099655e-02 + 6.128000000000e-10 5.176683473586e-02 + 6.228000000000e-10 6.470866636109e-02 + 6.328000000000e-10 6.893549128004e-02 + 6.428000000000e-10 6.363851994286e-02 + 6.528000000000e-10 4.932951175817e-02 + 6.628000000000e-10 2.777449238700e-02 + 6.728000000000e-10 1.768559576540e-03 + 6.828000000000e-10 -2.520396944487e-02 + 6.928000000000e-10 -4.940453912813e-02 + 7.028000000000e-10 -6.734986991857e-02 + 7.128000000000e-10 -7.633734398201e-02 + 7.228000000000e-10 -7.487697893714e-02 + 7.328000000000e-10 -6.292918840577e-02 + 7.428000000000e-10 -4.191025305346e-02 + 7.528000000000e-10 -1.450157143681e-02 + 7.628000000000e-10 1.567936075059e-02 + 7.728000000000e-10 4.451254050313e-02 + 7.828000000000e-10 6.790927766425e-02 + 7.928000000000e-10 8.240991634168e-02 + 8.028000000000e-10 8.573801967081e-02 + 8.128000000000e-10 7.716987257538e-02 + 8.228000000000e-10 5.763855877903e-02 + 8.328000000000e-10 2.959033352585e-02 + 8.428000000000e-10 -3.328969675841e-03 + 8.528000000000e-10 -3.670029431796e-02 + 8.628000000000e-10 -6.586749096797e-02 + 8.728000000000e-10 -8.658456907611e-02 + 8.828000000000e-10 -9.568791924153e-02 + 8.928000000000e-10 -9.162366398835e-02 + 9.028000000000e-10 -7.468602174666e-02 + 9.128000000000e-10 -4.694677766078e-02 + 9.228000000000e-10 -1.196144888915e-02 + 9.328000000000e-10 2.565107287183e-02 + 9.428000000000e-10 6.073447681596e-02 + 9.528000000000e-10 8.826085073530e-02 + 9.628000000000e-10 1.041023277672e-01 + 9.728000000000e-10 1.057312283824e-01 + 9.828000000000e-10 9.263379059812e-02 + 9.928000000000e-10 6.634796759795e-02 + 1.002800000000e-09 3.020162460443e-02 + 1.012800000000e-09 -1.110879011600e-02 + 1.022800000000e-09 -5.202925280837e-02 + 1.032800000000e-09 -8.679865122132e-02 + 1.042800000000e-09 -1.102800593840e-01 + 1.052800000000e-09 -1.188335204989e-01 + 1.062800000000e-09 -1.109486788865e-01 + 1.072800000000e-09 -8.744437602796e-02 + 1.082800000000e-09 -5.126552030946e-02 + 1.092800000000e-09 -7.033286149749e-03 + 1.102800000000e-09 3.939255309838e-02 + 1.112800000000e-09 8.155671434407e-02 + 1.122800000000e-09 1.133549575170e-01 + 1.132800000000e-09 1.299984918510e-01 + 1.142800000000e-09 1.288083705108e-01 + 1.152800000000e-09 1.096376067759e-01 + 1.162800000000e-09 7.484854679885e-02 + 1.172800000000e-09 2.884004915010e-02 + 1.182800000000e-09 -2.240810172925e-02 + 1.192800000000e-09 -7.190966934979e-02 + 1.202800000000e-09 -1.126431360758e-01 + 1.212800000000e-09 -1.385484303909e-01 + 1.222800000000e-09 -1.455410736411e-01 + 1.232800000000e-09 -1.323095643591e-01 + 1.242800000000e-09 -1.004494263485e-01 + 1.252800000000e-09 -5.397485658337e-02 + 1.262800000000e-09 1.163151823916e-03 + 1.272800000000e-09 5.761026789043e-02 + 1.282800000000e-09 1.074705253488e-01 + 1.292800000000e-09 1.434136966323e-01 + 1.302800000000e-09 1.599589000088e-01 + 1.312800000000e-09 1.544239373438e-01 + 1.322800000000e-09 1.273119872972e-01 + 1.332800000000e-09 8.204355266655e-02 + 1.342800000000e-09 2.437528289482e-02 + 1.352800000000e-09 -3.816758544726e-02 + 1.362800000000e-09 -9.703299953333e-02 + 1.372800000000e-09 -1.437033223974e-01 + 1.382800000000e-09 -1.711448362067e-01 + 1.392800000000e-09 -1.750592166422e-01 + 1.402800000000e-09 -1.546040461286e-01 + 1.412800000000e-09 -1.124265193069e-01 + 1.422800000000e-09 -5.387980000143e-02 + 1.432800000000e-09 1.358751979042e-02 + 1.442800000000e-09 8.094481862007e-02 + 1.452800000000e-09 1.386381018355e-01 + 1.462800000000e-09 1.780283777447e-01 + 1.472800000000e-09 1.930455851535e-01 + 1.482800000000e-09 1.812795304609e-01 + 1.492800000000e-09 1.442214159806e-01 + 1.502800000000e-09 8.665025987117e-02 + 1.512800000000e-09 1.584846254613e-02 + 1.522800000000e-09 -5.896130453386e-02 + 1.532800000000e-09 -1.274441358957e-01 + 1.542800000000e-09 -1.794946786279e-01 + 1.552800000000e-09 -2.071466383415e-01 + 1.562800000000e-09 -2.060908858808e-01 + 1.572800000000e-09 -1.763343973120e-01 + 1.582800000000e-09 -1.218466477637e-01 + 1.592800000000e-09 -4.959288242863e-02 + 1.602800000000e-09 3.121946440027e-02 + 1.612800000000e-09 1.097677926793e-01 + 1.622800000000e-09 1.747088604498e-01 + 1.632800000000e-09 2.161239630882e-01 + 1.642800000000e-09 2.276080174630e-01 + 1.652800000000e-09 2.074169997431e-01 + 1.662800000000e-09 1.583531880793e-01 + 1.672800000000e-09 8.684251201688e-02 + 1.682800000000e-09 1.919505546404e-03 + 1.692800000000e-09 -8.540323345021e-02 + 1.702800000000e-09 -1.628818222294e-01 + 1.712800000000e-09 -2.188200899005e-01 + 1.722800000000e-09 -2.445539128617e-01 + 1.732800000000e-09 -2.361880339380e-01 + 1.742800000000e-09 -1.950173636171e-01 + 1.752800000000e-09 -1.266663951914e-01 + 1.762800000000e-09 -3.980034594598e-02 + 1.772800000000e-09 5.458475279066e-02 + 1.782800000000e-09 1.437142935328e-01 + 1.792800000000e-09 2.144082062127e-01 + 1.802800000000e-09 2.556717037898e-01 + 1.812800000000e-09 2.611883817907e-01 + 1.822800000000e-09 2.303567520905e-01 + 1.832800000000e-09 1.676626350947e-01 + 1.842800000000e-09 8.130183852979e-02 + 1.852800000000e-09 -1.793550455136e-02 + 1.862800000000e-09 -1.171415290016e-01 + 1.872800000000e-09 -2.020948564490e-01 + 1.882800000000e-09 -2.596684206308e-01 + 1.892800000000e-09 -2.809160416971e-01 + 1.902800000000e-09 -2.628779358057e-01 + 1.912800000000e-09 -2.084778922011e-01 + 1.922800000000e-09 -1.252175816419e-01 + 1.932800000000e-09 -2.359097293111e-02 + 1.942800000000e-09 8.363531959636e-02 + 1.952800000000e-09 1.817063926684e-01 + 1.962800000000e-09 2.557277514004e-01 + 1.972800000000e-09 2.940976497452e-01 + 1.982800000000e-09 2.911218774919e-01 + 1.992800000000e-09 2.477198146681e-01 + 2.002800000000e-09 1.703154883659e-01 + 2.012800000000e-09 6.892834946402e-02 + 2.022800000000e-09 -4.392355947660e-02 + 2.032800000000e-09 -1.533982419258e-01 + 2.042800000000e-09 -2.433634862187e-01 + 2.052800000000e-09 -2.996241108343e-01 + 2.062800000000e-09 -3.135402131516e-01 + 2.072800000000e-09 -2.836584677660e-01 + 2.082800000000e-09 -2.148632168332e-01 + 2.092800000000e-09 -1.165373172112e-01 + 2.102800000000e-09 -8.663765029182e-04 + 2.112800000000e-09 1.175999085806e-01 + 2.122800000000e-09 2.221354008321e-01 + 2.132800000000e-09 2.964353227525e-01 + 2.142800000000e-09 3.288060180409e-01 + 2.152800000000e-09 3.148518135591e-01 + 2.162800000000e-09 2.574290466385e-01 + 2.172800000000e-09 1.649880551228e-01 + 2.182800000000e-09 4.933809661673e-02 + 2.192800000000e-09 -7.540857220757e-02 + 2.202800000000e-09 -1.925311575827e-01 + 2.212800000000e-09 -2.842361456745e-01 + 2.222800000000e-09 -3.358313722986e-01 + 2.232800000000e-09 -3.396883920803e-01 + 2.242800000000e-09 -2.963576228637e-01 + 2.252800000000e-09 -2.127956224083e-01 + 2.262800000000e-09 -1.001219128361e-01 + 2.272800000000e-09 2.793854213991e-02 + 2.282800000000e-09 1.550871327990e-01 + 2.292800000000e-09 2.627946128184e-01 + 2.302800000000e-09 3.338545356402e-01 + 2.312800000000e-09 3.572119675117e-01 + 2.322800000000e-09 3.303804827310e-01 + 2.332800000000e-09 2.583850240712e-01 + 2.342800000000e-09 1.515547925787e-01 + 2.352800000000e-09 2.320067493512e-02 + 2.362800000000e-09 -1.110304449510e-01 + 2.372800000000e-09 -2.326037090250e-01 + 2.382800000000e-09 -3.224855615732e-01 + 2.392800000000e-09 -3.662069661257e-01 + 2.402800000000e-09 -3.578566537553e-01 + 2.412800000000e-09 -3.002584072799e-01 + 2.422800000000e-09 -2.023384448783e-01 + 2.432800000000e-09 -7.670461462409e-02 + 2.442800000000e-09 6.151420094831e-02 + 2.452800000000e-09 1.943113194789e-01 + 2.462800000000e-09 3.016596311708e-01 + 2.472800000000e-09 3.661065448805e-01 + 2.482800000000e-09 3.780019713225e-01 + 2.492800000000e-09 3.371661805738e-01 + 2.502800000000e-09 2.507556787464e-01 + 2.512800000000e-09 1.307421854877e-01 + 2.522800000000e-09 -8.279988820111e-03 + 2.532800000000e-09 -1.491757570182e-01 + 2.542800000000e-09 -2.717798672688e-01 + 2.552800000000e-09 -3.563740290940e-01 + 2.562800000000e-09 -3.895796460499e-01 + 2.572800000000e-09 -3.676808726853e-01 + 2.582800000000e-09 -2.955051757839e-01 + 2.592800000000e-09 -1.839479390486e-01 + 2.602800000000e-09 -4.714850335233e-02 + 2.612800000000e-09 9.861320020618e-02 + 2.622800000000e-09 2.337425844083e-01 + 2.632800000000e-09 3.371550256486e-01 + 2.642800000000e-09 3.919399112071e-01 + 2.652800000000e-09 3.905408750952e-01 + 2.662800000000e-09 3.352191236868e-01 + 2.672800000000e-09 2.350815543513e-01 + 2.682800000000e-09 1.034613938740e-01 + 2.692800000000e-09 -4.392957839007e-02 + 2.702800000000e-09 -1.884751996038e-01 + 2.712800000000e-09 -3.086781823149e-01 + 2.722800000000e-09 -3.848177432188e-01 + 2.732800000000e-09 -4.052770325861e-01 + 2.742800000000e-09 -3.688903832450e-01 + 2.752800000000e-09 -2.826469865554e-01 + 2.762800000000e-09 -1.589910288887e-01 + 2.772800000000e-09 -1.310656017793e-02 + 2.782800000000e-09 1.374985765475e-01 + 2.792800000000e-09 2.717558981183e-01 + 2.802800000000e-09 3.680770346546e-01 + 2.812800000000e-09 4.109892185984e-01 + 2.822800000000e-09 3.953834524767e-01 + 2.832800000000e-09 3.257221099879e-01 + 2.842800000000e-09 2.128988148455e-01 + 2.852800000000e-09 7.136277380161e-02 + 2.862800000000e-09 -8.212843364505e-02 + 2.872800000000e-09 -2.274875200417e-01 + 2.882800000000e-09 -3.422678534944e-01 + 2.892800000000e-09 -4.074840287057e-01 + 2.902800000000e-09 -4.138740233348e-01 + 2.912800000000e-09 -3.628339161672e-01 + 2.922800000000e-09 -2.632971311498e-01 + 2.932800000000e-09 -1.289935748665e-01 + 2.942800000000e-09 2.401138978887e-02 + 2.952800000000e-09 1.769330568668e-01 + 2.962800000000e-09 3.074608382415e-01 + 2.972800000000e-09 3.941200247530e-01 + 2.982800000000e-09 4.234112932095e-01 + 2.992800000000e-09 3.929591993068e-01 + 3.002800000000e-09 3.092586232899e-01 + 3.012800000000e-09 1.848561033716e-01 + 3.022800000000e-09 3.531319171037e-02 + 3.032800000000e-09 -1.217686007578e-01 + 3.042800000000e-09 -2.649725386839e-01 + 3.052800000000e-09 -3.714243926463e-01 + 3.062800000000e-09 -4.236571315630e-01 + 3.072800000000e-09 -4.151513676835e-01 + 3.082800000000e-09 -3.497378633974e-01 + 3.092800000000e-09 -2.380269687405e-01 + 3.102800000000e-09 -9.473564872018e-02 + 3.112800000000e-09 6.325311369660e-02 + 3.122800000000e-09 2.158407262002e-01 + 3.132800000000e-09 3.398312512854e-01 + 3.142800000000e-09 4.145871194830e-01 + 3.152800000000e-09 4.291493830004e-01 + 3.162800000000e-09 3.838307091415e-01 + 3.172800000000e-09 2.870785194120e-01 + 3.182800000000e-09 1.526842518029e-01 + 3.192800000000e-09 -3.086401263805e-03 + 3.202800000000e-09 -1.615512105084e-01 + 3.212800000000e-09 -3.001079182985e-01 + 3.222800000000e-09 -3.960315826203e-01 + 3.232800000000e-09 -4.340839575044e-01 + 3.242800000000e-09 -4.105187752114e-01 + 3.252800000000e-09 -3.313025894301e-01 + 3.262800000000e-09 -2.085671658456e-01 + 3.272800000000e-09 -5.777003434120e-02 + 3.282800000000e-09 1.033406906678e-01 + 3.292800000000e-09 2.533529154631e-01 + 3.302800000000e-09 3.685970975572e-01 + 3.312800000000e-09 4.299468579347e-01 + 3.322800000000e-09 4.292908683357e-01 + 3.332800000000e-09 3.694587106589e-01 + 3.342800000000e-09 2.606120557851e-01 + 3.352800000000e-09 1.175388997555e-01 + 3.362800000000e-09 -4.284791449985e-02 + 3.372800000000e-09 -2.006767456204e-01 + 3.382800000000e-09 -3.324221649637e-01 + 3.392800000000e-09 -4.161244402863e-01 + 3.402800000000e-09 -4.391257248088e-01 + 3.412800000000e-09 -4.004847836899e-01 + 3.422800000000e-09 -3.079666817782e-01 + 3.432800000000e-09 -1.751824604729e-01 + 3.442800000000e-09 -1.848620035360e-02 + 3.452800000000e-09 1.436660179708e-01 + 3.462800000000e-09 2.887156632051e-01 + 3.472800000000e-09 3.930627580816e-01 + 3.482800000000e-09 4.397439903497e-01 + 3.492800000000e-09 4.236125864869e-01 + 3.502800000000e-09 3.498182731277e-01 + 3.512800000000e-09 2.300133928158e-01 + 3.522800000000e-09 7.970348984654e-02 + 3.532800000000e-09 -8.351407457858e-02 + 3.542800000000e-09 -2.385271595482e-01 + 3.552800000000e-09 -3.612722036652e-01 + 3.562800000000e-09 -4.312330235614e-01 + 3.572800000000e-09 -4.386741133417e-01 + 3.582800000000e-09 -3.852817703581e-01 + 3.592800000000e-09 -2.805930173234e-01 + 3.602800000000e-09 -1.392492323537e-01 + 3.612800000000e-09 2.187267390091e-02 + 3.622800000000e-09 1.832602139013e-01 + 3.632800000000e-09 3.213879650557e-01 + 3.642800000000e-09 4.133060483218e-01 + 3.652800000000e-09 4.447285195204e-01 + 3.662800000000e-09 4.133411845036e-01 + 3.672800000000e-09 3.263370193384e-01 + 3.682800000000e-09 1.966963969928e-01 + 3.692800000000e-09 4.041698105671e-02 + 3.702800000000e-09 -1.240715943946e-01 + 3.712800000000e-09 -2.744455804227e-01 + 3.722800000000e-09 -3.865403560434e-01 + 3.732800000000e-09 -4.418627149772e-01 + 3.742800000000e-09 -4.336992002029e-01 + 3.752800000000e-09 -3.661407422863e-01 + 3.762800000000e-09 -2.502784187060e-01 + 3.772800000000e-09 -1.015415485635e-01 + 3.782800000000e-09 6.263438983338e-02 + 3.792800000000e-09 2.215636138317e-01 + 3.802800000000e-09 3.510497956146e-01 + 3.812800000000e-09 4.293870021118e-01 + 3.822800000000e-09 4.451805536572e-01 + 3.832800000000e-09 3.988505052006e-01 + 3.842800000000e-09 2.991815051632e-01 + 3.852800000000e-09 1.605176921695e-01 + 3.862800000000e-09 -3.308201557359e-04 + 3.872800000000e-09 -1.642553115919e-01 + 3.882800000000e-09 -3.079367241379e-01 + 3.892800000000e-09 -4.076746367692e-01 + 3.902800000000e-09 -4.476096604950e-01 + 3.912800000000e-09 -4.239405278391e-01 + 3.922800000000e-09 -3.428590344590e-01 + 3.932800000000e-09 -2.168801065447e-01 + 3.942800000000e-09 -6.198192633654e-02 + 3.952800000000e-09 1.037172026643e-01 + 3.962800000000e-09 2.583243277960e-01 + 3.972800000000e-09 3.773802249945e-01 + 3.982800000000e-09 4.410405928968e-01 + 3.992800000000e-09 4.409872988773e-01 + 4.002800000000e-09 3.801622320931e-01 + 4.012800000000e-09 2.689882675407e-01 + 4.022800000000e-09 1.226823512533e-01 + 4.032800000000e-09 -4.148250726558e-02 + 4.042800000000e-09 -2.033078096625e-01 + 4.052800000000e-09 -3.386842361109e-01 + 4.062800000000e-09 -4.249465482161e-01 + 4.072800000000e-09 -4.490785609795e-01 + 4.082800000000e-09 -4.101478767932e-01 + 4.092800000000e-09 -3.160921650425e-01 + 4.102800000000e-09 -1.808366855365e-01 + 4.112800000000e-09 -2.108833287035e-02 + 4.122800000000e-09 1.444500830596e-01 + 4.132800000000e-09 2.928171409096e-01 + 4.142800000000e-09 3.998044121999e-01 + 4.152800000000e-09 4.479858949706e-01 + 4.162800000000e-09 4.321215430464e-01 + 4.172800000000e-09 3.574566369184e-01 + 4.182800000000e-09 2.358452048656e-01 + 4.192800000000e-09 8.311678955327e-02 + 4.202800000000e-09 -8.290017368713e-02 + 4.212800000000e-09 -2.408334825385e-01 + 4.222800000000e-09 -3.661510927449e-01 + 4.232800000000e-09 -4.378429334788e-01 + 4.242800000000e-09 -4.459730768778e-01 + 4.252800000000e-09 -3.922523844803e-01 + 4.262800000000e-09 -2.863486590549e-01 + 4.272800000000e-09 -1.431486361008e-01 + 4.282800000000e-09 2.023816490822e-02 + 4.292800000000e-09 1.841211292244e-01 + 4.302800000000e-09 3.246453549655e-01 + 4.312800000000e-09 4.184048154300e-01 + 4.322800000000e-09 4.508241659956e-01 + 4.332800000000e-09 4.195417553641e-01 + 4.342800000000e-09 3.318248664914e-01 + 4.352800000000e-09 2.008149945655e-01 + 4.362800000000e-09 4.274003754521e-02 + 4.372800000000e-09 -1.238216995455e-01 + 4.382800000000e-09 -2.763355938118e-01 + 4.392800000000e-09 -3.902670850684e-01 + 4.402800000000e-09 -4.467847568546e-01 + 4.412800000000e-09 -4.390600501523e-01 + 4.422800000000e-09 -3.712065246265e-01 + 4.432800000000e-09 -2.544133522428e-01 + 4.442800000000e-09 -1.042989672064e-01 + 4.452800000000e-09 6.155565553917e-02 + 4.462800000000e-09 2.223303189103e-01 + 4.472800000000e-09 3.535605934191e-01 + 4.482800000000e-09 4.332056265551e-01 + 4.492800000000e-09 4.496878200993e-01 + 4.502800000000e-09 4.034005304561e-01 + 4.512800000000e-09 3.031817742142e-01 + 4.522800000000e-09 1.635070368672e-01 + 4.532800000000e-09 1.334076201758e-03 + 4.542800000000e-09 -1.641341238164e-01 + 4.552800000000e-09 -3.094012322916e-01 + 4.562800000000e-09 -4.104786148660e-01 + 4.572800000000e-09 -4.512770006404e-01 + 4.582800000000e-09 -4.279175062997e-01 + 4.592800000000e-09 -3.466056238476e-01 + 4.602800000000e-09 -2.199347127522e-01 + 4.612800000000e-09 -6.402153848648e-02 + 4.622800000000e-09 1.029285535225e-01 + 4.632800000000e-09 2.589180063860e-01 + 4.642800000000e-09 3.792695256596e-01 + 4.652800000000e-09 4.438937741354e-01 + 4.662800000000e-09 4.443504179283e-01 + 4.672800000000e-09 3.835604173805e-01 + 4.682800000000e-09 2.719835233788e-01 + 4.692800000000e-09 1.249392832254e-01 + 4.702800000000e-09 -4.020816092475e-02 + 4.712800000000e-09 -2.031964043529e-01 + 4.722800000000e-09 -3.397700465010e-01 + 4.732800000000e-09 -4.270397443884e-01 + 4.742800000000e-09 -4.518273936627e-01 + 4.752800000000e-09 -4.131437624953e-01 + 4.762800000000e-09 -3.189332076933e-01 + 4.772800000000e-09 -1.831832553144e-01 + 4.782800000000e-09 -2.269107328470e-02 + 4.792800000000e-09 1.437926679782e-01 + 4.802800000000e-09 2.932190181989e-01 + 4.812800000000e-09 4.012017475335e-01 + 4.822800000000e-09 4.501314750210e-01 + 4.832800000000e-09 4.346785406972e-01 + 4.842800000000e-09 3.600667546293e-01 + 4.852800000000e-09 2.381755475469e-01 + 4.862800000000e-09 8.491317691633e-02 + 4.872800000000e-09 -8.184144725846e-02 + 4.882800000000e-09 -2.406717440516e-01 + 4.892800000000e-09 -3.669229068086e-01 + 4.902800000000e-09 -4.394082548251e-01 + 4.912800000000e-09 -4.480704788466e-01 + 4.922800000000e-09 -3.945730274337e-01 + 4.932800000000e-09 -2.885836949321e-01 + 4.942800000000e-09 -1.450376786931e-01 + 4.952800000000e-09 1.889977492198e-02 + 4.962800000000e-09 1.835129210017e-01 + 4.972800000000e-09 3.248743375039e-01 + 4.982800000000e-09 4.194302558928e-01 + 4.992800000000e-09 4.524643689689e-01 + 5.002800000000e-09 4.215402841296e-01 + 5.012800000000e-09 3.339012004110e-01 + 5.022800000000e-09 2.027084709408e-01 + 5.032800000000e-09 4.424742932894e-02 + 5.042800000000e-09 -1.228812898237e-01 + 5.052800000000e-09 -2.761102938549e-01 + 5.062800000000e-09 -3.907994253022e-01 + 5.072800000000e-09 -4.479732353779e-01 + 5.082800000000e-09 -4.407061090075e-01 + 5.092800000000e-09 -3.730685846100e-01 + 5.102800000000e-09 -2.562455275981e-01 + 5.112800000000e-09 -1.058937677955e-01 + 5.122800000000e-09 6.037692713935e-02 + 5.132800000000e-09 2.217353003923e-01 + 5.142800000000e-09 3.536538298667e-01 + 5.152800000000e-09 4.339652669328e-01 + 5.162800000000e-09 4.509763905258e-01 + 5.172800000000e-09 4.050168831178e-01 + 5.182800000000e-09 3.049021449703e-01 + 5.192800000000e-09 1.651224948042e-01 + 5.202800000000e-09 2.668133800534e-03 + 5.212800000000e-09 -1.632533691990e-01 + 5.222800000000e-09 -3.091172895127e-01 + 5.232800000000e-09 -4.108400517921e-01 + 5.242800000000e-09 -4.522113534387e-01 + 5.252800000000e-09 -4.292673800455e-01 + 5.262800000000e-09 -3.481710272181e-01 + 5.272800000000e-09 -2.215114697290e-01 + 5.282800000000e-09 -6.543557239292e-02 + 5.292800000000e-09 1.018429801566e-01 + 5.302800000000e-09 2.583233085219e-01 + 5.312800000000e-09 3.792693287098e-01 + 5.322800000000e-09 4.444786078132e-01 + 5.332800000000e-09 4.454112823771e-01 + 5.342800000000e-09 3.849315628274e-01 + 5.352800000000e-09 2.734767382586e-01 + 5.362800000000e-09 1.263785713760e-01 + 5.372800000000e-09 -3.898327347647e-02 + 5.382800000000e-09 -2.023530806617e-01 + 5.392800000000e-09 -3.394492329988e-01 + 5.402800000000e-09 -4.272926481102e-01 + 5.412800000000e-09 -4.525972813791e-01 + 5.422800000000e-09 -4.142998375999e-01 + 5.432800000000e-09 -3.203074728379e-01 + 5.442800000000e-09 -1.846018309120e-01 + 5.452800000000e-09 -2.399660414951e-02 + 5.462800000000e-09 1.427630297033e-01 + 5.472800000000e-09 2.926259682112e-01 + 5.482800000000e-09 4.011471536318e-01 + 5.492800000000e-09 4.506115959493e-01 + 5.502800000000e-09 4.356013603009e-01 + 5.512800000000e-09 3.612881385049e-01 + 5.522800000000e-09 2.395299350598e-01 + 5.532800000000e-09 8.624604509789e-02 + 5.542800000000e-09 -8.068374022449e-02 + 5.552800000000e-09 -2.398558663776e-01 + 5.562800000000e-09 -3.665874082761e-01 + 5.572800000000e-09 -4.396030681021e-01 + 5.582800000000e-09 -4.487465251575e-01 + 5.592800000000e-09 -3.956151184440e-01 + 5.602800000000e-09 -2.898423999707e-01 + 5.612800000000e-09 -1.463586429191e-01 + 5.622800000000e-09 1.766399707648e-02 + 5.632800000000e-09 1.825252764379e-01 + 5.642800000000e-09 3.242946146325e-01 + 5.652800000000e-09 4.193556482310e-01 + 5.662800000000e-09 4.528926625215e-01 + 5.672800000000e-09 4.223881255488e-01 + 5.682800000000e-09 3.350355621075e-01 + 5.692800000000e-09 2.039786012435e-01 + 5.702800000000e-09 4.551234148100e-02 + 5.712800000000e-09 -1.217740032552e-01 + 5.722800000000e-09 -2.753277184669e-01 + 5.732800000000e-09 -3.904752792584e-01 + 5.742800000000e-09 -4.481513755592e-01 + 5.752800000000e-09 -4.413392311360e-01 + 5.762800000000e-09 -3.740496173843e-01 + 5.772800000000e-09 -2.574362397083e-01 + 5.782800000000e-09 -1.071535010810e-01 + 5.792800000000e-09 5.919172309922e-02 + 5.802800000000e-09 2.207895861459e-01 + 5.812800000000e-09 3.531049318313e-01 + 5.822800000000e-09 4.339018253606e-01 + 5.832800000000e-09 4.513909522210e-01 + 5.842800000000e-09 4.058293392676e-01 + 5.852800000000e-09 3.059901414346e-01 + 5.862800000000e-09 1.663474033931e-01 + 5.872800000000e-09 3.892405490392e-03 + 5.882800000000e-09 -1.621862503236e-01 + 5.892800000000e-09 -3.083751895666e-01 + 5.902800000000e-09 -4.105489510149e-01 + 5.912800000000e-09 -4.524070576142e-01 + 5.922800000000e-09 -4.298999702907e-01 + 5.932800000000e-09 -3.491336986608e-01 + 5.942800000000e-09 -2.226715501100e-01 + 5.952800000000e-09 -6.666104858820e-02 + 5.962800000000e-09 1.006966486220e-01 + 5.972800000000e-09 2.574239692665e-01 + 5.982800000000e-09 3.787692657377e-01 + 5.992800000000e-09 4.444539892124e-01 + 6.002800000000e-09 4.458461665572e-01 + 6.012800000000e-09 3.857445719464e-01 + 6.022800000000e-09 2.745487562866e-01 + 6.032800000000e-09 1.275785291017e-01 + 6.042800000000e-09 -3.779124162230e-02 + 6.052800000000e-09 -2.013298434073e-01 + 6.062800000000e-09 -3.387615671455e-01 + 6.072800000000e-09 -4.270548248038e-01 + 6.082800000000e-09 -4.528316504836e-01 + 6.092800000000e-09 -4.149511231624e-01 + 6.102800000000e-09 -3.215754509165e-01 + 6.112800000000e-09 -1.863588455889e-01 + 6.122800000000e-09 -2.571903025745e-02 + 6.132800000000e-09 1.413243069826e-01 + 6.142800000000e-09 2.916918350870e-01 + 6.152800000000e-09 4.008776523019e-01 + 6.162800000000e-09 4.510341246735e-01 + 6.172800000000e-09 4.366256595648e-01 + 6.182800000000e-09 3.627477618191e-01 + 6.192800000000e-09 2.412248352376e-01 + 6.202800000000e-09 8.798028459747e-02 + 6.212800000000e-09 -7.910949318896e-02 + 6.222800000000e-09 -2.386677044752e-01 + 6.232800000000e-09 -3.659850930454e-01 + 6.242800000000e-09 -4.396804591425e-01 + 6.252800000000e-09 -4.494656643469e-01 + 6.262800000000e-09 -3.968474175724e-01 + 6.272800000000e-09 -2.914072941152e-01 + 6.282800000000e-09 -1.480626521476e-01 + 6.292800000000e-09 1.601235442179e-02 + 6.302800000000e-09 1.811424744992e-01 + 6.312800000000e-09 3.234035091745e-01 + 6.322800000000e-09 4.191056303664e-01 + 6.332800000000e-09 4.533057348560e-01 + 6.342800000000e-09 4.233749574421e-01 + 6.352800000000e-09 3.364371247841e-01 + 6.362800000000e-09 2.056060265843e-01 + 6.372800000000e-09 4.718425253130e-02 + 6.382800000000e-09 -1.202591956077e-01 + 6.392800000000e-09 -2.741970823906e-01 + 6.402800000000e-09 -3.899217736505e-01 + 6.412800000000e-09 -4.482538149114e-01 + 6.422800000000e-09 -4.420547819027e-01 + 6.432800000000e-09 -3.752519638906e-01 + 6.442800000000e-09 -2.589538602245e-01 + 6.452800000000e-09 -1.088054465341e-01 + 6.462800000000e-09 5.759370470562e-02 + 6.472800000000e-09 2.194673179871e-01 + 6.482800000000e-09 3.522772559136e-01 + 6.492800000000e-09 4.337037118850e-01 + 6.502800000000e-09 4.518300934051e-01 + 6.512800000000e-09 4.068144911391e-01 + 6.522800000000e-09 3.073699569542e-01 + 6.532800000000e-09 1.679446242911e-01 + 6.542800000000e-09 5.526838446955e-03 + 6.552800000000e-09 -1.607228509449e-01 + 6.562800000000e-09 -3.073122411546e-01 + 6.572800000000e-09 -4.100667805393e-01 + 6.582800000000e-09 -4.525691830756e-01 + 6.592800000000e-09 -4.306538258897e-01 + 6.602800000000e-09 -3.503481996235e-01 + 6.612800000000e-09 -2.241774883034e-01 + 6.622800000000e-09 -6.828625255023e-02 + 6.632800000000e-09 9.914388262770e-02 + 6.642800000000e-09 2.561700915267e-01 + 6.652800000000e-09 3.780262355150e-01 + 6.662800000000e-09 4.443363946136e-01 + 6.672800000000e-09 4.463456063247e-01 + 6.682800000000e-09 3.867629279581e-01 + 6.692800000000e-09 2.759350505849e-01 + 6.702800000000e-09 1.291620657668e-01 + 6.712800000000e-09 -3.618992318691e-02 + 6.722800000000e-09 -1.999263122513e-01 + 6.732800000000e-09 -3.377838244914e-01 + 6.742800000000e-09 -4.266658318374e-01 + 6.752800000000e-09 -4.530727100001e-01 + 6.762800000000e-09 -4.157583593248e-01 + 6.772800000000e-09 -3.228146506988e-01 + 6.782800000000e-09 -1.878636391066e-01 + 6.792800000000e-09 -2.732202592791e-02 + 6.802800000000e-09 1.398206913734e-01 + 6.812800000000e-09 2.905172888879e-01 + 6.822800000000e-09 4.002319365478e-01 + 6.832800000000e-09 4.510090923528e-01 + 6.842800000000e-09 4.371967316474e-01 + 6.852800000000e-09 3.638094799843e-01 + 6.862800000000e-09 2.426247896568e-01 + 6.872800000000e-09 8.955378387009e-02 + 6.882800000000e-09 -7.754494614658e-02 + 6.892800000000e-09 -2.373338840856e-01 + 6.902800000000e-09 -3.651047391107e-01 + 6.912800000000e-09 -4.393949423923e-01 + 6.922800000000e-09 -4.497946678553e-01 + 6.932800000000e-09 -3.977155859444e-01 + 6.942800000000e-09 -2.926805361231e-01 + 6.952800000000e-09 -1.495789874633e-01 + 6.962800000000e-09 1.442458391662e-02 + 6.972800000000e-09 1.796908110624e-01 + 6.982800000000e-09 3.223188654730e-01 + 6.992800000000e-09 4.185710554106e-01 + 7.002800000000e-09 4.533899428186e-01 + 7.012800000000e-09 4.240367787828e-01 + 7.022800000000e-09 3.375594121023e-01 + 7.032800000000e-09 2.070333612352e-01 + 7.042800000000e-09 4.875510373476e-02 + 7.052800000000e-09 -1.187338649369e-01 + 7.062800000000e-09 -2.729443831640e-01 + 7.072800000000e-09 -3.891540645123e-01 + 7.082800000000e-09 -4.480871694944e-01 + 7.092800000000e-09 -4.424871165811e-01 + 7.102800000000e-09 -3.761954918703e-01 + 7.112800000000e-09 -2.602688915345e-01 + 7.122800000000e-09 -1.103326960467e-01 + 7.132800000000e-09 5.602927857493e-02 + 7.142800000000e-09 2.180813390525e-01 + 7.152800000000e-09 3.512977426176e-01 + 7.162800000000e-09 4.332918666835e-01 + 7.172800000000e-09 4.520283506027e-01 + 7.182800000000e-09 4.075654569222e-01 + 7.192800000000e-09 3.085525245878e-01 + 7.202800000000e-09 1.694036577856e-01 + 7.212800000000e-09 7.096490294215e-03 + 7.222800000000e-09 -1.592421019505e-01 + 7.232800000000e-09 -3.061507829333e-01 + 7.242800000000e-09 -4.094217537103e-01 + 7.252800000000e-09 -4.525316570934e-01 + 7.262800000000e-09 -4.312011369918e-01 + 7.272800000000e-09 -3.513766067663e-01 + 7.282800000000e-09 -2.255404024417e-01 + 7.292800000000e-09 -6.982608698537e-02 + 7.302800000000e-09 9.760874234269e-02 + 7.312800000000e-09 2.548624066386e-01 + 7.322800000000e-09 3.771660681607e-01 + 7.332800000000e-09 4.440590034156e-01 + 7.342800000000e-09 4.466676311783e-01 + 7.352800000000e-09 3.876109196287e-01 + 7.362800000000e-09 2.771794857804e-01 + 7.372800000000e-09 1.306477697913e-01 + 7.382800000000e-09 -3.463203927452e-02 + 7.392800000000e-09 -1.985050679973e-01 + 7.402800000000e-09 -3.367290247939e-01 + 7.412800000000e-09 -4.261538465409e-01 + 7.422800000000e-09 -4.531654409191e-01 + 7.432800000000e-09 -4.164134766722e-01 + 7.442800000000e-09 -3.239179457956e-01 + 7.452800000000e-09 -1.892647097285e-01 + 7.462800000000e-09 -2.886415632839e-02 + 7.472800000000e-09 1.383273308172e-01 + 7.482800000000e-09 2.892996871398e-01 + 7.492800000000e-09 3.994969639101e-01 + 7.502800000000e-09 4.508642198716e-01 + 7.512800000000e-09 4.376358532282e-01 + 7.522800000000e-09 3.647450909605e-01 + 7.532800000000e-09 2.439202325978e-01 + 7.542800000000e-09 9.105531360494e-02 + 7.552800000000e-09 -7.601157547902e-02 + 7.562800000000e-09 -2.359852246064e-01 + 7.572800000000e-09 -3.641652613357e-01 + 7.582800000000e-09 -4.390166510620e-01 + 7.592800000000e-09 -4.500124126457e-01 + 7.602800000000e-09 -3.984699414612e-01 + 7.612800000000e-09 -2.938521011684e-01 + 7.622800000000e-09 -1.510172347868e-01 + 7.632800000000e-09 1.288302938935e-02 + 7.642800000000e-09 1.782468448679e-01 + 7.652800000000e-09 3.212013477427e-01 + 7.662800000000e-09 4.179687503294e-01 + 7.672800000000e-09 4.533834024321e-01 + 7.682800000000e-09 4.245985525103e-01 + 7.692800000000e-09 3.385858944672e-01 + 7.702800000000e-09 2.083807485766e-01 + 7.712800000000e-09 5.027015698453e-02 + 7.722800000000e-09 -1.172332960898e-01 + 7.732800000000e-09 -2.716809260340e-01 + 7.742800000000e-09 -3.883416009487e-01 + 7.752800000000e-09 -4.478499582326e-01 + 7.762800000000e-09 -4.428344446694e-01 + 7.772800000000e-09 -3.770515517301e-01 + 7.782800000000e-09 -2.615051838720e-01 + 7.792800000000e-09 -1.117984505488e-01 + 7.802800000000e-09 5.450217991098e-02 + 7.812800000000e-09 2.167027600402e-01 + 7.822800000000e-09 3.502938781560e-01 + 7.832800000000e-09 4.328284672606e-01 + 7.842800000000e-09 4.521567774284e-01 + 7.852800000000e-09 4.082387428202e-01 + 7.862800000000e-09 3.096598745900e-01 + 7.872800000000e-09 1.707986921107e-01 + 7.882800000000e-09 8.620172569311e-03 + 7.892800000000e-09 -1.577830063807e-01 + 7.902800000000e-09 -3.049826374819e-01 + 7.912800000000e-09 -4.087428309903e-01 + 7.922800000000e-09 -4.524393452273e-01 + 7.932800000000e-09 -4.316815101044e-01 + 7.942800000000e-09 -3.523353175295e-01 + 7.952800000000e-09 -2.268395793936e-01 + 7.962800000000e-09 -7.131487485781e-02 + 7.972800000000e-09 9.610581379293e-02 + 7.982800000000e-09 2.535628101336e-01 + 7.992800000000e-09 3.762881864197e-01 + 8.002800000000e-09 4.437416390019e-01 + 8.012800000000e-09 4.469343179278e-01 + 8.022800000000e-09 3.883963646699e-01 + 8.032800000000e-09 2.783623962624e-01 + 8.042800000000e-09 1.320798527952e-01 + 8.052800000000e-09 -3.311390645816e-02 + 8.062800000000e-09 -1.971038773968e-01 + 8.072800000000e-09 -3.356708244784e-01 + 8.082800000000e-09 -4.256158336428e-01 + 8.092800000000e-09 -4.532144667852e-01 + 8.102800000000e-09 -4.170141159650e-01 + 8.112800000000e-09 -3.249635603903e-01 + 8.122800000000e-09 -1.906119369434e-01 + 8.132800000000e-09 -3.036194317104e-02 + 8.142800000000e-09 1.368630445857e-01 + 8.152800000000e-09 2.880909304380e-01 + 8.162800000000e-09 3.987490122466e-01 + 8.172800000000e-09 4.506873806062e-01 + 8.182800000000e-09 4.380294980889e-01 + 8.192800000000e-09 3.656283733840e-01 + 8.202800000000e-09 2.451632848626e-01 + 8.212800000000e-09 9.251005554693e-02 + 8.222800000000e-09 -7.451388261828e-02 + 8.232800000000e-09 -2.346555868590e-01 + 8.242800000000e-09 -3.632246557922e-01 + 8.252800000000e-09 -4.386177026190e-01 + 8.262800000000e-09 -4.501939643815e-01 + 8.272800000000e-09 -3.991782307031e-01 + 8.282800000000e-09 -2.949739838361e-01 + 8.292800000000e-09 -1.524079476743e-01 + 8.302800000000e-09 1.138161461266e-02 + 8.312800000000e-09 1.768299703984e-01 + 8.322800000000e-09 3.200931233939e-01 + 8.332800000000e-09 4.173564809096e-01 + 8.342800000000e-09 4.533499916252e-01 + 8.352800000000e-09 4.251211506737e-01 + 8.362800000000e-09 3.395665974700e-01 + 8.372800000000e-09 2.096815372195e-01 + 8.382800000000e-09 5.174274127787e-02 + 8.392800000000e-09 -1.157657190317e-01 + 8.402800000000e-09 -2.704356165358e-01 + 8.412800000000e-09 -3.875292235338e-01 + 8.422800000000e-09 -4.475953335291e-01 + 8.432800000000e-09 -4.431502402700e-01 + 8.442800000000e-09 -3.778668425139e-01 + 8.452800000000e-09 -2.626969325458e-01 + 8.462800000000e-09 -1.132208472776e-01 + 8.472800000000e-09 5.301224307938e-02 + 8.482800000000e-09 2.153495940818e-01 + 8.492800000000e-09 3.492991763846e-01 + 8.502800000000e-09 4.323567328409e-01 + 8.512800000000e-09 4.522614575248e-01 + 8.522800000000e-09 4.088768891609e-01 + 8.532800000000e-09 3.107256414182e-01 + 8.542800000000e-09 1.721507006670e-01 + 8.552800000000e-09 1.010411990704e-02 + 8.562800000000e-09 -1.563549513642e-01 + 8.572800000000e-09 -3.038316030612e-01 + 8.582800000000e-09 -4.080642061816e-01 + 8.592800000000e-09 -4.523311320066e-01 + 8.602800000000e-09 -4.321328530176e-01 + 8.612800000000e-09 -3.532563267463e-01 + 8.622800000000e-09 -2.280973056251e-01 + 8.632800000000e-09 -7.276293942902e-02 + 8.642800000000e-09 9.463789558236e-02 + 8.652800000000e-09 2.522870140042e-01 + 8.662800000000e-09 3.754187092405e-01 + 8.672800000000e-09 4.434163402641e-01 + 8.682800000000e-09 4.471787092513e-01 + 8.692800000000e-09 3.891488534365e-01 + 8.702800000000e-09 2.795062469926e-01 + 8.712800000000e-09 1.334712625982e-01 + 8.722800000000e-09 -3.163343142058e-02 + 8.732800000000e-09 -1.957318882626e-01 + 8.742800000000e-09 -3.346283213648e-01 + 8.752800000000e-09 -4.250775464201e-01 + 8.762800000000e-09 -4.532480283500e-01 + 8.772800000000e-09 -4.175870103221e-01 + 8.782800000000e-09 -3.259733161790e-01 + 8.792800000000e-09 -1.919197135388e-01 + 8.802800000000e-09 -3.182091541278e-02 + 8.812800000000e-09 1.354318691175e-01 + 8.822800000000e-09 2.869041667598e-01 + 8.832800000000e-09 3.980081561830e-01 + 8.842800000000e-09 4.505021677847e-01 + 8.852800000000e-09 4.384012808011e-01 + 8.862800000000e-09 3.664798440551e-01 + 8.872800000000e-09 2.463688773813e-01 + 8.882800000000e-09 9.392582327628e-02 + 8.892800000000e-09 -7.305202608030e-02 + 8.902800000000e-09 -2.333531951716e-01 + 8.912800000000e-09 -3.622979525889e-01 + 8.922800000000e-09 -4.382173287130e-01 + 8.932800000000e-09 -4.503597405701e-01 + 8.942800000000e-09 -3.998592516753e-01 + 8.952800000000e-09 -2.960610022145e-01 + 8.962800000000e-09 -1.537603460750e-01 + 8.972800000000e-09 9.917658135956e-03 + 8.982800000000e-09 1.754444577473e-01 + 8.992800000000e-09 3.190048626354e-01 + 9.002800000000e-09 4.167494868982e-01 + 9.012800000000e-09 4.533069968880e-01 + 9.022800000000e-09 4.256214087006e-01 + 9.032800000000e-09 3.405157290623e-01 + 9.042800000000e-09 2.109456368989e-01 + 9.052800000000e-09 5.317747545113e-02 + 9.062800000000e-09 -1.143323651434e-01 + 9.072800000000e-09 -2.692154568507e-01 + 9.082800000000e-09 -3.867285689919e-01 + 9.092800000000e-09 -4.473375609935e-01 + 9.102800000000e-09 -4.434492327994e-01 + 9.112800000000e-09 -3.786545807898e-01 + 9.122800000000e-09 -2.638542129423e-01 + 9.132800000000e-09 -1.146057654528e-01 + 9.142800000000e-09 5.155841744751e-02 + 9.152800000000e-09 2.140258361192e-01 + 9.162800000000e-09 3.483221038618e-01 + 9.172800000000e-09 4.318881267061e-01 + 9.182800000000e-09 4.523550063090e-01 + 9.192800000000e-09 4.094918937189e-01 + 9.202800000000e-09 3.117596780726e-01 + 9.212800000000e-09 1.734662900911e-01 + 9.222800000000e-09 1.155102157897e-02 + 9.232800000000e-09 -1.549595462786e-01 + 9.242800000000e-09 -3.027034233065e-01 + 9.252800000000e-09 -4.073947834745e-01 + 9.262800000000e-09 -4.522175723624e-01 + 9.272800000000e-09 -4.325658094666e-01 + 9.282800000000e-09 -3.541489664453e-01 + 9.292800000000e-09 -2.293204845041e-01 + 9.302800000000e-09 -7.417405465882e-02 + 9.312800000000e-09 9.320478651195e-02 + 9.322800000000e-09 2.510384881099e-01 + 9.332800000000e-09 3.745642376476e-01 + 9.342800000000e-09 4.433246588189e-01 + 9.352800000000e-09 4.478937360742e-01 + 9.362800000000e-09 3.902940459792e-01 + 9.372800000000e-09 2.808530270468e-01 + 9.382800000000e-09 1.348676419628e-01 + 9.392800000000e-09 -3.034463723182e-02 + 9.402800000000e-09 -1.947238870252e-01 + 9.412800000000e-09 -3.340658672346e-01 + 9.422800000000e-09 -4.250541255921e-01 + 9.432800000000e-09 -4.537507770786e-01 + 9.442800000000e-09 -4.185214018191e-01 + 9.452800000000e-09 -3.271947900137e-01 + 9.462800000000e-09 -1.932681902573e-01 + 9.472800000000e-09 -3.314769230310e-02 + 9.482800000000e-09 1.342887191779e-01 + 9.492800000000e-09 2.861199900574e-01 + 9.502800000000e-09 3.977168385702e-01 + 9.512800000000e-09 4.507402217909e-01 + 9.522800000000e-09 4.391110351565e-01 + 9.532800000000e-09 3.675437714408e-01 + 9.542800000000e-09 2.476385608832e-01 + 9.552800000000e-09 9.525356388976e-02 + 9.562800000000e-09 -7.181887626715e-02 + 9.572800000000e-09 -2.323889796051e-01 + 9.582800000000e-09 -3.617645976228e-01 + 9.592800000000e-09 -4.381991115127e-01 + 9.602800000000e-09 -4.508403569257e-01 + 9.612800000000e-09 -4.007485824978e-01 + 9.622800000000e-09 -2.972271731241e-01 + 9.632800000000e-09 -1.550568018439e-01 + 9.642800000000e-09 8.636202324294e-03 + 9.652800000000e-09 1.743446652303e-01 + 9.662800000000e-09 3.182618735244e-01 + 9.672800000000e-09 4.164889465397e-01 + 9.682800000000e-09 4.535572878800e-01 + 9.692800000000e-09 4.263236462633e-01 + 9.702800000000e-09 3.415536856094e-01 + 9.712800000000e-09 2.121781311737e-01 + 9.722800000000e-09 5.446571726142e-02 + 9.732800000000e-09 -1.131421009652e-01 + 9.742800000000e-09 -2.683001893320e-01 + 9.752800000000e-09 -3.862438201445e-01 + 9.762800000000e-09 -4.473550172008e-01 + 9.772800000000e-09 -4.439449184184e-01 + 9.782800000000e-09 -3.795383301655e-01 + 9.792800000000e-09 -2.649981277889e-01 + 9.802800000000e-09 -1.158721210561e-01 + 9.812800000000e-09 5.031372300316e-02 + 9.822800000000e-09 2.129735066346e-01 + 9.832800000000e-09 3.476354406006e-01 + 9.842800000000e-09 4.316799545378e-01 + 9.852800000000e-09 4.526408185429e-01 + 9.862800000000e-09 4.102081755019e-01 + 9.872800000000e-09 3.127946687819e-01 + 9.882800000000e-09 1.746852880125e-01 + 9.892800000000e-09 1.281626765136e-02 + 9.902800000000e-09 -1.538078553024e-01 + 9.912800000000e-09 -3.018441271548e-01 + 9.922800000000e-09 -4.069740187264e-01 + 9.932800000000e-09 -4.521973532026e-01 + 9.942800000000e-09 -4.329168386702e-01 + 9.952800000000e-09 -3.549020207436e-01 + 9.962800000000e-09 -2.303806136131e-01 + 9.972800000000e-09 -7.541460414883e-02 + 9.982800000000e-09 9.192950911472e-02 + 9.992800000000e-09 2.499117932946e-01 + 1.000000000000e-08 3.444880261518e-01 diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/conditions.yaml new file mode 100644 index 00000000..960ceeec --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 22 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_22 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/LC_Oscillator_tb.sch new file mode 100644 index 00000000..dd8ef299 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/LC_Oscillator_tb_23.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 80 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/conditions.yaml new file mode 100644 index 00000000..7353f256 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 23 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ff +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_23 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/LC_Oscillator_tb.sch new file mode 100644 index 00000000..a82a85b1 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/LC_Oscillator_tb_24.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=0.8 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 80 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/conditions.yaml new file mode 100644 index 00000000..4ade0832 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 24 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_24 +temperature: '80' +vdd: '0.8' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/LC_Oscillator_tb.sch new file mode 100644 index 00000000..25127dae --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/LC_Oscillator_tb_25.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.2 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 80 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/LC_Oscillator_tb_25.data b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/LC_Oscillator_tb_25.data new file mode 100644 index 00000000..f4494484 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/LC_Oscillator_tb_25.data @@ -0,0 +1,985 @@ + 1.628000000000e-10 7.012500893491e-03 + 1.728000000000e-10 -6.836696403637e-03 + 1.828000000000e-10 -2.011528675689e-02 + 1.928000000000e-10 -3.094331869685e-02 + 2.028000000000e-10 -3.772988363464e-02 + 2.128000000000e-10 -3.940899430028e-02 + 2.228000000000e-10 -3.560528539533e-02 + 2.328000000000e-10 -2.670308854840e-02 + 2.428000000000e-10 -1.380871573983e-02 + 2.528000000000e-10 1.384720182743e-03 + 2.628000000000e-10 1.681355381072e-02 + 2.728000000000e-10 3.031718551774e-02 + 2.828000000000e-10 3.993982046217e-02 + 2.928000000000e-10 4.421759274955e-02 + 3.028000000000e-10 4.240385363324e-02 + 3.128000000000e-10 3.459162539838e-02 + 3.228000000000e-10 2.171578096832e-02 + 3.328000000000e-10 5.439399067936e-03 + 3.428000000000e-10 -1.205572970074e-02 + 3.528000000000e-10 -2.835205319523e-02 + 3.628000000000e-10 -4.112451441024e-02 + 3.728000000000e-10 -4.847523368438e-02 + 3.828000000000e-10 -4.922090470354e-02 + 3.928000000000e-10 -4.308088834640e-02 + 4.028000000000e-10 -3.073328076104e-02 + 4.128000000000e-10 -1.373706297121e-02 + 4.228000000000e-10 5.661631813816e-03 + 4.328000000000e-10 2.481430819218e-02 + 4.428000000000e-10 4.102139517877e-02 + 4.528000000000e-10 5.191369080649e-02 + 4.628000000000e-10 5.580838812438e-02 + 4.728000000000e-10 5.197290855834e-02 + 4.828000000000e-10 4.074678226654e-02 + 4.928000000000e-10 2.350727746293e-02 + 5.028000000000e-10 2.497638925153e-03 + 5.128000000000e-10 -1.945266555981e-02 + 5.228000000000e-10 -3.929096866200e-02 + 5.328000000000e-10 -5.416275721466e-02 + 5.428000000000e-10 -6.183067859078e-02 + 5.528000000000e-10 -6.102007239963e-02 + 5.628000000000e-10 -5.162850051946e-02 + 5.728000000000e-10 -3.475168009852e-02 + 5.828000000000e-10 -1.254566687995e-02 + 5.928000000000e-10 1.204054952866e-02 + 6.028000000000e-10 3.563334801579e-02 + 6.128000000000e-10 5.488109410972e-02 + 6.228000000000e-10 6.693842655668e-02 + 6.328000000000e-10 6.990750485103e-02 + 6.428000000000e-10 6.314204883460e-02 + 6.528000000000e-10 4.735235746841e-02 + 6.628000000000e-10 2.451228042044e-02 + 6.728000000000e-10 -2.390285025873e-03 + 6.828000000000e-10 -2.971774615179e-02 + 6.928000000000e-10 -5.364377104422e-02 + 7.028000000000e-10 -7.068603683687e-02 + 7.128000000000e-10 -7.823990704720e-02 + 7.228000000000e-10 -7.499815988276e-02 + 7.328000000000e-10 -6.115960722561e-02 + 7.428000000000e-10 -3.840037073668e-02 + 7.528000000000e-10 -9.651955475471e-03 + 7.628000000000e-10 2.125526909825e-02 + 7.728000000000e-10 5.005649211818e-02 + 7.828000000000e-10 7.261911420983e-02 + 7.928000000000e-10 8.556166198228e-02 + 8.028000000000e-10 8.680217826941e-02 + 8.128000000000e-10 7.589565084462e-02 + 8.228000000000e-10 5.409327396672e-02 + 8.328000000000e-10 2.415769963832e-02 + 8.428000000000e-10 -9.983087632906e-03 + 8.528000000000e-10 -4.369464056225e-02 + 8.628000000000e-10 -7.220066680051e-02 + 8.728000000000e-10 -9.130174652829e-02 + 8.828000000000e-10 -9.804669610562e-02 + 8.928000000000e-10 -9.118903960770e-02 + 9.028000000000e-10 -7.139579755086e-02 + 9.128000000000e-10 -4.112975754243e-02 + 9.228000000000e-10 -4.305977482059e-03 + 9.328000000000e-10 3.415988646659e-02 + 9.428000000000e-10 6.892223177298e-02 + 9.528000000000e-10 9.492651214302e-02 + 9.628000000000e-10 1.082112665671e-01 + 9.728000000000e-10 1.065872934127e-01 + 9.828000000000e-10 8.998576579917e-02 + 9.928000000000e-10 6.042053813011e-02 + 1.002800000000e-09 2.166924549360e-02 + 1.012800000000e-09 -2.118645003863e-02 + 1.022800000000e-09 -6.227469252170e-02 + 1.032800000000e-09 -9.571983255510e-02 + 1.042800000000e-09 -1.165451142895e-01 + 1.052800000000e-09 -1.214458377803e-01 + 1.062800000000e-09 -1.094018913909e-01 + 1.072800000000e-09 -8.180162782567e-02 + 1.082800000000e-09 -4.211208313372e-02 + 1.092800000000e-09 4.523122698114e-03 + 1.102800000000e-09 5.180827669305e-02 + 1.112800000000e-09 9.308778082418e-02 + 1.122800000000e-09 1.223130431454e-01 + 1.132800000000e-09 1.349939037125e-01 + 1.142800000000e-09 1.289620586504e-01 + 1.152800000000e-09 1.047595241504e-01 + 1.162800000000e-09 6.543651522291e-02 + 1.172800000000e-09 1.599606783403e-02 + 1.182800000000e-09 -3.705183027249e-02 + 1.192800000000e-09 -8.634471097591e-02 + 1.202800000000e-09 -1.247675202665e-01 + 1.212800000000e-09 -1.465022469320e-01 + 1.222800000000e-09 -1.480332594903e-01 + 1.232800000000e-09 -1.288300398910e-01 + 1.242800000000e-09 -9.130204562503e-02 + 1.252800000000e-09 -4.019697851506e-02 + 1.262800000000e-09 1.787829180432e-02 + 1.272800000000e-09 7.503285743474e-02 + 1.282800000000e-09 1.231096012517e-01 + 1.292800000000e-09 1.549449832993e-01 + 1.302800000000e-09 1.655797018635e-01 + 1.312800000000e-09 1.531316485348e-01 + 1.322800000000e-09 1.191009187016e-01 + 1.332800000000e-09 6.781849987804e-02 + 1.342800000000e-09 5.829400432077e-03 + 1.352800000000e-09 -5.863842211583e-02 + 1.362800000000e-09 -1.165694703736e-01 + 1.372800000000e-09 -1.594013467915e-01 + 1.382800000000e-09 -1.805659654448e-01 + 1.392800000000e-09 -1.766742610014e-01 + 1.402800000000e-09 -1.480253374586e-01 + 1.412800000000e-09 -9.830308342524e-02 + 1.422800000000e-09 -3.384507780962e-02 + 1.432800000000e-09 3.698106646200e-02 + 1.442800000000e-09 1.045131463012e-01 + 1.452800000000e-09 1.589333912827e-01 + 1.462800000000e-09 1.919780610738e-01 + 1.472800000000e-09 1.984598178079e-01 + 1.482800000000e-09 1.771796036898e-01 + 1.492800000000e-09 1.309399066994e-01 + 1.502800000000e-09 6.571427492601e-02 + 1.512800000000e-09 -1.016621024455e-02 + 1.522800000000e-09 -8.663238635637e-02 + 1.532800000000e-09 -1.528128308249e-01 + 1.542800000000e-09 -1.987038966807e-01 + 1.552800000000e-09 -2.171788174341e-01 + 1.562800000000e-09 -2.053301148575e-01 + 1.572800000000e-09 -1.647652258778e-01 + 1.582800000000e-09 -1.008264129874e-01 + 1.592800000000e-09 -2.160208398576e-02 + 1.602800000000e-09 6.264603892234e-02 + 1.612800000000e-09 1.402656163881e-01 + 1.622800000000e-09 1.996984021290e-01 + 1.632800000000e-09 2.317506516808e-01 + 1.642800000000e-09 2.314313866818e-01 + 1.652800000000e-09 1.987349257620e-01 + 1.662800000000e-09 1.381831348590e-01 + 1.672800000000e-09 5.757695588839e-02 + 1.682800000000e-09 -3.287004678254e-02 + 1.692800000000e-09 -1.210640629826e-01 + 1.702800000000e-09 -1.941646802863e-01 + 1.712800000000e-09 -2.408659512901e-01 + 1.722800000000e-09 -2.538923983480e-01 + 1.732800000000e-09 -2.313612477906e-01 + 1.742800000000e-09 -1.765849054938e-01 + 1.752800000000e-09 -9.685870660329e-02 + 1.762800000000e-09 -2.223907425844e-03 + 1.772800000000e-09 9.509769054805e-02 + 1.782800000000e-09 1.813733885017e-01 + 1.792800000000e-09 2.434062763232e-01 + 1.802800000000e-09 2.714788385630e-01 + 1.812800000000e-09 2.613918158139e-01 + 1.822800000000e-09 2.148396961293e-01 + 1.832800000000e-09 1.383808732240e-01 + 1.842800000000e-09 4.179508856863e-02 + 1.852800000000e-09 -6.279341382031e-02 + 1.862800000000e-09 -1.611899004507e-01 + 1.872800000000e-09 -2.386466920350e-01 + 1.882800000000e-09 -2.829513032859e-01 + 1.892800000000e-09 -2.873083815734e-01 + 1.902800000000e-09 -2.514782298854e-01 + 1.912800000000e-09 -1.808839351528e-01 + 1.922800000000e-09 -8.482698296201e-02 + 1.932800000000e-09 2.476814038955e-02 + 1.942800000000e-09 1.336309580637e-01 + 1.952800000000e-09 2.259489580115e-01 + 1.962800000000e-09 2.872357837251e-01 + 1.972800000000e-09 3.078857401593e-01 + 1.982800000000e-09 2.851833420475e-01 + 1.992800000000e-09 2.229888725606e-01 + 2.002800000000e-09 1.300084003987e-01 + 2.012800000000e-09 1.790357040717e-02 + 2.022800000000e-09 -9.928387103407e-02 + 2.032800000000e-09 -2.052295187783e-01 + 2.042800000000e-09 -2.835642075903e-01 + 2.052800000000e-09 -3.217911211773e-01 + 2.062800000000e-09 -3.143525374407e-01 + 2.072800000000e-09 -2.631559162486e-01 + 2.082800000000e-09 -1.759338701478e-01 + 2.092800000000e-09 -6.399004569620e-02 + 2.102800000000e-09 5.898077984231e-02 + 2.112800000000e-09 1.766685874951e-01 + 2.122800000000e-09 2.713906690470e-01 + 2.132800000000e-09 3.279681161332e-01 + 2.142800000000e-09 3.377135539208e-01 + 2.152800000000e-09 3.000848927823e-01 + 2.162800000000e-09 2.213549561772e-01 + 2.172800000000e-09 1.122622276025e-01 + 2.182800000000e-09 -1.381768919877e-02 + 2.192800000000e-09 -1.409373022935e-01 + 2.202800000000e-09 -2.507635641362e-01 + 2.212800000000e-09 -3.258408286833e-01 + 2.222800000000e-09 -3.542579480953e-01 + 2.232800000000e-09 -3.324667333214e-01 + 2.242800000000e-09 -2.647902576716e-01 + 2.252800000000e-09 -1.612179678666e-01 + 2.262800000000e-09 -3.481176984312e-02 + 2.272800000000e-09 9.904092526392e-02 + 2.282800000000e-09 2.220079939417e-01 + 2.292800000000e-09 3.149716432288e-01 + 2.302800000000e-09 3.628437331222e-01 + 2.312800000000e-09 3.587379421814e-01 + 2.322800000000e-09 3.046776528851e-01 + 2.332800000000e-09 2.093861847798e-01 + 2.342800000000e-09 8.549139830320e-02 + 2.352800000000e-09 -5.214616541902e-02 + 2.362800000000e-09 -1.857136052348e-01 + 2.372800000000e-09 -2.951836906321e-01 + 2.382800000000e-09 -3.627498977307e-01 + 2.392800000000e-09 -3.779628144437e-01 + 2.402800000000e-09 -3.399517258398e-01 + 2.412800000000e-09 -2.556356131873e-01 + 2.422800000000e-09 -1.369537998920e-01 + 2.432800000000e-09 1.612466350873e-03 + 2.442800000000e-09 1.430072276497e-01 + 2.452800000000e-09 2.670578904749e-01 + 2.462800000000e-09 3.538632119017e-01 + 2.472800000000e-09 3.894674448545e-01 + 2.482800000000e-09 3.695259862192e-01 + 2.492800000000e-09 2.986433530310e-01 + 2.502800000000e-09 1.877780086939e-01 + 2.512800000000e-09 5.108743364179e-02 + 2.522800000000e-09 -9.516580544778e-02 + 2.532800000000e-09 -2.313167628551e-01 + 2.542800000000e-09 -3.361555459255e-01 + 2.552800000000e-09 -3.924183096696e-01 + 2.562800000000e-09 -3.920251100203e-01 + 2.572800000000e-09 -3.370364339153e-01 + 2.582800000000e-09 -2.367706500422e-01 + 2.592800000000e-09 -1.047353985464e-01 + 2.602800000000e-09 4.335803805257e-02 + 2.612800000000e-09 1.887476946692e-01 + 2.622800000000e-09 3.097641486437e-01 + 2.632800000000e-09 3.865078010286e-01 + 2.642800000000e-09 4.070090475308e-01 + 2.652800000000e-09 3.699656427826e-01 + 2.662800000000e-09 2.826420677388e-01 + 2.672800000000e-09 1.578272950910e-01 + 2.682800000000e-09 1.079866678167e-02 + 2.692800000000e-09 -1.407536969898e-01 + 2.702800000000e-09 -2.754837849999e-01 + 2.712800000000e-09 -3.716731512010e-01 + 2.722800000000e-09 -4.136838859718e-01 + 2.732800000000e-09 -3.963885753120e-01 + 2.742800000000e-09 -3.244153332164e-01 + 2.752800000000e-09 -2.093040013472e-01 + 2.762800000000e-09 -6.601158752832e-02 + 2.772800000000e-09 8.868042451014e-02 + 2.782800000000e-09 2.343454001442e-01 + 2.792800000000e-09 3.483346375629e-01 + 2.802800000000e-09 4.116875635654e-01 + 2.812800000000e-09 4.152563263790e-01 + 2.822800000000e-09 3.608389719936e-01 + 2.832800000000e-09 2.580617771223e-01 + 2.842800000000e-09 1.211470523220e-01 + 2.852800000000e-09 -3.368655674602e-02 + 2.862800000000e-09 -1.872171894152e-01 + 2.872800000000e-09 -3.167520237587e-01 + 2.882800000000e-09 -4.008606786603e-01 + 2.892800000000e-09 -4.263083216249e-01 + 2.902800000000e-09 -3.912624525408e-01 + 2.912800000000e-09 -3.030399893151e-01 + 2.922800000000e-09 -1.749146063497e-01 + 2.932800000000e-09 -2.271473658697e-02 + 2.942800000000e-09 1.355583441369e-01 + 2.952800000000e-09 2.779107028144e-01 + 2.962800000000e-09 3.813794379184e-01 + 2.972800000000e-09 4.288982286630e-01 + 2.982800000000e-09 4.146277164688e-01 + 2.992800000000e-09 3.431710326487e-01 + 3.002800000000e-09 2.262614542574e-01 + 3.012800000000e-09 7.930965313933e-02 + 3.022800000000e-09 -8.062071333404e-02 + 3.032800000000e-09 -2.327575296953e-01 + 3.042800000000e-09 -3.535640991561e-01 + 3.052800000000e-09 -4.228195532204e-01 + 3.062800000000e-09 -4.304161720372e-01 + 3.072800000000e-09 -3.777339960190e-01 + 3.082800000000e-09 -2.744293275873e-01 + 3.092800000000e-09 -1.351215005206e-01 + 3.102800000000e-09 2.365656647316e-02 + 3.112800000000e-09 1.825190362100e-01 + 3.122800000000e-09 3.182146799873e-01 + 3.132800000000e-09 4.082454113266e-01 + 3.142800000000e-09 4.383138622509e-01 + 3.152800000000e-09 4.059804944163e-01 + 3.162800000000e-09 3.183923840090e-01 + 3.172800000000e-09 1.890170817553e-01 + 3.182800000000e-09 3.403487511833e-02 + 3.192800000000e-09 -1.284442874109e-01 + 3.202800000000e-09 -2.761433817562e-01 + 3.212800000000e-09 -3.852967424611e-01 + 3.222800000000e-09 -4.377743745261e-01 + 3.232800000000e-09 -4.269681667087e-01 + 3.242800000000e-09 -3.572429809969e-01 + 3.252800000000e-09 -2.402523061418e-01 + 3.262800000000e-09 -9.154378582370e-02 + 3.272800000000e-09 7.159336541688e-02 + 3.282800000000e-09 2.282598025823e-01 + 3.292800000000e-09 3.543921465552e-01 + 3.302800000000e-09 4.288001587648e-01 + 3.312800000000e-09 4.404747333900e-01 + 3.322800000000e-09 3.902762483537e-01 + 3.332800000000e-09 2.877112694723e-01 + 3.342800000000e-09 1.475735918470e-01 + 3.352800000000e-09 -1.340681113335e-02 + 3.362800000000e-09 -1.758470957664e-01 + 3.372800000000e-09 -3.162271684543e-01 + 3.382800000000e-09 -4.112854116550e-01 + 3.392800000000e-09 -4.457861931281e-01 + 3.402800000000e-09 -4.166259810235e-01 + 3.412800000000e-09 -3.306390725454e-01 + 3.422800000000e-09 -2.013011019605e-01 + 3.432800000000e-09 -4.500748509382e-02 + 3.442800000000e-09 1.201319262067e-01 + 3.452800000000e-09 2.717759998538e-01 + 3.462800000000e-09 3.856382544818e-01 + 3.472800000000e-09 4.427005153268e-01 + 3.482800000000e-09 4.355740425711e-01 + 3.492800000000e-09 3.681676344657e-01 + 3.502800000000e-09 2.520001256141e-01 + 3.512800000000e-09 1.027856034602e-01 + 3.522800000000e-09 -6.214113809726e-02 + 3.532800000000e-09 -2.219463700922e-01 + 3.542800000000e-09 -3.522897832528e-01 + 3.552800000000e-09 -4.312383931619e-01 + 3.562800000000e-09 -4.469367873869e-01 + 3.572800000000e-09 -3.996681777827e-01 + 3.582800000000e-09 -2.986702839071e-01 + 3.592800000000e-09 -1.587548020618e-01 + 3.602800000000e-09 3.237638204246e-03 + 3.612800000000e-09 1.680235195193e-01 + 3.622800000000e-09 3.120096250445e-01 + 3.632800000000e-09 4.113959545959e-01 + 3.642800000000e-09 4.501157411319e-01 + 3.652800000000e-09 4.243711515050e-01 + 3.662800000000e-09 3.405944310626e-01 + 3.672800000000e-09 2.121446795577e-01 + 3.682800000000e-09 5.552915672272e-02 + 3.692800000000e-09 -1.112045016544e-01 + 3.702800000000e-09 -2.657894653782e-01 + 3.712800000000e-09 -3.836206433927e-01 + 3.722800000000e-09 -4.449314467059e-01 + 3.732800000000e-09 -4.415576853142e-01 + 3.742800000000e-09 -3.768949090902e-01 + 3.752800000000e-09 -2.622309979378e-01 + 3.762800000000e-09 -1.133257329850e-01 + 3.772800000000e-09 5.248730703407e-02 + 3.782800000000e-09 2.145285109870e-01 + 3.792800000000e-09 3.483433294042e-01 + 3.802800000000e-09 4.314133052594e-01 + 3.812800000000e-09 4.510788878032e-01 + 3.822800000000e-09 4.070087095695e-01 + 3.832800000000e-09 3.080959535192e-01 + 3.842800000000e-09 1.690677352797e-01 + 3.852800000000e-09 6.818480607102e-03 + 3.862800000000e-09 -1.595191743271e-01 + 3.872800000000e-09 -3.064013747144e-01 + 3.882800000000e-09 -4.096431291412e-01 + 3.892800000000e-09 -4.524251951373e-01 + 3.902800000000e-09 -4.302358559973e-01 + 3.912800000000e-09 -3.490473717621e-01 + 3.922800000000e-09 -2.220233085267e-01 + 3.932800000000e-09 -6.571106493433e-02 + 3.942800000000e-09 1.019348362650e-01 + 3.952800000000e-09 2.588052332425e-01 + 3.962800000000e-09 3.801100102009e-01 + 3.972800000000e-09 4.454345752669e-01 + 3.982800000000e-09 4.458448372487e-01 + 3.992800000000e-09 3.841866119438e-01 + 4.002800000000e-09 2.714548123789e-01 + 4.012800000000e-09 1.233734878221e-01 + 4.022800000000e-09 -4.275078804767e-02 + 4.032800000000e-09 -2.064412675856e-01 + 4.042800000000e-09 -3.432344881406e-01 + 4.052800000000e-09 -4.301371948133e-01 + 4.062800000000e-09 -4.537194751721e-01 + 4.072800000000e-09 -4.130098032542e-01 + 4.082800000000e-09 -3.165071950029e-01 + 4.092800000000e-09 -1.787873532722e-01 + 4.102800000000e-09 -1.676127568579e-02 + 4.112800000000e-09 1.506139813398e-01 + 4.122800000000e-09 2.999208836457e-01 + 4.132800000000e-09 4.066952303749e-01 + 4.142800000000e-09 4.534251929116e-01 + 4.152800000000e-09 4.348718573410e-01 + 4.162800000000e-09 3.566308602093e-01 + 4.172800000000e-09 2.315136991667e-01 + 4.182800000000e-09 7.587492936502e-02 + 4.192800000000e-09 -9.232737370602e-02 + 4.202800000000e-09 -2.511548962980e-01 + 4.212800000000e-09 -3.757107007400e-01 + 4.222800000000e-09 -4.449840901434e-01 + 4.232800000000e-09 -4.492617168676e-01 + 4.242800000000e-09 -3.908055845927e-01 + 4.252800000000e-09 -2.802769682433e-01 + 4.262800000000e-09 -1.333136465527e-01 + 4.272800000000e-09 3.281119905088e-02 + 4.282800000000e-09 1.978483415435e-01 + 4.292800000000e-09 3.373856919794e-01 + 4.302800000000e-09 4.280187299201e-01 + 4.312800000000e-09 4.555564942366e-01 + 4.322800000000e-09 4.183582920564e-01 + 4.332800000000e-09 3.244901654317e-01 + 4.342800000000e-09 1.883349868840e-01 + 4.352800000000e-09 2.680107063408e-02 + 4.362800000000e-09 -1.413372168621e-01 + 4.372800000000e-09 -2.928350431632e-01 + 4.382800000000e-09 -4.030105817831e-01 + 4.392800000000e-09 -4.535989112926e-01 + 4.402800000000e-09 -4.386764611952e-01 + 4.412800000000e-09 -3.634428025566e-01 + 4.422800000000e-09 -2.403778766300e-01 + 4.432800000000e-09 -8.575991803266e-02 + 4.442800000000e-09 8.257350530298e-02 + 4.452800000000e-09 2.429350180587e-01 + 4.462800000000e-09 3.704039860416e-01 + 4.472800000000e-09 4.434515936339e-01 + 4.482800000000e-09 4.515950854441e-01 + 4.492800000000e-09 3.964896001786e-01 + 4.502800000000e-09 2.884224738017e-01 + 4.512800000000e-09 1.428922570505e-01 + 4.522800000000e-09 -2.287742016526e-02 + 4.532800000000e-09 -1.888844173081e-01 + 4.542800000000e-09 -3.308332931147e-01 + 4.552800000000e-09 -4.249883675813e-01 + 4.562800000000e-09 -4.564314121828e-01 + 4.572800000000e-09 -4.228339982982e-01 + 4.582800000000e-09 -3.317964504948e-01 + 4.592800000000e-09 -1.974663632890e-01 + 4.602800000000e-09 -3.672212795716e-02 + 4.612800000000e-09 1.318510939135e-01 + 4.622800000000e-09 2.852251051259e-01 + 4.632800000000e-09 3.985739609122e-01 + 4.642800000000e-09 4.530046819013e-01 + 4.652800000000e-09 4.418474089549e-01 + 4.662800000000e-09 3.697541710055e-01 + 4.672800000000e-09 2.488913470622e-01 + 4.682800000000e-09 9.547172872491e-02 + 4.692800000000e-09 -7.278650963224e-02 + 4.702800000000e-09 -2.344625532303e-01 + 4.712800000000e-09 -3.646581254238e-01 + 4.722800000000e-09 -4.413764332431e-01 + 4.732800000000e-09 -4.533743551379e-01 + 4.742800000000e-09 -4.016860684396e-01 + 4.752800000000e-09 -2.962028145055e-01 + 4.762800000000e-09 -1.522546642246e-01 + 4.772800000000e-09 1.298606104156e-02 + 4.782800000000e-09 1.797653486688e-01 + 4.792800000000e-09 3.239391263904e-01 + 4.802800000000e-09 4.214911919939e-01 + 4.812800000000e-09 4.568021199504e-01 + 4.822800000000e-09 4.268435093478e-01 + 4.832800000000e-09 3.387303282580e-01 + 4.842800000000e-09 2.063519474741e-01 + 4.852800000000e-09 4.654379769846e-02 + 4.862800000000e-09 -1.222914580115e-01 + 4.872800000000e-09 -2.773634650403e-01 + 4.882800000000e-09 -3.937473691287e-01 + 4.892800000000e-09 -4.519577958831e-01 + 4.902800000000e-09 -4.445756364778e-01 + 4.912800000000e-09 -3.756920651713e-01 + 4.922800000000e-09 -2.571408103806e-01 + 4.932800000000e-09 -1.050437011816e-01 + 4.942800000000e-09 6.299158173080e-02 + 4.952800000000e-09 2.258180588286e-01 + 4.962800000000e-09 3.585950650416e-01 + 4.972800000000e-09 4.389003765825e-01 + 4.982800000000e-09 4.547405702547e-01 + 4.992800000000e-09 4.065163775812e-01 + 5.002800000000e-09 3.037051458814e-01 + 5.012800000000e-09 1.614456966064e-01 + 5.022800000000e-09 -3.140541353410e-03 + 5.032800000000e-09 -1.705434720448e-01 + 5.042800000000e-09 -3.167959493642e-01 + 5.052800000000e-09 -4.176436581108e-01 + 5.062800000000e-09 -4.567904783134e-01 + 5.072800000000e-09 -4.304974756175e-01 + 5.082800000000e-09 -3.453772575060e-01 + 5.092800000000e-09 -2.150436248025e-01 + 5.102800000000e-09 -5.627814637501e-02 + 5.112800000000e-09 1.126887346862e-01 + 5.122800000000e-09 2.693188370361e-01 + 5.132800000000e-09 3.886250465491e-01 + 5.142800000000e-09 4.505620779568e-01 + 5.152800000000e-09 4.469599727796e-01 + 5.162800000000e-09 3.813375821020e-01 + 5.172800000000e-09 2.651804097085e-01 + 5.182800000000e-09 1.144979323371e-01 + 5.192800000000e-09 -5.320249220978e-02 + 5.202800000000e-09 -2.170495801291e-01 + 5.212800000000e-09 -3.522885439484e-01 + 5.222800000000e-09 -4.361094619590e-01 + 5.232800000000e-09 -4.557797826345e-01 + 5.242800000000e-09 -4.110550829724e-01 + 5.252800000000e-09 -3.109835045712e-01 + 5.262800000000e-09 -1.704940153492e-01 + 5.272800000000e-09 -6.658261407769e-03 + 5.282800000000e-09 1.612499204857e-01 + 5.292800000000e-09 3.094600753540e-01 + 5.302800000000e-09 4.135166703401e-01 + 5.312800000000e-09 4.564708695076e-01 + 5.322800000000e-09 4.338637375563e-01 + 5.332800000000e-09 3.517900964280e-01 + 5.342800000000e-09 2.235741216924e-01 + 5.352800000000e-09 6.593362598765e-02 + 5.362800000000e-09 -1.030609522330e-01 + 5.372800000000e-09 -2.611331951545e-01 + 5.382800000000e-09 -3.832647757224e-01 + 5.392800000000e-09 -4.488810836550e-01 + 5.402800000000e-09 -4.490610448444e-01 + 5.412800000000e-09 -3.867406866619e-01 + 5.422800000000e-09 -2.730437032369e-01 + 5.432800000000e-09 -1.238484983962e-01 + 5.442800000000e-09 4.342741315033e-02 + 5.452800000000e-09 2.081866330621e-01 + 5.462800000000e-09 3.457839035824e-01 + 5.472800000000e-09 4.330563271577e-01 + 5.482800000000e-09 4.565445731179e-01 + 5.492800000000e-09 4.153478649151e-01 + 5.502800000000e-09 3.180711206356e-01 + 5.512800000000e-09 1.794176558320e-01 + 5.522800000000e-09 1.641011396593e-02 + 5.532800000000e-09 -1.519039268062e-01 + 5.542800000000e-09 -3.019665647326e-01 + 5.552800000000e-09 -4.091541747618e-01 + 5.562800000000e-09 -4.558891498636e-01 + 5.572800000000e-09 -4.369840984805e-01 + 5.582800000000e-09 -3.581241392102e-01 + 5.592800000000e-09 -2.322249004909e-01 + 5.602800000000e-09 -7.574916364461e-02 + 5.612800000000e-09 9.326948142052e-02 + 5.622800000000e-09 2.527873070870e-01 + 5.632800000000e-09 3.777705045672e-01 + 5.642800000000e-09 4.471223895313e-01 + 5.652800000000e-09 4.511566588213e-01 + 5.662800000000e-09 3.922073702103e-01 + 5.672800000000e-09 2.810244279511e-01 + 5.682800000000e-09 1.333432196458e-01 + 5.692800000000e-09 -3.349195237676e-02 + 5.702800000000e-09 -1.991528178789e-01 + 5.712800000000e-09 -3.391151005923e-01 + 5.722800000000e-09 -4.298789096644e-01 + 5.732800000000e-09 -4.572528772801e-01 + 5.742800000000e-09 -4.196589632083e-01 + 5.752800000000e-09 -3.252410010138e-01 + 5.762800000000e-09 -1.884658202129e-01 + 5.772800000000e-09 -2.631231855801e-02 + 5.782800000000e-09 1.423850296428e-01 + 5.792800000000e-09 2.942912422347e-01 + 5.802800000000e-09 4.046316028654e-01 + 5.812800000000e-09 4.551176666134e-01 + 5.822800000000e-09 4.398775692260e-01 + 5.832800000000e-09 3.641786589355e-01 + 5.842800000000e-09 2.405735750661e-01 + 5.852800000000e-09 8.541020413752e-02 + 5.862800000000e-09 -8.342375580303e-02 + 5.872800000000e-09 -2.441700751645e-01 + 5.882800000000e-09 -3.718246619929e-01 + 5.892800000000e-09 -4.448177542406e-01 + 5.902800000000e-09 -4.527035205187e-01 + 5.912800000000e-09 -3.971994060655e-01 + 5.922800000000e-09 -2.886584501893e-01 + 5.932800000000e-09 -1.426436261292e-01 + 5.942800000000e-09 2.357534207914e-02 + 5.952800000000e-09 1.899416354280e-01 + 5.962800000000e-09 3.320877856471e-01 + 5.972800000000e-09 4.262270244494e-01 + 5.982800000000e-09 4.574592611578e-01 + 5.992800000000e-09 4.235149847031e-01 + 6.002800000000e-09 3.320565446906e-01 + 6.012800000000e-09 1.972902796990e-01 + 6.022800000000e-09 3.613985959442e-02 + 6.032800000000e-09 -1.327677722468e-01 + 6.042800000000e-09 -2.863431360123e-01 + 6.052800000000e-09 -3.997063143408e-01 + 6.062800000000e-09 -4.539655483493e-01 + 6.072800000000e-09 -4.425042696287e-01 + 6.082800000000e-09 -3.700327074384e-01 + 6.092800000000e-09 -2.487715382814e-01 + 6.102800000000e-09 -9.497914083079e-02 + 6.112800000000e-09 7.359209422332e-02 + 6.122800000000e-09 2.354706523905e-01 + 6.132800000000e-09 3.657058283905e-01 + 6.142800000000e-09 4.422869934945e-01 + 6.152800000000e-09 4.540147535675e-01 + 6.162800000000e-09 4.019805174515e-01 + 6.172800000000e-09 2.961282031802e-01 + 6.182800000000e-09 1.518330336106e-01 + 6.192800000000e-09 -1.370239553125e-02 + 6.202800000000e-09 -1.806839606530e-01 + 6.212800000000e-09 -3.249186645848e-01 + 6.222800000000e-09 -4.223653236709e-01 + 6.232800000000e-09 -4.574343042586e-01 + 6.242800000000e-09 -4.271546593769e-01 + 6.252800000000e-09 -3.386946470531e-01 + 6.262800000000e-09 -2.059878675733e-01 + 6.272800000000e-09 -4.589953893972e-02 + 6.282800000000e-09 1.231372739742e-01 + 6.292800000000e-09 2.782875793903e-01 + 6.302800000000e-09 3.945950758032e-01 + 6.312800000000e-09 4.525905539119e-01 + 6.322800000000e-09 4.449097729916e-01 + 6.332800000000e-09 3.756969538976e-01 + 6.342800000000e-09 2.568296698588e-01 + 6.352800000000e-09 1.044613262396e-01 + 6.362800000000e-09 -6.377641166974e-02 + 6.372800000000e-09 -2.266977186311e-01 + 6.382800000000e-09 -3.594272422115e-01 + 6.392800000000e-09 -4.395448112929e-01 + 6.402800000000e-09 -4.551052070147e-01 + 6.412800000000e-09 -4.065639532775e-01 + 6.422800000000e-09 -3.034438545933e-01 + 6.432800000000e-09 -1.609178849037e-01 + 6.442800000000e-09 3.872236648679e-03 + 6.452800000000e-09 1.713852064685e-01 + 6.462800000000e-09 3.176180728990e-01 + 6.472800000000e-09 4.183065123932e-01 + 6.482800000000e-09 4.571912190991e-01 + 6.492800000000e-09 4.305904108119e-01 + 6.502800000000e-09 3.451653585563e-01 + 6.512800000000e-09 2.145658635140e-01 + 6.522800000000e-09 5.559396789825e-02 + 6.532800000000e-09 -1.134967732320e-01 + 6.542800000000e-09 -2.701331054662e-01 + 6.552800000000e-09 -3.893091698675e-01 + 6.562800000000e-09 -4.510045019899e-01 + 6.572800000000e-09 -4.471053245698e-01 + 6.582800000000e-09 -3.811809229815e-01 + 6.592800000000e-09 -2.647548608446e-01 + 6.602800000000e-09 -1.138602690642e-01 + 6.612800000000e-09 5.397821083808e-02 + 6.622800000000e-09 2.178575335210e-01 + 6.632800000000e-09 3.529981184518e-01 + 6.642800000000e-09 4.366009970541e-01 + 6.652800000000e-09 4.559845691576e-01 + 6.662800000000e-09 4.109582498353e-01 + 6.672800000000e-09 3.106118205570e-01 + 6.682800000000e-09 1.699022954565e-01 + 6.692800000000e-09 5.915339283626e-03 + 6.702800000000e-09 -1.620496385137e-01 + 6.712800000000e-09 -3.101936837238e-01 + 6.722800000000e-09 -4.140594543730e-01 + 6.732800000000e-09 -4.567388467348e-01 + 6.742800000000e-09 -4.338303386975e-01 + 6.752800000000e-09 -3.514751821141e-01 + 6.762800000000e-09 -2.230290152209e-01 + 6.772800000000e-09 -6.522467657079e-02 + 6.782800000000e-09 1.038491420042e-01 + 6.792800000000e-09 2.618864395567e-01 + 6.802800000000e-09 3.838569947529e-01 + 6.812800000000e-09 4.492156537145e-01 + 6.822800000000e-09 4.490984904524e-01 + 6.832800000000e-09 3.864908118470e-01 + 6.842800000000e-09 2.725513338594e-01 + 6.852800000000e-09 1.231778490931e-01 + 6.862800000000e-09 -4.419932330591e-02 + 6.872800000000e-09 -2.089553852736e-01 + 6.882800000000e-09 -3.464255737525e-01 + 6.892800000000e-09 -4.334625129567e-01 + 6.902800000000e-09 -4.566593039761e-01 + 6.912800000000e-09 -4.151688766379e-01 + 6.922800000000e-09 -3.176359676292e-01 + 6.932800000000e-09 -1.787887070926e-01 + 6.942800000000e-09 -1.565986702155e-02 + 6.952800000000e-09 1.526811561401e-01 + 6.962800000000e-09 3.026519061957e-01 + 6.972800000000e-09 4.096310544442e-01 + 6.982800000000e-09 4.560835735468e-01 + 6.992800000000e-09 4.368799795502e-01 + 7.002800000000e-09 3.577521174019e-01 + 7.012800000000e-09 2.316437766720e-01 + 7.022800000000e-09 7.502797073367e-02 + 7.032800000000e-09 -9.404586390258e-02 + 7.042800000000e-09 -2.535072599361e-01 + 7.052800000000e-09 -3.783137597561e-01 + 7.062800000000e-09 -4.473999874089e-01 + 7.072800000000e-09 -4.511372706600e-01 + 7.082800000000e-09 -3.919085390613e-01 + 7.092800000000e-09 -2.804973088209e-01 + 7.102800000000e-09 -1.326563240509e-01 + 7.112800000000e-09 3.426034226867e-02 + 7.122800000000e-09 1.998998645695e-01 + 7.132800000000e-09 3.397209531622e-01 + 7.142800000000e-09 4.302409589481e-01 + 7.152800000000e-09 4.573213180723e-01 + 7.162800000000e-09 4.194379227055e-01 + 7.172800000000e-09 3.247737275567e-01 + 7.182800000000e-09 1.878188619365e-01 + 7.192800000000e-09 2.556003022406e-02 + 7.202800000000e-09 -1.431491643082e-01 + 7.212800000000e-09 -2.949511788207e-01 + 7.222800000000e-09 -4.050750848511e-01 + 7.232800000000e-09 -4.552765862658e-01 + 7.242800000000e-09 -4.397412508267e-01 + 7.252800000000e-09 -3.637807839581e-01 + 7.262800000000e-09 -2.399757437995e-01 + 7.272800000000e-09 -8.468383609971e-02 + 7.282800000000e-09 8.419397478455e-02 + 7.292800000000e-09 2.448744643025e-01 + 7.302800000000e-09 3.723459718917e-01 + 7.312800000000e-09 4.450701446380e-01 + 7.322800000000e-09 4.526588922797e-01 + 7.332800000000e-09 3.968786986951e-01 + 7.342800000000e-09 2.881158358805e-01 + 7.352800000000e-09 1.419499990279e-01 + 7.362800000000e-09 -2.434131542561e-02 + 7.372800000000e-09 -1.906786305153e-01 + 7.382800000000e-09 -3.326783320432e-01 + 7.392800000000e-09 -4.265708523871e-01 + 7.402800000000e-09 -4.575085610948e-01 + 7.412800000000e-09 -4.232763841685e-01 + 7.422800000000e-09 -3.315758763597e-01 + 7.432800000000e-09 -1.966362048871e-01 + 7.442800000000e-09 -3.538765638313e-02 + 7.452800000000e-09 1.335257044583e-01 + 7.462800000000e-09 2.869926688408e-01 + 7.472800000000e-09 4.001370684553e-01 + 7.482800000000e-09 4.541107274656e-01 + 7.492800000000e-09 4.423548581964e-01 + 7.502800000000e-09 3.696241572554e-01 + 7.512800000000e-09 2.481670551637e-01 + 7.522800000000e-09 9.425155184401e-02 + 7.532800000000e-09 -7.435865300821e-02 + 7.542800000000e-09 -2.361681740350e-01 + 7.552800000000e-09 -3.662187473256e-01 + 7.562800000000e-09 -4.425303282172e-01 + 7.572800000000e-09 -4.539611054760e-01 + 7.582800000000e-09 -4.016519706394e-01 + 7.592800000000e-09 -2.955802256295e-01 + 7.602800000000e-09 -1.511378670319e-01 + 7.612800000000e-09 1.446613451159e-02 + 7.622800000000e-09 1.814164653912e-01 + 7.632800000000e-09 3.255040554074e-01 + 7.642800000000e-09 4.227039945777e-01 + 7.652800000000e-09 4.574783247255e-01 + 7.662800000000e-09 4.269111495236e-01 + 7.672800000000e-09 3.382104011380e-01 + 7.682800000000e-09 2.053325486453e-01 + 7.692800000000e-09 4.514887676998e-02 + 7.702800000000e-09 -1.238921003380e-01 + 7.712800000000e-09 -2.789339676933e-01 + 7.722800000000e-09 -3.950233798475e-01 + 7.732800000000e-09 -4.527336023696e-01 + 7.742800000000e-09 -4.447584484382e-01 + 7.752800000000e-09 -3.752869644627e-01 + 7.762800000000e-09 -2.562247182867e-01 + 7.772800000000e-09 -1.037350878127e-01 + 7.782800000000e-09 6.454054908677e-02 + 7.792800000000e-09 2.273933018400e-01 + 7.802800000000e-09 3.599396699227e-01 + 7.812800000000e-09 4.397886637993e-01 + 7.822800000000e-09 4.550522525048e-01 + 7.832800000000e-09 4.062360518396e-01 + 7.842800000000e-09 3.028967215974e-01 + 7.852800000000e-09 1.602244477917e-01 + 7.862800000000e-09 -4.633643315572e-03 + 7.872800000000e-09 -1.721163056546e-01 + 7.882800000000e-09 -3.182041574777e-01 + 7.892800000000e-09 -4.186477066591e-01 + 7.902800000000e-09 -4.572382129244e-01 + 7.912800000000e-09 -4.303495969231e-01 + 7.922800000000e-09 -3.446835043061e-01 + 7.932800000000e-09 -2.139129341642e-01 + 7.942800000000e-09 -5.484588096414e-02 + 7.952800000000e-09 1.142501240266e-01 + 7.962800000000e-09 2.707804532346e-01 + 7.972800000000e-09 3.897409935255e-01 + 7.982800000000e-09 4.511522853932e-01 + 7.992800000000e-09 4.469587751220e-01 + 8.002800000000e-09 3.807750841138e-01 + 8.012800000000e-09 2.641532527874e-01 + 8.022800000000e-09 1.131370626504e-01 + 8.032800000000e-09 -5.474047159237e-02 + 8.042800000000e-09 -2.185539038492e-01 + 8.052800000000e-09 -3.535145954607e-01 + 8.062800000000e-09 -4.368510012280e-01 + 8.072800000000e-09 -4.559381041599e-01 + 8.082800000000e-09 -4.106361172960e-01 + 8.092800000000e-09 -3.100693436521e-01 + 8.102800000000e-09 -1.692126554893e-01 + 8.112800000000e-09 -5.156479891790e-03 + 8.122800000000e-09 1.627809764937e-01 + 8.132800000000e-09 3.107837590049e-01 + 8.142800000000e-09 4.144076284002e-01 + 8.152800000000e-09 4.567936922044e-01 + 8.162800000000e-09 4.335967757070e-01 + 8.172800000000e-09 3.509993475504e-01 + 8.182800000000e-09 2.223807334068e-01 + 8.192800000000e-09 6.447991072666e-02 + 8.202800000000e-09 -1.046018020382e-01 + 8.212800000000e-09 -2.625369838934e-01 + 8.222800000000e-09 -3.842957342556e-01 + 8.232800000000e-09 -4.493721898847e-01 + 8.242800000000e-09 -4.489606968910e-01 + 8.252800000000e-09 -3.860925048904e-01 + 8.262800000000e-09 -2.719554353137e-01 + 8.272800000000e-09 -1.224587955729e-01 + 8.282800000000e-09 4.495986394447e-02 + 8.292800000000e-09 2.096539696275e-01 + 8.302800000000e-09 3.469486346114e-01 + 8.312800000000e-09 4.337219348301e-01 + 8.322800000000e-09 4.566227620903e-01 + 8.332800000000e-09 4.148556028750e-01 + 8.342800000000e-09 3.171005007185e-01 + 8.352800000000e-09 1.781041913683e-01 + 8.362800000000e-09 1.490381994536e-02 + 8.372800000000e-09 -1.534135281773e-01 + 8.382800000000e-09 -3.032477427536e-01 + 8.392800000000e-09 -4.099887242698e-01 + 8.402800000000e-09 -4.561491135714e-01 + 8.412800000000e-09 -4.366563781684e-01 + 8.422800000000e-09 -3.572856950757e-01 + 8.432800000000e-09 -2.310042182547e-01 + 8.442800000000e-09 -7.428956173148e-02 + 8.452800000000e-09 9.479648358896e-02 + 8.462800000000e-09 2.541615754495e-01 + 8.472800000000e-09 3.787619109501e-01 + 8.482800000000e-09 4.475692795345e-01 + 8.492800000000e-09 4.510130544794e-01 + 8.502800000000e-09 3.915226739696e-01 + 8.512800000000e-09 2.799114931833e-01 + 8.522800000000e-09 1.319447861779e-01 + 8.532800000000e-09 -3.501709342708e-02 + 8.542800000000e-09 -2.006002098238e-01 + 8.552800000000e-09 -3.402519042333e-01 + 8.562800000000e-09 -4.305126946542e-01 + 8.572800000000e-09 -4.572986424165e-01 + 8.582800000000e-09 -4.191378775483e-01 + 8.592800000000e-09 -3.242494680969e-01 + 8.602800000000e-09 -1.871429767940e-01 + 8.612800000000e-09 -2.480932822869e-02 + 8.622800000000e-09 1.438813030247e-01 + 8.632800000000e-09 2.955530303162e-01 + 8.642800000000e-09 4.054440486110e-01 + 8.652800000000e-09 4.553570560956e-01 + 8.662800000000e-09 4.395340917390e-01 + 8.672800000000e-09 3.633289461111e-01 + 8.682800000000e-09 2.393470027611e-01 + 8.692800000000e-09 8.395224342853e-02 + 8.702800000000e-09 -8.494329814688e-02 + 8.712800000000e-09 -2.455344323774e-01 + 8.722800000000e-09 -3.728063451540e-01 + 8.732800000000e-09 -4.452555056606e-01 + 8.742800000000e-09 -4.525511105202e-01 + 8.752800000000e-09 -3.965005760303e-01 + 8.762800000000e-09 -2.875296863623e-01 + 8.772800000000e-09 -1.412379258072e-01 + 8.782800000000e-09 2.509952542677e-02 + 8.792800000000e-09 1.913823932870e-01 + 8.802800000000e-09 3.332149893990e-01 + 8.812800000000e-09 4.268493083217e-01 + 8.822800000000e-09 4.574916815829e-01 + 8.832800000000e-09 4.229802250232e-01 + 8.842800000000e-09 3.310535160711e-01 + 8.852800000000e-09 1.959607448488e-01 + 8.862800000000e-09 3.463617063542e-02 + 8.872800000000e-09 -1.342608483658e-01 + 8.882800000000e-09 -2.876003622843e-01 + 8.892800000000e-09 -4.005138448171e-01 + 8.902800000000e-09 -4.541988967781e-01 + 8.912800000000e-09 -4.421538492749e-01 + 8.922800000000e-09 -3.691761939542e-01 + 8.932800000000e-09 -2.475398701918e-01 + 8.942800000000e-09 -9.351989674424e-02 + 8.952800000000e-09 7.511030877907e-02 + 8.962800000000e-09 2.368336364526e-01 + 8.972800000000e-09 3.666874445392e-01 + 8.982800000000e-09 4.427248625602e-01 + 8.992800000000e-09 4.538616628698e-01 + 9.002800000000e-09 4.012868663474e-01 + 9.012800000000e-09 2.950092829548e-01 + 9.022800000000e-09 1.504354779232e-01 + 9.032800000000e-09 -1.522083886979e-02 + 9.042800000000e-09 -1.821246867391e-01 + 9.052800000000e-09 -3.260534289613e-01 + 9.062800000000e-09 -4.230010361631e-01 + 9.072800000000e-09 -4.574819250309e-01 + 9.082800000000e-09 -4.266341467266e-01 + 9.092800000000e-09 -3.377037062220e-01 + 9.102800000000e-09 -2.046681095849e-01 + 9.112800000000e-09 -4.440303608496e-02 + 9.122800000000e-09 1.246287002690e-01 + 9.132800000000e-09 2.795511673692e-01 + 9.142800000000e-09 3.954163352746e-01 + 9.152800000000e-09 4.528411156012e-01 + 9.162800000000e-09 4.445766359386e-01 + 9.172800000000e-09 3.748554535543e-01 + 9.182800000000e-09 2.556095848476e-01 + 9.192800000000e-09 1.030107161471e-01 + 9.202800000000e-09 -6.529107139897e-02 + 9.212800000000e-09 -2.280652163207e-01 + 9.222800000000e-09 -3.604220526785e-01 + 9.232800000000e-09 -4.400012452690e-01 + 9.242800000000e-09 -4.549716602829e-01 + 9.252800000000e-09 -4.058878333485e-01 + 9.262800000000e-09 -3.023389079958e-01 + 9.272800000000e-09 -1.595308197971e-01 + 9.282800000000e-09 5.384929558007e-03 + 9.292800000000e-09 1.728281494761e-01 + 9.302800000000e-09 3.187646429455e-01 + 9.312800000000e-09 4.189613005522e-01 + 9.322800000000e-09 4.572601437115e-01 + 9.332800000000e-09 4.300897500582e-01 + 9.342800000000e-09 3.441908770190e-01 + 9.352800000000e-09 2.132584496946e-01 + 9.362800000000e-09 5.410533824395e-02 + 9.372800000000e-09 -1.149876929226e-01 + 9.382800000000e-09 -2.714059159798e-01 + 9.392800000000e-09 -3.901484181965e-01 + 9.402800000000e-09 -4.512772851245e-01 + 9.412800000000e-09 -4.467943747281e-01 + 9.422800000000e-09 -3.803585301931e-01 + 9.432800000000e-09 -2.635491229601e-01 + 9.442800000000e-09 -1.124194789253e-01 + 9.452800000000e-09 5.548965876861e-02 + 9.462800000000e-09 2.192313941248e-01 + 9.472800000000e-09 3.540093126089e-01 + 9.482800000000e-09 4.370800953943e-01 + 9.492800000000e-09 4.558748211187e-01 + 9.502800000000e-09 4.103034272265e-01 + 9.512800000000e-09 3.095236488893e-01 + 9.522800000000e-09 1.685271908823e-01 + 9.532800000000e-09 4.408579125989e-03 + 9.542800000000e-09 -1.634958630938e-01 + 9.552800000000e-09 -3.113542784744e-01 + 9.562800000000e-09 -4.147364551555e-01 + 9.572800000000e-09 -4.568325907999e-01 + 9.582800000000e-09 -4.333528339900e-01 + 9.592800000000e-09 -3.505197924672e-01 + 9.602800000000e-09 -2.217355346453e-01 + 9.612800000000e-09 -6.374445814550e-02 + 9.622800000000e-09 1.053399816166e-01 + 9.632800000000e-09 2.631698454271e-01 + 9.642800000000e-09 3.847164806463e-01 + 9.652800000000e-09 4.495134710944e-01 + 9.662800000000e-09 4.488125730529e-01 + 9.672800000000e-09 3.856899690950e-01 + 9.682800000000e-09 2.713616711647e-01 + 9.692800000000e-09 1.217477182770e-01 + 9.702800000000e-09 -4.570752293318e-02 + 9.712800000000e-09 -2.103363904966e-01 + 9.722800000000e-09 -3.474547498002e-01 + 9.732800000000e-09 -4.339665331075e-01 + 9.742800000000e-09 -4.565758115479e-01 + 9.752800000000e-09 -4.145375997852e-01 + 9.762800000000e-09 -3.165663180274e-01 + 9.772800000000e-09 -1.774265341271e-01 + 9.782800000000e-09 -1.415932932735e-02 + 9.792800000000e-09 1.541310073286e-01 + 9.802800000000e-09 3.038275101279e-01 + 9.812800000000e-09 4.103318667908e-01 + 9.822800000000e-09 4.562040760414e-01 + 9.832800000000e-09 4.364275353842e-01 + 9.842800000000e-09 3.568197691808e-01 + 9.852800000000e-09 2.303705483209e-01 + 9.862800000000e-09 7.356158594636e-02 + 9.872800000000e-09 -9.553331270725e-02 + 9.882800000000e-09 -2.548006108581e-01 + 9.892800000000e-09 -3.791957833635e-01 + 9.902800000000e-09 -4.477277173052e-01 + 9.912800000000e-09 -4.508829351266e-01 + 9.922800000000e-09 -3.911364277534e-01 + 9.932800000000e-09 -2.793306025269e-01 + 9.942800000000e-09 -1.312426668226e-01 + 9.952800000000e-09 3.576101654395e-02 + 9.962800000000e-09 2.012859275441e-01 + 9.972800000000e-09 3.407686816304e-01 + 9.982800000000e-09 4.307731403463e-01 + 9.992800000000e-09 4.572693054677e-01 + 1.000000000000e-08 4.354906013278e-01 diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/conditions.yaml new file mode 100644 index 00000000..5eec55cb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 25 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_25 +temperature: '80' +vdd: '1.2' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/.spiceinit b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/.spiceinit new file mode 100644 index 00000000..02b902fb --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/.spiceinit @@ -0,0 +1,30 @@ +* 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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/LC_Oscillator.sym b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/LC_Oscillator.sym new file mode 100644 index 00000000..e632b156 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/LC_Oscillator_tb.sch b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/LC_Oscillator_tb.sch new file mode 100644 index 00000000..c1df500e --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/LC_Oscillator_tb.sch @@ -0,0 +1,57 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +N 1570 -1060 1570 -1030 {lab=VDD} +N 1570 -970 1570 -940 {lab=GND} +N 1270 -1050 1270 -1030 {lab=GND} +N 1230 -1060 1230 -1030 {lab=VDD} +N 1140 -920 1160 -920 {lab=Voplus} +N 1140 -960 1160 -960 {lab=Vominus} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 160p +save all + +* Explicit vectors +let vo_p = v(Voplus) +let vo_m = v(Vominus) +let vo_diff = vo_p - vo_m + +set wr_singlescale +wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/LC_Oscillator_tb_26.data vo_diff +quit + +.endc +"} +C {vsource.sym} 1570 -1000 0 0 {name=V1 value=1.6 savecurrent=false} +C {gnd.sym} 1570 -940 0 0 {name=l2 lab=GND} +C {lab_pin.sym} 1570 -1060 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {opin.sym} 1140 -920 2 0 {name=p6 lab=Voplus} +C {gnd.sym} 1270 -1050 2 0 {name=l3 lab=GND} +C {opin.sym} 1140 -960 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 1250 -940 2 0 {name=x1} +C {devices/code_shown.sym} 450 -640 0 0 {name=SETUP only_toplevel=true +format="tcleval( @value )" +value=" +.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss + +.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice + +.temp 80 +" +} +C {iopin.sym} 1230 -1060 2 0 {name=p1 lab=VDD} diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/conditions.yaml b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/conditions.yaml new file mode 100644 index 00000000..dda699ee --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26/conditions.yaml @@ -0,0 +1,9 @@ +DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/xschem/simulations/schematic/LC_Oscillator.spice +N: 26 +PDK: ihp-sg13g2 +PDK_ROOT: /home/pedersen/IHP-Open-PDK +corner: ss +filename: LC_Oscillator_tb +simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/parameters/ac_params/run_26 +temperature: '80' +vdd: '1.6' diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/summary.md b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/summary.md new file mode 100644 index 00000000..314e0775 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/runs/RUN_2025-11-17_09-25-51/summary.md @@ -0,0 +1,11 @@ + +# CACE Summary for LC_Oscillator + +**netlist source**: schematic + +| Parameter | Tool | Result | Min Limit | Min Value | Typ Target | Typ Value | Max Limit | Max Value | Status | +| :------------------- | :------------------- | :-------------- | ---------: | -----------: | ---------: | -----------: | ---------: | -----------: | :------: | +| Frequency | ngspice | frequency | 4.3 GHz | ​ | 5.0 GHz | ​ | 5.2 GHz | ​ | Error ❗ | +| Amplitude | ngspice | amplitude | 0.2 V | ​ | 0.4 V | ​ | 0.6 V | ​ | Error ❗ | +| Voltage swing | ngspice | voltage_swing | 0.4 V | ​ | 0.8 V | ​ | 1.2 V | ​ | Error ❗ | + 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 new file mode 100644 index 00000000..8a9049fd --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/testbench/LC_Oscillator_tb.sch @@ -0,0 +1,132 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +E {} +B 2 1120 -1110 1920 -710 {flags=graph +y1=1.1 +y2=1.3 +ypos1=0 +ypos2=2 +divy=5 +subdivy=1 +unity=1 +x1=1.628e-10 +x2=1e-09 +divx=5 +subdivx=1 +xlabmag=1.0 +ylabmag=1.0 +dataset=-1 +unitx=1 +logx=0 +logy=0 +color="4 7" +node="vo_m +vo_p"} +B 2 1930 -1120 2730 -720 {flags=graph +y1=-0.41 +y2=0.41 +ypos1=0 +ypos2=2 +divy=5 +subdivy=1 +unity=1 +x1=1.628e-10 +x2=1e-09 +divx=5 +subdivx=1 +xlabmag=1.0 +ylabmag=1.0 +dataset=-1 +unitx=1 +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} +C {code_shown.sym} 440 -1140 0 0 {name=transient_tb only_toplevel=false +value=" +.include LC_Oscillator_tb.save +.param temp=27 +.ic V(Voplus)=1.2 +.control +set noaskquit +set numdgt=12 + +* Save & simulate +save all +op +write LC_Oscillator_tb.raw +set appendwrite +tran 10p 10n 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 LC_Oscillator_tb.raw +.endc +"} +C {devices/code_shown.sym} 810 -1130 0 0 {name=MODEL only_toplevel=true +format="tcleval( @value )" +value=".lib cornerMOSlv.lib mos_tt +" +} +C {devices/launcher.sym} 1190 -250 0 0 {name=h1 +descr="OP annotate" +tclcommand="xschem annotate_op" +} +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 {launcher.sym} 1190 -210 0 0 {name=h2 +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 {opin.sym} 610 -430 0 1 {name=p9 lab=Vominus} +C {LC_Oscillator.sym} 720 -410 2 0 {name=x1} 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 new file mode 100644 index 00000000..85bf3b74 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/testbench/simulations/LC_Oscillator_tb.save @@ -0,0 +1,22 @@ +* 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] diff --git a/modules/module_4_type_2_PLL/LC_Oscillator/testbench/xschemrc b/modules/module_4_type_2_PLL/LC_Oscillator/testbench/xschemrc new file mode 100644 index 00000000..34b6db6d --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/testbench/xschemrc @@ -0,0 +1,18 @@ +# 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/LC_Oscillator/xschem/LC_Oscillator.sch b/modules/module_4_type_2_PLL/LC_Oscillator/xschem/LC_Oscillator.sch new file mode 100644 index 00000000..5e278143 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/xschem/LC_Oscillator.sch @@ -0,0 +1,105 @@ +v {xschem version=3.4.8RC file_version=1.3} +G {} +K {} +V {} +S {} +F {} +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 530 -600 530 -560 {lab=Vominus} +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 170 -590 310 -590 {lab=Voplus} +N 310 -630 310 -590 {lab=Voplus} +N 530 -600 670 -600 {lab=Vominus} +N 530 -630 530 -600 {lab=Vominus} +N 170 -590 170 -580 {lab=Voplus} +N 170 -520 170 -490 {lab=gnd} +N 670 -600 670 -590 {lab=Vominus} +N 670 -530 670 -500 {lab=gnd} +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 +spiceprefix=X +} +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 +spiceprefix=X +} +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 +m=1 +value=1.56n +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 +m=1 +value=1.56n +footprint=1206 +device=inductor} +C {capa.sym} 170 -550 0 0 {name=C1 +m=1 +value=400f +footprint=1206 +device="ceramic capacitor"} +C {lab_pin.sym} 170 -490 0 0 {name=p2 sig_type=std_logic lab=gnd +} +C {capa.sym} 670 -560 0 1 {name=C2 +m=1 +value=400f +footprint=1206 +device="ceramic capacitor"} +C {lab_pin.sym} 670 -500 0 1 {name=p4 sig_type=std_logic lab=gnd +} +C {lab_pin.sym} 670 -600 2 0 {name=p6 sig_type=std_logic lab=Vominus +} +C {lab_pin.sym} 170 -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} 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 new file mode 100644 index 00000000..b9399769 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/xschem/LC_Oscillator.sym @@ -0,0 +1,27 @@ +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/LC_Oscillator/xschem/xschemrc b/modules/module_4_type_2_PLL/LC_Oscillator/xschem/xschemrc new file mode 100644 index 00000000..14a1e9f2 --- /dev/null +++ b/modules/module_4_type_2_PLL/LC_Oscillator/xschem/xschemrc @@ -0,0 +1,12 @@ +# Source the base configuration from a known location +source $::env(PDK_ROOT)/$::env(PDK)/libs.tech/xschem/xschemrc + +# Add current directory to xschem library path +append XSCHEM_LIBRARY_PATH :[file dirname [info script]] + +# Source the dependencies xschemrc files +foreach rcfile [glob -nocomplain ../ip/*/xschem/xschemrc] { + puts "sourcing $rcfile" + source $rcfile +} +