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

Subversion Repositories myblaze

[/] [myblaze/] [trunk/] [rtl/] [top.py] - Blame information for rev 6

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 rockee
# -*- coding: utf-8 -*-
2
"""
3
    top.py
4
    ======
5
 
6
    Top Level of the System Design
7
 
8
    :copyright: Copyright (c) 2010 Jian Luo
9
    :author-email: jian.luo.cn(at_)gmail.com
10
    :license: LGPL, see LICENSE for details
11
    :revision: $Id: top.py 6 2010-11-21 23:18:44Z rockee $
12
"""
13
 
14
from myhdl import *
15
from defines import *
16
from functions import *
17
from core import *
18
from uart import *
19
from bram import *
20
 
21
program = []
22
 
23
def prepare():
24
    one = open('rom.vmem')
25
    banks = [open('rom%s.vmem'%i, 'w') for i in range(4)]
26
    try:
27
        for line in one.readlines():
28
            program.append(int(line, 16))
29
            for i in range(4):
30
                print >>banks[3-i], line[i*2:(i+1)*2]
31
    finally:
32
        [f.close() for f in banks]
33
        one.close()
34
 
35
def Program(data_out, data_in, address, write, enable, clock, *args, **kw):
36
    imem = tuple(program)
37
    @always(clock.posedge)
38
    def output():
39
        #if enable:
40
            data_out.next = imem[address[:2]]
41
    return instances()
42
 
43
def SysTop(txd_line, rxd_line, txd_line2, rxd_line2, leds, reset, clock,
44
 
45 6 rockee
        # Ports only for debug
46
        debug_if_program_counter=0,
47 2 rockee
 
48 6 rockee
        debug_of_alu_op=0,
49
        debug_of_alu_src_a=0,
50
        debug_of_alu_src_b=0,
51
        debug_of_branch_cond=0,
52
        debug_of_carry=0,
53
        debug_of_carry_keep=0,
54
        debug_of_delay=0,
55
        debug_of_hazard=0,
56
        debug_of_immediate=0,
57
        debug_of_instruction=0,
58
        debug_of_mem_read=0,
59
        debug_of_mem_write=0,
60
        debug_of_operation=0,
61
        debug_of_program_counter=0,
62
        debug_of_reg_a=0,
63
        debug_of_reg_b=0,
64
        debug_of_reg_d=0,
65
        debug_of_reg_write=0,
66
        debug_of_transfer_size=0,
67 2 rockee
 
68 6 rockee
        debug_of_fwd_mem_result=0,
69
        debug_of_fwd_reg_d=0,
70
        debug_of_fwd_reg_write=0,
71 2 rockee
 
72 6 rockee
        debug_gprf_dat_a=0,
73
        debug_gprf_dat_b=0,
74
        debug_gprf_dat_d=0,
75 2 rockee
 
76 6 rockee
        debug_ex_alu_result=0,
77
        debug_ex_reg_d=0,
78
        debug_ex_reg_write=0,
79 2 rockee
 
80 6 rockee
        debug_ex_branch=0,
81
        debug_ex_dat_d=0,
82
        debug_ex_flush_id=0,
83
        debug_ex_mem_read=0,
84
        debug_ex_mem_write=0,
85
        debug_ex_program_counter=0,
86
        debug_ex_transfer_size=0,
87 2 rockee
 
88 6 rockee
        debug_ex_dat_a=0,
89
        debug_ex_dat_b=0,
90
        debug_ex_instruction=0,
91
        debug_ex_reg_a=0,
92
        debug_ex_reg_b=0,
93 2 rockee
 
94 6 rockee
        debug_mm_alu_result=0,
95
        debug_mm_mem_read=0,
96
        debug_mm_reg_d=0,
97
        debug_mm_reg_write=0,
98
        debug_mm_transfer_size=0,
99 2 rockee
 
100 6 rockee
        debug_dmem_ena_in=0,
101
        debug_dmem_data_in=0,
102
        debug_dmem_data_out=0,
103
        debug_dmem_sel_out=0,
104
        debug_dmem_we_out=0,
105
        debug_dmem_addr_out=0,
106
        debug_dmem_ena_out=0,
107
        debug_dmem_ena=0,
108 2 rockee
 
109 6 rockee
        debug_imem_data_in=0,
110
        debug_imem_data_out=0,
111
        debug_imem_sel_out=0,
112
        debug_imem_we_out=0,
113
        debug_imem_addr_out=0,
114
        debug_imem_ena=0,
115
        debug_imem_ena_out=0,
116 2 rockee
 
117 6 rockee
        size=4, DEBUG=True):
118 2 rockee
    rx_data = Signal(intbv(0)[32:])
119
    rx_avail = Signal(False)
120
    rx_error = Signal(False)
121
    read_en = Signal(False)
122
    tx_data = Signal(intbv(0)[32:])
123
    tx_busy = Signal(False)
124
    write_en = Signal(False)
125
    uart_rxd = Signal(False)
126
    uart_txd = Signal(False)
127
 
128
    rx_data2 = Signal(intbv(0)[32:])
129
    rx_avail2 = Signal(False)
130
    rx_error2 = Signal(False)
131
    read_en2 = Signal(False)
132
    tx_data2 = Signal(intbv(0)[32:])
133
    tx_busy2 = Signal(False)
134
    write_en2 = Signal(False)
135
    uart_rxd2 = Signal(False)
136
    uart_txd2 = Signal(False)
137
 
138
    led_reg = Signal(intbv(0)[32:])
139
    led_low = Signal(intbv(0)[32:])
140
 
141
    dmem_ena_in = Signal(False)
142
    dmem_data_in = Signal(intbv(0)[CFG_DMEM_WIDTH:])
143
    dmem_data_out = Signal(intbv(0)[CFG_DMEM_WIDTH:])
144
    dmem_sel_out = Signal(intbv(0)[4:])
145
    dmem_sel = Signal(intbv(0)[4:])
146
    dmem_we_out = Signal(False)
147
    dmem_addr_out = Signal(intbv(0)[CFG_DMEM_SIZE:])
148
    dmem_ena_out = Signal(False)
149
    dmem_ena = Signal(False)
150
 
151
    imem_data_in = Signal(intbv(0)[CFG_DMEM_WIDTH:])
152
    imem_data_out = Signal(intbv(0)[CFG_IMEM_WIDTH:])
153
    imem_sel_out = Signal(intbv(0)[4:])
154
    imem_we_out = Signal(False)
155
    imem_addr_out = Signal(intbv(0)[CFG_IMEM_SIZE:])
156
    imem_ena = Signal(True)
157
    imem_ena_out = Signal(False)
158
 
159
    imem = BankedBRAM(imem_data_in, imem_data_out, imem_addr_out,
160
                      imem_sel_out, imem_ena_out, clock,
161
                     size=size, to_verilog=True,
162
                     filename_pattern='rom%s.vmem')
163
    #imem = Program(imem_data_in, imem_data_out, imem_addr_out,
164
                      #imem_sel_out, imem_ena_out, clock,
165
                     #size=size, to_verilog=True,
166
                     #filename_pattern='rom%s.vmem')
167
    dmem = BankedBRAM(dmem_data_in, dmem_data_out, dmem_addr_out,
168
                      dmem_sel, dmem_ena, clock,
169
                     size=size, to_verilog=True,
170
                     filename_pattern='rom%s.vmem')
171
 
172
    core = MyBlazeCore(
173
        clock=clock,
174
        reset=reset,
175
        dmem_ena_in=dmem_ena_in,
176
 
177
        dmem_data_in=dmem_data_in,
178
        dmem_data_out=dmem_data_out,
179
        dmem_sel_out=dmem_sel_out,
180
        dmem_we_out=dmem_we_out,
181
        dmem_addr_out=dmem_addr_out,
182
        dmem_ena_out=dmem_ena_out,
183
        imem_data_in=imem_data_in,
184
        imem_addr_out=imem_addr_out,
185
        imem_ena_out=imem_ena_out,
186
 
187 6 rockee
        # Ports only for debug
188 2 rockee
        debug_if_program_counter=debug_if_program_counter,
189
 
190
        debug_of_alu_op=debug_of_alu_op,
191
        debug_of_alu_src_a=debug_of_alu_src_a,
192
        debug_of_alu_src_b=debug_of_alu_src_b,
193
        debug_of_branch_cond=debug_of_branch_cond,
194
        debug_of_carry=debug_of_carry,
195
        debug_of_carry_keep=debug_of_carry_keep,
196
        debug_of_delay=debug_of_delay,
197
        debug_of_hazard=debug_of_hazard,
198
        debug_of_immediate=debug_of_immediate,
199
        debug_of_instruction=debug_of_instruction,
200
        debug_of_mem_read=debug_of_mem_read,
201
        debug_of_mem_write=debug_of_mem_write,
202
        debug_of_operation=debug_of_operation,
203
        debug_of_program_counter=debug_of_program_counter,
204
        debug_of_reg_a=debug_of_reg_a,
205
        debug_of_reg_b=debug_of_reg_b,
206
        debug_of_reg_d=debug_of_reg_d,
207
        debug_of_reg_write=debug_of_reg_write,
208
        debug_of_transfer_size=debug_of_transfer_size,
209
 
210
        debug_of_fwd_mem_result=debug_of_fwd_mem_result,
211
        debug_of_fwd_reg_d=debug_of_fwd_reg_d,
212
        debug_of_fwd_reg_write=debug_of_fwd_reg_write,
213
 
214
        debug_gprf_dat_a=debug_gprf_dat_a,
215
        debug_gprf_dat_b=debug_gprf_dat_b,
216
        debug_gprf_dat_d=debug_gprf_dat_d,
217
 
218
        debug_ex_alu_result=debug_ex_alu_result,
219
        debug_ex_reg_d=debug_ex_reg_d,
220
        debug_ex_reg_write=debug_ex_reg_write,
221
 
222
        debug_ex_branch=debug_ex_branch,
223
        debug_ex_dat_d=debug_ex_dat_d,
224
        debug_ex_flush_id=debug_ex_flush_id,
225
        debug_ex_mem_read=debug_ex_mem_read,
226
        debug_ex_mem_write=debug_ex_mem_write,
227
        debug_ex_program_counter=debug_ex_program_counter,
228
        debug_ex_transfer_size=debug_ex_transfer_size,
229
 
230
        debug_ex_dat_a=debug_ex_dat_a,
231
        debug_ex_dat_b=debug_ex_dat_b,
232
        debug_ex_instruction=debug_ex_instruction,
233
        debug_ex_reg_a=debug_ex_reg_a,
234
        debug_ex_reg_b=debug_ex_reg_b,
235
 
236
        debug_mm_alu_result=debug_mm_alu_result,
237
        debug_mm_mem_read=debug_mm_mem_read,
238
        debug_mm_reg_d=debug_mm_reg_d,
239
        debug_mm_reg_write=debug_mm_reg_write,
240
        debug_mm_transfer_size=debug_mm_transfer_size,
241 6 rockee
 
242
        DEBUG=DEBUG,
243 2 rockee
    )
244
 
245
    uart = UART(rx_data, rx_avail, rx_error, read_en,
246
           tx_data, tx_busy, write_en,
247
           uart_rxd, uart_txd, reset, clock,
248
           freq_hz=50000000, baud=115200)
249
 
250
    uart2 = UART(rx_data2, rx_avail2, rx_error2, read_en2,
251
           tx_data2, tx_busy2, write_en2,
252
           uart_rxd2, uart_txd2, reset, clock,
253
           freq_hz=50000000, baud=115200)
254
 
255
    @always_comb
256
    def glue():
257
        dmem_ena_in.next = True
258
        if dmem_we_out:
259
            dmem_sel.next = dmem_sel_out
260
        else:
261
            dmem_sel.next = 0
262
        tx_data.next = dmem_data_out
263
        if dmem_addr_out < 2**size:
264
            dmem_ena.next = dmem_ena_out
265
            write_en.next = False
266 6 rockee
        elif dmem_we_out and dmem_addr_out[28:] >= 0xfffffc0:
267 2 rockee
            dmem_ena.next = False
268 6 rockee
            dmem_ena_in.next = not tx_busy
269 2 rockee
            write_en.next = True
270
        else:
271
            write_en.next = False
272
            dmem_ena.next = False
273
 
274
        #leds.next = concat(led_reg[4:], led_low[4:])
275
        leds.next = led_reg[8:]
276
 
277
    count = Signal(intbv(0)[20:])
278
    @always(clock.posedge)
279
    def run():
280
 
281
        if reset:
282
            txd_line.next = False
283
            txd_line2.next = False
284
            led_reg.next = 1
285
            led_low.next = 1
286
            imem_data_out.next = 0
287
            imem_sel_out.next = 0
288
            read_en.next = False
289
            uart_rxd.next = 1
290
            read_en2.next = False
291
            uart_rxd2.next = 1
292
            count.next = 0
293
        else:
294
            txd_line.next = uart_txd
295
            uart_rxd.next = rxd_line
296
            txd_line2.next = uart_txd2
297
            uart_rxd2.next = rxd_line2
298
            read_en.next = False
299
            count.next = (count+1)%(2**20)
300 6 rockee
            #if count == 0:
301
                #led_low.next = concat(led_low[31:], led_low[31])
302 2 rockee
 
303
            #if write_en and not tx_busy:
304
                #led_reg.next = concat(led_reg[31:], led_reg[31])
305 6 rockee
            if dmem_we_out and dmem_addr_out[28:] == 0xFFFFFB0:
306
                led_reg.next = dmem_data_out
307
            else:
308
                led_reg.next = led_reg
309 2 rockee
            #led_reg.next = concat(dmem_ena_in, dmem_we_out, dmem_ena_out,
310
                #write_en,)
311 6 rockee
            #if imem_addr_out == 0x244:
312
                #led_reg.next = 0xff
313 2 rockee
 
314
 
315
    @always_comb
316
    def debug_output():
317
        debug_dmem_ena_in.next = dmem_ena_in
318
        debug_dmem_data_in.next = dmem_data_in
319
        debug_dmem_data_out.next = dmem_data_out
320
        debug_dmem_sel_out.next = dmem_sel_out
321
        debug_dmem_we_out.next = dmem_we_out
322
        debug_dmem_addr_out.next = dmem_addr_out
323
        debug_dmem_ena_out.next = dmem_ena_out
324
        debug_dmem_ena.next = dmem_ena
325
 
326
        debug_imem_data_in.next = imem_data_in
327
        debug_imem_data_out.next = imem_data_out
328
        debug_imem_sel_out.next = imem_sel_out
329
        debug_imem_we_out.next = imem_we_out
330
        debug_imem_addr_out.next = imem_addr_out
331
        debug_imem_ena.next = imem_ena
332
        debug_imem_ena_out.next = imem_ena_out
333
 
334 6 rockee
    if DEBUG:
335
        return imem, dmem, core, uart, uart2, glue, run, debug_output
336
 
337
    return imem, dmem, core, uart, uart2, glue, run
338 2 rockee
 
339
import sys
340
from numpy import log2
341
 
342
def TopBench():
343
    prepare()
344
    size = int(log2(int(sys.argv[1]))) if len(sys.argv) > 1 else 4
345
    print 'size=%s' % size
346
 
347
    txd_line = Signal(False)
348
    rxd_line = Signal(False)
349
    txd_line2 = Signal(False)
350
    rxd_line2 = Signal(False)
351
    leds = Signal(intbv(0)[8:])
352
    reset = Signal(False)
353
    clock = Signal(False)
354
 
355
 
356
    debug_if_program_counter = Signal(intbv(0)[CFG_IMEM_SIZE:])
357
 
358
    debug_gprf_dat_a = Signal(intbv(0)[CFG_DMEM_WIDTH:])
359
    debug_gprf_dat_b = Signal(intbv(0)[CFG_DMEM_WIDTH:])
360
    debug_gprf_dat_d = Signal(intbv(0)[CFG_DMEM_WIDTH:])
361
 
362
    debug_of_alu_op = Signal(alu_operation.ALU_ADD)
363
    debug_of_alu_src_a = Signal(src_type_a.REGA)
364
    debug_of_alu_src_b = Signal(src_type_b.REGB)
365
    debug_of_branch_cond = Signal(branch_condition.NOP)
366
    debug_of_carry = Signal(carry_type.C_ZERO)
367
    debug_of_carry_keep = Signal(False)
368
    debug_of_delay = Signal(False)
369
    debug_of_hazard = Signal(False)
370
    debug_of_immediate = Signal(intbv(0)[CFG_DMEM_WIDTH:])
371
    debug_of_instruction = Signal(intbv(0)[CFG_IMEM_WIDTH:])
372
    debug_of_mem_read = Signal(False)
373
    debug_of_mem_write = Signal(False)
374
    debug_of_operation = Signal(False)
375
    debug_of_program_counter = Signal(intbv(0)[CFG_IMEM_SIZE:])
376
    debug_of_reg_a = Signal(intbv(0)[5:])
377
    debug_of_reg_b = Signal(intbv(0)[5:])
378
    debug_of_reg_d = Signal(intbv(0)[5:])
379
    debug_of_reg_write = Signal(False)
380
    debug_of_transfer_size = Signal(transfer_size_type.WORD)
381
 
382
    # Write back stage forwards
383
    debug_of_fwd_mem_result = Signal(intbv(0)[CFG_DMEM_WIDTH:])
384
    debug_of_fwd_reg_d = Signal(intbv(0)[5:])
385
    debug_of_fwd_reg_write = Signal(False)
386
 
387
    debug_ex_alu_result = Signal(intbv(0)[CFG_DMEM_WIDTH:])
388
    debug_ex_reg_d = Signal(intbv(0)[5:])
389
    debug_ex_reg_write = Signal(False)
390
 
391
    debug_ex_branch = Signal(False)
392
    debug_ex_dat_d = Signal(intbv(0)[CFG_DMEM_WIDTH:])
393
    debug_ex_flush_id = Signal(False)
394
    debug_ex_mem_read = Signal(False)
395
    debug_ex_mem_write = Signal(False)
396
    debug_ex_program_counter = Signal(intbv(0)[CFG_IMEM_SIZE:])
397
    debug_ex_transfer_size = Signal(transfer_size_type.WORD)
398
 
399
    debug_ex_dat_a = Signal(intbv(0)[CFG_DMEM_WIDTH:])
400
    debug_ex_dat_b = Signal(intbv(0)[CFG_DMEM_WIDTH:])
401
    debug_ex_instruction = Signal(intbv(0)[CFG_DMEM_WIDTH:])
402
    debug_ex_reg_a = Signal(intbv(0)[5:])
403
    debug_ex_reg_b = Signal(intbv(0)[5:])
404
 
405
    debug_mm_alu_result = Signal(intbv(0)[CFG_DMEM_WIDTH:])
406
    debug_mm_mem_read = Signal(False)
407
    debug_mm_reg_d = Signal(intbv(0)[5:])
408
    debug_mm_reg_write = Signal(False)
409
    debug_mm_transfer_size = Signal(transfer_size_type.WORD)
410
 
411
    debug_dmem_ena_in = Signal(False)
412
    debug_dmem_data_in = Signal(intbv(0)[CFG_DMEM_WIDTH:])
413
    debug_dmem_data_out = Signal(intbv(0)[CFG_DMEM_WIDTH:])
414
    debug_dmem_sel_out = Signal(intbv(0)[4:])
415
    debug_dmem_we_out = Signal(False)
416
    debug_dmem_addr_out = Signal(intbv(0)[CFG_DMEM_SIZE:])
417
    debug_dmem_ena_out = Signal(False)
418
    debug_dmem_ena = Signal(False)
419
 
420
    debug_imem_data_in = Signal(intbv(0)[CFG_DMEM_WIDTH:])
421
    debug_imem_data_out = Signal(intbv(0)[CFG_IMEM_WIDTH:])
422
    debug_imem_sel_out = Signal(intbv(0)[4:])
423
    debug_imem_we_out = Signal(False)
424
    debug_imem_addr_out = Signal(intbv(0)[CFG_IMEM_SIZE:])
425
    debug_imem_ena = Signal(True)
426
    debug_imem_ena_out = Signal(False)
427
 
428
    top = SysTop(txd_line, rxd_line, txd_line2, rxd_line2, leds, reset, clock,
429
 
430 6 rockee
        # Ports only for debug
431 2 rockee
        debug_if_program_counter,
432
 
433
        debug_of_alu_op,
434
        debug_of_alu_src_a,
435
        debug_of_alu_src_b,
436
        debug_of_branch_cond,
437
        debug_of_carry,
438
        debug_of_carry_keep,
439
        debug_of_delay,
440
        debug_of_hazard,
441
        debug_of_immediate,
442
        debug_of_instruction,
443
        debug_of_mem_read,
444
        debug_of_mem_write,
445
        debug_of_operation,
446
        debug_of_program_counter,
447
        debug_of_reg_a,
448
        debug_of_reg_b,
449
        debug_of_reg_d,
450
        debug_of_reg_write,
451
        debug_of_transfer_size,
452
 
453
        debug_of_fwd_mem_result,
454
        debug_of_fwd_reg_d,
455
        debug_of_fwd_reg_write,
456
 
457
        debug_gprf_dat_a,
458
        debug_gprf_dat_b,
459
        debug_gprf_dat_d,
460
 
461
        debug_ex_alu_result,
462
        debug_ex_reg_d,
463
        debug_ex_reg_write,
464
 
465
        debug_ex_branch,
466
        debug_ex_dat_d,
467
        debug_ex_flush_id,
468
        debug_ex_mem_read,
469
        debug_ex_mem_write,
470
        debug_ex_program_counter,
471
        debug_ex_transfer_size,
472
 
473
        debug_ex_dat_a,
474
        debug_ex_dat_b,
475
        debug_ex_instruction,
476
        debug_ex_reg_a,
477
        debug_ex_reg_b,
478
 
479
        debug_mm_alu_result,
480
        debug_mm_mem_read,
481
        debug_mm_reg_d,
482
        debug_mm_reg_write,
483
        debug_mm_transfer_size,
484
 
485
        debug_dmem_ena_in,
486
        debug_dmem_data_in,
487
        debug_dmem_data_out,
488
        debug_dmem_sel_out,
489
        debug_dmem_we_out,
490
        debug_dmem_addr_out,
491
        debug_dmem_ena_out,
492
        debug_dmem_ena,
493
 
494
        debug_imem_data_in,
495
        debug_imem_data_out,
496
        debug_imem_sel_out,
497
        debug_imem_we_out,
498
        debug_imem_addr_out,
499
        debug_imem_ena,
500
        debug_imem_ena_out,
501
 
502 6 rockee
        size=size)
503 2 rockee
 
504
    @instance
505
    def clockgen():
506
        yield delay(10)
507
        clock.next = False
508
        while 1:
509
            yield delay(10)
510
            clock.next = not clock
511
 
512
    @instance
513
    def stimulus():
514
        reset.next = False
515
        yield delay(37)
516
        reset.next = True
517
        yield delay(53)
518
        reset.next = False
519 6 rockee
        for i in range(3000):
520 2 rockee
            yield clock.negedge
521
        reset.next = False
522
        yield delay(37)
523
        reset.next = True
524
        yield delay(53)
525
        reset.next = False
526 6 rockee
        for i in range(3000):
527 2 rockee
            yield clock.negedge
528
 
529
        raise StopSimulation
530
 
531
    @instance
532
    def monitor():
533
        while 1:
534
            yield clock.posedge
535
            #if debug_dmem_ena_in:
536
                #print '%x' % debug_ex_program_counter
537
 
538
            #if debug_ex_program_counter == 0x0:
539
                #print 'reach the start 00000000'
540
            #if debug_ex_program_counter == 0x244:
541
                #print 'reach the second xil_print call'
542
            if debug_dmem_addr_out == 0xffffffc0:
543
                #if debug_dmem_sel_out == 0b1000:
544
                if debug_dmem_we_out:
545 6 rockee
                    sys.stdout.write(chr(int(debug_dmem_data_out[8:])))
546
                    sys.stdout.flush()
547
                    #print int(debug_dmem_data_out[8:])
548 2 rockee
                    #print 'output: %d' % debug_dmem_data_out[8:]
549
 
550
 
551
 
552
 
553
            #print 'if_pc: %x\timem_addr: %x\treset: %x' % (
554
                #debug_if_program_counter, debug_imem_addr_out, reset
555
            #)
556
            #print ('of_pc: %x\tof_instruction:%x'
557
                   ##'\tbranch_cond:%s\talu_op:%s'
558
                   #'\thazard:%x') % (
559
                #debug_of_program_counter, debug_of_instruction,
560
                ##debug_of_branch_cond, debug_of_alu_op,
561
                #debug_of_hazard,
562
            #)
563
            #print 'ex_pc: %x\tex_instruction:%x' % (
564
                #debug_ex_program_counter,
565
                #debug_ex_instruction,
566
            #)
567
            #print 'Ra: r%d=%x\tRb: r%d=%x\t-> Rd:%d\tdat_d:%x\talu_result: %x\tbranch: %x' % (
568
                #debug_ex_reg_a, debug_ex_dat_a,
569
                #debug_ex_reg_b, debug_ex_dat_b,
570
                #debug_ex_reg_d, debug_ex_dat_d,
571
                #debug_ex_alu_result,
572
                #debug_ex_branch,
573
            #)
574
            #print 'ex_mem_read %s ex_mem_write %s' % (
575
                #debug_ex_mem_read, debug_ex_mem_write)
576
            #print ''
577
 
578
 
579
 
580
 
581
            #if enable and not ex_r_flush_ex: # and (ex_comb_r_reg_write
582
                    ##or ex_comb_mem_read or ex_comb_mem_write): # and DEBUG_VERBOSE:
583
            ##if DEBUG_VERBOSE:
584
                #print 'EX:',
585
                #dissembly(of_program_counter,
586
                          #of_instruction,
587
                          #ex_comb_r_reg_d,
588
                          #of_reg_a, 
589
                          #of_reg_b,
590
                          #ex_comb_dat_d,
591
                          #ex_comb_dat_a,
592
                          #ex_comb_dat_b, 
593
                          #ex_comb_r_alu_result,
594
                          #True)
595
                #print "\t",of_alu_op, of_alu_src_a, of_alu_src_b, of_immediate.signed()
596
                #print "\treg_write:=%s mem_read:=%s mem_write:=%s branch:=%s flush_ex:=%s" % (
597
                    #ex_comb_r_reg_write,ex_comb_mem_read,ex_comb_mem_write,
598
                    #ex_comb_branch, ex_comb_r_flush_ex)
599
                #print ''
600
                #if of_program_counter == 0x244:
601
                    #raw_input()
602
 
603
 
604
    return instances()
605
 
606
if __name__ == '__main__':
607 6 rockee
  if 0:
608
    tb = traceSignals(TopBench)
609
    Simulation(tb).run()
610
    #conversion.verify.simulator = 'icarus'
611
    #conversion.verify(TopBench)
612 2 rockee
  else:
613
    prepare()
614
    txd_line = Signal(False)
615
    rxd_line = Signal(False)
616
    txd_line2 = Signal(False)
617
    rxd_line2 = Signal(False)
618
    leds = Signal(intbv(0)[8:])
619
    reset = Signal(False)
620
    clock = Signal(False)
621
    size = int(log2(int(sys.argv[1]))) if len(sys.argv) > 1 else 4
622
    print 'size=%s' % size
623
    #toVHDL(uart_test_top, txd_line, rxd_line, leds, reset, clock)
624 6 rockee
    toVerilog(SysTop, txd_line, rxd_line, txd_line2, rxd_line2, leds, reset,
625
            clock, size=size, DEBUG=False)
626 2 rockee
 
627 6 rockee
 
628 2 rockee
 
629
### EOF ###
630
# vim:smarttab:sts=4:ts=4:sw=4:et:ai:tw=80:
631
 

powered by: WebSVN 2.1.0

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