#include #include #include #include int line = 0; char buffer1[1024]; char buffer2[1024]; void check(bool ok) { if (ok) return; fprintf(stderr, "Error in testbench output compare (line=%d):\n-%s\n+%s\n", line, buffer1, buffer2); exit(1); } int main(int argc, char **argv) { FILE *f1, *f2; bool eof1, eof2; int i; check(argc == 3); f1 = fopen(argv[1], "r"); f2 = fopen(argv[2], "r"); check(f1 && f2); while (!feof(f1) && !feof(f2)) { line++; buffer1[0] = 0; buffer2[0] = 0; eof1 = fgets(buffer1, 1024, f1) == NULL; eof2 = fgets(buffer2, 1024, f2) == NULL; if (*buffer1 && buffer1[strlen(buffer1)-1] == '\n') buffer1[strlen(buffer1)-1] = 0; if (*buffer2 && buffer2[strlen(buffer2)-1] == '\n') buffer2[strlen(buffer2)-1] = 0; check(eof1 == eof2); for (i = 0; buffer1[i] || buffer2[i]; i++) { check(buffer1[i] != 0 && buffer2[i] != 0); // first argument is the reference. An 'z' or 'x' // here means we don't care about the result. if (buffer1[i] == 'z' || buffer1[i] == 'x') continue; if (buffer1[i] == 'Z' || buffer1[i] == 'X') continue; check(buffer1[i] == buffer2[i]); } } check(feof(f1) && feof(f2)); fclose(f1); fclose(f2); return 0; } a href='/cgit.cgi/iCE40/yosys/refs/?id=18a4c1cdacc948ef669678f9e3ac1052aadba1a2'>refslogtreecommitdiffstats
blob: d46a2b4f75b74e3aad49c138eec08e34773eca2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env python3

with open("techlibs/xilinx/brams_init_18.vh", "w") as f:
    for i in range(8):
        init_snippets = [" INIT[%3d*9+8]" % (k+256*i,) for k in range(255, -1, -1)]
        for k in range(4, 256, 4):
            init_snippets[k] = "\n           " + init_snippets[k]
        print(".INITP_%02X({%s})," % (i, ",".join(init_snippets)), file=f)
    for i in range(64):
        init_snippets = [" INIT[%3d*9 +: 8]" % (k+32*i,) for k in range(31, -1, -1)]
        for k in range(4, 32, 4):
            init_snippets[k] = "\n          " + init_snippets[k]
        print(".INIT_%02X({%s})," % (i, ",".join(init_snippets)), file=f)

with open("techlibs/xilinx/brams_init_36.vh", "w") as f:
    for i in range(16):
        init_snippets = [" INIT[%3d*9+8]" % (k+256*i,) for k in range(255, -1, -1)]
        for k in range(4, 256, 4):
            init_snippets[k] = "\n           " + init_snippets[k]
        print(".INITP_%02X({%s})," % (i, ",".join(init_snippets)), file=f)
    for i in range(128):
        init_snippets = [" INIT[%3d*9 +: 8]" % (k+32*i,) for k in range(31, -1, -1)]
        for k in range(4, 32, 4):
            init_snippets[k] = "\n          " + init_snippets[k]
        print(".INIT_%02X({%s})," % (i, ",".join(init_snippets)), file=f)

with open("techlibs/xilinx/brams_init_16.vh", "w") as f:
    for i in range(64):
        print(".INIT_%02X(INIT[%3d*256 +: 256])," % (i, i), file=f)

with open("techlibs/xilinx/brams_init_32.vh", "w") as f:
    for i in range(128):
        print(".INIT_%02X(INIT[%3d*256 +: 256])," % (i, i), file=f)