📄 or1200_top.v
字号:
.ic_en(ic_en), .immu_en(immu_en), .supv(supv), .icpu_adr_i(icpu_adr_cpu), .icpu_cycstb_i(icpu_cycstb_cpu), .icpu_adr_o(icpu_adr_immu), .icpu_tag_o(icpu_tag_immu), .icpu_rty_o(icpu_rty_immu), .icpu_err_o(icpu_err_immu), // SPR access .spr_cs(spr_cs[`OR1200_SPR_GROUP_IMMU]), .spr_write(spr_we), .spr_addr(spr_addr), .spr_dat_i(spr_dat_cpu), .spr_dat_o(spr_dat_immu), // QMEM and IMMU .qmemimmu_rty_i(qmemimmu_rty_qmem), .qmemimmu_err_i(qmemimmu_err_qmem), .qmemimmu_tag_i(qmemimmu_tag_qmem), .qmemimmu_adr_o(qmemimmu_adr_immu), .qmemimmu_cycstb_o(qmemimmu_cycstb_immu), .qmemimmu_ci_o(qmemimmu_ci_immu));//// Instantiation of Instruction Cache//or1200_ic_top or1200_ic_top( .clk(clk_i), .rst(rst_i),`ifdef OR1200_BIST // RAM BIST .mbist_si_i(mbist_ic_si), .mbist_so_o(mbist_ic_so), .mbist_ctrl_i(mbist_ctrl_i),`endif // IC and QMEM .ic_en(ic_en), .icqmem_adr_i(icqmem_adr_qmem), .icqmem_cycstb_i(icqmem_cycstb_qmem), .icqmem_ci_i(icqmem_ci_qmem), .icqmem_sel_i(icqmem_sel_qmem), .icqmem_tag_i(icqmem_tag_qmem), .icqmem_dat_o(icqmem_dat_ic), .icqmem_ack_o(icqmem_ack_ic), .icqmem_rty_o(icqmem_rty_ic), .icqmem_err_o(icqmem_err_ic), .icqmem_tag_o(icqmem_tag_ic), // SPR access .spr_cs(spr_cs[`OR1200_SPR_GROUP_IC]), .spr_write(spr_we), .spr_dat_i(spr_dat_cpu), // IC and BIU .icbiu_dat_o(icbiu_dat_ic), .icbiu_adr_o(icbiu_adr_ic), .icbiu_cyc_o(icbiu_cyc_ic), .icbiu_stb_o(icbiu_stb_ic), .icbiu_we_o(icbiu_we_ic), .icbiu_sel_o(icbiu_sel_ic), .icbiu_cab_o(icbiu_cab_ic), .icbiu_dat_i(icbiu_dat_biu), .icbiu_ack_i(icbiu_ack_biu), .icbiu_err_i(icbiu_err_biu));//// Instantiation of Instruction Cache//or1200_cpu or1200_cpu( .clk(clk_i), .rst(rst_i), // Connection QMEM and IFETCHER inside CPU .ic_en(ic_en), .icpu_adr_o(icpu_adr_cpu), .icpu_cycstb_o(icpu_cycstb_cpu), .icpu_sel_o(icpu_sel_cpu), .icpu_tag_o(icpu_tag_cpu), .icpu_dat_i(icpu_dat_qmem), .icpu_ack_i(icpu_ack_qmem), .icpu_rty_i(icpu_rty_immu), .icpu_adr_i(icpu_adr_immu), .icpu_err_i(icpu_err_immu), .icpu_tag_i(icpu_tag_immu), // Connection CPU to external Debug port .ex_freeze(ex_freeze), .ex_insn(ex_insn), .id_pc(id_pc), .branch_op(branch_op), .du_stall(du_stall), .du_addr(du_addr), .du_dat_du(du_dat_du), .du_read(du_read), .du_write(du_write), .du_dsr(du_dsr), .du_except(du_except), .du_dat_cpu(du_dat_cpu), .du_hwbkpt(du_hwbkpt), .rf_dataw(rf_dataw), // Connection IMMU and CPU internally .immu_en(immu_en), // Connection QMEM and CPU .dc_en(dc_en), .dcpu_adr_o(dcpu_adr_cpu), .dcpu_cycstb_o(dcpu_cycstb_cpu), .dcpu_we_o(dcpu_we_cpu), .dcpu_sel_o(dcpu_sel_cpu), .dcpu_tag_o(dcpu_tag_cpu), .dcpu_dat_o(dcpu_dat_cpu), .dcpu_dat_i(dcpu_dat_qmem), .dcpu_ack_i(dcpu_ack_qmem), .dcpu_rty_i(dcpu_rty_qmem), .dcpu_err_i(dcpu_err_dmmu), .dcpu_tag_i(dcpu_tag_dmmu), // Connection DMMU and CPU internally .dmmu_en(dmmu_en), // Connection PIC and CPU's EXCEPT .sig_int(sig_int), .sig_tick(sig_tick), // SPRs .supv(supv), .spr_addr(spr_addr), .spr_dat_cpu(spr_dat_cpu), .spr_dat_pic(spr_dat_pic), .spr_dat_tt(spr_dat_tt), .spr_dat_pm(spr_dat_pm), .spr_dat_dmmu(spr_dat_dmmu), .spr_dat_immu(spr_dat_immu), .spr_dat_du(spr_dat_du), .spr_dat_npc(spr_dat_npc), .spr_cs(spr_cs), .spr_we(spr_we));//// Instantiation of DMMU//or1200_dmmu_top or1200_dmmu_top( // Rst and clk .clk(clk_i), .rst(rst_i),`ifdef OR1200_BIST // RAM BIST .mbist_si_i(mbist_dmmu_si), .mbist_so_o(mbist_dmmu_so), .mbist_ctrl_i(mbist_ctrl_i),`endif // CPU i/f .dc_en(dc_en), .dmmu_en(dmmu_en), .supv(supv), .dcpu_adr_i(dcpu_adr_cpu), .dcpu_cycstb_i(dcpu_cycstb_cpu), .dcpu_we_i(dcpu_we_cpu), .dcpu_tag_o(dcpu_tag_dmmu), .dcpu_err_o(dcpu_err_dmmu), // SPR access .spr_cs(spr_cs[`OR1200_SPR_GROUP_DMMU]), .spr_write(spr_we), .spr_addr(spr_addr), .spr_dat_i(spr_dat_cpu), .spr_dat_o(spr_dat_dmmu), // QMEM and DMMU .qmemdmmu_err_i(qmemdmmu_err_qmem), .qmemdmmu_tag_i(qmemdmmu_tag_qmem), .qmemdmmu_adr_o(qmemdmmu_adr_dmmu), .qmemdmmu_cycstb_o(qmemdmmu_cycstb_dmmu), .qmemdmmu_ci_o(qmemdmmu_ci_dmmu));//// Instantiation of Data Cache//or1200_dc_top or1200_dc_top( .clk(clk_i), .rst(rst_i),`ifdef OR1200_BIST // RAM BIST .mbist_si_i(mbist_dc_si), .mbist_so_o(mbist_dc_so), .mbist_ctrl_i(mbist_ctrl_i),`endif // DC and QMEM .dc_en(dc_en), .dcqmem_adr_i(dcqmem_adr_qmem), .dcqmem_cycstb_i(dcqmem_cycstb_qmem), .dcqmem_ci_i(dcqmem_ci_qmem), .dcqmem_we_i(dcqmem_we_qmem), .dcqmem_sel_i(dcqmem_sel_qmem), .dcqmem_tag_i(dcqmem_tag_qmem), .dcqmem_dat_i(dcqmem_dat_qmem), .dcqmem_dat_o(dcqmem_dat_dc), .dcqmem_ack_o(dcqmem_ack_dc), .dcqmem_rty_o(dcqmem_rty_dc), .dcqmem_err_o(dcqmem_err_dc), .dcqmem_tag_o(dcqmem_tag_dc), // SPR access .spr_cs(spr_cs[`OR1200_SPR_GROUP_DC]), .spr_write(spr_we), .spr_dat_i(spr_dat_cpu), // DC and BIU .dcsb_dat_o(dcsb_dat_dc), .dcsb_adr_o(dcsb_adr_dc), .dcsb_cyc_o(dcsb_cyc_dc), .dcsb_stb_o(dcsb_stb_dc), .dcsb_we_o(dcsb_we_dc), .dcsb_sel_o(dcsb_sel_dc), .dcsb_cab_o(dcsb_cab_dc), .dcsb_dat_i(dcsb_dat_sb), .dcsb_ack_i(dcsb_ack_sb), .dcsb_err_i(dcsb_err_sb));//// Instantiation of embedded memory - qmem//or1200_qmem_top or1200_qmem_top( .clk(clk_i), .rst(rst_i),`ifdef OR1200_BIST // RAM BIST .mbist_si_i(mbist_qmem_si), .mbist_so_o(mbist_qmem_so), .mbist_ctrl_i(mbist_ctrl_i),`endif // QMEM and CPU/IMMU .qmemimmu_adr_i(qmemimmu_adr_immu), .qmemimmu_cycstb_i(qmemimmu_cycstb_immu), .qmemimmu_ci_i(qmemimmu_ci_immu), .qmemicpu_sel_i(icpu_sel_cpu), .qmemicpu_tag_i(icpu_tag_cpu), .qmemicpu_dat_o(icpu_dat_qmem), .qmemicpu_ack_o(icpu_ack_qmem), .qmemimmu_rty_o(qmemimmu_rty_qmem), .qmemimmu_err_o(qmemimmu_err_qmem), .qmemimmu_tag_o(qmemimmu_tag_qmem), // QMEM and IC .icqmem_adr_o(icqmem_adr_qmem), .icqmem_cycstb_o(icqmem_cycstb_qmem), .icqmem_ci_o(icqmem_ci_qmem), .icqmem_sel_o(icqmem_sel_qmem), .icqmem_tag_o(icqmem_tag_qmem), .icqmem_dat_i(icqmem_dat_ic), .icqmem_ack_i(icqmem_ack_ic), .icqmem_rty_i(icqmem_rty_ic), .icqmem_err_i(icqmem_err_ic), .icqmem_tag_i(icqmem_tag_ic), // QMEM and CPU/DMMU .qmemdmmu_adr_i(qmemdmmu_adr_dmmu), .qmemdmmu_cycstb_i(qmemdmmu_cycstb_dmmu), .qmemdmmu_ci_i(qmemdmmu_ci_dmmu), .qmemdcpu_we_i(dcpu_we_cpu), .qmemdcpu_sel_i(dcpu_sel_cpu), .qmemdcpu_tag_i(dcpu_tag_cpu), .qmemdcpu_dat_i(dcpu_dat_cpu), .qmemdcpu_dat_o(dcpu_dat_qmem), .qmemdcpu_ack_o(dcpu_ack_qmem), .qmemdcpu_rty_o(dcpu_rty_qmem), .qmemdmmu_err_o(qmemdmmu_err_qmem), .qmemdmmu_tag_o(qmemdmmu_tag_qmem), // QMEM and DC .dcqmem_adr_o(dcqmem_adr_qmem), .dcqmem_cycstb_o(dcqmem_cycstb_qmem), .dcqmem_ci_o(dcqmem_ci_qmem), .dcqmem_we_o(dcqmem_we_qmem), .dcqmem_sel_o(dcqmem_sel_qmem), .dcqmem_tag_o(dcqmem_tag_qmem), .dcqmem_dat_o(dcqmem_dat_qmem), .dcqmem_dat_i(dcqmem_dat_dc), .dcqmem_ack_i(dcqmem_ack_dc), .dcqmem_rty_i(dcqmem_rty_dc), .dcqmem_err_i(dcqmem_err_dc), .dcqmem_tag_i(dcqmem_tag_dc));//// Instantiation of Store Buffer//or1200_sb or1200_sb( // RISC clock, reset .clk(clk_i), .rst(rst_i), // Internal RISC bus (DC<->SB) .dcsb_dat_i(dcsb_dat_dc), .dcsb_adr_i(dcsb_adr_dc), .dcsb_cyc_i(dcsb_cyc_dc), .dcsb_stb_i(dcsb_stb_dc), .dcsb_we_i(dcsb_we_dc), .dcsb_sel_i(dcsb_sel_dc), .dcsb_cab_i(dcsb_cab_dc), .dcsb_dat_o(dcsb_dat_sb), .dcsb_ack_o(dcsb_ack_sb), .dcsb_err_o(dcsb_err_sb), // SB and BIU .sbbiu_dat_o(sbbiu_dat_sb), .sbbiu_adr_o(sbbiu_adr_sb), .sbbiu_cyc_o(sbbiu_cyc_sb), .sbbiu_stb_o(sbbiu_stb_sb), .sbbiu_we_o(sbbiu_we_sb), .sbbiu_sel_o(sbbiu_sel_sb), .sbbiu_cab_o(sbbiu_cab_sb), .sbbiu_dat_i(sbbiu_dat_biu), .sbbiu_ack_i(sbbiu_ack_biu), .sbbiu_err_i(sbbiu_err_biu));//// Instantiation of Debug Unit//or1200_du or1200_du( // RISC Internal Interface .clk(clk_i), .rst(rst_i), .dcpu_cycstb_i(dcpu_cycstb_cpu), .dcpu_we_i(dcpu_we_cpu), .dcpu_adr_i(dcpu_adr_cpu), .dcpu_dat_lsu(dcpu_dat_cpu), .dcpu_dat_dc(dcpu_dat_qmem), .icpu_cycstb_i(icpu_cycstb_cpu), .ex_freeze(ex_freeze), .branch_op(branch_op), .ex_insn(ex_insn), .id_pc(id_pc), .du_dsr(du_dsr), // For Trace buffer .spr_dat_npc(spr_dat_npc), .rf_dataw(rf_dataw), // DU's access to SPR unit .du_stall(du_stall), .du_addr(du_addr), .du_dat_i(du_dat_cpu), .du_dat_o(du_dat_du), .du_read(du_read), .du_write(du_write), .du_except(du_except), .du_hwbkpt(du_hwbkpt), // Access to DU's SPRs .spr_cs(spr_cs[`OR1200_SPR_GROUP_DU]), .spr_write(spr_we), .spr_addr(spr_addr), .spr_dat_i(spr_dat_cpu), .spr_dat_o(spr_dat_du), // External Debug Interface .dbg_stall_i(dbg_stall_i), .dbg_ewt_i(dbg_ewt_i), .dbg_lss_o(dbg_lss_o), .dbg_is_o(dbg_is_o), .dbg_wp_o(dbg_wp_o), .dbg_bp_o(dbg_bp_o), .dbg_stb_i(dbg_stb_i), .dbg_we_i(dbg_we_i), .dbg_adr_i(dbg_adr_i), .dbg_dat_i(dbg_dat_i), .dbg_dat_o(dbg_dat_o), .dbg_ack_o(dbg_ack_o));//// Programmable interrupt controller//or1200_pic or1200_pic( // RISC Internal Interface .clk(clk_i), .rst(rst_i), .spr_cs(spr_cs[`OR1200_SPR_GROUP_PIC]), .spr_write(spr_we), .spr_addr(spr_addr), .spr_dat_i(spr_dat_cpu), .spr_dat_o(spr_dat_pic), .pic_wakeup(pic_wakeup), .intr(sig_int), // PIC Interface .pic_int(pic_ints_i));//// Instantiation of Tick timer//or1200_tt or1200_tt( // RISC Internal Interface .clk(clk_i), .rst(rst_i), .du_stall(du_stall), .spr_cs(spr_cs[`OR1200_SPR_GROUP_TT]), .spr_write(spr_we), .spr_addr(spr_addr), .spr_dat_i(spr_dat_cpu), .spr_dat_o(spr_dat_tt), .intr(sig_tick));//// Instantiation of Power Management//or1200_pm or1200_pm( // RISC Internal Interface .clk(clk_i), .rst(rst_i), .pic_wakeup(pic_wakeup), .spr_write(spr_we), .spr_addr(spr_addr), .spr_dat_i(spr_dat_cpu), .spr_dat_o(spr_dat_pm), // Power Management Interface .pm_cpustall(pm_cpustall_i), .pm_clksd(pm_clksd_o), .pm_dc_gate(pm_dc_gate_o), .pm_ic_gate(pm_ic_gate_o), .pm_dmmu_gate(pm_dmmu_gate_o), .pm_immu_gate(pm_immu_gate_o), .pm_tt_gate(pm_tt_gate_o), .pm_cpu_gate(pm_cpu_gate_o), .pm_wakeup(pm_wakeup_o), .pm_lvolt(pm_lvolt_o));endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -