diff --git a/cpld/lattice/lattice.cpp b/cpld/lattice/lattice.cpp
index fea4b36..b3802f4 100644
--- a/cpld/lattice/lattice.cpp
+++ b/cpld/lattice/lattice.cpp
@@ -13,11 +13,11 @@
 constexpr uint8_t busyFlagBit = 0x80;
 constexpr std::chrono::milliseconds waitBusyTime(200);
 
-static constexpr std::string_view tagQF = "QF";
-static constexpr std::string_view tagUH = "UH";
+static constexpr std::string_view tagFuseQuantity = "QF";
+static constexpr std::string_view tagUserCodeHex = "UH";
 static constexpr std::string_view tagCFStart = "L000";
 static constexpr std::string_view tagData = "NOTE TAG DATA";
-static constexpr std::string_view tagUFM = "NOTE USER MEMORY DATA";
+static constexpr std::string_view tagUserFlashMemory = "NOTE USER MEMORY DATA";
 static constexpr std::string_view tagChecksum = "C";
 static constexpr std::string_view tagUserCode = "NOTE User Electronic";
 static constexpr std::string_view tagEbrInitData = "NOTE EBR_INIT DATA";
@@ -114,14 +114,16 @@
             continue;
         }
 
-        if (line.starts_with(tagQF))
+        if (line.starts_with(tagFuseQuantity))
         {
             ssize_t numberSize = static_cast<ssize_t>(line.find('*')) -
                                  static_cast<ssize_t>(line.find('F')) - 1;
             if (numberSize > 0)
             {
-                fwInfo.QF = std::stoul(line.substr(tagQF.length(), numberSize));
-                lg2::debug("QF Size = {QFSIZE}", "QFSIZE", fwInfo.QF);
+                fwInfo.fuseQuantity = std::stoul(
+                    line.substr(tagFuseQuantity.length(), numberSize));
+                lg2::debug("fuseQuantity Size = {QFSIZE}", "QFSIZE",
+                           fwInfo.fuseQuantity);
             }
         }
         else if (line.starts_with(tagCFStart) ||
@@ -135,7 +137,8 @@
             state = ParseState::endCfg;
             continue;
         }
-        else if (line.starts_with(tagUFM) || line.starts_with(tagData))
+        else if (line.starts_with(tagUserFlashMemory) ||
+                 line.starts_with(tagData))
         {
             state = ParseState::ufm;
             continue;
@@ -190,7 +193,7 @@
                 }
                 break;
             case ParseState::userCode:
-                if (line.starts_with(tagUH))
+                if (line.starts_with(tagUserCodeHex))
                 {
                     state = ParseState::none;
                     ssize_t numberSize =
@@ -202,7 +205,7 @@
                         return -1;
                     }
                     std::istringstream iss(
-                        line.substr(tagUH.length(), numberSize));
+                        line.substr(tagUserCodeHex.length(), numberSize));
                     iss >> std::hex >> fwInfo.version;
                     lg2::debug("UserCode = 0x{USERCODE}", "USERCODE",
                                fwInfo.version);
@@ -216,7 +219,8 @@
     lg2::debug("CFG Size = {CFGSIZE}", "CFGSIZE", fwInfo.cfgData.size());
     if (!fwInfo.ufmData.empty())
     {
-        lg2::debug("UFM size = {UFMSIZE}", "UFMSIZE", fwInfo.ufmData.size());
+        lg2::debug("userFlashMemory size = {UFMSIZE}", "UFMSIZE",
+                   fwInfo.ufmData.size());
     }
 
     return true;
diff --git a/cpld/lattice/lattice.hpp b/cpld/lattice/lattice.hpp
index 2c11952..0a81917 100644
--- a/cpld/lattice/lattice.hpp
+++ b/cpld/lattice/lattice.hpp
@@ -24,8 +24,8 @@
 
 struct cpldI2cInfo
 {
-    unsigned long int QF;
-    unsigned int* UFM;
+    unsigned long int fuseQuantity;
+    unsigned int* userFlashMemory;
     unsigned int version;
     unsigned int checksum;
     std::vector<uint8_t> cfgData;
