📄 mips_trace.cpp
字号:
_do_trace(tf, mem->tag_in, "tag_in");
_do_trace(tf, mem->tag_out, "tag_out");
_do_trace(tf, mem->tag_reg, "tag_reg");
_do_trace(tf, mem->index, "index");
_do_trace(tf, mem->index_reg, "index_reg");
_do_trace(tf, mem->offset, "offset");
_do_trace(tf, mem->offset_reg, "offset_reg");
_do_trace(tf, mem->byte, "byte");
_do_trace(tf, mem->byte_reg, "byte_reg");
_do_trace(tf, mem->cache_en, "cache_en");
_do_trace(tf, mem->cache_we, "cache_we");
_do_trace(tf, mem->valid, "valid");
_do_trace(tf, mem->fetch_word, "fetch_word");
_do_trace(tf, mem->fetch_word_rdy, "fetch_word_rdy");
_do_trace(tf, mem->rewrite, "rewrite");
_do_trace(tf, mem->byte_rpl, "byte_rpl");
_do_trace(tf, mem->current_reg, "current_reg");
_do_trace(tf, mem->miss_ctrl->current_state, "miss_ctrl.current_state");
_do_trace(tf, mem->miss_ctrl->operation, "miss_ctrl.operation");
_do_trace(tf, mem->miss_ctrl->waiting, "miss_ctrl.waiting");
_do_trace(tf, mem->miss_ctrl->miss, "miss_ctrl.miss");
_do_trace(tf, mem->miss_ctrl->next_fetch_word, "miss_ctrl.next_fetch_word");
_do_trace(tf, mem->miss_ctrl->word_inc, "miss_ctrl.word_inc");
_do_trace(tf, mem->miss_ctrl->word_clr, "miss_ctrl.word_clr");
_do_trace(tf, mem->miss_ctrl->start_write, "miss_ctrl.start_write");
_do_trace(tf, mem->miss_ctrl->write_in_progress, "miss_ctrl.write_in_progress");
char stbuf[32];
for( int i = 0 ; i < 256 ; i++ )
{
sprintf(stbuf, "memory.block%02d_w0", i);
_do_trace(tf, mem->cache_memory->bram0->memory[2*i], stbuf );
sprintf(stbuf, "memory.block%02d_w1", i);
_do_trace(tf, mem->cache_memory->bram0->memory[2*i+1], stbuf );
sprintf(stbuf, "memory.block%02d_w2", i);
_do_trace(tf, mem->cache_memory->bram1->memory[2*i], stbuf );
sprintf(stbuf, "memory.block%02d_w3", i);
_do_trace(tf, mem->cache_memory->bram1->memory[2*i+1], stbuf );
}
pop_prefix();
}
////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////
void trace_router_inctrl( sc_trace_file *tf, INPUT_CTRL *inctrl )
{
_do_trace(tf, inctrl->data_latch, "data_latch");
_do_trace(tf, inctrl->current_state, "current_state");
_do_trace(tf, inctrl->next_state, "next_state");
_do_trace(tf, inctrl->header_select, "header_select");
_do_trace(tf, inctrl->end_of_route, "end_of_route");
_do_trace(tf, inctrl->start_of_packet, "start_of_packet");
_do_trace(tf, inctrl->end_of_packet, "end_of_packet");
_do_trace(tf, inctrl->header, "header");
}
void trace_router_queue( sc_trace_file *tf, OUTPUT_QUEUE *queue )
{
_do_trace(tf, queue->current_state, "current_state");
_do_trace(tf, queue->next_state, "next_state");
_do_trace(tf, queue->buffer, "buffer");
_do_trace(tf, queue->buffer_write, "buffer_write");
_do_trace(tf, queue->buffer_clear, "buffer_clear");
}
void trace_router_arbiter( sc_trace_file *tf, OUTPUT_ARBITER* arbiter )
{
_do_trace(tf, arbiter->arb_req0, "arb_req0");
_do_trace(tf, arbiter->arb_req1, "arb_req1");
_do_trace(tf, arbiter->arb_grant0, "arb_grant0");
_do_trace(tf, arbiter->arb_grant1, "arb_grant1");
_do_trace(tf, arbiter->ch0ctrl->current_state, "ch0.current_state");
_do_trace(tf, arbiter->ch1ctrl->current_state, "ch1.current_state");
_do_trace(tf, arbiter->arbiter->channel_busy, "arbiter.channel_busy");
_do_trace(tf, arbiter->arbiter->selected_channel, "arbiter.selected_channel");
}
void trace_router_switch( sc_trace_file *tf, CROSSBAR3x3* swtch )
{
_do_trace(tf, swtch->grant0, "grant0");
_do_trace(tf, swtch->grant1, "grant1");
_do_trace(tf, swtch->grant2, "grant2");
}
void trace_router_1dim( sc_trace_file *tf, ECUBE_ROUTER_1DIM *router )
{
_do_trace(tf, router->data0in, "conn.data0in");
_do_trace(tf, router->data1in, "conn.data1in");
_do_trace(tf, router->data2in, "conn.data2in");
_do_trace(tf, router->data0out, "conn.data0out");
_do_trace(tf, router->data1out, "conn.data1out");
_do_trace(tf, router->data2out, "conn.data2out");
_do_trace(tf, router->select0, "conn.select0");
_do_trace(tf, router->select1, "conn.select1");
_do_trace(tf, router->select2, "conn.select2");
_do_trace(tf, router->rqs0, "conn.rqs0");
_do_trace(tf, router->rqs1, "conn.rqs1");
_do_trace(tf, router->rqs2, "conn.rqs2");
_do_trace(tf, router->req0in, "conn.req0in");
_do_trace(tf, router->req1in, "conn.req1in");
_do_trace(tf, router->req2in, "conn.req2in");
_do_trace(tf, router->req0out, "conn.req0out");
_do_trace(tf, router->req1out, "conn.req1out");
_do_trace(tf, router->req2out, "conn.req2out");
_do_trace(tf, router->ack0in, "conn.ack0in");
_do_trace(tf, router->ack1in, "conn.ack1in");
_do_trace(tf, router->ack2in, "conn.ack2in");
_do_trace(tf, router->ack0out, "conn.ack0out");
_do_trace(tf, router->ack1out, "conn.ack1out");
_do_trace(tf, router->ack2out, "conn.ack2out");
_do_trace(tf, router->arb_data0, "conn.arb_data0");
_do_trace(tf, router->arb_data1, "conn.arb_data1");
_do_trace(tf, router->arb_req0, "conn.arb_req0");
_do_trace(tf, router->arb_req1, "conn.arb_req1");
_do_trace(tf, router->arb_ack0, "conn.arb_ack0");
_do_trace(tf, router->arb_ack1, "conn.arb_ack1");
push_prefix("x0inctrl.");
trace_router_inctrl( tf, router->x0inctrl );
pop_prefix();
push_prefix("x1inctrl.");
trace_router_inctrl( tf, router->x1inctrl );
pop_prefix();
push_prefix("dinctrl.");
trace_router_inctrl( tf, router->dinctrl );
pop_prefix();
push_prefix("x0queue.");
trace_router_queue( tf, router->x0queue );
pop_prefix();
push_prefix("x1queue.");
trace_router_queue( tf, router->x1queue );
pop_prefix();
push_prefix("dqueue.");
trace_router_queue( tf, router->dqueue );
pop_prefix();
push_prefix("arbiter.");
trace_router_arbiter( tf, router->arbiter );
pop_prefix();
push_prefix("switch.");
trace_router_switch( tf, router->swtch );
pop_prefix();
}
void trace_router( sc_trace_file *tf, ECUBE_ROUTER *router, const char *prefix )
{
push_prefix(prefix);
_do_trace(tf, router->xydata, "xydata");
_do_trace(tf, router->xyreq, "xyreq");
_do_trace(tf, router->xyack, "xyack");
push_prefix("xrouter.");
trace_router_1dim( tf, router->xrouter );
pop_prefix();
push_prefix("yrouter.");
trace_router_1dim( tf, router->yrouter );
pop_prefix();
pop_prefix();
}
////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////
void trace_netif( sc_trace_file *tf, NETWORK_INTERFACE *netif, const char *prefix )
{
push_prefix( prefix );
_do_trace(tf, netif->buffer_addr, "buffer_addr");
_do_trace(tf, netif->buffer_in, "buffer_in");
_do_trace(tf, netif->buffer_out, "buffer_out");
_do_trace(tf, netif->send_flit, "send_flit");
_do_trace(tf, netif->next_send_flit, "next_send_flit");
_do_trace(tf, netif->send_current_state, "send_current_state");
_do_trace(tf, netif->send_next_state, "send_next_state");
_do_trace(tf, netif->rcv_flit, "rcv_flit");
_do_trace(tf, netif->rcv_current_state, "rcv_current_state");
pop_prefix();
}
////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////
void trace_netmips( sc_trace_file *tf, NETmMIPS *mips, const char *prefix )
{
push_prefix( prefix );
_do_trace(tf, mips->dout, "dout");
_do_trace(tf, mips->din, "din");
_do_trace(tf, mips->r, "r");
_do_trace(tf, mips->w, "w");
_do_trace(tf, mips->rdyr, "rdyr");
_do_trace(tf, mips->rdyw, "rdyw");
_do_trace(tf, mips->wdata, "wdata");
_do_trace(tf, mips->waddr, "waddr");
_do_trace(tf, mips->send_eop, "send_eop");
_do_trace(tf, mips->rcv_eop, "rcv_eop");
pop_prefix();
}
////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////
void trace_mainmem( sc_trace_file *tf, CACHE_MAINMEM *memory, const char *prefix )
{
push_prefix( prefix );
_do_trace(tf, memory->mem_addr, "mem_addr");
_do_trace(tf, memory->mem_dout, "mem_dout");
_do_trace(tf, memory->mem_din, "mem_din");
_do_trace(tf, memory->mem_ww, "mem_ww");
_do_trace(tf, memory->mem_wb, "mem_wb");
_do_trace(tf, memory->mem_r, "mem_r");
_do_trace(tf, memory->mem_clk, "mem_clk");
_do_trace(tf, memory->arbiter->addr0_reg, "arbiter.addr0_reg");
_do_trace(tf, memory->arbiter->addr1_reg, "arbiter.addr1_reg");
_do_trace(tf, memory->arbiter->din0_reg, "arbiter.din0_reg");
_do_trace(tf, memory->arbiter->din1_reg, "arbiter.din1_reg");
_do_trace(tf, memory->arbiter->ww0_reg, "arbiter.ww0_reg");
_do_trace(tf, memory->arbiter->ww1_reg, "arbiter.ww1_reg");
_do_trace(tf, memory->arbiter->wb0_reg, "arbiter.wb0_reg");
_do_trace(tf, memory->arbiter->wb1_reg, "arbiter.wb1_reg");
_do_trace(tf, memory->arbiter->r0_reg, "arbiter.r0_reg");
_do_trace(tf, memory->arbiter->r1_reg, "arbiter.r1_reg");
_do_trace(tf, memory->arbiter->grant, "arbiter.grant");
_do_trace(tf, memory->arbiter->reg0, "arbiter.reg0");
_do_trace(tf, memory->arbiter->reg1, "arbiter.reg1");
_do_trace(tf, memory->arbiter->clr0, "arbiter.clr0");
_do_trace(tf, memory->arbiter->clr1, "arbiter.clr1");
/*
char stbuf[32];
for (int i = 0; i < RAMSIZE+ROMSIZE; i+=4)
{
sprintf(stbuf, "memory.mem(%d)", i);
_do_trace(tf, memory->memory->bram0->memory[i/4], stbuf);
sprintf(stbuf, "memory.mem(%d)", i+1);
_do_trace(tf, memory->memory->bram1->memory[i/4], stbuf);
sprintf(stbuf, "memory.mem(%d)", i+2);
_do_trace(tf, memory->memory->bram2->memory[i/4], stbuf);
sprintf(stbuf, "memory.mem(%d)", i+3);
_do_trace(tf, memory->memory->bram3->memory[i/4], stbuf);
}
*/
pop_prefix();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -