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

Subversion Repositories ao486

[/] [ao486/] [trunk/] [rtl/] [ao486/] [autogen/] [exception.v] - Rev 2

Compare with Previous | Blame | View Log

//======================================================== conditions
wire cond_0 = exception_init || wr_debug_init;
wire cond_1 = ~(class_trap) && ~(class_abort);
wire cond_2 = wr_is_esp_speculative;
wire cond_3 = vector != `EXCEPTION_DB;
wire cond_4 = vector == `EXCEPTION_DB;
wire cond_5 = wr_debug_init && ~(wr_string_in_progress_final);
wire cond_6 = wr_debug_init && wr_string_in_progress_final;
wire cond_7 = shutdown_start == `FALSE && count > 2'd0 && exception_type != `EXCEPTION_TYPE_DOUBLE_FAULT && (
        (last_type == `EXCEPTION_TYPE_CONTRIBUTORY && exception_type == `EXCEPTION_TYPE_CONTRIBUTORY) ||
        (last_type == `EXCEPTION_TYPE_PAGE_FAULT   && exception_type == `EXCEPTION_TYPE_CONTRIBUTORY) ||
        (last_type == `EXCEPTION_TYPE_PAGE_FAULT   && exception_type == `EXCEPTION_TYPE_PAGE_FAULT));
wire cond_8 = shutdown_start == `FALSE;
wire cond_9 = shutdown_start;
wire cond_10 = shutdown;
wire cond_11 = interrupt_done;
//======================================================== saves
wire  exc_soft_int_to_reg =
    (cond_0 && ~cond_7 && cond_8)? (    `FALSE) :
    (cond_11)? (    `FALSE) :
    exc_soft_int;
wire  exc_push_error_to_reg =
    (cond_0 && ~cond_7 && cond_8)? ( push_error) :
    (cond_11)? ( `FALSE) :
    exc_push_error;
wire [1:0] count_to_reg =
    (cond_0 && ~cond_7 && cond_8)? (     count + 2'd1) :
    count;
wire [31:0] exc_eip_to_reg =
    (cond_0 && ~cond_1)? ( trap_eip) :
    (cond_0 && cond_4 && cond_5)? ( wr_eip) :
    (cond_0 && cond_4 && cond_6)? ( exception_eip_from_wr) :
    (cond_11)? ( (interrupt_string_in_progress)? exception_eip_from_wr : wr_eip) :
    exc_eip;
wire  external_to_reg =
    (cond_0)? ( `TRUE) :
    (cond_11)? ( `TRUE) :
    external;
wire [1:0] last_type_to_reg =
    (cond_0 && ~cond_7 && cond_8)? ( exception_type) :
    last_type;
wire [8:0] exc_vector_full_to_reg =
    (cond_0 && cond_7)? ( { 1'b1, `EXCEPTION_DF }) :
    (cond_0 && ~cond_7 && cond_8)? ( { 1'b0, vector }) :
    (cond_0 && cond_9)? ( { 1'b0, vector }) :
    (cond_11)? ( { 1'b0, interrupt_vector }) :
    exc_vector_full;
wire [15:0] exc_error_code_to_reg =
    (cond_0 && cond_7)? ( 16'd0) :
    (cond_0 && ~cond_7 && cond_8)? ( error_code) :
    (cond_11)? ( 16'd0) :
    exc_error_code;
wire  exc_soft_int_ib_to_reg =
    (cond_0 && ~cond_7 && cond_8)? ( `FALSE) :
    (cond_11)? ( `FALSE) :
    exc_soft_int_ib;
wire  shutdown_to_reg =
    (cond_0 && cond_9)? ( `TRUE) :
    shutdown;
//======================================================== always
//======================================================== sets
assign exc_set_rflag =
    (cond_0 && cond_1 && cond_3)? (`TRUE) :
    1'd0;
assign exc_dec_reset =
    (cond_0)? (`TRUE) :
    (cond_10)? (`TRUE) :
    (cond_11)? (`TRUE) :
    1'd0;
assign exc_restore_esp =
    (cond_0 && cond_1 && cond_2)? (`TRUE) :
    1'd0;
assign exc_micro_reset =
    (cond_0)? (`TRUE) :
    (cond_10)? (`TRUE) :
    (cond_11)? (`TRUE) :
    1'd0;
assign exc_wr_reset =
    (cond_0)? (`TRUE) :
    (cond_10)? (`TRUE) :
    (cond_11)? (`TRUE) :
    1'd0;
assign exc_rd_reset =
    (cond_0)? (`TRUE) :
    (cond_10)? (`TRUE) :
    (cond_11)? (`TRUE) :
    1'd0;
assign exc_exe_reset =
    (cond_0)? (`TRUE) :
    (cond_10)? (`TRUE) :
    (cond_11)? (`TRUE) :
    1'd0;
assign exception_start =
    (cond_0 && ~cond_7 && cond_8)? (`TRUE) :
    1'd0;
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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