Merge pull request #67 from EnJens/bootaddr-meta-fuzz
fuzzers: Add meta fuzzer to add BOOTADDR config word
diff --git a/fuzzers/ECP5/144-bootaddr/fuzzer.py b/fuzzers/ECP5/144-bootaddr/fuzzer.py
new file mode 100644
index 0000000..c42eb7d
--- /dev/null
+++ b/fuzzers/ECP5/144-bootaddr/fuzzer.py
@@ -0,0 +1,45 @@
+import pytrellis
+
+# BOOTADDR is bit 23..16 of the address for the next image to boot
+# when PROGRAMN is asserted.
+# This Config word is as far as I can tell never generated by
+# Diamond itself, but instead by the Deployment tool
+# For this reason, I have manually "fuzzed" the info for it.
+# The name is arbitrarily chosen.
+
+
+def main():
+ pytrellis.load_database("../../../database")
+
+ config = [
+ (46, 1, 0),
+ (48, 1, 0),
+ (50, 1, 0),
+ (54, 1, 0),
+ (56, 1, 0),
+ (58, 1, 0),
+ (60, 1, 0),
+ (62, 1, 0),
+ ]
+
+ tile = pytrellis.get_tile_bitdata(
+ pytrellis.TileLocator("ECP5", "LFE5U-25F", "EFB1_PICB1"))
+ wsb = pytrellis.WordSettingBits()
+ wsb.name = "BOOTADDR"
+
+ for bframe, bbit, inv in config:
+ bg = pytrellis.BitGroup()
+ cb = pytrellis.ConfigBit()
+ cb.frame = bframe
+ cb.bit = bbit
+ cb.inv = inv
+ bg.bits.add(cb)
+ wsb.bits.append(bg)
+ wsb.defval.append(False)
+
+ tile.add_setting_word(wsb)
+ tile.save()
+
+
+if __name__ == "__main__":
+ main()