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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.7/] [tools/] [tbench/] [rhrp/] [test_rhrp_int.tcl] - Diff between revs 32 and 33

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 32 Rev 33
# $Id: test_rhrp_int.tcl 692 2015-06-21 11:53:24Z mueller $
# $Id: test_rhrp_int.tcl 692 2015-06-21 11:53:24Z mueller $
#
#
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
#
#
# Revision History:
# Revision History:
# Date         Rev Version  Comment
# Date         Rev Version  Comment
# 2015-06-20   692   1.1.1  de-configure all drives at begin
# 2015-06-20   692   1.1.1  de-configure all drives at begin
# 2015-05-04   674   1.1    w11a start/stop/suspend overhaul
# 2015-05-04   674   1.1    w11a start/stop/suspend overhaul
# 2015-03-29   667   1.0    Initial version
# 2015-03-29   667   1.0    Initial version
#
#
# Test interrupt response 
# Test interrupt response 
#  A: 
#  A: 
 
 
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
rlc log "test_rhrp_int: test interrupt response ------------------------------"
rlc log "test_rhrp_int: test interrupt response ------------------------------"
rlc log "  setup: unit 0:RP06(mol), 1:RM05(mol,wrl), 2: RP07(mol=0), 3: off"
rlc log "  setup: unit 0:RP06(mol), 1:RM05(mol,wrl), 2: RP07(mol=0), 3: off"
package require ibd_rhrp
package require ibd_rhrp
ibd_rhrp::setup
ibd_rhrp::setup
 
 
rlc set statmask  $rw11::STAT_DEFMASK
rlc set statmask  $rw11::STAT_DEFMASK
rlc set statvalue 0
rlc set statvalue 0
 
 
# de-configure all drives (and clear errros and reset vv)
# de-configure all drives (and clear errros and reset vv)
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 0] \
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 0] \
        -wibr rpa.ds  [regbld ibd_rhrp::DS erp vv] \
        -wibr rpa.ds  [regbld ibd_rhrp::DS erp vv] \
        -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 1] \
        -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 1] \
        -wibr rpa.ds  [regbld ibd_rhrp::DS erp vv] \
        -wibr rpa.ds  [regbld ibd_rhrp::DS erp vv] \
        -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 2] \
        -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 2] \
        -wibr rpa.ds  [regbld ibd_rhrp::DS erp vv] \
        -wibr rpa.ds  [regbld ibd_rhrp::DS erp vv] \
        -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 3] \
        -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 3] \
        -wibr rpa.ds  [regbld ibd_rhrp::DS erp vv]
        -wibr rpa.ds  [regbld ibd_rhrp::DS erp vv]
 
 
# configure drives
# configure drives
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 0] \
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 0] \
        -wibr rpa.ds  [regbld ibd_rhrp::DS {dpr 1} mol] \
        -wibr rpa.ds  [regbld ibd_rhrp::DS {dpr 1} mol] \
        -wibr rpa.dt  $ibd_rhrp::DTE_RP06 \
        -wibr rpa.dt  $ibd_rhrp::DTE_RP06 \
        -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 1] \
        -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 1] \
        -wibr rpa.ds  [regbld ibd_rhrp::DS {dpr 1} mol wrl] \
        -wibr rpa.ds  [regbld ibd_rhrp::DS {dpr 1} mol wrl] \
        -wibr rpa.dt  $ibd_rhrp::DTE_RM05 \
        -wibr rpa.dt  $ibd_rhrp::DTE_RM05 \
        -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 2] \
        -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 2] \
        -wibr rpa.ds  [regbld ibd_rhrp::DS {dpr 1}] \
        -wibr rpa.ds  [regbld ibd_rhrp::DS {dpr 1}] \
        -wibr rpa.dt  $ibd_rhrp::DTE_RP07 \
        -wibr rpa.dt  $ibd_rhrp::DTE_RP07 \
        -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 3] \
        -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 3] \
        -wibr rpa.ds  [regbld ibd_rhrp::DS {dpr 0}]
        -wibr rpa.ds  [regbld ibd_rhrp::DS {dpr 0}]
 
 
# clear errors: cs1.tre=1 via unit 0
# clear errors: cs1.tre=1 via unit 0
$cpu cp -wma  rpa.cs2 [regbld ibd_rhrp::CS2 {unit 0}] \
$cpu cp -wma  rpa.cs2 [regbld ibd_rhrp::CS2 {unit 0}] \
        -wma  rpa.cs1 [regbld ibd_rhrp::CS1 tre] \
        -wma  rpa.cs1 [regbld ibd_rhrp::CS1 tre] \
        -wma  rpa.cs1 [ibd_rhrp::cs1_func $ibd_rhrp::FUNC_DCLR] \
        -wma  rpa.cs1 [ibd_rhrp::cs1_func $ibd_rhrp::FUNC_DCLR] \
        -wma  rpa.as  [regbld ibd_rhrp::AS u3 u2 u1 u0] \
        -wma  rpa.as  [regbld ibd_rhrp::AS u3 u2 u1 u0] \
        -rma  rpa.ds  -edata [regbld ibd_rhrp::DS dpr mol dry]
        -rma  rpa.ds  -edata [regbld ibd_rhrp::DS dpr mol dry]
 
 
# load test code
# load test code
$cpu ldasm -lst lst -sym sym {
$cpu ldasm -lst lst -sym sym {
        .include  |lib/defs_cpu.mac|
        .include  |lib/defs_cpu.mac|
        .include  |lib/defs_rp.mac|
        .include  |lib/defs_rp.mac|
;
;
        .include  |lib/vec_cpucatch.mac|
        .include  |lib/vec_cpucatch.mac|
;
;
        . = 000254              ; setup RHRP interrupt vector
        . = 000254              ; setup RHRP interrupt vector
v..rp:  .word vh.rp
v..rp:  .word vh.rp
        .word cp.pr7
        .word cp.pr7
;
;
        . = 1000                ; data area
        . = 1000                ; data area
stack:
stack:
ibuf:   .blkw  4.               ; input buffer
ibuf:   .blkw  4.               ; input buffer
rint:   .word  0                ; reinterrupt
rint:   .word  0                ; reinterrupt
;
;
icnt:   .word  0                ; interrupt count
icnt:   .word  0                ; interrupt count
pcnt:   .word  0                ; poll count
pcnt:   .word  0                ; poll count
obuf:   .blkw  6.               ; output buffer
obuf:   .blkw  6.               ; output buffer
fbuf:   .blkw  5.               ; final buffer
fbuf:   .blkw  5.               ; final buffer
;
;
        . = 2000                ; code area
        . = 2000                ; code area
start:  spl     7               ; lock out interrupts
start:  spl     7               ; lock out interrupts
        clr     icnt            ; clear counters
        clr     icnt            ; clear counters
        clr     pcnt
        clr     pcnt
;
;
        mov     #obuf,r0        ; clear obuf 
        mov     #obuf,r0        ; clear obuf 
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     r5              ; r5 used to time int delay
        clr     r5              ; r5 used to time int delay
;
;
        mov     #ibuf,r0        ; setup regs from ibuf
        mov     #ibuf,r0        ; setup regs from ibuf
        mov     (r0)+,@#rp.cs2  ;   cs2
        mov     (r0)+,@#rp.cs2  ;   cs2
        mov     (r0)+,@#rp.da   ;   da
        mov     (r0)+,@#rp.da   ;   da
        mov     (r0)+,@#rp.dc   ;   dc
        mov     (r0)+,@#rp.dc   ;   dc
        mov     (r0)+,@#rp.cs1  ;   cs1
        mov     (r0)+,@#rp.cs1  ;   cs1
        spl     0               ; allow interrupts
        spl     0               ; allow interrupts
;
;
        inc     r5              ; time int delay, up to 10 instructions
        inc     r5              ; time int delay, up to 10 instructions
        inc     r5
        inc     r5
        inc     r5
        inc     r5
        inc     r5
        inc     r5
        inc     r5
        inc     r5
        inc     r5
        inc     r5
        inc     r5
        inc     r5
        inc     r5
        inc     r5
        inc     r5
        inc     r5
        inc     r5
        inc     r5
;
;
poll:   inc     pcnt            ; count polls
poll:   inc     pcnt            ; count polls
        tstb    @#rp.cs1        ; check cs1 rdy
        tstb    @#rp.cs1        ; check cs1 rdy
        bpl     poll            ; if rdy=0 keep polling
        bpl     poll            ; if rdy=0 keep polling
        tst     icnt            ; did we have an interrupt ?
        tst     icnt            ; did we have an interrupt ?
        bne     1$              ;
        bne     1$              ;
;
;
        mov     #obuf,r0        ; store regs in obuf
        mov     #obuf,r0        ; store regs in obuf
        mov     @#rp.cs1,(r0)+  ;   cs1
        mov     @#rp.cs1,(r0)+  ;   cs1
        mov     @#rp.cs2,(r0)+  ;   cs2
        mov     @#rp.cs2,(r0)+  ;   cs2
        mov     @#rp.er1,(r0)+  ;   er1
        mov     @#rp.er1,(r0)+  ;   er1
        mov     @#rp.ds,(r0)+   ;   ds
        mov     @#rp.ds,(r0)+   ;   ds
        mov     @#rp.as,(r0)+   ;   as
        mov     @#rp.as,(r0)+   ;   as
;
;
1$:     tst     rint            ; re-interrupt wanted ?
1$:     tst     rint            ; re-interrupt wanted ?
        bne     2$              ;
        bne     2$              ;
        mov     #377,@#rp.as    ; if not, cancel all attentions
        mov     #377,@#rp.as    ; if not, cancel all attentions
        clr     rint
        clr     rint
;
;
2$:     bit     #rp.erp,@#rp.ds ; ds.erp = 1 ? any controller errors ?
2$:     bit     #rp.erp,@#rp.ds ; ds.erp = 1 ? any controller errors ?
        beq     3$
        beq     3$
        mov     #<rp.fcl+rp.go>,@#rp.cs1 ; than do drive clear 
        mov     #<rp.fcl+rp.go>,@#rp.cs1 ; than do drive clear 
;
;
3$:     bit     #rp.tre,@#rp.cs1 ; cs1.tre = 1 ? any transfer errors ?
3$:     bit     #rp.tre,@#rp.cs1 ; cs1.tre = 1 ? any transfer errors ?
        beq     4$
        beq     4$
        mov     #rp.tre,@#rp.cs1 ; if yes, clear them with tre=1 write
        mov     #rp.tre,@#rp.cs1 ; if yes, clear them with tre=1 write
;
;
4$:     mov     #fbuf,r0        ; store final regs in fbuf
4$:     mov     #fbuf,r0        ; store final regs in fbuf
        mov     @#rp.cs1,(r0)+  ;   cs1
        mov     @#rp.cs1,(r0)+  ;   cs1
        mov     @#rp.cs2,(r0)+  ;   cs2
        mov     @#rp.cs2,(r0)+  ;   cs2
        mov     @#rp.er1,(r0)+  ;   er1
        mov     @#rp.er1,(r0)+  ;   er1
        mov     @#rp.ds,(r0)+   ;   ds
        mov     @#rp.ds,(r0)+   ;   ds
        mov     @#rp.as,(r0)+   ;   as
        mov     @#rp.as,(r0)+   ;   as
 
 
        halt                    ; halt if done
        halt                    ; halt if done
stop:
stop:
;
;
        clr     pcnt            ; clear pcnt again
        clr     pcnt            ; clear pcnt again
        mov     #obuf,r0        ; clear obuf again
        mov     #obuf,r0        ; clear obuf again
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
        clr     (r0)+
;
;
        mov     #rp.ie,@#rp.cs1 ; re-enable interrupt
        mov     #rp.ie,@#rp.cs1 ; re-enable interrupt
        br      poll
        br      poll
 
 
; RHRP interrupt handler
; RHRP interrupt handler
vh.rp:  mov     #obuf,r0        ; store regs in obuf
vh.rp:  mov     #obuf,r0        ; store regs in obuf
        mov     @#rp.cs1,(r0)+  ;   cs1
        mov     @#rp.cs1,(r0)+  ;   cs1
        mov     @#rp.cs2,(r0)+  ;   cs2
        mov     @#rp.cs2,(r0)+  ;   cs2
        mov     @#rp.er1,(r0)+  ;   er1
        mov     @#rp.er1,(r0)+  ;   er1
        mov     @#rp.ds,(r0)+   ;   ds
        mov     @#rp.ds,(r0)+   ;   ds
        mov     @#rp.as,r1      ;   
        mov     @#rp.as,r1      ;   
        mov     r1,(r0)+        ;   as
        mov     r1,(r0)+        ;   as
        mov     r5,(r0)+        ;   int delay
        mov     r5,(r0)+        ;   int delay
;
;
1$:     tst     icnt            ; test first interrupt
1$:     tst     icnt            ; test first interrupt
        beq     2$              ; if yes quit
        beq     2$              ; if yes quit
        mov     r1,@#rp.as      ; if not, clear as
        mov     r1,@#rp.as      ; if not, clear as
2$:     inc     icnt            ; count interrupts
2$:     inc     icnt            ; count interrupts
        rti                     ; and return
        rti                     ; and return
}
}
 
 
##puts $lst
##puts $lst
 
 
# define tmpproc for readback checks
# define tmpproc for readback checks
proc tmpproc_dotest {cpu symName opts} {
proc tmpproc_dotest {cpu symName opts} {
  upvar 1 $symName sym
  upvar 1 $symName sym
 
 
  set tout 10.;                   # FIXME_code: parameter ??
  set tout 10.;                   # FIXME_code: parameter ??
 
 
# setup defs hash, first defaults, than write over concrete run values  
# setup defs hash, first defaults, than write over concrete run values  
  array set defs { i.cs2    0 \
  array set defs { i.cs2    0 \
                   i.da     0 \
                   i.da     0 \
                   i.dc     0 \
                   i.dc     0 \
                   i.cs1    0 \
                   i.cs1    0 \
                   i.idly   0 \
                   i.idly   0 \
                   o.cs1    0 \
                   o.cs1    0 \
                   o.cs2    0 \
                   o.cs2    0 \
                   o.er1    0 \
                   o.er1    0 \
                   o.ds     0 \
                   o.ds     0 \
                   o.as     0 \
                   o.as     0 \
                   o.itim  10 \
                   o.itim  10 \
                   o.icnt   0 \
                   o.icnt   0 \
                   o.pcnt   1 \
                   o.pcnt   1 \
                   or.cs1   0 \
                   or.cs1   0 \
                   or.cs2   0 \
                   or.cs2   0 \
                   or.er1   0 \
                   or.er1   0 \
                   or.ds    0 \
                   or.ds    0 \
                   or.as    0 \
                   or.as    0 \
                   or.icnt  0 \
                   or.icnt  0 \
                   or.pcnt  1 \
                   or.pcnt  1 \
                   do.rint  0 \
                   do.rint  0 \
                   do.lam   0
                   do.lam   0
                 }
                 }
  array set defs $opts
  array set defs $opts
 
 
  # build ibuf
  # build ibuf
  set ibuf [list $defs(i.cs2) $defs(i.da) $defs(i.dc) $defs(i.cs1) \
  set ibuf [list $defs(i.cs2) $defs(i.da) $defs(i.dc) $defs(i.cs1) \
              $defs(do.rint)]
              $defs(do.rint)]
 
 
  # setup idly, write ibuf, setup stack, and start cpu at start:
  # setup idly, write ibuf, setup stack, and start cpu at start:
  $cpu cp -wibr rpa.cs1 [regbld ibd_rhrp::RCS1 \
  $cpu cp -wibr rpa.cs1 [regbld ibd_rhrp::RCS1 \
                           [list val $defs(i.idly)] \
                           [list val $defs(i.idly)] \
                           [list func $ibd_rhrp::RFUNC_WIDLY] ] \
                           [list func $ibd_rhrp::RFUNC_WIDLY] ] \
          -wal   $sym(ibuf) \
          -wal   $sym(ibuf) \
          -bwm   $ibuf \
          -bwm   $ibuf \
          -wsp   $sym(stack) \
          -wsp   $sym(stack) \
          -stapc $sym(start)
          -stapc $sym(start)
 
 
  # here do minimal lam handling (harvest + send DONE)
  # here do minimal lam handling (harvest + send DONE)
  if {$defs(do.lam)} {
  if {$defs(do.lam)} {
    rlc wtlam $tout apat
    rlc wtlam $tout apat
    $cpu cp -attn \
    $cpu cp -attn \
            -wibr rpa.cs1 [ibd_rhrp::cs1_func $ibd_rhrp::RFUNC_DONE]
            -wibr rpa.cs1 [ibd_rhrp::cs1_func $ibd_rhrp::RFUNC_DONE]
  }
  }
 
 
  $cpu wtcpu -reset $tout
  $cpu wtcpu -reset $tout
 
 
  # determine regs after cleanup
  # determine regs after cleanup
  set cs1msk [rutil::com16 [regbld ibd_rhrp::CS1 {func -1}]]
  set cs1msk [rutil::com16 [regbld ibd_rhrp::CS1 {func -1}]]
  set fcs2   [expr {$defs(o.cs2) & 0x00ff}]; # cs1.tre clears upper byte !
  set fcs2   [expr {$defs(o.cs2) & 0x00ff}]; # cs1.tre clears upper byte !
  set fer1   0
  set fer1   0
  if {!$defs(do.rint)} {        # no reinterrupt, ata clear by cpu
  if {!$defs(do.rint)} {        # no reinterrupt, ata clear by cpu
    set fcs1   [expr {$defs(o.cs1) & ~[regbld ibd_rhrp::CS1 sc tre {func -1}] }]
    set fcs1   [expr {$defs(o.cs1) & ~[regbld ibd_rhrp::CS1 sc tre {func -1}] }]
    set fds    [expr {$defs(o.ds) & ~[regbld ibd_rhrp::DS ata erp] }]
    set fds    [expr {$defs(o.ds) & ~[regbld ibd_rhrp::DS ata erp] }]
    set fas    0
    set fas    0
  } else {                      # reinterrupt, ata still pending
  } else {                      # reinterrupt, ata still pending
    set fcs1   [expr {$defs(o.cs1) & ~[regbld ibd_rhrp::CS1 tre {func -1}] }]
    set fcs1   [expr {$defs(o.cs1) & ~[regbld ibd_rhrp::CS1 tre {func -1}] }]
    set fds    [expr {$defs(o.ds) & ~[regbld ibd_rhrp::DS erp] }]
    set fds    [expr {$defs(o.ds) & ~[regbld ibd_rhrp::DS erp] }]
    set fas    $defs(o.as)
    set fas    $defs(o.as)
  }
  }
  $cpu cp -rpc   -edata $sym(stop) \
  $cpu cp -rpc   -edata $sym(stop) \
          -rsp   -edata $sym(stack) \
          -rsp   -edata $sym(stack) \
          -wal   $sym(icnt) \
          -wal   $sym(icnt) \
          -rmi   -edata $defs(o.icnt) \
          -rmi   -edata $defs(o.icnt) \
          -rmi    \
          -rmi    \
          -rmi   -edata $defs(o.cs1)  \
          -rmi   -edata $defs(o.cs1)  \
          -rmi   -edata $defs(o.cs2)  \
          -rmi   -edata $defs(o.cs2)  \
          -rmi   -edata $defs(o.er1)  \
          -rmi   -edata $defs(o.er1)  \
          -rmi   -edata $defs(o.ds)   \
          -rmi   -edata $defs(o.ds)   \
          -rmi   -edata $defs(o.as)   \
          -rmi   -edata $defs(o.as)   \
          -rmi   -edata $defs(o.itim) \
          -rmi   -edata $defs(o.itim) \
          -rmi   -edata $fcs1 $cs1msk \
          -rmi   -edata $fcs1 $cs1msk \
          -rmi   -edata $fcs2 \
          -rmi   -edata $fcs2 \
          -rmi   -edata $fer1 \
          -rmi   -edata $fer1 \
          -rmi   -edata $fds  \
          -rmi   -edata $fds  \
          -rmi   -edata $fas
          -rmi   -edata $fas
 
 
  if {!$defs(do.rint)} return "";
  if {!$defs(do.rint)} return "";
 
 
  $cpu cp -start
  $cpu cp -start
 
 
  $cpu wtcpu -reset $tout
  $cpu wtcpu -reset $tout
 
 
  # determine regs after cleanup
  # determine regs after cleanup
  set fcs1   [expr {$defs(or.cs1) & ~[regbld ibd_rhrp::CS1 sc] }]
  set fcs1   [expr {$defs(or.cs1) & ~[regbld ibd_rhrp::CS1 sc] }]
  set fcs2   $defs(or.cs2)
  set fcs2   $defs(or.cs2)
  set fer1   0
  set fer1   0
  set fds    [expr {$defs(or.ds) & ~[regbld ibd_rhrp::DS ata] }]
  set fds    [expr {$defs(or.ds) & ~[regbld ibd_rhrp::DS ata] }]
  set fas    0
  set fas    0
 
 
  $cpu cp -rpc   -edata $sym(stop) \
  $cpu cp -rpc   -edata $sym(stop) \
          -rsp   -edata $sym(stack) \
          -rsp   -edata $sym(stack) \
          -wal   $sym(icnt) \
          -wal   $sym(icnt) \
          -rmi   -edata $defs(or.icnt) \
          -rmi   -edata $defs(or.icnt) \
          -rmi    \
          -rmi    \
          -rmi   -edata $defs(or.cs1) \
          -rmi   -edata $defs(or.cs1) \
          -rmi   -edata $defs(or.cs2) \
          -rmi   -edata $defs(or.cs2) \
          -rmi   -edata $defs(or.er1) \
          -rmi   -edata $defs(or.er1) \
          -rmi   -edata $defs(or.ds)  \
          -rmi   -edata $defs(or.ds)  \
          -rmi   -edata $defs(or.as)  \
          -rmi   -edata $defs(or.as)  \
          -rmi   \
          -rmi   \
          -rmi   -edata $fcs1 \
          -rmi   -edata $fcs1 \
          -rmi   -edata $fcs2 \
          -rmi   -edata $fcs2 \
          -rmi   -edata $fer1 \
          -rmi   -edata $fer1 \
          -rmi   -edata $fds  \
          -rmi   -edata $fds  \
          -rmi   -edata $fas
          -rmi   -edata $fas
 
 
  return ""
  return ""
}
}
 
 
# discard pending attn to be on save side
# discard pending attn to be on save side
rlc wtlam 0.
rlc wtlam 0.
rlc exec -attn
rlc exec -attn
 
 
# -- Section A ---------------------------------------------------------------
# -- Section A ---------------------------------------------------------------
rlc log "  A -- function basics ----------------------------------------------"
rlc log "  A -- function basics ----------------------------------------------"
rlc log "  A1: test rdy and ie logic ---------------------------------"
rlc log "  A1: test rdy and ie logic ---------------------------------"
rlc log "    A1.1 set cs1.ie=1 alone -> no interrupt ------------"
rlc log "    A1.1 set cs1.ie=1 alone -> no interrupt ------------"
 
 
# Note: no interrupt, so ie stays on !
# Note: no interrupt, so ie stays on !
set opts [list \
set opts [list \
            i.cs1   [regbld ibd_rhrp::CS1 ie] \
            i.cs1   [regbld ibd_rhrp::CS1 ie] \
            o.icnt  0 \
            o.icnt  0 \
            o.cs1   [regbld ibd_rhrp::CS1 dva rdy ie] \
            o.cs1   [regbld ibd_rhrp::CS1 dva rdy ie] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.er1   0 \
            o.er1   0 \
            o.ds    [regbld ibd_rhrp::DS mol dpr dry] \
            o.ds    [regbld ibd_rhrp::DS mol dpr dry] \
            o.as    0 \
            o.as    0 \
            o.itim  0
            o.itim  0
         ]
         ]
tmpproc_dotest $cpu sym $opts
tmpproc_dotest $cpu sym $opts
 
 
rlc log "    A1.2 set cs1.ie=1 with rdy=1 -> software interrupt -"
rlc log "    A1.2 set cs1.ie=1 with rdy=1 -> software interrupt -"
 
 
# Note: interrupt, so ie switched off again !
# Note: interrupt, so ie switched off again !
set opts [list \
set opts [list \
            i.cs1   [regbld ibd_rhrp::CS1 rdy ie] \
            i.cs1   [regbld ibd_rhrp::CS1 rdy ie] \
            o.icnt  1 \
            o.icnt  1 \
            o.cs1   [regbld ibd_rhrp::CS1 dva rdy] \
            o.cs1   [regbld ibd_rhrp::CS1 dva rdy] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.er1   0 \
            o.er1   0 \
            o.ds    [regbld ibd_rhrp::DS mol dpr dry] \
            o.ds    [regbld ibd_rhrp::DS mol dpr dry] \
            o.as    0 \
            o.as    0 \
            o.itim  1
            o.itim  1
         ]
         ]
 
 
tmpproc_dotest $cpu sym $opts
tmpproc_dotest $cpu sym $opts
 
 
rlc log "  A2: test state functions: iff no, as yes ------------------"
rlc log "  A2: test state functions: iff no, as yes ------------------"
rlc log "    A2.1 noop function ---------------------------------"
rlc log "    A2.1 noop function ---------------------------------"
 
 
set opts [list \
set opts [list \
            i.cs1   [regbld ibd_rhrp::CS1 ie go] \
            i.cs1   [regbld ibd_rhrp::CS1 ie go] \
            o.cs1   [regbld ibd_rhrp::CS1 ie dva rdy] \
            o.cs1   [regbld ibd_rhrp::CS1 ie dva rdy] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.er1   0 \
            o.er1   0 \
            o.ds    [regbld ibd_rhrp::DS mol dpr dry] \
            o.ds    [regbld ibd_rhrp::DS mol dpr dry] \
            o.as    0 \
            o.as    0 \
            o.itim  0
            o.itim  0
         ]
         ]
tmpproc_dotest $cpu sym $opts
tmpproc_dotest $cpu sym $opts
 
 
rlc log "    A2.2 pack acknowledge function (sets ds.vv=1) ------"
rlc log "    A2.2 pack acknowledge function (sets ds.vv=1) ------"
 
 
set rbcs1func [list func $ibd_rhrp::FUNC_PACK]
set rbcs1func [list func $ibd_rhrp::FUNC_PACK]
set opts [list \
set opts [list \
            i.cs1   [regbld ibd_rhrp::CS1 $rbcs1func ie go] \
            i.cs1   [regbld ibd_rhrp::CS1 $rbcs1func ie go] \
            o.cs1   [regbld ibd_rhrp::CS1 dva rdy ie $rbcs1func] \
            o.cs1   [regbld ibd_rhrp::CS1 dva rdy ie $rbcs1func] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.er1   0 \
            o.er1   0 \
            o.ds    [regbld ibd_rhrp::DS mol dpr dry vv] \
            o.ds    [regbld ibd_rhrp::DS mol dpr dry vv] \
            o.as    0 \
            o.as    0 \
            o.itim  0
            o.itim  0
         ]
         ]
tmpproc_dotest $cpu sym $opts
tmpproc_dotest $cpu sym $opts
 
 
rlc log "  A3: test seek type functions: iff no, as yes --------------"
rlc log "  A3: test seek type functions: iff no, as yes --------------"
 
 
rlc log "    A3.1 seek function, ie=0, valid da,dc---------------"
rlc log "    A3.1 seek function, ie=0, valid da,dc---------------"
 
 
# check that cs1.sc=1, ds.ata=1, and as.u0=1
# check that cs1.sc=1, ds.ata=1, and as.u0=1
set rbcs1func [list func $ibd_rhrp::FUNC_SEEK]
set rbcs1func [list func $ibd_rhrp::FUNC_SEEK]
set opts [list \
set opts [list \
            i.cs1   [regbld ibd_rhrp::CS1 $rbcs1func go] \
            i.cs1   [regbld ibd_rhrp::CS1 $rbcs1func go] \
            o.cs1   [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \
            o.cs1   [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.er1   0 \
            o.er1   0 \
            o.ds    [regbld ibd_rhrp::DS ata mol dpr dry vv] \
            o.ds    [regbld ibd_rhrp::DS ata mol dpr dry vv] \
            o.as    [regbld ibd_rhrp::AS u0] \
            o.as    [regbld ibd_rhrp::AS u0] \
            o.itim  0
            o.itim  0
         ]
         ]
tmpproc_dotest $cpu sym $opts
tmpproc_dotest $cpu sym $opts
 
 
rlc log "    A3.2 seek function, valid da,dc, idly=0 ------------"
rlc log "    A3.2 seek function, valid da,dc, idly=0 ------------"
 
 
# check re-interrupt too
# check re-interrupt too
set rbcs1func [list func $ibd_rhrp::FUNC_SEEK]
set rbcs1func [list func $ibd_rhrp::FUNC_SEEK]
set opts [list \
set opts [list \
            i.cs1   [regbld ibd_rhrp::CS1 ie $rbcs1func go] \
            i.cs1   [regbld ibd_rhrp::CS1 ie $rbcs1func go] \
            i.dc    814 \
            i.dc    814 \
            i.idly  0 \
            i.idly  0 \
            o.icnt  1 \
            o.icnt  1 \
            o.cs1   [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \
            o.cs1   [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.er1   0 \
            o.er1   0 \
            o.ds    [regbld ibd_rhrp::DS ata mol dpr dry vv] \
            o.ds    [regbld ibd_rhrp::DS ata mol dpr dry vv] \
            o.as    [regbld ibd_rhrp::AS u0] \
            o.as    [regbld ibd_rhrp::AS u0] \
            o.itim  1 \
            o.itim  1 \
            do.rint 1 \
            do.rint 1 \
            or.icnt 2 \
            or.icnt 2 \
            or.cs1  [regbld ibd_rhrp::CS1 sc dva rdy] \
            or.cs1  [regbld ibd_rhrp::CS1 sc dva rdy] \
            or.cs2  [regbld ibd_rhrp::CS2 or ir] \
            or.cs2  [regbld ibd_rhrp::CS2 or ir] \
            or.er1  0 \
            or.er1  0 \
            or.ds   [regbld ibd_rhrp::DS ata mol dpr dry vv] \
            or.ds   [regbld ibd_rhrp::DS ata mol dpr dry vv] \
            or.as   [regbld ibd_rhrp::AS u0]
            or.as   [regbld ibd_rhrp::AS u0]
         ]
         ]
tmpproc_dotest $cpu sym $opts
tmpproc_dotest $cpu sym $opts
 
 
rlc log "    A3.3 seek function, invalid dc ---------------------"
rlc log "    A3.3 seek function, invalid dc ---------------------"
 
 
set rbcs1func [list func $ibd_rhrp::FUNC_SEEK]
set rbcs1func [list func $ibd_rhrp::FUNC_SEEK]
set opts [list \
set opts [list \
            i.cs1   [regbld ibd_rhrp::CS1 ie $rbcs1func go] \
            i.cs1   [regbld ibd_rhrp::CS1 ie $rbcs1func go] \
            i.dc    815 \
            i.dc    815 \
            o.icnt  1 \
            o.icnt  1 \
            o.cs1   [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \
            o.cs1   [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.er1   [regbld ibd_rhrp::ER1 iae] \
            o.er1   [regbld ibd_rhrp::ER1 iae] \
            o.ds    [regbld ibd_rhrp::DS ata erp mol dpr dry vv] \
            o.ds    [regbld ibd_rhrp::DS ata erp mol dpr dry vv] \
            o.as    [regbld ibd_rhrp::AS u0] \
            o.as    [regbld ibd_rhrp::AS u0] \
            o.itim  1
            o.itim  1
         ]
         ]
tmpproc_dotest $cpu sym $opts
tmpproc_dotest $cpu sym $opts
 
 
rlc log "    A3.4 search function, valid da,dc, idly=0 ----------"
rlc log "    A3.4 search function, valid da,dc, idly=0 ----------"
 
 
set rbcs1func [list func $ibd_rhrp::FUNC_SEAR]
set rbcs1func [list func $ibd_rhrp::FUNC_SEAR]
set opts [list \
set opts [list \
            i.cs1   [regbld ibd_rhrp::CS1 ie $rbcs1func go] \
            i.cs1   [regbld ibd_rhrp::CS1 ie $rbcs1func go] \
            i.dc    0 \
            i.dc    0 \
            i.da    [regbld ibd_rhrp::DA {ta 0} {sa 21}] \
            i.da    [regbld ibd_rhrp::DA {ta 0} {sa 21}] \
            i.idly  0 \
            i.idly  0 \
            o.icnt  1 \
            o.icnt  1 \
            o.cs1   [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \
            o.cs1   [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.er1   0 \
            o.er1   0 \
            o.ds    [regbld ibd_rhrp::DS ata mol dpr dry vv] \
            o.ds    [regbld ibd_rhrp::DS ata mol dpr dry vv] \
            o.as    [regbld ibd_rhrp::AS u0] \
            o.as    [regbld ibd_rhrp::AS u0] \
            o.itim  1
            o.itim  1
         ]
         ]
tmpproc_dotest $cpu sym $opts
tmpproc_dotest $cpu sym $opts
 
 
rlc log "    A3.5 search function, valid da,dc, idly=2 ----------"
rlc log "    A3.5 search function, valid da,dc, idly=2 ----------"
 
 
set rbcs1func [list func $ibd_rhrp::FUNC_SEAR]
set rbcs1func [list func $ibd_rhrp::FUNC_SEAR]
set opts [list \
set opts [list \
            i.cs1   [regbld ibd_rhrp::CS1 ie $rbcs1func go] \
            i.cs1   [regbld ibd_rhrp::CS1 ie $rbcs1func go] \
            i.dc    0 \
            i.dc    0 \
            i.da    [regbld ibd_rhrp::DA {ta 0} {sa 21}] \
            i.da    [regbld ibd_rhrp::DA {ta 0} {sa 21}] \
            i.idly  2 \
            i.idly  2 \
            o.icnt  1 \
            o.icnt  1 \
            o.cs1   [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \
            o.cs1   [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.er1   0 \
            o.er1   0 \
            o.ds    [regbld ibd_rhrp::DS ata mol dpr dry vv] \
            o.ds    [regbld ibd_rhrp::DS ata mol dpr dry vv] \
            o.as    [regbld ibd_rhrp::AS u0] \
            o.as    [regbld ibd_rhrp::AS u0] \
            o.itim  3
            o.itim  3
         ]
         ]
tmpproc_dotest $cpu sym $opts
tmpproc_dotest $cpu sym $opts
 
 
rlc log "    A3.5 search function, valid da,dc, idly=8 ----------"
rlc log "    A3.5 search function, valid da,dc, idly=8 ----------"
 
 
set rbcs1func [list func $ibd_rhrp::FUNC_SEAR]
set rbcs1func [list func $ibd_rhrp::FUNC_SEAR]
set opts [list \
set opts [list \
            i.cs1   [regbld ibd_rhrp::CS1 ie $rbcs1func go] \
            i.cs1   [regbld ibd_rhrp::CS1 ie $rbcs1func go] \
            i.dc    0 \
            i.dc    0 \
            i.da    [regbld ibd_rhrp::DA {ta 0} {sa 21}] \
            i.da    [regbld ibd_rhrp::DA {ta 0} {sa 21}] \
            i.idly  8 \
            i.idly  8 \
            o.icnt  1 \
            o.icnt  1 \
            o.cs1   [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \
            o.cs1   [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.er1   0 \
            o.er1   0 \
            o.ds    [regbld ibd_rhrp::DS ata mol dpr dry vv] \
            o.ds    [regbld ibd_rhrp::DS ata mol dpr dry vv] \
            o.as    [regbld ibd_rhrp::AS u0] \
            o.as    [regbld ibd_rhrp::AS u0] \
            o.itim  9
            o.itim  9
         ]
         ]
tmpproc_dotest $cpu sym $opts
tmpproc_dotest $cpu sym $opts
 
 
rlc log "    A3.5 search function, invalid sa, idly=8 -----------"
rlc log "    A3.5 search function, invalid sa, idly=8 -----------"
# Note: idly is 8, but error ata's come immediately !!
# Note: idly is 8, but error ata's come immediately !!
 
 
set rbcs1func [list func $ibd_rhrp::FUNC_SEAR]
set rbcs1func [list func $ibd_rhrp::FUNC_SEAR]
set opts [list \
set opts [list \
            i.cs1   [regbld ibd_rhrp::CS1 ie $rbcs1func go] \
            i.cs1   [regbld ibd_rhrp::CS1 ie $rbcs1func go] \
            i.dc    0 \
            i.dc    0 \
            i.da    [regbld ibd_rhrp::DA {ta 0} {sa 22}] \
            i.da    [regbld ibd_rhrp::DA {ta 0} {sa 22}] \
            i.idly  8 \
            i.idly  8 \
            o.icnt  1 \
            o.icnt  1 \
            o.cs1   [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \
            o.cs1   [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.er1   [regbld ibd_rhrp::ER1 iae] \
            o.er1   [regbld ibd_rhrp::ER1 iae] \
            o.ds    [regbld ibd_rhrp::DS ata erp mol dpr dry vv] \
            o.ds    [regbld ibd_rhrp::DS ata erp mol dpr dry vv] \
            o.as    [regbld ibd_rhrp::AS u0] \
            o.as    [regbld ibd_rhrp::AS u0] \
            o.itim  1
            o.itim  1
         ]
         ]
tmpproc_dotest $cpu sym $opts
tmpproc_dotest $cpu sym $opts
 
 
rlc log "  A4: test transfer functions: iff yes, as no ---------------"
rlc log "  A4: test transfer functions: iff yes, as no ---------------"
rlc log "    A4.1 read function, valid da,dc --------------------"
rlc log "    A4.1 read function, valid da,dc --------------------"
 
 
set rbcs1func [list func $ibd_rhrp::FUNC_READ]
set rbcs1func [list func $ibd_rhrp::FUNC_READ]
set opts [list \
set opts [list \
            i.cs1   [regbld ibd_rhrp::CS1 ie $rbcs1func go] \
            i.cs1   [regbld ibd_rhrp::CS1 ie $rbcs1func go] \
            o.icnt  1 \
            o.icnt  1 \
            o.cs1   [regbld ibd_rhrp::CS1 dva rdy $rbcs1func] \
            o.cs1   [regbld ibd_rhrp::CS1 dva rdy $rbcs1func] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.cs2   [regbld ibd_rhrp::CS2 or ir] \
            o.ds    [regbld ibd_rhrp::DS mol dpr dry vv] \
            o.ds    [regbld ibd_rhrp::DS mol dpr dry vv] \
            do.lam  1
            do.lam  1
         ]
         ]
tmpproc_dotest $cpu sym $opts
tmpproc_dotest $cpu sym $opts
 
 
 
 

powered by: WebSVN 2.1.0

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