diff --git a/scripts/example.yaml b/scripts/example.yaml
new file mode 100644
index 0000000..1bb8e5d
--- /dev/null
+++ b/scripts/example.yaml
@@ -0,0 +1,119 @@
+# A YAML similar to this example would have to be generated, for eg with MRW
+# inputs and system configuration, to depict IPMI Fru information.
+#
+# This file maps IPMI properties to phosphor dbus inventory properties
+#
+# This YAML could help generate C++ code.
+# Format of the YAML:
+# Fruid:
+#   Associated Fru paths
+#     d-bus Interfaces
+#       d-bus Properties
+#         IPMI Fru mapping
+0:
+  /system:
+    xyz.openbmc_project.Inventory.Item:
+      PrettyName:
+        IPMIFruProperty: Product Name
+        IPMIFruSection: Product
+    xyz.openbmc_project.Inventory.Decorator.Asset:
+      Manufacturer:
+        IPMIFruProperty: Manufacturer
+        IPMIFruSection: Product
+      PartNumber:
+        IPMIFruProperty: Part Number
+        IPMIFruSection: Product
+      SerialNumber:
+        IPMIFruProperty: Serial Number
+        IPMIFruSection: Product
+      BuildDate:
+        IPMIFruProperty: Mfg Date
+        IPMIFruSection: Product
+    xyz.openbmc_project.Inventory.Revision:
+      Version:
+        IPMIFruProperty: Version
+        IPMIFruSection: Product
+1:
+  /system/chassis/motherboard/dimm0:
+    xyz.openbmc_project.Inventory.Item:
+      PrettyName:
+        IPMIFruProperty: Product Name
+        IPMIFruSection: Product
+    xyz.openbmc_project.Inventory.Decorator.Asset:
+      Manufacturer:
+        IPMIFruProperty: Manufacturer
+        IPMIFruSection: Product
+      BuildDate:
+        IPMIFruProperty: Mfg Date
+        IPMIFruSection: Product
+      SerialNumber:
+        IPMIFruProperty: Serial Number
+        IPMIFruSection: Product
+      PartNumber:
+        IPMIFruProperty: Part Number
+        IPMIFruSection: Product
+    xyz.openbmc_project.Inventory.Revision:
+      Version:
+        IPMIFruProperty: Version
+        IPMIFruSection: Product
+2:
+  /system/chassis/motherboard/dimm1:
+    xyz.openbmc_project.Inventory.Item:
+      PrettyName:
+        IPMIFruProperty: Product Name
+        IPMIFruSection: Product
+    xyz.openbmc_project.Inventory.Decorator.Asset:
+      Manufacturer:
+        IPMIFruProperty: Manufacturer
+        IPMIFruSection: Product
+      BuildDate:
+        IPMIFruProperty: Mfg Date
+        IPMIFruSection: Product
+      SerialNumber:
+        IPMIFruProperty: Serial Number
+        IPMIFruSection: Product
+      PartNumber:
+        IPMIFruProperty: Part Number
+        IPMIFruSection: Product
+    xyz.openbmc_project.Inventory.Revision:
+      Version:
+        IPMIFruProperty: Version
+        IPMIFruSection: Product
+3:
+  /system/chassis/motherboard/cpu0:
+    xyz.openbmc_project.Inventory.Item:
+      PrettyName:
+        IPMIFruProperty: Product Name
+        IPMIFruSection: Board
+    xyz.openbmc_project.Inventory.Decorator.Asset:
+      BuildDate:
+        IPMIFruProperty: Mfg Date
+        IPMIFruSection: Board
+      SerialNumber:
+        IPMIFruProperty: Serial Number
+        IPMIFruSection: Board
+      PartNumber:
+        IPMIFruProperty: Part Number
+        IPMIFruSection: Board
+      Manufacturer:
+        IPMIFruProperty: Manufacturer
+        IPMIFruSection: Board
+4:
+  /system/chassis/motherboard/cpu1:
+    xyz.openbmc_project.Inventory.Item:
+      PrettyName:
+        IPMIFruProperty: Product Name
+        IPMIFruSection: Board
+    xyz.openbmc_project.Inventory.Decorator.Asset:
+      BuildDate:
+        IPMIFruProperty: Mfg Date
+        IPMIFruSection: Board
+      SerialNumber:
+        IPMIFruProperty: Serial Number
+        IPMIFruSection: Board
+      PartNumber:
+        IPMIFruProperty: Part Number
+        IPMIFruSection: Board
+      Manufacturer:
+        IPMIFruProperty: Manufacturer
+        IPMIFruSection: Board
diff --git a/scripts/fru_gen.py b/scripts/fru_gen.py
new file mode 100755
index 0000000..f6111b7
--- /dev/null
+++ b/scripts/fru_gen.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+
+import os
+import sys
+import yaml
+import argparse
+from mako.template import Template
+
+
+def generate_cpp(inventory_yaml, output_dir):
+    with open(os.path.join(script_dir, inventory_yaml), 'r') as f:
+        ifile = yaml.safe_load(f)
+        if not isinstance(ifile, dict):
+            ifile = {}
+
+        # Render the mako template
+
+        t = Template(filename=os.path.join(
+                     script_dir,
+                     "readfru.mako.cpp"))
+
+        output_hpp = os.path.join(output_dir, "fru-read-gen.cpp")
+        with open(output_hpp, 'w') as fd:
+            fd.write(t.render(fruDict=ifile))
+
+
+def main():
+
+    valid_commands = {
+        'generate-cpp': generate_cpp
+    }
+    parser = argparse.ArgumentParser(
+        description="IPMI FRU map code generator")
+
+    parser.add_argument(
+        '-i', '--inventory_yaml', dest='inventory_yaml',
+        default='example.yaml', help='input inventory yaml file to parse')
+
+    parser.add_argument(
+        "-o", "--output-dir", dest="outputdir",
+        default=".",
+        help="output directory")
+
+    parser.add_argument(
+        'command', metavar='COMMAND', type=str,
+        choices=valid_commands.keys(),
+        help='Command to run.')
+
+    args = parser.parse_args()
+
+    if (not (os.path.isfile(os.path.join(script_dir, args.inventory_yaml)))):
+        sys.exit("Can not find input yaml file " + args.inventory_yaml)
+
+    function = valid_commands[args.command]
+    function(args.inventory_yaml, args.outputdir)
+
+if __name__ == '__main__':
+    script_dir = os.path.dirname(os.path.realpath(__file__))
+    main()
diff --git a/scripts/readfru.mako.cpp b/scripts/readfru.mako.cpp
new file mode 100644
index 0000000..40e4812
--- /dev/null
+++ b/scripts/readfru.mako.cpp
@@ -0,0 +1,35 @@
+// !!! WARNING: This is a GENERATED Code..Please do NOT Edit !!!
+#include <iostream>
+#include "fruread.hpp"
+
+extern const FruMap frus = {
+% for key in fruDict.keys():
+   {${key},{
+<%
+    fru = fruDict[key]
+%>
+    % for object,interfaces in fru.items():
+         {"${object}",{
+         % for interface,properties in interfaces.items():
+             {"${interface}",{
+            % for dbus_property,property_value in properties.items():
+                 {"${dbus_property}",{
+                     "${property_value.get("IPMIFruSection", "")}",
+                     "${property_value.get("IPMIFruProperty", "")}",\
+<%
+    delimiter = property_value.get("IPMIFruValueDelimiter")
+    if not delimiter:
+        delimiter = ""
+    else:
+        delimiter = '\\' + hex(delimiter)[1:]
+%>
+                     "${delimiter}"
+                 }},
+            % endfor
+             }},
+         % endfor
+        }},
+    % endfor
+   }},
+% endfor
+};
