diff --git a/sdc-plugin/buffers.h b/sdc-plugin/buffers.h
index 2797f52..d89f792 100644
--- a/sdc-plugin/buffers.h
+++ b/sdc-plugin/buffers.h
@@ -44,8 +44,25 @@
 struct Pll {
     Pll(RTLIL::Cell* cell, float input_clock_period, float input_clock_shift);
 
-    // Approximate equality check of the input clock period and specified in CLKIN[1/2]_PERIOD parameter
-    // kApproxEqualFactor specifies the percentage of the maximum accepted difference
+    // Helper function to fetch a cell parameter or return a default value
+    static float FetchParam(RTLIL::Cell* cell, std::string&& param_name,
+                            float default_value);
+
+    // Get the period of the input clock
+    // TODO Add support for CLKINSEL
+    float ClkinPeriod() { return clkin1_period; }
+
+    static const std::vector<std::string> inputs;
+    static const std::vector<std::string> outputs;
+    std::unordered_map<std::string, float> clkout_period;
+    std::unordered_map<std::string, float> clkout_duty_cycle;
+    std::unordered_map<std::string, float> clkout_rising_edge;
+    std::unordered_map<std::string, float> clkout_falling_edge;
+
+   private:
+    // Approximate equality check of the input clock period and specified in
+    // CLKIN[1/2]_PERIOD parameter kApproxEqualFactor specifies the percentage
+    // of the maximum accepted difference
     void CheckInputClockPeriod(RTLIL::Cell* cell, float input_clock_period);
 
     // Fetch cell's parameters needed for further calculations
@@ -57,23 +74,10 @@
     // Calculate the rising and falling edges of the output clocks
     void CalculateOutputClockWaveforms(float input_clock_shift);
 
-    // Helper function to fetch a cell parameter or return a default value
-    static float FetchParam(RTLIL::Cell* cell, std::string&& param_name, float default_value);
-
-    // Get the period of the input clock
-    // TODO Add support for CLKINSEL
-    float ClkinPeriod() { return clkin1_period; }
-
     static const float delay;
     static const std::string name;
-    static const std::vector<std::string> inputs;
-    static const std::vector<std::string> outputs;
-    std::unordered_map<std::string, float> clkout_period;
-    std::unordered_map<std::string, float> clkout_duty_cycle;
     std::unordered_map<std::string, float> clkout_divisor;
     std::unordered_map<std::string, float> clkout_phase;
-    std::unordered_map<std::string, float> clkout_rising_edge;
-    std::unordered_map<std::string, float> clkout_falling_edge;
     float clkin1_period;
     float clkin2_period;
     float divclk_divisor;
