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

Subversion Repositories dbg_interface

[/] [dbg_interface/] [tags/] [sdram_test_working/] [rtl/] [verilog/] [dbg_trace.v] - Diff between revs 5 and 8

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

Rev 5 Rev 8
Line 43... Line 43...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// Revision 1.2  2001/09/18 14:13:47  mohor
 
// Trace fixed. Some registers changed, trace simplified.
 
//
// Revision 1.1.1.1  2001/09/13 13:49:19  mohor
// Revision 1.1.1.1  2001/09/13 13:49:19  mohor
// Initial official release.
// Initial official release.
//
//
// Revision 1.3  2001/06/01 22:22:35  mohor
// Revision 1.3  2001/06/01 22:22:35  mohor
// This is a backup. It is not a fully working version. Not for use, yet.
// This is a backup. It is not a fully working version. Not for use, yet.
Line 62... Line 65...
 
 
`include "dbg_timescale.v"
`include "dbg_timescale.v"
`include "dbg_defines.v"
`include "dbg_defines.v"
 
 
// module Trace
// module Trace
module dbg_trace (Wp, Bp, DataIn, OpSelect, LsStatus, IStatus, RiscStall,
module dbg_trace (Wp, Bp, DataIn, OpSelect, LsStatus, IStatus, RiscStall_O,
                  Mclk, Reset, TraceChain, ContinMode, TraceEnable,
                  Mclk, Reset, TraceChain, ContinMode, TraceEnable_reg,
                  WpTrigger, BpTrigger, LSSTrigger, ITrigger, TriggerOper, WpQualif,
                  WpTrigger, BpTrigger, LSSTrigger, ITrigger, TriggerOper, WpQualif,
                  BpQualif, LSSQualif, IQualif, QualifOper, RecordPC, RecordLSEA,
                  BpQualif, LSSQualif, IQualif, QualifOper, RecordPC, RecordLSEA,
                  RecordLDATA, RecordSDATA, RecordReadSPR, RecordWriteSPR,
                  RecordLDATA, RecordSDATA, RecordReadSPR, RecordWriteSPR,
                  RecordINSTR,
                  RecordINSTR,
                  WpTriggerValid, BpTriggerValid, LSSTriggerValid, ITriggerValid,
                  WpTriggerValid, BpTriggerValid, LSSTriggerValid, ITriggerValid,
Line 89... Line 92...
input        Reset;     // Reset
input        Reset;     // Reset
input        ReadBuffer;// Instruction for reading a sample from the Buffer
input        ReadBuffer;// Instruction for reading a sample from the Buffer
 
 
// from registers
// from registers
input ContinMode;
input ContinMode;
input TraceEnable;
input TraceEnable_reg;
 
 
input [10:0] WpTrigger;
input [10:0] WpTrigger;
input        BpTrigger;
input        BpTrigger;
input [3:0]  LSSTrigger;
input [3:0]  LSSTrigger;
input [1:0]  ITrigger;
input [1:0]  ITrigger;
Line 135... Line 138...
input IStopValid;
input IStopValid;
// end: from registers
// end: from registers
 
 
 
 
output [`OPSELECTWIDTH-1:0]  OpSelect; // Operation select (what kind of information is avaliable on the DataIn)
output [`OPSELECTWIDTH-1:0]  OpSelect; // Operation select (what kind of information is avaliable on the DataIn)
output        RiscStall;  // CPU stall (stalls the RISC)
output        RiscStall_O;  // CPU stall (stalls the RISC)
output [39:0] TraceChain; // Scan shain from the trace module
output [39:0] TraceChain; // Scan shain from the trace module
 
 
 
reg TraceEnable_d;
 
reg TraceEnable;
 
 
 
 
 
 
reg [`TRACECOUNTERWIDTH:0] Counter;
reg [`TRACECOUNTERWIDTH:0] Counter;
reg [`TRACECOUNTERWIDTH-1:0] WritePointer;
reg [`TRACECOUNTERWIDTH-1:0] WritePointer;
reg [`TRACECOUNTERWIDTH-1:0] ReadPointer;
reg [`TRACECOUNTERWIDTH-1:0] ReadPointer;
reg RiscStall;
reg RiscStall;
Line 242... Line 249...
/**********************************************************************************
/**********************************************************************************
*                                                                                 *
*                                                                                 *
*   Generation of the TriggerLatch                                                *
*   Generation of the TriggerLatch                                                *
*                                                                                 *
*                                                                                 *
**********************************************************************************/
**********************************************************************************/
wire Reset_TriggerLatch = Reset | TriggerLatch & ~TraceEnable;
always @(posedge Mclk or posedge Reset)
always @(posedge Mclk or posedge Reset_TriggerLatch)
 
begin
begin
  if(Reset_TriggerLatch)
  if(Reset)
 
    TriggerLatch<=#Tp 0;
 
  else
 
  if(TriggerLatch & ~TraceEnable)
    TriggerLatch<=#Tp 0;
    TriggerLatch<=#Tp 0;
  else
  else
  if(Trigger)
  if(Trigger)
    TriggerLatch<=#Tp 1;
    TriggerLatch<=#Tp 1;
end
end
 
 
 
 
 
 
 
 
 
/**********************************************************************************
 
*                                                                                 *
 
*   TraceEnable Synchronization                                                   *
 
*                                                                                 *
 
**********************************************************************************/
 
always @(posedge Mclk or posedge Reset)
 
begin
 
  if(Reset)
 
    begin
 
      TraceEnable_d<=#Tp 0;
 
      TraceEnable<=#Tp 0;
 
    end
 
  else
 
    begin
 
      TraceEnable_d<=#Tp TraceEnable_reg;
 
      TraceEnable<=#Tp TraceEnable_d;
 
    end
 
end
 
 
 
 
 
 
 
 
/**********************************************************************************
/**********************************************************************************
*                                                                                 *
*                                                                                 *
*   RiscStall, counter and pointers generation                                     *
*   RiscStall, counter and pointers generation                                     *
*                                                                                 *
*                                                                                 *
**********************************************************************************/
**********************************************************************************/
Line 271... Line 304...
wire WriteSample = IncrementPointer;
wire WriteSample = IncrementPointer;
 
 
wire Decrement = ReadBuffer & ~BufferEmpty & (~ContinMode | ContinMode & ~TraceEnable);
wire Decrement = ReadBuffer & ~BufferEmpty & (~ContinMode | ContinMode & ~TraceEnable);
wire CounterEn = IncrementCounter ^ Decrement;
wire CounterEn = IncrementCounter ^ Decrement;
 
 
wire ResetCpuStall;
wire SyncResetCpuStall;
wire ResetStallCounter;
wire ResetStallCounter;
reg BufferFull_q;
reg BufferFull_q;
reg BufferFull_2q;
reg BufferFull_2q;
 
 
reg Qualifier_mclk;
reg Qualifier_mclk;
Line 283... Line 316...
always @(posedge Mclk)
always @(posedge Mclk)
begin
begin
  Qualifier_mclk<=#Tp Qualifier;
  Qualifier_mclk<=#Tp Qualifier;
  BufferFull_q<=#Tp BufferFull;
  BufferFull_q<=#Tp BufferFull;
  BufferFull_2q<=#Tp BufferFull_q;
  BufferFull_2q<=#Tp BufferFull_q;
  RiscStall_q <=#Tp RiscStall;
  RiscStall_q <=#Tp RiscStall_O;
end
end
 
 
 
 
wire AsyncSetCpuStall = Qualifier & ~Qualifier_mclk & TriggerLatch | Qualifier_mclk & Trigger & ~TriggerLatch |
wire FirstCpuStall =    Qualifier & ~Qualifier_mclk & TriggerLatch              |
 
                        Qualifier_mclk & Trigger & ~TriggerLatch                |
                        Qualifier & Trigger & ~Qualifier_mclk & ~TriggerLatch;
                        Qualifier & Trigger & ~Qualifier_mclk & ~TriggerLatch;
 
 
 
 
wire SyncSetCpuStall = Qualifier_mclk & TriggerLatch &
//wire SyncSetCpuStall = Qualifier_mclk & TriggerLatch &
 
 
 
wire SyncSetCpuStall = RiscStall_O & ~RiscStall_q |
 
                        Qualifier_mclk & TriggerLatch &
                       (
                       (
                        (~ContinMode & ~BufferFull & ~BufferFull_q & StallCounter==`OPSELECTIONCOUNTER-1) |
                        (~ContinMode & ~BufferFull & ~BufferFull_q & StallCounter==`OPSELECTIONCOUNTER-1) |
                        (~ContinMode & ~BufferFull_q & BufferFull_2q & StallCounter==0)                   |
                        (~ContinMode & ~BufferFull_q & BufferFull_2q & StallCounter==0)                   |
                        ( ContinMode & StallCounter==`OPSELECTIONCOUNTER-1)
                        ( ContinMode & StallCounter==`OPSELECTIONCOUNTER-1)
                       );
                       );
 
 
assign ResetCpuStall = (
assign SyncResetCpuStall = (
                        (~ContinMode & ~BufferFull & ~BufferFull_q & StallCounter==`OPSELECTIONCOUNTER-2) |
                        (~ContinMode & ~BufferFull & ~BufferFull_q & StallCounter==`OPSELECTIONCOUNTER-2) |
                        (~ContinMode &  ~BufferFull & BufferFull_q & StallCounter==`OPSELECTIONCOUNTER-1) |
                        (~ContinMode &  ~BufferFull & BufferFull_q & StallCounter==`OPSELECTIONCOUNTER-1) |
                        ( ContinMode & StallCounter==`OPSELECTIONCOUNTER-2)
                        ( ContinMode & StallCounter==`OPSELECTIONCOUNTER-2)
                       ) | Reset;
                           );
 
 
 
assign RiscStall_O = FirstCpuStall | RiscStall;
 
 
 
 
always @(posedge Mclk or posedge Reset)
always @(posedge Mclk or posedge Reset)
begin
begin
  if(Reset)
  if(Reset)
Line 321... Line 360...
 
 
 
 
always @(posedge Mclk or posedge Reset)
always @(posedge Mclk or posedge Reset)
begin
begin
  if(Reset)
  if(Reset)
    begin
 
      WritePointer<=#Tp 0;
      WritePointer<=#Tp 0;
      ReadPointer<=#Tp 0;
 
    end
 
  else
  else
    begin
 
      if(IncrementPointer)
      if(IncrementPointer)
        WritePointer[`TRACECOUNTERWIDTH-1:0]<=#Tp WritePointer[`TRACECOUNTERWIDTH-1:0] + 1;
        WritePointer[`TRACECOUNTERWIDTH-1:0]<=#Tp WritePointer[`TRACECOUNTERWIDTH-1:0] + 1;
      // else igor !!! Probably else is missing here. Check it.
end
 
 
 
always @(posedge Mclk or posedge Reset)
 
begin
 
  if(Reset)
 
    ReadPointer<=#Tp 0;
 
  else
      if(Decrement & ~ContinMode | Decrement & ContinMode & ~TraceEnable)
      if(Decrement & ~ContinMode | Decrement & ContinMode & ~TraceEnable)
        ReadPointer[`TRACECOUNTERWIDTH-1:0]<=#Tp ReadPointer[`TRACECOUNTERWIDTH-1:0] + 1;
        ReadPointer[`TRACECOUNTERWIDTH-1:0]<=#Tp ReadPointer[`TRACECOUNTERWIDTH-1:0] + 1;
      else
      else
      if(ContinMode & IncrementPointer & (BufferFull | BufferFullDetected))
      if(ContinMode & IncrementPointer & (BufferFull | BufferFullDetected))
        ReadPointer[`TRACECOUNTERWIDTH-1:0]<=#Tp WritePointer[`TRACECOUNTERWIDTH-1:0] + 1;
        ReadPointer[`TRACECOUNTERWIDTH-1:0]<=#Tp WritePointer[`TRACECOUNTERWIDTH-1:0] + 1;
    end
    end
end
 
 
 
always @(posedge Mclk)
always @(posedge Mclk)
begin
begin
  if(~TraceEnable)
  if(~TraceEnable)
    BufferFullDetected<=#Tp 0;
    BufferFullDetected<=#Tp 0;
Line 348... Line 388...
  if(ContinMode & BufferFull)
  if(ContinMode & BufferFull)
    BufferFullDetected<=#Tp 1;
    BufferFullDetected<=#Tp 1;
end
end
 
 
 
 
always @(posedge Mclk or posedge AsyncSetCpuStall)
always @(posedge Mclk or posedge Reset)
begin
begin
  if(AsyncSetCpuStall)
  if(Reset)
    RiscStall<=#Tp 1;
    RiscStall<=#Tp 0;
 
  else
 
  if(SyncResetCpuStall)
 
    RiscStall<=#Tp 0;
  else
  else
  if(SyncSetCpuStall)
  if(SyncSetCpuStall)
    RiscStall<=#Tp 1;
    RiscStall<=#Tp 1;
  else
 
  if(ResetCpuStall)
 
    RiscStall<=#Tp 0;
 
end
end
 
 
 
 
always @(posedge Mclk)
always @(posedge Mclk)
begin
begin

powered by: WebSVN 2.1.0

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