sorting issue in chip data parser script

In parse_chip_data_xml there is a list that was parsed lexically instead
of numerically causing an issue in error isolation to MC_OMI_DL_FIR[0].

Change-Id: Ie8210b7e3f52660477b7611b19d7137d0d488dbd
Signed-off-by: Zane Shelley <zshelle@us.ibm.com>
diff --git a/test/simulator/testcases/omi_dl_fatal.cpp b/test/simulator/testcases/omi_dl_fatal.cpp
index 546c3b2..1284462 100644
--- a/test/simulator/testcases/omi_dl_fatal.cpp
+++ b/test/simulator/testcases/omi_dl_fatal.cpp
@@ -9,15 +9,200 @@
 
 REG_SCOM(proc0, 0x570F001B, 0x0008000000000000) // GLOBAL_RE_FIR[12]
 REG_SCOM(proc0, 0x0C040001, 0x0004000000000000) // MC_CHIPLET_RE_FIR[13]
+REG_SCOM(proc0, 0x0C011400, 0x8000000000000000) // MC_OMI_DL_FIR(0)[0]
+REG_SCOM(proc0, 0x0C011407, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(0)
+REG_SCOM(proc0, 0x0C011413, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(0)[63]
+
+EXP_SIG(proc0, 0x8d4a, 0, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0008000000000000) // GLOBAL_RE_FIR[12]
+REG_SCOM(proc0, 0x0C040001, 0x0004000000000000) // MC_CHIPLET_RE_FIR[13]
 REG_SCOM(proc0, 0x0C011400, 0x0000080000000000) // MC_OMI_DL_FIR(0)[20]
-REG_SCOM(proc0, 0x0C011407, 0x0000080000000000) // MC_OMI_DL_FIR_ACT1(0)
+REG_SCOM(proc0, 0x0C011407, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(0)
 REG_SCOM(proc0, 0x0C011423, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(1)[63]
 
+EXP_SIG(proc0, 0x8d4a, 1, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0008000000000000) // GLOBAL_RE_FIR[12]
+REG_SCOM(proc0, 0x0C040001, 0x0002000000000000) // MC_CHIPLET_RE_FIR[14]
+REG_SCOM(proc0, 0x0C011800, 0x8000000000000000) // MC_OMI_DL_FIR(1)[0]
+REG_SCOM(proc0, 0x0C011807, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(1)
+REG_SCOM(proc0, 0x0C011813, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(2)[63]
+
+EXP_SIG(proc0, 0x8d4a, 2, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0008000000000000) // GLOBAL_RE_FIR[12]
+REG_SCOM(proc0, 0x0C040001, 0x0002000000000000) // MC_CHIPLET_RE_FIR[14]
+REG_SCOM(proc0, 0x0C011800, 0x0000080000000000) // MC_OMI_DL_FIR(1)[20]
+REG_SCOM(proc0, 0x0C011807, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(1)
+REG_SCOM(proc0, 0x0C011823, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(3)[63]
+
+EXP_SIG(proc0, 0x8d4a, 3, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0004000000000000) // GLOBAL_RE_FIR[13]
+REG_SCOM(proc0, 0x0D040001, 0x0004000000000000) // MC_CHIPLET_RE_FIR[13]
+REG_SCOM(proc0, 0x0D011400, 0x8000000000000000) // MC_OMI_DL_FIR(2)[0]
+REG_SCOM(proc0, 0x0D011407, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(2)
+REG_SCOM(proc0, 0x0D011413, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(4)[63]
+
+EXP_SIG(proc0, 0x8d4a, 4, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0004000000000000) // GLOBAL_RE_FIR[13]
+REG_SCOM(proc0, 0x0D040001, 0x0004000000000000) // MC_CHIPLET_RE_FIR[13]
+REG_SCOM(proc0, 0x0D011400, 0x0000080000000000) // MC_OMI_DL_FIR(2)[20]
+REG_SCOM(proc0, 0x0D011407, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(2)
+REG_SCOM(proc0, 0x0D011423, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(5)[63]
+
+EXP_SIG(proc0, 0x8d4a, 5, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0004000000000000) // GLOBAL_RE_FIR[13]
+REG_SCOM(proc0, 0x0D040001, 0x0002000000000000) // MC_CHIPLET_RE_FIR[14]
+REG_SCOM(proc0, 0x0D011800, 0x8000000000000000) // MC_OMI_DL_FIR(3)[0]
+REG_SCOM(proc0, 0x0D011807, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(3)
+REG_SCOM(proc0, 0x0D011813, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(6)[63]
+
+EXP_SIG(proc0, 0x8d4a, 6, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0004000000000000) // GLOBAL_RE_FIR[13]
+REG_SCOM(proc0, 0x0D040001, 0x0002000000000000) // MC_CHIPLET_RE_FIR[14]
+REG_SCOM(proc0, 0x0D011800, 0x0000080000000000) // MC_OMI_DL_FIR(3)[20]
+REG_SCOM(proc0, 0x0D011807, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(3)
+REG_SCOM(proc0, 0x0D011823, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(7)[63]
+
+EXP_SIG(proc0, 0x8d4a, 7, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0002000000000000) // GLOBAL_RE_FIR[14]
+REG_SCOM(proc0, 0x0E040001, 0x0004000000000000) // MC_CHIPLET_RE_FIR[13]
+REG_SCOM(proc0, 0x0E011400, 0x8000000000000000) // MC_OMI_DL_FIR(4)[0]
+REG_SCOM(proc0, 0x0E011407, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(4)
+REG_SCOM(proc0, 0x0E011413, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(8)[63]
+
+EXP_SIG(proc0, 0x8d4a, 8, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0002000000000000) // GLOBAL_RE_FIR[14]
+REG_SCOM(proc0, 0x0E040001, 0x0004000000000000) // MC_CHIPLET_RE_FIR[13]
+REG_SCOM(proc0, 0x0E011400, 0x0000080000000000) // MC_OMI_DL_FIR(4)[20]
+REG_SCOM(proc0, 0x0E011407, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(4)
+REG_SCOM(proc0, 0x0E011423, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(9)[63]
+
+EXP_SIG(proc0, 0x8d4a, 9, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0002000000000000) // GLOBAL_RE_FIR[14]
+REG_SCOM(proc0, 0x0E040001, 0x0002000000000000) // MC_CHIPLET_RE_FIR[14]
+REG_SCOM(proc0, 0x0E011800, 0x8000000000000000) // MC_OMI_DL_FIR(5)[0]
+REG_SCOM(proc0, 0x0E011807, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(5)
+REG_SCOM(proc0, 0x0E011813, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(10)[63]
+
+EXP_SIG(proc0, 0x8d4a, 10, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0002000000000000) // GLOBAL_RE_FIR[14]
+REG_SCOM(proc0, 0x0E040001, 0x0002000000000000) // MC_CHIPLET_RE_FIR[14]
+REG_SCOM(proc0, 0x0E011800, 0x0000080000000000) // MC_OMI_DL_FIR(5)[20]
+REG_SCOM(proc0, 0x0E011807, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(5)
+REG_SCOM(proc0, 0x0E011823, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(11)[63]
+
+EXP_SIG(proc0, 0x8d4a, 11, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0001000000000000) // GLOBAL_RE_FIR[15]
+REG_SCOM(proc0, 0x0F040001, 0x0004000000000000) // MC_CHIPLET_RE_FIR[13]
+REG_SCOM(proc0, 0x0F011400, 0x8000000000000000) // MC_OMI_DL_FIR(6)[0]
+REG_SCOM(proc0, 0x0F011407, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(6)
+REG_SCOM(proc0, 0x0F011413, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(12)[63]
+
+EXP_SIG(proc0, 0x8d4a, 12, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0001000000000000) // GLOBAL_RE_FIR[15]
+REG_SCOM(proc0, 0x0F040001, 0x0004000000000000) // MC_CHIPLET_RE_FIR[13]
+REG_SCOM(proc0, 0x0F011400, 0x0000080000000000) // MC_OMI_DL_FIR(6)[20]
+REG_SCOM(proc0, 0x0F011407, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(6)
+REG_SCOM(proc0, 0x0F011423, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(13)[63]
+
+EXP_SIG(proc0, 0x8d4a, 13, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0001000000000000) // GLOBAL_RE_FIR[15]
+REG_SCOM(proc0, 0x0F040001, 0x0002000000000000) // MC_CHIPLET_RE_FIR[14]
+REG_SCOM(proc0, 0x0F011800, 0x8000000000000000) // MC_OMI_DL_FIR(7)[0]
+REG_SCOM(proc0, 0x0F011807, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(7)
+REG_SCOM(proc0, 0x0F011813, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(14)[63]
+
+EXP_SIG(proc0, 0x8d4a, 14, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
+REG_SCOM(proc0, 0x570F001B, 0x0001000000000000) // GLOBAL_RE_FIR[15]
+REG_SCOM(proc0, 0x0F040001, 0x0002000000000000) // MC_CHIPLET_RE_FIR[14]
+REG_SCOM(proc0, 0x0F011800, 0x0000080000000000) // MC_OMI_DL_FIR(7)[20]
+REG_SCOM(proc0, 0x0F011807, 0xffffffffffffffff) // MC_OMI_DL_FIR_ACT1(7)
+REG_SCOM(proc0, 0x0F011823, 0x0000000000000001) // MC_OMI_DL_ERR_RPT(15)[63]
+
+EXP_SIG(proc0, 0x8d4a, 15, 63, RECOVERABLE)
+
+END_ITERATION
+
+START_ITERATION
+
 REG_SCOM(ocmb1, 0x08040000, 0x0008000000000000) // OCMB_CHIPLET_CS_FIR[12]
 REG_SCOM(ocmb1, 0x08012800, 0x8000000000000000) // OMI_DL_FIR[0]
 REG_SCOM(ocmb1, 0x08012813, 0x0000000000000001) // OMI_DL_ERR_RPT[63]
 
-EXP_SIG(proc0, 0x8d4a, 1, 63, RECOVERABLE)
 EXP_SIG(ocmb1, 0xbbd3, 0, 63, UNIT_CS)
 
 END_ITERATION
diff --git a/xml/parse_chip_data_xml b/xml/parse_chip_data_xml
index c083f7d..8108ff1 100755
--- a/xml/parse_chip_data_xml
+++ b/xml/parse_chip_data_xml
@@ -237,7 +237,7 @@
     my $list = [];
     for ( @{$insts} ) { push @{$list}, $_->{reg_inst}; }
 
-    @{$list} = sort @{$list}; # Sort the list just in case.
+    @{$list} = sort {$a <=> $b} @{$list}; # Sort the list just in case.
 
     return BitRange::compress($list);
 }
@@ -598,7 +598,7 @@
 {
     my ( $node, $sigs, $insts_data ) = @_;
 
-    my @node_insts = sort keys %{$insts_data};
+    my @node_insts = sort {$a <=> $b} keys %{$insts_data};
     my $sz_insts = scalar @node_insts;
 
     # There should be only one child node per node instance bit position.
@@ -728,7 +728,7 @@
     }
 
     # Now that we have all of the node data, collapse the instance data into
-    # a list.
+    # a list. Note that sort order doesn't matter. Only used for consistency.
     for ( sort keys %{$insts_data} )
     {
         $insts_data->{$_}->{node_inst} = $_;