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 |
|
|
|