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

Subversion Repositories xgate

[/] [xgate/] [trunk/] [README.txt] - Rev 89

Go to most recent revision | Compare with Previous | Blame | View Log

// 45678901234567890123456789012345678901234567890123456789012345678901234567890
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

November 21,2011
RTL - No Change

Code cleanup, converted tabs to blanks. Added code to instruction test to cover
a few base instructions that weren't being tested. Changed instance name of
semaphore registers from "bit" to "sbit" to be compatible with System Verilog.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

My current idea list for enhancements is:

Add to the software apps:
a - It should be possible to write software to emulate some simple hardware modules such as I2C, SPI and UART.
b - DMA controller software
c - Find open source C compiler for Xgate
d - ???

It would be interesting to integrate the Xgate with some of the other OpenCores peripheral modules. Again there would be some related software development for verification. The ultimate goal would be to to create full-blown drivers for these modules.
a - Integrate Xgate with I2C controller and develop software to support SMBus and PMBus protocols.
b - ???

Another interesting integration project would be to build a processor core with the OpenRISC as the host and the Xgate working as a co-processor. Some type of memory controller module would need to be developed so the Xgate could have some semiprivate RAM to run code from. Also a separate slave bus would be nice to isolate peripherals that could be managed mostly by the Xgate. Some software development would be required for both OpenRISC and Xgate to verify the functionality.

Develop hardware debug module. Survey Freescale debugger and other debugger specifications and develop hardware debugger/specification that can optionally be connected to the Xgate module. The debugger should be broken into at least two modules, one the actual debug interface and the second a flexible serial interface adaptor. There are already JTAG modules in the design database that I had thought might be used as one possible interface to the debugger. (A great project on it's own would be to develop a JTAG module that meets the latest JTAG specification including the single wire interface.)

Upgrade Xgate to the enhanced version that Freescale now ships. This includes an alternate register set so the Xgate can switch in a few cycles from a low priority interrupt to a higher priority interrupt and then return to the low priority interrupt process.

Improvements to the architecture to support high speed operation. The current code was developed in a piecemeal fashion without much pre-planing on the data path from/to RAM and the internal registers.

System Verilog class based constrained random verification environment.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

August 11,2010
RTL - No Change

Applications - Added the "application" directory to the "sw" directory. The
    first application code added is the SKIPJACK encrypt/decrypt function. This
    algorithm works on a 64 bit block of data and uses an 80 bit key. See the
    "sw/applications/skipjack/README.txt" file for more information.

Testbench - To aid in software development a simple debug module was added to
    the testbench. The debugger loads watchpoint addresses stored in RAM after
    the first RAM initialization. The debugger generates trigger signals that
    can be watched in the waveform viewer and captures a copy of the CPU
    registers at each trigger event. The watch point addresses are captured by
    the assembler and stored in RAM addresses reserved for the test bench.
    There are enable registers in the testbench that can enable or disable any
    of the eight individual watchpoints under testbench control. 

Doc - Made corrections to some of the example code in the detailed instruction
    descriptions.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

June 10,2010
RTL - No Change

Testbench - No Change.

Doc - Added descriptions for interrupt bypass registers. Added Appendix B for
    testbench description.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

May 18,2010
RTL - Fixed xlink synthesis warnings noted by Nachiket Jugade,
    missing else statment for chid_sm_ns line 393,
    missing default on shifter lines 2382 (Although all cases are covered).

Testbench - No Change.

Doc - No Change.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

May 13,2010
RTL - Code cleanup. Eliminated index [0] of "xgif" and "chan_req_i" output and
    input pins along with assoicated status and and control registers. This
    channel has never been usable.

Testbench - Changes to match changes in RTL .

Doc - No Change.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

May 12,2010
RTL - Added new control registers for interrupt bypass function. Out of reset
    all input interrupts are bypassed directly to the Xgate interrupt outputs.
    The interrupts are also disabled from effecting the Xgate till the bypass
    is disabled. The interrupt priority has been flipped so that now the lowest
    index input interrupt has the highest priority.

Testbench - Added semaphore register and read only registers to observe irq
    outputs of Xgate to testbench slave module. Added parameters to support new
    Xgate registers and testbench registers. Added new test to checkout
    bypass functionality and interrupt priority encoding.

Doc - Updated with additions of IRQ Bypass registers.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

Apr 22,2010
RTL - Fixed bug when entering DEBUG by command from the slave WISHBONE bus.
    All tests now pass when the RAM wait states are set from zero to four. Five
    wait states times out in simulation while running the last test which is
    a simple register test otherwise I expect it would pass.

Testbench - Many of the failures while testing wait states were due to fixed
    delays coded in the testbench. As necessary, delays were changed to be a
    function of a parameter that is based on the number of RAM wait states.

Doc - No change.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

Apr 5,2010
RTL - First pass at fixing bug when entering DEBUG by command from the slave
    WISHBONE bus. All tests now pass when the RAM wait states are set to zero,
    although there are errors in DEBUG mode when RAM wait states are increased.
    Icarus Verilog version 0.9.2 now supports the "generate" command. This is
    now used to instantiate the semaphore registers.

Testbench - Added capability to insert wait states on RAM access.

Doc - No change.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

Feb 12,2010
RTL - Update to the WISHBONE interface when wait states are enabled to trade
   16 data flops for 5 address registers. This change now also requires single
   cycle timing on the WISHBONE address bus, multi-cycle timing is still
   allowed on the WISHBONE write data bus. In the old design WISHBONE read
   cycles required the address to be decoded and the read data to be latched
   in the first cycle and the there was a whole cycle to drive the read data
   bus. The new design latches the address in the first cycle then decodes the
   address and outputs the data in the second cycle. (The WISHBONE bus doesn't
   require the address or data to be latched for multi-cycle operation but by
   doing this it is hoped some power will be saved in the combinational logic
   by reducing the decoding activity at each address change.)

Testbench - No change.

Doc - No change.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

Jan 27,2010
RTL - 85% done -- Fixed error in wbs_ack_o signal when Xgate wait states were
   enabled. If a slave bus transaction was started but not completed in the
   second cycle a wbs_ack_o output was still generated. Added a wbs_err_o output
   signal to flag this input condition but not sure if it is really needed.
  The old testbench was "helping" the Xgate module by sending an almost
   continuous wbm_ack_i signal which allowed the RISC state machine to advance
   when it shouldn't. Changes were made to the WISHBONE master bus interface
   and the RISC control logic.

Updates to testbench -- Extensive changes to testbench. The bus arbitration
   module has been completely rewritten. It now completely controls access to the
   system bus and RAM. It internally generates a WISHBONE ack signal for the RAM.
   The test control registers have been moved out of the top level and put into
   a new WISHBONE slave module which also attaches to the system bus. The Xgate
   modules master and slave buses are fully integrated with the bus arbitration
   module and the system bus. The new testbench looks a lot more like a real
   system environment.
  To Do: Add back "random" wait state generation for RAM access.

Updates to User Guide -- Minor corrections to instruction set details. Needs more
  review on condition code settings.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

Jan 11,2010
RTL - 85% done -- Fix error in Zero Flag calculation for ADC and SBC instructions
  Fix Error in loading R2 durning cpu_state == BOOT_3.
  There is a bug in DEBUG mode that is sensitive to number of preceding
   instructions and wait states that needs to be resolved.

Updates to testbench -- 

Updates to User Guide -- First pass with instruction set details. Needs more
  review on condition code settings.

////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

Dec 08,2009
RTL - 85% done -- Updated code so there is only one program counter adder.
   Updated WISHBONE Slave bus for word addressability and byte selection.
   Deleted two stack pointer registers.

Updates to testbench -- 

Updates to User Guide -- Minor cleanup.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

Nov 09,2009
RTL - 85% done - Minor changes to Mastermode bus.

Updates to testbench, Moved RAM.to submodule, Added bus arbitration module
   but this is not fully functional. Causes timing problems when master is
   polling Xgate registers durning debug mode tests. Will probably change RAM
   model to dual port in next revision.
   Updated master module to include WISHBONE select inputs.

Updates to User Guide.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

Oct 07,2009
RTL - 85% done
All debug commands now working, including writes to XGCHID register.

Updates to testbench, added timeout and total error count.

Updates to User Guide --.

Created the sw directory and copied over the software stuff from the bench
directory.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

Sept 23,2009
BRK instruction working. Single Step Command in debug mode working.
Software error interrupt added.

Updates to testbench.
New assembly code directory: debug_test

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

Sept 10,2009
Added WISHBONE master bus submodule and some related top level signals but still
  not much real functionality.
  
Added code to allow for memory access stalls.

Upgraded testbench to insert memory wait states. Added more error detection
  and summery.

Improved instruction decoder. Still needs more work to remove redundant adders
  to improve synthesis results.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// SVN tag: None

Sept 1, 2009
This is a prerelease checkin and should be looked at as an incremental backup
and not representative of what may be in the final release.

RTL - 75% done
What works:
  Basic instruction set execution simulated and verified. Condition code
  operation on instructions partially verified.

  Basic WISHBONE slave bus operation used, full functionality not verified.

What's broken or unimplemented:
  All things related to debug mode.
  WISHBONE master bus interface.

User Documentation - 30% done

Go to most recent revision | 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.