OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_52/] [or1ksim/] [support/] [dumpverilog.c] - Diff between revs 55 and 60

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 55 Rev 60
Line 41... Line 41...
 
 
void dumpverilog(char *verilog_modname, unsigned int from, unsigned int to)
void dumpverilog(char *verilog_modname, unsigned int from, unsigned int to)
{
{
        unsigned int i, done = 0;
        unsigned int i, done = 0;
        struct label_entry *tmp;
        struct label_entry *tmp;
 
        char dis[DISWIDTH + 100];
 
 
        printf("// This file was generated by or1ksim %s\n", rcsrev);
        printf("// This file was generated by or1ksim %s\n", rcsrev);
        printf(OR1K_MEM_VERILOG_HEADER(verilog_modname, from/DWQ, to/DWQ));
        printf(OR1K_MEM_VERILOG_HEADER(verilog_modname, from/DWQ, to/DWQ, (DISWIDTH*8)));
 
 
        for(i = from; i < to && i < (MEMORY_START + MEMORY_LEN); i++) {
        for(i = from; i < to && i < (MEMORY_START + MEMORY_LEN); i++) {
                if (mem[i].insn) {
                if (mem[i].insn) {
                        tmp = mem[i].label;
                        tmp = mem[i].label;
                        for(; tmp; tmp = tmp->next)
                        for(; tmp; tmp = tmp->next)
                                printf("\n//\t%s%s", tmp->name, LABELEND_CHAR);
                                printf("\n//\t%s%s", tmp->name, LABELEND_CHAR);
 
 
                        printf("\n\tmem['h%x] = %d'h%.2x%.2x", i/DWQ, DW, mem[i].data, mem[i+1].data);
                        printf("\n\tmem['h%x] = %d'h%.2x%.2x", i/DWQ, DW, mem[i].data, mem[i+1].data);
                        printf("%.2x%.2x;", mem[i+2].data, mem[i+3].data);
                        printf("%.2x%.2x;", mem[i+2].data, mem[i+3].data);
                        if (mem[i].insn)
                        if (mem[i].insn)
                                printf("\n\tdis['h%x] = {\"%s\t%s\"", i/DWQ, mem[i].insn->insn, mem[i].insn->op1);
                                sprintf(dis, "%s  %s", mem[i].insn->insn, mem[i].insn->op1);
                        if (strlen(mem[i].insn->op2))
                        if (strlen(mem[i].insn->op2))
                                printf(",\"%s%s\"", OPERAND_DELIM, mem[i].insn->op2);
                                sprintf(dis, "%s%s%s", dis, OPERAND_DELIM, mem[i].insn->op2);
                        if (strlen(mem[i].insn->op3))
                        if (strlen(mem[i].insn->op3))
                                printf(",\"%s%s\"", OPERAND_DELIM, mem[i].insn->op3);
                                sprintf(dis, "%s%s%s", dis, OPERAND_DELIM, mem[i].insn->op3);
                        if (strlen(mem[i].insn->op4))
                        if (strlen(mem[i].insn->op4))
                                printf(",\"%s%s\"", OPERAND_DELIM, mem[i].insn->op4);
                                sprintf(dis, "%s%s%s", dis, OPERAND_DELIM, mem[i].insn->op4);
                        printf("};");
                        if (strlen(dis) < DISWIDTH)
 
                                memset(dis + strlen(dis), ' ', DISWIDTH);
 
                        dis[DISWIDTH] = '\0';
 
                        printf("\n\tdis['h%x] = {\"%s\"};", i/DWQ, dis);
 
                        dis[0] = '\0';
                        i += (insn_len(mem[i].insn->insn) - 1);
                        i += (insn_len(mem[i].insn->insn) - 1);
                } else
                } else
                {
                {
                        if (i % 64 == 0)
                        if (i % 64 == 0)
                                printf("\n");
                                printf("\n");

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.