if ( (INP.pframenn !== 1'b0) ) begin
CNTRL.r_pad_pclk <= #(0) `false;
CNTRL.r_pd_pclk <= #(0) `false;
CNTRL.r_pcxbenn_pclk <= #(0) `false;
CNTRL.r_pbenn_pclk <= #(0) `false;
CNTRL.r_pframenn_pclk <= #(0) `false;
CNTRL.r_preq64nn_pclk <= #(0) `false;
CNTRL.r_pidsel_pclk <= #(0) `false;
CNTRL.r_ppar_pclk <= #(0) `false;
CNTRL.r_ppar64_pclk <= #(0) `false;
CNTRL.r_pirdynn_pclk <= #(0) `false;
CNTRL.r_plocknn_pclk <= #(0) `false;
CNTRL.r_psbonn_pclk <= #(0) `false;
CNTRL.r_psdone_pclk <= #(0) `false;
end // if
end else begin
CNTRL.r_pad_pclk <= #(0) `false; // Miss
CNTRL.r_pd_pclk <= #(0) `false;
CNTRL.r_pcxbenn_pclk <= #(0) `false;
CNTRL.r_pbenn_pclk <= #(0) `false;
CNTRL.r_pframenn_pclk <= #(0) `false;
CNTRL.r_preq64nn_pclk <= #(0) `false;
CNTRL.r_pidsel_pclk <= #(0) `false;
CNTRL.r_ppar_pclk <= #(0) `false;
CNTRL.r_ppar64_pclk <= #(0) `false;
CNTRL.r_pirdynn_pclk <= #(0) `false;
CNTRL.r_plocknn_pclk <= #(0) `false;
CNTRL.r_psbonn_pclk <= #(0) `false;
CNTRL.r_psdone_pclk <= #(0) `false;
end // if
end
endtask // update_timing_flags;
//------------
// EXECUTER --
//------------
task executer;
begin
if (!((msg_level<debug_3))) begin
$display("NOTE at %0t from %m",$time);
$write(" \"EXECUTER: ");
$display("\"");
end
if ( initialize ) begin
tristate_pins;
initialize = `false;
end // if
if ( INP.prstnn === 1'b1 && first_reset ) begin
if ( INP.pclk_event && INP.pclk === 1'b1 ) begin
hit_maker;
parity_maker;
ready_maker;
parity_checker;
lock_enable;
bus_state;
gen_output;
update_status;
update_timing_flags;
if ( msg_level > debug_1 ) begin
trace_slave;
end // if
end // if
end else if ( INP.prstnn === 1'b0 ) begin
if ( INP.prstnn_event ) begin
if ( (! first_reset) ) begin
first_reset = `true;
init_slave;
end // if
if ( (is_first) ) begin
get_nxt_cmd;
end // if
reset_slave;
report_slave;
end // if
end // if
if ( new_cmd_f && (ctrl_queue_size === 0) ) begin
get_nxt_cmd;
if ( (curr_cmd[incode1:incode2] === `request_cmd) ) begin
if ( ! is_first ) begin
new_cmd_f = `true;
end // if
request;
end // if
end // if
end
endtask // executer;
//**--**--**--**--**--**--**--**-- Executer Declarations USER CODE END
//------------------
// EXE_USER_IMMED --
//------------------
task exe_user_immed;
input [fm_data_in1:fm_data_in2] cmd;
//**--**--**--**--**--**--**--**-- exe_user_immed USER CODE BEGIN
begin
if (!((msg_level<debug_3))) begin
$display("NOTE at %0t from %m",$time);
$write(" \"EXE_USER_IMMED: Executing ");
$write("%s",cmd2string(cmd[incode1:incode2]));
$display("\"");
end
case ( cmd[incode1:incode2] )
`configure_cmd : begin
configure(cmd);
end
default begin /* null */
if (!((msg_level<warnings))) begin
$display("WARNING at %0t from %m",$time);
$write(" \"EXE_USER_IMMED: INVALID command code");
$display("\"");
end
end
endcase
//**--**--**--**--**--**--**--**-- exe_user_immed USER CODE END
end
endtask // exe_user_immed;
//------------
// USER_RTE --
//------------
//contains user-portion of functionality for rte command
//called when rte command is executed by controller
task user_rte;
//**--**--**--**--**--**--**--**-- user_rte USER CODE BEGIN
begin
if (!((msg_level<debug_3))) begin
$display("NOTE at %0t from %m",$time);
$write(" \"USER_RTE: ");
$display("\"");
end
//**--**--**--**--**--**--**--**-- user_rte USER CODE END
end
endtask // user_rte;
//====================================--
// END EXECUTER SECTION --
//====================================--
// End FM_MAIN Process Declaration Region --
//--- FM MAIN PROCESS -----
always begin : fm_main
if ( init ) begin
CNTRL.pad <= #(0) `true; // initialize timing checks
CNTRL.pad_in <= #(0) `true;
CNTRL.r_pad_pclk <= #(0) `false;
CNTRL.pcxbenn <= #(0) `true;
CNTRL.r_pcxbenn_pclk <= #(0) `false;
CNTRL.ppar <= #(0) `true;
CNTRL.ppar_in <= #(0) `true;
CNTRL.r_ppar_pclk <= #(0) `false;
CNTRL.pframenn <= #(0) `true;
CNTRL.r_pframenn_pclk <= #(0) `false;
CNTRL.ptrdynn <= #(0) `true;
CNTRL.ptrdynn_in <= #(0) `true;
CNTRL.r_ptrdynn_pclk <= #(0) `false;
CNTRL.pirdynn <= #(0) `true;
CNTRL.r_pirdynn_pclk <= #(0) `false;
CNTRL.pstopnn <= #(0) `true;
CNTRL.pstopnn_in <= #(0) `true;
CNTRL.r_pstopnn_pclk <= #(0) `false;
CNTRL.pdevselnn <= #(0) `true;
CNTRL.pidsel <= #(0) `true;
CNTRL.r_pidsel_pclk <= #(0) `false;
CNTRL.psbonn <= #(0) `true;
CNTRL.r_psbonn_pclk <= #(0) `false;
CNTRL.psdone <= #(0) `true;
CNTRL.r_psdone_pclk <= #(0) `false;
CNTRL.pclk <= #(0) `true;
CNTRL.ck_pclk <= #(0) `true;
CNTRL.prstnn <= #(0) `true;
CNTRL.ck_prstnn <= #(0) `true;
CNTRL.pd <= #(0) `true;
CNTRL.pd_in <= #(0) `true;
CNTRL.r_pd_pclk <= #(0) `false;
CNTRL.pbenn <= #(0) `true;
CNTRL.r_pbenn_pclk <= #(0) `false;
CNTRL.ppar64 <= #(0) `true;
CNTRL.ppar64_in <= #(0) `true;
CNTRL.r_ppar64_pclk <= #(0) `false;
CNTRL.preq64nn <= #(0) `true;
CNTRL.r_preq64nn_pclk <= #(0) `false;
CNTRL.pack64nn <= #(0) `true;
CNTRL.plocknn <= #(0) `true;
CNTRL.r_plocknn_pclk <= #(0) `false;
CNTRL.pperrnn <= #(0) `true;
CNTRL.pserrnn <= #(0) `true;
init = `false;
`ifdef no_pli
// no code
`else
`ifdef paged
$lmv_mempage_declare("cfg_head",0,31,0,1);
$lmv_mempage_declare("mem_head",0,31,0,536870912);
$lmv_mempage_declare("io_head",0,31,0,536870912);
`else
$lmv_memory_declare("cfg_head",0,31,0,536870912);
$lmv_memory_declare("mem_head",0,31,0,536870912);
$lmv_memory_declare("io_head",0,31,0,536870912);
`endif
`endif
// cmd_mem = new cmd_mem_arr_type[1 : 100];
end // if
receiver;
controller;
//**--**--**--**--**--**--**--**-- Executer CALL or STATEMENTS USER CODE BEGIN
executer;
//**--**--**--**--**--**--**--**-- Executer CALL or STATEMENTS USER CODE END
dispatcher;
INP.pad_old = INP.pad;
INP.pcxbenn_old = INP.pcxbenn;
INP.ppar_old = INP.ppar;
INP.pframenn_old = INP.pframenn;
INP.ptrdynn_old = INP.ptrdynn;
INP.pirdynn_old = INP.pirdynn;
INP.pstopnn_old = INP.pstopnn;
INP.pidsel_old = INP.pidsel;
INP.psbonn_old = INP.psbonn;
INP.psdone_old = INP.psdone;
INP.pclk_old = INP.pclk;
INP.prstnn_old = INP.prstnn;
INP.pd_old = INP.pd;
INP.pbenn_old = INP.pbenn;
INP.ppar64_old = INP.ppar64;
INP.preq64nn_old = INP.preq64nn;
INP.plocknn_old = INP.plocknn;
@(posedge INP.pad_event or posedge INP.pcxbenn_event or posedge INP.ppar_event
or posedge INP.pframenn_event or posedge INP.ptrdynn_event or posedge INP.pirdynn_event
or posedge INP.pstopnn_event or posedge INP.pidsel_event or posedge INP.psbonn_event
or posedge INP.psdone_event or posedge INP.pclk_event or posedge INP.prstnn_event
or posedge INP.pd_event or posedge INP.pbenn_event or posedge INP.ppar64_event
or posedge INP.preq64nn_event or posedge INP.plocknn_event
or fm_cmd or lmcver.cb or lmcver.cb_ack
or posedge cb_initiator_id_event or posedge cb_ack_event or posedge fm_cmd_strobe_event
or posedge check_cb_ack_event);
end // fm_main
endmodule // fm
| This page: |
Created: | Thu Aug 19 12:02:09 1999 |
| From: |
../../../sparc_v8/system/lmc/rtl/pcislave_fm.v
|