diff --git a/xml/meson.build b/xml/meson.build
index 5e603d7..4bc265e 100644
--- a/xml/meson.build
+++ b/xml/meson.build
@@ -2,7 +2,7 @@
 # Chip Data Files
 #-------------------------------------------------------------------------------
 
-build_cdb = find_program('build_chip_data_binary')
+build_cdb = find_program('parse_chip_data_xml')
 
 # The key for each entry in this dictionary is a subdirectory containing XML for
 # a chip model. The value for each entry contains the expected output files that
@@ -14,14 +14,14 @@
 cdb_files = {
     'p10' :
     [
-        'chip_data_p10_10.cdb', 'chip_parser_p10_10.json',
-        'chip_data_p10_20.cdb', 'chip_parser_p10_20.json',
+        'chip_data_p10_10.cdb',
+        'chip_data_p10_20.cdb',
     ],
 
     'explorer' :
     [
-        'chip_data_explorer_11.cdb', 'chip_parser_explorer_11.json',
-        'chip_data_explorer_20.cdb', 'chip_parser_explorer_20.json',
+        'chip_data_explorer_11.cdb',
+        'chip_data_explorer_20.cdb',
     ],
 }
 
@@ -37,7 +37,9 @@
 
     custom_target('build_cdb_' + chip_dir, build_by_default : true,
                   input : in_files, output : out_files,
-                  command : [ build_cdb, '-i', source_dir, '-o', build_dir ],
+                  command : [ build_cdb, '--cdb',
+                              '-i', source_dir,
+                              '-o', build_dir ],
                   install : true,
                   install_dir : join_paths(get_option('prefix'),
                                            get_option('datadir'),
diff --git a/xml/build_chip_data_binary b/xml/parse_chip_data_xml
similarity index 94%
rename from xml/build_chip_data_binary
rename to xml/parse_chip_data_xml
index 9667a95..77ed61e 100755
--- a/xml/build_chip_data_binary
+++ b/xml/parse_chip_data_xml
@@ -67,12 +67,19 @@
 Usage: $RealScript -h
        $RealScript -i <input_dir> -o <output_dir>
 
-Builds Chip Data Binary files from the input Chip Data XML.
+Generates specified data files from the input Chip Data XML.
 
-Options:
+General options:
+
  -h, --help     Prints this menu.
  -i, --input    Directory containing the Chip Data XML files.
- -o, --output   Directory that will contain the Chip Data Binary files.
+ -o, --output   Directory that will contain the data files.
+
+Data file options (must specify at least one):
+
+ --cdb          Generates Chip Data Binary files.
+ --json         Generates PEL Parser Data JSON files.
+
 EOF
 
     exit;
@@ -85,10 +92,14 @@
 help() unless @ARGV; # print help if no arguments
 
 # Get options
-my ( $help, $src_dir, $dest_dir );
-help() unless GetOptions( 'h|help'     => \$help,
-                          'i|input=s'  => \$src_dir,
-                          'o|output=s' => \$dest_dir );
+my ( $help, $src_dir, $dest_dir, $gen_cdb, $gen_json );
+help() unless GetOptions(
+    'h|help'     => \$help,
+    'i|input=s'  => \$src_dir,
+    'o|output=s' => \$dest_dir,
+    'cdb'        => \$gen_cdb,
+    'json'       => \$gen_json,
+);
 
 help() if @ARGV; # print usage if there are extra arguments
 
@@ -108,13 +119,19 @@
     die "ERROR> $message: $file\n";
 }
 
+# --cdb, --json
+unless ( $gen_cdb or $gen_json )
+{
+    die "ERROR> Must specify at least one data file option.";
+}
+
 #-------------------------------------------------------------------------------
 # Prototypes
 #-------------------------------------------------------------------------------
 
 sub importXML($);
 sub normalizeXML($);
-sub buildBinary($$);
+sub buildDataFiles($$);
 
 #-------------------------------------------------------------------------------
 # Main
@@ -128,7 +145,7 @@
 my $normalized_data = normalizeXML( $chip_data_xml );
 
 # The XML should now be in a format to start building the binary files.
-buildBinary( $dest_dir, $normalized_data );
+buildDataFiles( $dest_dir, $normalized_data );
 
 #-------------------------------------------------------------------------------
 # Helper functions
@@ -1167,7 +1184,7 @@
 
     my $data =
     {
-        'model_ec'  => $model_ec,
+        'model_ec'  => sprintf('%08x', $SUPPORTED_MODEL_EC->{$model_ec}),
         'node_name' => $nodes,
         'reg_name'  => $regs,
         'signature' => $sigs,
@@ -1178,7 +1195,7 @@
 
 #-------------------------------------------------------------------------------
 
-sub buildBinary($$)
+sub buildDataFiles($$)
 {
     my ( $dir, $data ) = @_;
 
@@ -1203,31 +1220,36 @@
 
         # Chip Data Binary files ###############################################
 
-        my $bin_file = "$dir/chip_data_" . lc $model_ec . ".cdb";
-        open my $bin_fh, '>', $bin_file or die "Cannot open $bin_file: $!";
-        binmode $bin_fh; # writes a binary file
+        if ( $gen_cdb )
+        {
+            my $bin_file = "$dir/chip_data_" . lc $model_ec . ".cdb";
+            open my $bin_fh, '>', $bin_file or die "Cannot open $bin_file: $!";
+            binmode $bin_fh; # writes a binary file
 
-        # Chip Data File metadata
-        __bin($bin_fh, 1, $_) for ( unpack("C*", "CHIPDATA") );
-        __bin($bin_fh, 4, $SUPPORTED_MODEL_EC->{$model_ec});
-        __bin($bin_fh, 1, $FILE_VERSION->{VER_01}         );
+            # Chip Data File metadata
+            __bin($bin_fh, 1, $_) for ( unpack("C*", "CHIPDATA") );
+            __bin($bin_fh, 4, $SUPPORTED_MODEL_EC->{$model_ec});
+            __bin($bin_fh, 1, $FILE_VERSION->{VER_01}         );
 
-        __printRegisters( $bin_fh, $chip->{register}  );
-        __printNodes(     $bin_fh, $chip->{node}      );
-        __printAttnTree(  $bin_fh, $chip->{attn_tree} );
+            __printRegisters( $bin_fh, $chip->{register}  );
+            __printNodes(     $bin_fh, $chip->{node}      );
+            __printAttnTree(  $bin_fh, $chip->{attn_tree} );
 
-        close $bin_fh;
+            close $bin_fh;
+        }
 
         # eBMC PEL parsing JSON ################################################
 
-        my $parser_file = "$dir/chip_parser_" . lc $model_ec . ".json";
-        open my $parser_fh, '>', $parser_file
-            or die "Cannot open $parser_file: $!";
+        if ( $gen_json )
+        {
+            my $file = "$dir/pel_parser_data_" . lc $model_ec . ".json";
+            open my $fh, '>', $file or die "Cannot open $file: $!";
 
-        __printParserData( $parser_fh, $model_ec, $chip->{signature},
-                           $chip->{register} );
+            __printParserData( $fh, $model_ec, $chip->{signature},
+                               $chip->{register} );
 
-        close $parser_fh;
+            close $fh;
+        }
     }
 }
 
