diff options
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 |