aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/nexus/parse_init.vh
diff options
context:
space:
mode:
Diffstat (limited to 'techlibs/nexus/parse_init.vh')
-rw-r--r--techlibs/nexus/parse_init.vh33
1 files changed, 33 insertions, 0 deletions
diff --git a/techlibs/nexus/parse_init.vh b/techlibs/nexus/parse_init.vh
new file mode 100644
index 000000000..0f9ab7897
--- /dev/null
+++ b/techlibs/nexus/parse_init.vh
@@ -0,0 +1,33 @@
+function [15:0] parse_init;
+ input [((2+(16/4))*8)-1:0] init;
+ reg [7:0] c;
+ integer i;
+ begin
+ for (i = 0; i < (16/4); i = i + 1) begin
+ c = init[(i * 8) +: 8];
+ if (c >= "0" && c <= "9")
+ parse_init[(i * 4) +: 4] = (c - "0");
+ else if (c >= "A" && c <= "F")
+ parse_init[(i * 4) +: 4] = (c - "A") + 10;
+ else if (c >= "a" && c <= "f")
+ parse_init[(i * 4) +: 4] = (c - "a") + 10;
+ end
+ end
+endfunction
+
+function [63:0] parse_init_64;
+ input [((2+(64/4))*8)-1:0] init;
+ reg [7:0] c;
+ integer i;
+ begin
+ for (i = 0; i < (64/4); i = i + 1) begin
+ c = init[(i * 8) +: 8];
+ if (c >= "0" && c <= "9")
+ parse_init_64[(i * 4) +: 4] = (c - "0");
+ else if (c >= "A" && c <= "F")
+ parse_init_64[(i * 4) +: 4] = (c - "A") + 10;
+ else if (c >= "a" && c <= "f")
+ parse_init_64[(i * 4) +: 4] = (c - "a") + 10;
+ end
+ end
+endfunction