summaryrefslogtreecommitdiff
path: root/techlibs/ice40/brams_init.py
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2015-04-26 08:39:31 +0200
committerClifford Wolf <clifford@clifford.at>2015-04-26 08:39:31 +0200
commit752851954b8330b3f4f443f799b3b121f416b51e (patch)
tree1737b7bac591a7020ead5fa60b5bc212c17b75b1 /techlibs/ice40/brams_init.py
parentb4d7a590e8d6ab5034adf9a34c1ef4a3b3c2a708 (diff)
Initialization support for all iCE40 bram modes
Diffstat (limited to 'techlibs/ice40/brams_init.py')
-rw-r--r--techlibs/ice40/brams_init.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/techlibs/ice40/brams_init.py b/techlibs/ice40/brams_init.py
new file mode 100644
index 00000000..b99a2f3c
--- /dev/null
+++ b/techlibs/ice40/brams_init.py
@@ -0,0 +1,17 @@
+#!/usr/bin/python
+
+from __future__ import division
+from __future__ import print_function
+
+def write_init_vh(filename, initbits):
+ with open(filename, "w") as f:
+ for i in range(16):
+ print("localparam [255:0] INIT_%X = {" % i, file=f)
+ for k in range(32):
+ print(" %s%s" % (", ".join(["INIT[%4d]" % initbits[i*256 + 255 - k*8 - l] for l in range(8)]), "," if k != 31 else ""), file=f)
+ print("};", file=f);
+
+write_init_vh("brams_init1.vh", [i//2 + 2048*(i%2) for i in range(4096)])
+write_init_vh("brams_init2.vh", [i//4 + 1024*(i%4) for i in range(4096)])
+write_init_vh("brams_init3.vh", [i//8 + 512*(i%8) for i in range(4096)])
+