Added support for placeholders with empty values through specifying "NULL" as value.

Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
diff --git a/utils/fasm/src/fasm.cpp b/utils/fasm/src/fasm.cpp
index 03189cf..361abdb 100644
--- a/utils/fasm/src/fasm.cpp
+++ b/utils/fasm/src/fasm.cpp
@@ -77,7 +77,14 @@
         VTR_ASSERT(parts.size() == 2);
 
         VTR_ASSERT(tags_.count(parts.at(0)) == 0);
-        tags_[parts.at(0)] = parts.at(1);
+
+        // When the value is "NULL" then substitute empty string
+        if (!parts.at(1).compare("NULL")) {
+            tags_[parts.at(0)] = "";
+        }
+        else {
+            tags_[parts.at(0)] = parts.at(1);
+        }
       }
     }
 
diff --git a/utils/fasm/test/test_fasm.cpp b/utils/fasm/test/test_fasm.cpp
index 8faf630..f1a94a5 100644
--- a/utils/fasm/test/test_fasm.cpp
+++ b/utils/fasm/test/test_fasm.cpp
@@ -344,6 +344,14 @@
                 CHECK_THAT(line, MatchesRegex(".*ALUT_[LR]{1}.*"));
             }
 
+            // Check correct substitution of "" and "_SING"
+            if (loc_y == 1) {
+                CHECK_THAT(line,  Contains("_SING"));
+            }
+            else {
+                CHECK_THAT(line, !Contains("_SING"));
+            }
+
             // Check that all tags were substituted
             CHECK_THAT(line, !Contains("{") && !Contains("}"));
 
diff --git a/utils/fasm/test/test_fasm_arch.xml b/utils/fasm/test/test_fasm_arch.xml
index d95321b..14bbe14 100644
--- a/utils/fasm/test/test_fasm_arch.xml
+++ b/utils/fasm/test/test_fasm_arch.xml
@@ -40,24 +40,28 @@
       <metadata> <meta name="fasm_placeholders">
         LOC=X1Y1
         LR=L
+        SING=_SING
       </meta> <meta name="fasm_prefix">CLB</meta> </metadata>
       </single>
       <single type="clb" priority="10" x="1" y="2">
       <metadata> <meta name="fasm_placeholders">
         LOC=X1Y2
         LR=R
+        SING=NULL
       </meta> <meta name="fasm_prefix">CLB</meta> </metadata>
       </single>
       <single type="clb" priority="10" x="1" y="3">
       <metadata> <meta name="fasm_placeholders">
         LOC=X1Y3
         LR=L
+        SING=NULL
       </meta> <meta name="fasm_prefix">CLB</meta> </metadata>
       </single>
       <single type="clb" priority="10" x="1" y="4">
       <metadata> <meta name="fasm_placeholders">
         LOC=X1Y4
         LR=R
+        SING=NULL
       </meta> <meta name="fasm_prefix">CLB</meta> </metadata>
       </single>
 
@@ -65,24 +69,28 @@
       <metadata> <meta name="fasm_placeholders">
         LOC=X2Y1
         LR=L
+        SING=_SING
       </meta> <meta name="fasm_prefix">PLB</meta> </metadata>
       </single>
       <single type="clb" priority="10" x="2" y="2">
       <metadata> <meta name="fasm_placeholders">
         LOC=X2Y2
         LR=R
+        SING=NULL
       </meta> <meta name="fasm_prefix">PLB</meta> </metadata>
       </single>
       <single type="clb" priority="10" x="2" y="3">
       <metadata> <meta name="fasm_placeholders">
         LOC=X2Y3
         LR=L
+        SING=NULL
       </meta> <meta name="fasm_prefix">PLB</meta> </metadata>
       </single>
       <single type="clb" priority="10" x="2" y="4">
       <metadata> <meta name="fasm_placeholders">
         LOC=X2Y4
         LR=R
+        SING=NULL
       </meta> <meta name="fasm_prefix">PLB</meta> </metadata>
       </single>
 
@@ -90,24 +98,28 @@
       <metadata> <meta name="fasm_placeholders">
         LOC=X3Y1
         LR=L
+        SING=_SING
       </meta> </metadata>
       </single>
       <single type="clb" priority="10" x="3" y="2">
       <metadata> <meta name="fasm_placeholders">
         LOC=X3Y2
         LR=R
+        SING=NULL
       </meta> </metadata>
       </single>
       <single type="clb" priority="10" x="3" y="3">
       <metadata> <meta name="fasm_placeholders">
         LOC=X3Y3
         LR=L
+        SING=NULL
       </meta> </metadata>
       </single>
       <single type="clb" priority="10" x="3" y="4">
       <metadata> <meta name="fasm_placeholders">
         LOC=X3Y4
         LR=R
+        SING=NULL
       </meta>  </metadata>
       </single>
 
@@ -115,24 +127,28 @@
       <metadata> <meta name="fasm_placeholders">
         LOC=X4Y1
         LR=L
+        SING=_SING
       </meta> <meta name="fasm_prefix">SLICE</meta> </metadata>
       </single>
       <single type="clb" priority="10" x="4" y="2">
       <metadata> <meta name="fasm_placeholders">
         LOC=X4Y2
         LR=R
+        SING=NULL
       </meta> <meta name="fasm_prefix">SLICE</meta> </metadata>
       </single>
       <single type="clb" priority="10" x="4" y="3">
       <metadata> <meta name="fasm_placeholders">
         LOC=X4Y3
         LR=L
+        SING=NULL
       </meta> <meta name="fasm_prefix">SLICE</meta> </metadata>
       </single>
       <single type="clb" priority="10" x="4" y="4">
       <metadata> <meta name="fasm_placeholders">
         LOC=X4Y4
         LR=R
+        SING=NULL
       </meta> <meta name="fasm_prefix">SLICE</meta> </metadata>
       </single>
 
@@ -363,7 +379,7 @@
         </mode>
         <metadata>
           <meta name="fasm_prefix">
-            FLE0_{LOC} FLE1_{LOC}
+            FLE0{SING}_{LOC} FLE1{SING}_{LOC}
           </meta>
         </metadata>
       </pb_type>