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

Subversion Repositories xgate

[/] [xgate/] [trunk/] [README.txt] - Blame information for rev 89

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

Line No. Rev Author Line
1 2 rehayes
// 45678901234567890123456789012345678901234567890123456789012345678901234567890
2 14 rehayes
////////////////////////////////////////////////////////////////////////////////
3
////////////////////////////////////////////////////////////////////////////////
4
// SVN tag: None
5
 
6 89 rehayes
November 21,2011
7
RTL - No Change
8
 
9
Code cleanup, converted tabs to blanks. Added code to instruction test to cover
10
a few base instructions that weren't being tested. Changed instance name of
11
semaphore registers from "bit" to "sbit" to be compatible with System Verilog.
12
 
13
////////////////////////////////////////////////////////////////////////////////
14
////////////////////////////////////////////////////////////////////////////////
15
 
16
My current idea list for enhancements is:
17
 
18
Add to the software apps:
19
a - It should be possible to write software to emulate some simple hardware modules such as I2C, SPI and UART.
20
b - DMA controller software
21
c - Find open source C compiler for Xgate
22
d - ???
23
 
24
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.
25
a - Integrate Xgate with I2C controller and develop software to support SMBus and PMBus protocols.
26
b - ???
27
 
28
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.
29
 
30
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.)
31
 
32
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.
33
 
34
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.
35
 
36
System Verilog class based constrained random verification environment.
37
 
38
////////////////////////////////////////////////////////////////////////////////
39
////////////////////////////////////////////////////////////////////////////////
40
// SVN tag: None
41
 
42 84 rehayes
August 11,2010
43
RTL - No Change
44
 
45
Applications - Added the "application" directory to the "sw" directory. The
46
    first application code added is the SKIPJACK encrypt/decrypt function. This
47
    algorithm works on a 64 bit block of data and uses an 80 bit key. See the
48
    "sw/applications/skipjack/README.txt" file for more information.
49
 
50
Testbench - To aid in software development a simple debug module was added to
51
    the testbench. The debugger loads watchpoint addresses stored in RAM after
52
    the first RAM initialization. The debugger generates trigger signals that
53
    can be watched in the waveform viewer and captures a copy of the CPU
54
    registers at each trigger event. The watch point addresses are captured by
55
    the assembler and stored in RAM addresses reserved for the test bench.
56
    There are enable registers in the testbench that can enable or disable any
57
    of the eight individual watchpoints under testbench control.
58
 
59
Doc - Made corrections to some of the example code in the detailed instruction
60
    descriptions.
61
 
62
////////////////////////////////////////////////////////////////////////////////
63
////////////////////////////////////////////////////////////////////////////////
64
// SVN tag: None
65
 
66 77 rehayes
June 10,2010
67
RTL - No Change
68
 
69
Testbench - No Change.
70
 
71
Doc - Added descriptions for interrupt bypass registers. Added Appendix B for
72
    testbench description.
73
 
74
////////////////////////////////////////////////////////////////////////////////
75
////////////////////////////////////////////////////////////////////////////////
76
// SVN tag: None
77
 
78 76 rehayes
May 18,2010
79
RTL - Fixed xlink synthesis warnings noted by Nachiket Jugade,
80
    missing else statment for chid_sm_ns line 393,
81
    missing default on shifter lines 2382 (Although all cases are covered).
82
 
83
Testbench - No Change.
84
 
85
Doc - No Change.
86
 
87
////////////////////////////////////////////////////////////////////////////////
88
////////////////////////////////////////////////////////////////////////////////
89
// SVN tag: None
90
 
91 74 rehayes
May 13,2010
92
RTL - Code cleanup. Eliminated index [0] of "xgif" and "chan_req_i" output and
93
    input pins along with assoicated status and and control registers. This
94
    channel has never been usable.
95
 
96
Testbench - Changes to match changes in RTL .
97
 
98
Doc - No Change.
99
 
100
////////////////////////////////////////////////////////////////////////////////
101
////////////////////////////////////////////////////////////////////////////////
102
// SVN tag: None
103
 
104 71 rehayes
May 12,2010
105
RTL - Added new control registers for interrupt bypass function. Out of reset
106
    all input interrupts are bypassed directly to the Xgate interrupt outputs.
107
    The interrupts are also disabled from effecting the Xgate till the bypass
108
    is disabled. The interrupt priority has been flipped so that now the lowest
109
    index input interrupt has the highest priority.
110
 
111
Testbench - Added semaphore register and read only registers to observe irq
112
    outputs of Xgate to testbench slave module. Added parameters to support new
113
    Xgate registers and testbench registers. Added new test to checkout
114
    bypass functionality and interrupt priority encoding.
115
 
116
Doc - Updated with additions of IRQ Bypass registers.
117
 
118
////////////////////////////////////////////////////////////////////////////////
119
////////////////////////////////////////////////////////////////////////////////
120
// SVN tag: None
121
 
122 66 rehayes
Apr 22,2010
123
RTL - Fixed bug when entering DEBUG by command from the slave WISHBONE bus.
124
    All tests now pass when the RAM wait states are set from zero to four. Five
125
    wait states times out in simulation while running the last test which is
126
    a simple register test otherwise I expect it would pass.
127
 
128
Testbench - Many of the failures while testing wait states were due to fixed
129 76 rehayes
    delays coded in the testbench. As necessary, delays were changed to be a
130 66 rehayes
    function of a parameter that is based on the number of RAM wait states.
131
 
132
Doc - No change.
133
 
134
////////////////////////////////////////////////////////////////////////////////
135
////////////////////////////////////////////////////////////////////////////////
136
// SVN tag: None
137
 
138 61 rehayes
Apr 5,2010
139
RTL - First pass at fixing bug when entering DEBUG by command from the slave
140
    WISHBONE bus. All tests now pass when the RAM wait states are set to zero,
141
    although there are errors in DEBUG mode when RAM wait states are increased.
142 76 rehayes
    Icarus Verilog version 0.9.2 now supports the "generate" command. This is
143 61 rehayes
    now used to instantiate the semaphore registers.
144
 
145
Testbench - Added capability to insert wait states on RAM access.
146
 
147
Doc - No change.
148
 
149
////////////////////////////////////////////////////////////////////////////////
150
////////////////////////////////////////////////////////////////////////////////
151
// SVN tag: None
152
 
153 58 rehayes
Feb 12,2010
154
RTL - Update to the WISHBONE interface when wait states are enabled to trade
155
   16 data flops for 5 address registers. This change now also requires single
156
   cycle timing on the WISHBONE address bus, multi-cycle timing is still
157
   allowed on the WISHBONE write data bus. In the old design WISHBONE read
158
   cycles required the address to be decoded and the read data to be latched
159
   in the first cycle and the there was a whole cycle to drive the read data
160
   bus. The new design latches the address in the first cycle then decodes the
161
   address and outputs the data in the second cycle. (The WISHBONE bus doesn't
162
   require the address or data to be latched for multi-cycle operation but by
163
   doing this it is hoped some power will be saved in the combinational logic
164
   by reducing the decoding activity at each address change.)
165
 
166
Testbench - No change.
167
 
168
Doc - No change.
169
 
170
////////////////////////////////////////////////////////////////////////////////
171
////////////////////////////////////////////////////////////////////////////////
172
// SVN tag: None
173
 
174 56 rehayes
Jan 27,2010
175
RTL - 85% done -- Fixed error in wbs_ack_o signal when Xgate wait states were
176
   enabled. If a slave bus transaction was started but not completed in the
177
   second cycle a wbs_ack_o output was still generated. Added a wbs_err_o output
178
   signal to flag this input condition but not sure if it is really needed.
179
  The old testbench was "helping" the Xgate module by sending an almost
180
   continuous wbm_ack_i signal which allowed the RISC state machine to advance
181
   when it shouldn't. Changes were made to the WISHBONE master bus interface
182
   and the RISC control logic.
183
 
184
Updates to testbench -- Extensive changes to testbench. The bus arbitration
185
   module has been completely rewritten. It now completely controls access to the
186
   system bus and RAM. It internally generates a WISHBONE ack signal for the RAM.
187
   The test control registers have been moved out of the top level and put into
188
   a new WISHBONE slave module which also attaches to the system bus. The Xgate
189
   modules master and slave buses are fully integrated with the bus arbitration
190
   module and the system bus. The new testbench looks a lot more like a real
191
   system environment.
192
  To Do: Add back "random" wait state generation for RAM access.
193
 
194
Updates to User Guide -- Minor corrections to instruction set details. Needs more
195
  review on condition code settings.
196
 
197
////////////////////////////////////////////////////////////////////////////////
198
////////////////////////////////////////////////////////////////////////////////
199
// SVN tag: None
200
 
201 51 rehayes
Jan 11,2010
202 56 rehayes
RTL - 85% done -- Fix error in Zero Flag calculation for ADC and SBC instructions
203 51 rehayes
  Fix Error in loading R2 durning cpu_state == BOOT_3.
204 84 rehayes
  There is a bug in DEBUG mode that is sensitive to number of preceding
205 51 rehayes
   instructions and wait states that needs to be resolved.
206
 
207
Updates to testbench --
208
 
209
Updates to User Guide -- First pass with instruction set details. Needs more
210
  review on condition code settings.
211
 
212
////////////////////////////////////////////////////////////////////////////////
213
// SVN tag: None
214
 
215 44 rehayes
Dec 08,2009
216 41 rehayes
RTL - 85% done -- Updated code so there is only one program counter adder.
217
   Updated WISHBONE Slave bus for word addressability and byte selection.
218 44 rehayes
   Deleted two stack pointer registers.
219 41 rehayes
 
220
Updates to testbench --
221
 
222
Updates to User Guide -- Minor cleanup.
223
 
224
////////////////////////////////////////////////////////////////////////////////
225
////////////////////////////////////////////////////////////////////////////////
226
// SVN tag: None
227
 
228 38 rehayes
Nov 09,2009
229
RTL - 85% done - Minor changes to Mastermode bus.
230
 
231
Updates to testbench, Moved RAM.to submodule, Added bus arbitration module
232
   but this is not fully functional. Causes timing problems when master is
233 56 rehayes
   polling Xgate registers durning debug mode tests. Will probably change RAM
234 38 rehayes
   model to dual port in next revision.
235
   Updated master module to include WISHBONE select inputs.
236
 
237
Updates to User Guide.
238
 
239
////////////////////////////////////////////////////////////////////////////////
240
////////////////////////////////////////////////////////////////////////////////
241
// SVN tag: None
242
 
243 23 rehayes
Oct 07,2009
244
RTL - 85% done
245
All debug commands now working, including writes to XGCHID register.
246
 
247
Updates to testbench, added timeout and total error count.
248 41 rehayes
 
249
Updates to User Guide --.
250
 
251 23 rehayes
Created the sw directory and copied over the software stuff from the bench
252
directory.
253
 
254
////////////////////////////////////////////////////////////////////////////////
255
////////////////////////////////////////////////////////////////////////////////
256
// SVN tag: None
257
 
258 14 rehayes
Sept 23,2009
259
BRK instruction working. Single Step Command in debug mode working.
260
Software error interrupt added.
261
 
262
Updates to testbench.
263
New assembly code directory: debug_test
264
 
265
////////////////////////////////////////////////////////////////////////////////
266
////////////////////////////////////////////////////////////////////////////////
267
// SVN tag: None
268
 
269 5 rehayes
Sept 10,2009
270
Added WISHBONE master bus submodule and some related top level signals but still
271
  not much real functionality.
272
 
273
Added code to allow for memory access stalls.
274
 
275
Upgraded testbench to insert memory wait states. Added more error detection
276
  and summery.
277
 
278
Improved instruction decoder. Still needs more work to remove redundant adders
279
  to improve synthesis results.
280
 
281 14 rehayes
////////////////////////////////////////////////////////////////////////////////
282
////////////////////////////////////////////////////////////////////////////////
283
// SVN tag: None
284 5 rehayes
 
285 2 rehayes
Sept 1, 2009
286
This is a prerelease checkin and should be looked at as an incremental backup
287
and not representative of what may be in the final release.
288
 
289
RTL - 75% done
290
What works:
291
  Basic instruction set execution simulated and verified. Condition code
292
  operation on instructions partially verified.
293
 
294
  Basic WISHBONE slave bus operation used, full functionality not verified.
295
 
296
What's broken or unimplemented:
297
  All things related to debug mode.
298
  WISHBONE master bus interface.
299
 
300 5 rehayes
User Documentation - 30% done
301
 

powered by: WebSVN 2.1.0

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