diff options
author | David Shah <dave@ds0.me> | 2020-10-01 11:15:54 +0100 |
---|---|---|
committer | David Shah <dave@ds0.me> | 2020-10-15 08:52:15 +0100 |
commit | 4d584d9319e87023f3aee9f9bc86a036f670478c (patch) | |
tree | 6c80347ec72c1dc36f5d77f0ce5b204a910bbfb7 /techlibs/nexus/parse_init.vh | |
parent | f9ed9786bf8743e96aafb42838cfef5e18e35f29 (diff) | |
download | yosys-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.vh | 33 |
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 |