[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[pci] Icarus Verilog vs. pci core.




I've fixed a few minor bugs in Icarus Verilog that were preventing
the pci core test bench from running. The current anonymous CVS
has these fixes. I've also fixed a questionable in:

    bench/verilog/wb_bus_mon.v (Patch at the end of this message)

I compile with this command file for Icarus Verilog:


    +incdir+$(PCI)/bench/verilog
    +incdir+$(PCI)/rtl/verilog

    +libdir-nocase+$(PCI)/bench/verilog
    +libdir-nocase+$(PCI)/rtl/verilog
    +libdir+$(XILINX)/verilog/src/unisims

    $(PCI)/bench/verilog/system.v

It runs for a while, but at the end of the regression test I
get the following error and $stop. Is this expected, or am I
going to need to start debugging this?

  test master 2 - Starting Memory Read, at           3570435000
  test master 1 - Starting Memory Read Line Multiple, at 
3570705000
  test master 1 - Starting Memory Read Line Multiple, at 
3571275000
  test master 2 - Starting Memory Read, at           3571935000
Signaled Target Abort bit not set in PCI Device Status register after 
read terminated with Target Abort
** VVP Stop(0) **
** Current simulation time is 3572045000 ticks.
 >

--
Steve Williams                "The woods are lovely, dark and deep.
steve at icarus.com           But I have promises to keep,
http://www.icarus.com         and lines to code before I sleep,
http://www.picturel.com       And lines to code before I sleep."

--- wb_bus_mon.v.orig   2002-08-13 04:03:51.000000000 -0700
+++ wb_bus_mon.v        2003-08-01 16:42:59.000000000 -0700
@@ -320,8 +320,10 @@ end // CAB_O monitor

  // address monitor for consecutive address bursts
  reg [`WB_ADDR_WIDTH:0] address ;
+reg [31:0]            ADDR_O_tmp;
  always@(posedge CLK_I or posedge RST_I)
-begin
+  begin
+     ADDR_O_tmp = ADDR_O + `WB_SEL_WIDTH;
      if (~CYC_O || ~CAB_O || RST_I)
          address <= {(`WB_ADDR_WIDTH + 1){1'b0}} ;
      else
@@ -329,7 +331,7 @@ begin
          if (STB_O && ACK_I)
          begin
              if (address[`WB_ADDR_WIDTH] == 1'b0)
-                address <= {1'b1, (ADDR_O + `WB_SEL_WIDTH)} ;
+                address <= {1'b1, ADDR_O_tmp} ;
              else
              begin
                  if ( address[(`WB_ADDR_WIDTH-1):0] != ADDR_O)
@@ -338,7 +340,7 @@ begin
                      $fdisplay(log_file_desc, "Consecutive address 
burst address incrementing incorrect") ;
                  end
                  else
-                    address <= {1'b1, (ADDR_O + `WB_SEL_WIDTH)} ;
+                    address <= {1'b1, ADDR_O_tmp} ;
              end
          end
      end

--
To unsubscribe from pci mailing list please visit http://www.opencores.org/mailinglists.shtml