aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/nexus/parse_init.vh
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2020-10-01 11:15:54 +0100
committerDavid Shah <dave@ds0.me>2020-10-15 08:52:15 +0100
commit4d584d9319e87023f3aee9f9bc86a036f670478c (patch)
tree6c80347ec72c1dc36f5d77f0ce5b204a910bbfb7 /techlibs/nexus/parse_init.vh
parentf9ed9786bf8743e96aafb42838cfef5e18e35f29 (diff)
downloadyosys-4d584d9319e87023f3aee9f9bc86a036f670478c.tar.gz
yosys-4d584d9319e87023f3aee9f9bc86a036f670478c.tar.bz2
yosys-4d584d9319e87023f3aee9f9bc86a036f670478c.zip
synth_nexus: Initial implementation
Signed-off-by: David Shah <dave@ds0.me>
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