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

Subversion Repositories dbg_interface

[/] [dbg_interface/] [tags/] [sdram_test_working/] [rtl/] [verilog/] [dbg_registers.v] - Diff between revs 20 and 44

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 20 Rev 44
Line 43... Line 43...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// Revision 1.5  2001/11/26 10:47:09  mohor
 
// Crc generation is different for read or write commands. Small synthesys fixes.
 
//
// Revision 1.4  2001/10/19 11:40:02  mohor
// Revision 1.4  2001/10/19 11:40:02  mohor
// dbg_timescale.v changed to timescale.v This is done for the simulation of
// dbg_timescale.v changed to timescale.v This is done for the simulation of
// few different cores in a single project.
// few different cores in a single project.
//
//
// Revision 1.3  2001/10/15 09:55:47  mohor
// Revision 1.3  2001/10/15 09:55:47  mohor
Line 73... Line 76...
// synopsys translate_off
// synopsys translate_off
`include "timescale.v"
`include "timescale.v"
// synopsys translate_on
// synopsys translate_on
`include "dbg_defines.v"
`include "dbg_defines.v"
 
 
module dbg_registers(DataIn, DataOut, Address, RW, Access, Clk, Bp, Reset,
module dbg_registers(data_in, data_out, address, rw, access, clk, bp, reset,
                     `ifdef TRACE_ENABLED
                     `ifdef TRACE_ENABLED
                     ContinMode,
                     ContinMode,
                     TraceEnable, WpTrigger, BpTrigger, LSSTrigger,
                     TraceEnable, WpTrigger, BpTrigger, LSSTrigger,
                     ITrigger, TriggerOper, WpQualif, BpQualif, LSSQualif, IQualif,
                     ITrigger, TriggerOper, WpQualif, BpQualif, LSSQualif, IQualif,
                     QualifOper, RecordPC, RecordLSEA, RecordLDATA,
                     QualifOper, RecordPC, RecordLSEA, RecordLDATA,
Line 85... Line 88...
                     WpTriggerValid, BpTriggerValid, LSSTriggerValid, ITriggerValid,
                     WpTriggerValid, BpTriggerValid, LSSTriggerValid, ITriggerValid,
                     WpQualifValid, BpQualifValid, LSSQualifValid, IQualifValid,
                     WpQualifValid, BpQualifValid, LSSQualifValid, IQualifValid,
                     WpStop, BpStop, LSSStop, IStop, StopOper, WpStopValid, BpStopValid,
                     WpStop, BpStop, LSSStop, IStop, StopOper, WpStopValid, BpStopValid,
                     LSSStopValid, IStopValid,
                     LSSStopValid, IStopValid,
                     `endif
                     `endif
                     RiscStall, RiscReset
                     risc_stall, risc_reset
                    );
                    );
 
 
parameter Tp = 1;
parameter Tp = 1;
 
 
input [31:0] DataIn;
input [31:0] data_in;
input [4:0] Address;
input [4:0] address;
 
 
input RW;
input rw;
input Access;
input access;
input Clk;
input clk;
input Bp;
input bp;
input Reset;
input reset;
 
 
output [31:0] DataOut;
output [31:0] data_out;
reg    [31:0] DataOut;
reg    [31:0] data_out;
 
 
`ifdef TRACE_ENABLED
`ifdef TRACE_ENABLED
  output ContinMode;
  output ContinMode;
  output TraceEnable;
  output TraceEnable;
 
 
Line 148... Line 151...
  output RecordReadSPR;
  output RecordReadSPR;
  output RecordWriteSPR;
  output RecordWriteSPR;
  output RecordINSTR;
  output RecordINSTR;
`endif
`endif
 
 
  output RiscStall;
  output risc_stall;
  output RiscReset;
  output risc_reset;
 
 
  wire MODER_Acc =   (Address == `MODER_ADR)   & Access;
  wire MODER_Acc =   (address == `MODER_ADR)   & access;
  wire RISCOP_Acc =  (Address == `RISCOP_ADR)  & Access;
  wire RISCOP_Acc =  (address == `RISCOP_ADR)  & access;
`ifdef TRACE_ENABLED
`ifdef TRACE_ENABLED
  wire TSEL_Acc =    (Address == `TSEL_ADR)    & Access;
  wire TSEL_Acc =    (address == `TSEL_ADR)    & access;
  wire QSEL_Acc =    (Address == `QSEL_ADR)    & Access;
  wire QSEL_Acc =    (address == `QSEL_ADR)    & access;
  wire SSEL_Acc =    (Address == `SSEL_ADR)    & Access;
  wire SSEL_Acc =    (address == `SSEL_ADR)    & access;
  wire RECSEL_Acc =  (Address == `RECSEL_ADR)  & Access;
  wire RECSEL_Acc =  (address == `RECSEL_ADR)  & access;
`endif
`endif
 
 
 
 
  wire MODER_Wr =   MODER_Acc   &  RW;
  wire MODER_Wr =   MODER_Acc   &  rw;
  wire RISCOP_Wr =  RISCOP_Acc  &  RW;
  wire RISCOP_Wr =  RISCOP_Acc  &  rw;
`ifdef TRACE_ENABLED
`ifdef TRACE_ENABLED
  wire TSEL_Wr =    TSEL_Acc    &  RW;
  wire TSEL_Wr =    TSEL_Acc    &  rw;
  wire QSEL_Wr =    QSEL_Acc    &  RW;
  wire QSEL_Wr =    QSEL_Acc    &  rw;
  wire SSEL_Wr =    SSEL_Acc    &  RW;
  wire SSEL_Wr =    SSEL_Acc    &  rw;
  wire RECSEL_Wr =  RECSEL_Acc  &  RW;
  wire RECSEL_Wr =  RECSEL_Acc  &  rw;
`endif
`endif
 
 
 
 
 
 
  wire MODER_Rd =   MODER_Acc   &  ~RW;
  wire MODER_Rd =   MODER_Acc   &  ~rw;
  wire RISCOP_Rd =  RISCOP_Acc  &  ~RW;
  wire RISCOP_Rd =  RISCOP_Acc  &  ~rw;
`ifdef TRACE_ENABLED
`ifdef TRACE_ENABLED
  wire TSEL_Rd =    TSEL_Acc    &  ~RW;
  wire TSEL_Rd =    TSEL_Acc    &  ~rw;
  wire QSEL_Rd =    QSEL_Acc    &  ~RW;
  wire QSEL_Rd =    QSEL_Acc    &  ~rw;
  wire SSEL_Rd =    SSEL_Acc    &  ~RW;
  wire SSEL_Rd =    SSEL_Acc    &  ~rw;
  wire RECSEL_Rd =  RECSEL_Acc  &  ~RW;
  wire RECSEL_Rd =  RECSEL_Acc  &  ~rw;
`endif
`endif
 
 
 
 
  wire [31:0] MODEROut;
  wire [31:0] MODEROut;
  wire [1:1]  RISCOPOut;
  wire [1:1]  RISCOPOut;
Line 202... Line 205...
  assign MODEROut[31:0] = 32'h0000;
  assign MODEROut[31:0] = 32'h0000;
`endif
`endif
 
 
 
 
  reg RiscStallBp;
  reg RiscStallBp;
  always @(posedge Clk or posedge Reset)
  always @(posedge clk or posedge reset)
  begin
  begin
    if(Reset)
    if(reset)
      RiscStallBp <= 1'b0;
      RiscStallBp <= 1'b0;
    else
    else
    if(Bp)                      // Breakpoint sets bit
    if(bp)                      // Breakpoint sets bit
      RiscStallBp <= 1'b1;
      RiscStallBp <= 1'b1;
    else
    else
    if(RISCOP_Wr)               // Register access can set or clear bit
    if(RISCOP_Wr)               // Register access can set or clear bit
      RiscStallBp <= DataIn[0];
      RiscStallBp <= data_in[0];
  end
  end
 
 
  dbg_register #(1)  RISCOP (.DataIn(DataIn[1]), .DataOut(RISCOPOut[1]), .Write(RISCOP_Wr),   .Clk(Clk), .Reset(Reset), .Default(1'b0));
  dbg_register #(1)  RISCOP (.data_in(data_in[1]), .data_out(RISCOPOut[1]), .write(RISCOP_Wr),   .clk(clk), .reset(reset), .defaulty(1'b0));
 
 
 
 
`ifdef TRACE_ENABLED
`ifdef TRACE_ENABLED
  dbg_register #(2)  MODER  (.DataIn(DataIn[17:16]), .DataOut(MODEROut[17:16]), .Write(MODER_Wr),   .Clk(Clk), .Reset(Reset), .Default(`MODER_DEF));
  dbg_register #(2)  MODER  (.data_in(data_in[17:16]), .data_out(MODEROut[17:16]), .write(MODER_Wr),   .clk(clk), .reset(reset), .defaulty(`MODER_DEF));
  dbg_register #(32) TSEL   (.DataIn(DataIn),      .DataOut(TSELOut),    .Write(TSEL_Wr),    .Clk(Clk), .Reset(Reset), .Default(`TSEL_DEF));
  dbg_register #(32) TSEL   (.data_in(data_in),      .data_out(TSELOut),    .write(TSEL_Wr),    .clk(clk), .reset(reset), .defaulty(`TSEL_DEF));
  dbg_register #(32) QSEL   (.DataIn(DataIn),      .DataOut(QSELOut),    .Write(QSEL_Wr),    .Clk(Clk), .Reset(Reset), .Default(`QSEL_DEF));
  dbg_register #(32) QSEL   (.data_in(data_in),      .data_out(QSELOut),    .write(QSEL_Wr),    .clk(clk), .reset(reset), .defaulty(`QSEL_DEF));
  dbg_register #(32) SSEL   (.DataIn(DataIn),      .DataOut(SSELOut),    .Write(SSEL_Wr),    .Clk(Clk), .Reset(Reset), .Default(`SSEL_DEF));
  dbg_register #(32) SSEL   (.data_in(data_in),      .data_out(SSELOut),    .write(SSEL_Wr),    .clk(clk), .reset(reset), .defaulty(`SSEL_DEF));
  dbg_register #(7) RECSEL  (.DataIn(DataIn[6:0]), .DataOut(RECSELOut),  .Write(RECSEL_Wr),  .Clk(Clk), .Reset(Reset), .Default(`RECSEL_DEF));
  dbg_register #(7) RECSEL  (.data_in(data_in[6:0]), .data_out(RECSELOut),  .write(RECSEL_Wr),  .clk(clk), .reset(reset), .defaulty(`RECSEL_DEF));
`endif
`endif
 
 
 
 
 
 
always @ (posedge Clk)
always @ (posedge clk)
begin
begin
  if(MODER_Rd)    DataOut<= #Tp MODEROut;
  if(MODER_Rd)    data_out<= #Tp MODEROut;
  else
  else
  if(RISCOP_Rd)   DataOut<= #Tp {30'h0, RISCOPOut[1], RiscStall};
  if(RISCOP_Rd)   data_out<= #Tp {30'h0, RISCOPOut[1], risc_stall};
`ifdef TRACE_ENABLED
`ifdef TRACE_ENABLED
  else
  else
  if(TSEL_Rd)     DataOut<= #Tp TSELOut;
  if(TSEL_Rd)     data_out<= #Tp TSELOut;
  else
  else
  if(QSEL_Rd)     DataOut<= #Tp QSELOut;
  if(QSEL_Rd)     data_out<= #Tp QSELOut;
  else
  else
  if(SSEL_Rd)     DataOut<= #Tp SSELOut;
  if(SSEL_Rd)     data_out<= #Tp SSELOut;
  else
  else
  if(RECSEL_Rd)   DataOut<= #Tp {25'h0, RECSELOut};
  if(RECSEL_Rd)   data_out<= #Tp {25'h0, RECSELOut};
`endif
`endif
  else            DataOut<= #Tp 'h0;
  else            data_out<= #Tp 'h0;
end
end
 
 
`ifdef TRACE_ENABLED
`ifdef TRACE_ENABLED
  assign TraceEnable       = MODEROut[16];
  assign TraceEnable       = MODEROut[16];
  assign ContinMode        = MODEROut[17];
  assign ContinMode        = MODEROut[17];
Line 289... Line 292...
  assign RecordReadSPR      = RECSELOut[4];
  assign RecordReadSPR      = RECSELOut[4];
  assign RecordWriteSPR     = RECSELOut[5];
  assign RecordWriteSPR     = RECSELOut[5];
  assign RecordINSTR        = RECSELOut[6];
  assign RecordINSTR        = RECSELOut[6];
`endif
`endif
 
 
  assign RiscStall          = Bp | RiscStallBp;   // Bp asynchronously sets the RiscStall, then RiscStallBp (from register) holds it active
  assign risc_stall          = bp | RiscStallBp;   // bp asynchronously sets the risc_stall, then RiscStallBp (from register) holds it active
  assign RiscReset          = RISCOPOut[1];
  assign risc_reset          = RISCOPOut[1];
 
 
endmodule
endmodule
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

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