OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/orpsocv2/rtl
    from Rev 58 to Rev 63
    Reverse comparison

Rev 58 → Rev 63

/verilog/or1200_defines.v
514,7 → 514,7
//
// To implement divide, multiplier needs to be implemented.
//
//`define OR1200_IMPL_DIV
`define OR1200_IMPL_DIV
 
//
// Implement rotate in the ALU
572,7 → 572,7
//
// Implement HW Single Precision FPU
//
//`define OR1200_FPU_IMPLEMENTED
`define OR1200_FPU_IMPLEMENTED
 
//
// Clock ratio RISC clock versus WB clock
751,7 → 751,11
//
`ifdef OR1200_FPU_IMPLEMENTED
`define OR1200_FPUOP_WIDTH 8
/* FPU unit from Usselman takes 5 cycles from decode, so 4 ex. cycles */
`define OR1200_FPUOP_CYCLES 3'd4
/* FP instruction is double precision if bit 4 is set. We're a 32-bit
implementation thus do not support double precision FP */
`define OR1200_FPUOP_DOUBLE_BIT 4
`define OR1200_FPUOP_ADD 8'b0000_0000
`define OR1200_FPUOP_SUB 8'b0000_0001
`define OR1200_FPUOP_MUL 8'b0000_0010
/verilog/components/wb_conbus/wb_conbus_top.v
369,7 → 369,7
//
 
wire [`mselectw -1:0] i_gnt_arb;
wire [2:0] gnt;
wire [2:0] gnt/* verilator public */;
reg [`sselectw -1:0] i_ssel_dec;
`ifdef WB_USE_TRISTATE
wire [`mbusw -1:0] i_bus_m;
639,7 → 639,7
//////////////////////////////////
// address decode logic
//
wire [7:0] m0_ssel_dec, m1_ssel_dec, m2_ssel_dec, m3_ssel_dec, m4_ssel_dec, m5_ssel_dec, m6_ssel_dec, m7_ssel_dec;
wire [7:0] m0_ssel_dec, m1_ssel_dec, m2_ssel_dec, m3_ssel_dec, m4_ssel_dec, m5_ssel_dec, m6_ssel_dec, m7_ssel_dec ;
always @(gnt, m0_ssel_dec, m1_ssel_dec, m2_ssel_dec, m3_ssel_dec, m4_ssel_dec, m5_ssel_dec, m6_ssel_dec, m7_ssel_dec)
case(gnt)
3'h0: i_ssel_dec = m0_ssel_dec;
762,4 → 762,170
//assign i_ssel_dec[7] = (i_bus_m[`mbusw -1 : `mbusw - s27_addr_w ] == s7_addr);
 
 
`ifdef verilator
// Access functions for verilator, hardcoded to dw=32, aw=32
 
// Master Signal Access functions
wire [`dw-1:0] m_dat_i[0:`mselectw-1] /* verilator public */;
assign m_dat_i[0] = m0_dat_i;
assign m_dat_i[1] = m1_dat_i;
assign m_dat_i[2] = m2_dat_i;
assign m_dat_i[3] = m3_dat_i;
assign m_dat_i[4] = m4_dat_i;
assign m_dat_i[5] = m5_dat_i;
assign m_dat_i[6] = m6_dat_i;
assign m_dat_i[7] = m7_dat_i;
wire [`dw-1:0] m_dat_o[0:`mselectw-1]/* verilator public */;
assign m_dat_o[0] = m0_dat_o;
assign m_dat_o[1] = m1_dat_o;
assign m_dat_o[2] = m2_dat_o;
assign m_dat_o[3] = m3_dat_o;
assign m_dat_o[4] = m4_dat_o;
assign m_dat_o[5] = m5_dat_o;
assign m_dat_o[6] = m6_dat_o;
assign m_dat_o[7] = m7_dat_o;
wire [`aw-1:0] m_adr_i[0:`mselectw-1]/* verilator public */;
assign m_adr_i[0] = m0_adr_i;
assign m_adr_i[1] = m1_adr_i;
assign m_adr_i[2] = m2_adr_i;
assign m_adr_i[3] = m3_adr_i;
assign m_adr_i[4] = m4_adr_i;
assign m_adr_i[5] = m5_adr_i;
assign m_adr_i[6] = m6_adr_i;
assign m_adr_i[7] = m7_adr_i;
wire [`sw-1:0] m_sel_i[0:`mselectw-1]/* verilator public */;
assign m_sel_i[0] = m0_sel_i;
assign m_sel_i[1] = m1_sel_i;
assign m_sel_i[2] = m2_sel_i;
assign m_sel_i[3] = m3_sel_i;
assign m_sel_i[4] = m4_sel_i;
assign m_sel_i[5] = m5_sel_i;
assign m_sel_i[6] = m6_sel_i;
assign m_sel_i[7] = m7_sel_i;
wire [`mselectw-1:0] m_we_i/* verilator public */;
assign m_we_i[0] = m0_we_i;
assign m_we_i[1] = m1_we_i;
assign m_we_i[2] = m2_we_i;
assign m_we_i[3] = m3_we_i;
assign m_we_i[4] = m4_we_i;
assign m_we_i[5] = m5_we_i;
assign m_we_i[6] = m6_we_i;
assign m_we_i[7] = m7_we_i;
wire [`mselectw-1:0] m_cyc_i/* verilator public */;
assign m_cyc_i[0] = m0_cyc_i;
assign m_cyc_i[1] = m1_cyc_i;
assign m_cyc_i[2] = m2_cyc_i;
assign m_cyc_i[3] = m3_cyc_i;
assign m_cyc_i[4] = m4_cyc_i;
assign m_cyc_i[5] = m5_cyc_i;
assign m_cyc_i[6] = m6_cyc_i;
assign m_cyc_i[7] = m7_cyc_i;
wire [`mselectw-1:0] m_stb_i/* verilator public */;
assign m_stb_i[0] = m0_stb_i;
assign m_stb_i[1] = m1_stb_i;
assign m_stb_i[2] = m2_stb_i;
assign m_stb_i[3] = m3_stb_i;
assign m_stb_i[4] = m4_stb_i;
assign m_stb_i[5] = m5_stb_i;
assign m_stb_i[6] = m6_stb_i;
assign m_stb_i[7] = m7_stb_i;
wire [`mselectw-1:0] m_ack_o/* verilator public */;
assign m_ack_o[0] = m0_ack_o;
assign m_ack_o[1] = m1_ack_o;
assign m_ack_o[2] = m2_ack_o;
assign m_ack_o[3] = m3_ack_o;
assign m_ack_o[4] = m4_ack_o;
assign m_ack_o[5] = m5_ack_o;
assign m_ack_o[6] = m6_ack_o;
assign m_ack_o[7] = m7_ack_o;
wire [`mselectw-1:0] m_err_o/* verilator public */;
assign m_err_o[0] = m0_err_o;
assign m_err_o[1] = m1_err_o;
assign m_err_o[2] = m2_err_o;
assign m_err_o[3] = m3_err_o;
assign m_err_o[4] = m4_err_o;
assign m_err_o[5] = m5_err_o;
assign m_err_o[6] = m6_err_o;
assign m_err_o[7] = m7_err_o;
 
wire [7:0] m_ssel_dec [0:7]/* verilator public*/;
assign m_ssel_dec[0] = m0_ssel_dec;
assign m_ssel_dec[1] = m1_ssel_dec;
assign m_ssel_dec[2] = m2_ssel_dec;
assign m_ssel_dec[3] = m3_ssel_dec;
assign m_ssel_dec[4] = m4_ssel_dec;
assign m_ssel_dec[5] = m5_ssel_dec;
assign m_ssel_dec[6] = m6_ssel_dec;
assign m_ssel_dec[7] = m7_ssel_dec;
 
// Arbiter's grant signal
function [2:0] get_gnt;
// verilator public
get_gnt = gnt;
endfunction
 
function [31:0] get_m_dat_i;
// verilator public
input [2:0] mast_no;
get_m_dat_i = m_dat_i[mast_no];
endfunction // get_m_dat_i
function [31:0] get_m_dat_o;
// verilator public
input [2:0] mast_no;
get_m_dat_o = m_dat_o[mast_no];
endfunction // get_m_dat_o
function [31:0] get_m_adr_i;
// verilator public
input [2:0] mast_no;
get_m_adr_i = m_adr_i[mast_no];
endfunction // get_m_adr_i
function [3:0] get_m_sel_i;
// verilator public
input [2:0] mast_no;
get_m_sel_i = m_sel_i[mast_no];
endfunction // get_m_sel_i
function get_m_we_i;
// verilator public
input [2:0] mast_no;
get_m_we_i = m_we_i[mast_no];
endfunction // get_m_we_i
function get_m_cyc_i;
// verilator public
input [2:0] mast_no;
get_m_cyc_i = m_cyc_i[mast_no];
endfunction // get_m_cyc_i
function get_m_stb_i;
// verilator public
input [2:0] mast_no;
get_m_stb_i = m_stb_i[mast_no];
endfunction // get_m_stb_i
function get_m_ack_o;
// verilator public
input [2:0] mast_no;
get_m_ack_o = m_ack_o[mast_no];
endfunction // get_m_ack_o
function get_m_err_o;
// verilator public
input [2:0] mast_no;
get_m_err_o = m_err_o[mast_no];
endfunction // get_m_err_o
// Decoded slave for each master's access
function [7:0] get_m_ssel_dec;
// verilator public
input [2:0] mast_no;
get_m_ssel_dec = m_ssel_dec[mast_no];
endfunction
`endif
endmodule
/verilog/components/debug_if/dbg_cpu.v
280,7 → 280,7
dr[31:0] <= #1 input_data[31:0];
latch_data <= #1 1'b1;
end
else
else if (enable)
begin
dr[31:0] <= #1 {dr[30:0], 1'b0};
latch_data <= #1 1'b0;
/verilog/components/or1200r2/or1200_du.v
1111,6 → 1111,10
case (dcr0[`OR1200_DU_DCR_CT]) // synopsys parallel_case
3'b000: match_cond0_stb = 1'b0; //comparison disabled
3'b001: match_cond0_stb = 1'b1; // insn fetch EA
3'b010: match_cond0_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b011: match_cond0_stb = dcpu_cycstb_i & dcpu_we_i;// store
3'b100: match_cond0_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b101: match_cond0_stb = dcpu_cycstb_i & dcpu_we_i;// store
default:match_cond0_stb = dcpu_cycstb_i; // any load/store
endcase
 
1185,7 → 1189,11
case (dcr1[`OR1200_DU_DCR_CT]) // synopsys parallel_case
3'b000: match_cond1_stb = 1'b0; //comparison disabled
3'b001: match_cond1_stb = 1'b1; // insn fetch EA
default:match_cond1_stb = dcpu_cycstb_i; // any load/store
3'b010: match_cond1_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b011: match_cond1_stb = dcpu_cycstb_i & dcpu_we_i;// store
3'b100: match_cond1_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b101: match_cond1_stb = dcpu_cycstb_i & dcpu_we_i;// store
default:match_cond1_stb = dcpu_cycstb_i; // any load/store
endcase
 
//
1252,6 → 1260,11
case (dcr2[`OR1200_DU_DCR_CT]) // synopsys parallel_case
3'b000: match_cond2_stb = 1'b0; //comparison disabled
3'b001: match_cond2_stb = 1'b1; // insn fetch EA
3'b010: match_cond2_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b011: match_cond2_stb = dcpu_cycstb_i & dcpu_we_i;// store
3'b100: match_cond2_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b101: match_cond2_stb = dcpu_cycstb_i & dcpu_we_i;// store
 
default:match_cond2_stb = dcpu_cycstb_i; // any load/store
endcase
 
1320,6 → 1333,11
case (dcr3[`OR1200_DU_DCR_CT]) // synopsys parallel_case
3'b000: match_cond3_stb = 1'b0; //comparison disabled
3'b001: match_cond3_stb = 1'b1; // insn fetch EA
3'b010: match_cond3_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b011: match_cond3_stb = dcpu_cycstb_i & dcpu_we_i;// store
3'b100: match_cond3_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b101: match_cond3_stb = dcpu_cycstb_i & dcpu_we_i;// store
 
default:match_cond3_stb = dcpu_cycstb_i; // any load/store
endcase
 
1388,6 → 1406,11
case (dcr4[`OR1200_DU_DCR_CT]) // synopsys parallel_case
3'b000: match_cond4_stb = 1'b0; //comparison disabled
3'b001: match_cond4_stb = 1'b1; // insn fetch EA
3'b010: match_cond4_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b011: match_cond4_stb = dcpu_cycstb_i & dcpu_we_i;// store
3'b100: match_cond4_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b101: match_cond4_stb = dcpu_cycstb_i & dcpu_we_i;// store
 
default:match_cond4_stb = dcpu_cycstb_i; // any load/store
endcase
 
1457,6 → 1480,11
case (dcr5[`OR1200_DU_DCR_CT]) // synopsys parallel_case
3'b000: match_cond5_stb = 1'b0; //comparison disabled
3'b001: match_cond5_stb = 1'b1; // insn fetch EA
3'b010: match_cond5_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b011: match_cond5_stb = dcpu_cycstb_i & dcpu_we_i;// store
3'b100: match_cond5_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b101: match_cond5_stb = dcpu_cycstb_i & dcpu_we_i;// store
 
default:match_cond5_stb = dcpu_cycstb_i; // any load/store
endcase
 
1525,6 → 1553,11
case (dcr6[`OR1200_DU_DCR_CT]) // synopsys parallel_case
3'b000: match_cond6_stb = 1'b0; //comparison disabled
3'b001: match_cond6_stb = 1'b1; // insn fetch EA
3'b010: match_cond6_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b011: match_cond6_stb = dcpu_cycstb_i & dcpu_we_i;// store
3'b100: match_cond6_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b101: match_cond6_stb = dcpu_cycstb_i & dcpu_we_i;// store
 
default:match_cond6_stb = dcpu_cycstb_i; // any load/store
endcase
 
1594,6 → 1627,11
case (dcr7[`OR1200_DU_DCR_CT]) // synopsys parallel_case
3'b000: match_cond7_stb = 1'b0; //comparison disabled
3'b001: match_cond7_stb = 1'b1; // insn fetch EA
3'b010: match_cond7_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b011: match_cond7_stb = dcpu_cycstb_i & dcpu_we_i;// store
3'b100: match_cond7_stb = dcpu_cycstb_i & ~dcpu_we_i;// load
3'b101: match_cond7_stb = dcpu_cycstb_i & dcpu_we_i;// store
 
default:match_cond7_stb = dcpu_cycstb_i; // any load/store
endcase
/verilog/components/or1200r2/or1200_ctrl.v
684,9 → 684,6
`ifdef OR1200_MAC_IMPLEMENTED
`OR1200_OR32_MACMSB,
`endif
`ifdef OR1200_FPU_IMPLEMENTED
`OR1200_OR32_FLOAT,
`endif
`OR1200_OR32_SW,
`OR1200_OR32_SB,
`OR1200_OR32_SH,
697,7 → 694,13
`endif
`OR1200_OR32_NOP:
except_illegal <= #1 1'b0;
`ifdef OR1200_FPU_IMPLEMENTED
`OR1200_OR32_FLOAT:
/* Check it's not a double instruction */
except_illegal <= #1 id_insn[`OR1200_FPUOP_DOUBLE_BIT];
`endif
 
 
// Illegal and OR1200 unsupported instructions
default:
except_illegal <= #1 1'b1;
1115,6 → 1118,9
sig_trap <= #1 (id_insn[31:23] == {`OR1200_OR32_XSYNC, 3'b010})
| du_hwbkpt;
end
else if (!sig_trap)
sig_trap <= #1 du_hwbkpt; // Added jb 091220 - because hw data load/store EA bkpts weren't getting triggered
end
 
endmodule
/verilog/orpsoc_top.v
679,7 → 679,7
`else // !`ifdef USE_SDRAM
parameter ram_wb_dat_width = 32;
parameter ram_wb_adr_width = 24;
parameter ram_wb_adr_width = 25;
//parameter ram_wb_mem_size = 2097152; // 8MB
parameter ram_wb_mem_size = 8388608; // 32MB -- for linux test
 

powered by: WebSVN 2.1.0

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