URL
https://opencores.org/ocsvn/w11/w11/trunk
Subversion Repositories w11
Compare Revisions
- This comparison shows the changes necessary to convert path
/w11
- from Rev 34 to Rev 33
- ↔ Reverse comparison
Rev 34 → Rev 33
/trunk/tools/asm-11/lib/vec_cpucatch_reset.mac
File deleted
/trunk/tools/asm-11/lib/vec_devcatch_reset.mac
File deleted
/trunk/tools/asm-11/lib/defs_mmu.mac
File deleted
/trunk/tools/asm-11/lib/tcode_std_base.mac
File deleted
/trunk/tools/asm-11/lib/defs_nzvc.mac
File deleted
/trunk/tools/asm-11/lib/tcode_std_start.mac
File deleted
/trunk/tools/asm-11/lib/vec_devcatch.mac
File deleted
/trunk/tools/asm-11/lib/defs_reg70.mac
File deleted
/trunk/tools/asm-11/lib/vec_cpucatch.mac
1,8 → 1,8
; $Id: vec_cpucatch.mac 710 2015-08-31 06:19:56Z mueller $ |
; $Id: vec_cpucatch.mac 503 2013-04-06 19:44:13Z mueller $ |
; Copyright 2013- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory |
; |
; vector catcher for basic cpu interrupts |
; vector catcher for the basic cpu interrupts |
; |
. = 000004 |
v..iit: .word v..iit+2 ; vec 4 |
/trunk/tools/asm-11/tests/test_0190_dot.mac
File deleted
/trunk/tools/tcl/ibd_pc11/.cvsignore
File deleted
/trunk/tools/tcl/ibd_pc11/util.tcl
File deleted
trunk/tools/tcl/ibd_pc11
Property changes :
Deleted: svn:ignore
## -1,34 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_tsi.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-pkgIndex.tcl
Index: trunk/tools/tcl/ibd_rl11/.cvsignore
===================================================================
--- trunk/tools/tcl/ibd_rl11/.cvsignore (revision 34)
+++ trunk/tools/tcl/ibd_rl11/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-pkgIndex.tcl
Index: trunk/tools/tcl/ibd_rl11/util.tcl
===================================================================
--- trunk/tools/tcl/ibd_rl11/util.tcl (revision 34)
+++ trunk/tools/tcl/ibd_rl11/util.tcl (nonexistent)
@@ -1,47 +0,0 @@
-# $Id: util.tcl 719 2015-12-27 09:45:43Z mueller $
-#
-# Copyright 2015- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2015-12-26 719 1.0 Initial version
-#
-
-package provide ibd_rl11 1.0
-
-package require rlink
-package require rw11util
-package require rw11
-
-namespace eval ibd_rl11 {
- #
- # setup register descriptions for ibd_rl11 ---------------------------------
- #
-
- regdsc CS {err 15} {de 14} {e 13 4} {ds 9 2} {crdy 7} {ie 6} {ba 5 2} \
- {func 3 3 "s:NOOP:WCHK:GS:SEEK:RHDR:WR:RD:RNHC"} \
- {drdy 0}
- regdsc RCS {mprem 15 5} {mploc 10 3} {ena_mprem 5} {ena_mploc 4}
-
- variable FUNC_NOOP [bvi b3 "000"]
- variable FUNC_WCHK [bvi b3 "001"]
- variable FUNC_GS [bvi b3 "010"]
- variable FUNC_SEEK [bvi b3 "011"]
- variable FUNC_RHDR [bvi b3 "100"]
- variable FUNC_WR [bvi b3 "101"]
- variable FUNC_RD [bvi b3 "110"]
- variable FUNC_RNHC [bvi b3 "111"]
-
- rw11util::regmap_add ibd_rl11 rl?.cs {l? CS r? RCS}
-
- variable ANUM 5
-}
Index: trunk/tools/tcl/ibd_rl11
===================================================================
--- trunk/tools/tcl/ibd_rl11 (revision 34)
+++ trunk/tools/tcl/ibd_rl11 (nonexistent)
trunk/tools/tcl/ibd_rl11
Property changes :
Deleted: svn:ignore
## -1,34 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_tsi.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-pkgIndex.tcl
Index: trunk/tools/tcl/ibd_rk11/.cvsignore
===================================================================
--- trunk/tools/tcl/ibd_rk11/.cvsignore (revision 34)
+++ trunk/tools/tcl/ibd_rk11/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-pkgIndex.tcl
Index: trunk/tools/tcl/ibd_rk11/util.tcl
===================================================================
--- trunk/tools/tcl/ibd_rk11/util.tcl (revision 34)
+++ trunk/tools/tcl/ibd_rk11/util.tcl (nonexistent)
@@ -1,57 +0,0 @@
-# $Id: util.tcl 719 2015-12-27 09:45:43Z mueller $
-#
-# Copyright 2015- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2015-12-26 719 1.0 Initial version
-#
-
-package provide ibd_rk11 1.0
-
-package require rlink
-package require rw11util
-package require rw11
-
-namespace eval ibd_rk11 {
- #
- # setup register descriptions for ibd_rk11 ---------------------------------
- #
-
- regdsc DS {id 15 3} {hden 11} {dru 10} {sin 9} {sok 8} {dry 7} \
- {adry 6} {wps 5} {scsa 4} {sc 3 4}
- regdsc ER {dre 15} {ovr 14} {wlo 13} {pge 11} \
- {nxm 10} {nxd 7} {nxc 6} {nxs 5} {cse 1} {wce 0}
- regdsc CS {err 15} {he 14} {scp 13} {maint 12} {iba 11} {fmt 10} \
- {rwa 9} {sse 8} {rdy 7} {ide 6} {mex 5 2} \
- {func 3 3 "s:CRES:WR:RD:WCHK:SEEK:RCHK:DRES:WLCK"} \
- {go 0}
- regdsc DA {drsel 15 3} {cyl 12 8} {sur 4} {sc 3 4}
- regdsc RMR {rid 15 3} {crdone 11} {sbclr 10} {creset 9} {fdone 8} {sdone 7 8}
-
- variable FUNC_CRES [bvi b3 "000"]
- variable FUNC_WR [bvi b3 "001"]
- variable FUNC_RD [bvi b3 "010"]
- variable FUNC_WCHK [bvi b3 "011"]
- variable FUNC_SEEK [bvi b3 "100"]
- variable FUNC_RCHK [bvi b3 "101"]
- variable FUNC_DRES [bvi b3 "110"]
- variable FUNC_WLCK [bvi b3 "111"]
-
- rw11util::regmap_add ibd_rk11 rk?.ds {?? DS}
- rw11util::regmap_add ibd_rk11 rk?.er {?? ER}
- rw11util::regmap_add ibd_rk11 rk?.cs {?? CS}
- rw11util::regmap_add ibd_rk11 rk?.da {?? DA}
- rw11util::regmap_add ibd_rk11 rk?.mr {r? RMR}
-
- variable ANUM 4
-}
Index: trunk/tools/tcl/ibd_rk11
===================================================================
--- trunk/tools/tcl/ibd_rk11 (revision 34)
+++ trunk/tools/tcl/ibd_rk11 (nonexistent)
trunk/tools/tcl/ibd_rk11
Property changes :
Deleted: svn:ignore
## -1,34 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_tsi.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-pkgIndex.tcl
Index: trunk/tools/tcl/rw11util/regmap.tcl
===================================================================
--- trunk/tools/tcl/rw11util/regmap.tcl (revision 34)
+++ trunk/tools/tcl/rw11util/regmap.tcl (nonexistent)
@@ -1,97 +0,0 @@
-# $Id: regmap.tcl 720 2015-12-28 14:52:45Z mueller $
-#
-# Copyright 2015- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2015-12-28 720 1.0 Initial version
-# 2015-12-26 719 0.1 First draft
-#
-
-package provide rw11util 1.0
-
-package require rlink
-package require rwxxtpp
-
-namespace eval rw11util {
-
- variable regmap
- array set regmap {}
- variable regmap_loaded 0
-
- #
- # regmap_add: add a register definition
- #
- proc regmap_add {pack name amlist} {
- variable regmap
- if {[info exists regmap($name)]} {
- error "E-regmap_add: register '$name' already defined"
- }
-
- set regmap($name) [list $pack $amlist]
- return ""
- }
-
- #
- # regmap_get: get a register definition
- #
- proc regmap_get {name am} {
- variable regmap
- variable regmap_loaded
-
- if {!$regmap_loaded} {regmap_load}
-
- foreach key [array names regmap] {
- if {[string match $key $name]} {
- set dsc $regmap($key)
- set pack [lindex $dsc 0]
- set amlist [lindex $dsc 1]
- foreach {amp reg} $amlist {
- if {[string match $amp $am]} {
- package require $pack
- return "${pack}::${reg}"
- }
- }
- }
- }
- return ""
- }
-
- #
- # regmap_txt: get text representation of a register
- #
- proc regmap_txt {name am val} {
- set rdsc [regmap_get $name $am]
- if {$rdsc eq ""} return ""
- return [regtxt $rdsc $val]
- }
-
- #
- # regmap_load: load all rw11 register definitions
- #
- proc regmap_load {} {
- variable regmap_loaded
- package require rw11
- package require ibd_dl11
- package require ibd_ibmon
- package require ibd_lp11
- package require ibd_pc11
- package require ibd_rhrp
- package require ibd_rk11
- package require ibd_rl11
- package require ibd_tm11
- set regmap_loaded 1
- return ""
- }
-
-
-}
Index: trunk/tools/tcl/rw11util/.cvsignore
===================================================================
--- trunk/tools/tcl/rw11util/.cvsignore (revision 34)
+++ trunk/tools/tcl/rw11util/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-pkgIndex.tcl
Index: trunk/tools/tcl/rw11util
===================================================================
--- trunk/tools/tcl/rw11util (revision 34)
+++ trunk/tools/tcl/rw11util (nonexistent)
trunk/tools/tcl/rw11util
Property changes :
Deleted: svn:ignore
## -1,34 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_tsi.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-pkgIndex.tcl
Index: trunk/tools/tcl/ibd_dl11/.cvsignore
===================================================================
--- trunk/tools/tcl/ibd_dl11/.cvsignore (revision 34)
+++ trunk/tools/tcl/ibd_dl11/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-pkgIndex.tcl
Index: trunk/tools/tcl/ibd_dl11/util.tcl
===================================================================
--- trunk/tools/tcl/ibd_dl11/util.tcl (revision 34)
+++ trunk/tools/tcl/ibd_dl11/util.tcl (nonexistent)
@@ -1,38 +0,0 @@
-# $Id: util.tcl 719 2015-12-27 09:45:43Z mueller $
-#
-# Copyright 2015- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2015-12-26 719 1.0 Initial version
-#
-
-package provide ibd_dl11 1.0
-
-package require rlink
-package require rw11util
-package require rw11
-
-namespace eval ibd_dl11 {
- #
- # setup register descriptions for ibd_dl11 ---------------------------------
- #
-
- regdsc RCSR {done 7} {ie 6}
- regdsc RRCSR {done 7} {ie 6} {rlim 14 3}
-
- regdsc XCSR {done 7} {ie 6} {maint 2}
-
- rw11util::regmap_add ibd_dl11 tt?.rcsr {l? RCSR r? RRCSR}
- rw11util::regmap_add ibd_dl11 tt?.xcsr {?? XCSR}
-
-}
Index: trunk/tools/tcl/ibd_dl11
===================================================================
--- trunk/tools/tcl/ibd_dl11 (revision 34)
+++ trunk/tools/tcl/ibd_dl11 (nonexistent)
trunk/tools/tcl/ibd_dl11
Property changes :
Deleted: svn:ignore
## -1,34 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_tsi.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-pkgIndex.tcl
Index: trunk/tools/tcl/ibd_lp11/.cvsignore
===================================================================
--- trunk/tools/tcl/ibd_lp11/.cvsignore (revision 34)
+++ trunk/tools/tcl/ibd_lp11/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-pkgIndex.tcl
Index: trunk/tools/tcl/ibd_lp11/util.tcl
===================================================================
--- trunk/tools/tcl/ibd_lp11/util.tcl (revision 34)
+++ trunk/tools/tcl/ibd_lp11/util.tcl (nonexistent)
@@ -1,36 +0,0 @@
-# $Id: util.tcl 719 2015-12-27 09:45:43Z mueller $
-#
-# Copyright 2015- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2015-12-26 719 1.0 Initial version
-#
-
-package provide ibd_lp11 1.0
-
-package require rlink
-package require rw11util
-package require rw11
-
-namespace eval ibd_lp11 {
- #
- # setup register descriptions for ibd_lp11 ---------------------------------
- #
-
- regdsc CSR {err 15} {done 7} {ie 6}
-
- rw11util::regmap_add ibd_lp11 lp?.rcsr {?? CSR}
-
- variable ANUM 8
-
-}
Index: trunk/tools/tcl/ibd_lp11
===================================================================
--- trunk/tools/tcl/ibd_lp11 (revision 34)
+++ trunk/tools/tcl/ibd_lp11 (nonexistent)
trunk/tools/tcl/ibd_lp11
Property changes :
Deleted: svn:ignore
## -1,34 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_tsi.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-pkgIndex.tcl
Index: trunk/tools/tcl/rutil/fileio.tcl
===================================================================
--- trunk/tools/tcl/rutil/fileio.tcl (revision 34)
+++ trunk/tools/tcl/rutil/fileio.tcl (nonexistent)
@@ -1,55 +0,0 @@
-# $Id: fileio.tcl 705 2015-07-26 21:25:42Z mueller $
-#
-# Copyright 2015- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2015-07-17 701 1.0 Initial version
-#
-
-package provide rutil 1.0
-
-package require rutiltpp
-
-namespace eval rutil {
- #
- # tofile: write a variable to file -----------------------------------------
- #
- proc tofile {fname val} {
- if [catch {open $fname w} fout] {
- error "Cannot open $fname for writing"
- } else {
- puts $fout $val
- close $fout
- }
- return ""
- }
-
- #
- # fromfile: read a variable from file --------------------------------------
- #
- proc fromfile {fname} {
- if [catch {open $fname r} fin] {
- error "Cannot open $fname for reading"
- } else {
- set rval [read -nonewline $fin]
- close $fin
- }
- return $rval
- }
-
- namespace export tofile
- namespace export fromfile
-}
-
-namespace import rutil::tofile
-namespace import rutil::fromfile
Index: trunk/tools/tcl/rutil/regdsc.tcl
===================================================================
--- trunk/tools/tcl/rutil/regdsc.tcl (revision 34)
+++ trunk/tools/tcl/rutil/regdsc.tcl (nonexistent)
@@ -1,304 +0,0 @@
-# $Id: regdsc.tcl 705 2015-07-26 21:25:42Z mueller $
-#
-# Copyright 2011-2015 by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2015-07-24 705 1.1 add regbldkv,reggetkv; regtxt: add {all 0} arg
-# add s:.. ptyp to support symbolic field values
-# 2015-06-26 695 1.0 Initial version (with reg* procs from util.tcl)
-#
-
-package provide rutil 1.0
-
-package require rutiltpp
-
-namespace eval rutil {
- #
- # regdsc: setup a register descriptor --------------------------------------
- #
- proc regdsc {rdscName args} {
- upvar $rdscName rdsc
- set fbegmax -1
- set mskftot 0
-
- foreach arg $args {
- set nopt [llength $arg]
- if {$nopt < 2 || $nopt > 4} {
- error "regdsc-E: wrong number of elements in field dsc \"$arg\""
- }
- set fnam [lindex $arg 0]
- set fbeg [lindex $arg 1]
- set flen [lindex $arg 2]
- if {$nopt < 3} { set flen 1 }
- set ptyp [lindex $arg 3]
- if {$nopt < 4} { set ptyp "b" }
- set popt {}
- set plen 0
-
- set mskb [expr {( 1 << $flen ) - 1}]
- set mskf [expr {$mskb << ( $fbeg - ( $flen - 1 ) )}]
-
- if {[string match "s:*" $ptyp]} {
- set popt [lrange [split $ptyp ":"] 1 end]
- set ptyp "s"
- if { [llength $popt] != ( 1 << $flen ) } {
- error "regdsc-E: bad value count for for \"$rdscName:$fnam\""
- }
- foreach nam $popt {
- if {![string match {[A-Za-z]*} $nam]} {
- error "regdsc-E: bad name \"$name\" for for \"$rdscName:$fnam\""
- }
- set nlen [string length $nam]
- if {$nlen > $plen} {set plen $nlen}
- }
- lappend popt $plen
-
- } else {
- switch $ptyp {
- b {}
- o -
- x {set plen [string length [format "%${ptyp}" $mskb]]
- set popt "%${plen}.${plen}${ptyp}"}
- d {set plen [string length [format "%d" $mskb]]
- set popt "%${plen}d"}
- - {}
- default {error "regdsc-E: bad ptyp \"$ptyp\" for \"$rdscName:$fnam\""}
- }
- }
-
- if {( $flen - 1 ) > $fbeg} {
- error "regdsc-E: bad field dsc \"$arg\": length > start position"
- }
-
- set rdsc($fnam) [list $fbeg $flen $mskb $mskf $ptyp $popt]
-
- if {$fbegmax < $fbeg} {set fbegmax $fbeg}
- set mskftot [expr {$mskftot | $mskf}]
- }
-
- set rdsc(-n) [lsort -decreasing -command regdsc_sort \
- [array names rdsc -regexp {^[^-]}] ]
-
- set rdsc(-w) [expr {$fbegmax + 1}]
- set rdsc(-m) $mskftot
-
- return ""
- }
-
- proc regdsc_sort {a b} {
- upvar rdsc urdsc
- return [expr {[lindex $urdsc($a) 0] - [lindex $urdsc($b) 0] }]
- }
-
- #
- # regdsc_print: print register descriptor ----------------------------------
- #
- proc regdsc_print {rdscName} {
- upvar $rdscName rdsc
- set rval ""
- if {! [info exists rdsc]} {
- error "can't access \"$rdscName\": variable doesn't exist"
- }
-
- set rsize $rdsc(-w)
-
- append rval " field bits bitmask"
-
- foreach fnam $rdsc(-n) {
- set fdsc $rdsc($fnam)
- set fbeg [lindex $fdsc 0]
- set flen [lindex $fdsc 1]
- set fmskf [lindex $fdsc 3]
- set ptyp [lindex $fdsc 4]
- set popt [lindex $fdsc 5]
- set line " "
- append line [format "%8s" $fnam]
- if {$flen > 1} {
- append line [format " %2d:%2d" $fbeg [expr {$fbeg - $flen + 1}]]
- } else {
- append line [format " %2d" $fbeg]
- }
- append line " "
- append line [pbvi "b${rsize}" $fmskf]
- if {$ptyp eq "s"} {
- append line " " [join [lrange $popt 0 end-1] ":"]
- } else {
- if {$popt ne ""} {append line " $popt"}
- }
- append rval "\n$line"
- }
- return $rval
- }
-
- #
- # regbld: build a register value from list of keys or {key val} pairs ------
- #
- proc regbld {rdscName args} {
- upvar $rdscName rdsc
- set kvl {}
- foreach arg $args {
- set narg [llength $arg]
- if {$narg < 1 || $narg > 2} {
- error "regbld-E: field specifier \"$arg\": must be 'name \[val\]'"
- }
- set fnam [lindex $arg 0]
- if {! [info exists rdsc($fnam)] } {
- error "regbld-E: field specifier \"$arg\": field unknown"
- }
-
- set fval 1
- if {$narg == 1} {
- set flen [lindex $rdsc($fnam) 1]
- if {$flen > 1} {
- error "regbld-E: field specifier \"$arg\": no value and flen>1"
- }
- } else {
- set fval [lindex $arg 1]
- }
- lappend kvl $fnam $fval
- }
- return [regbldkv rdsc {*}$kvl]
- }
-
- #
- # regbldkv: build a register value from key value list ---------------------
- #
- proc regbldkv {rdscName args} {
- upvar $rdscName rdsc
- if {[llength $args] % 2 != 0} {
- error "regbldkv-E: odd number of optional key value args"
- }
-
- set rval 0
- foreach {fnam fval} $args {
- if {! [info exists rdsc($fnam)] } {
- error "regbldkv-E: field specifier \"$fnam\": field unknown"
- }
- set fbeg [lindex $rdsc($fnam) 0]
- set flen [lindex $rdsc($fnam) 1]
- set mskb [lindex $rdsc($fnam) 2]
- set ptyp [lindex $rdsc($fnam) 4]
- set popt [lindex $rdsc($fnam) 5]
-
- if {$ptyp eq "s" && ! [string is integer $fval]} {
- set nind [lsearch [lrange $popt 0 end-1] $fval]
- if {$nind < 0} {
- error "regbldkv-E: \"$fval\" unknown value name for \"$fnam\""
- }
- set fval $nind
- }
-
- if {$fval >= 0} {
- if {$fval > $mskb} {
- error "regbldkv-E: field specifier \"$fnam\": $fval > $mskb"
- }
- } else {
- if {$fval < [expr {- $mskb}]} {
- error "regbldkv-E: field specifier \"$fnam\": $fval < -$mskb]"
- }
- set fval [expr {$fval & $mskb}]
- }
- set rval [expr {$rval | $fval << ( $fbeg - ( $flen - 1 ) )}]
-
- }
- return $rval
- }
-
- #
- # regget: extract field from a register value ------------------------------
- #
- proc regget {fdscName val} {
- upvar $fdscName fdsc
- if {! [info exists fdsc] } {
- error "regget-E: field descriptor \"$fdscName\" unknown"
- }
- set fbeg [lindex $fdsc 0]
- set flen [lindex $fdsc 1]
- set mskb [lindex $fdsc 2]
- return [expr {( $val >> ( $fbeg - ( $flen - 1 ) ) ) & $mskb}]
- }
-
- #
- # reggetkv: extract multiple fields to variables ---------------------------
- #
- proc reggetkv {rdscName val pref args} {
- upvar $rdscName rdsc
- if {[llength $args] == 0} {set args "*"}
- foreach kpat $args {
- set nvar 0
- foreach key [array names rdsc $kpat] {
- if {[string match -* $key]} {continue}
- upvar "${pref}${key}" var
- set var [regget "rdsc($key)" $val]
- incr nvar
- }
- if {$nvar == 0} {
- error "reggetkv-E: no match for field name pattern \"$kpat\""
- }
- }
- }
-
- #
- # regtxt: convert register value to a text string --------------------------
- # Note: mode currently only "" and "a" (show all fields) allowed
- # maybe later also "th" (table head) and "tr" (table row)
- #
- proc regtxt {rdscName val {mode ""}} {
- upvar $rdscName rdsc
- set rval ""
-
- foreach fnam $rdsc(-n) {
- set flen [lindex $rdsc($fnam) 1]
- set ptyp [lindex $rdsc($fnam) 4]
- set popt [lindex $rdsc($fnam) 5]
- set fval [regget rdsc($fnam) $val]
-
- if {$ptyp eq "-" || ($ptyp ne "s" && $fval == 0 && $mode eq "")} {continue}
-
- if {$rval ne ""} {append rval " "}
- append rval "${fnam}"
- if {$ptyp eq "b" && $flen == 1 && $mode eq ""} {continue}
- append rval ":"
-
- if {$ptyp eq "s"} {
- set plen [lindex $popt end]
- append rval [format "%-${plen}s" [lindex $popt $fval]]
- } elseif {$ptyp eq "b"} {
- append rval [pbvi b${flen} $fval]
- } else {
- append rval [format "${popt}" $fval]
- }
- }
- return $rval
- }
-
- #
- # ! export reg... procs to global scope ------------------------------------
- #
-
- namespace export regdsc
- namespace export regdsc_print
- namespace export regbld
- namespace export regbldkv
- namespace export regget
- namespace export reggetkv
- namespace export regtxt
-}
-
-namespace import rutil::regdsc
-namespace import rutil::regdsc_print
-namespace import rutil::regbld
-namespace import rutil::regbldkv
-namespace import rutil::regget
-namespace import rutil::reggetkv
-namespace import rutil::regtxt
Index: trunk/tools/tcl/rutil/util.tcl
===================================================================
--- trunk/tools/tcl/rutil/util.tcl (revision 34)
+++ trunk/tools/tcl/rutil/util.tcl (revision 33)
@@ -1,4 +1,4 @@
-# $Id: util.tcl 705 2015-07-26 21:25:42Z mueller $
+# $Id: util.tcl 689 2015-06-05 14:33:18Z mueller $
#
# Copyright 2011-2015 by Walter F.J. Mueller
#
@@ -13,8 +13,6 @@
#
# Revision History:
# Date Rev Version Comment
-# 2015-07-25 704 1.1.1 rename optlist2arr->args2opts, new logic, export it
-# 2015-06-26 695 1.1 move reg* proc to regdsc.tcl
# 2015-06-05 688 1.0.5 add dohook
# 2015-03-28 660 1.0.4 add com8 and com16
# 2014-12-23 619 1.0.3 regget: add check for unknown field descriptor
@@ -30,19 +28,17 @@
namespace eval rutil {
#
- # args2opts: process options arguments given as key value list -----------
+ # optlist2arr: process options arguments given as key value list -----------
#
- proc args2opts {optsName refs args} {
- upvar $optsName opts
- if {[llength $args] % 2 != 0} {
- error "args2opts-E: odd number of optional key value args"
- }
- array set opts $refs
- foreach {key value} $args {
- if {[info exists opts($key)]} {
- set opts($key) $value
+ proc optlist2arr {outarrname refarrname optlist} {
+ upvar $outarrname outarr
+ upvar $refarrname refarr
+ array set outarr [array get refarr]
+ foreach {key value} $optlist {
+ if {[info exists outarr($key)]} {
+ set outarr($key) $value
} else {
- error "args2opts-E: key $key not valid in optlist"
+ error "key $key not valid in optlist"
}
}
return ""
@@ -49,6 +45,167 @@
}
#
+ # regdsc: setup a register descriptor --------------------------------------
+ #
+ proc regdsc {name args} {
+ upvar $name rdsc
+ set fbegmax -1
+ set mskftot 0
+
+ foreach arg $args {
+ set nopt [llength $arg]
+ if {$nopt < 2} {
+ error "wrong number of elements in field dsc \"$arg\""
+ }
+ set fnam [lindex $arg 0]
+ set fbeg [lindex $arg 1]
+ set flen [lindex $arg 2]
+ if {$nopt < 3} { set flen 1 }
+ set popt [lindex $arg 3]
+ if {$nopt < 4} { set popt "b" }
+
+ if {( $flen - 1 ) > $fbeg} {
+ error "error in field dsc \"$arg\": length > start position"
+ }
+
+ set mskb [expr {( 1 << $flen ) - 1}]
+ set mskf [expr {$mskb << ( $fbeg - ( $flen - 1 ) )}]
+ set rdsc($fnam) [list $fbeg $flen $mskb $mskf $popt]
+
+ if {$fbegmax < $fbeg} {set fbegmax $fbeg}
+ set mskftot [expr {$mskftot | $mskf}]
+ }
+
+ set rdsc(-n) [lsort -decreasing -command regdsc_sort \
+ [array names rdsc -regexp {^[^-]}] ]
+
+ set rdsc(-w) [expr {$fbegmax + 1}]
+ set rdsc(-m) $mskftot
+
+ return ""
+ }
+
+ #
+ # regdsc_print: print register descriptor ----------------------------------
+ #
+ proc regdsc_print {name} {
+ upvar $name rdsc
+ set rval ""
+ if {! [info exists rdsc]} {
+ error "can't access \"$name\": variable doesn't exist"
+ }
+
+ set rsize $rdsc(-w)
+
+ append rval " field bits bitmask"
+
+ foreach fnam $rdsc(-n) {
+ set fdsc $rdsc($fnam)
+ set fbeg [lindex $fdsc 0]
+ set flen [lindex $fdsc 1]
+ set fmskf [lindex $fdsc 3]
+ set line " "
+ append line [format "%8s" $fnam]
+ if {$flen > 1} {
+ append line [format " %2d:%2d" $fbeg [expr {$fbeg - $flen + 1}]]
+ } else {
+ append line [format " %2d" $fbeg]
+ }
+ append line " "
+ append line [pbvi "b${rsize}" $fmskf]
+ append rval "\n$line"
+ }
+ return $rval
+ }
+
+ proc regdsc_sort {a b} {
+ upvar rdsc urdsc
+ return [expr {[lindex $urdsc($a) 0] - [lindex $urdsc($b) 0] }]
+ }
+
+ #
+ # regbld: build a register value from a list of fields ---------------------
+ #
+ proc regbld {name args} {
+ upvar $name rdsc
+ set rval 0
+ foreach arg $args {
+ if {[llength $arg] < 1 || [llength $arg] > 2} {
+ error "error in field specifier \"$arg\": must be 'name [val]'"
+ }
+ set fnam [lindex $arg 0]
+ if {! [info exists rdsc($fnam)] } {
+ error "error in field specifier \"$arg\": field unknown"
+ }
+ set fbeg [lindex $rdsc($fnam) 0]
+ set flen [lindex $rdsc($fnam) 1]
+
+ if {[llength $arg] == 1} {
+ if {$flen > 1} {
+ error "error in field specifier \"$arg\": no value and flen>1"
+ }
+ set mskf [lindex $rdsc($fnam) 3]
+ set rval [expr {$rval | $mskf}]
+
+ } else {
+ set fval [lindex $arg 1]
+ set mskb [lindex $rdsc($fnam) 2]
+ if {$fval >= 0} {
+ if {$fval > $mskb} {
+ error "error in field specifier \"$arg\": value > $mskb"
+ }
+ } else {
+ if {$fval < [expr {- $mskb}]} {
+ error "error in field specifier \"$arg\": value < [expr -$mskb]"
+ }
+ set fval [expr {$fval & $mskb}]
+ }
+ set rval [expr {$rval | $fval << ( $fbeg - ( $flen - 1 ) )}]
+ }
+
+ }
+ return $rval
+ }
+
+ #
+ # regget: extract field from a register value ------------------------------
+ #
+ proc regget {name val} {
+ upvar $name fdsc
+ if {! [info exists fdsc] } {
+ error "register field descriptor \"$name\" unknown"
+ }
+ set fbeg [lindex $fdsc 0]
+ set flen [lindex $fdsc 1]
+ set mskb [lindex $fdsc 2]
+ return [expr {( $val >> ( $fbeg - ( $flen - 1 ) ) ) & $mskb}]
+ }
+
+ #
+ # regtxt: convert register value to a text string --------------------------
+ #
+ proc regtxt {name val} {
+ upvar $name rdsc
+ set rval ""
+
+ foreach fnam $rdsc(-n) {
+ set popt [lindex $rdsc($fnam) 4]
+ set fval [regget rdsc($fnam) $val]
+ if {$popt ne "-"} {
+ if {$rval ne ""} {append rval " "}
+ append rval "${fnam}:"
+ if {$popt eq "b"} {
+ set flen [lindex $rdsc($fnam) 1]
+ append rval [pbvi b${flen} $fval]
+ } else {
+ append rval [format "%${popt}" $fval]
+ }
+ }
+ }
+ return $rval
+ }
+
+ #
# errcnt2txt: returns "PASS" if 0 and "FAIL" otherwise ---------------------
#
proc errcnt2txt {errcnt} {
@@ -102,10 +259,19 @@
return
}
- # ! export some procs to global scope --------------------------------------
+ #
+ # ! export reg... procs to global scope ------------------------------------
+ #
- namespace export args2opts
-
+ namespace export regdsc
+ namespace export regdsc_print
+ namespace export regbld
+ namespace export regget
+ namespace export regtxt
}
-namespace import rutil::args2opts
+namespace import rutil::regdsc
+namespace import rutil::regdsc_print
+namespace import rutil::regbld
+namespace import rutil::regget
+namespace import rutil::regtxt
/trunk/tools/tcl/ibd_rhrp/util.tcl
1,4 → 1,4
# $Id: util.tcl 719 2015-12-27 09:45:43Z mueller $ |
# $Id: util.tcl 690 2015-06-07 18:23:51Z mueller $ |
# |
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# |
13,7 → 13,6
# |
# Revision History: |
# Date Rev Version Comment |
# 2015-12-26 719 1.0.2 add regmap_add defs |
# 2015-06-06 690 1.0.1 rdump: all online units now shown by default |
# 2015-03-21 659 1.0 Initial version |
# |
21,17 → 20,14
package provide ibd_rhrp 1.0 |
|
package require rlink |
package require rw11util |
package require rw11 |
|
namespace eval ibd_rhrp { |
|
# |
# setup register descriptions for ibd_rhrp --------------------------------- |
# |
regdsc CS1 {sc 15} {tre 14} {dva 11} {bae 9 2} {rdy 7} {ie 6} \ |
{func 5 5 "s:NOOP:UNL:SEEK:RECAL:DCLR:PORE:OFFS:RETC:PRES:PACK:FU12:FU13:SEAR:FU15:FU16:FU17:FU20:FU21:FU22:FU23:WCD:WCHD:FU26:FU27:WRITE:WHD:FU32:FU33:READ:RHD:FU36:FU37"} \ |
{go 0} |
regdsc CS1 {sc 15} {tre 14} {dva 11} {bae 9 2} \ |
{rdy 7} {ie 6} {func 5 5} {go 0} |
variable FUNC_NOOP [bvi b5 "00000"] |
variable FUNC_UNL [bvi b5 "00001"] |
variable FUNC_SEEK [bvi b5 "00010"] |
50,15 → 46,13
variable FUNC_READ [bvi b5 "11100"] |
variable FUNC_RHD [bvi b5 "11101"] |
|
regdsc RCS1 {val 15 8} \ |
{func 5 5 "s:FU00:WUNIT:CUNIT:DONE:WIDLY:FU05:FU06:FU07:FU10:FU11:FU12:FU13:FU14:FU15:FU16:FU17:FU20:FU21:FU22:FU23:FU24:FU25:FU26:FU27:FU30:FU31:FU32:FU33:FU34:FU35:FU36:FU37"} \ |
{go 0} |
regdsc RCS1 {val 15 8} {func 5 5} {go 0} |
variable RFUNC_WUNIT [bvi b5 "00001"] |
variable RFUNC_CUNIT [bvi b5 "00010"] |
variable RFUNC_DONE [bvi b5 "00011"] |
variable RFUNC_WIDLY [bvi b5 "00100"] |
|
regdsc DA {ta 12 5 d} {sa 5 6 d} |
regdsc DA {ta 12 5 2d} {sa 5 6 2d} |
regdsc CS2 {wce 14} {ned 12} {nem 11} {pge 10} {or 7} {ir 6} \ |
{clr 5} {pat 4} {bai 3} {unit 2 3 d} |
regdsc DS {ata 15} {erp 14} {pip 13} {mol 12} {wrl 11} {lbt 10} {dpr 8} \ |
65,7 → 59,7
{dry 7} {vv 6} {om 0} |
regdsc ER1 {uns 14} {iae 10} {aoe 9} {rmr 2} {ilf 0} |
regdsc AS {u3 3} {u2 2} {u1 1} {u0 0} |
regdsc LA {sc 11 6 d} |
regdsc LA {sc 11 6 2d} |
regdsc OF {fmt 12} {eci 11} {hci 10} {odi 7} {off 6 7} |
|
variable DTE_RP04 [bvi b3 "000"] |
83,22 → 77,11
variable DT_RP07 020042 |
|
regdsc SN {d3 15 4 d} {d2 11 4 d} {d1 7 4 d} {d0 3 4 d} |
regdsc OF {odi 7} |
regdsc DC {dc 9 10 d} |
|
regdsc CS3 {ie 6} |
|
rw11util::regmap_add ibd_rhrp rp?.cs1 {l? CS1 rr CS1 rw RCS1} |
rw11util::regmap_add ibd_rhrp rp?.da {?? DA} |
rw11util::regmap_add ibd_rhrp rp?.cs2 {?? CS2} |
rw11util::regmap_add ibd_rhrp rp?.ds {?? DS} |
rw11util::regmap_add ibd_rhrp rp?.er1 {?? ER1} |
rw11util::regmap_add ibd_rhrp rp?.as {?? AS} |
rw11util::regmap_add ibd_rhrp rp?.la {?? LA} |
rw11util::regmap_add ibd_rhrp rp?.of {?? OF} |
rw11util::regmap_add ibd_rhrp rp?.sn {?? SN} |
rw11util::regmap_add ibd_rhrp rp?.dc {?? DC} |
rw11util::regmap_add ibd_rhrp rp?.cs3 {?? CS3} |
|
variable ANUM 6 |
|
# |
/trunk/tools/tcl/ibd_tm11/util.tcl
1,4 → 1,4
# $Id: util.tcl 719 2015-12-27 09:45:43Z mueller $ |
# $Id: $ |
# |
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# |
13,7 → 13,6
# |
# Revision History: |
# Date Rev Version Comment |
# 2015-12-26 719 1.0.1 add regmap_add defs |
# 2015-05-17 683 1.0 Initial version |
# |
|
20,7 → 19,6
package provide ibd_tm11 1.0 |
|
package require rlink |
package require rw11util |
package require rw11 |
|
namespace eval ibd_tm11 { |
32,9 → 30,7
{onl 6} {bot 5} {wrl 2} {rew 1} {tur 0} |
|
regdsc CR {err 15} {den 14 2} {ini 12} {pevn 11} {unit 10 3} \ |
{rdy 7} {ie 6} {ea 5 2} \ |
{func 3 3 "s:UNLOAD:READ:WRITE:WEOF:SFORW:SBACK:WRTEG:REWIND"} \ |
{go 0} |
{rdy 7} {ie 6} {ea 5 2} {func 3 3} {go 0} |
variable FUNC_UNLOAD [bvi b3 "000"] |
variable FUNC_READ [bvi b3 "001"] |
variable FUNC_WRITE [bvi b3 "010"] |
44,18 → 40,13
variable FUNC_WRTEG [bvi b3 "110"] |
variable FUNC_REWIND [bvi b3 "111"] |
|
regdsc RCR {icmd 15} {pae 12} {rle 9} {bte 8} {nxm 7} {unit 5 2} \ |
{func 3 3 "s:FU0:WUNIT:DONE:FU3:FU4:FU5:FU6:FU7"} \ |
{go 0} |
regdsc RCR {icmd 15} {pae 12} {rle 9} {bte 8} {nxm 7} \ |
{unit 5 2} {func 3 3} {go 0} |
variable RFUNC_WUNIT [bvi b3 "001"] |
variable RFUNC_DONE [bvi b3 "010"] |
|
regdsc RRL {eof 10} {eot 9} {onl 8} {bot 7} {wrl 6} {rew 5} {unit 2 2} |
|
rw11util::regmap_add ibd_tm11 tm?.sr {?? SR} |
rw11util::regmap_add ibd_tm11 tm?.cr {l? CR rr CR rw RCR} |
rw11util::regmap_add ibd_tm11 tm?.rl {r? RRL} |
|
variable ANUM 7 |
|
# |
/trunk/tools/tcl/rw11/dmscnt.tcl
File deleted
/trunk/tools/tcl/rw11/shell.tcl
File deleted
/trunk/tools/tcl/rw11/dmcmon.tcl
File deleted
/trunk/tools/tcl/rw11/dasm.tcl
File deleted
/trunk/tools/tcl/rw11/shell_egd.tcl
File deleted
/trunk/tools/tcl/rw11/dmhbpt.tcl
File deleted
/trunk/tools/tcl/rw11/tbench.tcl
1,4 → 1,4
# $Id: tbench.tcl 702 2015-07-19 17:36:09Z mueller $ |
# $Id: tbench.tcl 683 2015-05-17 21:54:35Z mueller $ |
# |
# Copyright 2013-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# |
62,7 → 62,6
} |
|
if {![file readable "$tbase/$fname"]} { |
puts "-E: file $tbase/$fname not found or readable" |
error "-E: file $tbase/$fname not found or readable" |
} |
|
/trunk/tools/tcl/rw11/util.tcl
1,4 → 1,4
# $Id: util.tcl 722 2015-12-30 19:45:46Z mueller $ |
# $Id: util.tcl 683 2015-05-17 21:54:35Z mueller $ |
# |
# Copyright 2013-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# |
13,8 → 13,6
# |
# Revision History: |
# Date Rev Version Comment |
# 2015-12-30 721 1.3.6 BUGFIX: setup_ostr: adopt to use args2opts |
# 2015-07-25 704 1.3.5 use args2opts |
# 2015-05-17 683 1.3.4 setup_sys: add TM11 |
# 2015-05-15 682 1.3.3 BUGFIX: setup_cpu: fix cpu reset (now -stop -creset) |
# 2015-05-08 675 1.3.2 w11a start/stop/suspend overhaul |
82,9 → 80,10
# |
# setup_tt: setup terminals ------------------------------------------------ |
# |
proc setup_tt {{cpu "cpu0"} args} { |
proc setup_tt {{cpu "cpu0"} {optlist {}}} { |
# process and check options |
args2opts opt {ndl 2 dlrlim 0 ndz 0 to7bit 0 app 0 nbck 1} {*}$args |
array set optref { ndl 2 dlrlim 0 ndz 0 to7bit 0 app 0 nbck 1} |
rutil::optlist2arr opt optref $optlist |
|
# check option values |
if {$opt(ndl) < 1 || $opt(ndl) > 2} { |
128,9 → 127,10
# |
# setup_ostr: setup Ostream device (currently lp or pp) -------------------- |
# |
proc setup_ostr {cpu unit args} { |
proc setup_ostr {cpu unit optlist} { |
# process and check options |
args2opts opt {app 0 nbck 1} {*}$args |
array set optref { app 0 nbck 1} |
rutil::optlist2arr opt optref $optlist |
|
# setup attach url options |
set urloptlist {} |
154,21 → 154,23
# |
# setup_lp: setup printer -------------------------------------------------- |
# |
proc setup_lp {{cpu "cpu0"} args} { |
proc setup_lp {{cpu "cpu0"} {optlist {}}} { |
# process and check options |
args2opts opt {nlp 1 app 0 nbck 1} {*}$args |
array set optref { nlp 1 app 0 nbck 1} |
rutil::optlist2arr opt optref $optlist |
if {$opt(nlp) != 0} { |
setup_ostr $cpu "lpa0" app $opt(app) nbck $opt(nbck) |
setup_ostr $cpu "lpa0" [list app $opt(app) nbck $opt(nbck)] |
} |
} |
# |
# setup_pp: setup paper puncher -------------------------------------------- |
# |
proc setup_pp {{cpu "cpu0"} args} { |
proc setup_pp {{cpu "cpu0"} {optlist {}}} { |
# process and check options |
args2opts opt {npc 1 app 0 nbck 1} {*}$args |
array set optref { npc 1 app 0 nbck 1} |
rutil::optlist2arr opt optref $optlist |
if {$opt(npc) != 0} { |
setup_ostr $cpu "pp" app $opt(app) nbck $opt(nbck) |
setup_ostr $cpu "pp" [list app $opt(app) nbck $opt(nbck)] |
} |
} |
|
205,18 → 207,4
return "" |
} |
|
# |
# ps2txt: convert ps to text ----------------------------------------------- |
# |
proc ps2txt {ps} { |
reggetkv rw11::PSW $ps "ps_" cmode pmode rset pri tflag n z v c |
set p_cmode [lindex {k s ? u} $ps_cmode] |
set p_pmode [lindex {k s ? u} $ps_pmode] |
set p_tflag [expr {$ps_tflag ? "t" : "-"}] |
set p_cc [expr {$ps_n ? "n" : "."}] |
append p_cc [expr {$ps_z ? "z" : "."}] |
append p_cc [expr {$ps_v ? "v" : "."}] |
append p_cc [expr {$ps_c ? "c" : "."}] |
return "${p_cmode}${p_pmode}${ps_rset}${ps_pri}${p_tflag}${p_cc}" |
} |
} |
/trunk/tools/tcl/rw11/defs.tcl
1,6 → 1,6
# $Id: defs.tcl 719 2015-12-27 09:45:43Z mueller $ |
# $Id: defs.tcl 621 2014-12-26 21:20:05Z mueller $ |
# |
# Copyright 2014-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# Copyright 2014- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# |
# This program is free software; you may redistribute and/or modify it under |
# the terms of the GNU General Public License as published by the Free |
13,8 → 13,6
# |
# Revision History: |
# Date Rev Version Comment |
# 2015-12-26 719 1.0.2 add regmap_add defs; add CNTRL def |
# 2015-09-06 710 1.0.1 regdsc PSW: add silent n,z,v,c; *mode syms; fix tflag |
# 2014-03-07 553 1.0 Initial version (extracted from util.tcl) |
# |
|
22,7 → 20,6
|
package require rlink |
package require rwxxtpp |
package require rw11util |
|
namespace eval rw11 { |
# |
29,8 → 26,7
# setup cp interface register descriptions for w11a ----------------------- |
# |
regdsc CP_CNTL {func 3 0} |
regdsc CP_STAT {suspext 9} {suspint 8} {rust 7 4} \ |
{susp 3} {go 2} {merr 1} {err 0} |
regdsc CP_STAT {rust 7 4} {halt 3} {go 2} {merr 1} {err 0} |
regdsc CP_AH {ubm 7} {p22 6} {addr 5 6} |
# |
# setup w11a register descriptions ----------------------------------------- |
37,9 → 33,7
# |
# PSW - processor status word -------------------------------------- |
set A_PSW 0177776 |
regdsc PSW {cmode 15 2 "s:k:s:x:u"} {pmode 13 2 "s:k:s:x:u"} \ |
{rset 11} {pri 7 3 "d"} {tflag 4} {cc 3 4} \ |
{n 3 1 "-"} {z 2 1 "-"} {v 1 1 "-"} {c 0 1 "-"} |
regdsc PSW {cmode 15 2} {pmode 13 2} {rset 11} {pri 7 3} {tflag 3} {cc 3 4} |
# |
# SSR0 - MMU Segment Status Register #0 ---------------------------- |
set A_SSR0 0177572 |
75,22 → 69,6
set A_CPUERR 0177766 |
regdsc CPUERR {illhlt 7} {adderr 6} {nxm 5} {iobto 4} {ysv 3} {rsv 2} |
# |
# CNTRL - Memory System Control Register ------------------------- |
set A_CNTRL 0177746 |
regdsc CNTRL {frep 5 2} {fmiss 3 2} {disutrap 1} {distrap 0} |
# |
# setup regmap |
# |
rw11util::regmap_add rw11 psw {?? PSW} |
rw11util::regmap_add rw11 ssr0 {?? SSR0} |
rw11util::regmap_add rw11 ssr1 {?? SSR1} |
rw11util::regmap_add rw11 ssr3 {?? SSR3} |
rw11util::regmap_add rw11 sdr???.? {?? SDR} |
rw11util::regmap_add rw11 pirq {?? PIRQ} |
rw11util::regmap_add rw11 cpuerr {?? CPUERR} |
# |
rw11util::regmap_add rw11 cntrl {?? CNTRL} |
# |
# other w11a definitions --------------------------------------------------- |
# Interrupt vectors ----------------------------------------------- |
# |
/trunk/tools/tcl/rw11/asm.tcl
1,6 → 1,6
# $Id: asm.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: asm.tcl 575 2014-07-27 20:55:41Z mueller $ |
# |
# Copyright 2013-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# Copyright 2013-2014 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# |
# This program is free software; you may redistribute and/or modify it under |
# the terms of the GNU General Public License as published by the Free |
13,7 → 13,6
# |
# Revision History: |
# Date Rev Version Comment |
# 2015-07-25 704 1.0.4 asmrun,asmtreg,asmtmem: use args in proc definition |
# 2014-07-26 575 1.0.3 add asmwait_tout variable, use in asmwait |
# 2014-07-10 568 1.0.2 add errcnt return for asmtreg and asmtmem |
# 2014-03-01 552 1.0.1 BUGFIX: asmwait checks now pc if stop: defined |
32,38 → 31,39
# |
# asmrun: run a program loaded with ldasm |
# |
proc asmrun {cpu symName args} { |
proc asmrun {cpu symName opts} { |
upvar 1 $symName sym |
array set opts {r0 0 r1 0 r2 0 r3 0 r4 0 r5 0} |
array set opts $args |
array set defs {r0 0 r1 0 r2 0 r3 0 r4 0 r5 0} |
array set defs $opts |
|
if {![info exists opts(pc)]} { |
if {![info exists defs(pc)]} { |
if {[info exists sym(start)]} { |
set opts(pc) $sym(start) |
set defs(pc) $sym(start) |
} else { |
error "neither opts(pc) nor sym(start) given" |
} |
} |
|
if {![info exists opts(sp)]} { |
if {![info exists defs(sp)]} { |
if {[info exists sym(stack)]} { |
set opts(sp) $sym(stack) |
set defs(sp) $sym(stack) |
} elseif {[info exists sym(start)]} { |
set opts(sp) $sym(start) |
set defs(sp) $sym(start) |
} else { |
error "neither opts(sp) nor sym(stack) or sym(start) given" |
} |
} |
|
$cpu cp -wr0 $opts(r0) \ |
-wr1 $opts(r1) \ |
-wr2 $opts(r2) \ |
-wr3 $opts(r3) \ |
-wr4 $opts(r4) \ |
-wr5 $opts(r5) \ |
-wsp $opts(sp) \ |
-stapc $opts(pc) |
$cpu cp -wr0 $defs(r0) \ |
-wr1 $defs(r1) \ |
-wr2 $defs(r2) \ |
-wr3 $defs(r3) \ |
-wr4 $defs(r4) \ |
-wr5 $defs(r5) |
|
$cpu cp -wsp $defs(sp) \ |
-stapc $defs(pc) |
|
return "" |
} |
|
86,14 → 86,14
# |
# asmtreg: test registers after running a program loaded with ldasm |
# |
proc asmtreg {cpu args} { |
array set opts $args |
set clist {} |
foreach key [lsort [array names opts]] { |
lappend clist "-r${key}" -edata $opts($key) |
proc asmtreg {cpu opts} { |
array set defs $opts |
set cpcmd "" |
foreach key [lsort [array names defs]] { |
append cpcmd " -r$key -edata $defs($key)" |
} |
set errbeg [rlc errcnt] |
$cpu cp {*}$clist |
eval $cpu cp $cpcmd |
return [expr [rlc errcnt] - $errbeg] |
} |
|
100,18 → 100,13
# |
# asmtmem: test memory after running a program loaded with ldasm |
# |
proc asmtmem {cpu args} { |
set clist {} |
foreach {base vlist} $args { |
set nw [llength $vlist] |
if {$nw == 0} { |
error "asmtreg called with empty value list" |
} |
lappend clist -wal $base |
lappend clist -brm $nw -edata $vlist |
proc asmtmem {cpu base list} { |
set nw [llength $list] |
if {$nw == 0} { |
error "asmtreg called with empty list" |
} |
set errbeg [rlc errcnt] |
$cpu cp {*}$clist |
$cpu cp -wal $base -brm $nw -edata $list |
return [expr [rlc errcnt] - $errbeg] |
} |
|
/trunk/tools/tcl/setup_packages
1,5 → 1,5
#! /usr/bin/env tclshcpp |
# $Id: setup_packages 719 2015-12-27 09:45:43Z mueller $ |
# $Id: setup_packages 683 2015-05-17 21:54:35Z mueller $ |
# |
pkg_mkIndex -verbose ../lib \ |
librlinktpp.so \ |
16,15 → 16,9
pkg_mkIndex -verbose rbemon *.tcl |
# |
pkg_mkIndex -verbose rw11 *.tcl |
pkg_mkIndex -verbose rw11util *.tcl |
# |
pkg_mkIndex -verbose ibd_dl11 *.tcl |
pkg_mkIndex -verbose ibd_ibmon *.tcl |
pkg_mkIndex -verbose ibd_lp11 *.tcl |
pkg_mkIndex -verbose ibd_pc11 *.tcl |
pkg_mkIndex -verbose ibd_rhrp *.tcl |
pkg_mkIndex -verbose ibd_rk11 *.tcl |
pkg_mkIndex -verbose ibd_rl11 *.tcl |
pkg_mkIndex -verbose ibd_tm11 *.tcl |
# |
pkg_mkIndex -verbose tst_rlink *.tcl |
/trunk/tools/tcl/ibd_ibmon/util.tcl
1,4 → 1,4
# $Id: util.tcl 722 2015-12-30 19:45:46Z mueller $ |
# $Id: util.tcl 668 2015-04-25 14:31:19Z mueller $ |
# |
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# |
13,8 → 13,6
# |
# Revision History: |
# Date Rev Version Comment |
# 2015-12-28 721 1.0.2 add regmap_add defs; add symbolic register dump |
# 2015-07-25 704 1.0.1 start: use args and args2opts |
# 2015-04-25 668 1.0 Initial version |
# |
|
22,7 → 20,6
|
package require rutil |
package require rlink |
package require rw11util |
|
namespace eval ibd_ibmon { |
# |
40,13 → 37,9
# 'pseudo register', describes 1st word in return list element of read proc |
# all flag bits from DAT3 and DAT0 |
regdsc FLAGS {burst 11} {tout 10} {nak 9} {ack 8} \ |
{busy 7} {cacc 5} {racc 4} {rmw 3} {be1 2} {be0 1} {we 0} |
{busy 7} {cacc 5} {racc 4} {rmw 3} {be1 2} {be0 1} {we 0} |
# |
rw11util::regmap_add ibd_ibmon im.cntl {r? CNTL} |
rw11util::regmap_add ibd_ibmon im.stat {r? STAT} |
rw11util::regmap_add ibd_ibmon im.addr {r? ADDR} |
# |
# setup: amap definitions for ibd_ibmon |
# setup: amap definitions for rbd_rbmon |
# |
proc setup {{cpu "cpu0"} {base 0160000}} { |
$cpu imap -insert im.cntl [expr {$base + 000}] |
57,7 → 50,7
$cpu imap -insert im.data [expr {$base + 012}] |
} |
# |
# init: reset ibd_ibmon (stop, reset alim) |
# init: reset rbd_rbmon (stop, reset alim) |
# |
proc init {{cpu "cpu0"}} { |
$cpu cp \ |
67,19 → 60,20
-wibr im.addr 0x0000 |
} |
# |
# start: start the ibmon |
# start: start the rbmon |
# |
proc start {{cpu "cpu0"} args} { |
args2opts opts { conena 1 remena 1 locena 1 wena 1 } {*}$args |
proc start {{cpu "cpu0"} {opts {}}} { |
array set defs { conena 1 remena 1 locena 1 wena 1 } |
array set defs $opts |
$cpu cp -wibr im.cntl [regbld ibd_ibmon::CNTL start \ |
[list wena $opts(wena)] \ |
[list locena $opts(locena)] \ |
[list remena $opts(remena)] \ |
[list conena $opts(conena)] \ |
[list wena $defs(wena)] \ |
[list locena $defs(locena)] \ |
[list remena $defs(remena)] \ |
[list conena $defs(conena)] \ |
] |
} |
# |
# stop: stop the ibmon |
# stop: stop the rbmon |
# |
proc stop {{cpu "cpu0"}} { |
$cpu cp -wibr im.cntl [regbld ibd_ibmon::CNTL stop] |
175,7 → 169,7
|
set eind [expr {1 - [llength $mondat] }] |
append rval \ |
" ind addr data delay nbsy btnab-crm10w acc-mod" |
" ind addr data delay nbsy btnab-crm10w acc-mode" |
|
set mtout [regbld ibd_ibmon::FLAGS tout ] |
set mnak [regbld ibd_ibmon::FLAGS nak ] |
222,26 → 216,15
if {$fracc} { set pacc "rem"} |
|
set pedly [expr {$edly!=$edlymax ? [format "%5d" $edly] : " --"}] |
|
set ename [format "%6.6o" $eaddr] |
set etext "" |
if {[$cpu imap -testaddr $eaddr]} { |
set ename [$cpu imap -name $eaddr] |
set eam "l${prw}" |
if {$fracc} { set eam "r${prw}"} |
set etext [rw11util::regmap_txt $ename $eam $edata] |
} |
|
set comment "" |
if {$fnak} {append comment " NAK=1!"} |
if {$ftout} {append comment " TOUT=1!"} |
|
if {[$cpu imap -testaddr $eaddr]} {set ename [$cpu imap -name $eaddr]} |
append rval [format \ |
"\n%5d %-10s %6.6o %5s %4d %s %s %s" \ |
"\n%5d %-10s %6.6o %5s %4d %s %s %s %s" \ |
$eind $ename $edata $pedly $enbusy [pbvi b12 $eflag] \ |
$prmw $pacc] |
if {$etext ne ""} {append rval " $etext"} |
if {$comment ne ""} {append rval " $comment"} |
$prmw $pacc $comment] |
incr eind |
} |
|
/trunk/tools/tbench/w11a_cmon/test_cmon_imon.tcl
File deleted
/trunk/tools/tbench/w11a_cmon/test_cmon_logs.tcl
File deleted
/trunk/tools/tbench/w11a_cmon/w11a_cmon_all.dat
File deleted
/trunk/tools/tbench/w11a_cmon/test_cmon_regs.tcl
File deleted
trunk/tools/tbench/w11a_cmon
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_tsi.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
Index: trunk/tools/tbench/w11a_hbpt/w11a_hbpt_all.dat
===================================================================
--- trunk/tools/tbench/w11a_hbpt/w11a_hbpt_all.dat (revision 34)
+++ trunk/tools/tbench/w11a_hbpt/w11a_hbpt_all.dat (nonexistent)
@@ -1,7 +0,0 @@
-# $Id: w11a_hbpt_all.dat 701 2015-07-19 12:58:29Z mueller $
-#
-## steering file for all w11a_hbpt tests
-#
-test_hbpt_regs.tcl
-test_hbpt_basics.tcl
-#
Index: trunk/tools/tbench/w11a_hbpt/test_hbpt_regs.tcl
===================================================================
--- trunk/tools/tbench/w11a_hbpt/test_hbpt_regs.tcl (revision 34)
+++ trunk/tools/tbench/w11a_hbpt/test_hbpt_regs.tcl (nonexistent)
@@ -1,75 +0,0 @@
-# $Id: test_hbpt_regs.tcl 701 2015-07-19 12:58:29Z mueller $
-#
-# Copyright 2015- by Walter F.J. Mueller
-# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
-#
-# Revision History:
-# Date Rev Version Comment
-# 2015-07-11 700 1.0 Initial version
-#
-# Test register response
-
-# ----------------------------------------------------------------------------
-rlc log "test_hbpt_regs: test register response ------------------------------"
-
-set nbpt [$cpu get hashbpt]
-if {$nbpt == 0} {
- rlc log " test_hbpt_regs-W: no hbpt units found, test aborted"
- return
-}
-
-# -- Section A ---------------------------------------------------------------
-rlc log " A1: test cntl,stat for unit 0 -----------------------------"
-
-foreach {cntl stat} [list \
- [regbld rw11::HB_CNTL {mode 1} {irena 0} {dwena 0} {drena 1}] \
- [regbld rw11::HB_STAT {irseen 1} {dwseen 0} {drseen 0}] \
- [regbld rw11::HB_CNTL {mode 2} {irena 0} {dwena 1} {drena 1}] \
- [regbld rw11::HB_STAT {irseen 1} {dwseen 1} {drseen 0}] \
- [regbld rw11::HB_CNTL {mode 3} {irena 1} {dwena 1} {drena 1}] \
- [regbld rw11::HB_STAT {irseen 1} {dwseen 1} {drseen 1}] \
- [regbld rw11::HB_CNTL {mode 0} {irena 0} {dwena 0} {drena 0}] \
- [regbld rw11::HB_STAT {irseen 0} {dwseen 0} {drseen 0}] \
- ] {
- $cpu cp -wreg "hb0.cntl" $cntl \
- -wreg "hb0.stat" $stat \
- -rreg "hb0.cntl" -edata $cntl \
- -rreg "hb0.stat" -edata $stat
-}
-
-rlc log " A2: test hilim,lolim for unit 0 ---------------------------"
-foreach {hilim lolim} {0177777 0100000 \
- 0100000 0177777 \
- 0000000 0000000 } {
- $cpu cp -wreg "hb0.hilim" $hilim \
- -wreg "hb0.lolim" $lolim \
- -rreg "hb0.hilim" -edata [expr {$hilim & 0177776}] \
- -rreg "hb0.lolim" -edata [expr {$lolim & 0177776}]
-}
-
-rlc log " A3: test cntl,stat,hi,lolim for all $nbpt units ---------------"
-
-set cntl {}
-set stat {}
-set hilim {}
-set lolim {}
-
-for {set i 0} {$i<$nbpt} {incr i} {
- lappend cntl [expr {$i + 1} ]
- lappend stat [expr {$i + 1} ]
- lappend hilim [expr {2 * ($i+1) * 1234} ]
- lappend lolim [expr {2 * ($i+1) * 2345} ]
-}
-
-for {set i 0} {$i<$nbpt} {incr i} {
- $cpu cp -wreg "hb${i}.cntl" [lindex $cntl $i] \
- -wreg "hb${i}.stat" [lindex $stat $i] \
- -wreg "hb${i}.hilim" [lindex $hilim $i] \
- -wreg "hb${i}.lolim" [lindex $lolim $i]
-}
-for {set i 0} {$i<$nbpt} {incr i} {
- $cpu cp -rreg "hb${i}.cntl" -edata [lindex $cntl $i] \
- -rreg "hb${i}.stat" -edata [lindex $stat $i] \
- -rreg "hb${i}.hilim" -edata [lindex $hilim $i] \
- -rreg "hb${i}.lolim" -edata [lindex $lolim $i]
-}
Index: trunk/tools/tbench/w11a_hbpt/test_hbpt_basics.tcl
===================================================================
--- trunk/tools/tbench/w11a_hbpt/test_hbpt_basics.tcl (revision 34)
+++ trunk/tools/tbench/w11a_hbpt/test_hbpt_basics.tcl (nonexistent)
@@ -1,289 +0,0 @@
-# $Id: test_hbpt_basics.tcl 722 2015-12-30 19:45:46Z mueller $
-#
-# Copyright 2015- by Walter F.J. Mueller
-# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
-#
-# Revision History:
-# Date Rev Version Comment
-# 2015-12-30 721 1.0.1 BUGFIX: add missing wtcpu in mfpd/mtpd tests
-# 2015-07-11 700 1.0 Initial version
-#
-# Test register response
-
-# ----------------------------------------------------------------------------
-rlc log "test_hbpt_basics: basic tests with 1 unit ---------------------------"
-
-set nbpt [$cpu get hashbpt]
-if {$nbpt == 0} {
- rlc log " test_hbpt_basics-W: no hbpt units found, test aborted"
- return
-}
-
-rlc log " setup: clear all bpts"
-for {set i 0} {$i<$nbpt} {incr i} {
- $cpu cp -wreg "hb${i}.cntl" 0 \
- -wreg "hb${i}.stat" 0
-}
-
-# -- Section A ---------------------------------------------------------------
-rlc log " A basic ir,dr,dw break tests ------------------------------"
-
-$cpu ldasm -lst lst -sym sym {
- . = 1000
-start: nop
-I0: clr r0
-I1: inc r0
-I2: inc r0
-I3: inc r0
-I4: mov a,r1
-I5: mov @pb,r2
-I6: mov r1,c
-I7: mov r2,@pd
-I8: halt
-stop:
-;
-a: .word 123
-b: .word 234
-c: .word 0
-d: .word 0
-pb: .word b
-pd: .word d
-}
-
-rlc log " A1: run code without breaks ------------------------"
-rw11::asmrun $cpu sym
-rw11::asmwait $cpu sym
-rw11::asmtreg $cpu r0 3 r1 0123 r2 0234
-rw11::asmtmem $cpu $sym(c) {0123}
-rw11::asmtmem $cpu $sym(d) {0234}
-
-rlc log " A2.1: ir break on single instruction ---------------"
-# set ir break after 1st "inc r0"
-rw11::hb_set cpu0 0 i $sym(I1)
-rw11::asmrun $cpu sym
-$cpu wtcpu -reset $rw11::asmwait_tout
-$cpu cp -rreg "hb0.stat" -edata [regbld rw11::HB_STAT irseen] \
- -rstat -edata [regbld rw11::CP_STAT suspint {rust 06} susp go] \
- -rpc -edata $sym(I2) \
- -rr0 -edata 1
-
-rlc log " A2.2: step after ir break --------------------------"
-$cpu cp -step
-$cpu cp -rreg "hb0.stat" -edata [regbld rw11::HB_STAT irseen] \
- -rstat -edata [regbld rw11::CP_STAT suspint {rust 04} susp go] \
- -rpc -edata $sym(I3) \
- -rr0 -edata 2
-
-rlc log " A2.3: resume after ir break ------------------------"
-$cpu cp -resume
-rw11::asmwait $cpu sym
-rw11::asmtreg $cpu r0 3 r1 0123 r2 0234
-
-rlc log " A3.1: ir break on range of instructions ------------"
-# set ir break on 2nd and 3rd "inc r0"
-rw11::hb_set cpu0 0 i $sym(I2) $sym(I3)
-rw11::asmrun $cpu sym
-$cpu wtcpu -reset $rw11::asmwait_tout
-$cpu cp -rreg "hb0.stat" -edata [regbld rw11::HB_STAT irseen] \
- -rstat -edata [regbld rw11::CP_STAT suspint {rust 06} susp go] \
- -rpc -edata $sym(I3) \
- -rr0 -edata 2
-
-rlc log " A3.2: resume, should re-break ----------------------"
-$cpu cp -resume
-$cpu wtcpu -reset $rw11::asmwait_tout
-$cpu cp -rstat -edata [regbld rw11::CP_STAT suspint {rust 06} susp go] \
- -rpc -edata $sym(I4) \
- -rr0 -edata 3
-
-rlc log " A3.3: resume, should run to end --------------------"
-$cpu cp -resume
-rw11::asmwait $cpu sym
-rw11::asmtreg $cpu r0 3 r1 0123 r2 0234
-
-rlc log " A4.1: dr break on direct read location -------------"
-# set dr break on a, should break after "mov a,r1"
-rw11::hb_set cpu0 0 r $sym(a)
-rw11::asmrun $cpu sym
-$cpu wtcpu -reset $rw11::asmwait_tout
-$cpu cp -rreg "hb0.stat" -edata [regbld rw11::HB_STAT drseen] \
- -rstat -edata [regbld rw11::CP_STAT suspint {rust 06} susp go] \
- -rpc -edata $sym(I5) \
- -rr1 -edata 0123
-
-rlc log " A4.2: dr break on pointer used in indirect write ---"
-# set dr break on pd, should break after "mov r2,@pd"
-rw11::hb_set cpu0 0 r $sym(pd)
-$cpu cp -resume
-$cpu wtcpu -reset $rw11::asmwait_tout
-$cpu cp -rreg "hb0.stat" -edata [regbld rw11::HB_STAT drseen] \
- -rstat -edata [regbld rw11::CP_STAT suspint {rust 06} susp go] \
- -rpc -edata $sym(I8) \
- -rr2 -edata 0234
-
-rlc log " A5.1: dw break on direct written location ----------"
-# set dw break on c, should break after "mov r1,c"
-rw11::hb_set cpu0 0 w $sym(c)
-rw11::asmrun $cpu sym
-$cpu wtcpu -reset $rw11::asmwait_tout
-$cpu cp -rreg "hb0.stat" -edata [regbld rw11::HB_STAT dwseen] \
- -rstat -edata [regbld rw11::CP_STAT suspint {rust 06} susp go] \
- -rpc -edata $sym(I7) \
- -rr2 -edata 0234
-
-rlc log " A5.2: dw break on indirect write location ----------"
-# set dw break on d, should break after "mov r2,@pd"
-rw11::hb_set cpu0 0 w $sym(d)
-$cpu cp -resume
-$cpu wtcpu -reset $rw11::asmwait_tout
-$cpu cp -rreg "hb0.stat" -edata [regbld rw11::HB_STAT dwseen] \
- -rstat -edata [regbld rw11::CP_STAT suspint {rust 06} susp go] \
- -rpc -edata $sym(I8) \
- -rr2 -edata 0234
-
-# -- Section B ---------------------------------------------------------------
-rlc log " B specific ir tests ---------------------------------------"
-
-$cpu ldasm -lst lst -sym sym {
- . = 1000
-stack:
-start: nop
-I0: mov #a,r0
-I1: mov a,r1
-I2: mov 2(r0),r2
-I3: mfpi c
-I4: mov (sp)+,r3
-I5: halt
-stop:
-;
-a: .word 123
-b: .word 234
-c: .word 345
-}
-
-rlc log " B1: run code without breaks ------------------------"
-rw11::asmrun $cpu sym
-rw11::asmwait $cpu sym
-rw11::asmtreg $cpu r0 $sym(a) r1 0123 r2 0234 r3 0345
-
-rlc log " B2: ensure that immediate fetch doesn't ir break ---"
-# set ir break on immediate value of "mov #a,r0"
-rw11::hb_set cpu0 0 i [expr $sym(I0)+2]
-rw11::asmrun $cpu sym
-rw11::asmwait $cpu sym
-
-rlc log " B3: ensure that index fetch (reg != pc) doesn't ir break ---"
-# set ir break on index value of "mov a,r1"
-rw11::hb_set cpu0 0 i [expr $sym(I1)+2]
-rw11::asmrun $cpu sym
-rw11::asmwait $cpu sym
-
-rlc log " B4: ensure that index fetch (reg == pc) doesn't ir break ---"
-# set ir break on index value of "mov 2(r0),r2"
-rw11::hb_set cpu0 0 i [expr $sym(I2)+2]
-rw11::asmrun $cpu sym
-rw11::asmwait $cpu sym
-
-rlc log " B5: ensure that mfpi doesn't ir break ---"
-# set ir break on load value of "mfpi c"
-rw11::hb_set cpu0 0 i [expr $sym(c)]
-rw11::asmrun $cpu sym
-rw11::asmwait $cpu sym
-
-# -- Section C ---------------------------------------------------------------
-rlc log " C test mode logic and mfpd/mtpd ---------------------------"
-
-$cpu ldasm -lst lst -sym sym {
- .include |lib/defs_cpu.mac|
- . = 1000
-stack:
-start: nop
- mov #,@#cp.psw ;cm=pm=user
-I1: mov a,r0
-I2: mov r0,b
-I3: nop
- mov #cp.pmu,@#cp.psw ;cm=kernel,pm=user
-I4: mfpd c
-I5: mov (sp),r1
-I6: mtpd d
-I7: nop
- halt
-stop:
-;
-a: .word 123
-b: .word 0
-c: .word 234
-d: .word 0
-}
-
-rlc log " C1: run code without breaks ------------------------"
-rw11::asmrun $cpu sym
-rw11::asmwait $cpu sym
-rw11::asmtreg $cpu r0 0123 r1 0234
-rw11::asmtmem $cpu $sym(b) {0123}
-rw11::asmtmem $cpu $sym(d) {0234}
-
-rlc log " C2.1: kernel dr break on user mode read -> no bpt --"
-# set k mode dr break on value of "mov a,r0"
-rw11::hb_set cpu0 0 kr [expr $sym(a)]
-rw11::asmrun $cpu sym
-rw11::asmwait $cpu sym
-
-rlc log " C2.2: super dr break on user mode read -> no bpt ---"
-# set s mode dr break on value of "mov a,r0"
-rw11::hb_set cpu0 0 sr [expr $sym(a)]
-rw11::asmrun $cpu sym
-rw11::asmwait $cpu sym
-
-rlc log " C2.3: user dw break on user mode write -> bpt -----"
-# set u mode dw break on value of "mov r0,b"
-rw11::hb_set cpu0 0 uw [expr $sym(b)]
-rw11::asmrun $cpu sym
-
-$cpu wtcpu -reset $rw11::asmwait_tout
-$cpu cp -rreg "hb0.stat" -edata [regbld rw11::HB_STAT dwseen] \
- -rstat -edata [regbld rw11::CP_STAT suspint {rust 06} susp go] \
- -rpc -edata $sym(I3)
-
-rlc log " C3.1: kernel dr break on mfpd (pm=user) -> no bpt --"
-# set k mode dr break on target of "mfpd c"
-rw11::hb_set cpu0 0 kr [expr $sym(c)]
-rw11::asmrun $cpu sym
-rw11::asmwait $cpu sym
-
-rlc log " C3.2: super dr break on mfpd (pm=user) -> no bpt --"
-# set s mode dr break on target of "mfpd c"
-rw11::hb_set cpu0 0 sr [expr $sym(c)]
-rw11::asmrun $cpu sym
-rw11::asmwait $cpu sym
-
-rlc log " C3.3: user dr break on mfpd (pm=user) -> bpt -----"
-# set u mode dr break on target of "mfpd c"
-rw11::hb_set cpu0 0 ur [expr $sym(c)]
-rw11::asmrun $cpu sym
-$cpu wtcpu -reset $rw11::asmwait_tout
-$cpu cp -rreg "hb0.stat" -edata [regbld rw11::HB_STAT drseen] \
- -rstat -edata [regbld rw11::CP_STAT suspint {rust 06} susp go] \
- -rpc -edata $sym(I5)
-
-rlc log " C4.1: kernel dw break on mtpd (pm=user) -> no bpt --"
-# set k mode dw break on target of "mtpd d"
-rw11::hb_set cpu0 0 kw [expr $sym(d)]
-rw11::asmrun $cpu sym
-rw11::asmwait $cpu sym
-
-rlc log " C4.2: super dw break on mtpd (pm=user) -> no bpt --"
-# set s mode dw break on target of "mtpd d"
-rw11::hb_set cpu0 0 sw [expr $sym(d)]
-rw11::asmrun $cpu sym
-rw11::asmwait $cpu sym
-
-rlc log " C4.3: user dw break on mtpd (pm=user) -> bpt -----"
-# set u mode dw break on target of "mtpd d"
-rw11::hb_set cpu0 0 uw [expr $sym(d)]
-rw11::asmrun $cpu sym
-$cpu wtcpu -reset $rw11::asmwait_tout
-$cpu cp -rreg "hb0.stat" -edata [regbld rw11::HB_STAT dwseen] \
- -rstat -edata [regbld rw11::CP_STAT suspint {rust 06} susp go] \
- -rpc -edata $sym(I7)
-
Index: trunk/tools/tbench/w11a_hbpt
===================================================================
--- trunk/tools/tbench/w11a_hbpt (revision 34)
+++ trunk/tools/tbench/w11a_hbpt (nonexistent)
trunk/tools/tbench/w11a_hbpt
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_tsi.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
Index: trunk/tools/tbench/rhrp/test_rhrp_func_reg.tcl
===================================================================
--- trunk/tools/tbench/rhrp/test_rhrp_func_reg.tcl (revision 34)
+++ trunk/tools/tbench/rhrp/test_rhrp_func_reg.tcl (revision 33)
@@ -1,4 +1,4 @@
-# $Id: test_rhrp_func_reg.tcl 705 2015-07-26 21:25:42Z mueller $
+# $Id: test_rhrp_func_reg.tcl 692 2015-06-21 11:53:24Z mueller $
#
# Copyright 2015- by Walter F.J. Mueller
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
@@ -122,7 +122,7 @@
rlc exec -attn -edata $attnmsk
# check rdy=0 ie=0 func=read
-set cs1val [regbldkv ibd_rhrp::CS1 func READ]
+set cs1val [regbld ibd_rhrp::CS1 [list func $ibd_rhrp::FUNC_READ]]
set cs1msk [regbld ibd_rhrp::CS1 rdy ie {func -1}]
# expect ds mol=1 dpr=1 dry=0
set dsval [regbld ibd_rhrp::DS mol dpr]
@@ -149,7 +149,7 @@
rlc log " D1.5: loc check: cs1.rdy=1, ds.dry=1 -----------------"
# expect cs1 sc=0 tre=0 dva=1 rdy=1 ie=0 func=read go=0
-set cs1val [regbldkv ibd_rhrp::CS1 dva 1 rdy 1 func READ]
+set cs1val [regbld ibd_rhrp::CS1 dva rdy [list func $ibd_rhrp::FUNC_READ]]
# expect ds ata=0 mol=1 dpr=1 dry=1
set dsval [regbld ibd_rhrp::DS mol dpr dry]
/trunk/tools/tbench/rhrp/test_rhrp_int.tcl
1,4 → 1,4
# $Id: test_rhrp_int.tcl 705 2015-07-26 21:25:42Z 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> |
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory |
5,7 → 5,6
# |
# Revision History: |
# Date Rev Version Comment |
# 2015-07-25 704 1.1.2 tmpproc_dotest: use args rather opts |
# 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-03-29 667 1.0 Initial version |
173,13 → 172,13
##puts $lst |
|
# define tmpproc for readback checks |
proc tmpproc_dotest {cpu symName args} { |
proc tmpproc_dotest {cpu symName opts} { |
upvar 1 $symName sym |
|
set tout 10.; # FIXME_code: parameter ?? |
|
# setup defs hash, first defaults, than write over concrete run values |
args2opts opts {i.cs2 0 \ |
array set defs { i.cs2 0 \ |
i.da 0 \ |
i.dc 0 \ |
i.cs1 0 \ |
200,15 → 199,18
or.icnt 0 \ |
or.pcnt 1 \ |
do.rint 0 \ |
do.lam 0 } {*}$args |
do.lam 0 |
} |
array set defs $opts |
|
# build ibuf |
set ibuf [list $opts(i.cs2) $opts(i.da) $opts(i.dc) $opts(i.cs1) \ |
$opts(do.rint)] |
set ibuf [list $defs(i.cs2) $defs(i.da) $defs(i.dc) $defs(i.cs1) \ |
$defs(do.rint)] |
|
# setup idly, write ibuf, setup stack, and start cpu at start: |
$cpu cp -wibr rpa.cs1 [regbldkv ibd_rhrp::RCS1 \ |
val $opts(i.idly) func WIDLY ] \ |
$cpu cp -wibr rpa.cs1 [regbld ibd_rhrp::RCS1 \ |
[list val $defs(i.idly)] \ |
[list func $ibd_rhrp::RFUNC_WIDLY] ] \ |
-wal $sym(ibuf) \ |
-bwm $ibuf \ |
-wsp $sym(stack) \ |
215,7 → 217,7
-stapc $sym(start) |
|
# here do minimal lam handling (harvest + send DONE) |
if {$opts(do.lam)} { |
if {$defs(do.lam)} { |
rlc wtlam $tout apat |
$cpu cp -attn \ |
-wibr rpa.cs1 [ibd_rhrp::cs1_func $ibd_rhrp::RFUNC_DONE] |
225,28 → 227,28
|
# determine regs after cleanup |
set cs1msk [rutil::com16 [regbld ibd_rhrp::CS1 {func -1}]] |
set fcs2 [expr {$opts(o.cs2) & 0x00ff}]; # cs1.tre clears upper byte ! |
set fcs2 [expr {$defs(o.cs2) & 0x00ff}]; # cs1.tre clears upper byte ! |
set fer1 0 |
if {!$opts(do.rint)} { # no reinterrupt, ata clear by cpu |
set fcs1 [expr {$opts(o.cs1) & ~[regbld ibd_rhrp::CS1 sc tre {func -1}] }] |
set fds [expr {$opts(o.ds) & ~[regbld ibd_rhrp::DS ata erp] }] |
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 fds [expr {$defs(o.ds) & ~[regbld ibd_rhrp::DS ata erp] }] |
set fas 0 |
} else { # reinterrupt, ata still pending |
set fcs1 [expr {$opts(o.cs1) & ~[regbld ibd_rhrp::CS1 tre {func -1}] }] |
set fds [expr {$opts(o.ds) & ~[regbld ibd_rhrp::DS erp] }] |
set fas $opts(o.as) |
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 fas $defs(o.as) |
} |
$cpu cp -rpc -edata $sym(stop) \ |
-rsp -edata $sym(stack) \ |
-wal $sym(icnt) \ |
-rmi -edata $opts(o.icnt) \ |
-rmi -edata $defs(o.icnt) \ |
-rmi \ |
-rmi -edata $opts(o.cs1) \ |
-rmi -edata $opts(o.cs2) \ |
-rmi -edata $opts(o.er1) \ |
-rmi -edata $opts(o.ds) \ |
-rmi -edata $opts(o.as) \ |
-rmi -edata $opts(o.itim) \ |
-rmi -edata $defs(o.cs1) \ |
-rmi -edata $defs(o.cs2) \ |
-rmi -edata $defs(o.er1) \ |
-rmi -edata $defs(o.ds) \ |
-rmi -edata $defs(o.as) \ |
-rmi -edata $defs(o.itim) \ |
-rmi -edata $fcs1 $cs1msk \ |
-rmi -edata $fcs2 \ |
-rmi -edata $fer1 \ |
253,7 → 255,7
-rmi -edata $fds \ |
-rmi -edata $fas |
|
if {!$opts(do.rint)} return ""; |
if {!$defs(do.rint)} return ""; |
|
$cpu cp -start |
|
260,22 → 262,22
$cpu wtcpu -reset $tout |
|
# determine regs after cleanup |
set fcs1 [expr {$opts(or.cs1) & ~[regbld ibd_rhrp::CS1 sc] }] |
set fcs2 $opts(or.cs2) |
set fcs1 [expr {$defs(or.cs1) & ~[regbld ibd_rhrp::CS1 sc] }] |
set fcs2 $defs(or.cs2) |
set fer1 0 |
set fds [expr {$opts(or.ds) & ~[regbld ibd_rhrp::DS ata] }] |
set fds [expr {$defs(or.ds) & ~[regbld ibd_rhrp::DS ata] }] |
set fas 0 |
|
$cpu cp -rpc -edata $sym(stop) \ |
-rsp -edata $sym(stack) \ |
-wal $sym(icnt) \ |
-rmi -edata $opts(or.icnt) \ |
-rmi -edata $defs(or.icnt) \ |
-rmi \ |
-rmi -edata $opts(or.cs1) \ |
-rmi -edata $opts(or.cs2) \ |
-rmi -edata $opts(or.er1) \ |
-rmi -edata $opts(or.ds) \ |
-rmi -edata $opts(or.as) \ |
-rmi -edata $defs(or.cs1) \ |
-rmi -edata $defs(or.cs2) \ |
-rmi -edata $defs(or.er1) \ |
-rmi -edata $defs(or.ds) \ |
-rmi -edata $defs(or.as) \ |
-rmi \ |
-rmi -edata $fcs1 \ |
-rmi -edata $fcs2 \ |
296,7 → 298,7
rlc log " A1.1 set cs1.ie=1 alone -> no interrupt ------------" |
|
# Note: no interrupt, so ie stays on ! |
tmpproc_dotest $cpu sym \ |
set opts [list \ |
i.cs1 [regbld ibd_rhrp::CS1 ie] \ |
o.icnt 0 \ |
o.cs1 [regbld ibd_rhrp::CS1 dva rdy ie] \ |
305,11 → 307,13
o.ds [regbld ibd_rhrp::DS mol dpr dry] \ |
o.as 0 \ |
o.itim 0 |
] |
tmpproc_dotest $cpu sym $opts |
|
rlc log " A1.2 set cs1.ie=1 with rdy=1 -> software interrupt -" |
|
# Note: interrupt, so ie switched off again ! |
tmpproc_dotest $cpu sym \ |
set opts [list \ |
i.cs1 [regbld ibd_rhrp::CS1 rdy ie] \ |
o.icnt 1 \ |
o.cs1 [regbld ibd_rhrp::CS1 dva rdy] \ |
318,11 → 322,14
o.ds [regbld ibd_rhrp::DS mol dpr dry] \ |
o.as 0 \ |
o.itim 1 |
] |
|
tmpproc_dotest $cpu sym $opts |
|
rlc log " A2: test state functions: iff no, as yes ------------------" |
rlc log " A2.1 noop function ---------------------------------" |
|
tmpproc_dotest $cpu sym \ |
set opts [list \ |
i.cs1 [regbld ibd_rhrp::CS1 ie go] \ |
o.cs1 [regbld ibd_rhrp::CS1 ie dva rdy] \ |
o.cs2 [regbld ibd_rhrp::CS2 or ir] \ |
330,11 → 337,13
o.ds [regbld ibd_rhrp::DS mol dpr dry] \ |
o.as 0 \ |
o.itim 0 |
] |
tmpproc_dotest $cpu sym $opts |
|
rlc log " A2.2 pack acknowledge function (sets ds.vv=1) ------" |
|
set rbcs1func [list func $ibd_rhrp::FUNC_PACK] |
tmpproc_dotest $cpu sym \ |
set opts [list \ |
i.cs1 [regbld ibd_rhrp::CS1 $rbcs1func ie go] \ |
o.cs1 [regbld ibd_rhrp::CS1 dva rdy ie $rbcs1func] \ |
o.cs2 [regbld ibd_rhrp::CS2 or ir] \ |
342,6 → 351,8
o.ds [regbld ibd_rhrp::DS mol dpr dry vv] \ |
o.as 0 \ |
o.itim 0 |
] |
tmpproc_dotest $cpu sym $opts |
|
rlc log " A3: test seek type functions: iff no, as yes --------------" |
|
349,7 → 360,7
|
# check that cs1.sc=1, ds.ata=1, and as.u0=1 |
set rbcs1func [list func $ibd_rhrp::FUNC_SEEK] |
tmpproc_dotest $cpu sym \ |
set opts [list \ |
i.cs1 [regbld ibd_rhrp::CS1 $rbcs1func go] \ |
o.cs1 [regbld ibd_rhrp::CS1 sc dva rdy $rbcs1func] \ |
o.cs2 [regbld ibd_rhrp::CS2 or ir] \ |
357,12 → 368,14
o.ds [regbld ibd_rhrp::DS ata mol dpr dry vv] \ |
o.as [regbld ibd_rhrp::AS u0] \ |
o.itim 0 |
] |
tmpproc_dotest $cpu sym $opts |
|
rlc log " A3.2 seek function, valid da,dc, idly=0 ------------" |
|
# check re-interrupt too |
set rbcs1func [list func $ibd_rhrp::FUNC_SEEK] |
tmpproc_dotest $cpu sym \ |
set opts [list \ |
i.cs1 [regbld ibd_rhrp::CS1 ie $rbcs1func go] \ |
i.dc 814 \ |
i.idly 0 \ |
380,11 → 393,13
or.er1 0 \ |
or.ds [regbld ibd_rhrp::DS ata mol dpr dry vv] \ |
or.as [regbld ibd_rhrp::AS u0] |
] |
tmpproc_dotest $cpu sym $opts |
|
rlc log " A3.3 seek function, invalid dc ---------------------" |
|
set rbcs1func [list func $ibd_rhrp::FUNC_SEEK] |
tmpproc_dotest $cpu sym \ |
set opts [list \ |
i.cs1 [regbld ibd_rhrp::CS1 ie $rbcs1func go] \ |
i.dc 815 \ |
o.icnt 1 \ |
394,11 → 409,13
o.ds [regbld ibd_rhrp::DS ata erp mol dpr dry vv] \ |
o.as [regbld ibd_rhrp::AS u0] \ |
o.itim 1 |
] |
tmpproc_dotest $cpu sym $opts |
|
rlc log " A3.4 search function, valid da,dc, idly=0 ----------" |
|
set rbcs1func [list func $ibd_rhrp::FUNC_SEAR] |
tmpproc_dotest $cpu sym \ |
set opts [list \ |
i.cs1 [regbld ibd_rhrp::CS1 ie $rbcs1func go] \ |
i.dc 0 \ |
i.da [regbld ibd_rhrp::DA {ta 0} {sa 21}] \ |
410,11 → 427,13
o.ds [regbld ibd_rhrp::DS ata mol dpr dry vv] \ |
o.as [regbld ibd_rhrp::AS u0] \ |
o.itim 1 |
] |
tmpproc_dotest $cpu sym $opts |
|
rlc log " A3.5 search function, valid da,dc, idly=2 ----------" |
|
set rbcs1func [list func $ibd_rhrp::FUNC_SEAR] |
tmpproc_dotest $cpu sym \ |
set opts [list \ |
i.cs1 [regbld ibd_rhrp::CS1 ie $rbcs1func go] \ |
i.dc 0 \ |
i.da [regbld ibd_rhrp::DA {ta 0} {sa 21}] \ |
426,11 → 445,13
o.ds [regbld ibd_rhrp::DS ata mol dpr dry vv] \ |
o.as [regbld ibd_rhrp::AS u0] \ |
o.itim 3 |
] |
tmpproc_dotest $cpu sym $opts |
|
rlc log " A3.5 search function, valid da,dc, idly=8 ----------" |
|
set rbcs1func [list func $ibd_rhrp::FUNC_SEAR] |
tmpproc_dotest $cpu sym \ |
set opts [list \ |
i.cs1 [regbld ibd_rhrp::CS1 ie $rbcs1func go] \ |
i.dc 0 \ |
i.da [regbld ibd_rhrp::DA {ta 0} {sa 21}] \ |
442,6 → 463,8
o.ds [regbld ibd_rhrp::DS ata mol dpr dry vv] \ |
o.as [regbld ibd_rhrp::AS u0] \ |
o.itim 9 |
] |
tmpproc_dotest $cpu sym $opts |
|
rlc log " A3.5 search function, invalid sa, idly=8 -----------" |
# Note: idly is 8, but error ata's come immediately !! |
460,7 → 483,7
o.as [regbld ibd_rhrp::AS u0] \ |
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.1 read function, valid da,dc --------------------" |
474,5 → 497,5
o.ds [regbld ibd_rhrp::DS mol dpr dry vv] \ |
do.lam 1 |
] |
tmpproc_dotest $cpu sym {*}$opts |
tmpproc_dotest $cpu sym $opts |
|
/trunk/tools/tbench/rhrp/test_rhrp_int2.tcl
1,4 → 1,4
# $Id: test_rhrp_int2.tcl 705 2015-07-26 21:25:42Z mueller $ |
# $Id: test_rhrp_int2.tcl 692 2015-06-21 11:53:24Z mueller $ |
# |
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory |
5,7 → 5,6
# |
# Revision History: |
# Date Rev Version Comment |
# 2015-07-25 704 1.0.1 tmpproc_dotest: use args rather opts |
# 2015-05-20 692 1.0 Initial version |
# |
# Test interrupt response |
184,14 → 183,16
##puts $lst |
|
# define tmpproc for readback checks |
proc tmpproc_dotest {cpu symName args} { |
proc tmpproc_dotest {cpu symName opts} { |
upvar 1 $symName sym |
|
set tout 10.; # FIXME_code: parameter ?? |
|
# setup defs hash, first defaults, than write over concrete run values |
args2opts opts {i.nseek 0 \ |
i.idly 0 } {*}$args |
array set defs { i.nseek 0 \ |
i.idly 0 |
} |
array set defs $opts |
|
set fread [list func $ibd_rhrp::FUNC_READ] |
set fsear [list func $ibd_rhrp::FUNC_SEAR] |
200,8 → 201,8
# build ibuf |
set ibuf {} |
lappend ibuf 01 0100 [regbld ibd_rhrp::CS1 ie $fread go] |
lappend ibuf $opts(i.nseek) |
for {set i 1} {$i<=$opts(i.nseek)} {incr i} { |
lappend ibuf $defs(i.nseek) |
for {set i 1} {$i<=$defs(i.nseek)} {incr i} { |
set da [expr { 010 + $i}] |
set dc [expr {0100 + $i}] |
lappend ibuf $da $dc [regbld ibd_rhrp::CS1 ie $fsear go] |
209,8 → 210,9
} |
|
# setup idly, write ibuf, setup stack, and start cpu at start: |
$cpu cp -wibr rpa.cs1 [regbldkv ibd_rhrp::RCS1 \ |
val $opts(i.idly) func WIDLY ] \ |
$cpu cp -wibr rpa.cs1 [regbld ibd_rhrp::RCS1 \ |
[list val $defs(i.idly)] \ |
[list func $ibd_rhrp::RFUNC_WIDLY] ] \ |
-wal $sym(ibuf) \ |
-bwm $ibuf \ |
-wsp $sym(stack) \ |
251,7 → 253,7
|
# check setup search |
set mskcs1sc [rutil::com16 [regbld ibd_rhrp::CS1 sc]] |
for {set i 1} {$i<=$opts(i.nseek)} {incr i} { |
for {set i 1} {$i<=$defs(i.nseek)} {incr i} { |
set osscs1 [regbld ibd_rhrp::CS1 dva ie $fsear] |
set osscs2 [regbld ibd_rhrp::CS2 or ir [list unit $i]] |
set ossds [regbld ibd_rhrp::DS pip mol dpr vv] |
264,7 → 266,7
} |
|
# check interrupt xfer |
set sc [expr {$opts(i.nseek) > 0}] |
set sc [expr {$defs(i.nseek) > 0}] |
set oixcs1 [regbld ibd_rhrp::CS1 [list sc $sc] dva rdy $fread] |
set oixcs2 [regbld ibd_rhrp::CS2 or ir] |
set oixds [regbld ibd_rhrp::DS mol dpr dry vv] |
278,7 → 280,7
|
# check interrupt search |
set oisas $as |
for {set i 1} {$i<=$opts(i.nseek)} {incr i} { |
for {set i 1} {$i<=$defs(i.nseek)} {incr i} { |
set oiscs1 [regbld ibd_rhrp::CS1 [list sc $sc] dva rdy $fsear] |
set oiscs2 [regbld ibd_rhrp::CS2 or ir [list unit $i]] |
set oisds [regbld ibd_rhrp::DS ata mol dpr dry vv] |
303,17 → 305,33
|
rlc log " A1: test without search -----------------------------------" |
|
tmpproc_dotest $cpu sym i.nseek 0 i.idly 0 |
set opts [list \ |
i.nseek 0 \ |
i.idly 0 |
] |
tmpproc_dotest $cpu sym $opts |
|
rlc log " A2: test with 1 search ------------------------------------" |
|
tmpproc_dotest $cpu sym i.nseek 1 i.idly 10 |
set opts [list \ |
i.nseek 1 \ |
i.idly 10 |
] |
tmpproc_dotest $cpu sym $opts |
|
rlc log " A2: test with 2 search ------------------------------------" |
|
tmpproc_dotest $cpu sym i.nseek 2 i.idly 10 |
set opts [list \ |
i.nseek 2 \ |
i.idly 10 |
] |
tmpproc_dotest $cpu sym $opts |
|
rlc log " A2: test with 3 search ------------------------------------" |
|
tmpproc_dotest $cpu sym i.nseek 3 i.idly 10 |
set opts [list \ |
i.nseek 3 \ |
i.idly 10 |
] |
tmpproc_dotest $cpu sym $opts |
|
/trunk/tools/tbench/rhrp/test_rhrp_regs.tcl
1,4 → 1,4
# $Id: test_rhrp_regs.tcl 705 2015-07-26 21:25:42Z mueller $ |
# $Id: test_rhrp_regs.tcl 692 2015-06-21 11:53:24Z mueller $ |
# |
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory |
87,7 → 87,7
rlc log " A1.4: rem write bae, read l+r bae+cs1.bae ----------" |
|
foreach bae {077 071 000} { |
set cs1val [regbldkv ibd_rhrp::CS1 bae [expr {$bae & 03}] ] |
set cs1val [regbld ibd_rhrp::CS1 [list bae [expr {$bae & 03}]]] |
$cpu cp -wibr rpa.bae $bae \ |
-ribr rpa.bae -edata $bae \ |
-ribr rpa.cs1 -edata $cs1val $cs1msk \ |
100,7 → 100,7
$cpu cp -wibr rpa.bae 070; # set 3 lbs of bae |
|
foreach cs1bae {03 01 00} { |
set cs1val [regbldkv ibd_rhrp::CS1 bae $cs1bae] |
set cs1val [regbld ibd_rhrp::CS1 [list bae $cs1bae]] |
set bae [expr {070 | $cs1bae}] |
$cpu cp -wma rpa.cs1 $cs1val \ |
-rma rpa.bae -edata $bae \ |
202,8 → 202,8
} |
|
foreach {unit ta sa dc} $tbl { |
$cpu cp -wma rpa.cs2 [regbldkv ibd_rhrp::CS2 unit $unit] \ |
-wma rpa.da [regbldkv ibd_rhrp::DA ta $ta sa $sa] \ |
$cpu cp -wma rpa.cs2 [regbld ibd_rhrp::CS2 [list unit $unit]] \ |
-wma rpa.da [regbld ibd_rhrp::DA [list ta $ta] [list sa $sa]] \ |
-wma rpa.dc $dc |
} |
|
225,7 → 225,7
|
foreach {unit ta sa dc} $tbl { |
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit $unit] \ |
-wibr rpa.da [regbldkv ibd_rhrp::DA ta $ta sa $sa] \ |
-wibr rpa.da [regbld ibd_rhrp::DA [list ta $ta] [list sa $sa]] \ |
-wibr rpa.dc $dc |
} |
|
/trunk/tools/tbench/rhrp/test_rhrp_basics.tcl
1,4 → 1,4
# $Id: test_rhrp_basics.tcl 705 2015-07-26 21:25:42Z mueller $ |
# $Id: test_rhrp_basics.tcl 683 2015-05-17 21:54:35Z mueller $ |
# |
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory |
101,12 → 101,12
set dsmsk [regbld ibd_rhrp::DS dpr] |
set cs2msk [regbld ibd_rhrp::CS2 ned {unit 3}] |
foreach {unit dpr dte dt} $tbl { |
set dsval [regbldkv ibd_rhrp::DS dpr $dpr] |
set cs2val [regbldkv ibd_rhrp::CS2 ned [expr {1-$dpr}] unit $unit] |
set dsval [regbld ibd_rhrp::DS [list dpr $dpr]] |
set cs2val [regbld ibd_rhrp::CS2 [list ned [expr {1-$dpr}]] [list unit $unit]] |
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit $unit] \ |
-ribr rpa.ds -edata $dsval $dsmsk \ |
-ribr rpa.dt -edata $dte \ |
-wma rpa.cs2 [regbldkv ibd_rhrp::CS2 unit $unit] \ |
-wma rpa.cs2 [regbld ibd_rhrp::CS2 [list unit $unit]] \ |
-wma rpa.cs1 [regbld ibd_rhrp::CS1 tre] \ |
-rma rpa.dt -edata $dt \ |
-rma rpa.cs2 -edata $cs2val $cs2msk |
191,8 → 191,8
|
set cs2msk [regbld ibd_rhrp::CS2 ned {unit -1}] |
foreach {unit} {4 5 6 7} { |
set cs2val [regbldkv ibd_rhrp::CS2 ned 1 unit $unit] |
$cpu cp -wma rpa.cs2 [regbldkv ibd_rhrp::CS2 unit $unit] \ |
set cs2val [regbld ibd_rhrp::CS2 ned [list unit $unit]] |
$cpu cp -wma rpa.cs2 [regbld ibd_rhrp::CS2 [list unit $unit]] \ |
-wma rpa.cs1 [regbld ibd_rhrp::CS1 tre] \ |
-rma rpa.dt -edata 0 \ |
-rma rpa.cs2 -edata $cs2val $cs2msk |
/trunk/tools/tbench/tm11/test_tm11_int.tcl
1,4 → 1,4
# $Id: test_tm11_int.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: test_tm11_int.tcl 683 2015-05-17 21:54:35Z mueller $ |
# |
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory |
5,7 → 5,6
# |
# Revision History: |
# Date Rev Version Comment |
# 2015-07-25 704 1.0.1 tmpproc_dotest: use args rather opts |
# 2015-05-17 683 1.0 Initial version |
# |
# Test interrupt response |
89,23 → 88,25
##puts $lst |
|
# define tmpproc for readback checks |
proc tmpproc_dotest {cpu symName args} { |
proc tmpproc_dotest {cpu symName opts} { |
upvar 1 $symName sym |
|
set tout 10.; # FIXME_code: parameter ?? |
|
# setup defs hash, first defaults, than write over concrete run values |
args2opts opts {i.cr 0 \ |
i.bc 0 \ |
i.ba 0 \ |
o.sr 0 \ |
o.cr 0 \ |
o.bc 0 \ |
o.ba 0 \ |
do.lam 0 } {*}$args |
array set defs { i.cr 0 \ |
i.bc 0 \ |
i.ba 0 \ |
o.sr 0 \ |
o.cr 0 \ |
o.bc 0 \ |
o.ba 0 \ |
do.lam 0 |
} |
array set defs $opts |
|
# build ibuf |
set ibuf [list $opts(i.bc) $opts(i.ba) $opts(i.cr)] |
set ibuf [list $defs(i.bc) $defs(i.ba) $defs(i.cr)] |
|
# setup write ibuf, setup stack, and start cpu at start: |
$cpu cp -wal $sym(ibuf) \ |
114,7 → 115,7
-stapc $sym(start) |
|
# here do minimal lam handling (harvest + send DONE) |
if {$opts(do.lam)} { |
if {$defs(do.lam)} { |
rlc wtlam $tout apat |
$cpu cp -attn \ |
-wibr tma.cs [ibd_rhrp::cr_func $ibd_tm11::RFUNC_DONE] |
127,15 → 128,15
-rsp -edata $sym(stack) \ |
-wal $sym(obuf) \ |
-rmi -edata 1 \ |
-rmi -edata $opts(o.sr) \ |
-rmi -edata $opts(o.cr) \ |
-rmi -edata $opts(o.bc) \ |
-rmi -edata $opts(o.ba) \ |
-rmi -edata $defs(o.sr) \ |
-rmi -edata $defs(o.cr) \ |
-rmi -edata $defs(o.bc) \ |
-rmi -edata $defs(o.ba) \ |
-wal $sym(fbuf) \ |
-rmi -edata $opts(o.sr) \ |
-rmi -edata $opts(o.cr) \ |
-rmi -edata $opts(o.bc) \ |
-rmi -edata $opts(o.ba) |
-rmi -edata $defs(o.sr) \ |
-rmi -edata $defs(o.cr) \ |
-rmi -edata $defs(o.bc) \ |
-rmi -edata $defs(o.ba) |
|
return "" |
} |
147,7 → 148,7
# -- Section A --------------------------------------------------------------- |
rlc log " A1.1 set cr.ie=1 -> software interrupt -------------" |
|
tmpproc_dotest $cpu sym \ |
set opts [list \ |
i.cr [regbld ibd_tm11::CR ie] \ |
i.bc 0xff00 \ |
i.ba 0x8800 \ |
155,5 → 156,7
o.cr [regbld ibd_tm11::CR rdy ie] \ |
o.bc 0xff00 \ |
o.ba 0x8800 |
] |
|
tmpproc_dotest $cpu sym $opts |
|
/trunk/tools/tbench/cp/test_cp_cpubasics.tcl
1,4 → 1,4
# $Id: test_cp_cpubasics.tcl 702 2015-07-19 17:36:09Z mueller $ |
# $Id: test_cp_cpubasics.tcl 683 2015-05-17 21:54:35Z mueller $ |
# |
# Copyright 2013-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory |
5,7 → 5,6
# |
# Revision History: |
# Date Rev Version Comment |
# 2015-07-19 702 1.1.1 ignore attn in stat checks |
# 2015-05-09 676 1.1 w11a start/stop/suspend overhaul |
# 2013-03-31 502 1.0 Initial version |
# |
92,13 → 91,12
|
set statgo [regbld rw11::STAT cpugo] |
set statgosu [regbld rw11::STAT cpususp cpugo] |
set statmask [rutil::com8 [regbld rw11::STAT attn]]; # check all but attn |
|
rlc log " execute via -stapc, check cpugo and that r2 increments" |
$cpu cp -wr2 00000 \ |
-stapc $sym(start) \ |
-rr2 rr2_1 -estat $statgo $statmask \ |
-rr2 rr2_2 -estat $statgo $statmask |
-rr2 rr2_1 -estat $statgo \ |
-rr2 rr2_2 -estat $statgo |
tmpproc_checkr2inc $rr2_1 |
tmpproc_checkr2inc [expr {$rr2_2 - $rr2_1}] |
|
105,13 → 103,13
rlc log " suspend, check cpususp=1 and that r2 doesn't increment" |
$cpu cp -suspend \ |
-wr2 00000 \ |
-rr2 -edata 0 -estat $statgosu $statmask \ |
-rr2 -edata 0 -estat $statgosu $statmask |
-rr2 -edata 0 -estat $statgosu \ |
-rr2 -edata 0 -estat $statgosu |
|
rlc log " resume, check cpususp=0 and that r2 increments again" |
$cpu cp -resume \ |
-rr2 rr2_1 -estat $statgo $statmask \ |
-rr2 rr2_2 -estat $statgo $statmask |
-rr2 rr2_1 -estat $statgo \ |
-rr2 rr2_2 -estat $statgo |
tmpproc_checkr2inc $rr2_1 |
tmpproc_checkr2inc [expr {$rr2_2 - $rr2_1}] |
|
/trunk/tools/tbench/cpu_all.dat
1,4 → 1,4
# $Id: cpu_all.dat 704 2015-07-25 14:18:03Z mueller $ |
# $Id: cpu_all.dat 683 2015-05-17 21:54:35Z mueller $ |
# |
## steering file for all cpu tests |
# |
5,6 → 5,3
@cp/cp_all.dat |
@w11a/w11a_all.dat |
# |
@w11a_cmon/w11a_cmon_all.dat |
@w11a_hbpt/w11a_hbpt_all.dat |
# |
/trunk/tools/tbench/w11a/test_w11a_inst_traps.tcl
1,4 → 1,4
# $Id: test_w11a_inst_traps.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: test_w11a_inst_traps.tcl 683 2015-05-17 21:54:35Z mueller $ |
# |
# Copyright 2013-2014 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory |
70,14 → 70,14
.word 177777 |
} |
|
rw11::asmrun $cpu sym r5 $sym(data) |
rw11::asmrun $cpu sym [list r5 $sym(data) ] |
rw11::asmwait $cpu sym |
rw11::asmtreg $cpu r0 0 \ |
r1 0 \ |
r2 0 \ |
r3 0 \ |
r5 [expr {$sym(data) + 6*5*2}] \ |
sp $sym(stack) |
rw11::asmtreg $cpu [list r0 0 \ |
r1 0 \ |
r2 0 \ |
r3 0 \ |
r5 [expr {$sym(data) + 6*5*2}] \ |
sp $sym(stack) ] |
|
# data: trap ps; trap id; stack-pc; stack-ps opcode |
rw11::asmtmem $cpu $sym(data) \ |
/trunk/tools/tbench/w11a/test_w11a_dstm_word_flow.tcl
1,4 → 1,4
# $Id: test_w11a_dstm_word_flow.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: test_w11a_dstm_word_flow.tcl 683 2015-05-17 21:54:35Z mueller $ |
# |
# Copyright 2013-2014 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory |
50,19 → 50,19
pdat5e: |
} |
|
rw11::asmrun $cpu sym r0 010 \ |
r1 $sym(data1) \ |
r2 $sym(data2) \ |
r3 $sym(pdata3) \ |
r4 $sym(data4e) \ |
r5 $sym(pdat5e) |
rw11::asmrun $cpu sym [list r0 010 \ |
r1 $sym(data1) \ |
r2 $sym(data2) \ |
r3 $sym(pdata3) \ |
r4 $sym(data4e) \ |
r5 $sym(pdat5e) ] |
rw11::asmwait $cpu sym |
rw11::asmtreg $cpu r0 011 \ |
r1 $sym(data1) \ |
r2 [expr {$sym(data2) + 4}] \ |
r3 [expr {$sym(pdata3) + 4}] \ |
r4 [expr {$sym(data4e) - 4}] \ |
r5 [expr {$sym(pdat5e) - 4}] |
rw11::asmtreg $cpu [list r0 011 \ |
r1 $sym(data1) \ |
r2 [expr {$sym(data2) + 4}] \ |
r3 [expr {$sym(pdata3) + 4}] \ |
r4 [expr {$sym(data4e) - 4}] \ |
r5 [expr {$sym(pdat5e) - 4}] ] |
rw11::asmtmem $cpu $sym(data1) {021 031 032 041 042 051 052 061 062} |
|
# ---------------------------------------------------------------------------- |
91,13 → 91,13
pdata3: .word data3 |
} |
|
rw11::asmrun $cpu sym r0 [expr {$sym(data0)-020}] \ |
r1 [expr {$sym(pdata1)-040}] |
rw11::asmrun $cpu sym [list r0 [expr {$sym(data0)-020}] \ |
r1 [expr {$sym(pdata1)-040}] ] |
rw11::asmwait $cpu sym |
rw11::asmtreg $cpu r0 [expr {$sym(data0)-020}] \ |
r1 [expr {$sym(pdata1)-040}] \ |
r2 0 \ |
r3 0 \ |
r4 0 \ |
r5 0 |
rw11::asmtreg $cpu [list r0 [expr {$sym(data0)-020}] \ |
r1 [expr {$sym(pdata1)-040}] \ |
r2 0 \ |
r3 0 \ |
r4 0 \ |
r5 0 ] |
rw11::asmtmem $cpu $sym(data0) {0201 0211 0221 0231 0241} |
/trunk/tools/tbench/w11a/test_w11a_srcr_word_flow.tcl
1,4 → 1,4
# $Id: test_w11a_srcr_word_flow.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: test_w11a_srcr_word_flow.tcl 683 2015-05-17 21:54:35Z mueller $ |
# |
# Copyright 2013- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory |
31,15 → 31,15
stop: |
} |
|
rw11::asmrun $cpu sym r0 01234 |
rw11::asmrun $cpu sym [list r0 01234] |
rw11::asmwait $cpu sym |
rw11::asmtreg $cpu r0 01234 \ |
r1 01234 \ |
r2 $sym(stack) \ |
r3 $sym(lpc) \ |
r4 0 \ |
r5 0 \ |
sp $sym(stack) |
rw11::asmtreg $cpu [list r0 01234 \ |
r1 01234 \ |
r2 $sym(stack) \ |
r3 $sym(lpc) \ |
r4 0 \ |
r5 0 \ |
sp $sym(stack) ] |
|
# ---------------------------------------------------------------------------- |
rlc log " (r0),(r0)+,-(r0) (mode=1,2,4)" |
65,14 → 65,14
.word 1002 |
} |
|
rw11::asmrun $cpu sym r0 $sym(data) |
rw11::asmrun $cpu sym [list r0 $sym(data)] |
rw11::asmwait $cpu sym |
rw11::asmtreg $cpu r0 $sym(data) \ |
r1 001001 \ |
r2 001001 \ |
r3 001002 \ |
r4 001002 \ |
r5 001001 |
rw11::asmtreg $cpu [list r0 $sym(data) \ |
r1 001001 \ |
r2 001001 \ |
r3 001002 \ |
r4 001002 \ |
r5 001001 ] |
|
# ---------------------------------------------------------------------------- |
rlc log " @(r0)+,@-(r0) (mode=3,5)" |
101,14 → 101,14
data1: .word 2002 |
} |
|
rw11::asmrun $cpu sym r0 $sym(pdata) |
rw11::asmrun $cpu sym [list r0 $sym(pdata)] |
rw11::asmwait $cpu sym |
rw11::asmtreg $cpu r0 $sym(pdata) \ |
r1 002001 \ |
r2 002002 \ |
r3 [expr {$sym(pdata)+4}] \ |
r4 002002 \ |
r5 002001 |
rw11::asmtreg $cpu [list r0 $sym(pdata) \ |
r1 002001 \ |
r2 002002 \ |
r3 [expr {$sym(pdata)+4}] \ |
r4 002002 \ |
r5 002001 ] |
|
# ---------------------------------------------------------------------------- |
rlc log " nn(r0),@nn(r0) (mode=6,7)" |
138,14 → 138,14
data1: .word 003004 |
} |
|
rw11::asmrun $cpu sym r0 $sym(data) |
rw11::asmrun $cpu sym [list r0 $sym(data)] |
rw11::asmwait $cpu sym |
rw11::asmtreg $cpu r0 $sym(data) \ |
r1 003001 \ |
r2 003002 \ |
r3 003003 \ |
r4 003004 \ |
r5 0 |
rw11::asmtreg $cpu [list r0 $sym(data) \ |
r1 003001 \ |
r2 003002 \ |
r3 003003 \ |
r4 003004 \ |
r5 0 ] |
|
# ---------------------------------------------------------------------------- |
rlc log " #nn,@#nn,var,@var (mode=27,37,67,77)" |
171,11 → 171,11
data4: .word 004004 |
} |
|
rw11::asmrun $cpu sym |
rw11::asmrun $cpu sym {} |
rw11::asmwait $cpu sym |
rw11::asmtreg $cpu r0 0 \ |
r1 004001 \ |
r2 004002 \ |
r3 004003 \ |
r4 004004 \ |
r5 0 |
rw11::asmtreg $cpu [list r0 0 \ |
r1 004001 \ |
r2 004002 \ |
r3 004003 \ |
r4 004004 \ |
r5 0 ] |
/trunk/tools/tbench/w11a/test_w11a_div.tcl
1,4 → 1,4
# $Id: test_w11a_div.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: test_w11a_div.tcl 683 2015-05-17 21:54:35Z mueller $ |
# |
# Copyright 2014- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory |
92,7 → 92,7
$ddh $ddl $dr16 $n $z $v $c $q16 $r16 $ddi $dri $qi $ri ] |
} |
|
rw11::asmrun $cpu sym r0 $ddh r1 $ddl r2 $dr16 |
rw11::asmrun $cpu sym [list r0 $ddh r1 $ddl r2 $dr16] |
rw11::asmwait $cpu sym |
|
if {!$v && !$c} { # test q and r only when V=0 C=0 expected |
100,7 → 100,7
} |
lappend treglist r3 $nzvc |
|
set errcnt [rw11::asmtreg $cpu {*}$treglist] |
set errcnt [rw11::asmtreg $cpu $treglist] |
|
if {$errcnt} { |
puts [format \ |
/trunk/tools/tbench/w11a/test_w11a_dsta_flow.tcl
1,4 → 1,4
# $Id: test_w11a_dsta_flow.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: test_w11a_dsta_flow.tcl 683 2015-05-17 21:54:35Z mueller $ |
# |
# Copyright 2013-2014 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory |
64,20 → 64,20
.word 177777 |
} |
|
rw11::asmrun $cpu sym r0 $sym(sub00) \ |
r1 $sym(sub10) \ |
r2 $sym(psub2) \ |
r3 [expr {$sym(sub30)+2}] \ |
r4 $sym(psub4e) \ |
r5 $sym(data) |
rw11::asmrun $cpu sym [list r0 $sym(sub00) \ |
r1 $sym(sub10) \ |
r2 $sym(psub2) \ |
r3 [expr {$sym(sub30)+2}] \ |
r4 $sym(psub4e) \ |
r5 $sym(data) ] |
rw11::asmwait $cpu sym |
rw11::asmtreg $cpu r0 $sym(sub00) \ |
r1 [expr {$sym(sub10)+2}] \ |
r2 [expr {$sym(psub2)+4}] \ |
r3 $sym(sub30) \ |
r4 $sym(psub4) \ |
r5 [expr {$sym(data) + 7*2*2}] \ |
sp $sym(stack) |
rw11::asmtreg $cpu [list r0 $sym(sub00) \ |
r1 [expr {$sym(sub10)+2}] \ |
r2 [expr {$sym(psub2)+4}] \ |
r3 $sym(sub30) \ |
r4 $sym(psub4) \ |
r5 [expr {$sym(data) + 7*2*2}] \ |
sp $sym(stack) ] |
rw11::asmtmem $cpu $sym(data) [list \ |
0100 $sym(start:100$) \ |
0110 $sym(start:110$) \ |
127,17 → 127,17
.word 177777 |
} |
|
rw11::asmrun $cpu sym r0 [expr {$sym(sub00)-020}] \ |
r1 [expr {$sym(psub10)-040}] \ |
r5 $sym(data) |
rw11::asmrun $cpu sym [list r0 [expr {$sym(sub00)-020}] \ |
r1 [expr {$sym(psub10)-040}] \ |
r5 $sym(data) ] |
rw11::asmwait $cpu sym |
rw11::asmtreg $cpu r0 [expr {$sym(sub00)-020}] \ |
r1 [expr {$sym(psub10)-040}] \ |
r2 0 \ |
r3 0 \ |
r4 0 \ |
r5 [expr {$sym(data) + 5*2*2}] \ |
sp $sym(stack) |
rw11::asmtreg $cpu [list r0 [expr {$sym(sub00)-020}] \ |
r1 [expr {$sym(psub10)-040}] \ |
r2 0 \ |
r3 0 \ |
r4 0 \ |
r5 [expr {$sym(data) + 5*2*2}] \ |
sp $sym(stack) ] |
rw11::asmtmem $cpu $sym(data) [list \ |
01100 $sym(start:1100$) \ |
01110 $sym(start:1110$) \ |
/trunk/tools/tbench/w11a/test_w11a_dstw_word_flow.tcl
1,4 → 1,4
# $Id: test_w11a_dstw_word_flow.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: test_w11a_dstw_word_flow.tcl 683 2015-05-17 21:54:35Z mueller $ |
# |
# Copyright 2013-2014 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory |
50,18 → 50,18
pdat5e: |
} |
|
rw11::asmrun $cpu sym r1 $sym(data1) \ |
r2 $sym(data2) \ |
r3 $sym(pdata3) \ |
r4 $sym(data4e) \ |
r5 $sym(pdat5e) |
rw11::asmrun $cpu sym [list r1 $sym(data1) \ |
r2 $sym(data2) \ |
r3 $sym(pdata3) \ |
r4 $sym(data4e) \ |
r5 $sym(pdat5e) ] |
rw11::asmwait $cpu sym |
rw11::asmtreg $cpu r0 0100 \ |
r1 $sym(data1) \ |
r2 [expr {$sym(data2) + 4}] \ |
r3 [expr {$sym(pdata3) + 4}] \ |
r4 [expr {$sym(data4e) - 4}] \ |
r5 [expr {$sym(pdat5e) - 4}] |
rw11::asmtreg $cpu [list r0 0100 \ |
r1 $sym(data1) \ |
r2 [expr {$sym(data2) + 4}] \ |
r3 [expr {$sym(pdata3) + 4}] \ |
r4 [expr {$sym(data4e) - 4}] \ |
r5 [expr {$sym(pdat5e) - 4}] ] |
rw11::asmtmem $cpu $sym(data1) {0110 0120 0121 0130 0131 0140 0141 0150 0151} |
|
# ---------------------------------------------------------------------------- |
90,13 → 90,13
pdata3: .word data3 |
} |
|
rw11::asmrun $cpu sym r0 [expr {$sym(data0)-020}] \ |
r1 [expr {$sym(pdata1)-040}] |
rw11::asmrun $cpu sym [list r0 [expr {$sym(data0)-020}] \ |
r1 [expr {$sym(pdata1)-040}] ] |
rw11::asmwait $cpu sym |
rw11::asmtreg $cpu r0 [expr {$sym(data0)-020}] \ |
r1 [expr {$sym(pdata1)-040}] \ |
r2 0 \ |
r3 0 \ |
r4 0 \ |
r5 0 |
rw11::asmtreg $cpu [list r0 [expr {$sym(data0)-020}] \ |
r1 [expr {$sym(pdata1)-040}] \ |
r2 0 \ |
r3 0 \ |
r4 0 \ |
r5 0 ] |
rw11::asmtmem $cpu $sym(data0) {0200 0210 0220 0230 0240} |
/trunk/tools/src/librw11/Rw11CntlRHRP.cpp
1,4 → 1,4
// $Id: Rw11CntlRHRP.cpp 720 2015-12-28 14:52:45Z mueller $ |
// $Id: Rw11CntlRHRP.cpp 686 2015-06-04 21:08:08Z mueller $ |
// |
// Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
// Other credits: |
15,7 → 15,6
// |
// Revision History: |
// Date Rev Version Comment |
// 2015-12-28 720 1.0.3 use octal for er1= printouts |
// 2015-06-04 686 1.0.2 check for spurious lams |
// 2015-05-24 684 1.0.1 fixed rpcs2 update for wcheck and nem aborts |
// 2015-05-14 680 1.0 Initial version |
24,7 → 23,7
|
/*! |
\file |
\version $Id: Rw11CntlRHRP.cpp 720 2015-12-28 14:52:45Z mueller $ |
\version $Id: Rw11CntlRHRP.cpp 686 2015-06-04 21:08:08Z mueller $ |
\brief Implemenation of Rw11CntlRHRP. |
*/ |
|
613,7 → 612,7
lmsg << "-I RHRP" |
<< " err " |
<< " cs1=" << RosPrintBvi(fRd_rpcs1,8) |
<< " er1=" << RosPrintBvi(rper1,8); |
<< " er1=" << RosPrintBvi(rper1,2,16); |
} |
|
return; |
663,8 → 662,8
if (rper1 || rpcs2) { |
lmsg << "-I RHRP" |
<< " err " |
<< " er1=" << RosPrintBvi(rper1,8) |
<< " cs2=" << RosPrintBvi(rpcs2,8,8) |
<< " er1=" << RosPrintBvi(rper1,2,16) |
<< " cs2=" << RosPrintBvi(rpcs2,2,8) |
<< endl; |
} |
lmsg << "-I RHRP" |
/trunk/tools/src/librw11/Rw11Cpu.cpp
1,4 → 1,4
// $Id: Rw11Cpu.cpp 719 2015-12-27 09:45:43Z mueller $ |
// $Id: Rw11Cpu.cpp 682 2015-05-15 18:35:29Z mueller $ |
// |
// Copyright 2013-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
// |
13,9 → 13,6
// |
// Revision History: |
// Date Rev Version Comment |
// 2015-12-26 719 1.2.5 BUGFIX: IM* correct register offset definitions |
// 2015-07-12 700 1.2.5 use ..CpuAct instead ..CpuGo (new active based lam); |
// add probe and map setup for optional cpu components |
// 2015-05-15 682 1.2.4 BUGFIX: Boot(): extract unit number properly |
// Boot(): stop cpu before load, check unit number |
// 2015-05-08 675 1.2.3 w11a start/stop/suspend overhaul |
32,7 → 29,7
|
/*! |
\file |
\version $Id: Rw11Cpu.cpp 719 2015-12-27 09:45:43Z mueller $ |
\version $Id: Rw11Cpu.cpp 682 2015-05-15 18:35:29Z mueller $ |
\brief Implemenation of Rw11Cpu. |
*/ |
#include <stdlib.h> |
104,7 → 101,6
const uint16_t Rw11Cpu::kCPURUST_STOP; |
const uint16_t Rw11Cpu::kCPURUST_STEP; |
const uint16_t Rw11Cpu::kCPURUST_SUSP; |
const uint16_t Rw11Cpu::kCPURUST_HBPT; |
const uint16_t Rw11Cpu::kCPURUST_RUNS; |
const uint16_t Rw11Cpu::kCPURUST_VECFET; |
const uint16_t Rw11Cpu::kCPURUST_RECRSV; |
120,40 → 116,9
|
const uint8_t Rw11Cpu::kStat_M_CmdErr; |
const uint8_t Rw11Cpu::kStat_M_CmdMErr; |
const uint8_t Rw11Cpu::kStat_M_CpuSusp; |
const uint8_t Rw11Cpu::kStat_M_CpuHalt; |
const uint8_t Rw11Cpu::kStat_M_CpuGo; |
|
const uint16_t Rw11Cpu::kSCBASE; |
const uint16_t Rw11Cpu::kSCCNTL; |
const uint16_t Rw11Cpu::kSCADDR; |
const uint16_t Rw11Cpu::kSCDATA; |
|
const uint16_t Rw11Cpu::kCMBASE; |
const uint16_t Rw11Cpu::kCMCNTL; |
const uint16_t Rw11Cpu::kCMSTAT; |
const uint16_t Rw11Cpu::kCMADDR; |
const uint16_t Rw11Cpu::kCMDATA; |
const uint16_t Rw11Cpu::kCMIADDR; |
const uint16_t Rw11Cpu::kCMIPC; |
const uint16_t Rw11Cpu::kCMIREG; |
const uint16_t Rw11Cpu::kCMIMAL; |
|
const uint16_t Rw11Cpu::kHBBASE; |
const uint16_t Rw11Cpu::kHBSIZE; |
const uint16_t Rw11Cpu::kHBNMAX; |
const uint16_t Rw11Cpu::kHBCNTL; |
const uint16_t Rw11Cpu::kHBSTAT; |
const uint16_t Rw11Cpu::kHBHILIM; |
const uint16_t Rw11Cpu::kHBLOLIM; |
|
const uint16_t Rw11Cpu::kIMBASE; |
const uint16_t Rw11Cpu::kIMCNTL; |
const uint16_t Rw11Cpu::kIMSTAT; |
const uint16_t Rw11Cpu::kIMHILIM; |
const uint16_t Rw11Cpu::kIMLOLIM; |
const uint16_t Rw11Cpu::kIMADDR; |
const uint16_t Rw11Cpu::kIMDATA; |
|
//------------------------------------------+----------------------------------- |
//! Constructor |
|
163,14 → 128,10
fIndex(0), |
fBase(0), |
fIBase(0x4000), |
fHasScnt(false), |
fHasCmon(false), |
fHasHbpt(0), |
fHasIbmon(false), |
fCpuAct(0), |
fCpuGo(0), |
fCpuStat(0), |
fCpuActMutex(), |
fCpuActCond(), |
fCpuGoMutex(), |
fCpuGoCond(), |
fCntlMap(), |
fIAddrMap(), |
fRAddrMap(), |
189,8 → 150,69
void Rw11Cpu::Setup(Rw11* pw11) |
{ |
fpW11 = pw11; |
SetupStd(); |
SetupOpt(); |
// add control port address rbus mappings |
AllRAddrMapInsert("conf" , Base()+kCPCONF); |
AllRAddrMapInsert("cntl" , Base()+kCPCNTL); |
AllRAddrMapInsert("stat" , Base()+kCPSTAT); |
AllRAddrMapInsert("psw" , Base()+kCPPSW); |
AllRAddrMapInsert("al" , Base()+kCPAL); |
AllRAddrMapInsert("ah" , Base()+kCPAH); |
AllRAddrMapInsert("mem" , Base()+kCPMEM); |
AllRAddrMapInsert("memi" , Base()+kCPMEMI); |
AllRAddrMapInsert("r0" , Base()+kCPR0); |
AllRAddrMapInsert("r1" , Base()+kCPR0+1); |
AllRAddrMapInsert("r2" , Base()+kCPR0+2); |
AllRAddrMapInsert("r3" , Base()+kCPR0+3); |
AllRAddrMapInsert("r4" , Base()+kCPR0+4); |
AllRAddrMapInsert("r5" , Base()+kCPR0+5); |
AllRAddrMapInsert("sp" , Base()+kCPR0+6); |
AllRAddrMapInsert("pc" , Base()+kCPR0+7); |
AllRAddrMapInsert("membe",Base()+kCPMEMBE); |
|
// add cpu register address ibus and rbus mappings |
AllIAddrMapInsert("psw" , 0177776); |
AllIAddrMapInsert("stklim" , 0177774); |
AllIAddrMapInsert("pirq" , 0177772); |
AllIAddrMapInsert("mbrk" , 0177770); |
AllIAddrMapInsert("cpuerr" , 0177766); |
AllIAddrMapInsert("sysid" , 0177764); |
AllIAddrMapInsert("hisize" , 0177762); |
AllIAddrMapInsert("losize" , 0177760); |
|
AllIAddrMapInsert("hm" , 0177752); |
AllIAddrMapInsert("maint" , 0177750); |
AllIAddrMapInsert("cntrl" , 0177746); |
AllIAddrMapInsert("syserr" , 0177744); |
AllIAddrMapInsert("hiaddr" , 0177742); |
AllIAddrMapInsert("loaddr" , 0177740); |
|
AllIAddrMapInsert("ssr2" , 0177576); |
AllIAddrMapInsert("ssr1" , 0177574); |
AllIAddrMapInsert("ssr0" , 0177572); |
|
AllIAddrMapInsert("sdreg" , 0177570); |
|
AllIAddrMapInsert("ssr3" , 0172516); |
|
// add mmu segment register files |
string sdr = "sdr"; |
string sar = "sar"; |
for (char i=0; i<8; i++) { |
char ichar = '0'+i; |
AllIAddrMapInsert(sdr+"ki."+ichar, 0172300+2*i); |
AllIAddrMapInsert(sdr+"kd."+ichar, 0172320+2*i); |
AllIAddrMapInsert(sar+"ki."+ichar, 0172340+2*i); |
AllIAddrMapInsert(sar+"kd."+ichar, 0172360+2*i); |
AllIAddrMapInsert(sdr+"si."+ichar, 0172200+2*i); |
AllIAddrMapInsert(sdr+"sd."+ichar, 0172220+2*i); |
AllIAddrMapInsert(sar+"si."+ichar, 0172240+2*i); |
AllIAddrMapInsert(sar+"sd."+ichar, 0172260+2*i); |
AllIAddrMapInsert(sdr+"ui."+ichar, 0177600+2*i); |
AllIAddrMapInsert(sdr+"ud."+ichar, 0177620+2*i); |
AllIAddrMapInsert(sar+"ui."+ichar, 0177640+2*i); |
AllIAddrMapInsert(sar+"ud."+ichar, 0177660+2*i); |
} |
|
return; |
} |
|
700,7 → 722,7
clist.Clear(); |
clist.AddWreg(fBase+kCPPC, astart); // load PC |
clist.AddWreg(fBase+kCPCNTL, kCPFUNC_START); // and start |
SetCpuActUp(); |
SetCpuGoUp(); |
if (!Server().Exec(clist, emsg)) return false; |
|
return true; |
709,12 → 731,12
//------------------------------------------+----------------------------------- |
//! FIXME_docs |
|
void Rw11Cpu::SetCpuActUp() |
void Rw11Cpu::SetCpuGoUp() |
{ |
boost::lock_guard<boost::mutex> lock(fCpuActMutex); |
fCpuAct = true; |
boost::lock_guard<boost::mutex> lock(fCpuGoMutex); |
fCpuGo = true; |
fCpuStat = 0; |
fCpuActCond.notify_all(); |
fCpuGoCond.notify_all(); |
return; |
} |
|
721,13 → 743,13
//------------------------------------------+----------------------------------- |
//! FIXME_docs |
|
void Rw11Cpu::SetCpuActDown(uint16_t stat) |
void Rw11Cpu::SetCpuGoDown(uint16_t stat) |
{ |
if ((stat & kCPSTAT_M_CpuGo) == 0 || (stat & kCPSTAT_M_CpuSusp) != 0 ) { |
boost::lock_guard<boost::mutex> lock(fCpuActMutex); |
fCpuAct = false; |
if ((stat & kCPSTAT_M_CpuGo) == 0) { |
boost::lock_guard<boost::mutex> lock(fCpuGoMutex); |
fCpuGo = false; |
fCpuStat = stat; |
fCpuActCond.notify_all(); |
fCpuGoCond.notify_all(); |
} |
return; |
} |
735,15 → 757,15
//------------------------------------------+----------------------------------- |
//! FIXME_docs |
|
double Rw11Cpu::WaitCpuActDown(double tout) |
double Rw11Cpu::WaitCpuGoDown(double tout) |
{ |
boost::system_time t0(boost::get_system_time()); |
boost::system_time timeout(boost::posix_time::max_date_time); |
if (tout > 0.) |
timeout = t0 + boost::posix_time::microseconds((long)1E6 * tout); |
boost::unique_lock<boost::mutex> lock(fCpuActMutex); |
while (fCpuAct) { |
if (!fCpuActCond.timed_wait(lock, timeout)) return -1.; |
boost::unique_lock<boost::mutex> lock(fCpuGoMutex); |
while (fCpuGo) { |
if (!fCpuGoCond.timed_wait(lock, timeout)) return -1.; |
} |
boost::posix_time::time_duration dt = boost::get_system_time() - t0; |
return double(dt.ticks()) / dt.ticks_per_second(); |
793,7 → 815,7
RlinkCommandList clist; |
clist.AddRreg(fBase+kCPSTAT); |
Server().Exec(clist); |
SetCpuActDown(clist[0].Data()); |
SetCpuGoDown(clist[0].Data()); |
return; |
} |
|
810,11 → 832,7
os << bl << " fIndex: " << fIndex << endl; |
os << bl << " fBase: " << RosPrintf(fBase,"$x0",4) << endl; |
os << bl << " fIBase: " << RosPrintf(fIBase,"$x0",4) << endl; |
os << bl << " fHasScnt: " << fHasScnt << endl; |
os << bl << " fHasCmon: " << fHasCmon << endl; |
os << bl << " fHasHbpt: " << fHasHbpt << endl; |
os << bl << " fHasIbmon: " << fHasIbmon << endl; |
os << bl << " fCpuAct: " << fCpuAct << endl; |
os << bl << " fCpuGo: " << fCpuGo << endl; |
os << bl << " fCpuStat: " << RosPrintf(fCpuStat,"$x0",4) << endl; |
os << bl << " fCntlMap: " << endl; |
for (cmap_cit_t it=fCntlMap.begin(); it!=fCntlMap.end(); it++) { |
827,151 → 845,4
return; |
} |
|
//------------------------------------------+----------------------------------- |
//! FIXME_docs |
|
void Rw11Cpu::SetupStd() |
{ |
// add control port address rbus mappings |
AllRAddrMapInsert("conf" , Base()+kCPCONF); |
AllRAddrMapInsert("cntl" , Base()+kCPCNTL); |
AllRAddrMapInsert("stat" , Base()+kCPSTAT); |
AllRAddrMapInsert("psw" , Base()+kCPPSW); |
AllRAddrMapInsert("al" , Base()+kCPAL); |
AllRAddrMapInsert("ah" , Base()+kCPAH); |
AllRAddrMapInsert("mem" , Base()+kCPMEM); |
AllRAddrMapInsert("memi" , Base()+kCPMEMI); |
AllRAddrMapInsert("r0" , Base()+kCPR0); |
AllRAddrMapInsert("r1" , Base()+kCPR0+1); |
AllRAddrMapInsert("r2" , Base()+kCPR0+2); |
AllRAddrMapInsert("r3" , Base()+kCPR0+3); |
AllRAddrMapInsert("r4" , Base()+kCPR0+4); |
AllRAddrMapInsert("r5" , Base()+kCPR0+5); |
AllRAddrMapInsert("sp" , Base()+kCPR0+6); |
AllRAddrMapInsert("pc" , Base()+kCPR0+7); |
AllRAddrMapInsert("membe", Base()+kCPMEMBE); |
|
// add cpu register address ibus and rbus mappings |
AllIAddrMapInsert("psw" , 0177776); |
AllIAddrMapInsert("stklim" , 0177774); |
AllIAddrMapInsert("pirq" , 0177772); |
AllIAddrMapInsert("mbrk" , 0177770); |
AllIAddrMapInsert("cpuerr" , 0177766); |
AllIAddrMapInsert("sysid" , 0177764); |
AllIAddrMapInsert("hisize" , 0177762); |
AllIAddrMapInsert("losize" , 0177760); |
|
AllIAddrMapInsert("hm" , 0177752); |
AllIAddrMapInsert("maint" , 0177750); |
AllIAddrMapInsert("cntrl" , 0177746); |
AllIAddrMapInsert("syserr" , 0177744); |
AllIAddrMapInsert("hiaddr" , 0177742); |
AllIAddrMapInsert("loaddr" , 0177740); |
|
AllIAddrMapInsert("ssr2" , 0177576); |
AllIAddrMapInsert("ssr1" , 0177574); |
AllIAddrMapInsert("ssr0" , 0177572); |
|
AllIAddrMapInsert("sdreg" , 0177570); |
|
AllIAddrMapInsert("ssr3" , 0172516); |
|
// add mmu segment register files |
string sdr = "sdr"; |
string sar = "sar"; |
for (char i=0; i<8; i++) { |
char ichar = '0'+i; |
AllIAddrMapInsert(sdr+"ki."+ichar, 0172300+2*i); |
AllIAddrMapInsert(sdr+"kd."+ichar, 0172320+2*i); |
AllIAddrMapInsert(sar+"ki."+ichar, 0172340+2*i); |
AllIAddrMapInsert(sar+"kd."+ichar, 0172360+2*i); |
AllIAddrMapInsert(sdr+"si."+ichar, 0172200+2*i); |
AllIAddrMapInsert(sdr+"sd."+ichar, 0172220+2*i); |
AllIAddrMapInsert(sar+"si."+ichar, 0172240+2*i); |
AllIAddrMapInsert(sar+"sd."+ichar, 0172260+2*i); |
AllIAddrMapInsert(sdr+"ui."+ichar, 0177600+2*i); |
AllIAddrMapInsert(sdr+"ud."+ichar, 0177620+2*i); |
AllIAddrMapInsert(sar+"ui."+ichar, 0177640+2*i); |
AllIAddrMapInsert(sar+"ud."+ichar, 0177660+2*i); |
} |
|
return; |
} |
|
//------------------------------------------+----------------------------------- |
//! FIXME_docs |
|
void Rw11Cpu::SetupOpt() |
{ |
// probe optional components: dmscnt, dmcmon, dmhbpt and ibmon |
RlinkCommandList clist; |
|
int isc = clist.AddRreg(Base()+kSCBASE+kSCCNTL); |
clist.SetLastExpectStatus(0,0); // disable stat check |
|
int icm = clist.AddRreg(Base()+kCMBASE+kCMCNTL); |
clist.SetLastExpectStatus(0,0); |
|
int ihb[kHBNMAX]; |
for (int i=0; i<kHBNMAX; i++) { |
ihb[i] = clist.AddRreg(Base()+kHBBASE+i*kHBSIZE+kHBCNTL); |
clist.SetLastExpectStatus(0,0); |
} |
int iim = AddRibr(clist, kIMBASE+kIMCNTL); |
clist.SetLastExpectStatus(0,0); |
|
Connect().Exec(clist); |
|
uint8_t statmsk = RlinkCommand::kStat_M_RbTout | |
RlinkCommand::kStat_M_RbNak | |
RlinkCommand::kStat_M_RbErr; |
|
fHasScnt = (clist[isc].Status() & statmsk) == 0; |
if (fHasScnt) { |
uint16_t base = Base() + kSCBASE; |
AllRAddrMapInsert("sc.cntl" , base + kSCCNTL); |
AllRAddrMapInsert("sc.addr" , base + kSCADDR); |
AllRAddrMapInsert("sc.data" , base + kSCDATA); |
} |
|
fHasCmon = (clist[icm].Status() & statmsk) == 0; |
if (fHasCmon) { |
uint16_t base = Base() + kCMBASE; |
AllRAddrMapInsert("cm.cntl" , base + kCMCNTL); |
AllRAddrMapInsert("cm.stat" , base + kCMSTAT); |
AllRAddrMapInsert("cm.addr" , base + kCMADDR); |
AllRAddrMapInsert("cm.data" , base + kCMDATA); |
AllRAddrMapInsert("cm.iaddr" , base + kCMIADDR); |
AllRAddrMapInsert("cm.ipc" , base + kCMIPC); |
AllRAddrMapInsert("cm.ireg" , base + kCMIREG); |
AllRAddrMapInsert("cm.imal" , base + kCMIMAL); |
} |
|
fHasHbpt = 0; |
for (int i=0; i<kHBNMAX; i++) { |
if ((clist[ihb[i]].Status() & statmsk) != 0) break; |
fHasHbpt += 1; |
uint16_t base = Base() + kHBBASE + i*kHBSIZE; |
std::string pref = "hb"; |
pref += '0'+i; |
AllRAddrMapInsert(pref+".cntl" , base + kHBCNTL); |
AllRAddrMapInsert(pref+".stat" , base + kHBSTAT); |
AllRAddrMapInsert(pref+".hilim" , base + kHBHILIM); |
AllRAddrMapInsert(pref+".lolim" , base + kHBLOLIM); |
} |
|
fHasIbmon = (clist[iim].Status() & statmsk) == 0; |
if (fHasIbmon) { |
AllIAddrMapInsert("im.cntl", kIMBASE + kIMCNTL); |
AllIAddrMapInsert("im.stat", kIMBASE + kIMSTAT); |
AllIAddrMapInsert("im.hilim", kIMBASE + kIMHILIM); |
AllIAddrMapInsert("im.lolim", kIMBASE + kIMLOLIM); |
AllIAddrMapInsert("im.addr", kIMBASE + kIMADDR); |
AllIAddrMapInsert("im.data", kIMBASE + kIMDATA); |
} |
|
return; |
} |
|
|
} // end namespace Retro |
/trunk/tools/src/librw11/Rw11Cpu.hpp
1,4 → 1,4
// $Id: Rw11Cpu.hpp 721 2015-12-29 17:50:50Z mueller $ |
// $Id: Rw11Cpu.hpp 675 2015-05-08 21:05:08Z mueller $ |
// |
// Copyright 2013-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
// |
13,9 → 13,6
// |
// Revision History: |
// Date Rev Version Comment |
// 2015-12-28 721 1.2.5 BUGFIX: IM* correct register offset definitions |
// 2015-07-12 700 1.2.4 use ..CpuAct instead ..CpuGo (new active based lam); |
// add probe and map setup for optional cpu components |
// 2015-05-08 675 1.2.3 w11a start/stop/suspend overhaul |
// 2015-04-25 668 1.2.2 add AddRbibr(), AddWbibr() |
// 2015-04-03 661 1.2.1 add kStat_M_* defs |
29,7 → 26,7
|
/*! |
\file |
\version $Id: Rw11Cpu.hpp 721 2015-12-29 17:50:50Z mueller $ |
\version $Id: Rw11Cpu.hpp 675 2015-05-08 21:05:08Z mueller $ |
\brief Declaration of class Rw11Cpu. |
*/ |
|
80,11 → 77,6
uint16_t Base() const; |
uint16_t IBase() const; |
|
bool HasScnt() const; |
bool HasCmon() const; |
uint16_t HasHbpt() const; |
bool HasIbmon() const; |
|
void AddCntl(const boost::shared_ptr<Rw11Cntl>& spcntl); |
bool TestCntl(const std::string& name) const; |
void ListCntl(std::vector<std::string>& list) const; |
127,10 → 119,10
bool trace=false); |
bool Boot(const std::string& uname, RerrMsg& emsg); |
|
void SetCpuActUp(); |
void SetCpuActDown(uint16_t stat); |
double WaitCpuActDown(double tout); |
bool CpuAct() const; |
void SetCpuGoUp(); |
void SetCpuGoDown(uint16_t stat); |
double WaitCpuGoDown(double tout); |
bool CpuGo() const; |
uint16_t CpuStat() const; |
|
uint16_t IbusRemoteAddr(uint16_t ibaddr) const; |
192,7 → 184,6
static const uint16_t kCPURUST_STOP = 0x3; //!< cpu was stopped |
static const uint16_t kCPURUST_STEP = 0x4; //!< cpu was stepped |
static const uint16_t kCPURUST_SUSP = 0x5; //!< cpu was suspended |
static const uint16_t kCPURUST_HBPT = 0x6; //!< cpu hardware bpt |
static const uint16_t kCPURUST_RUNS = 0x7; //!< cpu running |
static const uint16_t kCPURUST_VECFET = 0x8; //!< vector fetch halt |
static const uint16_t kCPURUST_RECRSV = 0x9; //!< rec red-stack halt |
209,45 → 200,9
// defs for the four status bits defined by w11 rbus iface |
static const uint8_t kStat_M_CmdErr = kBBit07; //!< stat: cmderr flag |
static const uint8_t kStat_M_CmdMErr = kBBit06; //!< stat: cmdmerr flag |
static const uint8_t kStat_M_CpuSusp = kBBit05; //!< stat: cpususp flag |
static const uint8_t kStat_M_CpuHalt = kBBit05; //!< stat: cpuhalt flag |
static const uint8_t kStat_M_CpuGo = kBBit04; //!< stat: cpugo flag |
|
// defs for optional w11 components |
static const uint16_t kSCBASE = 0x0040; //!< DMSCNT reg base offset |
static const uint16_t kSCCNTL = 0x0000; //!< SC.CNTL reg offset |
static const uint16_t kSCADDR = 0x0001; //!< SC.ADDR reg offset |
static const uint16_t kSCDATA = 0x0002; //!< SC.DATA reg offset |
|
static const uint16_t kCMBASE = 0x0048; //!< DMCMON reg base offset |
static const uint16_t kCMCNTL = 0x0000; //!< CM.CNTL reg offset |
static const uint16_t kCMSTAT = 0x0001; //!< CM.STAT reg offset |
static const uint16_t kCMADDR = 0x0002; //!< CM.ADDR reg offset |
static const uint16_t kCMDATA = 0x0003; //!< CM.DATA reg offset |
static const uint16_t kCMIADDR = 0x0004; //!< CM.IADDR reg offset |
static const uint16_t kCMIPC = 0x0005; //!< CM.IPC reg offset |
static const uint16_t kCMIREG = 0x0006; //!< CM.IREG reg offset |
static const uint16_t kCMIMAL = 0x0007; //!< CM.IMAL reg offset |
|
static const uint16_t kHBBASE = 0x0050; //!< DMHBPT reg base offset |
static const uint16_t kHBSIZE = 0x0004; //!< DMHBPT unit size |
static const uint16_t kHBNMAX = 0x0004; //!< DMHBPT max number units |
static const uint16_t kHBCNTL = 0x0000; //!< HB.CNTL reg offset |
static const uint16_t kHBSTAT = 0x0001; //!< HB.STAT reg offset |
static const uint16_t kHBHILIM = 0x0002; //!< HB.HILIM reg offset |
static const uint16_t kHBLOLIM = 0x0003; //!< HB.LOLIM reg offset |
|
static const uint16_t kIMBASE = 0160000; //!< Ibmon ibus address |
static const uint16_t kIMCNTL = 0x0000; //!< IM.CNTL reg offset |
static const uint16_t kIMSTAT = 0x0002; //!< IM.STAT reg offset |
static const uint16_t kIMHILIM = 0x0004; //!< IM.HILIM reg offset |
static const uint16_t kIMLOLIM = 0x0006; //!< IM.LOLIM reg offset |
static const uint16_t kIMADDR = 0x0008; //!< IM.ADDR reg offset |
static const uint16_t kIMDATA = 0x000a; //!< IM.DATA reg offset |
|
protected: |
void SetupStd(); |
void SetupOpt(); |
|
private: |
Rw11Cpu() {} //!< default ctor blocker |
|
257,14 → 212,10
size_t fIndex; |
uint16_t fBase; |
uint16_t fIBase; |
bool fHasScnt; //!< has dmscnt (state counter) |
bool fHasCmon; //!< has dmcmon (cpu monitor) |
uint16_t fHasHbpt; //!< has dmhbpt (hardware breakpoint) |
bool fHasIbmon; //!< has ibmon (ibus monitor) |
bool fCpuAct; |
bool fCpuGo; |
uint16_t fCpuStat; |
boost::mutex fCpuActMutex; |
boost::condition_variable fCpuActCond; |
boost::mutex fCpuGoMutex; |
boost::condition_variable fCpuGoCond; |
cmap_t fCntlMap; //!< name->cntl map |
RlinkAddrMap fIAddrMap; //!< ibus name<->address mapping |
RlinkAddrMap fRAddrMap; //!< rbus name<->address mapping |
/trunk/tools/src/librw11/Rw11Cpu.ipp
1,4 → 1,4
// $Id: Rw11Cpu.ipp 700 2015-07-12 19:28:31Z mueller $ |
// $Id: Rw11Cpu.ipp 659 2015-03-22 23:15:51Z mueller $ |
// |
// Copyright 2013-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
// |
13,7 → 13,6
// |
// Revision History: |
// Date Rev Version Comment |
// 2015-07-12 700 1.2.1 use ..CpuAct instead ..CpuGo (new active based lam) |
// 2015-03-21 659 1.2 add RAddrMap |
// 2014-12-25 621 1.1 Adopt for 4k word ibus window; add IAddrMap |
// 2013-04-12 504 1.0 Initial version |
22,7 → 21,7
|
/*! |
\file |
\version $Id: Rw11Cpu.ipp 700 2015-07-12 19:28:31Z mueller $ |
\version $Id: Rw11Cpu.ipp 659 2015-03-22 23:15:51Z mueller $ |
\brief Implemenation (inline) of Rw11Cpu. |
*/ |
|
96,38 → 95,6
//------------------------------------------+----------------------------------- |
//! FIXME_docs |
|
inline bool Rw11Cpu::HasScnt() const |
{ |
return fHasScnt; |
} |
|
//------------------------------------------+----------------------------------- |
//! FIXME_docs |
|
inline bool Rw11Cpu::HasCmon() const |
{ |
return fHasCmon; |
} |
|
//------------------------------------------+----------------------------------- |
//! FIXME_docs |
|
inline uint16_t Rw11Cpu::HasHbpt() const |
{ |
return fHasHbpt; |
} |
|
//------------------------------------------+----------------------------------- |
//! FIXME_docs |
|
inline bool Rw11Cpu::HasIbmon() const |
{ |
return fHasIbmon; |
} |
|
//------------------------------------------+----------------------------------- |
//! FIXME_docs |
|
inline uint16_t Rw11Cpu::CpuStat() const |
{ |
return fCpuStat; |
136,9 → 103,9
//------------------------------------------+----------------------------------- |
//! FIXME_docs |
|
inline bool Rw11Cpu::CpuAct() const |
inline bool Rw11Cpu::CpuGo() const |
{ |
return fCpuAct; |
return fCpuGo; |
} |
|
//------------------------------------------+----------------------------------- |
/trunk/tools/src/librwxxtpp/RtclRw11Cpu.cpp
1,4 → 1,4
// $Id: RtclRw11Cpu.cpp 718 2015-12-26 15:59:48Z mueller $ |
// $Id: RtclRw11Cpu.cpp 682 2015-05-15 18:35:29Z mueller $ |
// |
// Copyright 2013-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
// |
13,10 → 13,6
// |
// Revision History: |
// Date Rev Version Comment |
// 2015-12-26 718 1.2.8 use BlockSizeMax() for 'cp -b[rw]m' and 'ldasm' |
// 2015-07-12 700 1.2.4 use ..CpuAct instead ..CpuGo (new active based lam); |
// add probe and map setup for optional cpu components |
// 2015-06-27 695 1.2.3 M_get: add ibase getter |
// 2015-05-04 674 1.2.2 w11a start/stop/suspend overhaul |
// 2015-04-25 668 1.2.1 M_cp: add -rbibr, wbibr; GetRAddr: drop odd check |
// 2015-04-03 661 1.2 expect logic: drop estatdef, use LastExpect.. |
37,7 → 33,7
|
/*! |
\file |
\version $Id: RtclRw11Cpu.cpp 718 2015-12-26 15:59:48Z mueller $ |
\version $Id: RtclRw11Cpu.cpp 682 2015-05-15 18:35:29Z mueller $ |
\brief Implemenation of RtclRw11Cpu. |
*/ |
|
349,7 → 345,7
string varprint; |
string vardump; |
|
bool setcpuact = false; |
bool setcpugo = false; |
|
while (args.NextOpt(opt, optset)) { |
size_t lsize = clist.Size(); |
521,7 → 517,7
|
} else if (opt == "-brm") { // -brm size ?varData ?varStat --- |
int32_t bsize; |
if (!args.GetArg("bsize", bsize, 1, Connect().BlockSizeMax())) return kERR; |
if (!args.GetArg("bsize", bsize, 1, 256)) return kERR; |
if (!GetVarName(args, "??varData", lsize, vardata)) return kERR; |
if (!GetVarName(args, "??varStat", lsize, varstat)) return kERR; |
clist.AddRblk(base + Rw11Cpu::kCPMEMI, (size_t) bsize); |
528,7 → 524,7
|
} else if (opt == "-bwm") { // -bwm block ?varStat ----------- |
vector<uint16_t> block; |
if (!args.GetArg("data", block, 1, Connect().BlockSizeMax())) return kERR; |
if (!args.GetArg("data", block, 1, 256)) return kERR; |
if (!GetVarName(args, "??varStat", lsize, varstat)) return kERR; |
clist.AddWblk(base + Rw11Cpu::kCPMEMI, block); |
|
535,7 → 531,7
} else if (opt == "-start") { // -start ?varStat --------------- |
if (!GetVarName(args, "??varStat", lsize, varstat)) return kERR; |
clist.AddWreg(base + Rw11Cpu::kCPCNTL, Rw11Cpu::kCPFUNC_START); |
setcpuact = true; |
setcpugo = true; |
|
} else if (opt == "-stop") { // -stop ?varStat ---------------- |
if (!GetVarName(args, "??varStat", lsize, varstat)) return kERR; |
560,7 → 556,6
} else if (opt == "-resume") { // -resume ?varStat -------------- |
if (!GetVarName(args, "??varStat", lsize, varstat)) return kERR; |
clist.AddWreg(base + Rw11Cpu::kCPCNTL, Rw11Cpu::kCPFUNC_RESUME); |
setcpuact = true; |
|
} else if (opt == "-stapc") { // -stapc addr ?varStat ---------- |
uint16_t data; |
570,7 → 565,7
clist.AddWreg(base + Rw11Cpu::kCPCNTL, Rw11Cpu::kCPFUNC_CRESET); |
clist.AddWreg(base + Rw11Cpu::kCPPC, data); |
clist.AddWreg(base + Rw11Cpu::kCPCNTL, Rw11Cpu::kCPFUNC_START); |
setcpuact = true; |
setcpugo = true; |
|
} else if (opt == "-rmembe") { // -rmembe ?varData ?varStat ------ |
if (!GetVarName(args, "??varData", lsize, vardata)) return kERR; |
712,7 → 707,7
if (clist.Size() == 0) return kOK; |
|
// signal cpugo up before clist executed to prevent races |
if (setcpuact) Obj().SetCpuActUp(); |
if (setcpugo) Obj().SetCpuGoUp(); |
|
RerrMsg emsg; |
// this one intentionally on Connect() to allow mixing of rlc + w11 commands |
800,7 → 795,7
} |
|
} else { // server is active |
twait = Obj().WaitCpuActDown(tout); |
twait = Obj().WaitCpuGoDown(tout); |
} |
|
if (twait < 0.) { // timeout |
1140,7 → 1135,7
for (cmap_it_t it=cmap.begin(); it!=cmap.end(); it++) { |
//cout << "+++2 mem[" << RosPrintf(it->first, "o0", 6) |
// << "]=" << RosPrintf(it->second, "o0", 6) << endl; |
if (dot != it->first || block.size() >= Connect().BlockSizeMax()) { |
if (dot != it->first || block.size() == 256) { |
if (block.size()) { |
if (!Obj().MemWrite(base, block, emsg)) return args.Quit(emsg); |
block.clear(); |
1213,7 → 1208,7
|
const char* mode[4] = {"k","s","?","u"}; |
const char* rust[16] = {"init", "HALTed", "reset", "stopped", |
"stepped", "suspend", "hbpt", "..run..", |
"stepped", "suspend", "0110", "..run..", |
"F:vecfet", "F:redstk", "1010", "1011", |
"F:seq", "F:vmbox" , "1101", "1111"}; |
|
1435,14 → 1430,9
void RtclRw11Cpu::SetupGetSet() |
{ |
Rw11Cpu* pobj = &Obj(); |
fGets.Add<const string&>("type", boost::bind(&Rw11Cpu::Type, pobj)); |
fGets.Add<size_t> ("index", boost::bind(&Rw11Cpu::Index, pobj)); |
fGets.Add<uint16_t> ("base", boost::bind(&Rw11Cpu::Base, pobj)); |
fGets.Add<uint16_t> ("ibase", boost::bind(&Rw11Cpu::IBase, pobj)); |
fGets.Add<bool> ("hasscnt", boost::bind(&Rw11Cpu::HasScnt, pobj)); |
fGets.Add<bool> ("hascmon", boost::bind(&Rw11Cpu::HasCmon, pobj)); |
fGets.Add<uint16_t> ("hashbpt", boost::bind(&Rw11Cpu::HasHbpt, pobj)); |
fGets.Add<bool> ("hasibmon", boost::bind(&Rw11Cpu::HasIbmon, pobj)); |
fGets.Add<const string&>("type", boost::bind(&Rw11Cpu::Type, pobj)); |
fGets.Add<size_t> ("index", boost::bind(&Rw11Cpu::Index, pobj)); |
fGets.Add<uint16_t> ("base", boost::bind(&Rw11Cpu::Base, pobj)); |
return; |
} |
|
/trunk/tools/bin/dmscntconv
File deleted
trunk/tools/bin/dmscntconv
Property changes :
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: trunk/tools/bin/dmscntanal
===================================================================
--- trunk/tools/bin/dmscntanal (revision 34)
+++ trunk/tools/bin/dmscntanal (nonexistent)
@@ -1,488 +0,0 @@
-#!/usr/bin/perl -w
-# $Id: dmscntanal 721 2015-12-29 17:50:50Z mueller $
-#
-# Copyright 2015- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2015-06-28 696 1.0 Initial version
-#
-
-use 5.14.0; # require Perl 5.14 or higher
-use strict; # require strict checking
-
-use Getopt::Long;
-
-my %opts = ();
-
-GetOptions(\%opts, "help", "raw")
- or die "bad options";
-
-sub print_help;
-sub read_file;
-sub show_raw;
-sub add_groups;
-sub group_new;
-
-my @snum2nam;
-my %snam2num;
-my %dat_all;
-my %dat_km;
-my %dat_um;
-my $sum_all;
-my $sum_km;
-my $sum_um;
-
-autoflush STDOUT 1 if (-p STDOUT); # autoflush if output into pipe
-
-if (exists $opts{help}) {
- print_help;
- exit 0;
-}
-
-foreach my $file (@ARGV) {
- read_file($file);
- add_groups();
- show_raw() if exists $opts{raw};
- show_frac();
-}
-
-#-------------------------------------------------------------------------------
-
-sub read_file {
- my ($file) = @_;
-
- %dat_km = ();
- %dat_um = ();
- %dat_all = ();
- @snum2nam = ();
- %snam2num = ();
- $sum_all = 0;
- $sum_km = 0;
- $sum_um = 0;
-
- open IFILE,"<$file" or die "failed to open $file";
-
- while () {
- chomp;
- next if m/^#/;
- if (m/^\s*([[:xdigit:]]+)
- \s+(\w+)
- \s+(\d+)
- \s+(\d+)
- \s+(\d+)/x) {
- my $snum = hex($1);
- my $snam = $2;
- my $all = 1. * "$3.";
- my $km = 1. * "$4.";
- my $um = 1. * "$5.";
-
- $snum2nam[$snum] = $snam;
- $snam2num{$snam} = $snum;
-
- $dat_all{$snam} += $all;
- $dat_km{$snam} += $km;
- $dat_um{$snam} += $um;
-
- $sum_all += $all;
- $sum_km += $km;
- $sum_um += $um;
-
- } else {
- printf STDERR "bad line: $_\n";
- }
- }
-
- close IFILE;
-
-}
-
-#-------------------------------------------------------------------------------
-
-sub show_raw {
- print "#\n";
- print "#sn state all km usm" .
- " all% km% usm%\n";
- printf "# sum_all %11.0f %11.0f %11.0f %6.2f %6.2f %6.2f\n",
- $sum_all, $sum_km, $sum_um,
- get_frac(100., $sum_all, $sum_all),
- get_frac(100., $sum_km, $sum_all),
- get_frac(100., $sum_um, $sum_all);
-
- for (my $snum=0; $snum 0.;
- return $fact*($nom/$denom);
-}
-
-#-------------------------------------------------------------------------------
-
-sub add_groups {
- group_new(0x100, 'g_sum');
- $dat_all{g_sum} = $sum_all;
- $dat_km{g_sum} = $sum_km;
- $dat_um{g_sum} = $sum_um;
-
- group_new(0x110, 'g_cp',
- 's_cp_regread',
- 's_cp_rps',
- 's_cp_memr_w',
- 's_cp_memw_w');
-
- group_new(0x111, 'g_cp_mem',
- 's_idle',
- 's_cp_memr_w',
- 's_cp_memw_w',
- '-',
- 's_int_ext');
-
- group_new(0x112, 'g_ifetdec',
- 's_ifetch',
- 's_ifetch_w',
- 's_idecode');
-
- group_new(0x113, 'g_srcr',
- 's_srcr_def',
- 's_srcr_def_w',
- 's_srcr_inc',
- 's_srcr_inc_w',
- 's_srcr_dec',
- 's_srcr_dec1',
- 's_srcr_ind',
- 's_srcr_ind1_w',
- 's_srcr_ind2',
- 's_srcr_ind2_w');
-
- group_new(0x114, 'g_dstr',
- 's_dstr_def',
- 's_dstr_def_w',
- 's_dstr_inc',
- 's_dstr_inc_w',
- 's_dstr_dec',
- 's_dstr_dec1',
- 's_dstr_ind',
- 's_dstr_ind1_w',
- 's_dstr_ind2',
- 's_dstr_ind2_w');
-
- group_new(0x115, 'g_dstw',
- 's_dstw_def',
- 's_dstw_def_w',
- 's_dstw_inc',
- 's_dstw_inc_w',
- 's_dstw_incdef_w',
- 's_dstw_dec',
- 's_dstw_dec1',
- 's_dstw_ind',
- 's_dstw_ind_w',
- 's_dstw_def246');
-
- group_new(0x116, 'g_dsta',
- 's_dsta_inc',
- 's_dsta_incdef_w',
- 's_dsta_dec',
- 's_dsta_dec1',
- 's_dsta_ind',
- 's_dsta_ind_w');
-
- group_new(0x120, 'g_op_rts',
- 's_op_rts',
- 's_op_rts_pop',
- 's_op_rts_pop_w');
-
- group_new(0x121, 'g_op_sob',
- 's_op_sob',
- 's_op_sob1');
-
- group_new(0x122, 'g_op_gen',
- 's_opg_gen',
- 's_opg_gen_rmw_w');
-
- group_new(0x123, 'g_op_mul',
- 's_opg_mul',
- 's_opg_mul1');
-
- group_new(0x124, 'g_op_div',
- 's_opg_div',
- 's_opg_div_cn',
- 's_opg_div_cr',
- 's_opg_div_sq',
- 's_opg_div_sr',
- 's_opg_div_quit');
-
- group_new(0x125, 'g_op_ash',
- 's_opg_ash',
- 's_opg_ash_cn');
-
- group_new(0x126, 'g_op_ashc',
- 's_opg_ashc',
- 's_opg_ashc_cn',
- 's_opg_ashc_wl');
-
- group_new(0x127, 'g_op_jsr',
- 's_opa_jsr',
- 's_opa_jsr1',
- 's_opa_jsr_push',
- 's_opa_jsr_push_w',
- 's_opa_jsr2');
-
- group_new(0x128, 'g_op_mtp',
- 's_opa_mtp',
- 's_opa_mtp_pop_w',
- 's_opa_mtp_reg',
- 's_opa_mtp_mem',
- 's_opa_mtp_mem_w');
-
- group_new(0x129, 'g_op_mfp',
- 's_opa_mfp_reg',
- 's_opa_mfp_mem',
- 's_opa_mfp_mem_w',
- 's_opa_mfp_dec',
- 's_opa_mfp_push',
- 's_opa_mfp_push_w');
-
- group_new(0x12a, 'g_int',
- 's_int_ext',
- 's_int_getpc',
- 's_int_getpc_w',
- 's_int_getps',
- 's_int_getps_w',
- 's_int_getsp',
- 's_int_decsp',
- 's_int_pushps',
- 's_int_pushps_w',
- 's_int_pushpc',
- 's_int_pushpc_w');
-
- group_new(0x12b, 'g_rti',
- 's_rti_getpc',
- 's_rti_getpc_w',
- 's_rti_getps',
- 's_rti_getps_w',
- 's_rti_newpc');
-
- group_new(0x130, 'g_op_jsrrts',
- 'g_op_jsr',
- 'g_op_rts');
-
- group_new(0x131, 'g_flow',
- 's_op_br',
- 's_op_sob',
- 's_opa_jmp',
- 's_opa_jsr',
- 's_op_rts');
-
- group_new(0x13a, 'g_intrti',
- 'g_int',
- 'g_rti');
-
- group_new(0x101, 'g_sum_noidle',
- 'g_sum',
- '-',
- 'g_cp_mem',
- 's_op_wait');
-
- group_new(0x102, 'g_sum_exec',
- 'g_sum_noidle',
- '-',
- 'g_int',
- 'g_rti');
-
- group_new(0x140, 'g_ifetch_wextra',
- 's_ifetch_w',
- '-',
- 's_ifetch');
-
- group_new(0x141, 'g_srcr_wextra',
- 's_srcr_def_w',
- 's_srcr_inc_w',
- 's_srcr_ind1_w',
- 's_srcr_ind2_w',
- '-',
- 's_srcr_def',
- 's_srcr_inc',
- 's_srcr_ind',
- 's_srcr_ind2');
-
- group_new(0x142, 'g_dstr_wextra',
- 's_dstr_def_w',
- 's_dstr_inc_w',
- 's_dstr_ind1_w',
- 's_dstr_ind2_w',
- '-',
- 's_dstr_def',
- 's_dstr_inc',
- 's_dstr_ind',
- 's_dstr_ind2');
-
- group_new(0x143, 'g_dstw_wextra',
- 's_dstw_def_w',
- 's_dstw_inc_w',
- 's_dstw_incdef_w',
- 's_dstw_ind_w',
- '-',
- 's_dstw_def',
- 's_dstw_inc',
- 's_dstw_ind',
- 's_dstw_def246');
-
- group_new(0x144, 'g_dsta_wextra',
- 's_dsta_incdef_w',
- 's_dsta_ind_w',
- '-',
- 's_dsta_inc',
- 's_dsta_ind');
-
- group_new(0x145, 'g_op_rts_wextra',
- 's_op_rts_pop_w',
- '-',
- 's_op_rts_pop');
-
- group_new(0x146, 'g_op_jsr_wextra',
- 's_opa_jsr_push_w',
- '-',
- 's_opa_jsr_push');
-
- group_new(0x147, 'g_op_mtp_wextra',
- 's_opa_mtp_pop_w',
- 's_opa_mtp_mem_w',
- '-',
- 's_opa_mtp',
- 's_opa_mtp_mem');
-
- group_new(0x148, 'g_op_mfp_wextra',
- 's_opa_mfp_mem_w',
- 's_opa_mfp_push_w',
- '-',
- 's_opa_mfp_mem',
- 's_opa_mfp_push');
-
- group_new(0x149, 'g_int_wextra',
- 's_int_getpc_w',
- 's_int_getps_w',
- 's_int_pushps_w',
- 's_int_pushpc_w',
- '-',
- 's_int_getpc',
- 's_int_getps',
- 's_int_pushps',
- 's_int_pushpc');
-
- group_new(0x14a, 'g_rti_wextra',
- 's_rti_getpc_w',
- 's_rti_getps_w',
- '-',
- 's_rti_getpc',
- 's_rti_getps');
-
- group_new(0x14f, 'g_all_wextra',
- 'g_ifetch_wextra',
- 'g_srcr_wextra',
- 'g_dstr_wextra',
- 'g_dstw_wextra',
- 'g_dsta_wextra',
- 'g_op_rts_wextra',
- 'g_op_jsr_wextra',
- 'g_op_mtp_wextra',
- 'g_op_mfp_wextra',
- 'g_int_wextra',
- 'g_rti_wextra');
-}
-
-#-------------------------------------------------------------------------------
-
-sub group_new {
- my $snum = shift @_;
- my $snam = shift @_;
-
- die "group_new: bad snum '$snum'" if defined $snum2nam[$snum];
- die "group_new: bad snam '$snam'" if defined $snam2num{$snam};
-
- $snum2nam[$snum] = $snam;
- $snam2num{$snam} = $snum;
- $dat_all{$snam} = 0;
- $dat_km{$snam} = 0;
- $dat_um{$snam} = 0;
- my $sign = 1.;
-
- foreach my $val (@_) {
- if ($val eq '+') { $sign = 1.; next;}
- if ($val eq '-') { $sign = -1.; next;}
- die "bad action '$val'" unless defined $snam2num{$val};
- $dat_all{$snam} += $sign * $dat_all{$val};
- $dat_km{$snam} += $sign * $dat_km{$val};
- $dat_um{$snam} += $sign * $dat_um{$val};
- }
-}
-
-#-------------------------------------------------------------------------------
-
-sub print_help {
- print "usage: dmscntanal file\n";
- print " --help this message\n";
-}
trunk/tools/bin/dmscntanal
Property changes :
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: trunk/tools/bin/tmuconv
===================================================================
--- trunk/tools/bin/tmuconv (revision 34)
+++ trunk/tools/bin/tmuconv (revision 33)
@@ -1,5 +1,5 @@
#!/usr/bin/perl -w
-# $Id: tmuconv 712 2015-11-01 22:53:45Z mueller $
+# $Id: tmuconv 676 2015-05-09 16:31:54Z mueller $
#
# Copyright 2008-2015 by Walter F.J. Mueller
#
@@ -14,10 +14,6 @@
#
# Revision History:
# Date Rev Version Comment
-# 2015-11-01 712 1.1.1 BUGFIX: fix '.' handling for br/sob instructions
-# BUGFIX: correct xor (now r,dst, and not src,r)
-# br/sob offsets now octal; assume --t_id if no opts
-# 2015-07-03 697 1.1 adapt to new DM_STAT_(SY|VM); add rhrp vector
# 2010-10-22 334 1.0.9 adapt to ibus V2 signals: req,we,dip->aval,re,we,rmw
# 2010-06-26 309 1.0.8 add ibimres.cacc/racc handling
# 2010-04-26 284 1.0.7 add error check for GetOptions
@@ -58,19 +54,19 @@
# vm.ibsres.ack:b
# vm.ibsres.busy:b
# vm.ibsres.dout:o
-# vm.emmreq.req:b
-# vm.emmreq.we:b
-# vm.emmreq.be:b
-# vm.emmreq.cancel:b
-# vm.emmreq.addr:o
-# vm.emmreq.din:o
-# vm.emsres.ack_r:b
-# vm.emsres.ack_w:b
-# vm.emsres.dout:o
# co.cpugo:b
# co.cpususp:b
# co.suspint:b
# co.suspext:b
+# sy.emmreq.req:b
+# sy.emmreq.we:b
+# sy.emmreq.be:b
+# sy.emmreq.cancel:b
+# sy.emmreq.addr:o
+# sy.emmreq.din:o
+# sy.emsres.ack_r:b
+# sy.emsres.ack_w:b
+# sy.emsres.dout:o
# sy.chit:b
#
@@ -130,16 +126,15 @@
my $ind_vm_ibsres_busy;
my $ind_vm_ibsres_dout;
-my $ind_vm_emmreq_req;
-my $ind_vm_emmreq_we;
-my $ind_vm_emmreq_be;
-my $ind_vm_emmreq_cancel;
-my $ind_vm_emmreq_addr;
-my $ind_vm_emmreq_din;
-my $ind_vm_emsres_ack_r;
-my $ind_vm_emsres_ack_w;
-my $ind_vm_emsres_dout;
-
+my $ind_sy_emmreq_req;
+my $ind_sy_emmreq_we;
+my $ind_sy_emmreq_be;
+my $ind_sy_emmreq_cancel;
+my $ind_sy_emmreq_addr;
+my $ind_sy_emmreq_din;
+my $ind_sy_emsres_ack_r;
+my $ind_sy_emsres_ack_w;
+my $ind_sy_emsres_dout;
my $ind_sy_chit;
my @pdp11_opcode_tbl = (
@@ -156,7 +151,7 @@
{code=>0000230, mask=>0000007, name=>"spl ", type=>"spl"},
{code=>0000240, mask=>0000017, name=>"cl", type=>"ccop"},
{code=>0000260, mask=>0000017, name=>"se", type=>"ccop"},
- {code=>0000300, mask=>0000077, name=>"swab", type=>"1arg"},
+ {code=>0000300, mask=>0000077, name=>"swap", type=>"1arg"},
{code=>0000400, mask=>0000377, name=>"br ", type=>"br"},
{code=>0001000, mask=>0000377, name=>"bne ", type=>"br"},
{code=>0001400, mask=>0000377, name=>"beq ", type=>"br"},
@@ -164,7 +159,7 @@
{code=>0002400, mask=>0000377, name=>"blt ", type=>"br"},
{code=>0003000, mask=>0000377, name=>"bgt ", type=>"br"},
{code=>0003400, mask=>0000377, name=>"ble ", type=>"br"},
- {code=>0004000, mask=>0000777, name=>"jsr ", type=>"rsrc"},
+ {code=>0004000, mask=>0000777, name=>"jsr ", type=>"jsr"},
{code=>0005000, mask=>0000077, name=>"clr ", type=>"1arg"},
{code=>0005100, mask=>0000077, name=>"com ", type=>"1arg"},
{code=>0005200, mask=>0000077, name=>"inc ", type=>"1arg"},
@@ -194,7 +189,7 @@
{code=>0071000, mask=>0000777, name=>"div ", type=>"rdst"},
{code=>0072000, mask=>0000777, name=>"ash ", type=>"rdst"},
{code=>0073000, mask=>0000777, name=>"ashc", type=>"rdst"},
- {code=>0074000, mask=>0000777, name=>"xor ", type=>"rsrc"},
+ {code=>0074000, mask=>0000777, name=>"xor ", type=>"rdst"},
{code=>0077000, mask=>0000777, name=>"sob ", type=>"sob"},
{code=>0100000, mask=>0000377, name=>"bpl ", type=>"br"},
{code=>0100400, mask=>0000377, name=>"bmi ", type=>"br"},
@@ -299,10 +294,10 @@
177574=> "mmr1",
177572=> "mmr0",
177570=> "sdreg", # not a simh name !!
- 177560=> "tia.csr",
- 177562=> "tia.buf",
- 177564=> "toa.csr",
- 177566=> "toa.buf",
+ 177560=> "ti.csr",
+ 177562=> "ti.buf",
+ 177564=> "to.csr",
+ 177566=> "to.buf",
177550=> "pr.csr",
177552=> "pr.buf",
177554=> "pp.csr",
@@ -321,32 +316,32 @@
177414=> "rk.mr ",
177416=> "rk.db ",
177060=> "xor.cs", # XOR Tester
- 176700=> "rp.cs1",
- 176702=> "rp.wc ",
- 176704=> "rp.ba ",
- 176706=> "rp.da ",
- 176710=> "rp.cs2",
- 176712=> "rp.ds ",
- 176714=> "rp.er1",
- 176716=> "rp.as ",
- 176720=> "rp.la ",
- 176722=> "rp.db ",
- 176724=> "rp.mr1",
- 176726=> "rp.dt ",
- 176730=> "rp.sn ",
- 176732=> "rp.of ",
- 176734=> "rp.dc ",
- 176736=> "rp.m13",
- 176740=> "rp.m14",
- 176742=> "rp.m15",
- 176744=> "rp.ec1",
- 176746=> "rp.ec2",
- 176750=> "rp.bae",
- 176752=> "rp.cs3",
- 176500=> "tib.cs",
- 176502=> "tib.bu",
- 176504=> "tob.cs",
- 176506=> "tob.bu",
+ 176700=> "rpa.cs1",
+ 176702=> "rpa.wc ",
+ 176704=> "rpa.ba ",
+ 176706=> "rpa.da ",
+ 176710=> "rpa.cs2",
+ 176712=> "rpa.ds ",
+ 176714=> "rpa.er1",
+ 176716=> "rpa.as ",
+ 176720=> "rpa.la ",
+ 176722=> "rpa.db ",
+ 176724=> "rpa.mr1",
+ 176726=> "rpa.dt ",
+ 176730=> "rpa.sn ",
+ 176732=> "rpa.of ",
+ 176734=> "rpa.dc ",
+ 176736=> "rpa.m13",
+ 176740=> "rpa.m14",
+ 176742=> "rpa.m15",
+ 176744=> "rpa.ec1",
+ 176746=> "rpa.ec2",
+ 176750=> "rpa.bae",
+ 176752=> "rpa.cs3",
+ 176500=> "ti2.cs",
+ 176502=> "ti2.bu",
+ 176504=> "to2.cs",
+ 176506=> "to2.bu",
174400=> "rl.cs ",
174402=> "rl.ba ",
174404=> "rl.da ",
@@ -354,12 +349,12 @@
172540=> "kp.csr",
172542=> "kp.buf",
172544=> "kp.cnt",
- 172520=> "tm.sr",
- 172522=> "tm.cr",
- 172524=> "tm.bc",
- 172526=> "tm.ba",
- 172530=> "tm.db",
- 172532=> "tm.rl",
+ 172520=> "tm.mts",
+ 172522=> "tm.mtc",
+ 172524=> "tm.brc",
+ 172526=> "tm.cma",
+ 172530=> "tm.mtd",
+ 172532=> "tm.rda",
172516=> "mmr3",
172200=> "sipdr0",
172202=> "sipdr1",
@@ -438,16 +433,6 @@
exit 0;
}
-my $nopts = 0; # count options
-$nopts += 1 if $opts{dump};
-$nopts += 1 if $opts{cdump};
-$nopts += 1 if $opts{t_id};
-$nopts += 1 if $opts{t_ru};
-$nopts += 1 if $opts{t_em};
-$nopts += 1 if $opts{t_ib};
-
-$opts{t_id} = 1 if $nopts == 0; # if no opts, assume t_id
-
foreach my $file (@ARGV) {
do_file($file);
}
@@ -520,16 +505,15 @@
$ind_vm_ibsres_busy = $name{'vm.ibsres.busy'}->{ind};
$ind_vm_ibsres_dout = $name{'vm.ibsres.dout'}->{ind};
- $ind_vm_emmreq_req = $name{'vm.emmreq.req'}->{ind};
- $ind_vm_emmreq_we = $name{'vm.emmreq.we'}->{ind};
- $ind_vm_emmreq_be = $name{'vm.emmreq.be'}->{ind};
- $ind_vm_emmreq_cancel = $name{'vm.emmreq.cancel'}->{ind};
- $ind_vm_emmreq_addr = $name{'vm.emmreq.addr'}->{ind};
- $ind_vm_emmreq_din = $name{'vm.emmreq.din'}->{ind};
- $ind_vm_emsres_ack_r = $name{'vm.emsres.ack_r'}->{ind};
- $ind_vm_emsres_ack_w = $name{'vm.emsres.ack_w'}->{ind};
- $ind_vm_emsres_dout = $name{'vm.emsres.dout'}->{ind};
-
+ $ind_sy_emmreq_req = $name{'sy.emmreq.req'}->{ind};
+ $ind_sy_emmreq_we = $name{'sy.emmreq.we'}->{ind};
+ $ind_sy_emmreq_be = $name{'sy.emmreq.be'}->{ind};
+ $ind_sy_emmreq_cancel = $name{'sy.emmreq.cancel'}->{ind};
+ $ind_sy_emmreq_addr = $name{'sy.emmreq.addr'}->{ind};
+ $ind_sy_emmreq_din = $name{'sy.emmreq.din'}->{ind};
+ $ind_sy_emsres_ack_r = $name{'sy.emsres.ack_r'}->{ind};
+ $ind_sy_emsres_ack_w = $name{'sy.emsres.ack_w'}->{ind};
+ $ind_sy_emsres_dout = $name{'sy.emsres.dout'}->{ind};
$ind_sy_chit = $name{'sy.chit'}->{ind};
} else {
@@ -607,7 +591,7 @@
my $code = code2mnemo($ireg);
$id_str = sprintf " %6.6o %6.6o %6.6o %s",
$pc, $psw, $ireg, $code;
- $id_str .= " " x (22-length($code));
+ $id_str .= " " x (20-length($code));
$id_str .= sprintf " (%d)",$cyc_curr-$idec_cyc;
$idec_cyc = $cyc_curr;
}
@@ -657,40 +641,40 @@
}
#
# handle t_em
-# uses cycles with vm_emmreq_req = '1'
-# vm_emsres_ack_r = '1'
-# vm_emsres_ack_w = '1'
-# vm_emsreq_cancel = '1'
+# uses cycles with sy_emmreq_req = '1'
+# sy_emsres_ack_r = '1'
+# sy_emsres_ack_w = '1'
+# sy_emsreq_cancel = '1'
#
if (exists $opts{t_em}) {
- if ($val_curr[$ind_vm_emmreq_req]) {
+ if ($val_curr[$ind_sy_emmreq_req]) {
$emreq_cyc = $cyc_curr;
$emreq_str = sprintf "%s %s %8.8o",
- ($val_curr[$ind_vm_emmreq_we] ? "w" : "r"),
- $val_curr[$ind_vm_emmreq_be],
- $val_curr[$ind_vm_emmreq_addr];
- $emcurr_we = $val_curr[$ind_vm_emmreq_we];
- $emcurr_addr = $val_curr[$ind_vm_emmreq_addr];
+ ($val_curr[$ind_sy_emmreq_we] ? "w" : "r"),
+ $val_curr[$ind_sy_emmreq_be],
+ $val_curr[$ind_sy_emmreq_addr];
+ $emcurr_we = $val_curr[$ind_sy_emmreq_we];
+ $emcurr_addr = $val_curr[$ind_sy_emmreq_addr];
if ($emcurr_we) {
- $emreq_str .= sprintf " %6.6o", $val_curr[$ind_vm_emmreq_din];
+ $emreq_str .= sprintf " %6.6o", $val_curr[$ind_sy_emmreq_din];
} else {
$emreq_str .= " " x 7;
}
}
- if ($val_curr[$ind_vm_emsres_ack_r] ||
- $val_curr[$ind_vm_emsres_ack_w] ||
- $val_curr[$ind_vm_emmreq_cancel]) {
+ if ($val_curr[$ind_sy_emsres_ack_r] ||
+ $val_curr[$ind_sy_emsres_ack_w] ||
+ $val_curr[$ind_sy_emmreq_cancel]) {
$emres_str = sprintf "%s%s%s%s",
- $val_curr[$ind_vm_emmreq_cancel],
- $val_curr[$ind_vm_emsres_ack_r],
- $val_curr[$ind_vm_emsres_ack_w],
+ $val_curr[$ind_sy_emmreq_cancel],
+ $val_curr[$ind_sy_emsres_ack_r],
+ $val_curr[$ind_sy_emsres_ack_w],
$val_curr[$ind_sy_chit];
- if ($val_curr[$ind_vm_emmreq_cancel]) {
+ if ($val_curr[$ind_sy_emmreq_cancel]) {
$emreq_str .= " cancel";
$emcurr_we = undef;
} else {
- if ($val_curr[$ind_vm_emsres_ack_r]) {
- $emreq_str .= sprintf " %6.6o", $val_curr[$ind_vm_emsres_dout];
+ if ($val_curr[$ind_sy_emsres_ack_r]) {
+ $emreq_str .= sprintf " %6.6o", $val_curr[$ind_sy_emsres_dout];
} else {
$emreq_str .= " " x 7;
}
@@ -719,7 +703,6 @@
$emtyp_str .= " 240 PIRQ" if ($emlast_addr == 0240);
$emtyp_str .= " 244 FPP exp" if ($emlast_addr == 0244);
$emtyp_str .= " 250 MMU trap" if ($emlast_addr == 0250);
- $emtyp_str .= " 254 RHRP" if ($emlast_addr == 0254);
$emtyp_str .= " 260 IIST" if ($emlast_addr == 0260);
$emtyp_str .= " 300 DL11-2-TTI" if ($emlast_addr == 0300);
$emtyp_str .= " 304 DL11-2-TTO" if ($emlast_addr == 0304);
@@ -831,29 +814,18 @@
return "$name $reg_str";
} elsif ($type eq "br") {
- # Note: in MACRO-11 syntax . refers to the address of the instruction
- # the opcode has offset relative to PC after instruction fetch
- # so 000776 --> br .-2
- # 000777 --> br .
- # 000400 --> br .+2
- #
my $off = $code & 0177;
- my $sign = "?";
- if ($code & 0200) { # negative offsets
+ my $sign = "+";
+ if ($code & 0200) {
+ $off = -(((~$off) & 0177)+1);
$sign = "-";
- $off = ((~$off) & 0177)+1;
- $off = $off - 1; # refer to address of instruction
- } else { # positive offsets
- $sign = "+";
- $off = $off + 1; # refer to address of instruction
- }
- return sprintf "$name .%s%o", $sign, abs(2*$off);
+ }
+ return sprintf "$name .%s%d.", $sign, abs(2*$off);
} elsif ($type eq "sob") {
- # Note: like in br type instructions, asm syntax and opcode differ by one
my $reg = ($code>>6) & 07;
my $off = $code & 077;
- return sprintf "$name r%d,.-%o", $reg, 2*($off-1);
+ return sprintf "$name r%d,.-%d.", $reg, 2*$off;
} elsif ($type eq "trap") {
my $off = $code & 0377;
@@ -876,7 +848,7 @@
if ($code & 001) { $str .= $del . $name . "c", $del = "+" }
return $str;
- } elsif ($type eq "rsrc") {
+ } elsif ($type eq "jsr") {
my $reg = ($code>>6) & 07;
my $dst = $code & 077;
my $dst_str = regmod($dst);
/trunk/tools/bin/asm-11
1,7 → 1,7
#!/usr/bin/perl -w |
# $Id: asm-11 712 2015-11-01 22:53:45Z mueller $ |
# $Id: asm-11 659 2015-03-22 23:15:51Z mueller $ |
# |
# Copyright 2013-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# Copyright 2013-2014 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# |
# This program is free software; you may redistribute and/or modify it under |
# the terms of the GNU General Public License as published by the Free |
14,7 → 14,6
# |
# Revision History: |
# Date Rev Version Comment |
# 2015-11-01 712 1.0.4 BUGFIX: fix '.' handling in instructions |
# 2014-07-26 575 1.0.3 add 'call' and 'return' to pst (as in macro-11) |
# 2013-04-07 503 1.0.2 list dot for .even,.dot,.blkb,.blkw |
# 2013-04-01 502 1.0.1 BUGFIX: -2(r0),@-2(r0) was broken, parser fixed |
76,7 → 75,6
sub pass2_lst_end; |
sub pass2_lst_line; |
sub out_w; |
sub out_wop; |
sub out_b; |
sub out_opcode; |
sub out_opcode_n; |
315,7 → 313,6
|
my @t_pushback; |
|
my $defincdot = 0; # defered increment for '.' |
my $out_dot; # current . for output |
my @out_data; # output data |
my $out_start = 1; # absolute start address |
1151,7 → 1148,6
$lst{'.'}->{val} = $val; |
$psect{$cur_psect}{dot} = $val; |
$psect{$cur_psect}{dotmax} = $val if $psect{$cur_psect}{dotmax} < $val; |
## printf "-- setdot %6.6o\n", $val if $opts{tparse}; |
return; |
} |
|
1167,7 → 1163,6
#------------------------------------------------------------------------------- |
|
sub getdot { |
## printf "-- getdot %6.6o\n", $lst{'.'}{val} if $opts{tparse}; |
return $lst{'.'}{val}; |
} |
|
1772,9 → 1767,6
die "BUGCHECK: unknown opfmt '$opfmt'"; |
} |
|
incdot($defincdot); # inc '.' after instruction done ! |
$defincdot = 0; |
|
# generate data |
} elsif ($$rl{typ} eq 'data') { |
if ($$rl{oper} eq '.word' || $$rl{oper} eq '.byte' ) { |
1960,15 → 1952,6
|
#------------------------------------------------------------------------------- |
|
sub out_wop { |
my ($rl,$word) = @_; |
push @{$$rl{outw}}, $word; |
$defincdot += 2; |
return; |
} |
|
#------------------------------------------------------------------------------- |
|
sub out_b { |
my ($rl,$byte) = @_; |
push @{$$rl{outb}}, $byte; |
1980,7 → 1963,7
|
sub out_opcode { |
my ($rl,$code) = @_; |
out_wop($rl, $code); |
out_w($rl, $code); |
return; |
} |
|
2000,7 → 1983,7
$val &= $mask; |
add_err($rl, 'T'); |
} |
out_wop($rl, $code|$val); |
out_w($rl, $code|$val); |
return; |
} |
|
2032,7 → 2015,7
} |
$off &= 0077; |
} |
out_wop($rl, $code|$off); |
out_w($rl, $code|$off); |
return; |
} |
|
2045,14 → 2028,14
|
my $val = eval_exp($rl,$ebeg,$eend); |
unless (defined $val) { |
out_wop($rl, 0); |
out_w($rl, 0); |
add_err($rl, 'U'); |
return; |
} |
if ($mod>=6 && $reg==7) { # handle pc relative offsets |
$val = ($val - (getdot()+$defincdot+2)) & 0177777; |
if ($mod>=6 && $reg==7) { |
$val = ($val - (getdot()+2)) & 0177777; |
} |
out_wop($rl, $val); |
out_w($rl, $val); |
return; |
} |
|
/trunk/tools/bin/ti_w11
1,5 → 1,5
#!/usr/bin/perl -w |
# $Id: ti_w11 712 2015-11-01 22:53:45Z mueller $ |
# $Id: ti_w11 680 2015-05-14 13:29:46Z mueller $ |
# |
# Copyright 2013-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory |
6,7 → 6,6
# |
# Revision History: |
# Date Rev Version Comment |
# 2015-11-01 712 1.3.2 use sb_cntl pin 12 for tmu; add -ghw option |
# 2015-05-14 680 1.3.1 use now -f1,-f1e,-f2,-f2e (fx now f1e) |
# 2015-04-13 667 1.3 rename -fu->-fc, add -f2,-fx; setup good defaults |
# 2015-01-02 640 1.2.2 BUGFIX: allow 'M' unit in baud rates |
31,7 → 30,6
my $opt_io = ''; |
my $opt_f = ''; |
my $opt_tmu; |
my $opt_ghw; |
my $tirri; |
my $val_term; |
my $val_tb_s3 = "tbw $sysbase/s3board/tb/tb_w11a_s3 -fifo"; |
63,10 → 61,6
$opt_tmu = 1; |
shift @ARGV; |
|
} elsif ($curarg =~ m{^-ghw$} ) { # -ghw |
$opt_ghw = 1; |
shift @ARGV; |
|
} elsif ($curarg =~ m{^-s3$} ) { # -s3 (use -f2 by default) |
$opt_io = 'f'; |
$opt_f = '2'; |
178,13 → 172,7
my $fifoopts = ",noinit"; # fifo always with deferred init |
$fifoopts .= ",xon" if $opt_f eq 'x'; |
push @arglist, "--fifo=$fifoopts"; |
my $run_opts = ""; |
if ($opt_ghw) { |
my $ghw_stem = "ti_w11"; |
$ghw_stem = $1 if ($val_tb =~ m|^.*\s+.*/(\w*)\s+|); # get stem of tb file |
$run_opts .= " --wave=${ghw_stem}.ghw"; |
} |
push @arglist, "--run=${val_tb}${run_opts}"; |
push @arglist, "--run=$val_tb"; |
} elsif ($opt_io eq 't') { |
push @arglist, "--term=$val_term"; |
} elsif ($opt_io eq 'u') { |
212,7 → 200,7
# |
if ($opt_io eq 'f') { |
if ($opt_tmu) { |
push @arglist, 'rlc oob -sbcntl 12 1'; |
push @arglist, 'rlc oob -sbcntl 13 1'; |
} |
if ($opt_f eq 'c') { |
push @arglist, 'rlc oob -sbdata 8 0x4'; # portsel = 0100 -> fx2 |
/trunk/tools/oskit/hook_dmscnt.tcl
File deleted
/trunk/tools/oskit/xxdp_rl/xxdp22_rl_boot.tcl
1,4 → 1,4
# $Id: xxdp22_rl_boot.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: xxdp22_rl_boot.tcl 689 2015-06-05 14:33:18Z mueller $ |
# |
# Setup file for XXDP V2.2 RL02 based system |
# |
13,7 → 13,7
puts [rlw] |
|
# setup tt,lp,pp (single console; enable rx rate limiter on old DEC OS) |
rw11::setup_tt "cpu0" ndl 1 dlrlim 5 to7bit 1 |
rw11::setup_tt "cpu0" {ndl 1 dlrlim 5 to7bit 1} |
rw11::setup_lp |
rw11::setup_pp |
|
/trunk/tools/oskit/xxdp_rl/xxdp25_rl_boot.tcl
1,4 → 1,4
# $Id: xxdp25_rl_boot.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: xxdp25_rl_boot.tcl 689 2015-06-05 14:33:18Z mueller $ |
# |
# Setup file for XXDP V2.5 RL02 based system |
# |
13,7 → 13,7
puts [rlw] |
|
# setup tt,lp,pp (single console; enable rx rate limiter on old DEC OS) |
rw11::setup_tt "cpu0" ndl 1 dlrlim 5 to7bit 1 |
rw11::setup_tt "cpu0" {ndl 1 dlrlim 5 to7bit 1} |
rw11::setup_lp |
rw11::setup_pp |
|
/trunk/tools/oskit/hook_ibmon_rka.tcl
1,6 → 1,7
# $Id: hook_ibmon_rka.tcl 722 2015-12-30 19:45:46Z mueller $ |
# $Id: hook_ibmon_rka.tcl 690 2015-06-07 18:23:51Z mueller $ |
puts "hook: start ibmon for rka" |
package require ibd_ibmon |
ibd_ibmon::setup |
ibd_ibmon::stop |
cpu0 cp -wibr im.lolim [cpu0 imap rka.ds] \ |
-wibr im.hilim [cpu0 imap rka.mr] |
/trunk/tools/oskit/rt11-40_rk/rt11-40_rk_boot.tcl
1,4 → 1,4
# $Id: rt11-40_rk_boot.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: rt11-40_rk_boot.tcl 689 2015-06-05 14:33:18Z mueller $ |
# |
# Setup file for RT-11 V4.0 RK05 based system |
# |
13,7 → 13,7
puts [rlw] |
|
# setup tt,lp,pp (single console; enable rx rate limiter on old DEC OS) |
rw11::setup_tt "cpu0" ndl 1 dlrlim 5 |
rw11::setup_tt "cpu0" {ndl 1 dlrlim 5} |
rw11::setup_lp |
rw11::setup_pp |
|
/trunk/tools/oskit/hook_ibmon_tma.tcl
1,6 → 1,7
# $Id: hook_ibmon_tma.tcl 722 2015-12-30 19:45:46Z mueller $ |
# $Id: hook_ibmon_tma.tcl 689 2015-06-05 14:33:18Z mueller $ |
puts "hook: start ibmon for tma" |
package require ibd_ibmon |
ibd_ibmon::setup |
ibd_ibmon::stop |
cpu0 cp -wibr im.lolim [cpu0 imap tma.sr] \ |
-wibr im.hilim [cpu0 imap tma.rl] |
/trunk/tools/oskit/unix-v5_rk/uv5_rk_boot.tcl
1,4 → 1,4
# $Id: uv5_rk_boot.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: uv5_rk_boot.tcl 689 2015-06-05 14:33:18Z mueller $ |
# |
# Setup file for Unix V5 RK05 based system |
# |
12,7 → 12,7
puts [rlw] |
|
# setup tt,lp (uses only 1 console; uses parity -> use 7 bit mode) |
rw11::setup_tt "cpu0" ndl 1 to7bit 1 |
rw11::setup_tt "cpu0" {ndl 1 to7bit 1} |
rw11::setup_lp |
|
# mount disks |
/trunk/tools/oskit/hook_ibmon_rpa.tcl
1,6 → 1,7
# $Id: hook_ibmon_rpa.tcl 722 2015-12-30 19:45:46Z mueller $ |
# $Id: hook_ibmon_rpa.tcl 689 2015-06-05 14:33:18Z mueller $ |
puts "hook: start ibmon for rpa" |
package require ibd_ibmon |
ibd_ibmon::setup |
ibd_ibmon::stop |
cpu0 cp -wibr im.lolim [cpu0 imap rpa.cs1] \ |
-wibr im.hilim [cpu0 imap rpa.cs3] |
/trunk/tools/oskit/211bsd_rk/211bsd_rk_boot.tcl
1,4 → 1,4
# $Id: 211bsd_rk_boot.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: 211bsd_rk_boot.tcl 689 2015-06-05 14:33:18Z mueller $ |
# |
# Setup file for 211bsd RK05 based system |
# |
14,7 → 14,7
puts [rlw] |
|
# setup tt,lp (211bsd uses parity -> use 7 bit mode) |
rw11::setup_tt "cpu0" to7bit 1 |
rw11::setup_tt "cpu0" {to7bit 1} |
rw11::setup_lp |
|
# mount disks |
/trunk/tools/oskit/rsx11m-31_rk/rsx11m-31_rk_boot.tcl
1,4 → 1,4
# $Id: rsx11m-31_rk_boot.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: rsx11m-31_rk_boot.tcl 689 2015-06-05 14:33:18Z mueller $ |
# |
# Setup file for RSX11-M V3.1 RK05 based system |
# |
14,7 → 14,7
puts [rlw] |
|
# setup tt,lp,pp (enable rx rate limiter on old DEC OS) |
rw11::setup_tt "cpu0" dlrlim 5 |
rw11::setup_tt "cpu0" {dlrlim 5} |
rw11::setup_lp |
rw11::setup_pp |
|
/trunk/tools/oskit/rsx11m-40_rk/rsx11m-40_rk_boot.tcl
1,4 → 1,4
# $Id: rsx11m-40_rk_boot.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: rsx11m-40_rk_boot.tcl 689 2015-06-05 14:33:18Z mueller $ |
# |
# Setup file for RSX11-M V4.0 RK05 based system |
# |
14,7 → 14,7
puts [rlw] |
|
# setup tt,lp,pp (enable rx rate limiter on old DEC OS) |
rw11::setup_tt "cpu0" dlrlim 5 |
rw11::setup_tt "cpu0" {dlrlim 5} |
rw11::setup_lp |
rw11::setup_pp |
|
/trunk/tools/oskit/211bsd_rl/211bsd_rl_boot.tcl
1,4 → 1,4
# $Id: 211bsd_rl_boot.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: 211bsd_rl_boot.tcl 689 2015-06-05 14:33:18Z mueller $ |
# |
# Setup file for 211bsd RL02 based system |
# |
14,7 → 14,7
puts [rlw] |
|
# setup tt,lp (211bsd uses parity -> use 7 bit mode) |
rw11::setup_tt "cpu0" to7bit 1 |
rw11::setup_tt "cpu0" {to7bit 1} |
rw11::setup_lp |
|
# mount disks |
/trunk/tools/oskit/rt11-53_rl/rt11-53_rl_boot.tcl
1,4 → 1,4
# $Id: rt11-53_rl_boot.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $ Id: $ |
# |
# Setup file for RT-11 V5.3 RL02 based system |
# |
13,7 → 13,7
puts [rlw] |
|
# setup tt,lp,pp (single console; enable rx rate limiter on old DEC OS) |
rw11::setup_tt "cpu0" ndl 1 dlrlim 5 |
rw11::setup_tt "cpu0" {ndl 1 dlrlim 5} |
rw11::setup_lp |
rw11::setup_pp |
|
/trunk/tools/oskit/rt11-53_rl/README_rt11-53_rlset.txt
1,4 → 1,4
# $Id: README_rt11-53_rlset.txt 699 2015-07-05 21:37:26Z mueller $ |
# $Id: $ |
|
Notes on oskit: RT-11 V5.3 system on a RL02 volume |
|
/trunk/tools/oskit/rt11-53_rl/rt11-53_rl_boot.scmd
1,4 → 1,4
; $Id: rt11-53_rl_boot.scmd 699 2015-07-05 21:37:26Z mueller $ |
; $ Id: $ |
; |
; Setup file for RT-11 V5.3 RL02 based system |
; |
/trunk/tools/oskit/211bsd_tm/README_211bsd_tmset.txt
1,4 → 1,4
# $Id: README_211bsd_tmset.txt 699 2015-07-05 21:37:26Z mueller $ |
# $Id: README_211bsd_rpset.txt 680 2015-05-14 13:29:46Z mueller $ |
|
Notes on oskit: 2.11BSD system on a TM11 tape distribution kit |
|
/trunk/tools/oskit/211bsd_tm/211bsd_tm_rm05_boot.tcl
1,4 → 1,4
# $Id: 211bsd_tm_rm05_boot.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: 211bsd_tm_rm05_boot.tcl 690 2015-06-07 18:23:51Z mueller $ |
# |
# Setup file for creating a 211bsd RM05 system from a TM11 dist kit |
# |
15,7 → 15,7
puts [rlw] |
|
# setup tt,lp (211bsd uses parity -> use 7 bit mode) |
rw11::setup_tt "cpu0" to7bit 1 |
rw11::setup_tt "cpu0" {to7bit 1} |
rw11::setup_lp |
|
# mount disks |
/trunk/tools/oskit/211bsd_tm/211bsd_rm05_boot.tcl
1,4 → 1,4
# $Id: 211bsd_rm05_boot.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: 211bsd_rm05_boot.tcl 690 2015-06-07 18:23:51Z mueller $ |
# |
# Setup file for 211bsd RM05 based system |
# |
14,7 → 14,7
puts [rlw] |
|
# setup tt,lp (211bsd uses parity -> use 7 bit mode) |
rw11::setup_tt "cpu0" to7bit 1 |
rw11::setup_tt "cpu0" {to7bit 1} |
rw11::setup_lp |
|
# mount disks |
/trunk/tools/oskit/211bsd_tm/211bsd_tm_rp06_boot.tcl
1,4 → 1,4
# $Id: 211bsd_tm_rp06_boot.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: 211bsd_tm_rp06_boot.tcl 690 2015-06-07 18:23:51Z mueller $ |
# |
# Setup file for creating a 211bsd RP06 system from a TM11 dist kit |
# |
15,7 → 15,7
puts [rlw] |
|
# setup tt,lp (211bsd uses parity -> use 7 bit mode) |
rw11::setup_tt "cpu0" to7bit 1 |
rw11::setup_tt "cpu0" {to7bit 1} |
rw11::setup_lp |
|
# mount disks |
/trunk/tools/oskit/rsx11mp-30_rp/rsx11mp-30_rp_boot.tcl
1,4 → 1,4
# $Id: rsx11mp-30_rp_boot.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: rsx11mp-30_rp_boot.tcl 689 2015-06-05 14:33:18Z mueller $ |
# |
# Setup file for RSX11-M+ V3.0 RP06 based system |
# |
14,7 → 14,7
puts [rlw] |
|
# setup tt,lp (211bsd uses parity -> use 7 bit mode) |
rw11::setup_tt "cpu0" to7bit 1 |
rw11::setup_tt "cpu0" {to7bit 1} |
rw11::setup_lp |
|
# mount disks |
/trunk/tools/oskit/211bsd_rp/211bsd_rp_boot.tcl
1,4 → 1,4
# $Id: 211bsd_rp_boot.tcl 704 2015-07-25 14:18:03Z mueller $ |
# $Id: 211bsd_rp_boot.tcl 689 2015-06-05 14:33:18Z mueller $ |
# |
# Setup file for 211bsd RP06 based system |
# |
14,7 → 14,7
puts [rlw] |
|
# setup tt,lp (211bsd uses parity -> use 7 bit mode) |
rw11::setup_tt "cpu0" to7bit 1 |
rw11::setup_tt "cpu0" {to7bit 1} |
rw11::setup_lp |
|
# mount disks |
/trunk/tools/dox/w11_vhd_all.Doxyfile
5,7 → 5,7
#--------------------------------------------------------------------------- |
DOXYFILE_ENCODING = UTF-8 |
PROJECT_NAME = "w11 - vhd" |
PROJECT_NUMBER = 0.71 |
PROJECT_NUMBER = 0.70 |
PROJECT_BRIEF = "W11 CPU core and support modules" |
PROJECT_LOGO = |
OUTPUT_DIRECTORY = $(RETRODOXY)/w11/vhd |
/trunk/tools/dox/w11_cpp.Doxyfile
5,7 → 5,7
#--------------------------------------------------------------------------- |
DOXYFILE_ENCODING = UTF-8 |
PROJECT_NAME = "w11 - cpp" |
PROJECT_NUMBER = 0.71 |
PROJECT_NUMBER = 0.70 |
PROJECT_BRIEF = "Backend server for Rlink and w11" |
PROJECT_LOGO = |
OUTPUT_DIRECTORY = $(RETRODOXY)/w11/cpp |
/trunk/tools/dox/w11_tcl.Doxyfile
5,7 → 5,7
#--------------------------------------------------------------------------- |
DOXYFILE_ENCODING = UTF-8 |
PROJECT_NAME = "w11 - tcl" |
PROJECT_NUMBER = 0.71 |
PROJECT_NUMBER = 0.70 |
PROJECT_BRIEF = "Backend server for Rlink and w11" |
PROJECT_LOGO = |
OUTPUT_DIRECTORY = $(RETRODOXY)/w11/tcl |
/trunk/rtl/ibus/ibdr_tm11.vhd
1,4 → 1,4
-- $Id: ibdr_tm11.vhd 695 2015-06-28 11:22:52Z mueller $ |
-- $Id: ibdr_tm11.vhd 690 2015-06-07 18:23:51Z mueller $ |
-- |
-- Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
27,7 → 27,6
-- |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-06-27 695 1.0.1 add missing BESET to sensitivity list |
-- 2015-06-04 686 1.0 Initial version |
-- 2015-05-15 682 0.1 First draft |
------------------------------------------------------------------------------ |
184,7 → 183,7
end if; |
end process proc_regs; |
|
proc_next : process (R_REGS, IB_MREQ, EI_ACK, BRESET) |
proc_next : process (R_REGS, IB_MREQ, EI_ACK) |
variable r : regs_type := regs_init; |
variable n : regs_type := regs_init; |
variable ibhold : slbit := '0'; |
/trunk/rtl/ibus/ibd_ibmon.vhd
1,4 → 1,4
-- $Id: ibd_ibmon.vhd 697 2015-07-05 14:23:26Z mueller $ |
-- $Id: ibd_ibmon.vhd 672 2015-05-02 21:58:28Z mueller $ |
-- |
-- Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
278,7 → 278,7
n.ibsel := '0'; |
if IB_MREQ.aval='1' and IB_MREQ.addr(12 downto 4)=IB_ADDR(12 downto 4) then |
n.ibsel := '1'; |
ibramen := '1'; -- ensures bram read before ibus read |
ibramen := '1'; |
end if; |
|
-- ibus transactions (react only on console (this includes racc)) |
/trunk/rtl/sys_gen/w11a/nexys2/sys_conf.vhd
1,4 → 1,4
-- $Id: sys_conf.vhd 698 2015-07-05 21:20:18Z mueller $ |
-- $Id: sys_conf.vhd 692 2015-06-21 11:53:24Z mueller $ |
-- |
-- Copyright 2010-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
19,7 → 19,6
-- Tool versions: xst 11.4-14.7; ghdl 0.26-0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-06-26 695 1.4.2 add sys_conf_(dmscnt|dmhbpt*|dmcmon*) |
-- 2015-06-21 692 1.4.1 use clksys=52 (no closure after rhrp fixes) |
-- 2015-03-14 658 1.4 add sys_conf_ibd_* definitions |
-- 2015-02-15 647 1.3 drop bram and minisys options |
57,11 → 56,8
constant sys_conf_fx2_ccwidth : positive := 5; |
|
-- configure debug and monitoring units ------------------------------------ |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_dmscnt : boolean := true; |
constant sys_conf_dmhbpt_nunit : integer := 2; -- use 0 to disable |
constant sys_conf_dmcmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable rbmon |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable ibmon |
|
-- configure memory controller --------------------------------------------- |
constant sys_conf_memctl_read0delay : positive := 3; |
/trunk/rtl/sys_gen/w11a/nexys2/tb/sys_conf_sim.vhd
1,4 → 1,4
-- $Id: sys_conf_sim.vhd 698 2015-07-05 21:20:18Z mueller $ |
-- $Id: sys_conf_sim.vhd 683 2015-05-17 21:54:35Z mueller $ |
-- |
-- Copyright 2010-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
19,7 → 19,6
-- Tool versions: xst 11.4-14.7; ghdl 0.26-0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-06-26 695 1.4.1 add sys_conf_(dmscnt|dmhbpt*|dmcmon*) |
-- 2015-03-14 658 1.4 add sys_conf_ibd_* definitions |
-- 2015-02-07 643 1.3 drop bram and minisys options |
-- 2014-12-22 619 1.2.1 add _rbmon_awidth |
56,12 → 55,9
constant sys_conf_memctl_writedelay : positive := 4; |
|
-- configure debug and monitoring units ------------------------------------ |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_dmscnt : boolean := true; |
constant sys_conf_dmhbpt_nunit : integer := 2; -- use 0 to disable |
constant sys_conf_dmcmon_awidth : integer := 9; -- use 0 to disable |
|
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable rbmon |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable ibmon |
|
-- configure w11 cpu core -------------------------------------------------- |
constant sys_conf_mem_losize : integer := 8#167777#; -- 4 MByte |
|
/trunk/rtl/sys_gen/w11a/nexys3/sys_conf.vhd
1,4 → 1,4
-- $Id: sys_conf.vhd 698 2015-07-05 21:20:18Z mueller $ |
-- $Id: sys_conf.vhd 692 2015-06-21 11:53:24Z mueller $ |
-- |
-- Copyright 2011-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
19,7 → 19,6
-- Tool versions: xst 13.1-14.7; ghdl 0.29-0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-06-26 695 1.4.2 add sys_conf_(dmscnt|dmhbpt*|dmcmon*) |
-- 2015-06-21 692 1.4.1 use clksys=64 (no closure after rhrp fixes) |
-- 2015-03-14 658 1.4 add sys_conf_ibd_* definitions |
-- 2015-02-15 647 1.3 drop bram and minisys options |
68,11 → 67,8
constant sys_conf_memctl_writedelay : positive := 5; |
|
-- configure debug and monitoring units ------------------------------------ |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_dmscnt : boolean := true; |
constant sys_conf_dmhbpt_nunit : integer := 2; -- use 0 to disable |
constant sys_conf_dmcmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable rbmon |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable ibmon |
|
-- configure w11 cpu core -------------------------------------------------- |
constant sys_conf_mem_losize : integer := 8#167777#; -- 4 MByte |
/trunk/rtl/sys_gen/w11a/nexys3/sys_w11a_n3.vhd
1,4 → 1,4
-- $Id: sys_w11a_n3.vhd 698 2015-07-05 21:20:18Z mueller $ |
-- $Id: sys_w11a_n3.vhd 692 2015-06-21 11:53:24Z mueller $ |
-- |
-- Copyright 2011-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
34,18 → 34,15
-- |
-- Synthesized (xst): |
-- Date Rev ise Target flop lutl lutm slic t peri |
-- 2015-07-05 698 14.7 131013 xc6slx16-2 2500 4852 161 1782 ok: +dmhbpt 78% |
-- 2015-07-05 697 14.7 131013 xc6slx16-2 2428 4786 161 1756 ok: +dmcmon 77% |
-- 2015-06-27 695 14.7 131013 xc6slx16-2 2281 4638 161 1714 ok: +dmscnt 75% |
-- 2015-06-21 692 14.7 131013 xc6slx16-2 2192 4518 161 1584 ok: rhrp fixes |
-- 2015-06-04 686 14.7 131013 xc6slx16-2 2189 4492 161 1543 ok: +TM11 67% |
-- 2015-05-14 680 14.7 131013 xc6slx16-2 2120 4443 161 1546 ok: +ibmon 67% |
-- 2015-04-06 664 14.7 131013 xc6slx16-2 1991 4350 167 1489 ok: +RHRP 65% |
-- 2015-02-21 649 14.7 131013 xc6slx16-2 1819 3905 160 1380 ok: +RL11 61% |
-- 2015-06-04 686 14.7 131013 xc6slx16-2 2189 4492 161 1543 ok: +TM11 67% |
-- 2015-05-14 680 14.7 131013 xc6slx16-2 2120 4443 161 1546 ok: +ibmon 67% |
-- 2015-04-06 664 14.7 131013 xc6slx16-2 1991 4350 167 1489 ok: +RHRP 65% |
-- 2015-02-21 649 14.7 131013 xc6slx16-2 1819 3905 160 1380 ok: +RL11 |
-- 2014-12-22 619 14.7 131013 xc6slx16-2 1742 3767 150 1350 ok: +rbmon |
-- 2014-12-20 614 14.7 131013 xc6slx16-2 1640 3692 150 1297 ok: -RL11,rlv4 |
-- 2014-06-08 561 14.7 131013 xc6slx16-2 1531 3500 142 1165 ok: +RL11 |
-- 2014-05-29 556 14.7 131013 xc6slx16-2 1459 3342 128 1154 ok: 51% |
-- 2014-05-29 556 14.7 131013 xc6slx16-2 1459 3342 128 1154 ok: |
-- 2013-04-21 509 13.3 O76d xc6slx16-2 1516 3274 140 1184 ok: now + FX2 ! |
-- 2011-12-18 440 13.1 O40d xc6slx16-2 1441 3161 96 1084 ok: LP+PC+DL+II |
-- 2011-11-20 430 13.1 O40d xc6slx16-2 1412 3206 84 1063 ok: LP+PC+DL+II |
/trunk/rtl/sys_gen/w11a/nexys3/tb/sys_conf_sim.vhd
1,4 → 1,4
-- $Id: sys_conf_sim.vhd 718 2015-12-26 15:59:48Z mueller $ |
-- $Id: sys_conf_sim.vhd 683 2015-05-17 21:54:35Z mueller $ |
-- |
-- Copyright 2011-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
19,8 → 19,6
-- Tool versions: xst 13.1-14.7; ghdl 0.29-0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-12-26 718 1.5.2 use clksys=64 (as since r692 in sys_conf.vhd) |
-- 2015-06-26 695 1.5.1 add sys_conf_(dmscnt|dmhbpt*|dmcmon*) |
-- 2015-03-14 658 1.5 add sys_conf_ibd_* definitions |
-- 2015-02-15 647 1.4 drop bram and minisys options |
-- 2014-12-22 619 1.3.1 add _rbmon_awidth |
38,8 → 36,8
|
-- configure clocks -------------------------------------------------------- |
constant sys_conf_clksys_vcodivide : positive := 25; |
constant sys_conf_clksys_vcomultiply : positive := 16; -- dcm 64 MHz |
constant sys_conf_clksys_outdivide : positive := 1; -- sys 64 MHz |
constant sys_conf_clksys_vcomultiply : positive := 18; -- dcm 72 MHz |
constant sys_conf_clksys_outdivide : positive := 1; -- sys 72 MHz |
constant sys_conf_clksys_gentype : string := "DCM"; |
|
-- configure rlink and hio interfaces -------------------------------------- |
51,16 → 49,13
constant sys_conf_fx2_ccwidth : positive := 5; |
|
-- configure memory controller --------------------------------------------- |
constant sys_conf_memctl_read0delay : positive := 4; -- for <75 MHz (???) |
constant sys_conf_memctl_read0delay : positive := 4; -- for <75 MHz |
constant sys_conf_memctl_read1delay : positive := sys_conf_memctl_read0delay; |
constant sys_conf_memctl_writedelay : positive := 5; |
|
-- configure debug and monitoring units ------------------------------------ |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_dmscnt : boolean := true; |
constant sys_conf_dmhbpt_nunit : integer := 2; -- use 0 to disable |
constant sys_conf_dmcmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable rbmon |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable rbmon |
|
-- configure w11 cpu core -------------------------------------------------- |
constant sys_conf_mem_losize : integer := 8#167777#; -- 4 MByte |
/trunk/rtl/sys_gen/w11a/basys3/sys_conf.vhd
1,4 → 1,4
-- $Id: sys_conf.vhd 698 2015-07-05 21:20:18Z mueller $ |
-- $Id: sys_conf.vhd 683 2015-05-17 21:54:35Z mueller $ |
-- |
-- Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
19,7 → 19,6
-- Tool versions: viv 2014.4; ghdl 0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-06-26 695 1.1.1 add sys_conf_(dmscnt|dmhbpt*|dmcmon*) |
-- 2015-03-14 658 1.1 add sys_conf_ibd_* definitions |
-- 2015-02-08 644 1.0 Initial version (derived from _n4 version) |
------------------------------------------------------------------------------ |
51,11 → 50,8
constant sys_conf_memctl_nblock : positive := 11; |
|
-- configure debug and monitoring units ------------------------------------ |
constant sys_conf_rbmon_awidth : integer := 0; -- no rbmon to save BRAMs |
constant sys_conf_ibmon_awidth : integer := 0; -- no ibmon to save BRAMs |
constant sys_conf_dmscnt : boolean := true; |
constant sys_conf_dmhbpt_nunit : integer := 2; -- use 0 to disable |
constant sys_conf_dmcmon_awidth : integer := 0; -- no dmcmon to save BRAMs |
constant sys_conf_rbmon_awidth : integer := 0; -- no rbmon to save BRAMs |
constant sys_conf_ibmon_awidth : integer := 0; -- no ibmon to save BRAMs |
|
-- configure w11 cpu core -------------------------------------------------- |
-- sys_conf_mem_losize is highest 64 byte MMU block number |
/trunk/rtl/sys_gen/w11a/basys3/tb/sys_conf_sim.vhd
1,4 → 1,4
-- $Id: sys_conf_sim.vhd 698 2015-07-05 21:20:18Z mueller $ |
-- $Id: sys_conf_sim.vhd 683 2015-05-17 21:54:35Z mueller $ |
-- |
-- Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
19,7 → 19,6
-- Tool versions: viv 2014.4; ghdl 0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-06-26 695 1.1.1 add sys_conf_(dmscnt|dmhbpt*|dmcmon*) |
-- 2015-03-14 658 1.1 add sys_conf_ibd_* definitions |
-- 2015-02-21 649 1.0 Initial version |
------------------------------------------------------------------------------ |
51,11 → 50,8
constant sys_conf_memctl_nblock : positive := 11; |
|
-- configure debug and monitoring units ------------------------------------ |
constant sys_conf_rbmon_awidth : integer := 0; -- no rbmon to save BRAMs |
constant sys_conf_ibmon_awidth : integer := 0; -- no ibmon to save BRAMs |
constant sys_conf_dmscnt : boolean := true; |
constant sys_conf_dmhbpt_nunit : integer := 2; -- use 0 to disable |
constant sys_conf_dmcmon_awidth : integer := 0; -- no dmcmon to save BRAMs |
constant sys_conf_rbmon_awidth : integer := 0; -- no rbmon to save BRAMs |
constant sys_conf_ibmon_awidth : integer := 0; -- no ibmon to save BRAMs |
|
-- configure w11 cpu core -------------------------------------------------- |
-- sys_conf_mem_losize is highest 64 byte MMU block number |
/trunk/rtl/sys_gen/w11a/nexys4/sys_conf.vhd
1,4 → 1,4
-- $Id: sys_conf.vhd 698 2015-07-05 21:20:18Z mueller $ |
-- $Id: sys_conf.vhd 683 2015-05-17 21:54:35Z mueller $ |
-- |
-- Copyright 2013-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
19,7 → 19,6
-- Tool versions: ise 14.5-14.7; viv 2014.4; ghdl 0.29-0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-06-26 695 1.2.1 add sys_conf_(dmscnt|dmhbpt*|dmcmon*) |
-- 2015-03-14 658 1.2 add sys_conf_ibd_* definitions |
-- 2015-02-07 643 1.1 drop bram and minisys options |
-- 2013-09-22 534 1.0 Initial version (derived from _n3 version) |
62,11 → 61,8
constant sys_conf_memctl_writedelay : positive := 5; |
|
-- configure debug and monitoring units ------------------------------------ |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_dmscnt : boolean := true; |
constant sys_conf_dmhbpt_nunit : integer := 2; -- use 0 to disable |
constant sys_conf_dmcmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable rbmon |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable ibmon |
|
-- configure w11 cpu core -------------------------------------------------- |
constant sys_conf_mem_losize : integer := 8#167777#; -- 4 MByte |
/trunk/rtl/sys_gen/w11a/nexys4/tb/sys_conf_sim.vhd
1,4 → 1,4
-- $Id: sys_conf_sim.vhd 698 2015-07-05 21:20:18Z mueller $ |
-- $Id: sys_conf_sim.vhd 683 2015-05-17 21:54:35Z mueller $ |
-- |
-- Copyright 2013-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
19,7 → 19,6
-- Tool versions: xst 14.5-14.7; ghdl 0.29-0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-06-26 695 1.2.1 add sys_conf_(dmscnt|dmhbpt*|dmcmon*) |
-- 2015-03-14 658 1.2 add sys_conf_ibd_* definitions |
-- 2015-02-07 643 1.1 drop bram and minisys options |
-- 2013-09-34 534 1.0 Initial version (cloned from _n3) |
53,11 → 52,8
constant sys_conf_memctl_writedelay : positive := 7; |
|
-- configure debug and monitoring units ------------------------------------ |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_dmscnt : boolean := true; |
constant sys_conf_dmhbpt_nunit : integer := 2; -- use 0 to disable |
constant sys_conf_dmcmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable rbmon |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable ibmon |
|
-- configure w11 cpu core -------------------------------------------------- |
constant sys_conf_mem_losize : integer := 8#167777#; -- 4 MByte |
/trunk/rtl/sys_gen/w11a/s3board/sys_conf.vhd
1,4 → 1,4
-- $Id: sys_conf.vhd 698 2015-07-05 21:20:18Z mueller $ |
-- $Id: sys_conf.vhd 683 2015-05-17 21:54:35Z mueller $ |
-- |
-- Copyright 2007-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
19,7 → 19,6
-- Tool versions: xst 8.1-14.7; ghdl 0.18-0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-06-26 695 1.2.1 add sys_conf_(dmscnt|dmhbpt*|dmcmon*) |
-- 2015-03-14 658 1.2 add sys_conf_ibd_* definitions |
-- 2014-12-22 619 1.1.2 add _rbmon_awidth |
-- 2010-05-05 288 1.1.1 add sys_conf_hio_debounce |
39,11 → 38,8
constant sys_conf_hio_debounce : boolean := true; -- instantiate debouncers |
|
-- configure debug and monitoring units ------------------------------------ |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_dmscnt : boolean := true; |
constant sys_conf_dmhbpt_nunit : integer := 2; -- use 0 to disable |
constant sys_conf_dmcmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable rbmon |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable ibmon |
|
-- configure w11 cpu core -------------------------------------------------- |
constant sys_conf_mem_losize : integer := 8#037777#; -- 1 MByte |
/trunk/rtl/sys_gen/w11a/s3board/tb/sys_conf_sim.vhd
1,4 → 1,4
-- $Id: sys_conf_sim.vhd 698 2015-07-05 21:20:18Z mueller $ |
-- $Id: sys_conf_sim.vhd 683 2015-05-17 21:54:35Z mueller $ |
-- |
-- Copyright 2007-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
19,7 → 19,6
-- Tool versions: xst 8.1-14.7; ghdl 0.18-0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-06-26 695 1.2.1 add sys_conf_(dmscnt|dmhbpt*|dmcmon*) |
-- 2015-03-14 658 1.2 add sys_conf_ibd_* definitions |
-- 2014-12-22 619 1.1.2 add _rbmon_awidth |
-- 2010-05-05 288 1.1.1 add sys_conf_hio_debounce |
39,11 → 38,8
constant sys_conf_hio_debounce : boolean := false; -- no debouncers |
|
-- configure debug and monitoring units ------------------------------------ |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_dmscnt : boolean := true; |
constant sys_conf_dmhbpt_nunit : integer := 2; -- use 0 to disable |
constant sys_conf_dmcmon_awidth : integer := 9; -- use 0 to disable |
constant sys_conf_rbmon_awidth : integer := 9; -- use 0 to disable rbmon |
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable ibmon |
|
-- configure w11 cpu core -------------------------------------------------- |
constant sys_conf_bram : integer := 0; -- no bram, use cache |
/trunk/rtl/vlib/rlink/tb/tbcore_rlink.vhd
1,6 → 1,6
-- $Id: tbcore_rlink.vhd 712 2015-11-01 22:53:45Z mueller $ |
-- $Id: tbcore_rlink.vhd 649 2015-02-21 21:10:16Z mueller $ |
-- |
-- Copyright 2010-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- Copyright 2010-2013 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
-- This program is free software; you may redistribute and/or modify it under |
-- the terms of the GNU General Public License as published by the Free |
23,7 → 23,6
-- Tool versions: xst 11.4-14.7; ghdl 0.26-0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-11-01 712 3.1.3 proc_stim: drive SB_CNTL from start to avoid 'U' |
-- 2013-01-04 469 3.1.2 use 1ns wait for .sinit to allow simbus debugging |
-- 2011-12-25 445 3.1.1 add SB_ init drivers to avoid SB_VAL='U' at start |
-- 2011-12-23 444 3.1 redo clock handling, remove simclk, CLK now input |
177,8 → 176,7
SB_VAL <= 'Z'; |
SB_ADDR <= (others=>'Z'); |
SB_DATA <= (others=>'Z'); |
SB_CNTL <= (others=>'Z'); |
|
|
-- wait for 10 clock cycles (design run up) |
for i in 0 to 9 loop |
wait until rising_edge(CLK); |
/trunk/rtl/vlib/rlink/rlink_core.vhd
1,6 → 1,6
-- $Id: rlink_core.vhd 718 2015-12-26 15:59:48Z mueller $ |
-- $Id: rlink_core.vhd 641 2015-02-01 22:12:15Z mueller $ |
-- |
-- Copyright 2007-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- Copyright 2007-2014 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
-- This program is free software; you may redistribute and/or modify it under |
-- the terms of the GNU General Public License as published by the Free |
32,7 → 32,6
-- |
-- Synthesized (xst): |
-- Date Rev ise Target flop lutl lutm slic t peri |
-- 2015-12-26 718 14.7 131013 xc6slx16-2 312 460 16 150 s 7.0 ver 4.1 |
-- 2014-12-20 614 14.7 131013 xc6slx16-2 310 453 16 146 s 6.8 ver 4.0 |
-- 2014-08-13 581 14.7 131013 xc6slx16-2 160 230 0 73 s 6.0 ver 3.0 |
-- 2014-08-13 581 14.7 131013 xc3s1000-4 160 358 0 221 s 8.9 ver 3.0 |
39,7 → 38,6
-- |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-12-26 718 4.1.1 add proc_sres: strip 'x' from RB_SRES.dout |
-- 2014-12-21 617 4.1 use stat(_rbf_rbtout) to signal rbus timeout |
-- 2014-12-20 614 4.0 largely rewritten; 2 FSMs; v3 protocol; 4 bit STAT |
-- 2014-08-15 583 3.5 rb_mreq addr now 16 bit; add s_rxaddrl state |
418,10 → 416,9
|
signal RBSEL : slbit := '0'; |
|
signal RB_MREQ_L : rb_mreq_type := rb_mreq_init; -- internal mreq |
signal RB_SRES_CLEAN : rb_sres_type := rb_sres_init; -- cleaned rb_sres |
signal RB_SRES_CONF : rb_sres_type := rb_sres_init; -- config sres |
signal RB_SRES_TOT : rb_sres_type := rb_sres_init; -- total sres |
signal RB_MREQ_L : rb_mreq_type := rb_mreq_init; -- internal mreq |
signal RB_SRES_CONF : rb_sres_type := rb_sres_init; -- config sres |
signal RB_SRES_TOT : rb_sres_type := rb_sres_init; -- total sres |
|
signal RL_BUSY_L : slbit := '0'; |
signal RL_DO_L : slv9 := (others=>'0'); |
503,31 → 500,11
|
RB_SRES_OR : rb_sres_or_2 |
port map ( |
RB_SRES_1 => RB_SRES_CLEAN, |
RB_SRES_1 => RB_SRES, |
RB_SRES_2 => RB_SRES_CONF, |
RB_SRES_OR => RB_SRES_TOT |
); |
|
proc_sres: process (RB_SRES) |
variable sres : rb_sres_type := rb_sres_init; |
variable datax01 : slv16 := (others=>'0'); |
variable data01 : slv16 := (others=>'0'); |
begin |
sres.ack := to_x01(RB_SRES.ack); |
sres.busy := to_x01(RB_SRES.busy); |
sres.err := to_x01(RB_SRES.err); |
sres.dout := to_x01(RB_SRES.dout); |
|
if sres.ack = '1' and sres.busy = '0' and is_x(sres.dout) then |
assert false |
report "rlink_core: seen 'x' in rb_sres.data" |
severity warning; |
sres.dout := (others=>'1'); |
end if; |
|
RB_SRES_CLEAN <= sres; |
end process proc_sres; |
|
proc_regs: process (CLK) |
begin |
|
/trunk/rtl/bplib/basys3/basys3_setup.tcl
1,4 → 1,4
# $Id: basys3_setup.tcl 699 2015-07-05 21:37:26Z mueller $ |
# $ Id: $ |
# |
set rvtb_part "xc7a35tcpg236-1" |
set rvtb_board "basys3" |
/trunk/rtl/bplib/nexys4/nexys4_setup.tcl
1,4 → 1,4
# $Id: nexys4_setup.tcl 699 2015-07-05 21:37:26Z mueller $ |
# $ Id: $ |
# |
set rvtb_part "xc7a100tcsg324-1" |
set rvtb_board "nexys4" |
/trunk/rtl/bplib/nxcramlib/nx_cram_memctl_as.vhd
1,6 → 1,6
-- $Id: nx_cram_memctl_as.vhd 718 2015-12-26 15:59:48Z mueller $ |
-- $Id: nx_cram_memctl_as.vhd 644 2015-02-08 22:56:54Z mueller $ |
-- |
-- Copyright 2010-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- Copyright 2010-2011 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
-- This program is free software; you may redistribute and/or modify it under |
-- the terms of the GNU General Public License as published by the Free |
31,7 → 31,6
-- |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-12-26 718 1.2.1 BUGFIX: do_dispatch(): always define imem_oe |
-- 2011-11-26 433 1.2 renamed from n2_cram_memctl_as |
-- 2011-11-19 432 1.1 remove O_FLA_CE_N port |
-- 2011-11-19 427 1.0.5 now numeric_std clean |
75,9 → 74,6
-- 82.19- 89.74 5 6 <-- 85 85 10 17 |
-- 89.74- 95.89 6 6 <-- 90,95 95 10 19 |
-- 95.89-102.56 6 7 <-- 100 100 1 2 |
-- remark added 2015-12-26 |
-- - for sys_w11a_n3 one gets in simulation errors for 72 MHz and RD=4 !! |
-- - so far unclear whether controller or memory model is wrong !! |
-- |
-- Timing of some signals: |
-- |
368,7 → 364,6
iaddr0 := '1'; -- access word 1 |
imem_be := BE(3 downto 2); -- set be's for 1st cycle |
end if; |
imem_oe := '0'; -- oe=0 |
nstate := s_wrinit; -- next: write init part |
end if; |
end procedure do_dispatch; |
399,7 → 394,7
if unsigned(r.cntdly) /= 0 then |
n.cntdly := slv(unsigned(r.cntdly) - 1); |
end if; |
|
|
case r.state is |
when s_idle => -- s_idle: wait for req |
if REQ = '1' then -- if IO requested |
/trunk/rtl/bplib/micron/mt45w8mw16b.vhd
1,6 → 1,6
-- $Id: mt45w8mw16b.vhd 718 2015-12-26 15:59:48Z mueller $ |
-- $Id: mt45w8mw16b.vhd 649 2015-02-21 21:10:16Z mueller $ |
-- |
-- Copyright 2010-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- Copyright 2010-2011 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
-- This program is free software; you may redistribute and/or modify it under |
-- the terms of the GNU General Public License as published by the Free |
26,7 → 26,6
-- Tool versions: xst 11.4-14.7; ghdl 0.26-0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-12-26 718 1.3.3 BUGFIX: initialize L_ADDR with all '1', see comment |
-- 2011-11-19 427 1.3.2 now numeric_std clean |
-- 2010-06-03 299 1.3.1 improved timing model (WE cycle, robust T_apa) |
-- 2010-06-03 298 1.3 add timing model again |
125,7 → 124,7
signal R_BCR_BW : slbit := '1'; -- bw: def: no wrap |
signal R_BCR_BL : slv3 := "111"; -- bl: def: continuous |
|
signal L_ADDR : slv23 := (others=>'1'); -- all '1' for propper 1st access |
signal L_ADDR : slv23 := (others=>'0'); |
signal DOUT_VAL_EN : slbit := '0'; |
signal DOUT_VAL_AA : slbit := '0'; |
signal DOUT_VAL_PA : slbit := '0'; |
155,16 → 154,8
end if; |
end process proc_adv; |
|
-- Notes: |
-- 1. the row change (t_aa) and column change (t_apa) timing depends on the |
-- recognition of address changes and of page changes. To keep the logic |
-- simple L_ADDR and addr_last are initialized with all '1'. This gives |
-- proper behaviour unless the very first access uses the very last |
-- address. In w11a systems, with use only 4 MB, this can't happen, in |
-- most other use cases this is very unlikely. |
|
proc_dout_val: process (CE, OE, WE, BE_L, BE_U, ADV, L_ADDR) |
variable addr_last : slv23 := (others=>'1');-- all '1' for propper 1st access |
variable addr_last : slv23 := (others=>'1'); |
begin |
if (CE'event and CE='1') or |
(BE_L'event and BE_L='1') or |
/trunk/rtl/w11a/pdp11_dmscnt.vbom
File deleted
/trunk/rtl/w11a/pdp11_dmcmon.vhd
File deleted
/trunk/rtl/w11a/pdp11_dmhbpt.vhd
File deleted
/trunk/rtl/w11a/pdp11_dmscnt.vhd
File deleted
/trunk/rtl/w11a/pdp11_dmhbpt_unit.vbom
File deleted
/trunk/rtl/w11a/pdp11_dmhbpt.vbom
File deleted
/trunk/rtl/w11a/pdp11_dmhbpt_unit.vhd
File deleted
/trunk/rtl/w11a/pdp11_dmcmon.vbom
File deleted
/trunk/rtl/w11a/pdp11_dpath.vhd
1,6 → 1,6
-- $Id: pdp11_dpath.vhd 702 2015-07-19 17:36:09Z mueller $ |
-- $Id: pdp11_dpath.vhd 677 2015-05-09 21:52:32Z mueller $ |
-- |
-- Copyright 2006-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- Copyright 2006-2014 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
-- This program is free software; you may redistribute and/or modify it under |
-- the terms of the GNU General Public License as published by the Free |
28,7 → 28,6
-- |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-07-19 702 1.2.5 set new DM_STAT_DP fields |
-- 2014-08-10 581 1.2.4 use c_cc_f_* |
-- 2014-07-12 569 1.2.3 use DIV_QUIT and S_DIV_SR for pdp11_munit |
-- 2011-11-18 427 1.2.2 now numeric_std clean |
332,17 → 331,12
|
DM_STAT_DP.pc <= GPR_PC; |
DM_STAT_DP.psw <= PSW; |
DM_STAT_DP.psr_we <= CNTL.psr_we; |
DM_STAT_DP.ireg <= R_IREG; |
DM_STAT_DP.ireg_we <= CNTL.ireg_we; |
DM_STAT_DP.dsrc <= R_DSRC; |
DM_STAT_DP.dsrc_we <= CNTL.dsrc_we; |
DM_STAT_DP.ddst <= R_DDST; |
DM_STAT_DP.ddst_we <= CNTL.ddst_we; |
DM_STAT_DP.dtmp <= R_DTMP; |
DM_STAT_DP.dtmp_we <= CNTL.dtmp_we; |
DM_STAT_DP.dres <= DRES; |
DM_STAT_DP.cpdout_we <= CNTL.cpdout_we; |
DM_STAT_DP.gpr_adst <= CNTL.gpr_adst; |
DM_STAT_DP.gpr_mode <= CNTL.gpr_mode; |
DM_STAT_DP.gpr_bytop <= CNTL.gpr_bytop; |
/trunk/rtl/w11a/pdp11_core_rbus.vhd
1,4 → 1,4
-- $Id: pdp11_core_rbus.vhd 700 2015-07-12 19:28:31Z mueller $ |
-- $Id: pdp11_core_rbus.vhd 677 2015-05-09 21:52:32Z mueller $ |
-- |
-- Copyright 2007-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
27,7 → 27,6
-- |
-- Revision History: - |
-- Date Rev Version Comment |
-- 2015-07-10 700 1.5.1 add cpuact logic, redefine lam as cpuact 1->0 |
-- 2015-05-09 677 1.5 start/stop/suspend overhaul; reset overhaul |
-- 2014-12-26 621 1.4 use full size 4k word ibus window |
-- 2014-12-21 617 1.3.1 use separate RB_STAT bits for cmderr and cmdmerr |
128,7 → 127,7
architecture syn of pdp11_core_rbus is |
|
type state_type is ( |
s_idle, -- s_idle: wait for rbus access |
s_idle, -- s_idle: wait for rp access |
s_cpwait, -- s_cpwait: wait for cp port ack |
s_cpstep -- s_cpstep: wait for cpustep done |
); |
140,7 → 139,7
rbinit : slbit; -- rbus init seen (1 cycle pulse) |
cpreq : slbit; -- cp request flag |
cpfunc : slv5; -- cp function |
cpuact_1 : slbit; -- prev cycle cpuact |
cpugo_1 : slbit; -- prev cycle cpugo |
addr : slv22_1; -- address register |
ena_22bit : slbit; -- 22bit enable |
ena_ubmap : slbit; -- ubmap enable |
156,7 → 155,7
'0', -- rbinit |
'0', -- cpreq |
(others=>'0'), -- cpfunc |
'0', -- cpuact_1 |
'0', -- cpugo_1 |
(others=>'0'), -- addr |
'0','0', -- ena_22bit, ena_ubmap |
"11",'0', -- membe,membestick |
193,7 → 192,6
variable irb_lam : slbit := '0'; |
variable irbena : slbit := '0'; |
|
variable icpuact : slbit := '0'; |
variable icpreq : slbit := '0'; |
variable icpaddr : cp_addr_type := cp_addr_init; |
|
409,9 → 407,8
icpaddr.ena_ubmap := '0'; |
end if; |
|
icpuact := CP_STAT.cpugo and not CP_STAT.suspint; |
n.cpuact_1 := icpuact; -- delay cpuact |
if (r.cpuact_1='1' and icpuact='0') then -- cpuact 1 -> 0 |
n.cpugo_1 := CP_STAT.cpugo; -- delay cpugo |
if CP_STAT.cpugo='0' and r.cpugo_1='1' then -- cpugo 1 -> 0 transition ? |
irb_lam := '1'; |
end if; |
|
/trunk/rtl/w11a/pdp11_vmbox.vhd
1,4 → 1,4
-- $Id: pdp11_vmbox.vhd 697 2015-07-05 14:23:26Z mueller $ |
-- $Id: pdp11_vmbox.vhd 677 2015-05-09 21:52:32Z mueller $ |
-- |
-- Copyright 2006-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
27,7 → 27,6
-- |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-07-03 697 1.6.5 much wider DM_STAT_VM |
-- 2015-04-04 662 1.6.4 atowidth now 6 (was 5) to support ibdr_rprm reset |
-- 2011-11-18 427 1.6.3 now numeric_std clean |
-- 2010-10-23 335 1.6.2 add r.paddr_iopage, use ib_sel |
168,14 → 167,9
signal UBMAP_MREQ : slbit := '0'; |
signal UBMAP_ADDR_PM : slv22_1 := (others=>'0'); |
|
signal VM_STAT_L : vm_stat_type := vm_stat_init; -- vm status (local) |
signal VM_DOUT_L : slv16 := (others=>'0'); -- vm data out (local) |
|
signal IB_MREQ : ib_mreq_type := ib_mreq_init; -- ibus request (local) |
signal IB_SRES : ib_sres_type := ib_sres_init; -- ibus response (local) |
signal IB_SRES_INT : ib_sres_type := ib_sres_init; -- ibus response (cpu) |
|
signal EM_MREQ_L : em_mreq_type := em_mreq_init; -- ext mem: request (local) |
|
begin |
|
674,27 → 668,17
IB_MREQ.addr <= r.paddr(12 downto 1); |
IB_MREQ.din <= r.mdin; |
|
VM_STAT_L <= ivm_stat; |
VM_DOUT_L <= ivm_dout; |
MMU_CNTL <= immu_cntl; |
VM_DOUT <= ivm_dout; |
VM_STAT <= ivm_stat; |
MMU_CNTL <= immu_cntl; |
|
EM_MREQ_L <= iem_mreq; |
|
EM_MREQ <= iem_mreq; |
|
end process proc_next; |
|
VM_STAT <= VM_STAT_L; |
VM_DOUT <= VM_DOUT_L; |
IB_MREQ_M <= IB_MREQ; -- external drive master port |
EM_MREQ <= EM_MREQ_L; |
|
DM_STAT_VM.vmcntl <= VM_CNTL; |
DM_STAT_VM.vmaddr <= VM_ADDR; |
DM_STAT_VM.vmdin <= VM_DIN; |
DM_STAT_VM.vmstat <= VM_STAT_L; |
DM_STAT_VM.vmdout <= VM_DOUT_L; |
|
DM_STAT_VM.ibmreq <= IB_MREQ; |
DM_STAT_VM.ibsres <= IB_SRES; |
DM_STAT_VM.emmreq <= EM_MREQ_L; |
DM_STAT_VM.emsres <= EM_SRES; |
|
end syn; |
/trunk/rtl/w11a/pdp11_sys70.vbom
11,10 → 11,6
pdp11_mem70.vbom |
../ibus/ibd_ibmon.vbom |
../ibus/ib_sres_or_3.vbom |
pdp11_dmscnt.vbom |
pdp11_dmcmon.vbom |
pdp11_dmhbpt.vbom |
../vlib/rbus/rb_sres_or_4.vbom |
[sim]pdp11_tmu_sb.vbom |
# design |
pdp11_sys70.vhd |
/trunk/rtl/w11a/tb/tb_pdp11core_stim.dat
1,8 → 1,7
# $Id: tb_pdp11core_stim.dat 716 2015-12-22 21:44:33Z mueller $ |
# $Id: tb_pdp11core_stim.dat 675 2015-05-08 21:05:08Z mueller $ |
# |
# Revision History: |
# Date Rev Version Comment |
# 2015-12-22 716 2.7 comment out test 20.13 (fails since r708) |
# 2015-05-08 675 2.6 start/stop/suspend overhaul |
# 2014-12-26 621 2.5 adopt wmembe,ribr,wibr emulation to new 4k window |
# 2014-12-20 614 2.4 adopted to rlink v4 |
1562,23 → 1561,23
wm 000000 -- clear CPUERR |
#---------- |
C Exec test 20.13 (red stack abort on 2nd word of interrupt/trap push) |
#wps 000017 -- psw: set all cc flags |
#wsp 000342 -- sp=342 |
#wpc 004724 -- pc=4724 |
#step -- step (iot): abort to 4 [[s:2]] |
#rpc d=000006 -- ! pc=6 (trap 4 catch) |
#rsp d=000000 -- ! sp=0 |
#wal 000336 -- check stack |
#brm 2 |
# d=000000 -- ! mem(336) untainted |
# d=000017 -- ! mem(340) PS of 1st attempt |
#wal 000000 -- check emergency stack at 0,2 |
#brm 2 |
# d=004726 -- ! mem(0): PC |
# d=000000 -- ! mem(2): PS (will be 0, orgininal PS lost !!) |
#wal 177766 -- check CPUERR |
#rm d=000004 -- ! CPUERR: (rsv=1) |
#wm 000000 -- clear CPUERR |
wps 000017 -- psw: set all cc flags |
wsp 000342 -- sp=342 |
wpc 004724 -- pc=4724 |
step -- step (iot): abort to 4 [[s:2]] |
rpc d=000006 -- ! pc=6 (trap 4 catch) |
rsp d=000000 -- ! sp=0 |
wal 000336 -- check stack |
brm 2 |
d=000000 -- ! mem(336) untainted |
d=000017 -- ! mem(340) PS of 1st attempt |
wal 000000 -- check emergency stack at 0,2 |
brm 2 |
d=004726 -- ! mem(0): PC |
d=000000 -- ! mem(2): PS (will be 0, orgininal PS lost !!) |
wal 177766 -- check CPUERR |
rm d=000004 -- ! CPUERR: (rsv=1) |
wm 000000 -- clear CPUERR |
#---------- |
C Exec test 20.14 (yellow stack trap when pushing data to stack; sp=400) |
wps 000017 -- psw: set all cc flags |
/trunk/rtl/w11a/tb/tbd_pdp11core.vhd
1,4 → 1,4
-- $Id: tbd_pdp11core.vhd 712 2015-11-01 22:53:45Z mueller $ |
-- $Id: tbd_pdp11core.vhd 674 2015-05-04 16:17:40Z mueller $ |
-- |
-- Copyright 2007-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
41,8 → 41,6
-- |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-11-01 712 1.6.2 use sbcntl_sbf_tmu |
-- 2015-07-03 697 1.6.1 adapt to new DM_STAT_(SY|VM) |
-- 2015-05-03 674 1.6 start/stop/suspend overhaul |
-- 2011-11-18 427 1.5.1 now numeric_std clean |
-- 2010-12-30 351 1.5 rename tbd_pdp11_core -> tbd_pdp11core |
176,7 → 174,8
ESUSP_O => open, -- not tested |
ESUSP_I => '0', -- dito |
ITIMER => open, -- dito |
HBPT => '0', -- dito |
EBREAK => '0', -- dito |
DBREAK => '0', -- dito |
EI_PRI => EI_PRI, |
EI_VECT => EI_VECT, |
EI_ACKM => EI_ACKM, |
216,12 → 215,15
DISPREG => open |
); |
|
-- synthesis translate_off |
|
DM_STAT_SY.emmreq <= EM_MREQ; |
DM_STAT_SY.emsres <= EM_SRES; |
DM_STAT_SY.chit <= '0'; |
|
-- synthesis translate_off |
|
TMU : pdp11_tmu_sb |
generic map ( |
ENAPIN => sbcntl_sbf_tmu) |
ENAPIN => 13) |
port map ( |
CLK => CLK, |
DM_STAT_DP => DM_STAT_DP, |
/trunk/rtl/w11a/pdp11_core.vhd
1,4 → 1,4
-- $Id: pdp11_core.vhd 702 2015-07-19 17:36:09Z mueller $ |
-- $Id: pdp11_core.vhd 677 2015-05-09 21:52:32Z mueller $ |
-- |
-- Copyright 2006-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
30,9 → 30,6
-- Tool versions: ise 8.2-14.7; viv 2014.4; ghdl 0.18-0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-07-19 702 1.4.2 add DM_STAT_SE port; re-arrange DM_STAT_CO usage |
-- 2015-07-05 697 1.4.1 wire istart,istop,cpustep to DM_STAT_CO |
-- 2015-06-26 695 1.4.1 connect SNUM (current state number) |
-- 2015-05-09 679 1.4 start/stop/suspend overhaul; reset overhaul |
-- 2015-04-30 670 1.3.2 rename pdp11_sys70 -> pdp11_reg70 |
-- 2011-11-18 427 1.3.1 now numeric_std clean |
77,7 → 74,8
ESUSP_O : out slbit; -- external suspend output |
ESUSP_I : in slbit; -- external suspend input |
ITIMER : out slbit; -- instruction timer |
HBPT : in slbit; -- hardware bpt |
EBREAK : in slbit; -- execution break |
DBREAK : in slbit; -- data break |
EI_PRI : in slv3; -- external interrupt priority |
EI_VECT : in slv9_2; -- external interrupt vector |
EI_ACKM : out slbit; -- external interrupt acknowledge |
87,7 → 85,6
BRESET : out slbit; -- bus reset |
IB_MREQ_M : out ib_mreq_type; -- ibus master request (master) |
IB_SRES_M : in ib_sres_type; -- ibus slave response (master) |
DM_STAT_SE : out dm_stat_se_type; -- debug and monitor status - sequencer |
DM_STAT_DP : out dm_stat_dp_type; -- debug and monitor status - dpath |
DM_STAT_VM : out dm_stat_vm_type; -- debug and monitor status - vmbox |
DM_STAT_CO : out dm_stat_co_type -- debug and monitor status - core |
115,7 → 112,6
signal INT_VECT : slv9_2 := (others=>'0'); |
signal CP_STAT_L : cp_stat_type := cp_stat_init; |
signal INT_ACK : slbit := '0'; |
signal SNUM : slv8 := (others=>'0'); |
|
signal IB_SRES_DP : ib_sres_type := ib_sres_init; |
signal IB_SRES_SEQ : ib_sres_type := ib_sres_init; |
198,10 → 194,10
ESUSP_O => ESUSP_O, |
ESUSP_I => ESUSP_I, |
ITIMER => ITIMER, |
HBPT => HBPT, |
EBREAK => EBREAK, |
DBREAK => DBREAK, |
IB_MREQ => IB_MREQ, |
IB_SRES => IB_SRES_SEQ, |
DM_STAT_SE => DM_STAT_SE |
IB_SRES => IB_SRES_SEQ |
); |
|
IRQ : pdp11_irq |
243,7 → 239,6
BRESET <= BRESET_L; |
|
DM_STAT_CO.cpugo <= CP_STAT_L.cpugo; |
DM_STAT_CO.cpustep <= CP_STAT_L.cpustep; |
DM_STAT_CO.cpususp <= CP_STAT_L.cpususp; |
DM_STAT_CO.suspint <= CP_STAT_L.suspint; |
DM_STAT_CO.suspext <= CP_STAT_L.suspext; |
/trunk/rtl/w11a/pdp11_tmu_sb.vhd
1,6 → 1,6
-- $Id: pdp11_tmu_sb.vhd 712 2015-11-01 22:53:45Z mueller $ |
-- $Id: pdp11_tmu_sb.vhd 677 2015-05-09 21:52:32Z mueller $ |
-- |
-- Copyright 2009-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- Copyright 2009- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
-- This program is free software; you may redistribute and/or modify it under |
-- the terms of the GNU General Public License as published by the Free |
20,7 → 20,6
-- Tool versions: xst 8.1-14.7; ghdl 0.18-0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-11-01 712 1.0.1 use sbcntl_sbf_tmu |
-- 2009-05-10 214 1.0 Initial version |
------------------------------------------------------------------------------ |
|
34,7 → 33,7
|
entity pdp11_tmu_sb is -- trace and mon. unit; simbus wrapper |
generic ( |
ENAPIN : integer := sbcntl_sbf_tmu); -- SB_CNTL for tmu |
ENAPIN : integer := 13); -- SB_CNTL signal to use for enable |
port ( |
CLK : in slbit; -- clock |
DM_STAT_DP : in dm_stat_dp_type; -- debug and monitor status - dpath |
/trunk/rtl/w11a/pdp11_sequencer.vhd
1,4 → 1,4
-- $Id: pdp11_sequencer.vhd 708 2015-08-03 06:41:43Z mueller $ |
-- $Id: pdp11_sequencer.vhd 679 2015-05-13 17:38:46Z mueller $ |
-- |
-- Copyright 2006-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
22,11 → 22,6
-- |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-08-02 708 1.6.5 BUGFIX: proper trap_mmu and trap_ysv handling |
-- 2015-08-01 707 1.6.4 set dm_idone in s_(trap_10|op_trap); add dm_vfetch |
-- 2015-07-19 702 1.6.3 add DM_STAT_SE, drop SNUM port |
-- 2015-07-10 700 1.6.2 use c_cpurust_hbpt |
-- 2015-06-26 695 1.6.1 add SNUM (state number) port |
-- 2015-05-10 678 1.6 start/stop/suspend overhaul; reset overhaul |
-- 2015-02-07 643 1.5.2 s_op_wait: load R0 in DSRC for DR emulation |
-- 2014-07-12 569 1.5.1 rename s_opg_div_zero -> s_opg_div_quit; |
102,10 → 97,10
ESUSP_O : out slbit; -- external suspend output |
ESUSP_I : in slbit; -- external suspend input |
ITIMER : out slbit; -- instruction timer |
HBPT : in slbit; -- hardware bpt |
EBREAK : in slbit; -- execution break |
DBREAK : in slbit; -- data break |
IB_MREQ : in ib_mreq_type; -- ibus request |
IB_SRES : out ib_sres_type; -- ibus response |
DM_STAT_SE : out dm_stat_se_type -- debug and monitor status - sequencer |
IB_SRES : out ib_sres_type -- ibus response |
); |
end pdp11_sequencer; |
|
322,7 → 317,7
proc_next: process (R_STATE, R_STATUS, PSW, PC, CP_CNTL, |
ID_STAT, R_IDSTAT, IREG, VM_STAT, DP_STAT, |
R_CPUERR, R_VMSTAT, IB_MREQ, IBSEL_CPUERR, |
INT_PRI, INT_VECT, ESUSP_I, HBPT) |
INT_PRI, INT_VECT, ESUSP_I, EBREAK, DBREAK) |
|
variable nstate : state_type; |
variable nstatus : cpustat_type := cpustat_init; |
346,9 → 341,6
variable is_dstkstack1246 : slbit := '0'; -- dest is k-stack & mode= 1,2,4,6 |
|
variable int_pending : slbit := '0'; -- an interrupt is pending |
|
variable idm_idone : slbit := '0'; -- idone for dm_stat_se |
variable idm_vfetch : slbit := '0'; -- vfetch for dm_stat_se |
|
alias SRCMOD : slv2 is IREG(11 downto 10); -- src register mode high |
alias SRCDEF : slbit is IREG(9); -- src register mode defered |
432,14 → 424,10
mok := false; |
if VM_STAT.ack = '1' then |
mok := true; |
if VM_STAT.trap_mmu = '1' then -- remember trap_mmu, may happen on any |
nstatus.trap_mmu := '1'; -- memory access of an instruction |
nstatus.trap_mmu := VM_STAT.trap_mmu; |
if R_CPUERR.ysv = '0' then -- ysv trap when cpuerr not yet set |
nstatus.trap_ysv := VM_STAT.trap_ysv; |
end if; |
if VM_STAT.trap_ysv = '1' then -- remember trap_ysv (on any access) |
if R_CPUERR.ysv = '0' then -- ysv trap when cpuerr not yet set |
nstatus.trap_ysv := '1'; |
end if; |
end if; |
elsif VM_STAT.err='1' or VM_STAT.fail='1' then |
nstate := s_vmerr; |
end if; |
595,9 → 583,6
if unsigned(INT_PRI) > unsigned(PSW.pri) then |
int_pending := '1'; |
end if; |
|
idm_idone := '0'; |
idm_vfetch := '0'; |
|
imemok := false; |
|
1312,8 → 1297,7
nstate := s_dstw_def_w; |
do_memcheck(nstate, nstatus, imemok); |
if imemok then |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
end if; |
|
when s_dstw_inc => |
1353,8 → 1337,7
nstatus.do_gprwe := '0'; |
do_memcheck(nstate, nstatus, imemok); |
if imemok then |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
end if; |
|
when s_dstw_incdef_w => |
1527,7 → 1510,6
-- instruction operate states ----------------------------------------------- |
|
when s_op_halt => -- HALT |
idm_idone := '1'; -- instruction done |
if is_kmode = '1' then -- if in kernel mode execute |
nmmumoni.idone := '1'; |
nstatus.cpugo := '0'; |
1558,7 → 1540,6
end if; |
|
when s_op_trap => -- traps |
idm_idone := '1'; -- instruction done |
lvector := "0000" & R_IDSTAT.trap_vec; -- vector |
do_start_int(nstate, ndpcntl, lvector); |
|
1587,14 → 1568,12
do_memcheck(nstate, nstatus, imemok); |
if imemok then |
ndpcntl.gpr_we := '1'; -- load R with (SP)+ |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
end if; |
|
when s_op_spl => -- SPL |
ndpcntl.dres_sel := c_dpath_res_ireg; -- DRES = IREG |
ndpcntl.psr_func := c_psr_func_wspl; |
idm_idone := '1'; -- instruction done |
if is_kmode = '1' then -- active only in kernel mode |
ndpcntl.psr_we := '1'; |
nstate := s_ifetch; -- unconditionally fetch next |
1608,8 → 1587,7
ndpcntl.dres_sel := c_dpath_res_ireg; -- DRES = IREG |
ndpcntl.psr_func := c_psr_func_wcc; |
ndpcntl.psr_we := '1'; |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
|
when s_op_br => -- BR |
nvmcntl.dspace := '0'; -- prepare do_fork_next_pref |
1639,7 → 1617,6
end case; |
|
ndpcntl.gpr_adst := c_gpr_pc; |
idm_idone := '1'; -- instruction done |
if brcond = brcode(0) then -- this coding creates redundant code |
ndpcntl.gpr_we := '1'; -- but synthesis optimizes this way ! |
do_fork_next(nstate, nstatus, nmmumoni); |
1677,8 → 1654,7
do_memcheck(nstate, nstatus, imemok); |
if imemok then |
ndpcntl.gpr_we := '1'; -- load R5 with (sp)+ |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
end if; |
|
when s_op_sob => -- SOB (dec) |
1689,12 → 1665,11
ndpcntl.gpr_adst := SRCREG; |
ndpcntl.gpr_we := '1'; |
|
if DP_STAT.ccout_z = '0' then -- if z=0 branch, if z=1 fall thru |
if DP_STAT.ccout_z = '0' then -- if z=0 branch, if z=1 fall thru |
nstate := s_op_sob1; |
else |
--do_fork_next_pref(nstate, ndpcntl, nvmcntl, nmmumoni); |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
end if; |
|
when s_op_sob1 => -- SOB (br) |
1704,8 → 1679,7
ndpcntl.dres_sel := c_dpath_res_ounit; -- DRES = OUNIT |
ndpcntl.gpr_adst := c_gpr_pc; |
ndpcntl.gpr_we := '1'; |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
|
when s_opg_gen => |
nvmcntl.dspace := '0'; -- prepare do_fork_next_pref |
1726,7 → 1700,6
if R_IDSTAT.is_rmwop = '1' then |
do_memwrite(nstate, nvmcntl, s_opg_gen_rmw_w, macc=>'1'); |
else |
idm_idone := '1'; -- instruction done |
if R_STATUS.prefdone = '1' then |
nstatus.prefdone :='0'; |
nstate := s_ifetch_w; |
1748,8 → 1721,7
nstate := s_opg_gen_rmw_w; |
do_memcheck(nstate, nstatus, imemok); |
if imemok then |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
end if; |
|
when s_opg_mul => -- MUL (oper) |
1769,8 → 1741,7
ndpcntl.gpr_adst := SRCREG(2 downto 1) & "1";-- write odd reg ! |
ndpcntl.gpr_we := '1'; |
ndpcntl.psr_ccwe := '1'; |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
|
when s_opg_div => -- DIV (load dd_low) |
ndpcntl.munit_s_div := '1'; |
1824,14 → 1795,12
if DP_STAT.div_quit = '1' then |
nstate := s_opg_div_quit; |
else |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
end if; |
|
when s_opg_div_quit => -- DIV (0/ or /0 or V=1 aborts) |
ndpcntl.psr_ccwe := '1'; |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
|
when s_opg_ash => -- ASH (load shc) |
ndpcntl.munit_s_ash := '1'; |
1853,7 → 1822,6
ndpcntl.dres_sel := c_dpath_res_ounit; -- DRES = OUNIT |
ndpcntl.gpr_we := '1'; |
ndpcntl.psr_ccwe := '1'; |
idm_idone := '1'; -- instruction done |
do_fork_next_pref(nstate, nstatus, ndpcntl, nvmcntl, nmmumoni); |
end if; |
|
1889,8 → 1857,7
ndpcntl.dres_sel := c_dpath_res_ounit; -- DRES = OUNIT |
ndpcntl.gpr_adst := SRCREG(2 downto 1) & "1";-- write odd reg ! |
ndpcntl.gpr_we := '1'; |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
|
-- dsta mode operations ----------------------------------------------------- |
|
1951,8 → 1918,7
ndpcntl.dres_sel := c_dpath_res_ounit; -- DRES = OUNIT |
ndpcntl.gpr_adst := c_gpr_pc; |
ndpcntl.gpr_we := '1'; -- load PC with dsta |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
|
when s_opa_jmp => |
ndpcntl.ounit_asel := c_ounit_asel_ddst; -- OUNIT A=DDST |
1963,8 → 1929,7
nstate := s_trap_10; -- trap 10 like 11/70 |
else |
ndpcntl.gpr_we := '1'; -- load PC with dsta |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
end if; |
|
when s_opa_mtp => |
2000,8 → 1965,7
ndpcntl.psr_ccwe := '1'; -- set cc (from ounit too) |
ndpcntl.gpr_mode := PSW.pmode; -- load reg in pmode |
ndpcntl.gpr_we := '1'; |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
|
when s_opa_mtp_mem => |
ndpcntl.ounit_asel := c_ounit_asel_dtmp; -- OUNIT A = DTMP |
2019,8 → 1983,7
nstate := s_opa_mtp_mem_w; |
do_memcheck(nstate, nstatus, imemok); |
if imemok then |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
end if; |
|
when s_opa_mfp_reg => |
2081,8 → 2044,7
nstate := s_opa_mfp_push_w; |
do_memcheck(nstate, nstatus, imemok); |
if imemok then |
idm_idone := '1'; -- instruction done |
do_fork_next(nstate, nstatus, nmmumoni); -- fetch next |
do_fork_next(nstate, nstatus, nmmumoni); |
end if; |
|
-- trap and interrupt handling states --------------------------------------- |
2092,7 → 2054,6
do_start_int(nstate, ndpcntl, lvector); |
|
when s_trap_10 => |
idm_idone := '1'; -- instruction done |
lvector := "0000010"; -- vector (10) |
do_start_int(nstate, ndpcntl, lvector); |
|
2115,7 → 2076,6
do_start_int(nstate, ndpcntl, lvector); |
|
when s_int_getpc => |
idm_vfetch := '1'; -- signal vfetch |
nvmcntl.mode := c_psw_kmode; -- fetch PC from kernel D space |
do_memread_srcinc(nstate, ndpcntl, nvmcntl, s_int_getpc_w, nmmumoni); |
|
2263,9 → 2223,8
ndpcntl.dres_sel := c_dpath_res_ounit; -- DRES = OUNIT |
ndpcntl.gpr_adst := c_gpr_pc; |
ndpcntl.gpr_we := '1'; -- load new PC |
idm_idone := '1'; -- instruction done |
if R_IDSTAT.op_rtt = '1' then -- if RTT instruction |
nstate := s_ifetch; -- force fetch |
nstate := s_ifetch; -- force fetch |
else -- otherwise RTI |
do_fork_next(nstate, nstatus, nmmumoni); |
end if; |
2336,8 → 2295,7
|
end case; |
|
if HBPT = '1' then -- handle hardware bpt |
nstatus.cpurust := c_cpurust_hbpt; |
if DBREAK = '1' then -- handle BREAK |
nstatus.suspint :='1'; |
end if; |
nstatus.suspext := ESUSP_I; |
2372,11 → 2330,7
nmmumoni.regnum := ndpcntl.gpr_adst; |
nmmumoni.delta := ndpcntl.ounit_const(3 downto 0); |
MMU_MONI <= nmmumoni; |
|
DM_STAT_SE.istart <= nmmumoni.istart; |
DM_STAT_SE.idone <= idm_idone; |
DM_STAT_SE.vfetch <= idm_vfetch; |
|
|
end process proc_next; |
|
proc_cpstat : process (R_STATUS) |
2394,144 → 2348,6
CP_STAT.suspint <= R_STATUS.suspint; |
CP_STAT.suspext <= R_STATUS.suspext; |
end process proc_cpstat; |
|
proc_snum : process (R_STATE) |
variable isnum : slv8 := (others=>'0'); |
begin |
isnum := (others=>'0'); |
case R_STATE is |
-- STATE2SNUM mapper begin |
when s_idle => isnum := x"00"; |
when s_cp_regread => isnum := x"01"; |
when s_cp_rps => isnum := x"02"; |
when s_cp_memr_w => isnum := x"03"; |
when s_cp_memw_w => isnum := x"04"; |
when s_ifetch => isnum := x"05"; |
when s_ifetch_w => isnum := x"06"; |
when s_idecode => isnum := x"07"; |
|
when s_srcr_def => isnum := x"08"; |
when s_srcr_def_w => isnum := x"09"; |
when s_srcr_inc => isnum := x"0a"; |
when s_srcr_inc_w => isnum := x"0b"; |
when s_srcr_dec => isnum := x"0c"; |
when s_srcr_dec1 => isnum := x"0d"; |
when s_srcr_ind => isnum := x"0e"; |
when s_srcr_ind1_w => isnum := x"0f"; |
when s_srcr_ind2 => isnum := x"10"; |
when s_srcr_ind2_w => isnum := x"11"; |
|
when s_dstr_def => isnum := x"12"; |
when s_dstr_def_w => isnum := x"13"; |
when s_dstr_inc => isnum := x"14"; |
when s_dstr_inc_w => isnum := x"15"; |
when s_dstr_dec => isnum := x"16"; |
when s_dstr_dec1 => isnum := x"17"; |
when s_dstr_ind => isnum := x"18"; |
when s_dstr_ind1_w => isnum := x"19"; |
when s_dstr_ind2 => isnum := x"1a"; |
when s_dstr_ind2_w => isnum := x"1b"; |
|
when s_dstw_def => isnum := x"1c"; |
when s_dstw_def_w => isnum := x"1d"; |
when s_dstw_inc => isnum := x"1e"; |
when s_dstw_inc_w => isnum := x"1f"; |
when s_dstw_incdef_w => isnum := x"20"; |
when s_dstw_dec => isnum := x"21"; |
when s_dstw_dec1 => isnum := x"22"; |
when s_dstw_ind => isnum := x"23"; |
when s_dstw_ind_w => isnum := x"24"; |
when s_dstw_def246 => isnum := x"25"; |
|
when s_dsta_inc => isnum := x"26"; |
when s_dsta_incdef_w => isnum := x"27"; |
when s_dsta_dec => isnum := x"28"; |
when s_dsta_dec1 => isnum := x"29"; |
when s_dsta_ind => isnum := x"2a"; |
when s_dsta_ind_w => isnum := x"2b"; |
|
when s_op_halt => isnum := x"2c"; |
when s_op_wait => isnum := x"2d"; |
when s_op_trap => isnum := x"2e"; |
when s_op_reset => isnum := x"2f"; |
when s_op_rts => isnum := x"30"; |
when s_op_rts_pop => isnum := x"31"; |
when s_op_rts_pop_w => isnum := x"32"; |
when s_op_spl => isnum := x"33"; |
when s_op_mcc => isnum := x"34"; |
when s_op_br => isnum := x"35"; |
when s_op_mark => isnum := x"36"; |
when s_op_mark1 => isnum := x"37"; |
when s_op_mark_pop => isnum := x"38"; |
when s_op_mark_pop_w => isnum := x"39"; |
when s_op_sob => isnum := x"3a"; |
when s_op_sob1 => isnum := x"3b"; |
|
when s_opg_gen => isnum := x"3c"; |
when s_opg_gen_rmw_w => isnum := x"3d"; |
when s_opg_mul => isnum := x"3e"; |
when s_opg_mul1 => isnum := x"3f"; |
when s_opg_div => isnum := x"40"; |
when s_opg_div_cn => isnum := x"41"; |
when s_opg_div_cr => isnum := x"42"; |
when s_opg_div_sq => isnum := x"43"; |
when s_opg_div_sr => isnum := x"44"; |
when s_opg_div_quit => isnum := x"45"; |
when s_opg_ash => isnum := x"46"; |
when s_opg_ash_cn => isnum := x"47"; |
when s_opg_ashc => isnum := x"48"; |
when s_opg_ashc_cn => isnum := x"49"; |
when s_opg_ashc_wl => isnum := x"4a"; |
|
when s_opa_jsr => isnum := x"4b"; |
when s_opa_jsr1 => isnum := x"4c"; |
when s_opa_jsr_push => isnum := x"4d"; |
when s_opa_jsr_push_w => isnum := x"4e"; |
when s_opa_jsr2 => isnum := x"4f"; |
when s_opa_jmp => isnum := x"50"; |
when s_opa_mtp => isnum := x"51"; |
when s_opa_mtp_pop_w => isnum := x"52"; |
when s_opa_mtp_reg => isnum := x"53"; |
when s_opa_mtp_mem => isnum := x"54"; |
when s_opa_mtp_mem_w => isnum := x"55"; |
when s_opa_mfp_reg => isnum := x"56"; |
when s_opa_mfp_mem => isnum := x"57"; |
when s_opa_mfp_mem_w => isnum := x"58"; |
when s_opa_mfp_dec => isnum := x"59"; |
when s_opa_mfp_push => isnum := x"5a"; |
when s_opa_mfp_push_w => isnum := x"5b"; |
|
when s_trap_4 => isnum := x"5c"; |
when s_trap_10 => isnum := x"5d"; |
when s_trap_disp => isnum := x"5e"; |
|
when s_int_ext => isnum := x"5f"; |
|
when s_int_getpc => isnum := x"60"; |
when s_int_getpc_w => isnum := x"61"; |
when s_int_getps => isnum := x"62"; |
when s_int_getps_w => isnum := x"63"; |
when s_int_getsp => isnum := x"64"; |
when s_int_decsp => isnum := x"65"; |
when s_int_pushps => isnum := x"66"; |
when s_int_pushps_w => isnum := x"67"; |
when s_int_pushpc => isnum := x"68"; |
when s_int_pushpc_w => isnum := x"69"; |
|
when s_rti_getpc => isnum := x"6a"; |
when s_rti_getpc_w => isnum := x"6b"; |
when s_rti_getps => isnum := x"6c"; |
when s_rti_getps_w => isnum := x"6d"; |
when s_rti_newpc => isnum := x"6e"; |
|
when s_vmerr => isnum := x"6f"; |
when s_cpufail => isnum := x"70"; |
|
-- STATE2SNUM mapper end |
when others => isnum := x"ff"; |
end case; |
DM_STAT_SE.snum <= isnum; |
end process proc_snum; |
|
|
end syn; |
|
/trunk/rtl/w11a/pdp11_tmu.vhd
1,4 → 1,4
-- $Id: pdp11_tmu.vhd 697 2015-07-05 14:23:26Z mueller $ |
-- $Id: pdp11_tmu.vhd 677 2015-05-09 21:52:32Z mueller $ |
-- |
-- Copyright 2008-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
23,7 → 23,6
-- |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-07-03 697 1.2.1 adapt to new DM_STAT_SY/DM_STAT_VM |
-- 2015-05-03 674 1.2 start/stop/suspend overhaul |
-- 2011-12-23 444 1.1 use local clkcycle count instead of simbus global |
-- 2011-11-18 427 1.0.7 now numeric_std clean |
86,7 → 85,6
|
if R_FIRST = '1' then |
R_FIRST <= '0'; |
-- sequence of field desciptors must equal the sequence of writes later |
write(oline, string'("#")); |
write(oline, string'(" clkcycle:d")); |
write(oline, string'(" cpu:o")); |
117,15 → 115,6
write(oline, string'(" vm.ibsres.ack:b")); |
write(oline, string'(" vm.ibsres.busy:b")); |
write(oline, string'(" vm.ibsres.dout:o")); |
write(oline, string'(" vm.emmreq.req:b")); |
write(oline, string'(" vm.emmreq.we:b")); |
write(oline, string'(" vm.emmreq.be:b")); |
write(oline, string'(" vm.emmreq.cancel:b")); |
write(oline, string'(" vm.emmreq.addr:o")); |
write(oline, string'(" vm.emmreq.din:o")); |
write(oline, string'(" vm.emsres.ack_r:b")); |
write(oline, string'(" vm.emsres.ack_w:b")); |
write(oline, string'(" vm.emsres.dout:o")); |
|
write(oline, string'(" co.cpugo:b")); |
write(oline, string'(" co.cpususp:b")); |
132,6 → 121,15
write(oline, string'(" co.suspint:b")); |
write(oline, string'(" co.suspext:b")); |
|
write(oline, string'(" sy.emmreq.req:b")); |
write(oline, string'(" sy.emmreq.we:b")); |
write(oline, string'(" sy.emmreq.be:b")); |
write(oline, string'(" sy.emmreq.cancel:b")); |
write(oline, string'(" sy.emmreq.addr:o")); |
write(oline, string'(" sy.emmreq.din:o")); |
write(oline, string'(" sy.emsres.ack_r:b")); |
write(oline, string'(" sy.emsres.ack_w:b")); |
write(oline, string'(" sy.emsres.dout:o")); |
write(oline, string'(" sy.chit:b")); |
|
writeline(ofile, oline); |
149,15 → 147,15
ibaddr(DM_STAT_VM.ibmreq.addr'range) := DM_STAT_VM.ibmreq.addr; |
|
emaddr := (others=>'0'); |
emaddr(DM_STAT_VM.emmreq.addr'range) := DM_STAT_VM.emmreq.addr; |
emaddr(DM_STAT_SY.emmreq.addr'range) := DM_STAT_SY.emmreq.addr; |
|
wcycle := false; |
if dp_ireg_we_last='1' or |
DM_STAT_DP.gpr_we='1' or |
DM_STAT_VM.emmreq.req='1' or |
DM_STAT_VM.emsres.ack_r='1' or |
DM_STAT_VM.emsres.ack_w='1' or |
DM_STAT_VM.emmreq.cancel='1' or |
DM_STAT_SY.emmreq.req='1' or |
DM_STAT_SY.emsres.ack_r='1' or |
DM_STAT_SY.emsres.ack_w='1' or |
DM_STAT_SY.emmreq.cancel='1' or |
DM_STAT_VM.ibmreq.re='1' or |
DM_STAT_VM.ibmreq.we='1' or |
DM_STAT_VM.ibsres.ack='1' |
176,7 → 174,6
end if; |
|
if wcycle then |
-- sequence of writes must equal the sequence of field desciptors above |
write(oline, clkcycle, right, 9); |
write(oline, string'(" 0")); |
writeoct(oline, DM_STAT_DP.pc, right, 7); |
207,21 → 204,20
write(oline, DM_STAT_VM.ibsres.busy, right, 2); |
writeoct(oline, DM_STAT_VM.ibsres.dout, right, 7); |
|
write(oline, DM_STAT_VM.emmreq.req, right, 2); |
write(oline, DM_STAT_VM.emmreq.we, right, 2); |
write(oline, DM_STAT_VM.emmreq.be, right, 3); |
write(oline, DM_STAT_VM.emmreq.cancel, right, 2); |
writeoct(oline, emaddr, right, 9); |
writeoct(oline, DM_STAT_VM.emmreq.din, right, 7); |
write(oline, DM_STAT_VM.emsres.ack_r, right, 2); |
write(oline, DM_STAT_VM.emsres.ack_w, right, 2); |
writeoct(oline, DM_STAT_VM.emsres.dout, right, 7); |
|
write(oline, DM_STAT_CO.cpugo, right, 2); |
write(oline, DM_STAT_CO.cpususp, right, 2); |
write(oline, DM_STAT_CO.suspint, right, 2); |
write(oline, DM_STAT_CO.suspext, right, 2); |
|
|
write(oline, DM_STAT_SY.emmreq.req, right, 2); |
write(oline, DM_STAT_SY.emmreq.we, right, 2); |
write(oline, DM_STAT_SY.emmreq.be, right, 3); |
write(oline, DM_STAT_SY.emmreq.cancel, right, 2); |
writeoct(oline, emaddr, right, 9); |
writeoct(oline, DM_STAT_SY.emmreq.din, right, 7); |
write(oline, DM_STAT_SY.emsres.ack_r, right, 2); |
write(oline, DM_STAT_SY.emsres.ack_w, right, 2); |
writeoct(oline, DM_STAT_SY.emsres.dout, right, 7); |
write(oline, DM_STAT_SY.chit, right, 2); |
|
writeline(ofile, oline); |
/trunk/rtl/w11a/sys_conf.vhd
1,4 → 1,4
-- $Id: sys_conf.vhd 695 2015-06-28 11:22:52Z mueller $ |
-- $Id: sys_conf.vhd 672 2015-05-02 21:58:28Z mueller $ |
-- |
-- Copyright 2007-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
19,7 → 19,6
-- Tool versions: xst 8.1-14.7; viv 2014.4; ghdl 0.18-0.31 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-06-26 695 1.1.1 add sys_conf_dmscnt |
-- 2015-05-01 672 1.1 adopt to pdp11_sys70 |
-- 2008-02-23 118 1.0 Initial version |
------------------------------------------------------------------------------ |
37,7 → 36,6
constant sys_conf_mem_losize : integer := 8#000777#;-- 32 kByte |
|
constant sys_conf_ibmon_awidth : integer := 9; -- use 0 to disable ibmon |
constant sys_conf_dmscnt : boolean := true; |
|
end package sys_conf; |
|
/trunk/rtl/w11a/pdp11.vhd
1,4 → 1,4
-- $Id: pdp11.vhd 712 2015-11-01 22:53:45Z mueller $ |
-- $Id: pdp11.vhd 677 2015-05-09 21:52:32Z mueller $ |
-- |
-- Copyright 2006-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
20,11 → 20,6
-- |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-11-01 712 1.6.5 define sbcntl_sbf_tmu := 12; use for pdp11_tmu_sb |
-- 2015-07-19 702 1.6.4 change DM_STAT_(DP|CO); add DM_STAT_SE |
-- 2015-07-10 700 1.6.3 define c_cpurust_hbpt; |
-- 2015-07-04 697 1.6.2 add pdp11_dm(hbpt|cmon); change DM_STAT_(SY|VM|CO) |
-- 2015-06-26 695 1.6.1 add pdp11_dmscnt (add support) |
-- 2015-05-09 677 1.6 start/stop/suspend overhaul; reset overhaul |
-- 2015-05-01 672 1.5.5 add pdp11_sys70, sys_hio70 |
-- 2015-04-30 670 1.5.4 rename pdp11_sys70 -> pdp11_reg70 |
338,7 → 333,6
constant c_cpurust_stop : slv4 := "0011"; -- cpu was stopped |
constant c_cpurust_step : slv4 := "0100"; -- cpu was stepped |
constant c_cpurust_susp : slv4 := "0101"; -- cpu was suspended |
constant c_cpurust_hbpt : slv4 := "0110"; -- cpu had hardware bpt |
constant c_cpurust_runs : slv4 := "0111"; -- cpu running |
constant c_cpurust_vecfet : slv4 := "1000"; -- vector fetch error halt |
constant c_cpurust_recrsv : slv4 := "1001"; -- recursive red-stack halt |
601,32 → 595,22
|
-- debug and monitoring port definitions ------------------------------------- |
|
type dm_stat_se_type is record -- debug and monitor status - sequencer |
istart : slbit; -- instruction start |
idone : slbit; -- instruction done |
vfetch : slbit; -- vector fetch |
snum : slv8; -- current state number |
end record dm_stat_se_type; |
type dm_cntl_type is record -- debug and monitor control |
dum1 : slbit; -- dummy 1 |
dum2 : slbit; -- dummy 2 |
end record dm_cntl_type; |
|
constant dm_stat_se_init : dm_stat_se_type := ( |
'0','0','0', -- istart,idone,vfetch |
(others=>'0') -- snum |
); |
|
constant dm_cntl_init : dm_cntl_type := (others=>'0'); |
|
type dm_stat_dp_type is record -- debug and monitor status - dpath |
pc : slv16; -- pc |
psw : psw_type; -- psw |
psr_we: slbit; -- psr_we |
ireg : slv16; -- ireg |
ireg_we : slbit; -- ireg we |
dsrc : slv16; -- dsrc register |
dsrc_we: slbit; -- dsrc we |
ddst : slv16; -- ddst register |
ddst_we : slbit; -- ddst we |
dtmp : slv16; -- dtmp register |
dtmp_we : slbit; -- dtmp we |
dres : slv16; -- dres bus |
cpdout_we : slbit; -- cpdout we |
gpr_adst : slv3; -- gpr dst regsiter |
gpr_mode : slv2; -- gpr mode |
gpr_bytop : slbit; -- gpr bytop |
635,44 → 619,23
|
constant dm_stat_dp_init : dm_stat_dp_type := ( |
(others=>'0'), -- pc |
psw_init,'0', -- psw,psr_we |
(others=>'0'),'0', -- ireg,ireg_we |
(others=>'0'),'0', -- dsrc,dsrc_we |
(others=>'0'),'0', -- ddst,ddst_we |
(others=>'0'),'0', -- dtmp,dtmp_we |
(others=>'0'), -- dres |
'0', -- cpdout_we |
psw_init, -- psw |
(others=>'0'),'0', -- ireg, ireg_we |
(others=>'0'),(others=>'0'), -- dsrc, ddst |
(others=>'0'),(others=>'0'), -- dtmp, dres |
(others=>'0'),(others=>'0'), -- gpr_adst, gpr_mode |
'0','0' -- gpr_bytop, gpr_we |
); |
|
type dm_stat_vm_type is record -- debug and monitor status - vmbox |
vmcntl : vm_cntl_type; -- vmbox: control |
vmaddr : slv16; -- vmbox: address |
vmdin : slv16; -- vmbox: data in |
vmstat : vm_stat_type; -- vmbox: status |
vmdout : slv16; -- vmbox: data out |
ibmreq : ib_mreq_type; -- ibus: request |
ibsres : ib_sres_type; -- ibus: response |
emmreq : em_mreq_type; -- external memory: request |
emsres : em_sres_type; -- external memory: response |
ibmreq : ib_mreq_type; -- ibus master request |
ibsres : ib_sres_type; -- ibus slave response |
end record dm_stat_vm_type; |
|
constant dm_stat_vm_init : dm_stat_vm_type := ( |
vm_cntl_init, -- vmcntl |
(others=>'0'), -- vmaddr |
(others=>'0'), -- vmdin |
vm_stat_init, -- vmstat |
(others=>'0'), -- vmdout |
ib_mreq_init, -- ibmreq |
ib_sres_init, -- ibsres |
em_mreq_init, -- emmreq |
em_sres_init -- emsres |
); |
constant dm_stat_vm_init : dm_stat_vm_type := (ib_mreq_init,ib_sres_init); |
|
type dm_stat_co_type is record -- debug and monitor status - core |
cpugo : slbit; -- cpugo state flag |
cpustep : slbit; -- cpustep state flag |
cpususp : slbit; -- cpususp state flag |
suspint : slbit; -- suspint state flag |
suspext : slbit; -- suspext state flag |
679,18 → 642,20
end record dm_stat_co_type; |
|
constant dm_stat_co_init : dm_stat_co_type := ( |
'0','0','0', -- cpu... |
'0','0', -- cpu... |
'0','0' -- susp... |
); |
|
type dm_stat_sy_type is record -- debug and monitor status - system |
emmreq : em_mreq_type; -- external memory: request |
emsres : em_sres_type; -- external memory: response |
chit : slbit; -- cache hit |
dummy : slbit; -- ... sorry records must have two ... |
end record dm_stat_sy_type; |
|
constant dm_stat_sy_init : dm_stat_sy_type := ( |
'0', -- chit |
'0' |
em_mreq_init, -- emmreq |
em_sres_init, -- emsres |
'0' -- chit |
); |
|
-- rbus interface definitions ------------------------------------------------ |
1001,10 → 966,10
ESUSP_O : out slbit; -- external suspend output |
ESUSP_I : in slbit; -- external suspend input |
ITIMER : out slbit; -- instruction timer |
HBPT : in slbit; -- hardware bpt |
EBREAK : in slbit; -- execution break |
DBREAK : in slbit; -- data break |
IB_MREQ : in ib_mreq_type; -- ibus request |
IB_SRES : out ib_sres_type; -- ibus response |
DM_STAT_SE : out dm_stat_se_type -- debug and monitor status - sequencer |
IB_SRES : out ib_sres_type -- ibus response |
); |
end component; |
|
1086,7 → 1051,8
ESUSP_O : out slbit; -- external suspend output |
ESUSP_I : in slbit; -- external suspend input |
ITIMER : out slbit; -- instruction timer |
HBPT : in slbit; -- hardware bpt |
EBREAK : in slbit; -- execution break |
DBREAK : in slbit; -- data break |
EI_PRI : in slv3; -- external interrupt priority |
EI_VECT : in slv9_2; -- external interrupt vector |
EI_ACKM : out slbit; -- external interrupt acknowledge |
1096,7 → 1062,6
BRESET : out slbit; -- bus reset |
IB_MREQ_M : out ib_mreq_type; -- ibus master request (master) |
IB_SRES_M : in ib_sres_type; -- ibus slave response (master) |
DM_STAT_SE : out dm_stat_se_type; -- debug and monitor status - sequencer |
DM_STAT_DP : out dm_stat_dp_type; -- debug and monitor status - dpath |
DM_STAT_VM : out dm_stat_vm_type; -- debug and monitor status - vmbox |
DM_STAT_CO : out dm_stat_co_type -- debug and monitor status - core |
1114,13 → 1079,9
); |
end component; |
|
-- this definition logically belongs into a 'for test benches' section' |
-- it is here for convenience to simplify instantiations. |
constant sbcntl_sbf_tmu : integer := 12; |
|
component pdp11_tmu_sb is -- trace and mon. unit; simbus wrapper |
generic ( |
ENAPIN : integer := sbcntl_sbf_tmu); -- SB_CNTL for tmu |
ENAPIN : integer := 13); -- SB_CNTL signal to use for enable |
port ( |
CLK : in slbit; -- clock |
DM_STAT_DP : in dm_stat_dp_type; -- debug and monitor status - dpath |
1282,70 → 1243,6
); |
end component; |
|
component pdp11_dmscnt is -- debug&moni: state counter |
generic ( |
RB_ADDR : slv16 := slv(to_unsigned(16#0040#,16))); |
port ( |
CLK : in slbit; -- clock |
RESET : in slbit; -- reset |
RB_MREQ : in rb_mreq_type; -- rbus: request |
RB_SRES : out rb_sres_type; -- rbus: response |
DM_STAT_SE : in dm_stat_se_type; -- debug and monitor status - sequencer |
DM_STAT_DP : in dm_stat_dp_type; -- debug and monitor status - data path |
DM_STAT_CO : in dm_stat_co_type -- debug and monitor status - core |
); |
end component; |
|
component pdp11_dmcmon is -- debug&moni: cpu monitor |
generic ( |
RB_ADDR : slv16 := slv(to_unsigned(16#0048#,16)); |
AWIDTH : natural := 8); |
port ( |
CLK : in slbit; -- clock |
RESET : in slbit; -- reset |
RB_MREQ : in rb_mreq_type; -- rbus: request |
RB_SRES : out rb_sres_type; -- rbus: response |
DM_STAT_SE : in dm_stat_se_type; -- debug and monitor status - sequencer |
DM_STAT_DP : in dm_stat_dp_type; -- debug and monitor status - data path |
DM_STAT_VM : in dm_stat_vm_type; -- debug and monitor status - vmbox |
DM_STAT_CO : in dm_stat_co_type -- debug and monitor status - core |
); |
end component; |
|
component pdp11_dmhbpt is -- debug&moni: hardware breakpoint |
generic ( |
RB_ADDR : slv16 := slv(to_unsigned(16#0050#,16)); |
NUNIT : natural := 2); |
port ( |
CLK : in slbit; -- clock |
RESET : in slbit; -- reset |
RB_MREQ : in rb_mreq_type; -- rbus: request |
RB_SRES : out rb_sres_type; -- rbus: response |
DM_STAT_SE : in dm_stat_se_type; -- debug and monitor status - sequencer |
DM_STAT_DP : in dm_stat_dp_type; -- debug and monitor status - data path |
DM_STAT_VM : in dm_stat_vm_type; -- debug and monitor status - vmbox |
DM_STAT_CO : in dm_stat_co_type; -- debug and monitor status - core |
HBPT : out slbit -- hw break flag |
); |
end component; |
|
component pdp11_dmhbpt_unit is -- dmhbpt - indivitial unit |
generic ( |
RB_ADDR : slv16 := slv(to_unsigned(16#0050#,16)); |
INDEX : natural := 0); |
port ( |
CLK : in slbit; -- clock |
RESET : in slbit; -- reset |
RB_MREQ : in rb_mreq_type; -- rbus: request |
RB_SRES : out rb_sres_type; -- rbus: response |
DM_STAT_SE : in dm_stat_se_type; -- debug and monitor status - sequencer |
DM_STAT_DP : in dm_stat_dp_type; -- debug and monitor status - data path |
DM_STAT_VM : in dm_stat_vm_type; -- debug and monitor status - vmbox |
DM_STAT_CO : in dm_stat_co_type; -- debug and monitor status - core |
HBPT : out slbit -- hw break flag |
); |
end component; |
|
-- ----- move later to pdp11_conf -------------------------------------------- |
|
constant conf_vect_pirq : integer := 8#240#; |
/trunk/rtl/w11a/pdp11_sys70.vhd
1,4 → 1,4
-- $Id: pdp11_sys70.vhd 712 2015-11-01 22:53:45Z mueller $ |
-- $Id: pdp11_sys70.vhd 677 2015-05-09 21:52:32Z mueller $ |
-- |
-- Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
21,8 → 21,6
-- w11a/pdp11_mem70 |
-- ibus/ibd_ibmon |
-- ibus/ib_sres_or_3 |
-- w11a/pdp11_dmscnt |
-- rbus/rb_sres_or_4 |
-- w11a/pdp11_tmu_sb [sim only] |
-- |
-- Test bench: tb/tb_pdp11_core (implicit) |
31,10 → 29,6
-- |
-- Revision History: |
-- Date Rev Version Comment |
-- 2015-11-01 712 1.1.4 use sbcntl_sbf_tmu |
-- 2015-07-19 702 1.1.3 use DM_STAT_SE |
-- 2015-07-04 697 1.1.2 change DM_STAT_SY setup; add dmcmon, dmhbpt; |
-- 2015-06-26 695 1.1.1 add pdp11_dmscnt support |
-- 2015-05-09 677 1.1 start/stop/suspend overhaul; reset overhaul |
-- 2015-05-01 672 1.0 Initial version (extracted from sys_w11a_*) |
------------------------------------------------------------------------------ |
83,10 → 77,7
|
architecture syn of pdp11_sys70 is |
|
signal RB_SRES_CORE : rb_sres_type := rb_sres_init; |
signal RB_SRES_DMSCNT : rb_sres_type := rb_sres_init; |
signal RB_SRES_DMHBPT : rb_sres_type := rb_sres_init; |
signal RB_SRES_DMCMON : rb_sres_type := rb_sres_init; |
signal RB_SRES_CPU : rb_sres_type := rb_sres_init; |
|
signal CP_CNTL : cp_cntl_type := cp_cntl_init; |
signal CP_ADDR : cp_addr_type := cp_addr_init; |
106,9 → 97,6
signal CACHE_FMISS : slbit := '0'; |
signal CACHE_CHIT : slbit := '0'; |
|
signal HBPT : slbit := '0'; |
|
signal DM_STAT_SE : dm_stat_se_type := dm_stat_se_init; |
signal DM_STAT_DP_L : dm_stat_dp_type := dm_stat_dp_init; |
signal DM_STAT_VM : dm_stat_vm_type := dm_stat_vm_init; |
signal DM_STAT_CO : dm_stat_co_type := dm_stat_co_init; |
132,7 → 120,7
CLK => CLK, |
RESET => RESET, |
RB_MREQ => RB_MREQ, |
RB_SRES => RB_SRES_CORE, |
RB_SRES => RB_SRES_CPU, |
RB_STAT => RB_STAT, |
RB_LAM => RB_LAM_CPU, |
GRESET => GRESET_L, |
155,7 → 143,8
ESUSP_O => open, |
ESUSP_I => '0', |
ITIMER => ITIMER, |
HBPT => HBPT, |
EBREAK => '0', |
DBREAK => '0', |
EI_PRI => EI_PRI, |
EI_VECT => EI_VECT, |
EI_ACKM => EI_ACKM, |
165,7 → 154,6
BRESET => BRESET_L, |
IB_MREQ_M => IB_MREQ_M, |
IB_SRES_M => IB_SRES_M, |
DM_STAT_SE => DM_STAT_SE, |
DM_STAT_DP => DM_STAT_DP_L, |
DM_STAT_VM => DM_STAT_VM, |
DM_STAT_CO => DM_STAT_CO |
226,67 → 214,7
IB_SRES_OR => IB_SRES_M |
); |
|
DMSCNT : if sys_conf_dmscnt generate |
begin |
I0: pdp11_dmscnt |
generic map ( |
RB_ADDR => slv(to_unsigned(16#0040#,16))) |
port map ( |
CLK => CLK, |
RESET => RESET, |
RB_MREQ => RB_MREQ, |
RB_SRES => RB_SRES_DMSCNT, |
DM_STAT_SE => DM_STAT_SE, |
DM_STAT_DP => DM_STAT_DP_L, |
DM_STAT_CO => DM_STAT_CO |
); |
end generate DMSCNT; |
|
DMCMON : if sys_conf_dmcmon_awidth > 0 generate |
begin |
I0: pdp11_dmcmon |
generic map ( |
RB_ADDR => slv(to_unsigned(16#0048#,16))) |
port map ( |
CLK => CLK, |
RESET => RESET, |
RB_MREQ => RB_MREQ, |
RB_SRES => RB_SRES_DMCMON, |
DM_STAT_SE => DM_STAT_SE, |
DM_STAT_DP => DM_STAT_DP_L, |
DM_STAT_VM => DM_STAT_VM, |
DM_STAT_CO => DM_STAT_CO |
); |
end generate DMCMON; |
|
DMHBPT : if sys_conf_dmhbpt_nunit > 0 generate |
begin |
I0: pdp11_dmhbpt |
generic map ( |
RB_ADDR => slv(to_unsigned(16#0050#,16)), |
NUNIT => sys_conf_dmhbpt_nunit) |
port map ( |
CLK => CLK, |
RESET => RESET, |
RB_MREQ => RB_MREQ, |
RB_SRES => RB_SRES_DMHBPT, |
DM_STAT_SE => DM_STAT_SE, |
DM_STAT_DP => DM_STAT_DP_L, |
DM_STAT_VM => DM_STAT_VM, |
DM_STAT_CO => DM_STAT_CO, |
HBPT => HBPT |
); |
end generate DMHBPT; |
|
RB_SRES_OR : rb_sres_or_4 |
port map ( |
RB_SRES_1 => RB_SRES_CORE, |
RB_SRES_2 => RB_SRES_DMSCNT, |
RB_SRES_3 => RB_SRES_DMHBPT, |
RB_SRES_4 => RB_SRES_DMCMON, |
RB_SRES_OR => RB_SRES |
); |
|
RB_SRES <= RB_SRES_CPU; -- currently single rbus device |
IB_MREQ <= IB_MREQ_M; -- setup output signals |
GRESET <= GRESET_L; |
CRESET <= CRESET_L; |
294,13 → 222,14
CP_STAT <= CP_STAT_L; |
DM_STAT_DP <= DM_STAT_DP_L; |
|
-- synthesis translate_off |
DM_STAT_SY.emmreq <= EM_MREQ; |
DM_STAT_SY.emsres <= EM_SRES; |
DM_STAT_SY.chit <= CACHE_CHIT; |
|
-- synthesis translate_off |
|
TMU : pdp11_tmu_sb |
generic map ( |
ENAPIN => sbcntl_sbf_tmu) |
ENAPIN => 13) |
port map ( |
CLK => CLK, |
DM_STAT_DP => DM_STAT_DP_L, |
/trunk/doc/README-w11a_V.60-w11a_V0.70.txt
File deleted
/trunk/doc/w11a_tb_guide.txt
1,4 → 1,4
# $Id: w11a_tb_guide.txt 722 2015-12-30 19:45:46Z mueller $ |
# $Id: w11a_tb_guide.txt 688 2015-06-05 13:15:10Z mueller $ |
|
Note: Only ISE based test benches are currently documented ! |
The Vivado test environemnt is still in it's infancy ! |
260,12 → 260,11
cd $RETROBASE/rtl/sys_gen/w11a/nexys2/tb |
tbrun_tbwrri --lsuf tbench_dsim --pack rw11 --cuff tb_w11a_n2 \ |
"rw11::setup_cpu" "rw11::tbench @cpu_all.dat" |
-> 3204500.0 ns 160214: DONE |
-> real 0m44.753s user 0m45.361s sys 0m0.616s |
-> 2847860.0 ns 142382: DONE |
-> real 0m33.013s user 0m31.870s sys 0m0.569s |
|
tbrun_tbwrri --lsuf tbench_dsim --pack rw11 --cuff tb_w11a_n2 \ |
"rw11::setup_cpu" "rw11::tbench @dev_all.dat" |
-> 1369960.0 ns 68487: DONE |
-> real 0m21.399s user 0m21.480s sys 0m0.254s |
-> 1058440.0 ns 52911: DONE |
-> real 0m15.249s user 0m15.195s sys 0m0.236s |
|
|
/trunk/doc/README.txt
1,4 → 1,4
$Id: README.txt 722 2015-12-30 19:45:46Z mueller $ |
$Id: README.txt 693 2015-06-21 14:02:46Z mueller $ |
|
Release notes for w11a |
|
22,144 → 22,579
|
2. Change Log ---------------------------------------------------------------- |
|
- trunk (2015-12-30: svn rev 34(oc) 722(wfjm); untagged w11a_V0.71) +++++++++ |
- w11a_V0.60 -> w11a_V0.70 cummulative summary of key changes |
- Bugfix for DIV instruction (in w11a_V0.61, see ECO-026-div.txt) |
- revised rbus protocol V4 (in w11a_V0.62, see README_Rlink_V4.txt) |
- add basic Vivado support (in w11a_V0.64) |
- add Nexys4 and Basys3 port of w11a (in w11a_V0.64) |
- add RH70+RP/RM disk support (in w11a_V0.65) |
- add TM11/TY10 tape support (in w11a_V0.66) |
- reference system now ISE 14.7, Vivado 2014.4; Ubuntu 14.04 64 bit, ghdl 0.31 |
|
- trunk (2015-06-21: svn rev 33(oc) 693(wfjm); tagged w11a_V0.70) +++++++++++ |
- Preface |
- the w11a so far lacked any 'hardware debugger' support, which made the |
debugging of CPU core issues a bit tedious. This release added a first |
implementation of CPU debugger and monitoring features |
- dmhbpt: hardware break point unit. Allows to set multiple break points |
on instruction fetches (thus code break points) and on data |
reads/writes (thus data access break points). The number of |
breakpoints is configurable between 0 and 4, in current |
designs 2 are available |
- dmcmon: CPU state monitor. A buffer of configurable size which holds |
a wide range of information on execution of the most recent |
instructions. Tracing can be a instruction as well as on |
micro cycle level. |
- dmscnt: micro state counter. A counter array which allows to monitor |
in which micro state the CPU time is spend, separated for |
kernel and supervisor/user mode. |
These three units together with the already existing ibus monitor allow |
a very detailed and specific monitoring and debugging of the CPU. |
- resolved known issue V0.66-2: operation with multiple RP or RM disks |
under 211bsd works now. Issue was caused by a faulty error check. |
- resolved bug tracker issue 2015-06-06: the tm11 offline function works |
now as expected. Issue was caused by de-referencing a null pointer. |
- resolved bug tracker request 2015-06-05: the values returned as drive |
serial number were interpreted by 211bsd standalone code as a signature |
of SI drives, which made disk partitioning a bit cumbersome. Changed the |
scheme used to generate drive serial numbers such that they never match |
these 3rd party drive characteristics. The 211bsd installation on a |
RM05 is documented with the 211bsd_tm oskit. |
- the w11a designs grow larger, filling the FPGA's on Nexys2 and Nexys3 |
to ~50% (n2) or 67% (n3). To reach timing closure without fine tuning |
constraints the cpu clock had to be reduced to |
sys_w11a_n2 now 52 MHz (was 54 MHz) |
sys_w11a_n3 now 64 MHz (was 68 MHz) |
|
The w11a CPU core is not functionally modified in this release, the only |
exception is the suspend logic needed to implement hardware break points. |
Both the hardware break point and the instruction level tracing in dmcmon |
require a clean definition of instruction boundaries, which the current |
w11a core does not provide in some cases. This leads to imprecise |
breakpoints (CPU executes one additional instruction) and incomplete |
dmcmon traces (at instruction level when exceptions are taken). |
|
The w11a core will be modified in the next release to handle the above |
mentioned conditions properly. The dmhbpt and dmcmon will be fully |
documented when the w11a core changes are done, they work as expected |
under all conditions, and the full back end integration is completed. |
- w11a has now a complete set of mass storage peripherals. This is a good |
reason of a major release, thus go for version V0.70. |
|
- bottom line is that this release has little added value for normal w11 |
usage. It is technically necessary to separate the addition of all |
the debug units and modification of the CPU core into two releases. |
- there are many known issues, and in many cases only core functionality |
used by operating systems has been implemented. The missing parts will |
be implemented in the upcoming releases towards V0.80, also much more |
intensive testing, especially with maindecs (aka xxdp) will be done. |
|
- Summary |
- new reference system |
- switched to Vivado 2015.4 (from 2014.4) |
Note: 2015.4 has WebPACK support for Logic Analyser and HLS. Both are |
not used so far, but the logic analyser may come in handy soon. |
- switched to tcl8.6 (from tcl8.5) |
Note: tcl8.6 is default tcl in Ubuntu 2014.04LTS, but up to now the |
tclshcpp helper was linked against tcl8.5. So far no tcl8.6 |
langauge features are used, but may be in future. |
- rhrp and tm11 bug fixes |
- no major functionality added |
|
- New features |
|
- Changes |
- renames |
- tools/oskit/211bsd_tm/211bsd_tm_boot.* -> 211bsd_tm_rp06_boot.* |
- functional changes |
- rtl/ibus/ibdr_rhrp - modify sn register to avoid 211bsd issues |
- tools/bin/create_disk - support RM80 disks |
- tools/tcl/rutil/util.tcl - add dohook |
- tools/oskit/*/*_boot.tcl - add preinithook and preboothook |
|
- Bug fixes |
- rtl/ibus/ibdr_rhrp - set er1.rmr only when unit busy |
- set cs2.pge only when controller busy |
- tools/src/librw11 |
- Rw11CntlTM11 - fix crash when offline function was executed |
|
- Known issues |
- all issues: see README_known_issues.txt |
- resolved issues: |
- V0.66-2: operation with multiple RP/RM drives works now under 211bsd |
|
- trunk (2015-06-05: svn rev 31(oc) 687(wfjm); untagged w11a_V0.66) +++++++++ |
- Preface |
|
- Since the previous release a full set of small, medium and large sized |
disks (RK,RL,RP/RM) is available, covering all use cases. Still missing |
was a tape system, which allows to install systems from distribution tapes |
but is also very handy for data exchange. This release adds a TM11/TU10 |
tape controller emulation. This is much simpler to implement than a |
massbus based TU16 or TU78 controller. Because storage is emulated there |
is neither a speed nor a capacity advantage of 1600 or 6250 bpi drives, |
so for all practical purposes the simple 800 bpi TU10 drive emulation is |
fully adequate. |
The TM11/TU10 was tested under 211bsd with creating a tape distribution |
kit and building a RP06 based system from such a tape. A 211bsd_tm |
oskit is provided with a recipe to restore a RP06 from tape. |
|
- bug fixes |
- the ti_rri event loop aborted under heavy load with three devices, seen |
when RP disk, TM tape and DL11 run simultaneously. Was caused by a race |
condition in attention handling and dispatching. |
- the boot command failed when cpu was running and the unit not decoded |
properly, so boots from units other then 0 failed. |
|
- Summary |
- added TM11/TU10 tape support |
|
- New features |
- new modules |
- rtl/w11a |
- pdp11_dmcmon - pdp11: debug&moni: cpu monitor |
- pdp11_dmhbpt - pdp11: debug&moni: hardware breakpoint |
- pdp11_dmhbpt_unit - pdp11: dmhbpt - individual unit |
- pdp11_dmscnt - pdp11: debug&moni: state counter |
- new files |
- rtl/ibus/ibdr_rm11 - ibus controller for RM11 |
- tools/bin |
- dmscntanal - analyze dmscnt data |
- dmscntconv - convert dmscnt data |
- tools/asm-11/lib |
- defs_mmu.mac - definitions for mmu registers |
- defs_nzvc.mac - definitions for condition code combos |
- defs_reg70.mac - definitions for 11/70 CPU registers |
- tcode_std_base.mac - Default tcode base code for simple tests |
- tcode_std_start.mac - Default tcode startup code |
- vec_devcatch.mac - vector catcher for device interrupts |
- vec_devcatch_reset.mac - re-write vector catcher |
- tools/tbench |
- w11a_cmon - directory with dmcmon tests |
- w11a_hbpt - directory with dmhbpt tests |
- tools/tcl |
- ibd_(dl|lp|pc|rk|rl)11 - directory with register regdsc's |
- tools/tcl/rutil |
- fileio.tcl - new tofile and fromfile procs |
- file2tap - create a tap container from disk files |
- tap2file - split a tap container into disk files |
- tools/src/librw11 |
- Rw11(Cntl|Unit)TM11 - Controller/Unit for TM11 |
- Rw11UnitTape(|Base) - support for tape units |
- Rw11VirtTape(|Tap) - virtual tapes (generic and tap containers) |
- tools/tcl/rw11 |
- dmcmon.tcl - support code for dmcmon |
- dmhbpt.tcl - support code for dmhbpt |
- dmscnt.tcl - support code for dmscnt |
- shell.tcl - new w11a tcl shell |
- shell_egd.tcl - code for e,g,d commands |
- tools/tcl/rw11util |
- regmap.tcl - support for 'map of regdsc' definitions |
- tbench.tcl - support sub directories and return in tests |
- new oskits |
- tools/oskit/211bsd_tm - 2.11BSD tape distribution kit (for RP06) |
|
- Changes |
- renames |
- tools/tbench - the text benches were re-organized and |
grouped now in sub directories: |
cp for w11a control port |
w11a for w11a CPU tests |
rhrp for RHRP device tests |
tm11 for TM11 device tests |
- functional changes |
- tools/bin/create_disk - add RM80 support |
|
- Bug fixes |
- tools/src/librlink |
- RlinkServer - fix race condition in attention handling |
- tools/src/librw11 |
- Rw11Cpu - stop cpu before load, proper unit handling |
|
- Known issues |
- all issues: see README_known_issues.txt |
- resolved issues: -- none -- |
- new issues: |
- V0.66-1: the TM11 controller transfers data byte wise (all disk do it |
16bit word wise) and allows for odd byte length transfers. Odd length |
transfers are currently not supported and rejected as invalid command. |
Odd byte length records aren't used by OS, if at all, so in practice |
this limitation isn't relevant. |
- V0.66-2: using two RP06 drives in parallel under 211bsd leads to a |
hangup of the system after a short time. Currently only operation |
of a single drive works reliably. |
|
- trunk (2015-05-14: svn rev 30(oc) 681(wfjm); untagged w11a_V0.65) +++++++++ |
- Preface |
|
- With small RK05 or RL02 sized disks only quite reduced OS setups could |
be booted, full featured systems were beyond reach. Now finally large |
disks are available, with a RH70 + RP/RM disk controller emulation. It |
supports up to four disks and allows now to run full featured 211bsd |
or rsx-11mplus systems. |
|
- to track down issues with ibus devices a 'ibus monitor' was added, it can |
record in the default setup up to 511 ibus transactions. An address filter |
allows to select accesses of one device. The ibd_ibmon tcl package |
contains the appropriate support scripts. |
|
- several cleanups |
- factor out common blocks on sys_w11a_* systems: the core+rbus+cache |
logic of single cpu systems now contained in pdp11_sys70, and the |
human I/O for digilent boards now in pdp11_hio70. |
- cpu start/stop logic cleanup: new command set with simple commands. |
Add also a new suspend/resume mechanism, which allows to hold the cpu |
without leaving the 'run state'. While suspended all timers are frozen. |
Very helpful when debugging, will be the basis for a hardware break |
point logic in a later release. |
- xon/xoff consolidation: escaping now done in cdata2byte/byte2cdata in |
FPGA and in RlinkPacketBufSnd/RlinkPacketBufRcv in backend. The extra |
escaping level in serport_xonrx/serport_xontx isn't used anymore, the |
special code in RlinkPortTerm has been removed. This allows to use |
xon/xoff flow control also in simulation links via RlinkPortFifo. |
- status check cleanup: it is very helpful to have a default status check |
and an easy way to modify it cases where some error flags are expected |
(e.g. on device polls). In the old logic status and data checks were |
done via RlinkCommandExpect. The new logic reflects that status checks |
are the normal case, and store the status check pattern in RlinkCommand. |
The meaning of expect masks for status and data is inverted, now a '1' |
means that the bit is checked (before it meant the bit is ignored). |
The default status check pattern is still in RlinkContext, but will be |
copied to RlinkCommand when the list is processed. RlinkCommandExpect |
handles now only data checks. |
|
- and bug fixes |
- rk11 cleanup: since the first days 211bsd autoconfig printed |
rk ? csr 177400 vector 220 didn't interrupt |
for boots from a RK11 it didn't have consequences, but when booted from |
a RL,RP, or RM disk this prevents that the RK11 disks are configured. |
Was caused by a missing interrupt after device reset. Now fixed. |
|
- Summary |
- added RH70/RP/RM big disk support |
- many cleanups |
|
- New features |
- new directory trees for |
- tools/asm-11/lib - definitions and macros for asm-11 |
- new modules |
- rtl/vlib/serport |
- serport_master - serial port module, master side |
- rtl/ibus/ibd_ibmon - ibus monitor |
- rtl/ibus/ibdr_rhrp - ibus controller for RH70 plus RP/RM drives |
- rtl/w11a/pdp11_sys70 - 11/70 system - single core +rbus,debug,cache |
- rtl/w11a/pdp11_hio70 - hio led and dsp for sys70 |
- tools/src/librw11 |
- Rw11(Cntl|Unit)RHRP - Controller/Unit for RHRP |
- tools/tbench |
- test_rhrp_* - test tbench for RHRP |
- new oskits |
- tools/oskit/211bsd_rp - new oskit for 2.11BSD on RP06 |
- tools/oskit/rsx11mp-30_rp - new oskit for RSX-11Mplus V3.0 on RP06 |
|
- Changes |
- renames |
- rtl/w11a/pdp11_sys70 -> pdp11_reg70 (_sys70 now different function) |
- functional changes |
- rtl/bplib/*/tb/tb_* - use serport_master instead of |
serport_uart_rxtx, allow xon/xoff |
- rtl/bplib/fx2rlink |
- rlink_sp1c_fx2 - add rbd_rbmon (optional via generics) |
- rtl/vlib/rlink/rlink_sp1c - add rbd_rbmon (optional via generics) |
- rtl/ibus/ibd_kw11l - freeze timer when cpu suspended |
- tools/bin/tbrun_tbwrri - add --fusp,--xon |
- tools/bin/ti_w11 - rename -fu->-fc, add -f2,-fx; setup defaults |
- tools/bin/librlink |
- RlinkCommandList - add SetLastExpect() methods |
- RlinkPort - add XonEnable() |
- RlinkPortCuff - add noinit attribute |
- RlinkPort(Fifo|Term) - add xon,noinit attributes |
- tools/src/librw11 |
- Rw11Cpu - add AddRbibr(), AddWbibr(), RAddrMap() |
- tools/bin/librlinktpp |
- RtclRlinkConnect - errcnt: add -increment |
log: add -bare,-info.. |
wtlam: allow tout=0 for attn cleanup |
init: new command |
exec: drop -estatdef |
- RtclRlinkServer - get/set interface added |
- tools/src/librwxxtpp |
- RtclRw11Cntl - start: new command |
- RtclRw11Cpu - cp: add -rbibr, wbibr, -rreg,...,-init |
- cp: add -estat(err|nak|tout), drop estatdef |
- rename amap->imap; add rmap |
|
- Bug fixes |
- rtl/ibus |
- ibdr_rk11 - interrupt after dreset and seek command start |
- tools/src/librlink |
- RlinkConnect - WaitAttn(): return 0. (not -1.) if poll |
- RlinkServer - Stop(): fix race in (could hang) |
|
- Known issues |
- all issues: see README_known_issues.txt |
- resolved issues: -- none -- |
- new issues: |
- V0.65-1: ti_rri sometimes crashes in normal rundown (exit or ^D) when |
a cuff: type rlink is active. One gets |
terminate called after throwing an instance of 'Retro::Rexception' |
what(): RlinkPortCuff::Cleanup(): driver thread failed to stop |
doesn't affect normal operation, will be fixed in upcoming release. |
- V0.65-2: some exotic RH70/RP/RM features and conditions not implemented |
- last block transfered flag (in DS) |
- CS2.BAI currently ignored and not handled |
- read or write 'with header' gives currently ILF |
All this isn't used by any OS, so in practice not relevant. |
|
- trunk (2015-03-01: svn rev 29(oc) 655(wfjm); untagged w11a_V0.64) +++++++++ |
|
- Preface |
- The w11 project started on a Spartan-3 based Digilent S3board, and soon |
moved on to a Nexys2 with much better connectivity. Next step was the |
Spartan-6 based Nexys3. Now is time to continue with 7-Series FPGAs. |
- When Vivado started in 2013 it was immediately clear that the architecture |
is far superior to ISE. But tests with the first versions were sobering, |
the w11a design either didn't compile at all, or produced faulty synthesis |
results. In 2014 Vivado matured, and the current version 2014.4 works |
fine with the w11a code base. |
- The original Nexys4 board allowed to quickly port Nexys3 version because |
both have the same memory chip. The newer Nexys4 DDR will be addressed |
later. |
- The BRAM capacity of FPGAs increased significantly over time. The low |
cost Basys3 board with the second smallest Artix-7 (XC7A35T) has 200 KB |
BRAM. That allows to implement a purely BRAM based w11a system with |
176 kB memory. Not enough for 2.11BSD, but for many other less demanding |
OS available for a PDP11. |
- The Nexyx4 and Basys3 have 16 LEDs. Not quite the 'blinking lights' |
console of the classic 11/45 and 11/70, but enough to display the |
well known OS typical light patterns the veterans remember so well. |
- With a new design tool, a new FPGA generation, two new boards, and a |
new interface for the rlink connection that some of the code and tools |
base had to be re-organized. |
- Last but not least: finally access to a bit bigger disks: RL11 support |
- Many changes, some known issues, some rough edges may still lurke around |
|
- Summary |
- added support for Vivado |
- added support for Nexys4 and Basys3 boards |
- added RL11 disk support |
- lots of documentation updated |
|
- New features |
- new directory trees for |
- rtl/bplib/basys3 - support for Digilent Basys3 board |
- rtl/bplib/nexys4 - support for Digilent Nexys4 board |
- rtl/make_viv - make includes for Vivado |
- new files |
- tools/bin/xviv_ghdl_unisim - ghdl compile Vivado UNISIM & UNIMACRO libs |
- new modules |
- rtl/ibus/ibdr_rl11 - ibus controller for RL11 |
- rtl/vlib/rlink/ioleds_sp1c - io activity leds for rlink+serport_1clk |
- rtl/vlib/xlib |
- s7_cmt_sfs_gsim - Series-7 CMT: simple vhdl model |
- s7_cmt_sfs_unisim - Series-7 CMT: wrapper for UNISIM |
- rtl/w11a |
- pdp11_bram_memctl - simple BRAM based memctl |
- pdp11_dspmux - mux for hio display |
- pdp11_ledmux - mux for hio leds |
- pdp11_statleds - status led generator |
- tools/src/librw11/ |
- Rw11*RL11 - classes for RL11 disk handling |
- tools/src/librwxxtpp |
- RtclRw11*RL11 - tcl iface for RL11 disk handling |
- new systems |
- rtl/sys_gen/tst_rlink - rlink tester |
- basys3/sys_tst_rlink_b3 - for Basys3 |
- nexys4/sys_tst_rlink_n4 - for Nexys4 |
- rtl/sys_gen/tst_serloop - serport loop tester |
- nexys4/sys_tst_serloop_n4 - for Nexys4 |
- rtl/sys_gen/tst_snhumanio - human I/O tester |
- basys3/sys_tst_snhumanio_b3 - for Basys3 |
- nexys4/sys_tst_snhumanio_n4 - for Nexys4 |
- rtl/sys_gen/w11a - w11a |
- basys3/sys_w11a_b3 - small BRAM only (176 kB memory) |
- nexys4/sys_w11a_n4 - with full 4 MB memory using cram |
- new oskits |
- tools/oskit/211bsd_rl - new oskit for 2.11BSD on RL02 |
- tools/oskit/rt11-53_rl - new oskit for RT11 V5.3 on RL02 |
- tools/oskit/xxdp_rl - new oskit for XXDP 22 and 25 on RL02 |
|
- Changes |
- renames |
- ensure that old ISE and new Vivado co-exists, ensure telling names |
- rtl/make -> make_ise |
- rtl/bplib/bpgen/sn_4x7segctl -> sn_7segctl |
- tools/bin/isemsg_filter -> xise_msg_filter |
- tools/bin/xilinx_ghdl_unisim -> xise_ghdl_unisim |
- tools/bin/xilinx_ghdl_simprim -> xise_ghdl_simprim |
|
- retired files |
- rtl/bplib/fx2lib |
- fx2_2fifoctl_as - obsolete, wasn't actively used since long |
- tools/bin |
- set_ftdi_lat - obsolete, since kernel 2.6.32 the default is 1 ms |
- xilinx_vhdl_chop - obsolete, since ISE 11 sources come chopped |
|
- functional changes |
- $RETROBASE/Makefile - re-structured, many new targets |
- rtl/bplib/bpgen |
- sn_7segctl - handle also 8 digit displays |
- sn_humanio - configurable SWI and DSP width |
- sn_humanio_rbus - configurable SWI and DSP width |
- rtl/vlib/serport |
- serport_1clock - export fractional part of divider |
- rtl/ibus |
- ibdr_maxisys - add RL11 (ibdr_rl11) |
- rtl/sys_gen/w11a/* |
- sys_w11a_* - use new led and dsp control modules |
- tools/src/librlink |
- RlinkConnect - drop LogOpts, indivitual getter/setter |
- RlinkPortTerm - support custom baud rates (5M,6M,10M,12M) |
- tools/src/librtcltools |
- RtclGetList - add '?' (key list) and '*' (kv list) |
- RtclSetList - add '?' (key list) |
- RlogFile - Open(): now with cout/cerr support |
- tools/src/librlinktpp |
- RtclRlinkConnect - drop config cmd, use get/set cmd |
- RtclRlinkPort - drop config cmd, use get/set cmd |
- tools/src/librw11 |
- Rw11Rdma - PreExecCB() with nwdone and nwnext |
- Rw11UnitDisk - add Nwrd2Nblk() |
- tools/src/librwxxtpp |
- RtclRw11CntlFactory - add RL11 support |
- tools/bin |
- xise_ghdl_unisim - handle also UNIMACRO lib |
- vbomconv - handle Vivado flows too |
|
- Bug fixes |
- tools/src/librw11 |
- Rw11CntlRK11 - revise RdmaPostExecCB() logic |
|
- Known issues |
- V0.64-7: ghdl simulated OS boots via ti_w11 (-n4 ect options) fail due to |
a flow control issue (likely since V0.63). |
- V0.64-6: IO delays still unconstraint in vivado. All critical IOs use |
explicitly IOB flops, thus timing well defined. |
- V0.64-5: w11a_tb_guide.txt covers only ISE based tests (see also V0.64-4). |
- V0.64-4: No support for the Vivado simulator (xsim) yet. With ghdl only |
functional simulations, post synthesis (_ssim) fails to compile. |
- V0.64-3: Highest baud rate with basys3 and nexys4 is 10 MBaud. 10 MBaud |
is not supported according to FTDI, but works. 12 MBaud in next release. |
- V0.64-2: rlink throughput on basys3/nexys4 limited by serial port stack |
round trip times. Will be overcome by libusb based custom driver. |
- V0.64-1: The large default transfer size for disk accesses leads to bad |
throughput in the DL11 emulation for low speed links, like the |
460kBaud the S3board is limited too. Will be overcome by a DL11 |
controller with more buffering. |
- V0.62-2: rlink v4 error recovery not yet implemented, will crash on error |
- V0.62-1: Command lists aren't split to fit in retransmit buffer size |
{last two issues not relevant for w11 backend over USB usage because |
the backend produces proper command lists and the USB channel is |
usually error free} |
|
- trunk (2015-01-04: svn rev 28(oc) 629(wfjm); untagged w11a_V0.63) +++++++++ |
|
- Summary |
- the w11a rbus interface used so far a narrow dynamically adjusted |
rbus->ibus window. Replaces with a 4k word window for whole IO page. |
- utilize rlink protocol version 4 features in w11a backend |
- use attn notifies to dispatch attn handlers |
- use larger blocks (7*512 rather 1*512 bytes) for rdma transfers |
- use labo and merge csr updates with last block transfer |
- this combined reduces the number of round trips by a factor 2 to 3, |
and in some cases the throughput accordingly. |
|
- Remarks on reference system |
- still using tcl 8.5 (even though 8.6 is now default in Ub 14.04) |
- don't use doxygen 1.8.8 and 1.8.9, it fails to generate vhdl docs |
|
- New features |
- new modules |
- tools/bin |
- ghdl_assert_filter - filter to suppress startup warnings |
- tbrun_tbw - wrapper for tbw based test benches |
- tbrun_tbwrri - wrapper for ti_rri + tbw based test benches |
- tools/src/librw11 |
- Rw11Rdma - Rdma engine base class |
- Rw11RdmaDisk - Rdma engine for disk emulation |
|
- Changes |
- rtl/vlib/rlink |
- rlink_core.vhd - add proc_sres: strip 'x' from RB_SRES.dout |
- rtl/vlib/rlink/tb |
- tbcore_rlink - drive SB_CNTL from start to avoid 'U' |
- rlink_core - use 4th stat bit to signal rbus timeout |
- rtl/vlib/rbus |
- rbd_rbmon - reorganized, supports now 16 bit addresses |
- rtl/w11a |
- pdp11 - add defs for pdp11_dm(scnt|hbpt|cmon) |
- pdp11_* - add support for pdp11_dm(scnt|hbpt|cmon) |
- rtl/sys_gen/w11a/* |
- sys_conf - add sys_conf_(dmscnt|dmhbpt*|dmcmon*) |
- rtl/sys_gen/w11a/*/tb |
- sys_conf_sim - add sys_conf_(dmscnt|dmhbpt*|dmcmon*) |
- pdp11_core_rbus - use full size 4k word ibus window |
- tools/bin/tbw - add -fifo and -verbose options |
- tools/src/librtools |
- Rexception - add ctor from RerrMsg |
- tools/src/librlink |
- RlinkCommandExpect - rblk/wblk done counts now expectable |
- RlinkConnect - cleanups and minor enhancements |
- RlinkServer - use attn notifies to dispatch handlers |
- tools/src/librw11 |
- Rw11CntlRK11 - re-organize, use now Rw11RdmaDisk |
- Rw11Cpu - add ibus address map |
- tools/src/librwxxtpp |
- RtclRw11CntlRK11 - add get/set for ChunkSize |
- RtclRw11Cpu - add amap sub-command for ibus map access |
|
- Resolved known issues from V0.62 |
- the rbus monitor (rbd_rbmon) has been updated to handle 16 bit addresses |
|
- Known issues |
- (V0.62): rlink v4 error recovery not yet implemented, will crash on error |
- (V0.62): command lists aren't split to fit in retransmit buffer size |
{both issues not relevant for w11 backend over USB usage because the |
backend produces proper command lists and the USB channel is error free} |
|
- trunk (2014-12-20: svn rev 27(oc) 614(wfjm); untagged w11a_V0.62) +++++++++ |
|
- Summary |
- migrate to rlink protocol version 4 |
- Goals for rlink v4 |
- 16 bit addresses (instead of 8 bit) |
- more robust encoding, support for error recovery at transport level |
- add features to reduce round trips |
- improved attention handling |
- new 'list abort' command |
- For further details see README_Rlink_V4.txt |
- use own C++ based tcl shell tclshcpp instead of tclsh |
|
Notes: |
1. rlink protocol, core, and backend are updated in this release |
2. error recovery in backend not yet implemented |
3. the designs using rlink are still essentially unchanged |
4. the new rlink v4 features will be exploited in upcoming releases |
|
- New reference system |
The development and test system was upgraded from Kubuntu 12.04 to 14.04. |
The version of several key tools and libraries changed: |
linux kernel 3.13.0 (was 3.2.0) |
gcc/g++ 4.8.2 (was 4.6.3) |
boost 1.54 (was 1.46.1) |
libusb 1.0.17 (was 1.0.9) |
perl 5.18.2 (was 5.14.2) |
tcl 8.5.15 (was 8.5.11) |
sdcc 3.3.0 (was 2.9.0) |
doxygen 1.8.7 {installed from sources; Ub 14.04 has 1.8.6} |
|
Notes: |
1. still using tcl 8.5 (even though 8.6 is now default in Ub 14.04) |
2. sdcc 3.x is not source compatible with sdcc 2.9. The Makefile |
allows to use both, see tools/fx2/src/README.txt . |
3. don't use doxygen 1.8.8, it fails to generate vhdl docs |
|
- New features |
- new environment variables TCLLIB and TCLLIBNAME. TCLLIBNAME must be |
defined, and hold the library name matching the Tcl version already |
specified with TCLINC. |
- new modules |
- rtl/vlib/comlib/crc16 - 16 bit crc generator (replaces crc8) |
- tools/src/tclshcpp/* - new tclshcpp shell |
|
- Changes |
- rtl/vlib/comlib |
- byte2cdata,cdata2byte - re-write, commas now 2 byte sequences |
- rtl/vlib/rlink |
- rlink_core - re-write for rlink v4 |
- rtl/*/* - use new rlink v4 iface and 4 bit STAT |
- rtl/vlib/rbus/rbd* - new addresses in 16 bit rlink space |
- rtl/vlib/simlib/simlib - add simfifo_*, wait_*, writetrace |
- tools/bin/ |
- ti_w11 - add -ghw option |
- tmuconv - fix '.' handling for br/sob instructions |
correct xor (now r,dst, and not src,r) |
- tools/tcl/rutil |
- regdsc.tcl - add regbldkv,reggetkv |
- util.tcl - rename optlist2arr->args2opts, new logic |
- tools/tcl/rw11 |
- asm.tcl - new arg list format in asm(run|treg|tmem) |
- dasm.tcl - add dasm_inst2txt |
- tools/tcl/ibd_ibmon |
- util.tcl - add symbolic register dump |
- fx2load_wrapper - use _ic instead of _as as default firmware |
- ti_rri - use tclshcpp (C++ based) rather tclsh |
- tools/fx2/bin/*.ihx - recompiled with sdcc 3.3.0 + bugfixes |
- tools/fx2/src/Makefile - support sdcc 3.3.0 |
- tools/src/ |
- */*.cpp - adopt for rlink v4; use nullptr |
- librlink/RlinkCrc16 - 16 crc, replaces RlinkCrc8 |
- librlink/RlinkConnect - many changes for rlink v4 |
- librlink/RlinkPacketBuf* - re-write for for rlink v4 |
- tools/tcl/*/*.tcl - adopt for rlink v4 |
- renames: |
- tools/bin/telnet_starter -> tools/bin/console_starter |
|
- Bug fixes |
- rtl/bplib/micron |
- mt45w8mw16b - fix issue when 1st access is to addr 0 |
- rtl/bplib/nxcramlib |
- nx_cram_memctl_as - always define imem_oe in do_dispatch() |
- rtl/ibus |
- ibdr_tm11 - add missing BESET to sensitivity list |
- rtl/w11a |
- pdp11_sequencer - proper trap_mmu and trap_ysv handling |
- tools/bin |
- asm-11 - fix '.' handling in instructions |
- tools/fx2/src |
- dscr_gen.A51 - correct string 0 descriptor |
- lib/syncdelay.h - handle triple nop now properly |
|
- Known issues |
- all issues: see README_known_issues.txt |
- rlink v4 error recovery not yet implemented, will crash on error |
- command lists aren't split to fit in retransmit buffer size |
{both issues not relevant for w11 backend over USB usage because the |
backend produces proper command lists and the USB channel is error free} |
- the rbus monitor (rbd_rbmon) not yet handling 16 bit addresses and |
therefore of limited use |
|
- w11a_V0.7 (2015-06-21) +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
cummulative summary of key changes from w11a_V0.6 to w11a_V0.7 |
- Bugfix for DIV instruction (in w11a_V0.61, see ECO-026-div.txt) |
- revised rbus protocol V4 (in w11a_V0.62, see README_Rlink_V4.txt) |
- add basic Vivado support (in w11a_V0.64) |
- add Nexys4 and Basys3 port of w11a (in w11a_V0.64) |
- add RL11/RL02 disk support (in w11a_V0.64) |
- add RH70+RP/RM disk support (in w11a_V0.65) |
- add TM11/TY10 tape support (in w11a_V0.66) |
- reference system now ISE 14.7, Vivado 2014.4; Ubuntu 14.04 64 bit, ghdl 0.31 |
- trunk (2014-08-08: svn rev 25(oc) 579(wfjm); tagged w11a_V0.61) +++++++++++ |
|
for details see README-w11a_V.60-w11a_V0.70.txt |
- Summary |
- The div instruction gave wrong results in some corner cases when either |
divisor or quotient were the largest negative integer (100000 or -32768). |
This is corrected now, for details see ECO-026-div.txt |
- some minor updates and fixes to support scripts |
- xtwi usage and XTWI_PATH setup explained in INSTALL.txt |
|
- New features |
- the Makefile's for in all rtl building block directories allow now to |
configure the target board for a test synthesis via the XTW_BOARD |
environment variable or XTW_BOARD=<board name> make option. |
|
- Changes |
- tools/bin/asm-11 - add call and return opcodes |
- tools/bin/create_disk - add RM02,RM05,RP04,RP07 support |
- tools/bin/tbw - use xtwi to start ISim models |
- tools/bin/ticonv_pdpcp - add --tout and --cmax; support .sdef |
- tools/dox/*.Doxyfile - use now doxygen 1.8.7 |
- tools/src/librw11 |
- Rw11CntlRK11 - add statistics |
|
- Bug fixes |
- rtl/w11a - div bug ECO-026 |
- pdp11_munit - port changes; fix divide logic |
- pdp11_sequencer - s_opg_div_sr: check for late div_quit |
- pdp11_dpath - port changes for pdp11_munit |
- tools/bin/create_disk - repair --boot option (was inaccessible) |
- tools/bin/ti_w11 - split args now into ti_w11 opts and cmds |
- tools/src/librwxxtpp |
- RtclRw11Cpu - redo estatdef logic; avoid LastExpect() |
- tools/dox/make_doxy - create directories, fix 'to view use' text |
|
- w11a_V0.6 (2014-06-06) +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
cummulative summary of key changes from w11a_V0.5 to w11a_V0.6 |
cummulative summary of key changes from w11a_V0.5 to w11a_V0.60 |
- revised ibus protocol V2 (in w11a_V0.51) |
- revised rbus protocol V3 (in w11a_V0.52) |
- backend server rewritten in C++ and Tcl (in w11a_V0.53 and w11a_V0.562) |
/trunk/doc/man/man1/dmscntconv.1
File deleted
/trunk/doc/man/man1/dmscntanal.1
File deleted
/trunk/doc/man/man1/ti_w11.1
1,11 → 1,11
.\" -*- nroff -*- |
.\" $Id: ti_w11.1 712 2015-11-01 22:53:45Z mueller $ |
.\" $Id: ti_w11.1 680 2015-05-14 13:29:46Z mueller $ |
.\" |
.\" Copyright 2013-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
.\" |
.\" ------------------------------------------------------------------ |
. |
.TH TI_W11 1 2015-11-01 "Retro Project" "Retro Project Manual" |
.TH TI_W11 1 2015-04-12 "Retro Project" "Retro Project Manual" |
.\" ------------------------------------------------------------------ |
.SH NAME |
ti_w11 \- Quick starter for \fBti_rri\fP with \fBw11\fP CPU designs |
81,10 → 81,6
.RE |
.IP \fB-tmu\fP |
activate trace and monitoring unit |
.PD 0 |
.IP \fB-ghw\fP |
activate ghw wave file writing |
.PD |
. |
.SS "common options" |
.IP \fB-e "\fR=\fIfile"\fR |
/trunk/doc/INSTALL.txt
1,4 → 1,4
# $Id: INSTALL.txt 722 2015-12-30 19:45:46Z mueller $ |
# $Id: INSTALL.txt 654 2015-03-01 18:45:38Z mueller $ |
|
Guide to install and build w11a systems, test benches and support software |
|
65,7 → 65,7
- libusb 1.0 (>= 1.0.6) |
-> package: libusb-1.0-0-dev |
- Perl (>= 5.10) (usually included in base installations) |
- Tcl (>= 8.6), with tclreadline support |
- Tcl (>= 8.5), with tclreadline support |
-> package: tcl tcl-dev tcllib tclreadline |
|
- for VHDL simulations one needs |
114,8 → 114,8
In most cases the boost library version coming with the distribution will |
work, similar for Tcl, in those cases simply use |
|
export TCLINC=/usr/include/tcl8.6 |
export TCLLIBNAME=tcl8.6 |
export TCLINC=/usr/include/tcl8.5 |
export TCLLIBNAME=tcl8.5 |
|
and don't setup BOOSTINC and BOOSTLIB. |
|