diff --git a/.cvsignore b/.cvsignore index 4852975a..2a117623 100644 --- a/.cvsignore +++ b/.cvsignore @@ -25,6 +25,7 @@ fuse.log *_twr.log *_map.log *_par.log +*_tsi.log *_pad.log *_bgn.log *_svn.log diff --git a/Makefile b/Makefile index 3ba03d11..e0681a2a 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile 538 2013-10-06 17:21:25Z mueller $ +# $Id: Makefile 562 2014-06-15 17:23:18Z mueller $ # # 'Meta Makefile' for whole retro project # allows to make all synthesis targets @@ -6,6 +6,7 @@ # # Revision History: # Date Rev Version Comment +# 2014-06-14 562 1.0.8 suspend nexys4 syn targets # 2013-09-28 535 1.0.7 add nexys4 port for sys_gen/tst_sram,w11a # 2013-05-01 513 1.0.6 add clean_sim_tmp and clean_syn_tmp targets # 2012-12-29 466 1.0.5 add tst_rlink_cuff diff --git a/doc/ECO-026-div.txt b/doc/ECO-026-div.txt new file mode 100644 index 00000000..f8d94aef --- /dev/null +++ b/doc/ECO-026-div.txt @@ -0,0 +1,108 @@ +$Id: ECO-026-div.txt 579 2014-08-08 20:39:46Z mueller $ + +Scope: + Introduced in release w11a_V0.61 + Affects: all w11a systems + +Symptom summary: + The div instruction gave wrong results in some corner cases when either + divisor or quotient were the largest negative integer (100000 or -32768): + 1. wrong q and r when dd=n*(-32768), dr=-32768 with n even + 2. V=1 set when division solvable and proper result is q=-32768 + +Background: + The PDP-11/70 (KB11-C) and the w11a use very different division algorithms. + Both use a non-restoring divide. + - The KB11-C uses a straight forward 2 quadrant core algorithm for positive + dividends and positive or negative divisors. Negative dividends are first + converted to positive, the results later corrected. This leads to quite + complex implementation with 35 micro states. + - The w11a uses a 4 quadrant algorithm which directly allows positive and + negative dividends and divisors. The qbit logic is much more complex in + this case. Advantage is that the whole divide algorithm can be implemented + with only 6 states in the main sequencer. + + In twos complement integer arithmetic, as used in the pdp11 and almost all + contemporary computers, the range of positive and negative numbers is + different, for 16 bit for example + oct 100000 to 077777 + dec -32768 to +32767 + so the smallest negative number has no positive counterpart. Trying to negate + the smallest negative number leads to the same number + mov #100000, r0 + neg r0 --> r0 = 100000; V=1 + + These special properties of the largest negative number easily lead to corner + cases which require special treatment, both the KB11-C and the w11a divide + algorithms need special rules and checks for this. + +Summary of issues: + 1. when dividend was dd=n*(-32768) with an even n and the divisor was + dr=-32768 the old w11a algorithm returned wrong quotient and remainder + values and V=0 status. + 2. for all divisions which result in a quotient of -32768 the old w11a + algorithm set the overflow (V=1) condition. Since in this case the + destination registers were not updated and still contained the + dividend, software not checking the V code saw wrong quotient and + remainder values. + +Fixes: + - Issue 1: wrong q and r for dd=n*(-32768), dr=-32768 with n even. + - the corner case is detected in state s_opg_div by testing that divisor + is 0100000 and low order part of dividend is zero. When detected, the + qbit logic is modified and quotient and remainder corrections are done + unconditionally. + + - Issue 2: V=1 set when division solvable and proper result is q=-32768. + The divide core algorithm calculates the correct q and r, only the + overflow testing was incorrect. + The old algorithm had two overflow abort conditions + - a check that bit 31 and 30 of the dividend are equal + - a check after the first division cycle + The new algorithm now has three overflow abort conditions + - the bit 31/30 check on the dividend was too restrictive. Valid divisions + with dd=(-32768)*(-32768)+n and dr=-32768 giving q=-32768 and r=n would + be rejected. The 31/30 check is now only applied when the divisor is not + equal 0100000 + - the division abort condition in the first division cycle was completely + revised, this avoids that solvable divisions are aborted at this stage + - the first two conditions don't catch all overflow situations. The + remaining ones all have after the quotient correction stage q>0 when + a negative quotient is expected. A third overflow check was added to + s_opg_div_sr to handle these cases. + +Side effects: + - the old implementation guaranteed that the destination registers were + unchanged in case of overflow. The new does not, the overflow check in + s_opg_div_sr is done after the quotient is stored, and storing remainder + is not suppressed in case of overflow. So both q and r regs are changed. + - with additional states it could be guaranteed that destination registers + are never updated in case of overflow. See proviso below. + - the pdp-11/70 KB11-C in most cases keeps destination registers unchanged + in case of overflow, but also has a late check after one register has + been modified. + - the J11 never updates registers in case of overflow. A case like + 0,177777 / 177777 were w11a now updates regs is known from J11 + diagnostics to not update in J11. + - simh always preserves the destination registers in case of overflow. + + !! the pdp11 processor handbook considers the destination registers as !! + !! undefined in case of division overflow, so the w11a behavior is OK. !! + +Provisos: + - the behavior after V=1 aborts of a div instruction is now different in + - w11a --> regs updated under some rare conditions + - KB11-C --> regs updated under some rare conditions + but in cases different from w11a + - 11/44 --> regs updated under some conditions (see v7_longdivide_bug.txt) + - J11 --> regs never updated + - simh --> regs never updated + --> that can lead to spurious failures in original DEC diagnostics when + they test the complete response + --> even though the current w11a behavious is full within specs it is unclear + whether all software tolerates this, especially non-DEC OS. Unix V7 is + known to have an issue with ldiv and CPUs not preserving regs, see + http://minnie.tuhs.org/PUPS/v7_longdivide_bug.txt + --> Only further studes can show whether it is worth the effort and the + slow down of 1-2 cycles to guarantee preserved registers. + diff --git a/doc/FILES.txt b/doc/FILES.txt new file mode 100644 index 00000000..1f5ebd61 --- /dev/null +++ b/doc/FILES.txt @@ -0,0 +1,63 @@ +$Id: FILES.txt 577 2014-08-03 20:49:42Z mueller $ + +Short description of the directory layout, what is where ? + + doc Documentation + doc/man man pages for retro11 commands + rtl VHDL sources + rtl/bplib - board and component support libs + rtl/bplib/atlys - for Digilent Atlys board + rtl/bplib/fx2lib - for Cypress FX2 USB interface controller + rtl/bplib/issi - for ISSI parts + rtl/bplib/micron - for Micron parts + rtl/bplib/nexys2 - for Digilent Nexsy2 board + rtl/bplib/nexys3 - for Digilent Nexsy3 board + rtl/bplib/nxcramlib - for CRAM part used in Nexys2/3 + rtl/bplib/s3board - for Digilent S3BOARD + rtl/ibus - ibus devices (UNIBUS peripherals) + rtl/sys_gen - top level designs + rtl/sys_gen/tst_fx2loop - top level designs for Cypress FX2 tester + nexys2,nexys3 - systems for Nexsy2,Nexsy3 + rtl/sys_gen/tst_rlink - top level designs for an rlink tester + nexys2,nexys3,s3board - systems for Nexsy2,Nexsy3,S3BOARD + rtl/sys_gen/tst_rlink_cuff - top level designs for rlink over FX2 tester + nexys2,nexys3,atlys - systems for Atlys,Nexsy2,Nexsy3 + rtl/sys_gen/tst_serloop - top level designs for serport loop tester + nexys2,nexys3,s3board - systems for Nexsy2,Nexsy3,S3BOARD + rtl/sys_gen/tst_snhumanio - top level designs for human I/O tester + atlys,nexys2,nexys3,s3board - systems for Atlys,Nexsy2,Nexsy3,S3BOARD + rtl/sys_gen/w11a - top level designs for w11a SoC + nexys2,nexys3,s3board - w11a systems for Nexsy2,Nexsy3,S3BOARD + rtl/vlib - VHDL component libs + rtl/vlib/comlib - communication + rtl/vlib/genlib - general + rtl/vlib/memlib - memory + rtl/vlib/rbus - rri: rbus + rtl/vlib/rlink - rri: rlink + rtl/vlib/serport - serial port (UART) + rtl/vlib/simlib - simulation helper lib + rtl/vlib/xlib - Xilinx specific components + rtl/w11a - w11a core + tools helper programs + tools/asm-11 - pdp-11 assembler code + tools/asm-11/tests - test bench for asm-11 + tools/asm-11/tests-err - test bench for asm-11 (error check part) + tools/bin - scripts and binaries + tools/dox - Doxygen documentation configuration + tools/make - make includes + tools/fx2 - Firmware for Cypress FX2 USB Interface + tools/fx2/bin - pre-build firmware images in .ihx format + tools/fx2/src - C and asm sources + tools/fx2/sys - udev rules for USB on fpga eval boards + tools/oskit - setup files for Operation System kits + tools/oskit/... - several PDP-11 system kits available + tools/src - C++ sources for rlink backend software + tools/src/librlink - basic rlink interface + tools/src/librlinktpp - C++ to tcl binding for rlink interface + tools/src/librtcltools - support classes to implement Tcl bindings + tools/src/librtools - general support classes and methods + tools/src/librutiltpp - Tcl support commands implemented in C++ + tools/src/librw11 - w11 over rlink interface + tools/src/librwxxtpp - C++ to tcl binding for w11 over rlink iface + tools/tbench - w11 CPU test bench + tools/tcl - Tcl scripts diff --git a/doc/INSTALL.txt b/doc/INSTALL.txt index 27c504b9..0515c09b 100644 --- a/doc/INSTALL.txt +++ b/doc/INSTALL.txt @@ -1,4 +1,4 @@ -# $Id: INSTALL.txt 559 2014-06-06 21:26:47Z mueller $ +# $Id: INSTALL.txt 576 2014-08-02 12:24:28Z mueller $ Guide to install and build w11a systems, test benches and support software @@ -15,13 +15,16 @@ Guide to install and build w11a systems, test benches and support software b. Setup Tcl packages c. Rebuild Cypress FX2 firmware 6. The build system + 6 a. Setting up Xilinx environment with xtwi 7. Building test benches a. General instructions b. Available test benches 8. Building systems a. General instructions - b. Configuring FPGAs - c. Available systems + b. Configuring FPGAs (via make flow) + c. Configuring FPGAs (directly via config_wrapper) + d. Available systems + e. Available bitkits with bit and log files 9. Generate Doxygen based source code view 1. Download --------------------------------------------------------------- @@ -178,11 +181,11 @@ Guide to install and build w11a systems, test benches and support software Two helper scripts will create these libraries: - + cd $RETROBASE - xilinx_ghdl_unisim - xilinx_ghdl_simprim + xtwi xilinx_ghdl_unisim + xtwi xilinx_ghdl_simprim If you have several WebPack versions installed, repeat for each version. @@ -204,6 +207,13 @@ Guide to install and build w11a systems, test benches and support software cd $RETROBASE/tools/src make -j 4 + Default is to compile with -O2 and without -g. These options can be + overwritten with the CXXOPTFLAGS enviromnent variable (or make opion). + To build with -O3 optimize use + make -j 4 CXXOPTFLAGS=-O3 + To build a debug version with full symbol table use + make -j 4 CXXOPTFLAGS=-g + To cleanup, e.g. before a re-build cd $RETROBASE/tools/src @@ -259,28 +269,43 @@ Guide to install and build w11a systems, test benches and support software files, often in proper compilation order (libraries before components). The different tools have different formats of these 'project files'. - The build system employed in this project is based on - "VHDL bill of material" or 'vbom' files - which list for each vhdl source file the libraries and sources for - the instantiated components, the later via their vbom, and last but - not least the name of the vhdl source file. All file name are relative - to the current directory. A recursive traversal through all vbom's gives - for each vhld module all sources needed to compile it. The vbomconv script - in tools/bin does this, and generates depending on options - - make dependency files - - ISE xst project files - - ISE ISim project files - - ghdl commands for analysis, inspection and make step + The build system employed in this project is based on manifest files called + 'vbom' or "VHDL bill of material" files + which list for each vhdl source file the libraries and sources for the + instantiated components, the later via their vbom, and last but not least + the name of the vhdl source file. + All file name are relative to the current directory. A recursive traversal + through all vbom's gives for each vhld module all sources needed to compile + it. The vbomconv script in tools/bin does this, and generates depending on + options + - make dependency files + - ISE xst project files + - ISE ISim project files + - ghdl commands for analysis, inspection and make step The master make files contain pattern rules like %.ngc : %.vbom -- synthesize with xst % : %.vbom -- build functional model test bench which encapsulate all the vbomconf magic - A full w11a is build from more than 80 source files, test benches from + A full w11a is build from about 100 source files, test benches from even more. Using the vbom's a large number of designs can be easily maintained. +6a. Setting up Xilinx environment with xtwi -------------------------- + + The Xilinx ISE setup script redefines PATH and LD_LIBRARY_PATH. The ISE + tools run fine in this environment, but other installed programs on the + system can (and actually do) fail. + + The build system uses a small wrapper script called xtwi to encapsulate + the Xilinx environment. It expects that the environment variable XTWI_PATH + is setup to the install path of the ISE version to be used. Without the + /ISE_DS/ which is added by the ISE installation procedure ! + + Note: don't run the ISE setup scripts ..../settings(32|64).sh in your + working shell. Setup only XTWI_PATH ! + 7. Building test benches -------------------------------------------------- 7a. General instructions --------------------------------------------- @@ -311,6 +336,8 @@ Guide to install and build w11a systems, test benches and support software 8a. General instructions --------------------------------------------- + First ensure that XTWI_PATH is setup, see section 6a. + To generate a bit file for a system named all is needed is make .bit @@ -334,6 +361,11 @@ Guide to install and build w11a systems, test benches and support software make .jconfig + If a svf file is required for configuring the FPGA a svf can be created + from a bit file with + + make .svf + If only the xst or par output is wanted just use make .ngc @@ -349,7 +381,7 @@ Guide to install and build w11a systems, test benches and support software after a re-build. -8b. Configuring FPGAs ------------------------------------------------ +8b. Configuring FPGAs (via make flow) -------------------------------- The make flow supports also loading the bitstream into FPGAs, either via Xilinx Impact, or via the Cypress FX2 USB controller is available. @@ -369,20 +401,23 @@ Guide to install and build w11a systems, test benches and support software .bit file, and configure the FPGA. In case the bit file is out-of-date the whole design will be re-implemented before. -8c. Available systems ------------------------------------------------ +8c. Configuring FPGAs (directly via config_wrapper) ------------------ + + The make flow described above uses two scripts + config_wrapper # must be used with xtwi ! + fx2load_wrapper + which can be used directly for loading available bit or svf files into + the FPGA. For detailed documentation see the respective man pages. + + Examples for the supported boards are given in section 8e. + +8d. Available systems ------------------------------------------------ Currently ready to build versions exist for - Digilent S3BOARD (-1000 FPGA version) - Digilent Nexys2 board (-1200 FPGA version) - Digilent Nexys3 board - Tarballs with ready to use bit file and and all logfiles from the tool - chain can be downloaded from - http://www.retro11.de/data/oc_w11/bitkits/ - This area is organized in folders for different releases. The tarball - file names contain information about release, Xlinix tool, and design: - __.tgz - To build the designs locally use 1. rlink tester @@ -428,6 +463,39 @@ Guide to install and build w11a systems, test benches and support software cd $RETROBASE/rtl/sys_gen/w11a/nexys3 make sys_w11a_n3.bit +8e. Available bitkits with bit and log files ------------------------- + + Tarballs with ready to use bit files and all logfiles from the tool + chain can be downloaded from + http://www.retro11.de/data/oc_w11/bitkits/ + This area is organized in folders for different releases. The tarball + file names contain information about release, Xlinix tool, and design: + __.tgz + + These designs can be loaded with config_wrapper into the FPGA. The + procedures for the supported boards are given below. + + Notes: + 1. XTWI_PATH and RETROBASE environment variables must be defined. + 2. config_wrapper bit2svf is only needed once to create the svf files. + 3. fx2load_wrapper is needed once after each board power on. + + a. for Digilent S3BOARD (using ISE Impact) + + xtwi config_wrapper --board=s3board iconfig .bit + + b. for Digilent Nexys2 board (using Cypress FX2 USB controller) + + xtwi config_wrapper --board=nexys2 bit2svf .bit + fx2load_wrapper --board=nexys2 --file=nexys2_jtag_2fifo_ic.ihx + xtwi config_wrapper --board=nexys2 jconfig .svf + + c. for Digilent Nexys3 board (using Cypress FX2 USB controller) + + xtwi config_wrapper --board=nexys3 bit2svf .bit + fx2load_wrapper --board=nexys3 --file=nexys3_jtag_2fifo_ic.ihx + xtwi config_wrapper --board=nexys3 jconfig .svf + 9. Generate Doxygen based source code view -------------------------------- Currently there is not much real documentation included in the source diff --git a/doc/README-w11a_V.50-w11a_V0.60.txt b/doc/README-w11a_V.50-w11a_V0.60.txt new file mode 100644 index 00000000..c66add0f --- /dev/null +++ b/doc/README-w11a_V.50-w11a_V0.60.txt @@ -0,0 +1,608 @@ +$Id: README-w11a_V.50-w11a_V0.60.txt 578 2014-08-05 21:28:19Z mueller $ + +Release notes for w11a + + Table of content: + + 1. Documentation + 2. Files + 3. Change Log + +1. Documentation ------------------------------------------------------------- + + More detailed information on installation, build and test can be found + in the doc directory, specifically + + * README.txt: release notes + * INSTALL.txt: installation and building test benches and systems + * w11a_tb_guide.txt: running test benches + * w11a_os_guide.txt: booting operating systems + * w11a_known_issues.txt: known differences, limitations and issues + +2. Files --------------------------------------------------------------------- + + doc Documentation + doc/man man pages for retro11 commands + rtl VHDL sources + rtl/bplib - board and component support libs + rtl/bplib/atlys - for Digilent Atlys board + rtl/bplib/fx2lib - for Cypress FX2 USB interface controller + rtl/bplib/issi - for ISSI parts + rtl/bplib/micron - for Micron parts + rtl/bplib/nexys2 - for Digilent Nexsy2 board + rtl/bplib/nexys3 - for Digilent Nexsy3 board + rtl/bplib/nxcramlib - for CRAM part used in Nexys2/3 + rtl/bplib/s3board - for Digilent S3BOARD + rtl/ibus - ibus devices (UNIBUS peripherals) + rtl/sys_gen - top level designs + rtl/sys_gen/tst_fx2loop - top level designs for Cypress FX2 tester + nexys2,nexys3 - systems for Nexsy2,Nexsy3 + rtl/sys_gen/tst_rlink - top level designs for an rlink tester + nexys2,nexys3,s3board - systems for Nexsy2,Nexsy3,S3BOARD + rtl/sys_gen/tst_rlink_cuff - top level designs for rlink over FX2 tester + nexys2,nexys3,atlys - systems for Atlys,Nexsy2,Nexsy3 + rtl/sys_gen/tst_serloop - top level designs for serport loop tester + nexys2,nexys3,s3board - systems for Nexsy2,Nexsy3,S3BOARD + rtl/sys_gen/tst_snhumanio - top level designs for human I/O tester + atlys,nexys2,nexys3,s3board - systems for Atlys,Nexsy2,Nexsy3,S3BOARD + rtl/sys_gen/w11a - top level designs for w11a SoC + nexys2,nexys3,s3board - w11a systems for Nexsy2,Nexsy3,S3BOARD + rtl/vlib - VHDL component libs + rtl/vlib/comlib - communication + rtl/vlib/genlib - general + rtl/vlib/memlib - memory + rtl/vlib/rbus - rri: rbus + rtl/vlib/rlink - rri: rlink + rtl/vlib/serport - serial port (UART) + rtl/vlib/simlib - simulation helper lib + rtl/vlib/xlib - Xilinx specific components + rtl/w11a - w11a core + tools helper programs + tools/asm-11 - pdp-11 assembler code + tools/asm-11/tests - test bench for asm-11 + tools/asm-11/tests-err - test bench for asm-11 (error check part) + tools/bin - scripts and binaries + tools/dox - Doxygen documentation configuration + tools/make - make includes + tools/fx2 - Firmware for Cypress FX2 USB Interface + tools/fx2/bin - pre-build firmware images in .ihx format + tools/fx2/src - C and asm sources + tools/fx2/sys - udev rules for USB on fpga eval boards + tools/oskit - setup files for Operation System kits + tools/oskit/... - several PDP-11 system kits available + tools/src - C++ sources for rlink backend software + tools/src/librlink - basic rlink interface + tools/src/librlinktpp - C++ to tcl binding for rlink interface + tools/src/librtcltools - support classes to implement Tcl bindings + tools/src/librtools - general support classes and methods + tools/src/librutiltpp - Tcl support commands implemented in C++ + tools/src/librw11 - w11 over rlink interface + tools/src/librwxxtpp - C++ to tcl binding for w11 over rlink iface + tools/tbench - w11 CPU test bench + tools/tcl - Tcl scripts + +3. Change Log ---------------------------------------------------------------- + +- w11a_V0.50 -> w11a_V0.60 cummulative summary of key changes + - 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) + - add Nexys3 port of w11a (in w11a_V0.54) + - add Cypress FX2 support (in w11a_V0.56 and w11a_V0.57) + - added LP11,PC11 support (in w11a_V0.58) + - reference system now ISE 14.7 and Ubuntu 12.04 64 bit, ghdl 0.31 + - many code cleanups; use numeric_std + - many documentation improvements + - development status upgraded to beta (from alpha) + +- trunk (2014-06-06: svn rev 25(oc) 559+(wfjm); tagged w11a_V0.60) +++++++++ + + - Summary + - many documentation updates; no functional changes + + - New features + - Tarballs with ready to use bit files and and all logfiles from the tool + chain can be downloaded from + http://www.retro11.de/data/oc_w11/bitkits/ + This area is organized in folders for different releases. The tarball + file names contain information about release, Xlinix tool, and design. + + - Changes + - documentation updates + - URL of oskits changed, they are now unter + http://www.retro11.de/data/oc_w11/oskits + +- trunk (2014-05-29: svn rev 22(oc) 556(wfjm); untagged w11a_V0.581) ++++++++ + + - Summary + - new reference system + - switched from ISE 13.3 to 14.7. + - map/par behaviour changed, unfortunately unfavorably for w11a. + On Nexys3 no timing closure anymore for 80 MHz, only 72 MHz can + be achieved now. + - new man pages (in doc/man/man1/) + - support for Spartan-6 CMTs in PLL and DCM mode + + - New features + - new modules + - rtl/vlib/xlib + - s6_cmt_sfs_unisim - Spartan-6 CMT for simple frequency synthesis + - s6_cmt_sfs_gsim - dito, simple ghdl simulation model + - tools/src/librutiltpp + - RtclSignalAction - Tcl signal handler + - RtclSystem - Tcl Unix system interface + - new files + - tools/bin/create_disk - creates a disk container file + - tools/bin/xtwi - Xilinx Tool Wrapper script for ISE + - tools/tcl/rw11/defs.tcl - w11a definitions + + - Changes + - rtl/make + - imp_*.opt - use -fastpaths, -u, -tsi for trce + - imp_s6_speed.opt - adopt for ISE 14.x + - generic_xflow.mk - use xtwi; trce tsi file; use -C for cpp + - generic_isim.mk - use xtwi + - generic_xflow_cpld.mk - use xtwi + - rtl/sys_gen/*/nexys3 + - .../sys_*.vhd - pll support, use clksys_vcodivide ect + - rtl/sys_gen/w11a/nexys3 + - sys_conf.vhd - use 72 MHz, no closure in ISE 14.x for 80 + - rtl/bplib/nexys(2|3) + - nexys(2|3)_time_fx2_ic.ucf - add VALID for hold time check + - tools/src/librwxxtpp + - RtclRw11Cpu - cp command options modified + - tools/bin + - vbomconv - add --viv_vhdl (for Vivado) + - tools/tcl/rw11 + - util.tcl - move definitions to defs.tcl + + - Bug fixes + - tools/src/librtools/RlogFile - fix date print (month was off by one) + - tools/tcl/rw11/asm.tcl - asmwait checks now pc if stop: defined + + - Other updates + - INSTALL_ghdl.txt - text reflects current situation on ghdl packages + +- trunk (2013-05-12: svn rev 21(oc) 518+(wfjm); untagged w11a_V0.58) ++++++++ + + - Summary + - C++ and Tcl based backend server now fully functional, supports with + DL11, RK11, LP11 and PC11 all devices available in w11a designs + - the old perl based backend server (pi_rri) is obsolete and removed + - operating system kits reorganized + + - New features + - new directory trees for + - tools/oskit - operating system kits + - new modules + - tools/src/librw11 + - Rw11*LP11 - classes for LP11 printer handling + - Rw11*PC11 - classes for PC11 paper tape handling + - Rw11*Stream* - classes for Virtual stream handling + - tools/src/librwxxtpp + - RtclRw11*LP11 - tcl iface for LP11 printer handling + - RtclRw11*PC11 - tcl iface for PC11 paper tape handling + - RtclRw11*Stream* - tcl iface for Virtual Stream handling + + - Changes + - renames + - the w11 backend quick starter now named ti_w11 and under tools/bin + (was rtl/sys_gen/w11a/tb/torri) + - all operating system image related material now under + tools/oskit (was under rtl/sys_gen/w11a/tb) + + - Bug fixes + - rtl/ibus/ibdr_lp11 - err flag logic fixed, was cleared in ibus racc read + - rtl/ibus/ibdr_pc11 - rbuf logic fixed. Was broken since ibus V2 update + in V0.51! Went untested because pc11 rarely used. + +- trunk (2013-04-27: svn rev 20(oc) 511(wfjm); untagged w11a_V0.57) +++++++++ + + - Summary + - new C++ and Tcl based backend server supports now RK11 handling + - w11a systems operate with rlink over USB on nexsy2 and nexsy3 boards. + See w11a_os_guide.txt for details + + - New features + - new modules + - rtl/bplib/fx2rlink - new vhdl lib with rlink over fx2 modules + - ioleds_sp1c_fx2 - io activity leds for rlink_sp1c_fx2 + - rlink_sp1c_fx2 - rlink over serport + fx2 combo + - tools/src/librw11 + - Rw11*RK11 - classes for RK11 disk handling + - Rw11*Disk* - classes for Virtual disk handling + - tools/src/librwxxtpp + - RtclRw11*RK11 - tcl iface for RK11 disk handling + - RtclRw11*Disk* - tcl iface for Virtual disk handling + - new files + - rtl/sys_gen/w11a/tb/torri - quick starter for new backend + + - Changes + - tcl module renames: + tools/tcl/rw11a -> tools/tcl/rw11 + + - Bug fixes + - tools/src/ReventLoop: poll list update logic in DoPoll() corrected + +- trunk (2013-04-13: svn rev 19(oc) 505(wfjm); untagged w11a_V0.562) +++++++++ + + - Summary + - V0.53 introduced a new C++ and Tcl based backend server, but only the + very basic rlink handling layer. This step release add now many support + classes for interfacing to w11 system designs, and the associated Tcl + bindings. + - add 'asm-11', a simple, Macro-11 syntax subset combatible, assembler. + Can be used stand-alone to generate 'absolute loader' format files, + but also integrates tightly into the Tcl environment and is used as + building block in the creation of CPU test benches. + - use now doxygen 1.8.3.1, generate c++,tcl, and vhdl source docs + See section 9. in INSTALL.txt for details. + + - New features + - new directory trees for + - tools/asm-11 - asm-11 code + - tools/asm-11/tests - test bench for asm-11 + - tools/asm-11/tests-err - test bench for asm-11 (error check part) + - tools/src/librw11 - w11 over rlink interface + - tools/src/librwxxtpp - C++ to tcl binding for w11 over rlink iface + - tools/tbench - w11 CPU test bench + - new modules + - tools/bin + - asm-11 - simple, Macro-11 syntax subset compatible, assembler + - asm-11_expect - expect checker for asm-11 test bench + - tools/dox + - *.Doxyfile - new descriptors c++,tcl,vhdl docs + - make_dox - driver script to generate c++,tcl,vhdl doxygen docs + + - Changes + - vhdl module renames: + vlib/serport -> vlib/serportlib + - vhdl module splits: + bplib/bpgen/bpgenlib -> bpgenlib + bpgenrbuslib + - C++ class splits + librtcltools/RtclProxyBase -> RtclCmdBase + RtclProxyBase + +- trunk (2013-01-06: svn rev 18(oc) 472(wfjm); untagged w11a_V0.561) +++++++++ + + - Summary + - Added simple simulation model of Cypress FX2 and test benches for + functional verifcation of FX2 controller + - Bugfixes in FX2 firmware and controller, works now also on Nexys3 & Atlys + - Added test systems for rlink over USB verification for Nexys3 & Atlys + + - New features + - new test benches + - rtl/sys_gen/tst_rlink_cuff/nexys2/ic/tb/tb_tst_rlink_cuff_ic_n2 + - new systems + - rtl/sys_gen/tst_rlink_cuff/nexys2/ic/sys_tst_rlink_cuff_ic_n3 + - rtl/sys_gen/tst_rlink_cuff/nexys2/ic/sys_tst_rlink_cuff_ic_atlys + + - Bug fixes + - tools/fx2/src: FX2 firmware now properly re-initializes hardware registers + and will work on Nexys3 and Atlys boards with default Digilent EPROM + - rtl/bplib/fx2lib: read pipeline logic in FX2 controller corrected + +- trunk (2013-01-02: svn rev 17(oc) 467(wfjm); untagged w11a_V0.56) ++++++++++ + + - Summary + - re-organized handling of board and derived clocks in test benches + - added message filter definitions for some designs (.mfset files) + - added Cypress EZ-USB FX2 controller (USB interface) + - added firmware for EZ-USB FX2 supporting jtag access and data transfer + - FPGA configure over USB now supported directly in make build flow + - added test systems for USB testing and rlink over USB verification + - no functional change of w11a CPU core or any pre-existing test systems + - Note: Carefully read the disclaimer about usage of USB VID/PID numbers + in the file README_USB-VID-PID.txt. You'll be responsible for any + misuse of the defaults provided with the project sources !! + + - New reference system + The development and test system was upgraded from Kubuntu 10.04 to 12.04. + The version of several key tools and libraries changed: + linux kernel 3.2.0 (was 2.6.32) + gcc/g++ 4.6.3 (was 4.4.3) + boost 1.46.1 (was 1.40) + libusb 1.0.9 (was 1.0.6) + perl 5.14.2 (was 5.10.1) + tcl 8.5.11 (was 8.4.19) + xilinx ise 13.3 (was 13.1) + --> see INSTALL.txt, INSTALL_ghdl.txt and INSTALL_urjtag.txt + + - New features + - added firmware for Cypress FX2 controller + - tools/fx2 + - bin - pre-build firmware images in .ihx file format + - src - C and asm sources + - sys - udev rules for usb interfaces on fpga eval boards + - new modules + - rtl/bplib/fx2lib + - fx2_2fifoctl_ic - Cypress EZ-USB FX2 controller (2 fifo; int clk) + - fx2_3fifoctl_ic - Cypress EZ-USB FX2 controller (3 fifo; int clk) + - new systems + - rtl/sys_gen/tst_fx2loop/nexys2/ic/sys_tst_fx2loop_ic_n2 + - rtl/sys_gen/tst_fx2loop/nexys2/ic3/sys_tst_fx2loop_ic3_n2 + - rtl/sys_gen/tst_rlink_cuff/nexys2/ic/sys_tst_rlink_cuff_ic_n2 + - tools/bin + - xilinx_sdf_ghdl_filter: tool to patch ISE sdf files for usage with ghdl + + - Changes + - documentation + - added a 'system requirements' section in INSTALL.txt + - added INSTALL_ghdl.txt and INSTALL_urjtag.txt covering ghdl and urjtag + - added README_USB-VID-PID.txt + - organizational changes + - added TCLINC,RETRO_FX2_VID,RETRO_FX2_PID environment variables + - functional changes + - tools/bin + - vbomconv - file name substitution handling redone; many vboms updated + - retired modules + - vlib/rlink/tb/ + - tbcore_rlink_dcm - obsolete, use tbcore_rlink + +- trunk (2011-12-23: svn rev 16(oc) 442(wfjm); untagged w11a_V0.55) +++++++++ + + - Summary + - added xon/xoff (software flow control) support to serport library + - added test systems for serport verification + - use new serport stack in sys_w11a_* and sys_tst_rlink_* systems + + - New features + - new modules + - vlib/serport + - serport_xonrx - xon/xoff logic rx path + - serport_xontx - xon/xoff logic tx path + - serport_1clock - serial port module (uart, fifo, flow control) + - vlib/rlink + - rlink_core8 - rlink core8 with 8bit interface + - rlink_sp1c - rlink_core8 + serport_1clock combo + - new unit tests + - bplib/s3board/tb/tb_s3_sram_memctl (for s3board sram controller + - bplib/nxcramlib/tb/tb_nx_cram_memctl_as (for nexys2,3 cram controller) + - new systems + - sys_gen/tst_serloop/nexys2/sys_tst_serloop1_n2 + - sys_gen/tst_serloop/nexys3/sys_tst_serloop1_n3 + - sys_gen/tst_serloop/s3board/sys_tst_serloop1_s3 + - sys_gen/tst_rlink/s3board/sys_tst_rlink_s3 + + - Changes + - retired modules + - vlib/rlink + - rlink_rlb2rl - obsolete, now all in rlink_core8 + - rlink_base - use now new rlink_core8 + - rlink_serport - obsolete, now all in rlink_sp1c + - rlink_base_serport - use now new rlink_sp1c + +- trunk (2011-12-04: svn rev 15(oc) 436(wfjm); untagged w11a_V0.54) +++++++++ + + - Summary + - added support for nexys3 board for w11a + + - New features + - new systems + - sys_gen/w11a/nexys3/sys_w11a_n3 + - sys_gen/w11a/nexys3/sys_tst_rlink_n3 + + - Changes + - module renames: + bplib/nexys2/n2_cram_dummy -> bplib/nxcramlib/nx_cram_dummy + bplib/nexys2/n2_cram_memctl_as -> bplib/nxcramlib/nx_cram_memctl_as + + - Bug fixes + - tools/src/lib*: backend libraries compile now on 64 bit systems + +- trunk (2011-11-20: svn rev 14(oc) 428(wfjm); untagged w11a_V0.532) +++++++++ + + - Summary + - generalized the 'human I/O' interface for s3board,nexys2/3 and atlys + - added test design for the 'human I/O' interface + - no functional change of w11a CPU core or any existing test systems + + - Changes + - functional changes + - use now 'a6' polynomial of Koopman et al for crc8 in rlink + - with one exception all vhdl sources use now numeric_std + - module renames: + vlib/xlib/dcm_sp_sfs_gsim -> vlib/xlib/dcm_sfs_gsim + vlib/xlib/dcm_sp_sfs_unisim -> vlib/xlib/dcm_sfs_unisim_s3e + vlib/xlib/tb/tb_dcm_sp_sfs -> vlib/xlib/tb/tb_dcm_sfs + + - New features + - new modules + - rtl/sys_gen/tst_snhumanio + - sub-tree with test design for 'human I/O' interface modules + - atlys, nexys2, and s3board directories contain the systems + for the respective Digilent boards + +- trunk (2011-09-11: svn rev 12(oc) 409(wfjm); untagged w11a_V0.531) +++++++++ + + - Summary + - Many small changes to prepare upcoming support for + - Spartan-6 boards (nexys3 and atlys) + - usage of Cypress FX2 USB interface on nexys2/3 and atlys boards + - no functional change of w11a CPU core or any test systems + + - Changes + - use boost libraries instead of custom coding: + - boost/function and /bind for callbacks, retire RmethDscBase and RmethDsc + - boost/foreach for some iterator loops + Note: boost 1.35 and gcc 4.3 or newer is required, see INSTALL.txt + - module renames: + bplib/s3board/s3_rs232_iob_int -> bplib/bpgen/bp_rs232_2line_iob + bplib/s3board/s3_rs232_iob_ext -> bplib/bpgen/bp_rs232_4line_iob + bplib/s3board/s3_dispdrv -> bplib/bpgen/sn_4x7segctl + bplib/s3board/s3_humanio -> bplib/bpgen/sn_humanio + bplib/s3board/s3_humanio_rbus -> bplib/bpgen/sn_humanio_rbus + - other renames: + tools/bin/impact_wrapper -> tools/bin/config_wrapper + - reorganize Makefile includes and xflow option files + rtl/vlib/Makefile.ghdl -> rtl/make/generic_ghdl.mk + rtl/vlib/Makefile.isim -> rtl/make/generic_isim.mk + rtl/vlib/Makefile.xflow -> rtl/make/generic_xflow.mk + rtl/vlib/xst_vhdl.opt -> rtl/make/syn_s3_speed.opt + rtl/vlib/balanced.opt -> rtl/make/imp_s3_speed.opt + +- trunk (2011-04-17: svn rev 11(oc) 376(wfjm); untagged w11a_V0.53) ++++++++++ + + - Summary + - Introduce C++ and Tcl based backend server. A set of C++ classes provide + the basic rlink communication primitives. Additional glue classes provide + a Tcl binding. This first phase contains the basic functionality needed + to control simple test benches. + - add an 'rlink exerciser' (tst_rlink) and a top level design for a Nexys2 + board (sys_tst_rlink_n2) and a test suite implemented in Tcl. + + - Note: No functional changes in w11a core and I/O system at this point! + The w11a demonstrator systems are still operated with the old + backend code (pi_rri). + + - New features + - new directory trees for + - C++ sources of backend (plus make and doxygen documentation support) + - tools/dox - Doxygen documentation configuration + - tools/make - make includes + - tools/src/librlink - basic rlink interface + - tools/src/librlinktpp - C++ to tcl binding for rlink interface + - tools/src/librtools - general support classes and methods + - tools/src/librtcltools - support classes to implement Tcl bindings + - tools/src/librutiltpp - Tcl support commands implemented in C++ + - VHDL sources of an 'rlink exerciser' + - rtl/sys_gen/tst_rlink - top level designs for an rlink tester + - rtl/sys_gen/tst_rlink/nexys2 - rlink tester system for Nexsy2 board + - Tcl sources of 'rlink exerciser' + - tools/tcl/rlink - defs and proc's for basic rlink functions + - tools/tcl/rutil - general support procs + - tools/tcl/rbtest - defs and proc's for rbd_tester + - tools/tcl/rbbram - defs and proc's for rbd_bram + - tools/tcl/rbmoni - defs and proc's for rbd_rbmon + - tools/tcl/rbs3hio - defs and proc's for s3_humanio_rbus + - tools/tcl/tst_rlink - defs and proc's for tst_rlink + - new modules + - rtl/vlib/rbus + - rbd_bram - rbus bram test target + - rbd_eyemon - eye monitor for serport's + - rbd_rbmon - rbus monitor + - rbd_tester - rbus tester + - rbd_timer - usec precision timer + - rtl/vlib/memlib + - additional wrappers for distributed and block memories added + - tools/bin + - ti_rri: Tcl driver for rlink tests and servers (will replace pi_rri) + +- trunk (2011-01-02: svn rev 9(oc) 352(wfjm); untagged w11a_V0.52) +++++++++++ + + - Summary + - Introduce rbus protocol V3 + - reorganize rbus and rlink modules, many renames + + - New features + - vlib/rbus + - added several rbus devices useful for debugging + - rbd_tester: test target, used for example in test benches + + - Changes + - module renames: + - the rri (remote-register-interface) components were re-organized and + cleanly separated into rbus and rlink components: + rri/rb_sres_or_* -> rbus/rb_sres_or_* + rri/rri_core -> rlink/rlink_core + rri/rri_base_serport -> rlink/rlink_base_serport + rri/rrilib -> rbus/rblib + -> rlink/rlinklib + rri/rri_serport -> rlink/rlink_serport + rri/tb/rritb_sres_or_mon -> rbus/rb_sres_or_mon + - the rri test bench monitors were reorganized and renamed + rri/tb/rritb_cpmon -> rlink/rlink_mon + rri/tb/rritb_cpmon_sb -> rlink/rlink_mon_sb + rri/tb/rritb_rbmon -> rbus/rb_mon + rri/tb/rritb_rbmon_sb -> rbus/rb_mon_sb + - the rri low level test bench were also renamed + rri/tb/tb_rri -> rlink/tb/tb_rlink + rri/tb/tb_rri_core -> rlink/tb/tb_rlink_direct + rri/tb/tb_rri_serport -> rlink/tb/tb_rlink_serport + - the base modules for rlink+cext based test benches were renamed + rri/tb/rritb_core_cm -> rlink/tb/tbcore_rlink_dcm + rri/tb/rritb_core -> rlink/tb/tbcore_rlink + rri/tb/vhpi_rriext -> rlink/tb/rlink_cext_vhpi + rri/tb/cext_rriext.c -> rlink/tb/rlink_cext.c + + - other rri/rbus related renames + bplib/s3board/s3_humanio_rri -> s3_humanio_rbus + w11a/pdp11_core_rri -> pdp11_core_rbus + + - other renames + w11a/tb/tb_pdp11_core -> tb_pdp11core + + - signal renames: + - rlink interface (defined in rlink/rlinklib.vhd): + - rename rlink port signals: + CP_* -> RL_* + - rename status bit names to better reflect their usage in v3: + ccrc -> cerr - indicates cmd crc error or other cmd level abort + dcrc -> derr - indicates data crc error or other data level abort + ioto -> rbnak - indicates rbus abort, either no ack or timeout + ioerr -> rberr - indicates that rbus err flag was set + + - migrate to rbus protocol version 3 + - in rb_mreq use now aval,re,we instead of req,we + - basic rbus transaction now takes 2 cycles, one for address select, one + for data exchange. Same concept and reasoning behind as in ibus V2. + + - vlib/rlink/rlink_core + - cerr and derr state flags now set on command or data crc errors as well + as on eop/nak aborts when command or wblk data is received. + - has now 'monitor port', RL_MONI. + - RL_FLUSH port removed, the flush logic is now in rlink_serport + + - restructured rlink modules + - rlink_core is the rlink protocol engine with a 9 bit wide interface + - rlink_rlb2rl (new) is an adapter to a byte wide interface + - rlink_base (new) combines rlink_core and rlink_rlb2rl + - rlink_serport (re-written) is an adapter to a serial interface + - rlink_base_serport (renamed) combines rlink_base and rlink_serport + +- trunk (2010-11-28: svn rev 8(oc) 341(wfjm); untagged w11a_V0.51) +++++++++++ + + - Summary + - Introduce ibus protocol V2 + - Nexys2 systems use DCM + - sys_w11a_n2 now runs with 58 MHz + + - New features + - ibus + - added ib_sres_or_mon to check for miss-behaving ibus devices + - added ib_sel to encapsulate address select logic + - nexys2 systems + - now DCM derived system clock supported + - sys_gen/w11a/nexys2 + - sys_w11a_n2 now runs with 58 MHz clksys + + - Changes + - module renames: + - in future 'box' is used for large autonomous blocks, therefore use + the term unit for purely sequential logic modules: + pdp11_abox -> pdp11_ounit + pdp11_dbox -> pdp11_aunit + pdp11_lbox -> pdp11_lunit + pdp11_mbox -> pdp11_munit + + - signal renames: + - renamed RRI_LAM -> RB_LAM in all ibus devices + - renamed CLK -> I_CLK50 in all top level nexys2 and s3board designs + + - migrate to ibus protocol version 2 + - in ib_mreq use now aval,re,we,rmw instead of req,we,dip + - basic ibus transaction now takes 2 cycles, one for address select, one + for data exchange. This avoids too long logic paths in the ibus logic. + + - Bug fixes + - rtl/vlib/Makefile.xflow: use default .opt files under rtl/vlib again. + +- w11a_V0.5 (2010-07-23) +++++++++++++++++++++++++++++++++++++++++++++++++++++ + + Initial release with + - w11a CPU core + - basic set of peripherals: kw11l, dl11, lp11, pc11, rk11/rk05 + - just for fun: iist (not fully implemented and tested yet) + - two complete system configurations with + - for a Digilent S3BOARD rtl/sys_gen/w11a/s3board/sys_w11a_s3 + - for a Digilent Nexys2 rtl/sys_gen/w11a/nexys2/sys_w11a_n2 diff --git a/doc/README.txt b/doc/README.txt index 8b9b3c63..6b53d053 100644 --- a/doc/README.txt +++ b/doc/README.txt @@ -1,12 +1,11 @@ -$Id: README.txt 559 2014-06-06 21:26:47Z mueller $ +$Id: README.txt 579 2014-08-08 20:39:46Z mueller $ Release notes for w11a Table of content: 1. Documentation - 2. Files - 3. Change Log + 2. Change Log 1. Documentation ------------------------------------------------------------- @@ -15,75 +14,50 @@ Release notes for w11a * README.txt: release notes * INSTALL.txt: installation and building test benches and systems + * FILES.txt: short description of the directory layout, what is where ? * w11a_tb_guide.txt: running test benches * w11a_os_guide.txt: booting operating systems * w11a_known_issues.txt: known differences, limitations and issues -2. Files --------------------------------------------------------------------- +2. Change Log ---------------------------------------------------------------- - doc Documentation - doc/man man pages for retro11 commands - rtl VHDL sources - rtl/bplib - board and component support libs - rtl/bplib/atlys - for Digilent Atlys board - rtl/bplib/fx2lib - for Cypress FX2 USB interface controller - rtl/bplib/issi - for ISSI parts - rtl/bplib/micron - for Micron parts - rtl/bplib/nexys2 - for Digilent Nexsy2 board - rtl/bplib/nexys3 - for Digilent Nexsy3 board - rtl/bplib/nxcramlib - for CRAM part used in Nexys2/3 - rtl/bplib/s3board - for Digilent S3BOARD - rtl/ibus - ibus devices (UNIBUS peripherals) - rtl/sys_gen - top level designs - rtl/sys_gen/tst_fx2loop - top level designs for Cypress FX2 tester - nexys2,nexys3 - systems for Nexsy2,Nexsy3 - rtl/sys_gen/tst_rlink - top level designs for an rlink tester - nexys2,nexys3,s3board - systems for Nexsy2,Nexsy3,S3BOARD - rtl/sys_gen/tst_rlink_cuff - top level designs for rlink over FX2 tester - nexys2,nexys3,atlys - systems for Atlys,Nexsy2,Nexsy3 - rtl/sys_gen/tst_serloop - top level designs for serport loop tester - nexys2,nexys3,s3board - systems for Nexsy2,Nexsy3,S3BOARD - rtl/sys_gen/tst_snhumanio - top level designs for human I/O tester - atlys,nexys2,nexys3,s3board - systems for Atlys,Nexsy2,Nexsy3,S3BOARD - rtl/sys_gen/w11a - top level designs for w11a SoC - nexys2,nexys3,s3board - w11a systems for Nexsy2,Nexsy3,S3BOARD - rtl/vlib - VHDL component libs - rtl/vlib/comlib - communication - rtl/vlib/genlib - general - rtl/vlib/memlib - memory - rtl/vlib/rbus - rri: rbus - rtl/vlib/rlink - rri: rlink - rtl/vlib/serport - serial port (UART) - rtl/vlib/simlib - simulation helper lib - rtl/vlib/xlib - Xilinx specific components - rtl/w11a - w11a core - tools helper programs - tools/asm-11 - pdp-11 assembler code - tools/asm-11/tests - test bench for asm-11 - tools/asm-11/tests-err - test bench for asm-11 (error check part) - tools/bin - scripts and binaries - tools/dox - Doxygen documentation configuration - tools/make - make includes - tools/fx2 - Firmware for Cypress FX2 USB Interface - tools/fx2/bin - pre-build firmware images in .ihx format - tools/fx2/src - C and asm sources - tools/fx2/sys - udev rules for USB on fpga eval boards - tools/oskit - setup files for Operation System kits - tools/oskit/... - several PDP-11 system kits available - tools/src - C++ sources for rlink backend software - tools/src/librlink - basic rlink interface - tools/src/librlinktpp - C++ to tcl binding for rlink interface - tools/src/librtcltools - support classes to implement Tcl bindings - tools/src/librtools - general support classes and methods - tools/src/librutiltpp - Tcl support commands implemented in C++ - tools/src/librw11 - w11 over rlink interface - tools/src/librwxxtpp - C++ to tcl binding for w11 over rlink iface - tools/tbench - w11 CPU test bench - tools/tcl - Tcl scripts +- trunk (2014-08-08: svn rev 25(oc) 579(wfjm); tagged w11a_V0.61) ++++++++++ -3. Change Log ---------------------------------------------------------------- + - 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= 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.50 -> w11a_V0.60 cummulative summary of key changes +- w11a_V0.6 (2014-06-06) +++++++++++++++++++++++++++++++++++++++++++++++++++++ + + 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) @@ -95,507 +69,7 @@ Release notes for w11a - many documentation improvements - development status upgraded to beta (from alpha) -- trunk (2014-06-06: svn rev 23(oc) 559+(wfjm); tagged w11a_V0.60) +++++++++ - - - Summary - - many documentation updates; no functional changes - - - New features - - Tarballs with ready to use bit files and and all logfiles from the tool - chain can be downloaded from - http://www.retro11.de/data/oc_w11/bitkits/ - This area is organized in folders for different releases. The tarball - file names contain information about release, Xlinix tool, and design. - - - Changes - - documentation updates - - URL of oskits changed, they are now unter - http://www.retro11.de/data/oc_w11/oskits - -- trunk (2014-05-29: svn rev 22(oc) 556(wfjm); untagged w11a_V0.581) ++++++++ - - - Summary - - new reference system - - switched from ISE 13.3 to 14.7. - - map/par behaviour changed, unfortunately unfavorably for w11a. - On Nexys3 no timing closure anymore for 80 MHz, only 72 MHz can - be achieved now. - - new man pages (in doc/man/man1/) - - support for Spartan-6 CMTs in PLL and DCM mode - - - New features - - new modules - - rtl/vlib/xlib - - s6_cmt_sfs_unisim - Spartan-6 CMT for simple frequency synthesis - - s6_cmt_sfs_gsim - dito, simple ghdl simulation model - - tools/src/librutiltpp - - RtclSignalAction - Tcl signal handler - - RtclSystem - Tcl Unix system interface - - new files - - tools/bin/create_disk - creates a disk container file - - tools/bin/xtwi - Xilinx Tool Wrapper script for ISE - - tools/tcl/rw11/defs.tcl - w11a definitions - - - Changes - - rtl/make - - imp_*.opt - use -fastpaths, -u, -tsi for trce - - imp_s6_speed.opt - adopt for ISE 14.x - - generic_xflow.mk - use xtwi; trce tsi file; use -C for cpp - - generic_isim.mk - use xtwi - - generic_xflow_cpld.mk - use xtwi - - rtl/sys_gen/*/nexys3 - - .../sys_*.vhd - pll support, use clksys_vcodivide ect - - rtl/sys_gen/w11a/nexys3 - - sys_conf.vhd - use 72 MHz, no closure in ISE 14.x for 80 - - rtl/bplib/nexys(2|3) - - nexys(2|3)_time_fx2_ic.ucf - add VALID for hold time check - - tools/src/librwxxtpp - - RtclRw11Cpu - cp command options modified - - tools/bin - - vbomconv - add --viv_vhdl (for Vivado) - - tools/tcl/rw11 - - util.tcl - move definitions to defs.tcl - - - Bug fixes - - tools/src/librtools/RlogFile - fix date print (month was off by one) - - tools/tcl/rw11/asm.tcl - asmwait checks now pc if stop: defined - - - Other updates - - INSTALL_ghdl.txt - text reflects current situation on ghdl packages - -- trunk (2013-05-12: svn rev 21(oc) 518+(wfjm); untagged w11a_V0.58) ++++++++ - - - Summary - - C++ and Tcl based backend server now fully functional, supports with - DL11, RK11, LP11 and PC11 all devices available in w11a designs - - the old perl based backend server (pi_rri) is obsolete and removed - - operating system kits reorganized - - - New features - - new directory trees for - - tools/oskit - operating system kits - - new modules - - tools/src/librw11 - - Rw11*LP11 - classes for LP11 printer handling - - Rw11*PC11 - classes for PC11 paper tape handling - - Rw11*Stream* - classes for Virtual stream handling - - tools/src/librwxxtpp - - RtclRw11*LP11 - tcl iface for LP11 printer handling - - RtclRw11*PC11 - tcl iface for PC11 paper tape handling - - RtclRw11*Stream* - tcl iface for Virtual Stream handling - - - Changes - - renames - - the w11 backend quick starter now named ti_w11 and under tools/bin - (was rtl/sys_gen/w11a/tb/torri) - - all operating system image related material now under - tools/oskit (was under rtl/sys_gen/w11a/tb) - - - Bug fixes - - rtl/ibus/ibdr_lp11 - err flag logic fixed, was cleared in ibus racc read - - rtl/ibus/ibdr_pc11 - rbuf logic fixed. Was broken since ibus V2 update - in V0.51! Went untested because pc11 rarely used. - -- trunk (2013-04-27: svn rev 20(oc) 511(wfjm); untagged w11a_V0.57) +++++++++ - - - Summary - - new C++ and Tcl based backend server supports now RK11 handling - - w11a systems operate with rlink over USB on nexsy2 and nexsy3 boards. - See w11a_os_guide.txt for details - - - New features - - new modules - - rtl/bplib/fx2rlink - new vhdl lib with rlink over fx2 modules - - ioleds_sp1c_fx2 - io activity leds for rlink_sp1c_fx2 - - rlink_sp1c_fx2 - rlink over serport + fx2 combo - - tools/src/librw11 - - Rw11*RK11 - classes for RK11 disk handling - - Rw11*Disk* - classes for Virtual disk handling - - tools/src/librwxxtpp - - RtclRw11*RK11 - tcl iface for RK11 disk handling - - RtclRw11*Disk* - tcl iface for Virtual disk handling - - new files - - rtl/sys_gen/w11a/tb/torri - quick starter for new backend - - - Changes - - tcl module renames: - tools/tcl/rw11a -> tools/tcl/rw11 - - - Bug fixes - - tools/src/ReventLoop: poll list update logic in DoPoll() corrected - -- trunk (2013-04-13: svn rev 19(oc) 505(wfjm); untagged w11a_V0.562) +++++++++ - - - Summary - - V0.53 introduced a new C++ and Tcl based backend server, but only the - very basic rlink handling layer. This step release add now many support - classes for interfacing to w11 system designs, and the associated Tcl - bindings. - - add 'asm-11', a simple, Macro-11 syntax subset combatible, assembler. - Can be used stand-alone to generate 'absolute loader' format files, - but also integrates tightly into the Tcl environment and is used as - building block in the creation of CPU test benches. - - use now doxygen 1.8.3.1, generate c++,tcl, and vhdl source docs - See section 9. in INSTALL.txt for details. - - - New features - - new directory trees for - - tools/asm-11 - asm-11 code - - tools/asm-11/tests - test bench for asm-11 - - tools/asm-11/tests-err - test bench for asm-11 (error check part) - - tools/src/librw11 - w11 over rlink interface - - tools/src/librwxxtpp - C++ to tcl binding for w11 over rlink iface - - tools/tbench - w11 CPU test bench - - new modules - - tools/bin - - asm-11 - simple, Macro-11 syntax subset compatible, assembler - - asm-11_expect - expect checker for asm-11 test bench - - tools/dox - - *.Doxyfile - new descriptors c++,tcl,vhdl docs - - make_dox - driver script to generate c++,tcl,vhdl doxygen docs - - - Changes - - vhdl module renames: - vlib/serport -> vlib/serportlib - - vhdl module splits: - bplib/bpgen/bpgenlib -> bpgenlib + bpgenrbuslib - - C++ class splits - librtcltools/RtclProxyBase -> RtclCmdBase + RtclProxyBase - -- trunk (2013-01-06: svn rev 18(oc) 472(wfjm); untagged w11a_V0.561) +++++++++ - - - Summary - - Added simple simulation model of Cypress FX2 and test benches for - functional verifcation of FX2 controller - - Bugfixes in FX2 firmware and controller, works now also on Nexys3 & Atlys - - Added test systems for rlink over USB verification for Nexys3 & Atlys - - - New features - - new test benches - - rtl/sys_gen/tst_rlink_cuff/nexys2/ic/tb/tb_tst_rlink_cuff_ic_n2 - - new systems - - rtl/sys_gen/tst_rlink_cuff/nexys2/ic/sys_tst_rlink_cuff_ic_n3 - - rtl/sys_gen/tst_rlink_cuff/nexys2/ic/sys_tst_rlink_cuff_ic_atlys - - - Bug fixes - - tools/fx2/src: FX2 firmware now properly re-initializes hardware registers - and will work on Nexys3 and Atlys boards with default Digilent EPROM - - rtl/bplib/fx2lib: read pipeline logic in FX2 controller corrected - -- trunk (2013-01-02: svn rev 17(oc) 467(wfjm); untagged w11a_V0.56) ++++++++++ - - - Summary - - re-organized handling of board and derived clocks in test benches - - added message filter definitions for some designs (.mfset files) - - added Cypress EZ-USB FX2 controller (USB interface) - - added firmware for EZ-USB FX2 supporting jtag access and data transfer - - FPGA configure over USB now supported directly in make build flow - - added test systems for USB testing and rlink over USB verification - - no functional change of w11a CPU core or any pre-existing test systems - - Note: Carefully read the disclaimer about usage of USB VID/PID numbers - in the file README_USB-VID-PID.txt. You'll be responsible for any - misuse of the defaults provided with the project sources !! - - - New reference system - The development and test system was upgraded from Kubuntu 10.04 to 12.04. - The version of several key tools and libraries changed: - linux kernel 3.2.0 (was 2.6.32) - gcc/g++ 4.6.3 (was 4.4.3) - boost 1.46.1 (was 1.40) - libusb 1.0.9 (was 1.0.6) - perl 5.14.2 (was 5.10.1) - tcl 8.5.11 (was 8.4.19) - xilinx ise 13.3 (was 13.1) - --> see INSTALL.txt, INSTALL_ghdl.txt and INSTALL_urjtag.txt - - - New features - - added firmware for Cypress FX2 controller - - tools/fx2 - - bin - pre-build firmware images in .ihx file format - - src - C and asm sources - - sys - udev rules for usb interfaces on fpga eval boards - - new modules - - rtl/bplib/fx2lib - - fx2_2fifoctl_ic - Cypress EZ-USB FX2 controller (2 fifo; int clk) - - fx2_3fifoctl_ic - Cypress EZ-USB FX2 controller (3 fifo; int clk) - - new systems - - rtl/sys_gen/tst_fx2loop/nexys2/ic/sys_tst_fx2loop_ic_n2 - - rtl/sys_gen/tst_fx2loop/nexys2/ic3/sys_tst_fx2loop_ic3_n2 - - rtl/sys_gen/tst_rlink_cuff/nexys2/ic/sys_tst_rlink_cuff_ic_n2 - - tools/bin - - xilinx_sdf_ghdl_filter: tool to patch ISE sdf files for usage with ghdl - - - Changes - - documentation - - added a 'system requirements' section in INSTALL.txt - - added INSTALL_ghdl.txt and INSTALL_urjtag.txt covering ghdl and urjtag - - added README_USB-VID-PID.txt - - organizational changes - - added TCLINC,RETRO_FX2_VID,RETRO_FX2_PID environment variables - - functional changes - - tools/bin - - vbomconv - file name substitution handling redone; many vboms updated - - retired modules - - vlib/rlink/tb/ - - tbcore_rlink_dcm - obsolete, use tbcore_rlink - -- trunk (2011-12-23: svn rev 16(oc) 442(wfjm); untagged w11a_V0.55) +++++++++ - - - Summary - - added xon/xoff (software flow control) support to serport library - - added test systems for serport verification - - use new serport stack in sys_w11a_* and sys_tst_rlink_* systems - - - New features - - new modules - - vlib/serport - - serport_xonrx - xon/xoff logic rx path - - serport_xontx - xon/xoff logic tx path - - serport_1clock - serial port module (uart, fifo, flow control) - - vlib/rlink - - rlink_core8 - rlink core8 with 8bit interface - - rlink_sp1c - rlink_core8 + serport_1clock combo - - new unit tests - - bplib/s3board/tb/tb_s3_sram_memctl (for s3board sram controller - - bplib/nxcramlib/tb/tb_nx_cram_memctl_as (for nexys2,3 cram controller) - - new systems - - sys_gen/tst_serloop/nexys2/sys_tst_serloop1_n2 - - sys_gen/tst_serloop/nexys3/sys_tst_serloop1_n3 - - sys_gen/tst_serloop/s3board/sys_tst_serloop1_s3 - - sys_gen/tst_rlink/s3board/sys_tst_rlink_s3 - - - Changes - - retired modules - - vlib/rlink - - rlink_rlb2rl - obsolete, now all in rlink_core8 - - rlink_base - use now new rlink_core8 - - rlink_serport - obsolete, now all in rlink_sp1c - - rlink_base_serport - use now new rlink_sp1c - -- trunk (2011-12-04: svn rev 15(oc) 436(wfjm); untagged w11a_V0.54) +++++++++ - - - Summary - - added support for nexys3 board for w11a - - - New features - - new systems - - sys_gen/w11a/nexys3/sys_w11a_n3 - - sys_gen/w11a/nexys3/sys_tst_rlink_n3 - - - Changes - - module renames: - bplib/nexys2/n2_cram_dummy -> bplib/nxcramlib/nx_cram_dummy - bplib/nexys2/n2_cram_memctl_as -> bplib/nxcramlib/nx_cram_memctl_as - - - Bug fixes - - tools/src/lib*: backend libraries compile now on 64 bit systems - -- trunk (2011-11-20: svn rev 14(oc) 428(wfjm); untagged w11a_V0.532) +++++++++ - - - Summary - - generalized the 'human I/O' interface for s3board,nexys2/3 and atlys - - added test design for the 'human I/O' interface - - no functional change of w11a CPU core or any existing test systems - - - Changes - - functional changes - - use now 'a6' polynomial of Koopman et al for crc8 in rlink - - with one exception all vhdl sources use now numeric_std - - module renames: - vlib/xlib/dcm_sp_sfs_gsim -> vlib/xlib/dcm_sfs_gsim - vlib/xlib/dcm_sp_sfs_unisim -> vlib/xlib/dcm_sfs_unisim_s3e - vlib/xlib/tb/tb_dcm_sp_sfs -> vlib/xlib/tb/tb_dcm_sfs - - - New features - - new modules - - rtl/sys_gen/tst_snhumanio - - sub-tree with test design for 'human I/O' interface modules - - atlys, nexys2, and s3board directories contain the systems - for the respective Digilent boards - -- trunk (2011-09-11: svn rev 12(oc) 409(wfjm); untagged w11a_V0.531) +++++++++ - - - Summary - - Many small changes to prepare upcoming support for - - Spartan-6 boards (nexys3 and atlys) - - usage of Cypress FX2 USB interface on nexys2/3 and atlys boards - - no functional change of w11a CPU core or any test systems - - - Changes - - use boost libraries instead of custom coding: - - boost/function and /bind for callbacks, retire RmethDscBase and RmethDsc - - boost/foreach for some iterator loops - Note: boost 1.35 and gcc 4.3 or newer is required, see INSTALL.txt - - module renames: - bplib/s3board/s3_rs232_iob_int -> bplib/bpgen/bp_rs232_2line_iob - bplib/s3board/s3_rs232_iob_ext -> bplib/bpgen/bp_rs232_4line_iob - bplib/s3board/s3_dispdrv -> bplib/bpgen/sn_4x7segctl - bplib/s3board/s3_humanio -> bplib/bpgen/sn_humanio - bplib/s3board/s3_humanio_rbus -> bplib/bpgen/sn_humanio_rbus - - other renames: - tools/bin/impact_wrapper -> tools/bin/config_wrapper - - reorganize Makefile includes and xflow option files - rtl/vlib/Makefile.ghdl -> rtl/make/generic_ghdl.mk - rtl/vlib/Makefile.isim -> rtl/make/generic_isim.mk - rtl/vlib/Makefile.xflow -> rtl/make/generic_xflow.mk - rtl/vlib/xst_vhdl.opt -> rtl/make/syn_s3_speed.opt - rtl/vlib/balanced.opt -> rtl/make/imp_s3_speed.opt - -- trunk (2011-04-17: svn rev 11(oc) 376(wfjm); untagged w11a_V0.53) ++++++++++ - - - Summary - - Introduce C++ and Tcl based backend server. A set of C++ classes provide - the basic rlink communication primitives. Additional glue classes provide - a Tcl binding. This first phase contains the basic functionality needed - to control simple test benches. - - add an 'rlink exerciser' (tst_rlink) and a top level design for a Nexys2 - board (sys_tst_rlink_n2) and a test suite implemented in Tcl. - - - Note: No functional changes in w11a core and I/O system at this point! - The w11a demonstrator systems are still operated with the old - backend code (pi_rri). - - - New features - - new directory trees for - - C++ sources of backend (plus make and doxygen documentation support) - - tools/dox - Doxygen documentation configuration - - tools/make - make includes - - tools/src/librlink - basic rlink interface - - tools/src/librlinktpp - C++ to tcl binding for rlink interface - - tools/src/librtools - general support classes and methods - - tools/src/librtcltools - support classes to implement Tcl bindings - - tools/src/librutiltpp - Tcl support commands implemented in C++ - - VHDL sources of an 'rlink exerciser' - - rtl/sys_gen/tst_rlink - top level designs for an rlink tester - - rtl/sys_gen/tst_rlink/nexys2 - rlink tester system for Nexsy2 board - - Tcl sources of 'rlink exerciser' - - tools/tcl/rlink - defs and proc's for basic rlink functions - - tools/tcl/rutil - general support procs - - tools/tcl/rbtest - defs and proc's for rbd_tester - - tools/tcl/rbbram - defs and proc's for rbd_bram - - tools/tcl/rbmoni - defs and proc's for rbd_rbmon - - tools/tcl/rbs3hio - defs and proc's for s3_humanio_rbus - - tools/tcl/tst_rlink - defs and proc's for tst_rlink - - new modules - - rtl/vlib/rbus - - rbd_bram - rbus bram test target - - rbd_eyemon - eye monitor for serport's - - rbd_rbmon - rbus monitor - - rbd_tester - rbus tester - - rbd_timer - usec precision timer - - rtl/vlib/memlib - - additional wrappers for distributed and block memories added - - tools/bin - - ti_rri: Tcl driver for rlink tests and servers (will replace pi_rri) - -- trunk (2011-01-02: svn rev 9(oc) 352(wfjm); untagged w11a_V0.52) +++++++++++ - - - Summary - - Introduce rbus protocol V3 - - reorganize rbus and rlink modules, many renames - - - New features - - vlib/rbus - - added several rbus devices useful for debugging - - rbd_tester: test target, used for example in test benches - - - Changes - - module renames: - - the rri (remote-register-interface) components were re-organized and - cleanly separated into rbus and rlink components: - rri/rb_sres_or_* -> rbus/rb_sres_or_* - rri/rri_core -> rlink/rlink_core - rri/rri_base_serport -> rlink/rlink_base_serport - rri/rrilib -> rbus/rblib - -> rlink/rlinklib - rri/rri_serport -> rlink/rlink_serport - rri/tb/rritb_sres_or_mon -> rbus/rb_sres_or_mon - - the rri test bench monitors were reorganized and renamed - rri/tb/rritb_cpmon -> rlink/rlink_mon - rri/tb/rritb_cpmon_sb -> rlink/rlink_mon_sb - rri/tb/rritb_rbmon -> rbus/rb_mon - rri/tb/rritb_rbmon_sb -> rbus/rb_mon_sb - - the rri low level test bench were also renamed - rri/tb/tb_rri -> rlink/tb/tb_rlink - rri/tb/tb_rri_core -> rlink/tb/tb_rlink_direct - rri/tb/tb_rri_serport -> rlink/tb/tb_rlink_serport - - the base modules for rlink+cext based test benches were renamed - rri/tb/rritb_core_cm -> rlink/tb/tbcore_rlink_dcm - rri/tb/rritb_core -> rlink/tb/tbcore_rlink - rri/tb/vhpi_rriext -> rlink/tb/rlink_cext_vhpi - rri/tb/cext_rriext.c -> rlink/tb/rlink_cext.c - - - other rri/rbus related renames - bplib/s3board/s3_humanio_rri -> s3_humanio_rbus - w11a/pdp11_core_rri -> pdp11_core_rbus - - - other renames - w11a/tb/tb_pdp11_core -> tb_pdp11core - - - signal renames: - - rlink interface (defined in rlink/rlinklib.vhd): - - rename rlink port signals: - CP_* -> RL_* - - rename status bit names to better reflect their usage in v3: - ccrc -> cerr - indicates cmd crc error or other cmd level abort - dcrc -> derr - indicates data crc error or other data level abort - ioto -> rbnak - indicates rbus abort, either no ack or timeout - ioerr -> rberr - indicates that rbus err flag was set - - - migrate to rbus protocol version 3 - - in rb_mreq use now aval,re,we instead of req,we - - basic rbus transaction now takes 2 cycles, one for address select, one - for data exchange. Same concept and reasoning behind as in ibus V2. - - - vlib/rlink/rlink_core - - cerr and derr state flags now set on command or data crc errors as well - as on eop/nak aborts when command or wblk data is received. - - has now 'monitor port', RL_MONI. - - RL_FLUSH port removed, the flush logic is now in rlink_serport - - - restructured rlink modules - - rlink_core is the rlink protocol engine with a 9 bit wide interface - - rlink_rlb2rl (new) is an adapter to a byte wide interface - - rlink_base (new) combines rlink_core and rlink_rlb2rl - - rlink_serport (re-written) is an adapter to a serial interface - - rlink_base_serport (renamed) combines rlink_base and rlink_serport - -- trunk (2010-11-28: svn rev 8(oc) 341(wfjm); untagged w11a_V0.51) +++++++++++ - - - Summary - - Introduce ibus protocol V2 - - Nexys2 systems use DCM - - sys_w11a_n2 now runs with 58 MHz - - - New features - - ibus - - added ib_sres_or_mon to check for miss-behaving ibus devices - - added ib_sel to encapsulate address select logic - - nexys2 systems - - now DCM derived system clock supported - - sys_gen/w11a/nexys2 - - sys_w11a_n2 now runs with 58 MHz clksys - - - Changes - - module renames: - - in future 'box' is used for large autonomous blocks, therefore use - the term unit for purely sequential logic modules: - pdp11_abox -> pdp11_ounit - pdp11_dbox -> pdp11_aunit - pdp11_lbox -> pdp11_lunit - pdp11_mbox -> pdp11_munit - - - signal renames: - - renamed RRI_LAM -> RB_LAM in all ibus devices - - renamed CLK -> I_CLK50 in all top level nexys2 and s3board designs - - - migrate to ibus protocol version 2 - - in ib_mreq use now aval,re,we,rmw instead of req,we,dip - - basic ibus transaction now takes 2 cycles, one for address select, one - for data exchange. This avoids too long logic paths in the ibus logic. - - - Bug fixes - - rtl/vlib/Makefile.xflow: use default .opt files under rtl/vlib again. + for details see README-w11a_V.50-w11a_V0.60.txt - w11a_V0.5 (2010-07-23) +++++++++++++++++++++++++++++++++++++++++++++++++++++ diff --git a/doc/man/man1/config_wrapper.1 b/doc/man/man1/config_wrapper.1 index bafbf211..10b5a791 100644 --- a/doc/man/man1/config_wrapper.1 +++ b/doc/man/man1/config_wrapper.1 @@ -31,9 +31,9 @@ The \fICOMMAND\fP argument controls the action: .RS 3 .PD 0 -.IP \fBiconfigf\fP 10 +.IP \fBiconfig\fP 10 configure using \fBimpact\fP with \fI.bit\fP file \fIFILE\fP -.IP \fBjconfigf\fP +.IP \fBjconfig\fP configure using \fBjtag\fP(1) with \fI.svf\fP file \fIFILE\fP .IP \fBbit2svf\fP create a \fI.svf\fP file from the \fI.bit\fP file \fIFILE\fP diff --git a/doc/man/man1/ti_w11.1 b/doc/man/man1/ti_w11.1 index ce0c6e6e..1da3e12e 100644 --- a/doc/man/man1/ti_w11.1 +++ b/doc/man/man1/ti_w11.1 @@ -1,5 +1,5 @@ .\" -*- nroff -*- -.\" $Id: ti_w11.1 550 2014-02-03 08:16:57Z mueller $ +.\" $Id: ti_w11.1 563 2014-06-22 15:49:09Z mueller $ .\" .\" Copyright 2013- by Walter F.J. Mueller .\" @@ -70,7 +70,7 @@ is connected via USB. \fBti_rri\fP(1) will be started and the given boot script executed. .IP "\fBti_w11 -n3 -e $RETROBASE/tools/asm-11/w11/sys/dl11/simple_out.mac\fR" -Will start the \fItb_w11a_n3 test\fP bench in \fBghdl\fP(1), on the fly +Will start the \fItb_w11a_n3\fP test bench in \fBghdl\fP(1), on the fly compile the \fIsimple_out.mac\fP test program with \fBasm-11\fP(1), load and execute it. This little test code just produces .EX diff --git a/doc/w11a_known_issues.txt b/doc/w11a_known_issues.txt index 27843d67..1b373132 100644 --- a/doc/w11a_known_issues.txt +++ b/doc/w11a_known_issues.txt @@ -1,14 +1,14 @@ -# $Id: w11a_known_issues.txt 516 2013-05-05 21:24:52Z mueller $ +# $Id: w11a_known_issues.txt 570 2014-07-20 19:05:11Z mueller $ Summary of known issues for w11a CPU and systems Table of content: - 1. Known differences between w11a and KB-11C (11/70) + 1. Known differences between w11a and KB11-C (11/70) 2. Known limitations 3. Known bugs -1. Known differences between w11a and KB-11C (11/70) ---------------------- +1. Known differences between w11a and KB11-C (11/70) ---------------------- - the SPL instruction in the 11/70 always fetched the next instruction regardless of pending device or even console interrupts. This is known diff --git a/doc/w11a_os_guide.txt b/doc/w11a_os_guide.txt index fcdf49d8..62dbcce7 100644 --- a/doc/w11a_os_guide.txt +++ b/doc/w11a_os_guide.txt @@ -1,4 +1,4 @@ -# $Id: w11a_os_guide.txt 547 2013-12-29 13:10:07Z mueller $ +# $Id: w11a_os_guide.txt 563 2014-06-22 15:49:09Z mueller $ Guide to run operating system images on w11a systems @@ -162,12 +162,14 @@ Guide to run operating system images on w11a systems Legal and license issues: Unfortunately there is no general hobbyist license for DEC operating - systems for PDP-11 computers. The 'Mentec license' commonly understood + systems for PDP-11 computers. The 'Mentec license' is commonly understood to cover the some older versions of DEC operating systems, for example - RT-11 V5.3 or prior - RSX-11M V4.3 or prior - RSX-11M PLUS V3.0 or prior - on software simulators, most notably on the 'simh' suite. + on a simulator. It is commonly assumed that the license terms cover the + usage of the PDP11 simulator from the 'simh' suite. Usage of the e11 + simulator is not covered according to the author of e11. HOWEVER: THIS LICENSE DOES NOT COVER THE USAGE OF THESE HISTORIC DEC OPERATING SYSTEMS ON ANY 'REAL HARDWARE' IMPLEMENTATION OF A diff --git a/doc/w11a_tb_guide.txt b/doc/w11a_tb_guide.txt index 08b2ca83..bf2dce12 100644 --- a/doc/w11a_tb_guide.txt +++ b/doc/w11a_tb_guide.txt @@ -1,4 +1,4 @@ -# $Id: w11a_tb_guide.txt 547 2013-12-29 13:10:07Z mueller $ +# $Id: w11a_tb_guide.txt 578 2014-08-05 21:28:19Z mueller $ Guide to running w11a test benches @@ -68,7 +68,6 @@ Guide to running w11a test benches -> 1269955.0 ns 63488: DONE -> real 0m01.178s user 0m01.172s sys 0m00.020s - - serport receiver/transmitter test make tb_serport_uart_rxtx time tbw tb_serport_uart_rxtx |\ @@ -101,7 +100,6 @@ Guide to running w11a test benches -> 24695.0 ns 1225: DONE -> real 0m0.133s user 0m0.104s sys 0m0.008s - time tbw tb_rlink_sp1c tb_rlink_stim.dat |\ tee tb_rlink_sp1c_dsim.log | egrep "(FAIL|DONE)" -> 551935.0 ns 27587: DONE @@ -113,15 +111,15 @@ Guide to running w11a test benches make tb_pdp11core time tbw tb_pdp11core |\ tee tb_pdp11core_dsim.log | egrep "(FAIL|DONE)" - -> 1220255.0 ns 61003: DONE + -> 1220255.0 ns 61073: DONE -> real 0m10.736s user 0m10.713s sys 0m00.060s - w11a core test (using post-synthesis model) - make ghdl_tmp_clean tb_pdp11core_ssim + make ghdl_tmp_clean && make tb_pdp11core_ssim time tbw tb_pdp11core_ssim |\ tee tb_pdp11core_ssim.log | egrep "(FAIL|DONE)" - -> 1220255.0 ns 61003: DONE + -> 1220255.0 ns 61073: DONE -> real 1m09.738s user 1m09.588s sys 0m00.096s - s3board sram controller test @@ -133,7 +131,6 @@ Guide to running w11a test benches -> 5015.0 ns 241: DONE -> real 0m00.113s user 0m00.068s sys 0m00.016s - - nexys2/nexys3 cram controller test cd $RETROBASE/rtl/bplib/nxcramlib/tb @@ -143,7 +140,6 @@ Guide to running w11a test benches -> 24272.5 ns 1204: DONE -> real 0m00.343s user 0m00.248s sys 0m00.100s - 3. System tests benches --------------------------------------------------- The system tests allow to verify to verify a full system design. @@ -252,8 +248,8 @@ Guide to running w11a test benches "rw11::setup_cpu" \ "rw11::run_pdpcp ../../../../w11a/tb/tb_pdp11core_stim.dat" |\ tee tb_w11a_s3_stim2_dsim.log | egrep "(-[EFW]:|FAIL|PEND|DONE)" - -> 10225140.0 ns 511247: DONE - -> real 0m52.105s user 0m51.871s sys 0m0.376s + -> 7328980.0 ns 366439: DONE + -> real 0m45.225s user 0m43.631s sys 0m0.400s - sys_w11a_n2 test bench @@ -263,8 +259,8 @@ Guide to running w11a test benches "rw11::setup_cpu" \ "rw11::run_pdpcp ../../../../w11a/tb/tb_pdp11core_stim.dat" |\ tee tb_w11a_n2_stim2_dsim.log | egrep "(-[EFW]:|FAIL|PEND|DONE)" - -> 10278380.0 ns 513908: DONE - -> real 1m2.951s user 1m2.628s sys 0m0.532s + -> 7372840.0 ns 368631: DONE + -> real 0m55.536s user 0m52.967s sys 0m0.520s - sys_w11a_n3 test bench @@ -274,8 +270,8 @@ Guide to running w11a test benches "rw11::setup_cpu" \ "rw11::run_pdpcp ../../../../w11a/tb/tb_pdp11core_stim.dat" |\ tee tb_w11a_n3_stim2_dsim.log | egrep "(-[EFW]:|FAIL|PEND|DONE)" - -> 5167410.0 ns 516720: DONE - -> real 1m5.322s user 1m5.072s sys 0m0.500s + -> 5121571.1 ns 368738: DONE + -> real 0m54.908s user 0m51.831s sys 0m0.512s A new, modular w11a test bench is under construction. So far it is very incomplete. This very preliminary version can be executed with @@ -287,6 +283,6 @@ Guide to running w11a test benches time ti_rri --pack=rw11 --run="tbw tb_w11a_n2" --fifo --logl=3 -- \ "rw11::setup_cpu" "rw11::tbench @w11a_all.dat" | \ tee w11a_tbench_dsim.log | egrep "(-[EFW]:|FAIL|PASS|DONE)" - -> 904180.0 ns 45198: DONE - -> real 0m5.539s user 0m5.748s sys 0m0.204s + -> 5019660.0 ns 250972: DONE + -> real 0m32.501s user 0m31.082s sys 0m0.500s diff --git a/rtl/bplib/bpgen/Makefile b/rtl/bplib/bpgen/Makefile index f83e9a54..b56e89d5 100644 --- a/rtl/bplib/bpgen/Makefile +++ b/rtl/bplib/bpgen/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.1.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.1 use includes from rtl/make # 2007-12-09 100 1.0.1 drop ISE_p definition # 2007-09-16 83 1.0 Initial version @@ -9,7 +10,10 @@ VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # -include $(RETROBASE)/rtl/make/xflow_default_s3board.mk +ifndef XTW_BOARD + XTW_BOARD=s3board +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all clean # diff --git a/rtl/bplib/fx2lib/Makefile b/rtl/bplib/fx2lib/Makefile index 037acbd0..d62b2a43 100644 --- a/rtl/bplib/fx2lib/Makefile +++ b/rtl/bplib/fx2lib/Makefile @@ -1,14 +1,18 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.1.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.1 use includes from rtl/make # 2010-05-23 293 1.0 Initial version (cloned..) # VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # -include $(RETROBASE)/rtl/make/xflow_default_nexys2.mk +ifndef XTW_BOARD + XTW_BOARD=nexys2 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all clean # diff --git a/rtl/bplib/fx2rlink/Makefile b/rtl/bplib/fx2rlink/Makefile index cf425d17..5d5e1ceb 100644 --- a/rtl/bplib/fx2rlink/Makefile +++ b/rtl/bplib/fx2rlink/Makefile @@ -1,13 +1,17 @@ -# $Id: Makefile 525 2013-07-06 12:19:39Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.0.1 make reference board configurable via XTW_BOARD # 2013-04-20 509 1.0 Initial version (cloned..) # VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # -include $(RETROBASE)/rtl/make/xflow_default_nexys2.mk +ifndef XTW_BOARD + XTW_BOARD=nexys2 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all clean # diff --git a/rtl/bplib/nexys2/Makefile b/rtl/bplib/nexys2/Makefile index 037acbd0..d62b2a43 100644 --- a/rtl/bplib/nexys2/Makefile +++ b/rtl/bplib/nexys2/Makefile @@ -1,14 +1,18 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.1.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.1 use includes from rtl/make # 2010-05-23 293 1.0 Initial version (cloned..) # VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # -include $(RETROBASE)/rtl/make/xflow_default_nexys2.mk +ifndef XTW_BOARD + XTW_BOARD=nexys2 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all clean # diff --git a/rtl/bplib/nexys2/tb/Makefile b/rtl/bplib/nexys2/tb/Makefile index e9dd01b3..c53bc6b5 100644 --- a/rtl/bplib/nexys2/tb/Makefile +++ b/rtl/bplib/nexys2/tb/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.2.2 make reference board configurable via XTW_BOARD # 2013-01-01 467 1.2.1 add tb_nexys2_fusp_cuff_dummy # 2011-11-26 433 1.2 remove tb_n2_cram_memctl_as (moved to nxcramlib) # 2011-08-13 405 1.1 use includes from rtl/make @@ -13,7 +14,10 @@ EXE_all = tb_nexys2_dummy EXE_all += tb_nexys2_fusp_dummy EXE_all += tb_nexys2_fusp_cuff_dummy # -include $(RETROBASE)/rtl/make/xflow_default_nexys2.mk +ifndef XTW_BOARD + XTW_BOARD=nexys2 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all all_ssim all_tsim clean # diff --git a/rtl/bplib/nexys3/tb/Makefile b/rtl/bplib/nexys3/tb/Makefile index 7361db7a..7f7a46e7 100644 --- a/rtl/bplib/nexys3/tb/Makefile +++ b/rtl/bplib/nexys3/tb/Makefile @@ -1,13 +1,17 @@ -# $Id: Makefile 509 2013-04-21 20:46:20Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.0.1 make reference board configurable via XTW_BOARD # 2011-11-26 432 1.0 Initial version # EXE_all = tb_nexys3_fusp_dummy EXE_all += tb_nexys3_fusp_cuff_dummy # -include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk +ifndef XTW_BOARD + XTW_BOARD=nexys3 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all all_ssim all_tsim clean # diff --git a/rtl/bplib/nxcramlib/Makefile b/rtl/bplib/nxcramlib/Makefile index ebd74f0b..e62e9773 100644 --- a/rtl/bplib/nxcramlib/Makefile +++ b/rtl/bplib/nxcramlib/Makefile @@ -1,13 +1,17 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.0.1 make reference board configurable via XTW_BOARD # 2011-11-26 433 1.0 Initial version (cloned..) # VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # -include $(RETROBASE)/rtl/make/xflow_default_nexys2.mk +ifndef XTW_BOARD + XTW_BOARD=nexys2 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all clean # diff --git a/rtl/bplib/nxcramlib/nx_cram_memctl_as.vhd b/rtl/bplib/nxcramlib/nx_cram_memctl_as.vhd index 432056ab..48496cda 100644 --- a/rtl/bplib/nxcramlib/nx_cram_memctl_as.vhd +++ b/rtl/bplib/nxcramlib/nx_cram_memctl_as.vhd @@ -1,4 +1,4 @@ --- $Id: nx_cram_memctl_as.vhd 433 2011-11-27 22:04:39Z mueller $ +-- $Id: nx_cram_memctl_as.vhd 563 2014-06-22 15:49:09Z mueller $ -- -- Copyright 2010-2011 by Walter F.J. Mueller -- @@ -44,7 +44,7 @@ -- Notes: -- 1. READ1DELAY of 2 is needed even though the timing of the memory suggests -- that 1 cycle is enough (T_apa is 20 ns, so 40 ns round trip is ok). A --- short READ1 delay works in sim, but not on fpga where the data od the +-- short READ1 delay works in sim, but not on fpga where the data of the -- ADDR(0)=0 cycle is re-read (see notes_tst_sram_n2.txt). -- tb_n2_cram_memctl_as_ISim_tsim works with full sdf even when T_apa is -- 40ns or 50 ns, only T_apa 60 ns fails ! @@ -55,7 +55,7 @@ -- low-Z delay by the IOB and internal memory delays. No clash. -- 3. There is a hidden 'bus-turn-around' cycle for a read->write change. -- MEM_OE goes 1->0 on s_rdget1->s_wrinit and the memory will go high-z with --- some dekal. FPGA_OE goes 0->1 in the next cycle at s_wrinit->s_wrwait0. +-- some delay. FPGA_OE goes 0->1 in the next cycle at s_wrinit->s_wrwait0. -- Again no clash due to the 1 cycle delay. -- -- Nominal timings: diff --git a/rtl/bplib/nxcramlib/tb/Makefile b/rtl/bplib/nxcramlib/tb/Makefile index e22fe7df..d25390da 100644 --- a/rtl/bplib/nxcramlib/tb/Makefile +++ b/rtl/bplib/nxcramlib/tb/Makefile @@ -1,12 +1,16 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.0.1 make reference board configurable via XTW_BOARD # 2011-11-26 433 1.0 Initial version (cloned) # EXE_all = tb_nx_cram_memctl_as # -include $(RETROBASE)/rtl/make/xflow_default_nexys2.mk +ifndef XTW_BOARD + XTW_BOARD=nexys2 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all all_ssim all_tsim clean # diff --git a/rtl/bplib/s3board/Makefile b/rtl/bplib/s3board/Makefile index f83e9a54..b56e89d5 100644 --- a/rtl/bplib/s3board/Makefile +++ b/rtl/bplib/s3board/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.1.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.1 use includes from rtl/make # 2007-12-09 100 1.0.1 drop ISE_p definition # 2007-09-16 83 1.0 Initial version @@ -9,7 +10,10 @@ VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # -include $(RETROBASE)/rtl/make/xflow_default_s3board.mk +ifndef XTW_BOARD + XTW_BOARD=s3board +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all clean # diff --git a/rtl/bplib/s3board/tb/Makefile b/rtl/bplib/s3board/tb/Makefile index 4eb9ad41..fc98f7d5 100644 --- a/rtl/bplib/s3board/tb/Makefile +++ b/rtl/bplib/s3board/tb/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.3.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.3 use includes from rtl/make # 2010-05-16 291 1.2.2 rename tb_memctl_s3sram->tb_s3_sram_memctl # 2010-05-01 286 1.2.1 add tb_s3board_usp_dummy @@ -13,7 +14,10 @@ EXE_all = tb_s3board_dummy EXE_all += tb_s3board_fusp_dummy EXE_all += tb_s3_sram_memctl # -include $(RETROBASE)/rtl/make/xflow_default_s3board.mk +ifndef XTW_BOARD + XTW_BOARD=s3board +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all all_ssim all_tsim clean # diff --git a/rtl/ibus/Makefile b/rtl/ibus/Makefile index 49cb4782..8c2e943d 100644 --- a/rtl/ibus/Makefile +++ b/rtl/ibus/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.1.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.1 use includes from rtl/make # 2008-08-22 161 1.0 Initial version # @@ -9,7 +10,10 @@ VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # # reference board for test synthesis is Spartan-6 based Nexys3 -include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk +ifndef XTW_BOARD + XTW_BOARD=nexys3 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all clean # diff --git a/rtl/ibus/ibdlib.vhd b/rtl/ibus/ibdlib.vhd index 9126ee73..00f37275 100644 --- a/rtl/ibus/ibdlib.vhd +++ b/rtl/ibus/ibdlib.vhd @@ -1,6 +1,6 @@ --- $Id: ibdlib.vhd 427 2011-11-19 21:04:11Z mueller $ +-- $Id: ibdlib.vhd 561 2014-06-09 17:22:50Z mueller $ -- --- Copyright 2008-2011 by Walter F.J. Mueller +-- Copyright 2008-2014 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 @@ -16,9 +16,10 @@ -- Description: Definitions for ibus devices -- -- Dependencies: - --- Tool versions: xst 8.2, 9.1, 9.2, 12.1, 13.1; ghdl 0.18-0.29 +-- Tool versions: xst 8.2-14.7; ghdl 0.18-0.31 -- Revision History: -- Date Rev Version Comment +-- 2014-06-08 561 1.2 fix rl11 declaration -- 2011-11-18 427 1.1.2 now numeric_std clean -- 2010-10-23 335 1.1.1 rename RRI_LAM->RB_LAM; -- 2010-06-11 303 1.1 use IB_MREQ.racc instead of RRI_REQ @@ -127,6 +128,7 @@ component ibdr_rl11 is -- ibus dev(rem): RL11 -- fixed address: 174400 port ( CLK : in slbit; -- clock + CE_MSEC : in slbit; -- msec pulse BRESET : in slbit; -- ibus reset RB_LAM : out slbit; -- remote attention IB_MREQ : in ib_mreq_type; -- ibus request diff --git a/rtl/ibus/ibdr_dl11.vhd b/rtl/ibus/ibdr_dl11.vhd index 77b96eec..040f6c03 100644 --- a/rtl/ibus/ibdr_dl11.vhd +++ b/rtl/ibus/ibdr_dl11.vhd @@ -1,4 +1,4 @@ --- $Id: ibdr_dl11.vhd 427 2011-11-19 21:04:11Z mueller $ +-- $Id: ibdr_dl11.vhd 569 2014-07-13 14:36:32Z mueller $ -- -- Copyright 2008-2011 by Walter F.J. Mueller -- @@ -36,7 +36,7 @@ -- 2008-08-22 161 1.0.6 use iblib; add EI_ACK_* to proc_next sens. list -- 2008-05-09 144 1.0.5 use intreq flop, use EI_ACK -- 2008-03-22 128 1.0.4 rename xdone -> xval (no functional change) --- 2008-01-27 115 1.0.3 bugfix: set ilam when rbuf read by cpu; +-- 2008-01-27 115 1.0.3 BUGFIX: set ilam when rbuf read by cpu; -- add xdone and rrdy bits to rri xbuf read -- 2008-01-20 113 1.0.2 fix maint mode logic (proper double buffer now) -- 2008-01-20 112 1.0.1 use BRESET diff --git a/rtl/ibus/ibdr_maxisys.vbom b/rtl/ibus/ibdr_maxisys.vbom index c5313779..b2577468 100644 --- a/rtl/ibus/ibdr_maxisys.vbom +++ b/rtl/ibus/ibdr_maxisys.vbom @@ -5,6 +5,7 @@ ibdlib.vhd # components ibd_iist.vbom ibd_kw11l.vbom +## ibdr_rl11.vbom ibdr_rk11.vbom ibdr_dl11.vbom ibdr_pc11.vbom diff --git a/rtl/ibus/ibdr_maxisys.vhd b/rtl/ibus/ibdr_maxisys.vhd index c33da1cf..717f4797 100644 --- a/rtl/ibus/ibdr_maxisys.vhd +++ b/rtl/ibus/ibdr_maxisys.vhd @@ -1,6 +1,6 @@ --- $Id: ibdr_maxisys.vhd 427 2011-11-19 21:04:11Z mueller $ +-- $Id: ibdr_maxisys.vhd 565 2014-06-28 12:54:08Z mueller $ -- --- Copyright 2009-2011 by Walter F.J. Mueller +-- Copyright 2009-2014 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 @@ -17,6 +17,7 @@ -- -- Dependencies: ibd_iist -- ibd_kw11l +-- ibdr_rl11 -- ibdr_rk11 -- ibdr_dl11 -- ibdr_pc11 @@ -27,15 +28,19 @@ -- ib_intmap -- Test bench: - -- Target Devices: generic --- Tool versions: xst 8.2, 9.1, 9.2, 12.1, 13.1; ghdl 0.18-0.29 +-- Tool versions: xst 8.2-14.7; ghdl 0.18-0.31 -- -- Synthesized (xst): -- Date Rev ise Target flop lutl lutm slic t peri +-- 2014-06-08 561 14.7 131013 xc6slx16-2 380 748 18 266 s 7.1 +RL11 +-- 2014-06-08 560 14.7 131013 xc6slx16-2 311 615 8 216 s 7.1 -- 2010-10-17 333 12.1 M53d xc3s1000-4 312 1058 16 617 s 10.3 -- 2010-10-17 314 12.1 M53d xc3s1000-4 300 1094 16 626 s 10.4 -- -- Revision History: -- Date Rev Version Comment +-- 2014-06-27 565 1.2.1 temporarily hide RL11 +-- 2014-06-08 561 1.2 add rl11 -- 2011-11-18 427 1.1.2 now numeric_std clean -- 2010-10-23 335 1.1.1 rename RRI_LAM->RB_LAM; -- 2010-06-11 303 1.1 use IB_MREQ.racc instead of RRI_REQ @@ -232,6 +237,21 @@ begin EI_ACK => EI_ACK_KW11L ); +-- RL11: if true generate +-- begin +-- I0 : ibdr_rl11 +-- port map ( +-- CLK => CLK, +-- CE_MSEC => CE_MSEC, +-- BRESET => BRESET, +-- RB_LAM => RB_LAM_RL11, +-- IB_MREQ => IB_MREQ, +-- IB_SRES => IB_SRES_RL11, +-- EI_REQ => EI_REQ_RL11, +-- EI_ACK => EI_ACK_RL11 +-- ); +-- end generate RL11; + RK11: if true generate begin I0 : ibdr_rk11 diff --git a/rtl/ibus/ibdr_rk11.vhd b/rtl/ibus/ibdr_rk11.vhd index 97a06287..ed22b359 100644 --- a/rtl/ibus/ibdr_rk11.vhd +++ b/rtl/ibus/ibdr_rk11.vhd @@ -1,4 +1,4 @@ --- $Id: ibdr_rk11.vhd 427 2011-11-19 21:04:11Z mueller $ +-- $Id: ibdr_rk11.vhd 561 2014-06-09 17:22:50Z mueller $ -- -- Copyright 2008-2011 by Walter F.J. Mueller -- @@ -18,10 +18,11 @@ -- Dependencies: ram_1swar_gen -- Test bench: - -- Target Devices: generic --- Tool versions: xst 8.2, 9.1, 9.2, 12.1, 13.1; ghdl 0.18-0.29 +-- Tool versions: xst 8.2-14.7; ghdl 0.18-0.31 -- -- Synthesized (xst): -- Date Rev ise Target flop lutl lutm slic t peri +-- 2014-06-08 561 14.7 131013 xc6slx16-2 44 139 9 60 s 5.6 -- 2010-10-17 333 12.1 M53d xc3s1000-4 46 248 16 137 s 7.2 -- 2009-06-01 221 10.1.03 K39 xc3s1000-4 46 249 16 148 s 7.1 -- 2008-01-06 111 8.2.03 I34 xc3s1000-4 36 189 16 111 s 6.0 diff --git a/rtl/make/generic_ghdl.mk b/rtl/make/generic_ghdl.mk index 46123c46..0f972401 100644 --- a/rtl/make/generic_ghdl.mk +++ b/rtl/make/generic_ghdl.mk @@ -1,7 +1,8 @@ -# $Id: generic_ghdl.mk 477 2013-01-27 14:07:10Z mueller $ +# $Id: generic_ghdl.mk 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-26 575 1.3.2 use XTWI_PATH now (ise/vivado switch done later) # 2013-01-27 477 1.3.1 use dontincdep.mk to suppress .dep include on clean # 2011-08-13 405 1.3 renamed, moved to rtl/make; # 2007-11-04 95 1.2.2 fix find statement in ghdl_tmp_clean @@ -11,8 +12,8 @@ # 2007-06-10 52 1.0 Initial version # GHDLIEEE = --ieee=synopsys -GHDLUNISIM = -P$(XILINX)/ghdl/unisim -GHDLSIMPRIM = -P$(XILINX)/ghdl/simprim +GHDLUNISIM = -P$(XTWI_PATH)/ISE_DS/ISE/ghdl/unisim +GHDLSIMPRIM = -P$(XTWI_PATH)/ISE_DS/ISE/ghdl/simprim GHDL = ghdl COMPILE.vhd = $(GHDL) -a $(GHDLIEEE) LINK.vhd = $(GHDL) -e $(GHDLIEEE) diff --git a/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2.vbom b/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2.vbom index 72aa86fd..8b51214d 100644 --- a/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2.vbom +++ b/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2.vbom @@ -1,7 +1,7 @@ # configure tb_nexsy2_fusp with sys_tst_rlink_n2 target; # use vhdl configure file (tb_tst_rlink_n2.vhd) to allow # that all configurations will co-exist in work library -${nexys2_aif := ../sys_tst_rlink_n2.vbom} +${nexys2_fusp_aif := ../sys_tst_rlink_n2.vbom} sys_conf = sys_conf_sim.vhd ../../../../bplib/nexys2/tb/tb_nexys2_fusp.vbom tb_tst_rlink_n2.vhd diff --git a/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2_ssim.vbom b/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2_ssim.vbom index 0fede1a0..2fde8eb5 100644 --- a/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2_ssim.vbom +++ b/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2_ssim.vbom @@ -1,6 +1,6 @@ # configure for _*sim case # Note: this tb uses sys_tst_rlink_n2.vbom in local directory # (not in .. as usual) to allow a tb specific configure !!! -nexys2_aif = sys_tst_rlink_n2_ssim.vhd +nexys2_fusp_aif = sys_tst_rlink_n2_ssim.vhd tb_tst_rlink_n2.vbom @top:tb_tst_rlink_n2 diff --git a/rtl/sys_gen/tst_rlink_cuff/nexys2/ic/tb/tb_tst_rlink_cuff_ic_n2_ssim.vbom b/rtl/sys_gen/tst_rlink_cuff/nexys2/ic/tb/tb_tst_rlink_cuff_ic_n2_ssim.vbom index 5004ce23..6cde49cc 100644 --- a/rtl/sys_gen/tst_rlink_cuff/nexys2/ic/tb/tb_tst_rlink_cuff_ic_n2_ssim.vbom +++ b/rtl/sys_gen/tst_rlink_cuff/nexys2/ic/tb/tb_tst_rlink_cuff_ic_n2_ssim.vbom @@ -1,6 +1,6 @@ # configure for _*sim case # Note: this tb uses sys_tst_rlink_n2.vbom in local directory # (not in .. as usual) to allow a tb specific configure !!! -nexys2_aif = sys_tst_rlink_cuff_ic_n2_ssim.vhd +nexys2_fusp_cuff_aif = sys_tst_rlink_cuff_ic_n2_ssim.vhd tb_tst_rlink_cuff_ic_n2.vbom @top:tb_tst_rlink_cuff_ic_n2 diff --git a/rtl/sys_gen/w11a/nexys2/sys_w11a_n2.vhd b/rtl/sys_gen/w11a/nexys2/sys_w11a_n2.vhd index ca1371cc..614a0216 100644 --- a/rtl/sys_gen/w11a/nexys2/sys_w11a_n2.vhd +++ b/rtl/sys_gen/w11a/nexys2/sys_w11a_n2.vhd @@ -1,4 +1,4 @@ --- $Id: sys_w11a_n2.vhd 509 2013-04-21 20:46:20Z mueller $ +-- $Id: sys_w11a_n2.vhd 561 2014-06-09 17:22:50Z mueller $ -- -- Copyright 2010-2013 by Walter F.J. Mueller -- @@ -37,10 +37,12 @@ -- Test bench: tb/tb_sys_w11a_n2 -- -- Target Devices: generic --- Tool versions: xst 8.2, 9.1, 9.2, 10.1, 11.4, 12.1, 13.1; ghdl 0.26-0.29 +-- Tool versions: xst 8.2-14.7; ghdl 0.26-0.31 -- -- Synthesized (xst): -- Date Rev ise Target flop lutl lutm slic t peri +-- 2014-06-08 561 14.7 131013 xc3s1200e-4 1626 4821 360 3052 ok: +RL11 +-- 2014-06-01 558 14.7 131013 xc3s1200e-4 1561 4597 334 2901 ok: -- 2013-04-20 509 13.3 O76d xc3s1200e-4 1541 4598 334 2889 ok: now + FX2 ! -- 2011-12-18 440 13.1 O40d xc3s1200e-4 1450 4439 270 2740 ok: LP+PC+DL+II -- 2011-11-18 427 13.1 O40d xc3s1200e-4 1433 4374 242 2680 ok: LP+PC+DL+II diff --git a/rtl/sys_gen/w11a/nexys2/tb/tb_w11a_n2_ssim.vbom b/rtl/sys_gen/w11a/nexys2/tb/tb_w11a_n2_ssim.vbom index 42eb6b32..d57ec921 100644 --- a/rtl/sys_gen/w11a/nexys2/tb/tb_w11a_n2_ssim.vbom +++ b/rtl/sys_gen/w11a/nexys2/tb/tb_w11a_n2_ssim.vbom @@ -1,6 +1,6 @@ # configure for _*sim case # Note: this tb uses sys_w11a_n2.vbom in local directory # (not in .. as usual) to allow a tb specific configure !!! -nexys2_fusp_aif = sys_w11a_n2_ssim.vhd +nexys2_fusp_cuff_aif = sys_w11a_n2_ssim.vhd tb_w11a_n2.vbom @top:tb_w11a_n2 diff --git a/rtl/sys_gen/w11a/nexys3/sys_w11a_n3.vhd b/rtl/sys_gen/w11a/nexys3/sys_w11a_n3.vhd index 492beb3e..c8b27f40 100644 --- a/rtl/sys_gen/w11a/nexys3/sys_w11a_n3.vhd +++ b/rtl/sys_gen/w11a/nexys3/sys_w11a_n3.vhd @@ -1,4 +1,4 @@ --- $Id: sys_w11a_n3.vhd 538 2013-10-06 17:21:25Z mueller $ +-- $Id: sys_w11a_n3.vhd 561 2014-06-09 17:22:50Z mueller $ -- -- Copyright 2011-2013 by Walter F.J. Mueller -- @@ -37,10 +37,12 @@ -- Test bench: tb/tb_sys_w11a_n3 -- -- Target Devices: generic --- Tool versions: xst 13.1, 14.6; ghdl 0.29 +-- Tool versions: xst 13.1-14.7; ghdl 0.29-0.31 -- -- Synthesized (xst): -- Date Rev ise Target flop lutl lutm slic t peri +-- 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: -- 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 diff --git a/rtl/sys_gen/w11a/nexys3/tb/tb_w11a_n3_ssim.vbom b/rtl/sys_gen/w11a/nexys3/tb/tb_w11a_n3_ssim.vbom index ae5526de..db4fc3be 100644 --- a/rtl/sys_gen/w11a/nexys3/tb/tb_w11a_n3_ssim.vbom +++ b/rtl/sys_gen/w11a/nexys3/tb/tb_w11a_n3_ssim.vbom @@ -1,6 +1,6 @@ # configure for _*sim case # Note: this tb uses sys_w11a_n3.vbom in local directory # (not in .. as usual) to allow a tb specific configure !!! -nexys3_fusp_aif = sys_w11a_n3_ssim.vhd +nexys3_fusp_cuff_aif = sys_w11a_n3_ssim.vhd tb_w11a_n3.vbom @top:tb_w11a_n3 diff --git a/rtl/sys_gen/w11a/s3board/sys_w11a_s3.vhd b/rtl/sys_gen/w11a/s3board/sys_w11a_s3.vhd index ddd5ba63..704cf254 100644 --- a/rtl/sys_gen/w11a/s3board/sys_w11a_s3.vhd +++ b/rtl/sys_gen/w11a/s3board/sys_w11a_s3.vhd @@ -1,4 +1,4 @@ --- $Id: sys_w11a_s3.vhd 476 2013-01-26 22:23:53Z mueller $ +-- $Id: sys_w11a_s3.vhd 561 2014-06-09 17:22:50Z mueller $ -- -- Copyright 2007-2011 by Walter F.J. Mueller -- @@ -35,10 +35,12 @@ -- Test bench: tb/tb_sys_w11a_s3 -- -- Target Devices: generic --- Tool versions: xst 8.2, 9.1, 9.2, 10.1, 11.4, 12.1, 13.1; ghdl 0.18-0.29 +-- Tool versions: xst 8.2-14.7; ghdl 0.18-0.31 -- -- Synthesized (xst): -- Date Rev ise Target flop lutl lutm slic t peri +-- 2014-06-08 561 14.7 131013 xc3s1000-4 1374 4580 286 2776 OK: +RL11 +-- 2014-06-01 558 14.7 131013 xc3s1000-4 1301 4306 270 2614 OK: -- 2011-12-21 442 13.1 O40d xc3s1000-4 1301 4307 270 2613 OK: LP+PC+DL+II -- 2011-11-19 427 13.1 O40d xc3s1000-4 1322 4298 242 2616 OK: LP+PC+DL+II -- 2010-12-30 351 12.1 M53d xc3s1000-4 1316 4291 242 2609 OK: LP+PC+DL+II diff --git a/rtl/vlib/comlib/Makefile b/rtl/vlib/comlib/Makefile index bf603668..8bdb06e1 100644 --- a/rtl/vlib/comlib/Makefile +++ b/rtl/vlib/comlib/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.2.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.2 use includes from rtl/make # 2007-07-06 64 1.1 use Makefile.xflow # 2007-06-03 45 1.0 Initial version @@ -10,7 +11,10 @@ VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # # reference board for test synthesis is Spartan-6 based Nexys3 -include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk +ifndef XTW_BOARD + XTW_BOARD=nexys3 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all clean # diff --git a/rtl/vlib/genlib/Makefile b/rtl/vlib/genlib/Makefile index ae5e9ab2..f5dbbdc0 100644 --- a/rtl/vlib/genlib/Makefile +++ b/rtl/vlib/genlib/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.2.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.2 use includes from rtl/make # 2007-12-09 100 1.1.1 drop ISE_p definition # 2007-06-03 47 1.1 use Makefile.xflow @@ -11,7 +12,10 @@ VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # # reference board for test synthesis is Spartan-6 based Nexys3 -include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk +ifndef XTW_BOARD + XTW_BOARD=nexys3 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all clean # diff --git a/rtl/vlib/memlib/Makefile b/rtl/vlib/memlib/Makefile index e06637fa..b9914607 100644 --- a/rtl/vlib/memlib/Makefile +++ b/rtl/vlib/memlib/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.1.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.1 use includes from rtl/make # 2007-12-09 100 1.0.1 drop ISE_p definition # 2007-06-03 45 1.0 Initial version @@ -10,7 +11,10 @@ VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # # reference board for test synthesis is Spartan-6 based Nexys3 -include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk +ifndef XTW_BOARD + XTW_BOARD=nexys3 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all clean # diff --git a/rtl/vlib/rbus/Makefile b/rtl/vlib/rbus/Makefile index 43781172..93b27d98 100644 --- a/rtl/vlib/rbus/Makefile +++ b/rtl/vlib/rbus/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.1.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.1 use includes from rtl/make # 2007-12-09 100 1.0.1 drop ISE_p definition # 2007-07-06 64 1.0 Initial version @@ -10,7 +11,10 @@ VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # # reference board for test synthesis is Spartan-6 based Nexys3 -include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk +ifndef XTW_BOARD + XTW_BOARD=nexys3 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all clean # diff --git a/rtl/vlib/rlink/Makefile b/rtl/vlib/rlink/Makefile index 43781172..0a7e9ce6 100644 --- a/rtl/vlib/rlink/Makefile +++ b/rtl/vlib/rlink/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.1.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.1 use includes from rtl/make # 2007-12-09 100 1.0.1 drop ISE_p definition # 2007-07-06 64 1.0 Initial version @@ -10,7 +11,10 @@ VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # # reference board for test synthesis is Spartan-6 based Nexys3 -include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk +ifndef XTW_BOARD + XTW_BOARD=nexys3 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD) # .PHONY : all clean # diff --git a/rtl/vlib/rlink/tb/Makefile b/rtl/vlib/rlink/tb/Makefile index 07a4b24b..96283ca4 100644 --- a/rtl/vlib/rlink/tb/Makefile +++ b/rtl/vlib/rlink/tb/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.4.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.4 use includes from rtl/make # 2010-12-05 343 1.3 rri->rlink renames # 2009-11-21 252 1.2 add ISim support @@ -14,7 +15,10 @@ EXE_all = tb_rlink_direct EXE_all += tb_rlink_sp1c # # reference board for test synthesis is Spartan-6 based Nexys3 -include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk +ifndef XTW_BOARD + XTW_BOARD=nexys3 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all all_ssim all_tsim clean # diff --git a/rtl/vlib/rlink/tb/rlink_cext.c b/rtl/vlib/rlink/tb/rlink_cext.c index a690d592..d55cadb9 100644 --- a/rtl/vlib/rlink/tb/rlink_cext.c +++ b/rtl/vlib/rlink/tb/rlink_cext.c @@ -1,6 +1,6 @@ -/* $Id: rlink_cext.c 366 2011-03-05 14:55:15Z mueller $ +/* $Id: rlink_cext.c 575 2014-07-27 20:55:41Z mueller $ * - * Copyright 2007-2010 by Walter F.J. Mueller + * Copyright 2007-2014 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 @@ -13,6 +13,8 @@ * * Revision History: * Date Rev Vers Comment + * 2014-07-27 575 1.3.2 add ssize_t -> int casts to avoid warnings + * add fflush(stdout) after standart open/close msgs * 2011-03-05 366 1.3.1 add RLINK_CEXT_TRACE=2 trace level * 2010-12-29 351 1.3 rename cext_rriext -> rlink_cext; rename functions * cext_* -> rlink_cext_* and fifo file names @@ -80,7 +82,7 @@ static void rlink_cext_doread() ssize_t nbyte; nbyte = read(fd_rx, buf, 1); if (io_trace > 1) { - printf("rlink_cext-I: read rc=%d", nbyte); + printf("rlink_cext-I: read rc=%d", (int)nbyte); if (nbyte < 0) printf(" errno=%d %s", errno, strerror(errno)); printf("\n"); } @@ -123,12 +125,16 @@ int rlink_cext_getbyte(int clk) return -2; } printf("rlink_cext-I: connected to rlink_cext_fifo_rx\n"); + fflush(stdout); + fd_tx = open("rlink_cext_fifo_tx", O_WRONLY); if (fd_tx <= 0) { perror("rlink_cext-E: failed to open rlink_cext_fifo_tx"); return -2; } printf("rlink_cext-I: connected to rlink_cext_fifo_tx\n"); + fflush(stdout); + nidle = 0; ncesc = 0; nside = -1; @@ -154,6 +160,7 @@ int rlink_cext_getbyte(int clk) if (qr_eof != 0) { /* EOF seen */ if (ncesc >= 2) { /* two+ CESC seen ? */ printf("rlink_cext-I: seen EOF, wait for reconnect\n"); + fflush(stdout); close(fd_rx); close(fd_tx); fd_rx = -1; @@ -163,7 +170,9 @@ int rlink_cext_getbyte(int clk) } printf("rlink_cext-I: seen EOF, schedule clock stop and exit\n"); + fflush(stdout); return -1; /* signal EOF seen */ + } else if (qr_err == EAGAIN) { /* nothing read, return idle */ if (nidle < 8 || (nidle%1024)==0) { irc = sched_yield(); @@ -223,7 +232,7 @@ int rlink_cext_putbyte(int dat) buf[0] = (unsigned char) dat; nbyte = write(fd_tx, buf, 1); if (io_trace > 1) { - printf("rlink_cext-I: write rc=%d", nbyte); + printf("rlink_cext-I: write rc=%d", (int)nbyte); if (nbyte < 0) printf(" errno=%d %s", errno, strerror(errno)); printf("\n"); } diff --git a/rtl/vlib/serport/Makefile b/rtl/vlib/serport/Makefile index 9ffe7042..b6518b05 100644 --- a/rtl/vlib/serport/Makefile +++ b/rtl/vlib/serport/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.1.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.1 use includes from rtl/make # 2007-12-09 100 1.0.1 drop ISE_p definition # 2007-07-03 45 1.0 Initial version @@ -10,7 +11,10 @@ VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # # reference board for test synthesis is Spartan-6 based Nexys3 -include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk +ifndef XTW_BOARD + XTW_BOARD=nexys3 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all clean # diff --git a/rtl/vlib/serport/tb/Makefile b/rtl/vlib/serport/tb/Makefile index 54cd8c05..ee2c35f9 100644 --- a/rtl/vlib/serport/tb/Makefile +++ b/rtl/vlib/serport/tb/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.3.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.3 use includes from rtl/make # 2009-11-21 252 1.2 add ISim support # 2007-11-26 98 1.1 use make includes @@ -12,7 +13,10 @@ EXE_all += tb_serport_uart_rxtx EXE_all += tb_serport_autobaud # # reference board for test synthesis is Spartan-6 based Nexys3 -include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk +ifndef XTW_BOARD + XTW_BOARD=nexys3 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all all_ssim all_tsim clean # diff --git a/rtl/vlib/xlib/Makefile b/rtl/vlib/xlib/Makefile index 22b97664..963471bd 100644 --- a/rtl/vlib/xlib/Makefile +++ b/rtl/vlib/xlib/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version omment +# 2014-07-27 545 1.1.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.1 use includes from rtl/make # 2007-12-08 100 1.0 Initial version # @@ -9,7 +10,10 @@ VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # # reference board for test synthesis is Spartan-6 based Nexys3 -include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk +ifndef XTW_BOARD + XTW_BOARD=nexys3 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all clean # diff --git a/rtl/w11a/Makefile b/rtl/w11a/Makefile index 5366c852..04fd8d06 100644 --- a/rtl/w11a/Makefile +++ b/rtl/w11a/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.1.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.1 use includes from rtl/make # 2007-12-09 100 1.0.1 drop ISE_p def # 2007-07-08 65 1.0 Initial version @@ -10,7 +11,10 @@ VBOM_all = $(wildcard *.vbom) NGC_all = $(VBOM_all:.vbom=.ngc) # # reference board for test synthesis is Spartan-6 based Nexys3 -include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk +ifndef XTW_BOARD + XTW_BOARD=nexys3 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk # .PHONY : all clean # diff --git a/rtl/w11a/pdp11.vhd b/rtl/w11a/pdp11.vhd index 04e09a44..ef1efbec 100644 --- a/rtl/w11a/pdp11.vhd +++ b/rtl/w11a/pdp11.vhd @@ -1,6 +1,6 @@ --- $Id: pdp11.vhd 427 2011-11-19 21:04:11Z mueller $ +-- $Id: pdp11.vhd 569 2014-07-13 14:36:32Z mueller $ -- --- Copyright 2006-2011 by Walter F.J. Mueller +-- Copyright 2006-2014 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 @@ -16,9 +16,12 @@ -- Description: Definitions for pdp11 components -- -- Dependencies: - --- Tool versions: xst 8.2, 9.1, 9.2, 11.4, 12.1, 13.1; ghdl 0.18-0.29 +-- Tool versions: xst 8.2-14.7; ghdl 0.18-0.31 +-- -- Revision History: -- Date Rev Version Comment +-- 2014-07-12 569 1.4.9 dpath_stat_type: merge div_zero+div_ovfl to div_quit +-- dpath_cntl_type: add munit_s_div_sr -- 2011-11-18 427 1.4.8 now numeric_std clean -- 2010-12-30 351 1.4.7 rename pdp11_core_rri->pdp11_core_rbus; use rblib -- 2010-10-23 335 1.4.6 rename RRI_LAM->RB_LAM; @@ -162,6 +165,7 @@ package pdp11 is munit_s_div : slbit; -- munit s_opg_div state munit_s_div_cn : slbit; -- munit s_opg_div_cn state munit_s_div_cr : slbit; -- munit s_opg_div_cr state + munit_s_div_sr : slbit; -- munit s_opg_div_sr state munit_s_ash : slbit; -- munit s_opg_ash state munit_s_ash_cn : slbit; -- munit s_opg_ash_cn state munit_s_ashc : slbit; -- munit s_opg_ashc state @@ -180,7 +184,7 @@ package pdp11 is "00",'0',"000000000","00",'0', -- ounit "00","00","00",'0',"000",'0', -- aunit "0000",'0', -- lunit - "00",'0','0','0','0','0','0','0', -- munit + "00",'0','0','0','0','0','0','0','0',-- munit '0',"000","000","00",'0' -- rest ); @@ -211,10 +215,9 @@ package pdp11 is type dpath_stat_type is record -- data path status ccout_z : slbit; -- current effective Z cc flag shc_tc : slbit; -- last shc cycle (shc==0) - div_cr : slbit; -- division: reminder correction needed + div_cr : slbit; -- division: remainder correction needed div_cq : slbit; -- division: quotient correction needed - div_zero : slbit; -- division: divident or divisor zero - div_ovfl : slbit; -- division: overflow + div_quit : slbit; -- division: abort (0/ or /0 or V=1) end record dpath_stat_type; constant dpath_stat_init : dpath_stat_type := (others=>'0'); @@ -790,18 +793,18 @@ component pdp11_munit is -- mul/div unit for data (munit) DTMP : in slv16; -- 'tmp' data in GPR_DSRC : in slv16; -- 'src' data from GPR FUNC : in slv2; -- function - S_DIV : in slbit; -- s_opg_div state - S_DIV_CN : in slbit; -- s_opg_div_cn state - S_DIV_CR : in slbit; -- s_opg_div_cr state + S_DIV : in slbit; -- s_opg_div state (load dd_low) + S_DIV_CN : in slbit; -- s_opg_div_cn state (1st..16th cycle) + S_DIV_CR : in slbit; -- s_opg_div_cr state (remainder corr.) + S_DIV_SR : in slbit; -- s_opg_div_sr state (store remainder) S_ASH : in slbit; -- s_opg_ash state S_ASH_CN : in slbit; -- s_opg_ash_cn state S_ASHC : in slbit; -- s_opg_ashc state S_ASHC_CN : in slbit; -- s_opg_ashc_cn state SHC_TC : out slbit; -- last shc cycle (shc==0) - DIV_CR : out slbit; -- division: reminder correction needed + DIV_CR : out slbit; -- division: remainder correction needed DIV_CQ : out slbit; -- division: quotient correction needed - DIV_ZERO : out slbit; -- division: divident or divisor zero - DIV_OVFL : out slbit; -- division: overflow + DIV_QUIT : out slbit; -- division: abort (0/ or /0 or V=1) DOUT : out slv16; -- data output DOUTE : out slv16; -- data output extra CCOUT : out slv4 -- condition codes out diff --git a/rtl/w11a/pdp11_dpath.vhd b/rtl/w11a/pdp11_dpath.vhd index 417907c5..4f02cec6 100644 --- a/rtl/w11a/pdp11_dpath.vhd +++ b/rtl/w11a/pdp11_dpath.vhd @@ -1,6 +1,6 @@ --- $Id: pdp11_dpath.vhd 427 2011-11-19 21:04:11Z mueller $ +-- $Id: pdp11_dpath.vhd 569 2014-07-13 14:36:32Z mueller $ -- --- Copyright 2006-2011 by Walter F.J. Mueller +-- Copyright 2006-2014 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 @@ -24,9 +24,11 @@ -- -- Test bench: tb/tb_pdp11_core (implicit) -- Target Devices: generic --- Tool versions: xst 8.2, 9.1, 9.2, 13.1; ghdl 0.18-0.29 +-- Tool versions: xst 8.2-14.7; ghdl 0.18-0.31 +-- -- Revision History: -- Date Rev Version Comment +-- 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 -- 2010-09-18 300 1.2.1 rename (adlm)box->(oalm)unit -- 2010-06-13 305 1.2 rename CPDIN -> CP_DIN; add CP_DOUT out port; @@ -190,6 +192,7 @@ begin S_DIV => CNTL.munit_s_div, S_DIV_CN => CNTL.munit_s_div_cn, S_DIV_CR => CNTL.munit_s_div_cr, + S_DIV_SR => CNTL.munit_s_div_sr, S_ASH => CNTL.munit_s_ash, S_ASH_CN => CNTL.munit_s_ash_cn, S_ASHC => CNTL.munit_s_ashc, @@ -197,8 +200,7 @@ begin SHC_TC => STAT.shc_tc, DIV_CR => STAT.div_cr, DIV_CQ => STAT.div_cq, - DIV_ZERO => STAT.div_zero, - DIV_OVFL => STAT.div_ovfl, + DIV_QUIT => STAT.div_quit, DOUT => MUNIT_DOUT, DOUTE => DRESE, CCOUT => MUNIT_CCOUT diff --git a/rtl/w11a/pdp11_munit.vhd b/rtl/w11a/pdp11_munit.vhd index 669f35a4..f2d6dd6d 100644 --- a/rtl/w11a/pdp11_munit.vhd +++ b/rtl/w11a/pdp11_munit.vhd @@ -1,6 +1,6 @@ --- $Id: pdp11_munit.vhd 427 2011-11-19 21:04:11Z mueller $ +-- $Id: pdp11_munit.vhd 577 2014-08-03 20:49:42Z mueller $ -- --- Copyright 2006-2011 by Walter F.J. Mueller +-- Copyright 2006-2014 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 @@ -18,9 +18,20 @@ -- Dependencies: - -- Test bench: tb/tb_pdp11_core (implicit) -- Target Devices: generic --- Tool versions: xst 8.2, 9.1, 9.2, 13.1; ghdl 0.18-0.29 +-- Tool versions: xst 8.2-14.7; ghdl 0.18-0.31 +-- +-- Synthesized (xst): +-- Date Rev ise Target flop lutl lutm slic t peri +-- 2014-07-12 569 14.7 131013 xc6slx16-2 30 154 0 46 s 6.8 +-- 2014-07-11 568 14.7 131013 xc6slx16-2 28 123 0 47 s 5.6 +-- -- Revision History: -- Date Rev Version Comment +-- 2014-08-05 578 1.2.3 fix proc_div sensitivity list +-- 2014-08-03 577 1.2.2 use DTMP_POS rather signed(Q)>0 (xst bug for S-3) +-- 2014-07-26 575 1.2.1 fix proc_omux sensitivity list +-- 2014-07-12 569 1.2 merge DIV_ZERO+DIV_OVFL to DIV_QUIT; add S_DIV_SR +-- BUGFIX: fix divide logic, dr+q max neg issues -- 2011-11-18 427 1.1.1 now numeric_std clean -- 2010-09-18 300 1.1 renamed from mbox -- 2007-06-14 56 1.0.1 Use slvtypes.all @@ -44,18 +55,18 @@ entity pdp11_munit is -- mul/div unit for data (munit) DTMP : in slv16; -- 'tmp' data in GPR_DSRC : in slv16; -- 'src' data from GPR FUNC : in slv2; -- function - S_DIV : in slbit; -- s_opg_div state - S_DIV_CN : in slbit; -- s_opg_div_cn state - S_DIV_CR : in slbit; -- s_opg_div_cr state + S_DIV : in slbit; -- s_opg_div state (load dd_low) + S_DIV_CN : in slbit; -- s_opg_div_cn state (1st..16th cycle) + S_DIV_CR : in slbit; -- s_opg_div_cr state (remainder corr.) + S_DIV_SR : in slbit; -- s_opg_div_sr state (store remainder) S_ASH : in slbit; -- s_opg_ash state S_ASH_CN : in slbit; -- s_opg_ash_cn state S_ASHC : in slbit; -- s_opg_ashc state S_ASHC_CN : in slbit; -- s_opg_ashc_cn state SHC_TC : out slbit; -- last shc cycle (shc==0) - DIV_CR : out slbit; -- division: reminder correction needed + DIV_CR : out slbit; -- division: remainder correction needed DIV_CQ : out slbit; -- division: quotient correction needed - DIV_ZERO : out slbit; -- division: divident or divisor zero - DIV_OVFL : out slbit; -- division: overflow + DIV_QUIT : out slbit; -- division: abort (0/ or /0 or V=1) DOUT : out slv16; -- data output DOUTE : out slv16; -- data output extra CCOUT : out slv4 -- condition codes out @@ -66,6 +77,8 @@ architecture syn of pdp11_munit is signal R_DD_L : slv16 := (others=>'0'); -- divident, low order part signal R_DDO_LT : slbit := '0'; -- original sign bit of divident + signal R_MAXFIX : slbit := '0'; -- maxfix flag for division + signal R_QO_LT : slbit := '0'; -- expected q sign for division signal R_DIV_V : slbit := '0'; -- V flag for division signal R_SHC : slv6 := (others=>'0'); -- shift counter for div and ash/c signal R_C1 : slbit := '0'; -- first cycle indicator @@ -75,6 +88,8 @@ architecture syn of pdp11_munit is signal NEXT_DD_L : slv16 := (others=>'0'); signal NEXT_DDO_LT : slbit := '0'; + signal NEXT_MAXFIX : slbit := '0'; + signal NEXT_QO_LT : slbit := '0'; signal NEXT_DIV_V : slbit := '0'; signal NEXT_SHC : slv6 := (others=>'0'); signal NEXT_C1 : slbit := '0'; @@ -85,9 +100,11 @@ architecture syn of pdp11_munit is signal SHC_TC_L : slbit := '0'; signal DDST_ZERO : slbit := '0'; + signal DDST_NMAX : slbit := '0'; signal DSRC_ZERO : slbit := '0'; signal DSRC_ONES : slbit := '0'; signal DTMP_ZERO : slbit := '0'; + signal DTMP_POS : slbit := '0'; signal DOUT_DIV : slv16 := (others=>'0'); signal DOUTE_DIV : slv16 := (others=>'0'); @@ -103,6 +120,8 @@ begin if rising_edge(CLK) then R_DD_L <= NEXT_DD_L; R_DDO_LT <= NEXT_DDO_LT; + R_MAXFIX <= NEXT_MAXFIX; + R_QO_LT <= NEXT_QO_LT; R_DIV_V <= NEXT_DIV_V; R_SHC <= NEXT_SHC; R_C1 <= NEXT_C1; @@ -116,13 +135,18 @@ begin begin DDST_ZERO <= '0'; + DDST_NMAX <= '0'; DSRC_ZERO <= '0'; DSRC_ONES <= '0'; DTMP_ZERO <= '0'; + DTMP_POS <= '0'; if unsigned(DDST) = 0 then DDST_ZERO <= '1'; end if; + if DDST = "1000000000000000" then + DDST_NMAX <= '1'; + end if; if unsigned(DSRC) = 0 then DSRC_ZERO <= '1'; end if; @@ -132,6 +156,9 @@ begin if unsigned(DTMP) = 0 then DTMP_ZERO <= '1'; end if; + if signed(DTMP) > 0 then + DTMP_POS <= '1'; + end if; end process proc_comm; @@ -168,13 +195,17 @@ begin end process proc_shc; proc_div: process (DDST, DSRC, DTMP, GPR_DSRC, DR, DD_H, Q, - R_DD_L, R_DDO_LT, R_DIV_V, R_SHC, R_C1, - S_DIV, S_DIV_CN, S_DIV_CR, - DDST_ZERO, DSRC_ZERO, DTMP_ZERO) - + R_DD_L, R_DDO_LT, R_MAXFIX, R_QO_LT, R_DIV_V, R_SHC, R_C1, + S_DIV, S_DIV_CN, S_DIV_CR, S_DIV_SR, + DDST_ZERO, DDST_NMAX, DSRC_ZERO, DTMP_ZERO, DTMP_POS) + + variable div_zero : slbit := '0'; + variable div_ovfl : slbit := '0'; variable shftdd : slbit := '0'; variable subadd : slbit := '0'; + variable dd_le : slbit := '0'; + variable dd_ge : slbit := '0'; variable dd_gt : slbit := '0'; variable qbit : slbit := '0'; @@ -188,10 +219,12 @@ begin NEXT_DD_L <= R_DD_L; NEXT_DDO_LT <= R_DDO_LT; + NEXT_MAXFIX <= R_MAXFIX; + NEXT_QO_LT <= R_QO_LT; NEXT_DIV_V <= R_DIV_V; - DIV_ZERO <= '0'; - DIV_OVFL <= '0'; + div_zero := '0'; + div_ovfl := '0'; qbit_1 := not (DR(15) xor DD_H(15)); -- !(dr<0 ^ dd_h<0) @@ -204,8 +237,6 @@ begin if R_C1 = '1' then subadd := qbit_1; - DIV_ZERO <= DDST_ZERO or - (DSRC_ZERO and DTMP_ZERO); -- note: DTMP here still dd_low ! else subadd := Q(0); end if; @@ -216,6 +247,16 @@ begin dd_h_new := slv(signed(dd_h_old) - signed(DR)); end if; + dd_le := '0'; + if signed(dd_h_new) <= 0 then + dd_le := '1'; -- set if dd_new_h <= 0 + end if; + + dd_ge := '0'; + if signed(dd_h_new) >= -1 then + dd_ge := '1'; -- set if dd_new_h >= -1 + end if; + dd_gt := '0'; if dd_h_new(15) = '0' and (unsigned(dd_h_new(14 downto 0))/=0 or @@ -227,19 +268,59 @@ begin if R_DDO_LT = '0' then qbit_n := DR(15) xor not dd_h_new(15); -- b_dr_lt ^ !b_dd_lt else - qbit_n := DR(15) xor dd_gt; -- b_dr_lt ^ b_dd_gt + if R_MAXFIX = '0' then + qbit_n := DR(15) xor dd_gt; -- b_dr_lt ^ b_dd_gt + else + qbit_n := dd_h_new(15); -- b_dd_lt + end if; end if; if S_DIV = '1' then NEXT_DDO_LT <= DD_H(15); - NEXT_DD_L <= GPR_DSRC; + NEXT_DD_L <= GPR_DSRC; + NEXT_MAXFIX <= '0'; + if DDST_NMAX = '1' and GPR_DSRC = "0000000000000000" then + NEXT_MAXFIX <= '1'; -- b_dr_nmax && (ddi_l == 0) + end if; + NEXT_QO_LT <= DD_H(15) xor DR(15); -- b_di_lt ^ b_dr_lt end if; if R_C1 = '1' then - NEXT_DIV_V <= (DD_H(15) xor DD_H(14)) or - (DD_H(15) xor (DR(15) xor qbit_n)); - DIV_OVFL <= (DD_H(15) xor DD_H(14)) or --??? cleanup - (DD_H(15) xor (DR(15) xor qbit_n)); --??? cleanup + div_zero := DDST_ZERO or + (DSRC_ZERO and DTMP_ZERO); -- note: DTMP here still dd_low ! + + if DDST_NMAX='0' and (DD_H(15) xor DD_H(14)) = '1' then + div_ovfl := '1'; -- !b_dr_nmax && (b_di_31 != b_di_30) + end if; + + if R_DDO_LT = '0' then -- if (!b_di_lt) + if R_QO_LT = '0' then -- if (!b_qo_lt) + if dd_h_new(15) = '0' then -- if (!b_dd_lt) + div_ovfl := '1'; + end if; + else -- else + if dd_le = '0' then -- if (!b_dd_le) + div_ovfl := '1'; + end if; + end if; + else + if R_QO_LT = '0' then -- if (!b_qo_lt) + if dd_gt = '0' then -- if (!b_dd_gt) + div_ovfl := '1'; + end if; + else -- else + if dd_ge = '0' then -- if (!b_dd_ge) + div_ovfl := '1'; + end if; + end if; + end if; + NEXT_DIV_V <= div_ovfl; + + elsif S_DIV_SR = '1' then + if R_QO_LT='1' and DTMP_POS='1' then + div_ovfl := '1'; + end if; + NEXT_DIV_V <= div_ovfl; end if; if S_DIV_CN = '1' then @@ -252,9 +333,12 @@ begin qbit := qbit_1; end if; - DIV_CR <= not (R_DDO_LT xor - (DR(15) xor Q(0))); --!(b_ddo_lt ^ (b_dr_lt ^ b_qbit)); - DIV_CQ <= R_DDO_LT xor DR(15); -- b_ddo_lt ^ b_dr_lt; + DIV_QUIT <= div_zero or div_ovfl; + + DIV_CR <= R_MAXFIX or -- b_maxfix | (!(b_ddo_lt ^ (b_dr_lt ^ b_qbit))) + (not (R_DDO_LT xor (DR(15) xor Q(0)))); + DIV_CQ <= R_MAXFIX or -- b_maxfix | (b_ddo_lt ^ b_dr_lt) + (R_DDO_LT xor DR(15)); DOUT_DIV <= dd_h_new; DOUTE_DIV <= Q(14 downto 0) & qbit; @@ -293,7 +377,7 @@ begin end process proc_ash; proc_omux: process (DSRC, DDST, DTMP, FUNC, - R_ASH_V, R_ASH_C, R_SHC, R_DIV_V, + R_ASH_V, R_ASH_C, R_SHC, R_DIV_V, R_QO_LT, DOUT_DIV, DOUTE_DIV, DSRC_ZERO, DSRC_ONES, DTMP_ZERO, DDST_ZERO) @@ -366,7 +450,7 @@ begin CCOUT(3) <= '0'; -- N=0 if div/0 CCOUT(2) <= '1'; -- Z=1 if div/0 elsif R_DIV_V = '1' then - CCOUT(3) <= DSRC(15) xor DDST(15); -- N (from unchanged reg) + CCOUT(3) <= R_QO_LT; -- N (send expected sign) CCOUT(2) <= '0'; -- Z (from unchanged reg) ??? veri else CCOUT(3) <= DTMP(15); -- N (from Q (DTMP)) diff --git a/rtl/w11a/pdp11_sequencer.vhd b/rtl/w11a/pdp11_sequencer.vhd index 6e92171e..a1b137f4 100644 --- a/rtl/w11a/pdp11_sequencer.vhd +++ b/rtl/w11a/pdp11_sequencer.vhd @@ -1,4 +1,4 @@ --- $Id: pdp11_sequencer.vhd 556 2014-05-29 19:01:39Z mueller $ +-- $Id: pdp11_sequencer.vhd 569 2014-07-13 14:36:32Z mueller $ -- -- Copyright 2006-2014 by Walter F.J. Mueller -- @@ -18,10 +18,13 @@ -- Dependencies: ib_sel -- Test bench: tb/tb_pdp11_core (implicit) -- Target Devices: generic --- Tool versions: xst 8.2-14.7; viv 2014.1; ghdl 0.18-0.29 +-- Tool versions: xst 8.2-14.7; viv 2014.1; ghdl 0.18-0.31 -- -- Revision History: -- Date Rev Version Comment +-- 2014-07-12 569 1.5.1 rename s_opg_div_zero -> s_opg_div_quit; +-- use DP_STAT.div_quit; set munit_s_div_sr; +-- BUGFIX: s_opg_div_sr: check for late div_quit -- 2014-04-20 554 1.5 now vivado compatible (add dummy assigns in procs) -- 2011-11-18 427 1.4.2 now numeric_std clean -- 2010-10-23 335 1.4.1 use ib_sel @@ -181,7 +184,7 @@ architecture syn of pdp11_sequencer is s_opg_div_cr, s_opg_div_sq, s_opg_div_sr, - s_opg_div_zero, + s_opg_div_quit, s_opg_ash, s_opg_ash_cn, s_opg_ashc, @@ -1708,8 +1711,8 @@ begin ndpcntl.dsrc_sel := c_dpath_dsrc_res; -- DSRC = DRES ndpcntl.dtmp_sel := c_dpath_dtmp_drese; -- DTMP = DRESE nstate := s_opg_div_cn; - if DP_STAT.div_zero='1' or DP_STAT.div_ovfl='1' then - nstate := s_opg_div_zero; + if DP_STAT.div_quit = '1' then + nstate := s_opg_div_quit; else ndpcntl.dsrc_we := '1'; -- update DSRC ndpcntl.dtmp_we := '1'; -- update DTMP @@ -1718,14 +1721,14 @@ begin nstate := s_opg_div_cr; end if; - when s_opg_div_cr => -- DIV (reminder correction) + when s_opg_div_cr => -- DIV (remainder correction) ndpcntl.munit_s_div_cr := '1'; ndpcntl.dres_sel := R_IDSTAT.res_sel; -- DRES = choice of idec ndpcntl.dsrc_sel := c_dpath_dsrc_res; -- DSRC = DRES ndpcntl.dsrc_we := DP_STAT.div_cr; -- update DSRC nstate := s_opg_div_sq; - when s_opg_div_sq => -- DIV (store quotient) + when s_opg_div_sq => -- DIV (correct and store quotient) ndpcntl.ounit_asel := c_ounit_asel_dtmp; -- OUNIT A=DTMP ndpcntl.ounit_const := "00000000"&DP_STAT.div_cq;-- OUNIT const = Q corr. ndpcntl.ounit_bsel := c_ounit_bsel_const; -- OUNIT B=const (q cor) @@ -1736,16 +1739,21 @@ begin ndpcntl.dtmp_we := '1'; -- update DTMP (Q) nstate := s_opg_div_sr; - when s_opg_div_sr => -- DIV (store reminder) + when s_opg_div_sr => -- DIV (store remainder) + ndpcntl.munit_s_div_sr := '1'; ndpcntl.ounit_asel := c_ounit_asel_dsrc; -- OUNIT A=DSRC ndpcntl.ounit_bsel := c_ounit_bsel_const; -- OUNIT B=const (0) ndpcntl.dres_sel := c_dpath_res_ounit; -- DRES = OUNIT ndpcntl.gpr_adst := SRCREG(2 downto 1) & "1";-- write odd reg ! ndpcntl.gpr_we := '1'; ndpcntl.psr_ccwe := '1'; - do_fork_next(nstate, nstatus, nmmumoni); - - when s_opg_div_zero => -- DIV (/0 or 0/ abort) + if DP_STAT.div_quit = '1' then + nstate := s_opg_div_quit; + else + 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'; do_fork_next(nstate, nstatus, nmmumoni); diff --git a/rtl/w11a/tb/Makefile b/rtl/w11a/tb/Makefile index 8e6576fc..d4f35677 100644 --- a/rtl/w11a/tb/Makefile +++ b/rtl/w11a/tb/Makefile @@ -1,7 +1,8 @@ -# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-27 545 1.4.1 make reference board configurable via XTW_BOARD # 2011-08-13 405 1.4 use includes from rtl/make # 2010-12-30 351 1.3 retire tb_rripdp_pdp11core tb_rriext_pdp11core # 2009-11-22 252 1.2 add ISim support @@ -11,8 +12,12 @@ # EXE_all = tb_pdp11core # -# reference board for test synthesis is Spartan-6 based Nexys3 -include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk +# default reference board for test synthesis is Spartan-6 based Nexys3 +ifndef XTW_BOARD + XTW_BOARD=nexys3 +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk + # .PHONY : all all_ssim all_tsim clean # diff --git a/rtl/w11a/tb/tb_pdp11core_stim.dat b/rtl/w11a/tb/tb_pdp11core_stim.dat index 79f196e1..278e3df1 100644 --- a/rtl/w11a/tb/tb_pdp11core_stim.dat +++ b/rtl/w11a/tb/tb_pdp11core_stim.dat @@ -1,7 +1,9 @@ -# $Id: tb_pdp11core_stim.dat 351 2010-12-30 21:50:54Z mueller $ +# $Id: tb_pdp11core_stim.dat 569 2014-07-13 14:36:32Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-13 569 2.3 after ECO-026: correct test 31.1 wrong V=1 cases +# correct test 37.2: 2 V=1 cases have regs now updated # 2010-06-20 308 2.2.1 add wibrb, ribr, wibr based tests # 2010-06-13 305 2.2 adopt to new rri address and function semantics # 2009-11-22 252 2.1.14 change SSR0 expects, adapt to ECO-021. @@ -3099,9 +3101,9 @@ brm 63 d=000004 -- ! mem(11016) div 000000,000000,021706 -> n0z1v1c0 d=000000 -- ! mem(11020) 0/9158 -> 0,0 d=000000 -- ! mem(11022) - d=000012 -- ! mem(11024) div 177777,100000,000001->n1z0v1c0 [[s:10]] - d=177777 -- ! mem(11026) -32768/1 -> overflow [[s:100000]] - d=100000 -- ! mem(11030) [[s:000000]] + d=000010 -- ! mem(11024) div 177777,100000,000001->n1z0v1c0 + d=100000 -- ! mem(11026) -32768/1 -> -32768,0 + d=000000 -- ! mem(11030) d=000002 -- ! mem(11032) div 177777,100000,177777 -> n0z0v1c0 ?? 2 d=177777 -- ! mem(11034) -32768/-1 -> overflow d=100000 -- ! mem(11036) @@ -3114,9 +3116,9 @@ brm 63 d=000010 -- ! mem(11054) div 140000,100001,077777 -> n1z0v0c0 d=100001 -- ! mem(11056) -1073709055/32767 -> -32767,-32766 d=100002 -- ! mem(11060) - d=000012 -- ! mem(11062) div 140000,100000,077777->n1z0v1c0 [[s:10]] - d=140000 -- ! mem(11064) -1073709056/32767 -> overflow [[s:100000]] - d=100000 -- ! mem(11066) [[s:000000]] + d=000010 -- ! mem(11062) div 140000,100000,077777->n1z0v1c0 + d=100000 -- ! mem(11064) -1073709056/32767 -> -32768,0 + d=000000 -- ! mem(11066) d=000002 -- ! mem(11070) div 040000,000000,077777 -> n0z0v1c0 d=040000 -- ! mem(11072) 1073741824/32767 -> overflow d=000000 -- ! mem(11074) @@ -3874,7 +3876,7 @@ bwm 51 177777 -- 177777,177777,177777, 0, 1, 0# 177777 -- 177777 -- - 000000 -- 0,177777,177777,12, 0,177777# + 000000 -- 0,177777,177777,12, 0,177777# w11a:12,000001,000000 177777 -- 177777 -- 177777 -- 177777, 0,177777, 2,177777, 0# @@ -3901,7 +3903,7 @@ bwm 51 000000 -- 0,177777, 1, 2, 0,177777# 177777 -- 000001 -- - 177777 -- 177777, 45716, 1,12,177777, 45716# + 177777 -- 177777, 45716, 1,12,177777, 45716# w11a:12,045716,000000 045716 -- 000001 -- 000000 -- 0, 2,177770, 4, 0, 2# @@ -3939,9 +3941,9 @@ brm 51 d=000000 --!177777,177777,177777, 0, 1, 0# d=000001 --! d=000000 --! - d=000012 --! 0,177777,177777,12, 0,177777# + d=000012 --! 0,177777,177777,12, 0,177777# w11a:12,000001,000000 + d=000001 --! d=000000 --! - d=177777 --! d=000002 --!177777, 0,177777, 2,177777, 0# d=177777 --! d=000000 --! @@ -3966,9 +3968,9 @@ brm 51 d=000002 --! 0,177777, 1, 2, 0,177777# d=000000 --! d=177777 --! - d=000012 --!177777, 45716, 1,12,177777, 45716# - d=177777 --! + d=000012 --!177777, 45716, 1,12,177777, 45716# w11a:12,045716,000000 d=045716 --! + d=000000 --! d=000004 --! 0, 2,177770, 4, 0, 2# d=000000 --! d=000002 --! diff --git a/tools/asm-11/tests/test_0120_op_rg.mac b/tools/asm-11/tests/test_0120_op_rg.mac index 64904794..efa81a54 100644 --- a/tools/asm-11/tests/test_0120_op_rg.mac +++ b/tools/asm-11/tests/test_0120_op_rg.mac @@ -1,4 +1,4 @@ -; $Id: test_0120_op_rg.mac 501 2013-03-30 13:53:39Z mueller $ +; $Id: test_0120_op_rg.mac 575 2014-07-27 20:55:41Z mueller $ ; ; test opcodes with 1 1/2 operands ; @@ -9,7 +9,6 @@ a: .word 0 pa: .word a sub: rts pc ;;!! 001004: 000207 - jsr pc,sub ;;!! 001006: 004767 177772 xor r1,a ;;!! 074167 177762 @@ -19,4 +18,8 @@ sub: rts pc ;;!! 001004: 000207 ash #12,r3 ;;!! 072327 000012 ashc @#a,r4 ;;!! 073437 001000 +; test call + return aliases too +sub1: return ;;!! 000207 + call sub1 ;;!! 004767 177772 + .end diff --git a/tools/bin/asm-11 b/tools/bin/asm-11 index f055588a..b1077dbc 100755 --- a/tools/bin/asm-11 +++ b/tools/bin/asm-11 @@ -1,7 +1,7 @@ #!/usr/bin/perl -w -# $Id: asm-11 547 2013-12-29 13:10:07Z mueller $ +# $Id: asm-11 575 2014-07-27 20:55:41Z mueller $ # -# Copyright 2013- by Walter F.J. Mueller +# Copyright 2013-2014 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 @@ -14,6 +14,7 @@ # # Revision History: # Date Rev Version Comment +# 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 # add -lsm (lsmem format) output; add implicit .word @@ -127,6 +128,7 @@ my %pst = ( 'mfpt' => {typ=>'op', val=>0000007, fmt=>'-' }, 'jmp' => {typ=>'op', val=>0000100, fmt=>'g' }, 'rts' => {typ=>'op', val=>0000200, fmt=>'r' }, + 'return' => {typ=>'op', val=>0000207, fmt=>'-' }, # alias for rts pc 'spl' => {typ=>'op', val=>0000230, fmt=>'n3' }, 'nop' => {typ=>'op', val=>0000240, fmt=>'-' }, 'clc' => {typ=>'op', val=>0000241, fmt=>'-' }, @@ -148,6 +150,7 @@ my %pst = ( 'bgt' => {typ=>'op', val=>0003000, fmt=>'s8' }, 'ble' => {typ=>'op', val=>0003400, fmt=>'s8' }, 'jsr' => {typ=>'op', val=>0004000, fmt=>'rg' }, + 'call' => {typ=>'op', val=>0004700, fmt=>'g' }, # alias for jsr pc, 'clr' => {typ=>'op', val=>0005000, fmt=>'g' }, 'com' => {typ=>'op', val=>0005100, fmt=>'g' }, 'inc' => {typ=>'op', val=>0005200, fmt=>'g' }, diff --git a/tools/bin/create_disk b/tools/bin/create_disk index 777fb760..09baccc4 100755 --- a/tools/bin/create_disk +++ b/tools/bin/create_disk @@ -1,7 +1,7 @@ #!/usr/bin/perl -w -# $Id: create_disk 522 2013-05-24 17:50:29Z mueller $ +# $Id: create_disk 562 2014-06-15 17:23:18Z mueller $ # -# Copyright 2013- by Walter F.J. Mueller +# Copyright 2013-2014 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 @@ -14,6 +14,7 @@ # # Revision History: # Date Rev Version Comment +# 2014-06-14 562 1.1 BUGFIX: repair --boot; add RM02,RM05,RP04,RP07 # 2013-05-20 521 1.0 First draft # @@ -32,7 +33,7 @@ GetOptions(\%opts, "help", "typ=s", "ini=s", "bad", "boot" sub do_inipatt; sub do_badtable; -sub do_noboot; +sub do_boot; sub print_help; # disk type table @@ -40,7 +41,11 @@ my %disktype = ( RK05 => {cyl=> 203, hd=> 2, sec=> 12, bps=> 512, bad=>0}, RL01 => {cyl=> 256, hd=> 2, sec=> 40, bps=> 256, bad=>1}, RL02 => {cyl=> 512, hd=> 2, sec=> 40, bps=> 256, bad=>1}, - RP06 => {cyl=> 815, hd=> 19, sec=> 22, bps=> 512, bad=>1} + RM02 => {cyl=> 823, hd=> 5, sec=> 32, bps=> 512, bad=>1}, + RM05 => {cyl=> 823, hd=> 19, sec=> 32, bps=> 512, bad=>1}, + RP04 => {cyl=> 411, hd=> 19, sec=> 22, bps=> 512, bad=>1}, + RP06 => {cyl=> 815, hd=> 19, sec=> 22, bps=> 512, bad=>1}, + RP07 => {cyl=> 630, hd=> 32, sec=> 50, bps=> 512, bad=>1} ); autoflush STDOUT 1 if (-p STDOUT); # autoflush if output into pipe @@ -101,7 +106,7 @@ do_inipatt if $opts{ini}; do_badtable if $opts{bad}; # write dummy boot block -do_noboot if $opts{noboot}; +do_boot if $opts{boot}; #------------------------------------------------------------------------------- @@ -183,7 +188,7 @@ sub do_badtable { #------------------------------------------------------------------------------- -sub do_noboot { +sub do_boot { my @dat; push @dat, 0012700, 0000100; # start: mov #text, r0 @@ -219,7 +224,7 @@ sub do_noboot { $buf .= "\r\n"; # NOTE: the text above almost fills the first 512 bytes !! - # don't any more text, all has been said anyway !! + # don't add more text, all has been said anyway !! $rc = $fh->seek(0100, SEEK_SET); if (not $rc) {die "seek failed: $!";} diff --git a/tools/bin/tbw b/tools/bin/tbw index 8979517d..2beadd99 100755 --- a/tools/bin/tbw +++ b/tools/bin/tbw @@ -1,7 +1,7 @@ #!/usr/bin/perl -w -# $Id: tbw 420 2011-11-06 21:25:54Z mueller $ +# $Id: tbw 575 2014-07-27 20:55:41Z mueller $ # -# Copyright 2007-2011 by Walter F.J. Mueller +# Copyright 2007-2014 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 @@ -14,6 +14,7 @@ # # Revision History: # Date Rev Version Comment +# 2014-07-27 575 1.2.4 use xtwi to start ISim models # 2011-11-06 420 1.2.3 fix tbw.dat parsing (allow / in file names) # 2010-05-23 294 1.2.2 handle tb_code's in non-local directories # 2010-04-18 279 1.2.1 add -help and more text to print_usage() @@ -236,7 +237,7 @@ foreach my $dsc (@file_dsc) { # if ($is_isim_run) { # handle for isim 'run all' - my $cmd = $tb_code . " " . join " ",@ARGV; + my $cmd = "xtwi" . " " . $tb_code . " " . join " ",@ARGV; open (ISIM_RUN, "| $cmd") or die "failed to open process pipe to isim: $!"; print ISIM_RUN "run all\n"; diff --git a/tools/bin/ti_w11 b/tools/bin/ti_w11 index 56746580..4b63a243 100755 --- a/tools/bin/ti_w11 +++ b/tools/bin/ti_w11 @@ -1,8 +1,9 @@ #!/usr/bin/perl -w -# $Id: ti_w11 516 2013-05-05 21:24:52Z mueller $ +# $Id: ti_w11 570 2014-07-20 19:05:11Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-07-13 570 1.2 bugfix: split options args into ti_rri opts and cmds # 2013-05-05 516 1.1 renamed to ti_w11 # 2013-04-26 510 1.0 Initial version (derived from dorri) # @@ -104,6 +105,28 @@ while (scalar(@ARGV)) { } } +# +# process remaining arguments, separate ti_rri options and commands +# + +# handle options (all starting with -) +my @tiopts; +while (scalar(@ARGV)) { + last unless $ARGV[0] =~ m{^--}; + push @tiopts, shift @ARGV; +} + +# handle comands +my @ticmds; +while (scalar(@ARGV)) { + my $curarg = shift @ARGV; + if ($curarg =~ m{^@(.*)$} && ! -r $1) { + print STDERR "ti_w11-E: file '$1' not found\n"; + exit 1; + } + push @ticmds,$curarg; +} + # # check that either -s3/n2/n3 or -t or -u given # setup pi_rri options for either case @@ -129,6 +152,7 @@ if ($opt_io eq 'f') { push @arglist, '--logl=2'; push @arglist, '--int' unless $opt_b; push @arglist, '--pack=rw11'; +push @arglist, @tiopts; # add options from ARGV push @arglist, '--'; # @@ -144,7 +168,6 @@ if ($opt_io eq 'f') { push @arglist, 'rlc oob -sbdata 8 0x2'; push @arglist, 'rlc oob -sbdata 16 0x4'; } - } # @@ -167,18 +190,7 @@ if (defined $val_e) { push @arglist, 'cpu0 cp -stapc 0200'; } -# -# all remaining commands -# - -while (scalar(@ARGV)) { - my $curarg = shift @ARGV; - if ($curarg =~ m{^@(.*)$} && ! -r $1) { - print STDERR "ti_w11-E: file '$1' not found\n"; - exit 1; - } - push @arglist,$curarg; -} +push @arglist, @ticmds; # add commands from ARGV # # find ti_rri executable diff --git a/tools/bin/ticonv_pdpcp b/tools/bin/ticonv_pdpcp index 85b4a37c..04f8659d 100755 --- a/tools/bin/ticonv_pdpcp +++ b/tools/bin/ticonv_pdpcp @@ -1,7 +1,7 @@ #!/usr/bin/perl -w -# $Id: ticonv_pdpcp 521 2013-05-20 22:16:45Z mueller $ +# $Id: ticonv_pdpcp 576 2014-08-02 12:24:28Z mueller $ # -# Copyright 2013- by Walter F.J. Mueller +# Copyright 2013-2014 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 @@ -14,6 +14,8 @@ # # Revision History: # Date Rev Version Comment +# 2014-07-31 576 1.1 add -cmax option (default = 3); support .sdef +# 2014-07-26 575 1.0.4 add --tout option (sets wtcpu timeout) # 2013-05-19 521 1.0.3 use -be subopt of -wibrb # 2013-04-12 504 1.0.2 renamed from pi2ti_pdpcp; fix [rm]wi handling # use wtcpu command; use wibrbbe command; @@ -28,7 +30,14 @@ use Getopt::Long; my %opts = (); -GetOptions(\%opts ) || exit 1; +GetOptions(\%opts, "tout=f", "cmax=i" + ) + or die "bad options"; + +sub cmdlist_do; +sub add_edata; + +my @cmdlist; if (scalar(@ARGV) != 2) { print STDERR "%ticonv_pdpcp-E: usage: ticonv_pdpcp \n"; @@ -37,6 +46,12 @@ if (scalar(@ARGV) != 2) { my $cpu = $ARGV[0]; my $fnam = $ARGV[1]; +my $tout = $opts{tout} || 10.; +my $cmax = $opts{cmax} || 6; + +my $ref_sdef = 0x00; # by default check for 'hard' errors +my $msk_sdef = 0xf0; # ignore the status bits + attn flag + open IFILE, $fnam or die "failed to open '$fnam'"; while () { @@ -56,6 +71,7 @@ while () { # C... comments -> write to rlc log -------------------------------- if ($cmd =~ /^C(.*)/) { + cmdlist_do(); my $msg = $1; $msg =~ s/"/'/g; $msg =~ s/\[/\{/g; @@ -63,76 +79,86 @@ while () { print "rlc log \"C $msg\"\n"; # .tocmd,.tostp,.togo,.cerr,.merr -> ignore, like pi_rri ----------- - } elsif ($cmd =~ /^\.(tocmd|tostp|togo|[cm]err)\s+(\d*)/) { + } elsif ($cmd =~ /^\.(tocmd|tostp|togo|[cm]err)\s+(\d*)$/) { print "# $cmd currently ignored\n"; # .mode mode -> accept only 'pdpcp', quit otherwise ---------------- - } elsif ($cmd =~ /^\.mode\s+(.*)/) { + } elsif ($cmd =~ /^\.mode\s+(.*)$/) { if ($1 ne "pdpcp") { print "# FAIL: $cmd not supported\n"; exit 1; } + # .sdef s=ref[,msk] ------------------------------------------------ + } elsif ($cmd =~ /^\.sdef\s+s=([01]+),?([01]*)$/) { + cmdlist_do(); + $ref_sdef = oct("0b$1"); + $msk_sdef = oct("0b$2"); + # .rlmon,.rbmon ---------------------------------------------------- - } elsif ($cmd =~ /^\.(r[lb]mon)\s+(\d)/) { + } elsif ($cmd =~ /^\.(r[lb]mon)\s+(\d)$/) { + cmdlist_do(); print "rlc oob -$1 $2\n"; # .scntl ----------------------------------------------------------- - } elsif ($cmd =~ /^\.scntl\s+(\d+)\s+(\d)/) { + } elsif ($cmd =~ /^\.scntl\s+(\d+)\s+(\d)$/) { + cmdlist_do(); print "rlc oob -sbcntl $1 $2\n"; # .anena (0|1) -> rlc exec -init ----------------------------------- - } elsif ($cmd =~ /^\.anena\s+(\d)/) { + } elsif ($cmd =~ /^\.anena\s+(\d)$/) { + cmdlist_do(); my $dat = $1 ? '[regbld rlink::INIT anena]' : '0'; print "rlc exec -init 0xff $dat\n"; print "rlc exec -attn\n"; # .reset ----------------------------------------------------------- - } elsif ($cmd =~ /^\.reset/) { + } elsif ($cmd =~ /^\.reset$/) { + cmdlist_do(); print "rlc exec -init 0 1\n"; # (write) data type commands: wrx,wps,wal,wah,wm,wmi,stapc --- - # Note: 'stapc' must be decoeded before 'sta' !! + # Note: 'stapc' must be decoded before 'sta' !! # Note: 'wibrb' must be handled separately # Note: 'wmi' must be matched before 'wm' - } elsif ($cmd =~ /^(wr[0-7]|wps|wal|wah|wmi|wm|stapc)\s+([0-7]+)/) { - print "$cpu cp -$1 0$2\n"; + } elsif ($cmd =~ /^(wr[0-7]|wps|wal|wah|wmi|wm|stapc)\s+([0-7]+)$/) { + push @cmdlist, "-$1 0$2"; # (write) data type commands: wibrb --- } elsif ($cmd =~ /^(wibrb)\s+([0-7]+)/) { my $base = oct($2); my $be = $base & 0x3; if ($be == 0) { - print "$cpu cp -wibrb 0$2\n"; + push @cmdlist, "-wibrb 0$2"; } else { - printf "$cpu cp -wibrb 0%6.6o -be %o\n", $base&0177700, $be; + push @cmdlist, sprintf "-wibrb 0%6.6o -be %o", $base&0177700, $be; } # (read) [d=data] type commands: rrx,rps,rm,rmi -------------------- # Note: 'rmi' must be matched before 'rm' } elsif ($cmd =~ /^(rr[0-7]|rps|rmi|rm)/) { - print "$cpu cp -$1 "; + push @cmdlist, "-$1 "; add_edata($'); - print "\n"; # bwm n ------------------------------------------------------------ - } elsif ($cmd =~ /^bwm\s+(\d+)/) { + } elsif ($cmd =~ /^bwm\s+(\d+)$/) { my $nw = $1; - print "$cpu cp -bwm {"; + push @cmdlist, "-bwm {"; for (my $i=0; $i<$nw;) { my $dat = ; $dat =~ s/--.*//; $dat =~ s/\s*//g; next if $dat =~ m/^#/; - print " 0$dat"; + $cmdlist[-1] .= " 0$dat"; $i++; } - print "}\n"; + $cmdlist[-1] .= "}"; + cmdlist_do(); # brm n ------------------------------------------------------------ - } elsif ($cmd =~ /^brm\s+(\d+)/) { + } elsif ($cmd =~ /^brm\s+(\d+)$/) { my $nw = $1; - print "$cpu cp -brm $1"; + push @cmdlist, "-brm $1"; my @data; my @mask; my $domask; @@ -153,44 +179,43 @@ while () { } $i++; } - print " -edata {", join(" ",@data), "} "; - print " {", join(" ",@mask), "} " if $domask; - print "\n"; + $cmdlist[-1] .= " -edata {" . join(" ",@data) . "}"; + $cmdlist[-1] .= " {" . join(" ",@mask) . "}" if $domask; + cmdlist_do(); # wibr off data --------------------------------------------------- - } elsif ($cmd =~ /^(wibr)\s+([0-7]+)\s+([0-7]+)/) { - print "$cpu cp -$1 0$2 0$3"; - print "\n"; + } elsif ($cmd =~ /^(wibr)\s+([0-7]+)\s+([0-7]+)$/) { + push @cmdlist, "-$1 0$2 0$3"; # ribr off [d=data] ------------------------------------------------ } elsif ($cmd =~ /^(ribr)\s+([0-7]+)/) { - print "$cpu cp -$1 0$2"; + push @cmdlist, "-$1 0$2"; add_edata($'); - print "\n"; # simple action commands: sta,sto,cont,step,rst -------------------- - } elsif ($cmd =~ /^(sta|sto|cont|step|rst)/) { + } elsif ($cmd =~ /^(sta|sto|cont|step|rst)$/) { my %cmdmap = (sta => 'start', sto => 'stop', cont => 'continue', step => 'step', rst => 'reset'); - printf "$cpu cp -%s", $cmdmap{$1}; - print "\n"; + push @cmdlist, sprintf "-%s", $cmdmap{$1}; # wtgo -> wtcpu ---------------------------------------------------- - } elsif ($cmd =~ /^(wtgo)/) { - print "$cpu wtcpu 10."; + } elsif ($cmd =~ /^(wtgo)$/) { + cmdlist_do(); + print "$cpu wtcpu $tout"; print "\n"; # wtlam apat ------------------------------------------------------- # Note: apat currently ignored !! } elsif ($cmd =~ /^(wtlam)/) { - print "$cpu wtcpu 10."; + cmdlist_do(); + print "$cpu wtcpu $tout"; print "\n"; # currently unimplemented commands ... ----------------------------- - } elsif ($cmd =~ /^(\.wait|\.sdef)/) { + } elsif ($cmd =~ /^(\.wait)/) { print "## TODO... $cmd\n"; } else { @@ -198,12 +223,35 @@ while () { exit 1; } + cmdlist_do() if scalar(@cmdlist) >= $cmax; + } +cmdlist_do(); +exit 0; + +#------------------------------------------------------------------------------- sub add_edata { my ($crest) = @_; $crest =~ s/\s+//; if ($crest =~ m/d=([0-7]+)/) { - print " -edata 0$1"; + $cmdlist[-1] .= " -edata 0$1"; + } +} + +#------------------------------------------------------------------------------- +sub cmdlist_do { + return unless scalar(@cmdlist); + +# printf "$cpu cp \\\n"; + printf "$cpu cp -estatdef 0x%2.2x 0x%2.2x \\\n", $ref_sdef, $msk_sdef; + while (scalar(@cmdlist)) { + print " "; + print shift @cmdlist; + print " \\\n" if scalar(@cmdlist); } + print "\n"; + @cmdlist = (); + return; } + diff --git a/tools/bin/vbomconv b/tools/bin/vbomconv index c9af418e..5bbb3efc 100755 --- a/tools/bin/vbomconv +++ b/tools/bin/vbomconv @@ -1,7 +1,7 @@ #!/usr/bin/perl -w -# $Id: vbomconv 558 2014-06-01 22:20:51Z mueller $ +# $Id: vbomconv 575 2014-07-27 20:55:41Z mueller $ # -# Copyright 2007-2013 by Walter F.J. Mueller +# Copyright 2007-2014 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 @@ -14,6 +14,7 @@ # # Revision History: # Date Rev Version Comment +# 2014-07-26 575 1.10.1 use XTWI_PATH now (ise/vivado switch done later) # 2013-10-20 543 1.10 add --viv_vhdl # 2012-02-05 456 1.9.4 redo filename substitution (= and :); add --get_top # 2012-01-02 448 1.9.3 use in ghdl_m -fexplicit also when simprim used @@ -220,8 +221,8 @@ if (exists $opts{ghdl_a} || exists $opts{ghdl_a_cmd}) { foreach (@file_list) { my $file = $_; my $cmd = "ghdl -a"; - $cmd .= ' -P$XILINX/ghdl/unisim' if $has_unisim; - $cmd .= ' -P$XILINX/ghdl/simprim' if $has_simprim; + $cmd .= ' -P$XTWI_PATH/ISE_DS/ISE/ghdl/unisim' if $has_unisim; + $cmd .= ' -P$XTWI_PATH/ISE_DS/ISE/ghdl/simprim' if $has_simprim; $cmd .= " --ieee=synopsys"; $cmd .= " $file"; print "$cmd\n"; @@ -305,8 +306,8 @@ if (exists $opts{ghdl_m} || exists $opts{ghdl_m_cmd} ) { $cmd .= " -o $stem"; # -fexplicit needed for ISE 13.1,13.3 $cmd .= ' -fexplicit' if $has_unisim or $has_simprim; - $cmd .= ' -P$XILINX/ghdl/unisim' if $has_unisim; - $cmd .= ' -P$XILINX/ghdl/simprim' if $has_simprim; + $cmd .= ' -P$XTWI_PATH/ISE_DS/ISE/ghdl/unisim' if $has_unisim; + $cmd .= ' -P$XTWI_PATH/ISE_DS/ISE/ghdl/simprim' if $has_simprim; $cmd .= " --ieee=synopsys"; $cmd .= " --no-vital-checks" if $is_ssim or $is_fsim or $is_tsim; diff --git a/tools/dox/make_doxy b/tools/dox/make_doxy index f836a52f..3ead9774 100755 --- a/tools/dox/make_doxy +++ b/tools/dox/make_doxy @@ -1,8 +1,9 @@ #!/bin/sh -# $Id: make_doxy 523 2013-05-26 21:54:55Z mueller $ +# $Id: make_doxy 563 2014-06-22 15:49:09Z mueller $ # # Revision History: # Date Rev Version Comment +# 2014-06-18 563 1.0.1 BUGFIX: create directories, fix 'to view use' text # 2013-02-05 482 1.0 Initial version # if [ -z "$RETROBASE" ] @@ -23,10 +24,11 @@ then exit 1 fi # -if [ ! -d "$RETRODOXY/w11" ] -then - mkdir $RETRODOXY/w11 -fi +if [ ! -d "$RETRODOXY/w11" ]; then mkdir $RETRODOXY/w11; fi +# +if [ ! -d "$RETRODOXY/w11/cpp" ]; then mkdir $RETRODOXY/w11/cpp; fi +if [ ! -d "$RETRODOXY/w11/tcl" ]; then mkdir $RETRODOXY/w11/tcl; fi +if [ ! -d "$RETRODOXY/w11/vhd" ]; then mkdir $RETRODOXY/w11/vhd; fi # doxygen w11_cpp.Doxyfile 2>&1 | tee w11_cpp.dox_log doxygen w11_tcl.Doxyfile 2>&1 | tee w11_tcl.dox_log @@ -35,6 +37,6 @@ doxygen w11_vhd_all.Doxyfile 2>&1 | tee w11_vhd_all.dox_log # echo "" echo "to view use" -echo " firefox $RETRODOXY/doxy/w11/cpp/html/index.html &" -echo " firefox $RETRODOXY/doxy/w11/tcl/html/index.html &" -echo " firefox $RETRODOXY/doxy/w11/vhd/html/index.html &" +echo " firefox $RETRODOXY/w11/cpp/html/index.html &" +echo " firefox $RETRODOXY/w11/tcl/html/index.html &" +echo " firefox $RETRODOXY/w11/vhd/html/index.html &" diff --git a/tools/dox/w11_cpp.Doxyfile b/tools/dox/w11_cpp.Doxyfile index 3b56e557..51327e2f 100644 --- a/tools/dox/w11_cpp.Doxyfile +++ b/tools/dox/w11_cpp.Doxyfile @@ -1,15 +1,16 @@ -# Doxyfile 1.8.3.1 +# Doxyfile 1.8.7 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = w11 - cpp -PROJECT_NUMBER = 0.60 +PROJECT_NAME = "w11 - cpp" +PROJECT_NUMBER = 0.61 PROJECT_BRIEF = "Backend server for Rlink and w11" PROJECT_LOGO = -OUTPUT_DIRECTORY = $(RETRODOXY)/doxy/w11/cpp +OUTPUT_DIRECTORY = $(RETRODOXY)/w11/cpp CREATE_SUBDIRS = NO +ALLOW_UNICODE_NAMES = NO OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES @@ -44,7 +45,6 @@ SUBGROUPING = YES INLINE_GROUPED_CLASSES = NO INLINE_SIMPLE_STRUCTS = NO TYPEDEF_HIDES_STRUCT = NO -SYMBOL_CACHE_SIZE = 0 LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options @@ -64,6 +64,7 @@ INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES +SHOW_GROUPED_MEMB_INC = NO FORCE_LOCAL_INCLUDES = NO INLINE_INFO = YES SORT_MEMBER_DOCS = NO @@ -85,7 +86,7 @@ FILE_VERSION_FILTER = LAYOUT_FILE = CITE_BIB_FILES = #--------------------------------------------------------------------------- -# configuration options related to warning and progress messages +# Configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES @@ -95,7 +96,7 @@ WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- -# configuration options related to the input files +# Configuration options related to the input files #--------------------------------------------------------------------------- INPUT = $(RETROBASE)/tools/src \ $(RETROBASE)/tools/dox/cpp_extra @@ -121,7 +122,7 @@ FILTER_SOURCE_FILES = NO FILTER_SOURCE_PATTERNS = USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- -# configuration options related to source browsing +# Configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = YES INLINE_SOURCES = NO @@ -129,16 +130,17 @@ STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = YES REFERENCES_RELATION = YES REFERENCES_LINK_SOURCE = YES +SOURCE_TOOLTIPS = YES USE_HTAGS = NO VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index +# Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = YES COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- -# configuration options related to the HTML output +# Configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html @@ -187,6 +189,7 @@ USE_MATHJAX = NO MATHJAX_FORMAT = HTML-CSS MATHJAX_RELPATH = http://www.mathjax.org/mathjax/latest MATHJAX_EXTENSIONS = +MATHJAX_CODEFILE = SEARCHENGINE = YES SERVER_BASED_SEARCH = NO EXTERNAL_SEARCH = NO @@ -195,7 +198,7 @@ SEARCHDATA_FILE = searchdata.xml EXTERNAL_SEARCH_ID = EXTRA_SEARCH_MAPPINGS = #--------------------------------------------------------------------------- -# configuration options related to the LaTeX output +# Configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex @@ -206,6 +209,7 @@ PAPER_TYPE = a4 EXTRA_PACKAGES = LATEX_HEADER = LATEX_FOOTER = +LATEX_EXTRA_FILES = PDF_HYPERLINKS = YES USE_PDFLATEX = YES LATEX_BATCHMODE = NO @@ -213,7 +217,7 @@ LATEX_HIDE_INDICES = NO LATEX_SOURCE_CODE = NO LATEX_BIB_STYLE = plain #--------------------------------------------------------------------------- -# configuration options related to the RTF output +# Configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf @@ -222,26 +226,30 @@ RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- -# configuration options related to the man page output +# Configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 +MAN_SUBDIR = MAN_LINKS = NO #--------------------------------------------------------------------------- -# configuration options related to the XML output +# Configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output +# Configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- +GENERATE_DOCBOOK = NO +DOCBOOK_OUTPUT = docbook +#--------------------------------------------------------------------------- +# Configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- -# configuration options related to the Perl module output +# Configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO @@ -260,18 +268,20 @@ PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- -# Configuration::additions related to external references +# Configuration options related to external references #--------------------------------------------------------------------------- -TAGFILES = +TAGFILES = GENERATE_TAGFILE = $(RETRODOXY)/w11/cpp/cpp.tag ALLEXTERNALS = NO EXTERNAL_GROUPS = YES +EXTERNAL_PAGES = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = YES MSCGEN_PATH = +DIA_PATH = HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES DOT_NUM_THREADS = 0 @@ -295,6 +305,7 @@ INTERACTIVE_SVG = YES DOT_PATH = DOTFILE_DIRS = MSCFILE_DIRS = +DIAFILE_DIRS = DOT_GRAPH_MAX_NODES = 50 MAX_DOT_GRAPH_DEPTH = 0 DOT_TRANSPARENT = NO diff --git a/tools/dox/w11_tcl.Doxyfile b/tools/dox/w11_tcl.Doxyfile index 32056366..f42fe010 100644 --- a/tools/dox/w11_tcl.Doxyfile +++ b/tools/dox/w11_tcl.Doxyfile @@ -1,15 +1,16 @@ -# Doxyfile 1.8.3.1 +# Doxyfile 1.8.7 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = w11 - tcl -PROJECT_NUMBER = 0.60 +PROJECT_NAME = "w11 - tcl" +PROJECT_NUMBER = 0.61 PROJECT_BRIEF = "Backend server for Rlink and w11" PROJECT_LOGO = -OUTPUT_DIRECTORY = $(RETRODOXY)/doxy/w11/tcl +OUTPUT_DIRECTORY = $(RETRODOXY)/w11/tcl CREATE_SUBDIRS = NO +ALLOW_UNICODE_NAMES = NO OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES @@ -32,7 +33,7 @@ OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = NO -EXTENSION_MAPPING = +EXTENSION_MAPPING = MARKDOWN_SUPPORT = YES AUTOLINK_SUPPORT = YES BUILTIN_STL_SUPPORT = YES @@ -44,7 +45,6 @@ SUBGROUPING = YES INLINE_GROUPED_CLASSES = NO INLINE_SIMPLE_STRUCTS = NO TYPEDEF_HIDES_STRUCT = NO -SYMBOL_CACHE_SIZE = 0 LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options @@ -64,6 +64,7 @@ INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES +SHOW_GROUPED_MEMB_INC = NO FORCE_LOCAL_INCLUDES = NO INLINE_INFO = YES SORT_MEMBER_DOCS = NO @@ -85,7 +86,7 @@ FILE_VERSION_FILTER = LAYOUT_FILE = CITE_BIB_FILES = #--------------------------------------------------------------------------- -# configuration options related to warning and progress messages +# Configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES @@ -95,14 +96,14 @@ WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- -# configuration options related to the input files +# Configuration options related to the input files #--------------------------------------------------------------------------- INPUT = $(RETROBASE)/tools/tcl INPUT_ENCODING = UTF-8 FILE_PATTERNS = *.tcl \ *.dox RECURSIVE = YES -EXCLUDE = +EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = */.svn* \ */tests/* \ @@ -118,7 +119,7 @@ FILTER_SOURCE_FILES = NO FILTER_SOURCE_PATTERNS = USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- -# configuration options related to source browsing +# Configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = YES INLINE_SOURCES = NO @@ -126,16 +127,17 @@ STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = YES REFERENCES_RELATION = YES REFERENCES_LINK_SOURCE = YES +SOURCE_TOOLTIPS = YES USE_HTAGS = NO VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index +# Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = YES COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- -# configuration options related to the HTML output +# Configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html @@ -184,6 +186,7 @@ USE_MATHJAX = NO MATHJAX_FORMAT = HTML-CSS MATHJAX_RELPATH = http://www.mathjax.org/mathjax/latest MATHJAX_EXTENSIONS = +MATHJAX_CODEFILE = SEARCHENGINE = YES SERVER_BASED_SEARCH = NO EXTERNAL_SEARCH = NO @@ -192,7 +195,7 @@ SEARCHDATA_FILE = searchdata.xml EXTERNAL_SEARCH_ID = EXTRA_SEARCH_MAPPINGS = #--------------------------------------------------------------------------- -# configuration options related to the LaTeX output +# Configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex @@ -203,6 +206,7 @@ PAPER_TYPE = a4 EXTRA_PACKAGES = LATEX_HEADER = LATEX_FOOTER = +LATEX_EXTRA_FILES = PDF_HYPERLINKS = YES USE_PDFLATEX = YES LATEX_BATCHMODE = NO @@ -210,7 +214,7 @@ LATEX_HIDE_INDICES = NO LATEX_SOURCE_CODE = NO LATEX_BIB_STYLE = plain #--------------------------------------------------------------------------- -# configuration options related to the RTF output +# Configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf @@ -219,26 +223,30 @@ RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- -# configuration options related to the man page output +# Configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 +MAN_SUBDIR = MAN_LINKS = NO #--------------------------------------------------------------------------- -# configuration options related to the XML output +# Configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output +# Configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- +GENERATE_DOCBOOK = NO +DOCBOOK_OUTPUT = docbook +#--------------------------------------------------------------------------- +# Configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- -# configuration options related to the Perl module output +# Configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO @@ -257,18 +265,20 @@ PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- -# Configuration::additions related to external references +# Configuration options related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = $(RETRODOXY)/w11/tcl/tcl.tag ALLEXTERNALS = NO EXTERNAL_GROUPS = YES +EXTERNAL_PAGES = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = YES MSCGEN_PATH = +DIA_PATH = HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES DOT_NUM_THREADS = 0 @@ -292,6 +302,7 @@ INTERACTIVE_SVG = YES DOT_PATH = DOTFILE_DIRS = MSCFILE_DIRS = +DIAFILE_DIRS = DOT_GRAPH_MAX_NODES = 50 MAX_DOT_GRAPH_DEPTH = 0 DOT_TRANSPARENT = NO diff --git a/tools/dox/w11_vhd_all.Doxyfile b/tools/dox/w11_vhd_all.Doxyfile index dba6b590..9c17da5c 100644 --- a/tools/dox/w11_vhd_all.Doxyfile +++ b/tools/dox/w11_vhd_all.Doxyfile @@ -1,15 +1,16 @@ -# Doxyfile 1.8.3.1 +# Doxyfile 1.8.7 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = w11 - vhd -PROJECT_NUMBER = 0.60 +PROJECT_NAME = "w11 - vhd" +PROJECT_NUMBER = 0.61 PROJECT_BRIEF = "W11 CPU core and support modules" PROJECT_LOGO = -OUTPUT_DIRECTORY = $(RETRODOXY)/doxy/w11/vhd +OUTPUT_DIRECTORY = $(RETRODOXY)/w11/vhd CREATE_SUBDIRS = NO +ALLOW_UNICODE_NAMES = NO OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES @@ -32,7 +33,7 @@ OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = YES -EXTENSION_MAPPING = +EXTENSION_MAPPING = MARKDOWN_SUPPORT = YES AUTOLINK_SUPPORT = YES BUILTIN_STL_SUPPORT = YES @@ -44,7 +45,6 @@ SUBGROUPING = YES INLINE_GROUPED_CLASSES = NO INLINE_SIMPLE_STRUCTS = NO TYPEDEF_HIDES_STRUCT = NO -SYMBOL_CACHE_SIZE = 0 LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options @@ -64,6 +64,7 @@ INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = YES SHOW_INCLUDE_FILES = YES +SHOW_GROUPED_MEMB_INC = NO FORCE_LOCAL_INCLUDES = NO INLINE_INFO = YES SORT_MEMBER_DOCS = NO @@ -85,7 +86,7 @@ FILE_VERSION_FILTER = LAYOUT_FILE = CITE_BIB_FILES = #--------------------------------------------------------------------------- -# configuration options related to warning and progress messages +# Configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES @@ -95,7 +96,7 @@ WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- -# configuration options related to the input files +# Configuration options related to the input files #--------------------------------------------------------------------------- INPUT = $(RETROBASE)/rtl INPUT_ENCODING = UTF-8 @@ -120,7 +121,7 @@ FILTER_SOURCE_FILES = NO FILTER_SOURCE_PATTERNS = USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- -# configuration options related to source browsing +# Configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = YES INLINE_SOURCES = NO @@ -128,16 +129,17 @@ STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = YES REFERENCES_RELATION = YES REFERENCES_LINK_SOURCE = YES +SOURCE_TOOLTIPS = YES USE_HTAGS = NO VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index +# Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = YES COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- -# configuration options related to the HTML output +# Configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html @@ -186,6 +188,7 @@ USE_MATHJAX = NO MATHJAX_FORMAT = HTML-CSS MATHJAX_RELPATH = http://www.mathjax.org/mathjax/latest MATHJAX_EXTENSIONS = +MATHJAX_CODEFILE = SEARCHENGINE = YES SERVER_BASED_SEARCH = NO EXTERNAL_SEARCH = NO @@ -194,7 +197,7 @@ SEARCHDATA_FILE = searchdata.xml EXTERNAL_SEARCH_ID = EXTRA_SEARCH_MAPPINGS = #--------------------------------------------------------------------------- -# configuration options related to the LaTeX output +# Configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex @@ -205,6 +208,7 @@ PAPER_TYPE = a4 EXTRA_PACKAGES = LATEX_HEADER = LATEX_FOOTER = +LATEX_EXTRA_FILES = PDF_HYPERLINKS = YES USE_PDFLATEX = YES LATEX_BATCHMODE = NO @@ -212,7 +216,7 @@ LATEX_HIDE_INDICES = NO LATEX_SOURCE_CODE = NO LATEX_BIB_STYLE = plain #--------------------------------------------------------------------------- -# configuration options related to the RTF output +# Configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf @@ -221,26 +225,30 @@ RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- -# configuration options related to the man page output +# Configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 +MAN_SUBDIR = MAN_LINKS = NO #--------------------------------------------------------------------------- -# configuration options related to the XML output +# Configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output +# Configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- +GENERATE_DOCBOOK = NO +DOCBOOK_OUTPUT = docbook +#--------------------------------------------------------------------------- +# Configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- -# configuration options related to the Perl module output +# Configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO @@ -259,18 +267,20 @@ PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- -# Configuration::additions related to external references +# Configuration options related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = $(RETRODOXY)/w11/vhd/vhd.tag ALLEXTERNALS = NO EXTERNAL_GROUPS = YES +EXTERNAL_PAGES = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = YES MSCGEN_PATH = +DIA_PATH = HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES DOT_NUM_THREADS = 0 @@ -294,6 +304,7 @@ INTERACTIVE_SVG = YES DOT_PATH = DOTFILE_DIRS = MSCFILE_DIRS = +DIAFILE_DIRS = DOT_GRAPH_MAX_NODES = 50 MAX_DOT_GRAPH_DEPTH = 0 DOT_TRANSPARENT = NO diff --git a/tools/make/generic_cpp.mk b/tools/make/generic_cpp.mk index 4601bd93..67ab35f4 100644 --- a/tools/make/generic_cpp.mk +++ b/tools/make/generic_cpp.mk @@ -1,4 +1,4 @@ -# $Id: generic_cpp.mk 434 2011-12-02 19:17:38Z mueller $ +# $Id: generic_cpp.mk 576 2014-08-02 12:24:28Z mueller $ # # Revision History: # Date Rev Version Comment @@ -14,8 +14,6 @@ # -fPIC position independent code # -Wall all warnings # -# -g request debugging info -# ifdef CCCOMMAND CC = $(CCCOMMAND) endif @@ -32,8 +30,6 @@ CFLAGS = -Wall -fPIC $(CCOPTFLAGS) $(INCLFLAGS) # -fPIC position independent code # -Wall all warnings # -# -g request debugging info -# ifdef CXXCOMMAND CXX = $(CXXCOMMAND) endif diff --git a/tools/src/librlink/RlinkCommandList.cpp b/tools/src/librlink/RlinkCommandList.cpp index 52185378..78e99011 100644 --- a/tools/src/librlink/RlinkCommandList.cpp +++ b/tools/src/librlink/RlinkCommandList.cpp @@ -1,6 +1,6 @@ -// $Id: RlinkCommandList.cpp 495 2013-03-06 17:13:48Z mueller $ +// $Id: RlinkCommandList.cpp 576 2014-08-02 12:24:28Z mueller $ // -// Copyright 2011-2013 by Walter F.J. Mueller +// Copyright 2011-2014 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 @@ -13,6 +13,7 @@ // // Revision History: // Date Rev Version Comment +// 2014-08-02 576 1.1 rename LastExpect->SetLastExpect // 2013-05-06 495 1.0.3 add RlinkContext to Print() args // 2013-02-03 481 1.0.2 use Rexception // 2011-04-25 380 1.0.1 use boost/foreach @@ -22,7 +23,7 @@ /*! \file - \version $Id: RlinkCommandList.cpp 495 2013-03-06 17:13:48Z mueller $ + \version $Id: RlinkCommandList.cpp 576 2014-08-02 12:24:28Z mueller $ \brief Implemenation of class RlinkCommandList. */ @@ -199,22 +200,24 @@ size_t RlinkCommandList::AddInit(uint16_t addr, uint16_t data) void RlinkCommandList::LastVolatile() { - if (fList.size() == 0) + size_t ncmd = fList.size(); + if (ncmd == 0) throw Rexception("RlinkCommandList::LastVolatile()", "Bad state: list empty"); - fList[fList.size()-1]->SetFlagBit(RlinkCommand::kFlagVol); + fList[ncmd-1]->SetFlagBit(RlinkCommand::kFlagVol); return; } //------------------------------------------+----------------------------------- //! FIXME_docs -void RlinkCommandList::LastExpect(RlinkCommandExpect* exp) +void RlinkCommandList::SetLastExpect(RlinkCommandExpect* pexp) { - if (fList.size() == 0) - throw Rexception("RlinkCommandList::LastExpect()", + size_t ncmd = fList.size(); + if (ncmd == 0) + throw Rexception("RlinkCommandList::SetLastExpect()", "Bad state: list empty"); - fList[fList.size()-1]->SetExpect(exp); + fList[ncmd-1]->SetExpect(pexp); return; } diff --git a/tools/src/librlink/RlinkCommandList.hpp b/tools/src/librlink/RlinkCommandList.hpp index 5c3b1cbd..83c16687 100644 --- a/tools/src/librlink/RlinkCommandList.hpp +++ b/tools/src/librlink/RlinkCommandList.hpp @@ -1,6 +1,6 @@ -// $Id: RlinkCommandList.hpp 495 2013-03-06 17:13:48Z mueller $ +// $Id: RlinkCommandList.hpp 576 2014-08-02 12:24:28Z mueller $ // -// Copyright 2011-2013 by Walter F.J. Mueller +// Copyright 2011-2014 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 @@ -13,6 +13,7 @@ // // Revision History: // Date Rev Version Comment +// 2014-08-02 576 1.1 rename LastExpect->SetLastExpect // 2013-05-06 495 1.0.1 add RlinkContext to Print() args; drop oper<<() // 2011-03-05 366 1.0 Initial version // 2011-01-09 354 0.1 First draft @@ -21,7 +22,7 @@ /*! \file - \version $Id: RlinkCommandList.hpp 495 2013-03-06 17:13:48Z mueller $ + \version $Id: RlinkCommandList.hpp 576 2014-08-02 12:24:28Z mueller $ \brief Declaration of class RlinkCommandList. */ @@ -60,8 +61,8 @@ namespace Retro { size_t AddAttn(); size_t AddInit(uint16_t addr, uint16_t data); - void LastVolatile(); - void LastExpect(RlinkCommandExpect* exp); + void LastVolatile(); // deprecated !! + void SetLastExpect(RlinkCommandExpect* exp); void Clear(); size_t Size() const; diff --git a/tools/src/librlink/RlinkConnect.cpp b/tools/src/librlink/RlinkConnect.cpp index 733c8ee2..fc3d5d01 100644 --- a/tools/src/librlink/RlinkConnect.cpp +++ b/tools/src/librlink/RlinkConnect.cpp @@ -1,6 +1,6 @@ -// $Id: RlinkConnect.cpp 521 2013-05-20 22:16:45Z mueller $ +// $Id: RlinkConnect.cpp 575 2014-07-27 20:55:41Z mueller $ // -// Copyright 2011-2013 by Walter F.J. Mueller +// Copyright 2011-2014 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 @@ -13,6 +13,7 @@ // // Revision History: // Date Rev Version Comment +// 2014-07-27 575 1.3.3 ExecPart(): increase packet tout from 5 to 15 sec // 2013-04-21 509 1.3.2 add SndAttn() method // 2013-03-01 493 1.3.1 add Server(Active..|SignalAttn)() methods // 2013-02-23 492 1.3 use scoped_ptr for Port; Close allways allowed @@ -28,7 +29,7 @@ /*! \file - \version $Id: RlinkConnect.cpp 521 2013-05-20 22:16:45Z mueller $ + \version $Id: RlinkConnect.cpp 575 2014-07-27 20:55:41Z mueller $ \brief Implemenation of RlinkConnect. */ @@ -401,7 +402,7 @@ bool RlinkConnect::ExecPart(RlinkCommandList& clist, size_t ibeg, size_t iend, fRxPkt.Init(); // FIXME_code: parametrize timeout - if (!fRxPkt.RcvPacket(fpPort.get(), nrcvtot, 5.0, emsg)) return false; + if (!fRxPkt.RcvPacket(fpPort.get(), nrcvtot, 15.0, emsg)) return false; // FIXME_code: handle timeout properly if (fRxPkt.TestFlag(RlinkPacketBuf::kFlagTout)) { diff --git a/tools/src/librlinktpp/RtclRlinkConnect.cpp b/tools/src/librlinktpp/RtclRlinkConnect.cpp index 39079156..21390e5e 100644 --- a/tools/src/librlinktpp/RtclRlinkConnect.cpp +++ b/tools/src/librlinktpp/RtclRlinkConnect.cpp @@ -1,6 +1,6 @@ -// $Id: RtclRlinkConnect.cpp 521 2013-05-20 22:16:45Z mueller $ +// $Id: RtclRlinkConnect.cpp 576 2014-08-02 12:24:28Z mueller $ // -// Copyright 2011-2013 by Walter F.J. Mueller +// Copyright 2011-2014 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 @@ -13,6 +13,7 @@ // // Revision History: // Date Rev Version Comment +// 2014-08-02 576 1.1.7 bugfix: redo estatdef logic; avoid LastExpect() // 2013-02-23 492 1.1.6 use RlogFile.Name(); use Context().ErrorCount() // 2013-02-22 491 1.1.5 use new RlogFile/RlogMsg interfaces // 2013-02-02 480 1.1.4 allow empty exec commands @@ -27,7 +28,7 @@ /*! \file - \version $Id: RtclRlinkConnect.cpp 521 2013-05-20 22:16:45Z mueller $ + \version $Id: RtclRlinkConnect.cpp 576 2014-08-02 12:24:28Z mueller $ \brief Implemenation of class RtclRlinkConnect. */ @@ -197,7 +198,8 @@ int RtclRlinkConnect::M_exec(RtclArgs& args) } else if (opt == "-edata") { // -edata data ?mask -------------- if (!ClistNonEmpty(args, clist)) return kERR; if (clist[lsize-1].Expect()==0) { - clist.LastExpect(new RlinkCommandExpect()); + clist[lsize-1].SetExpect(new RlinkCommandExpect(estatdef_val, + estatdef_msk)); } if (clist[lsize-1].Command() == RlinkCommand::kCmdRblk) { vector data; @@ -222,7 +224,7 @@ int RtclRlinkConnect::M_exec(RtclArgs& args) if (!args.GetArg("??mask", mask)) return kERR; if (args.NOptMiss() == 2) mask = 0xff; if (clist[lsize-1].Expect()==0) { - clist.LastExpect(new RlinkCommandExpect()); + clist[lsize-1].SetExpect(new RlinkCommandExpect()); } clist[lsize-1].Expect()->SetStatus(stat, mask); @@ -250,14 +252,16 @@ int RtclRlinkConnect::M_exec(RtclArgs& args) if (!args.GetArg("??varRes", varlist)) return kERR; } - if (lsize != clist.Size()) { // cmd added to clist (ind=lsize!) - if (estatdef_msk != 0xff) { // estatdef defined - if (clist[lsize].Expect()==0) { - clist.LastExpect(new RlinkCommandExpect()); + if (estatdef_msk != 0xff && // estatdef defined + lsize != clist.Size()) { // and cmd added to clist + for (size_t i=lsize; iSetStatus(estatdef_val, estatdef_msk); } } + } int nact = 0; diff --git a/tools/src/librutiltpp/RtclSignalAction.cpp b/tools/src/librutiltpp/RtclSignalAction.cpp index ff8a1a80..e968142f 100644 --- a/tools/src/librutiltpp/RtclSignalAction.cpp +++ b/tools/src/librutiltpp/RtclSignalAction.cpp @@ -1,6 +1,6 @@ -// $Id: RtclSignalAction.cpp 521 2013-05-20 22:16:45Z mueller $ +// $Id: RtclSignalAction.cpp 577 2014-08-03 20:49:42Z mueller $ // -// Copyright 2013- by Walter F.J. Mueller +// Copyright 2013-2014 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 @@ -13,18 +13,20 @@ // // Revision History: // Date Rev Version Comment +// 2014-08-02 577 1.0.1 add include unistd.h (write+pipe dcl) // 2013-05-17 521 1.0 Initial version // --------------------------------------------------------------------------- /*! \file - \version $Id: RtclSignalAction.cpp 521 2013-05-20 22:16:45Z mueller $ + \version $Id: RtclSignalAction.cpp 577 2014-08-03 20:49:42Z mueller $ \brief Implemenation of class RtclSignalAction. */ #include #include #include +#include #include diff --git a/tools/src/librw11/Makefile b/tools/src/librw11/Makefile index 209f2f09..2686257a 100644 --- a/tools/src/librw11/Makefile +++ b/tools/src/librw11/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile 529 2013-08-02 17:15:43Z mueller $ +# $Id: Makefile 561 2014-06-09 17:22:50Z mueller $ # # Revision History: # Date Rev Version Comment @@ -28,9 +28,9 @@ OBJ_all += Rw11UnitTerm.o OBJ_all += Rw11UnitDisk.o OBJ_all += Rw11UnitStream.o OBJ_all += Rw11CntlDL11.o Rw11UnitDL11.o -OBJ_all += Rw11CntlRK11.o Rw11UnitRK11.o OBJ_all += Rw11CntlLP11.o Rw11UnitLP11.o OBJ_all += Rw11CntlPC11.o Rw11UnitPC11.o +OBJ_all += Rw11CntlRK11.o Rw11UnitRK11.o OBJ_all += Rw11Virt.o OBJ_all += Rw11VirtTerm.o Rw11VirtTermPty.o Rw11VirtTermTcp.o OBJ_all += Rw11VirtDisk.o Rw11VirtDiskFile.o diff --git a/tools/src/librw11/Rw11CntlRK11.cpp b/tools/src/librw11/Rw11CntlRK11.cpp index bc29bced..7e9d6184 100644 --- a/tools/src/librw11/Rw11CntlRK11.cpp +++ b/tools/src/librw11/Rw11CntlRK11.cpp @@ -1,8 +1,8 @@ -// $Id: Rw11CntlRK11.cpp 515 2013-05-04 17:28:59Z mueller $ +// $Id: Rw11CntlRK11.cpp 562 2014-06-15 17:23:18Z mueller $ // -// Copyright 2013- by Walter F.J. Mueller +// Copyright 2013-2014 by Walter F.J. Mueller // Other credits: -// the boot code from the simh project and Copyright Robert M Supnik +// the boot code is from the simh project and Copyright Robert M Supnik // // 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 @@ -15,13 +15,14 @@ // // Revision History: // Date Rev Version Comment +// 2014-06-14 562 1.0.1 Add stats // 2013-04-20 508 1.0 Initial version // 2013-02-10 485 0.1 First draft // --------------------------------------------------------------------------- /*! \file - \version $Id: Rw11CntlRK11.cpp 515 2013-05-04 17:28:59Z mueller $ + \version $Id: Rw11CntlRK11.cpp 562 2014-06-15 17:23:18Z mueller $ \brief Implemenation of Rw11CntlRK11. */ @@ -148,6 +149,19 @@ Rw11CntlRK11::Rw11CntlRK11() for (size_t i=0; i& code, uint16_t& aload, uint16_t& astart) { uint16_t kBOOT_START = 02000; - uint16_t bootcode[] = { // rk05 boot loader - from simh pdp11_rk.c + uint16_t bootcode[] = { // rk11 boot loader - from simh pdp11_rk.c (v3.9) 0042113, // "KD" 0012706, kBOOT_START, // MOV #boot_start, SP 0012700, uint16_t(unit), // MOV #unit, R0 ; unit number @@ -242,7 +256,7 @@ bool Rw11CntlRK11::BootCode(size_t unit, std::vector& code, 0012741, 0000005, // MOV #READ+GO, -(R1) ; read & go 0005002, // CLR R2 0005003, // CLR R3 - 0012704, uint16_t(kBOOT_START+020), // MOV #START+20, R4 + 0012704, uint16_t(kBOOT_START+020), // MOV #START+20, R4 ; ?? unclear ?? 0005005, // CLR R5 0105711, // TSTB (R1) 0100376, // BPL .-4 @@ -376,11 +390,13 @@ int Rw11CntlRK11::AttnHandler(const RlinkServer::AttnArgs& args) // now handle the functions if (fu == kRKCS_CRESET) { // Control reset ----------------- + fStats.Inc(kStatNFuncCreset); cpu.AddWibr(clist, fBase+kRKMR, kRKMR_M_CRESET); fRd_busy = false; } else if (fu == kRKCS_WRITE) { // Write ------------------------- // Note: WRITE+FMT is just WRITE + fStats.Inc(kStatNFuncWrite); if (se >= unit.NSector()) rker |= kRKER_M_NXS; if (cy >= unit.NCylinder()) rker |= kRKER_M_NXC; if (unit.WProt()) rker |= kRKER_M_WLO; @@ -388,18 +404,21 @@ int Rw11CntlRK11::AttnHandler(const RlinkServer::AttnArgs& args) queue = true; } else if (fu == kRKCS_READ) { // Read -------------------------- + fStats.Inc(kStatNFuncRead); if (se >= unit.NSector()) rker |= kRKER_M_NXS; if (cy >= unit.NCylinder()) rker |= kRKER_M_NXC; if (rkcs & kRKCS_M_IBA) rker |= kRKER_M_DRE; // not yet supported FIXME queue = true; } else if (fu == kRKCS_WCHK) { // Write Check ------------------- + fStats.Inc(kStatNFuncWchk); if (se >= unit.NSector()) rker |= kRKER_M_NXS; if (cy >= unit.NCylinder()) rker |= kRKER_M_NXC; if (rkcs & kRKCS_M_IBA) rker |= kRKER_M_DRE; // not yet supported FIXME queue = true; } else if (fu == kRKCS_SEEK) { // Seek -------------------------- + fStats.Inc(kStatNFuncSeek); if (se >= unit.NSector()) rker |= kRKER_M_NXS; if (cy >= unit.NCylinder()) rker |= kRKER_M_NXC; if (rker) { @@ -417,16 +436,19 @@ int Rw11CntlRK11::AttnHandler(const RlinkServer::AttnArgs& args) } } else if (fu == kRKCS_RCHK) { // Read Check -------------------- + fStats.Inc(kStatNFuncRchk); if (se >= unit.NSector()) rker |= kRKER_M_NXS; if (cy >= unit.NCylinder()) rker |= kRKER_M_NXC; if (rkcs & kRKCS_M_IBA) rker |= kRKER_M_DRE; // not yet supported FIXME queue = true; } else if (fu == kRKCS_DRESET) { // Drive Reset ------------------- + fStats.Inc(kStatNFuncDreset); cpu.AddWibr(clist, fBase+kRKMR, kRKMR_M_FDONE); cpu.AddWibr(clist, fBase+kRKMR, 1u<256) ? 256 : fRd_nwrd; cpu.AddRMem(clist, fRd_addr, (uint16_t*) buf, bsize, @@ -494,6 +517,7 @@ int Rw11CntlRK11::RdmaHandler() return 1; // requeue } else if (fu == kRKCS_READ) { + fStats.Inc(kStatNRdmaRead); if ((fRd_rkcs&kRKCS_M_FMT) == 0) { // Read -------------------------- RerrMsg emsg; bool rc = unit.VirtRead(fRd_lba, 1, buf, emsg); @@ -533,6 +557,7 @@ int Rw11CntlRK11::RdmaHandler() } } else if (fu == kRKCS_WCHK) { // Write Check ------------------- + fStats.Inc(kStatNRdmaWchk); uint16_t bufmem[256]; RlinkCommandList clist; size_t bsize = (fRd_nwrd>256) ? 256 : fRd_nwrd; @@ -565,6 +590,7 @@ int Rw11CntlRK11::RdmaHandler() } else if (fu == kRKCS_RCHK) { // Read Check -------------------- // Note: no DMA transfer done; done here to keep logic similar to read + fStats.Inc(kStatNRdmaRchk); size_t bsize = (fRd_nwrd>256) ? 256 : fRd_nwrd; fRd_nwrd -= bsize; fRd_addr += 2*bsize; @@ -573,7 +599,7 @@ int Rw11CntlRK11::RdmaHandler() return 1; // requeue } else { - throw Rexception("Rw11CntlDL11::RdmaHandler", + throw Rexception("Rw11CntlRK11::RdmaHandler", "Bad state: bad function code"); } diff --git a/tools/src/librw11/Rw11CntlRK11.hpp b/tools/src/librw11/Rw11CntlRK11.hpp index d2af147a..d13f838c 100644 --- a/tools/src/librw11/Rw11CntlRK11.hpp +++ b/tools/src/librw11/Rw11CntlRK11.hpp @@ -1,6 +1,6 @@ -// $Id: Rw11CntlRK11.hpp 509 2013-04-21 20:46:20Z mueller $ +// $Id: Rw11CntlRK11.hpp 562 2014-06-15 17:23:18Z mueller $ // -// Copyright 2013- by Walter F.J. Mueller +// Copyright 2013-2014 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 @@ -13,6 +13,7 @@ // // Revision History: // Date Rev Version Comment +// 2014-06-14 562 1.0.1 Add stats definitions // 2013-04-20 508 1.0 Initial version // 2013-02-10 485 0.1 First draft // --------------------------------------------------------------------------- @@ -20,7 +21,7 @@ /*! \file - \version $Id: Rw11CntlRK11.hpp 509 2013-04-21 20:46:20Z mueller $ + \version $Id: Rw11CntlRK11.hpp 562 2014-06-15 17:23:18Z mueller $ \brief Declaration of class Rw11CntlRK11. */ @@ -126,6 +127,23 @@ namespace Retro { static const uint16_t kRKMR_M_CRESET= kWBit09; static const uint16_t kRKMR_M_FDONE = kWBit08; + // statistics counter indices + enum stats { + kStatNFuncCreset = Rw11Cntl::kDimStat, + kStatNFuncWrite, + kStatNFuncRead, + kStatNFuncWchk, + kStatNFuncSeek, + kStatNFuncRchk, + kStatNFuncDreset, + kStatNFuncWlock, + kStatNRdmaWrite, + kStatNRdmaRead, + kStatNRdmaWchk, + kStatNRdmaRchk, + kDimStat + }; + protected: int AttnHandler(const RlinkServer::AttnArgs& args); int RdmaHandler(); diff --git a/tools/src/librw11/Rw11Cpu.cpp b/tools/src/librw11/Rw11Cpu.cpp index 3028af5f..883f6fad 100644 --- a/tools/src/librw11/Rw11Cpu.cpp +++ b/tools/src/librw11/Rw11Cpu.cpp @@ -1,6 +1,6 @@ -// $Id: Rw11Cpu.cpp 521 2013-05-20 22:16:45Z mueller $ +// $Id: Rw11Cpu.cpp 576 2014-08-02 12:24:28Z mueller $ // -// Copyright 2013- by Walter F.J. Mueller +// Copyright 2013-2014 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 @@ -13,6 +13,7 @@ // // Revision History: // Date Rev Version Comment +// 2014-08-02 576 1.0.2 adopt rename of LastExpect->SetLastExpect // 2013-04-14 506 1.0.1 add AddLalh(),AddRMem(),AddWMem() // 2013-04-12 504 1.0 Initial version // 2013-01-27 478 0.1 First draft @@ -20,7 +21,7 @@ /*! \file - \version $Id: Rw11Cpu.cpp 521 2013-05-20 22:16:45Z mueller $ + \version $Id: Rw11Cpu.cpp 576 2014-08-02 12:24:28Z mueller $ \brief Implemenation of Rw11Cpu. */ #include @@ -363,12 +364,12 @@ bool Rw11Cpu::ProbeCntl(Rw11Probe& dsc) if (dsc.fProbeInt) { clist.AddWreg(fBase+kCp_addr_al, dsc.fAddr); iib = clist.AddRreg(fBase+kCp_addr_mem); - clist.LastExpect(new RlinkCommandExpect(0,0xff)); // disable stat checking + clist.SetLastExpect(new RlinkCommandExpect(0,0xff)); // disable stat check } if (dsc.fProbeRem) { AddIbrb(clist, dsc.fAddr); irb = AddRibr(clist, dsc.fAddr); - clist.LastExpect(new RlinkCommandExpect(0,0xff)); // disable stat checking + clist.SetLastExpect(new RlinkCommandExpect(0,0xff)); // disable stat check } Server().Exec(clist); diff --git a/tools/src/librw11/Rw11UnitDisk.cpp b/tools/src/librw11/Rw11UnitDisk.cpp index 0aecaa73..0b9321ec 100644 --- a/tools/src/librw11/Rw11UnitDisk.cpp +++ b/tools/src/librw11/Rw11UnitDisk.cpp @@ -1,4 +1,4 @@ -// $Id: Rw11UnitDisk.cpp 509 2013-04-21 20:46:20Z mueller $ +// $Id: Rw11UnitDisk.cpp 561 2014-06-09 17:22:50Z mueller $ // // Copyright 2013- by Walter F.J. Mueller // @@ -19,7 +19,7 @@ /*! \file - \version $Id: Rw11UnitDisk.cpp 509 2013-04-21 20:46:20Z mueller $ + \version $Id: Rw11UnitDisk.cpp 561 2014-06-09 17:22:50Z mueller $ \brief Implemenation of Rw11UnitDisk. */ @@ -62,7 +62,7 @@ Rw11UnitDisk::~Rw11UnitDisk() void Rw11UnitDisk::SetType(const std::string& type) { - throw Rexception("Rw11UnitDisk::", + throw Rexception("Rw11UnitDisk::SetType", string("Bad args: only type '") + fType + "' supported"); return; } diff --git a/tools/src/librw11/Rw11UnitTerm.hpp b/tools/src/librw11/Rw11UnitTerm.hpp index 9b87e7dc..42076fe3 100644 --- a/tools/src/librw11/Rw11UnitTerm.hpp +++ b/tools/src/librw11/Rw11UnitTerm.hpp @@ -1,4 +1,4 @@ -// $Id: Rw11UnitTerm.hpp 515 2013-05-04 17:28:59Z mueller $ +// $Id: Rw11UnitTerm.hpp 570 2014-07-20 19:05:11Z mueller $ // // Copyright 2013- by Walter F.J. Mueller // @@ -22,7 +22,7 @@ /*! \file - \version $Id: Rw11UnitTerm.hpp 515 2013-05-04 17:28:59Z mueller $ + \version $Id: Rw11UnitTerm.hpp 570 2014-07-20 19:05:11Z mueller $ \brief Declaration of class Rw11UnitTerm. */ @@ -79,7 +79,7 @@ namespace Retro { protected: bool fTo7bit; // fRcvQueue; // +// Copyright 2013-2014 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 @@ -13,6 +13,8 @@ // // Revision History: // Date Rev Version Comment +// 2014-06-27 565 1.1.1 temporarily hide RL11 +// 2014-06-08 561 1.1.0 add RL11 // 2013-05-01 513 1.0.1 add LP11 // 2013-03-06 495 1.0 Initial version // 2013-02-09 489 0.1 First draft @@ -20,7 +22,7 @@ /*! \file - \version $Id: RtclRw11CntlFactory.cpp 515 2013-05-04 17:28:59Z mueller $ + \version $Id: RtclRw11CntlFactory.cpp 565 2014-06-28 12:54:08Z mueller $ \brief Implemenation of global function RtclRw11CntlFactory. */ @@ -30,6 +32,7 @@ #include "RtclRw11CntlDL11.hpp" #include "RtclRw11CntlRK11.hpp" +//#include "RtclRw11CntlRL11.hpp" #include "RtclRw11CntlLP11.hpp" #include "RtclRw11CntlPC11.hpp" @@ -57,6 +60,11 @@ int RtclRw11CntlFactory(RtclArgs& args, RtclRw11Cpu& cpu) if(pobj->FactoryCmdConfig(args, cpu) != TCL_OK) return TCL_ERROR; pobj.release(); +// } else if (type == "rl11") { // rl11 -------------------------- +// unique_ptr pobj(new RtclRw11CntlRL11()); +// if(pobj->FactoryCmdConfig(args, cpu) != TCL_OK) return TCL_ERROR; +// pobj.release(); + } else if (type == "lp11") { // lp11 -------------------------- unique_ptr pobj(new RtclRw11CntlLP11()); if(pobj->FactoryCmdConfig(args, cpu) != TCL_OK) return TCL_ERROR; diff --git a/tools/src/librwxxtpp/RtclRw11Cpu.cpp b/tools/src/librwxxtpp/RtclRw11Cpu.cpp index 2fa97b53..6034a34c 100644 --- a/tools/src/librwxxtpp/RtclRw11Cpu.cpp +++ b/tools/src/librwxxtpp/RtclRw11Cpu.cpp @@ -1,4 +1,4 @@ -// $Id: RtclRw11Cpu.cpp 552 2014-03-02 23:02:00Z mueller $ +// $Id: RtclRw11Cpu.cpp 576 2014-08-02 12:24:28Z mueller $ // // Copyright 2013-2014 by Walter F.J. Mueller // @@ -13,6 +13,7 @@ // // Revision History: // Date Rev Version Comment +// 2014-08-02 576 1.0.4 bugfix: redo estatdef logic; avoid LastExpect() // 2014-03-02 552 1.0.3 M_cp: add -ral and -rah options (addr reg readback) // 2013-05-19 521 1.0.2 M_cp: merge -wibrb|-wibrbbe again; add -wa // 2013-04-26 511 1.0.1 add M_show @@ -22,7 +23,7 @@ /*! \file - \version $Id: RtclRw11Cpu.cpp 552 2014-03-02 23:02:00Z mueller $ + \version $Id: RtclRw11Cpu.cpp 576 2014-08-02 12:24:28Z mueller $ \brief Implemenation of RtclRw11Cpu. */ @@ -330,7 +331,8 @@ int RtclRw11Cpu::M_cp(RtclArgs& args) if (lsize == 0) return args.Quit("-E: -edata not allowed on empty command list"); if (clist[lsize-1].Expect()==0) { - clist.LastExpect(new RlinkCommandExpect()); + clist[lsize-1].SetExpect(new RlinkCommandExpect(estatdef_val, + estatdef_msk)); } if (clist[lsize-1].Command() == RlinkCommand::kCmdRblk) { vector data; @@ -356,7 +358,7 @@ int RtclRw11Cpu::M_cp(RtclArgs& args) if (!args.GetArg("??mask", mask)) return kERR; if (args.NOptMiss() == 2) mask = 0xff; if (clist[lsize-1].Expect()==0) { - clist.LastExpect(new RlinkCommandExpect()); + clist[lsize-1].SetExpect(new RlinkCommandExpect()); } clist[lsize-1].Expect()->SetStatus(stat, mask); @@ -371,15 +373,16 @@ int RtclRw11Cpu::M_cp(RtclArgs& args) } - if (lsize != clist.Size()) { // cmd added to clist (ind=lsize!) - if (estatdef_msk != 0xff) { // estatdef defined - if (clist[lsize].Expect()==0) { - clist.LastExpect(new RlinkCommandExpect()); + if (estatdef_msk != 0xff && // estatdef defined + lsize != clist.Size()) { // and cmd added to clist + for (size_t i=lsize; iSetStatus(estatdef_val, estatdef_msk); } } - + } if (!args.AllDone()) return kERR; diff --git a/tools/tbench/test_w11a_div.tcl b/tools/tbench/test_w11a_div.tcl new file mode 100644 index 00000000..4ab1d29f --- /dev/null +++ b/tools/tbench/test_w11a_div.tcl @@ -0,0 +1,390 @@ +# $Id: test_w11a_div.tcl 575 2014-07-27 20:55:41Z mueller $ +# +# Copyright 2014- by Walter F.J. Mueller +# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory +# +# Revision History: +# Date Rev Version Comment +# 2014-07-27 575 1.0.2 drop tout value from asmwait, reply on asmwait_tout +# 2014-07-20 570 1.0.2 add rw11::div_show_test; test late div quit cases +# 2014-07-12 569 1.0.1 move sxt16/32 to rutil +# 2014-07-11 568 1.0 Initial version +# 2014-06-29 566 0.1 First draft +# +# Test div instruction +# + +namespace eval rw11 { + + # + # div_simh: calculate expected division result as pdp11 simh does it ------- + # + # this pdp11 div emulation adopted from pdp11_cpu.c (git head 2014-06-09) + proc div_simh {ddi dri} { + set src2 $dri + set src $ddi + set qd [expr ($ddi>>16) & 0xffff]; # w11a default for V=1 bailouts + set rd [expr $ddi & 0xffff]; # " + set n [expr {($ddi<0) ^ ($dri<0)}]; # " + set z 0; # " + + # quit if divident larger than possible 16 bit signed products + if {$src > 1073774591 || $src < -1073741823} { + return [list $qd $rd $n $z 1 0] + } + # quit if divisor zero + if {$src2 == 0} { + return [list $qd $rd $n $z 1 1] + } + + if {$src2 & 0x8000} { + set src2 [expr $src2 | ~ 077777] + } + if {$src & 0x80000000} { + set src [expr $src | ~ 017777777777] + } + + # Tcl "/" uses 'round down' sematics, while C (and PDP11) 'round to 0' + # ddi dri Tcl C/C++ + # 34 5 q= 6 r= 4 q= 6 r= 4 + # 34 -5 q= 7 r=-1 q=-6 r= 4 + # -34 5 q=-7 r= 1 q=-6 r=-4 + # -34 -5 q= 6 r=-4 q= 6 r=-4 + # Tcl --> r same sign as divisor + # C --> r same sign as divident + # so add correction step to always get C/C++/PDP11 divide semantics + # + set q [expr $src / $src2] + set r [expr ($src - ($src2 * $q))] + + if {$r!=0 && (($src<0) ^ ($r<0))} { # divident and remainder diff sign + set r [expr $r - $src2] + set q [expr $q + (($q<0)?1:-1)] + } + + if {($q > 32767) || ($q < -32768)} { + return [list $qd $rd $n $z 1 0] + } + + set n [expr {$q < 0}] + set z [expr {$q == 0}] + return [list $q $r $n $z 0 0] + } + + # + # div_testd3: test division ddh,ddl,,dr + expected result ------------------ + # + proc div_testd3 {cpu symName ddh ddl dr q r n z v c} { + upvar 1 $symName sym + set nzvc [expr {($n<<3) | ($z<<2) | ($v<<1) | $c}] + set dr16 [expr {$dr & 0xffff}] + set q16 [expr {$q & 0xffff}] + set r16 [expr {$r & 0xffff}] + + # use rw11::div_show_test to enable generation of divtst files + if {[info exists rw11::div_show_test] && $rw11::div_show_test} { + set ddi [expr (($ddh&0xffff)<<16) + ($ddl&0xffff)] + set ddi [rutil::sxt32 $ddi] + set dri [rutil::sxt16 $dr16] + set qi [rutil::sxt16 $q16] + set ri [rutil::sxt16 $r16] + puts [format "%06o %06o %06o : %d%d%d%d %06o %06o # %11d/%6d:%6d,%6d" \ + $ddh $ddl $dr16 $n $z $v $c $q16 $r16 $ddi $dri $qi $ri ] + } + + 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 + lappend treglist r0 $q16 r1 $r16 + } + lappend treglist r3 $nzvc + + set errcnt [rw11::asmtreg $cpu $treglist] + + if {$errcnt} { + puts [format \ + "div FAIL: dd=%06o,%06o dr=%06o exp: q=%06o r=%06o nzvc=%d%d%d%d" \ + $ddh $ddl $dr16 $q16 $r16 $n $z $v $c] + } + return $errcnt + } + + # + # div_testd2: test division dd,dr + expected result ------------------------ + # + proc div_testd2 {cpu symName dd dr q r n z v c} { + upvar 1 $symName sym + set ddh [expr {($dd>>16) & 0xffff}] + set ddl [expr { $dd & 0xffff}] + return [div_testd3 $cpu sym $ddh $ddl $dr $q $r $n $z $v $c] + } + + # + # div_testdqr: test division, give divisor, quotient and remainder --------- + # + proc div_testdqr {cpu symName dri qi ri} { + upvar 1 $symName sym + set dri [rutil::sxt16 $dri] + set qi [rutil::sxt16 $qi] + set ri [rutil::sxt16 $ri] + set ddi [expr {$dri*$qi + $ri}] + + set simhres [div_simh $ddi $dri] + set q [lindex $simhres 0] + set r [lindex $simhres 1] + set n [lindex $simhres 2] + set z [lindex $simhres 3] + set v [lindex $simhres 4] + set c [lindex $simhres 5] + + return [div_testd2 $cpu sym $ddi $dri $q $r $n $z $v $c] + } +} + +# ---------------------------------------------------------------------------- +rlc log "test_div: test div instruction" + +$cpu ldasm -lst lst -sym sym { + . = 1000 +stack: +start: div r2,r0 + mov @#177776,r3 + bic #177760,r3 + halt +stop: +} + +rlc log " test basics (via testd2)" +# dd dr q r n z v c +rlc log " dr>0" +rw11::div_testd2 $cpu sym 0 3 0 0 0 1 0 0 +rw11::div_testd2 $cpu sym 1 3 0 1 0 1 0 0 +rw11::div_testd2 $cpu sym 2 3 0 2 0 1 0 0 +rw11::div_testd2 $cpu sym 3 3 1 0 0 0 0 0 +rw11::div_testd2 $cpu sym 4 3 1 1 0 0 0 0 +rw11::div_testd2 $cpu sym -1 3 0 -1 0 1 0 0 +rw11::div_testd2 $cpu sym -2 3 0 -2 0 1 0 0 +rw11::div_testd2 $cpu sym -3 3 -1 0 1 0 0 0 +rw11::div_testd2 $cpu sym -4 3 -1 -1 1 0 0 0 +rlc log " dr<0" +rw11::div_testd2 $cpu sym 0 -3 0 0 0 1 0 0 +rw11::div_testd2 $cpu sym 1 -3 0 1 0 1 0 0 +rw11::div_testd2 $cpu sym 2 -3 0 2 0 1 0 0 +rw11::div_testd2 $cpu sym 3 -3 -1 0 1 0 0 0 +rw11::div_testd2 $cpu sym 4 -3 -1 1 1 0 0 0 +rw11::div_testd2 $cpu sym -1 -3 0 -1 0 1 0 0 +rw11::div_testd2 $cpu sym -2 -3 0 -2 0 1 0 0 +rw11::div_testd2 $cpu sym -3 -3 1 0 0 0 0 0 +rw11::div_testd2 $cpu sym -4 -3 1 -1 0 0 0 0 +rlc log " dr==0" +rw11::div_testd2 $cpu sym 0 0 0 0 0 1 1 1 +rw11::div_testd2 $cpu sym 1 0 0 0 0 1 1 1 +rw11::div_testd2 $cpu sym -1 0 0 0 0 1 1 1 + +rlc log " test 4 quadrant basics (via testd2)" +# dd dr q r n z v c +rw11::div_testd2 $cpu sym 34 5 6 4 0 0 0 0 +rw11::div_testd2 $cpu sym 34 -5 -6 4 1 0 0 0 +rw11::div_testd2 $cpu sym -34 5 -6 -4 1 0 0 0 +rw11::div_testd2 $cpu sym -34 -5 6 -4 0 0 0 0 + +rlc log " test 4 quadrant basics (via testdqr)" +# dr q r +rw11::div_testdqr $cpu sym 5 6 4; +rw11::div_testdqr $cpu sym -5 -6 4; +rw11::div_testdqr $cpu sym 5 -6 -4; +rw11::div_testdqr $cpu sym -5 6 -4; + +rlc log " test q=100000 boundary cases (q = max neg value)" +rlc log " case dd>0, dr<0 -- factor 21846" +# dr q r +rw11::div_testdqr $cpu sym -21846 0100000 0; # BAD-R4 +rw11::div_testdqr $cpu sym -21846 0100000 1; # BAD-R4 +rw11::div_testdqr $cpu sym -21846 0100000 21844; # BAD-R4 +rw11::div_testdqr $cpu sym -21846 0100000 21845; # BAD-R4 +rw11::div_testdqr $cpu sym -21846 0100000 21846; # v=1 +rw11::div_testdqr $cpu sym -21846 0100000 21847; # v=1 + +rlc log " case dd<0, dr>0 -- factor 21846" +rw11::div_testdqr $cpu sym 21846 0100000 0; # BAD-R4 +rw11::div_testdqr $cpu sym 21846 0100000 -1; # BAD-R4 +rw11::div_testdqr $cpu sym 21846 0100000 -21844; # BAD-R4 +rw11::div_testdqr $cpu sym 21846 0100000 -21845; # BAD-R4 +rw11::div_testdqr $cpu sym 21846 0100000 -21846; # v=1 +rw11::div_testdqr $cpu sym 21846 0100000 -21847; # v=1 + +rlc log " case dd>0, dr<0 -- factor 21847" +rw11::div_testdqr $cpu sym -21847 0100000 0; # BAD-R4 +rw11::div_testdqr $cpu sym -21847 0100000 1; # BAD-R4 +rw11::div_testdqr $cpu sym -21847 0100000 21845; # BAD-R4 +rw11::div_testdqr $cpu sym -21847 0100000 21846; # BAD-R4 +rw11::div_testdqr $cpu sym -21847 0100000 21847; # v=1 +rw11::div_testdqr $cpu sym -21847 0100000 21848; # v=1 + +rlc log " case dd<0, dr>0 -- factor 21847" +rw11::div_testdqr $cpu sym 21847 0100000 0; # BAD-R4 +rw11::div_testdqr $cpu sym 21847 0100000 -1; # BAD-R4 +rw11::div_testdqr $cpu sym 21847 0100000 -21845; # BAD-R4 +rw11::div_testdqr $cpu sym 21847 0100000 -21846; # BAD-R4 +rw11::div_testdqr $cpu sym 21847 0100000 -21847; # v=1 +rw11::div_testdqr $cpu sym 21847 0100000 -21848; # v=1 + +# +# +rlc log " test q=077777 boundary cases (q = max pos value)" +rlc log " case dd>0, dr>0 -- factor 21846" +rw11::div_testdqr $cpu sym 21846 0077777 0; # +rw11::div_testdqr $cpu sym 21846 0077777 1; # +rw11::div_testdqr $cpu sym 21846 0077777 21844; # +rw11::div_testdqr $cpu sym 21846 0077777 21845; # +rw11::div_testdqr $cpu sym 21846 0077777 21846; # v=1 +rw11::div_testdqr $cpu sym 21846 0077777 21847; # v=1 +rlc log " case dd<0, dr<0 -- factor 21846" +rw11::div_testdqr $cpu sym -21846 0077777 0; # +rw11::div_testdqr $cpu sym -21846 0077777 -1; # +rw11::div_testdqr $cpu sym -21846 0077777 -21844; # +rw11::div_testdqr $cpu sym -21846 0077777 -21845; # +rw11::div_testdqr $cpu sym -21846 0077777 -21846; # v=1 +rw11::div_testdqr $cpu sym -21846 0077777 -21847; # v=1 +rlc log " case dd>0, dr>0 -- factor 21847" +rw11::div_testdqr $cpu sym 21847 0077777 0; # +rw11::div_testdqr $cpu sym 21847 0077777 1; # +rw11::div_testdqr $cpu sym 21847 0077777 21845; # +rw11::div_testdqr $cpu sym 21847 0077777 21846; # +rw11::div_testdqr $cpu sym 21847 0077777 21847; # v=1 +rw11::div_testdqr $cpu sym 21847 0077777 21848; # v=1 +rlc log " case dd<0, dr<0 -- factor 21847" +rw11::div_testdqr $cpu sym -21847 0077777 0; # +rw11::div_testdqr $cpu sym -21847 0077777 -1; # +rw11::div_testdqr $cpu sym -21847 0077777 -21845; # +rw11::div_testdqr $cpu sym -21847 0077777 -21846; # +rw11::div_testdqr $cpu sym -21847 0077777 -21846; # v=1 +rw11::div_testdqr $cpu sym -21847 0077777 -21847; # v=1 +# +# +rlc log " test dr=100000 boundary cases (dr = max neg value)" +rlc log " case dd<0, q>0" +rw11::div_testdqr $cpu sym 0100000 1 0; # +rw11::div_testdqr $cpu sym 0100000 1 -1; # +rw11::div_testdqr $cpu sym 0100000 1 -32767; # +rw11::div_testdqr $cpu sym 0100000 2 0; # BAD-R4 +rw11::div_testdqr $cpu sym 0100000 2 -1; # +rw11::div_testdqr $cpu sym 0100000 2 -32767; # +rw11::div_testdqr $cpu sym 0100000 3 0; # +rw11::div_testdqr $cpu sym 0100000 3 -1; # +rw11::div_testdqr $cpu sym 0100000 3 -32767; # +rw11::div_testdqr $cpu sym 0100000 4 0; # BAD-R4 +rw11::div_testdqr $cpu sym 0100000 4 -1; # +rw11::div_testdqr $cpu sym 0100000 4 -32767; # +rw11::div_testdqr $cpu sym 0100000 6 0; # BAD-R4 +rw11::div_testdqr $cpu sym 0100000 32762 0; # BAD-R4 +rw11::div_testdqr $cpu sym 0100000 32764 0; # BAD-R4 +rw11::div_testdqr $cpu sym 0100000 32765 0; # +rw11::div_testdqr $cpu sym 0100000 32766 0; # BAD-R4 +rw11::div_testdqr $cpu sym 0100000 32766 -1; # +rw11::div_testdqr $cpu sym 0100000 32766 -32767; # +rw11::div_testdqr $cpu sym 0100000 32767 0; # +rw11::div_testdqr $cpu sym 0100000 32767 -1; # +rw11::div_testdqr $cpu sym 0100000 32767 -32767; # +rlc log " case dd>0, q<0" +rw11::div_testdqr $cpu sym 0100000 -1 0; # +rw11::div_testdqr $cpu sym 0100000 -1 1; # +rw11::div_testdqr $cpu sym 0100000 -1 32767; # +rw11::div_testdqr $cpu sym 0100000 -2 0; # +rw11::div_testdqr $cpu sym 0100000 -2 1; # +rw11::div_testdqr $cpu sym 0100000 -2 32767; # +rw11::div_testdqr $cpu sym 0100000 -32767 0; # +rw11::div_testdqr $cpu sym 0100000 -32767 1; # +rw11::div_testdqr $cpu sym 0100000 -32767 32767; # +rw11::div_testdqr $cpu sym 0100000 -32768 0; # BAD-R4 +rw11::div_testdqr $cpu sym 0100000 -32768 1; # BAD-R4 +rw11::div_testdqr $cpu sym 0100000 -32768 32767; # BAD-R4 +# +# +rlc log " test dr=077777 boundary cases (dr = max pos value)" +rlc log " case dd>0, q>0" +rw11::div_testdqr $cpu sym 077777 1 0; # +rw11::div_testdqr $cpu sym 077777 1 1; # +rw11::div_testdqr $cpu sym 077777 1 32766; # +rw11::div_testdqr $cpu sym 077777 2 0; # +rw11::div_testdqr $cpu sym 077777 2 1; # +rw11::div_testdqr $cpu sym 077777 2 32766; # +rw11::div_testdqr $cpu sym 077777 32766 0; # +rw11::div_testdqr $cpu sym 077777 32766 1; # +rw11::div_testdqr $cpu sym 077777 32766 32766; # +rw11::div_testdqr $cpu sym 077777 32767 0; # +rw11::div_testdqr $cpu sym 077777 32767 1; # +rw11::div_testdqr $cpu sym 077777 32767 32766; # +rlc log " case dd<0, q<0" +rw11::div_testdqr $cpu sym 077777 -1 0; # +rw11::div_testdqr $cpu sym 077777 -1 -1; # +rw11::div_testdqr $cpu sym 077777 -1 -32766; # +rw11::div_testdqr $cpu sym 077777 -2 0; # +rw11::div_testdqr $cpu sym 077777 -2 -1; # +rw11::div_testdqr $cpu sym 077777 -2 -32766; # +rw11::div_testdqr $cpu sym 077777 -32767 0; # +rw11::div_testdqr $cpu sym 077777 -32767 -1; # +rw11::div_testdqr $cpu sym 077777 -32767 -32766; # +rw11::div_testdqr $cpu sym 077777 -32768 0; # BAD-R4 +rw11::div_testdqr $cpu sym 077777 -32768 -1; # BAD-R4 +rw11::div_testdqr $cpu sym 077777 -32768 -32766; # BAD-R4 +# +# +rlc log " test dd max cases" +rlc log " case dd>0 dr<0 near nmax*nmax+nmax-1 = +1073774591" +rw11::div_testdqr $cpu sym -32768 -32768 -1; # +rw11::div_testdqr $cpu sym -32768 -32768 0; # BAD-R4 +rw11::div_testdqr $cpu sym -32768 -32768 1; # BAD-R4 +rw11::div_testdqr $cpu sym -32768 -32768 32766; # BAD-R4 +rw11::div_testdqr $cpu sym -32768 -32768 32767; # c.c BAD-R4 +rw11::div_testdqr $cpu sym -32768 -32768 32768; # v=1 +rw11::div_testdqr $cpu sym -32768 -32768 32769; # v=1 +rlc log " case dd>0 dr>0 near pmax*pmax+pmax-1 = +1073709055" +rw11::div_testdqr $cpu sym 32767 32767 -1; # +rw11::div_testdqr $cpu sym 32767 32767 0; # +rw11::div_testdqr $cpu sym 32767 32767 1; # +rw11::div_testdqr $cpu sym 32767 32767 32765; # +rw11::div_testdqr $cpu sym 32767 32767 32766; # c.c +rw11::div_testdqr $cpu sym 32767 32767 32767; # v=1 +rw11::div_testdqr $cpu sym 32767 32767 32768; # v=1 +rlc log " case dd<0 dr>0 near nmax*pmax+pmax-1 = -1073741822" +rw11::div_testdqr $cpu sym 32767 -32768 1; # +rw11::div_testdqr $cpu sym 32767 -32768 0; # BAD-R4 +rw11::div_testdqr $cpu sym 32767 -32768 -1; # BAD-R4 +rw11::div_testdqr $cpu sym 32767 -32768 -32765; # BAD-R4 +rw11::div_testdqr $cpu sym 32767 -32768 -32766; # c.c BAD-R4 +rw11::div_testdqr $cpu sym 32767 -32768 -32767; # v=1 +rw11::div_testdqr $cpu sym 32767 -32768 -32768; # v=1 +rlc log " case dd<0 dr<0 near pmax*nmax+nmax-1 = -1073741823" +rw11::div_testdqr $cpu sym -32768 32767 1; # +rw11::div_testdqr $cpu sym -32768 32767 0; # +rw11::div_testdqr $cpu sym -32768 32767 -1; # +rw11::div_testdqr $cpu sym -32768 32767 -32766; # +rw11::div_testdqr $cpu sym -32768 32767 -32767; # c.c +rw11::div_testdqr $cpu sym -32768 32767 -32768; # v=1 +rw11::div_testdqr $cpu sym -32768 32767 -32769; # v=1 +# +# +rlc log " test late div quit cases in 2 quadrant algorithm" +# dd dr q r n z v c +rw11::div_testd2 $cpu sym -32767 -1 32767 0 0 0 0 0; # +rw11::div_testd2 $cpu sym -32768 -1 0 0 0 0 1 0; # +rw11::div_testd2 $cpu sym -32769 -1 0 0 0 0 1 0; # +# +rw11::div_testd2 $cpu sym -65534 -2 32767 0 0 0 0 0; # +rw11::div_testd2 $cpu sym -65535 -2 32767 -1 0 0 0 0; # +rw11::div_testd2 $cpu sym -65536 -2 0 0 0 0 1 0; # +rw11::div_testd2 $cpu sym -65537 -2 0 0 0 0 1 0; # +# +# +rlc log " test big divident overflow cases" +# dd dr q r n z v c +rw11::div_testd2 $cpu sym 0x7fffffff 1 0 0 0 0 1 0; # +rw11::div_testd2 $cpu sym 0x7fffffff 2 0 0 0 0 1 0; # +rw11::div_testd2 $cpu sym 0x7fffffff -1 0 0 1 0 1 0; # +rw11::div_testd2 $cpu sym 0x7fffffff -2 0 0 1 0 1 0; # +rw11::div_testd2 $cpu sym 0x80000000 1 0 0 1 0 1 0; # +rw11::div_testd2 $cpu sym 0x80000000 2 0 0 1 0 1 0; # +rw11::div_testd2 $cpu sym 0x80000000 -1 0 0 0 0 1 0; # +rw11::div_testd2 $cpu sym 0x80000000 -2 0 0 0 0 1 0; # diff --git a/tools/tbench/test_w11a_dsta_flow.tcl b/tools/tbench/test_w11a_dsta_flow.tcl index c6270bdc..43f431b5 100644 --- a/tools/tbench/test_w11a_dsta_flow.tcl +++ b/tools/tbench/test_w11a_dsta_flow.tcl @@ -1,10 +1,11 @@ -# $Id: test_w11a_dsta_flow.tcl 552 2014-03-02 23:02:00Z mueller $ +# $Id: test_w11a_dsta_flow.tcl 575 2014-07-27 20:55:41Z mueller $ # # Copyright 2013-2014 by Walter F.J. Mueller # License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory # # Revision History: # Date Rev Version Comment +# 2014-07-27 575 1.0.2 drop tout value from asmwait, reply on asmwait_tout # 2014-03-01 552 1.0.1 use stack:; check sp; # 2013-03-31 502 1.0 Initial version # @@ -69,7 +70,7 @@ rw11::asmrun $cpu sym [list r0 $sym(sub00) \ r3 [expr {$sym(sub30)+2}] \ r4 $sym(psub4e) \ r5 $sym(data) ] -rw11::asmwait $cpu sym 1.0 +rw11::asmwait $cpu sym rw11::asmtreg $cpu [list r0 $sym(sub00) \ r1 [expr {$sym(sub10)+2}] \ r2 [expr {$sym(psub2)+4}] \ @@ -129,7 +130,7 @@ data: .blkw 2*5. rw11::asmrun $cpu sym [list r0 [expr {$sym(sub00)-020}] \ r1 [expr {$sym(psub10)-040}] \ r5 $sym(data) ] -rw11::asmwait $cpu sym 1.0 +rw11::asmwait $cpu sym rw11::asmtreg $cpu [list r0 [expr {$sym(sub00)-020}] \ r1 [expr {$sym(psub10)-040}] \ r2 0 \ diff --git a/tools/tbench/test_w11a_dstm_word_flow.tcl b/tools/tbench/test_w11a_dstm_word_flow.tcl index 653bf3e9..2b09cc76 100644 --- a/tools/tbench/test_w11a_dstm_word_flow.tcl +++ b/tools/tbench/test_w11a_dstm_word_flow.tcl @@ -1,10 +1,11 @@ -# $Id: test_w11a_dstm_word_flow.tcl 552 2014-03-02 23:02:00Z mueller $ +# $Id: test_w11a_dstm_word_flow.tcl 575 2014-07-27 20:55:41Z mueller $ # # Copyright 2013-2014 by Walter F.J. Mueller # License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory # # Revision History: # Date Rev Version Comment +# 2014-07-27 575 1.0.2 drop tout value from asmwait, reply on asmwait_tout # 2014-03-01 552 1.0.1 check that unused regs stay 0 # 2013-03-31 502 1.0 Initial version # @@ -55,7 +56,7 @@ rw11::asmrun $cpu sym [list r0 010 \ r3 $sym(pdata3) \ r4 $sym(data4e) \ r5 $sym(pdat5e) ] -rw11::asmwait $cpu sym 1.0 +rw11::asmwait $cpu sym rw11::asmtreg $cpu [list r0 011 \ r1 $sym(data1) \ r2 [expr {$sym(data2) + 4}] \ @@ -92,7 +93,7 @@ pdata3: .word data3 rw11::asmrun $cpu sym [list r0 [expr {$sym(data0)-020}] \ r1 [expr {$sym(pdata1)-040}] ] -rw11::asmwait $cpu sym 1.0 +rw11::asmwait $cpu sym rw11::asmtreg $cpu [list r0 [expr {$sym(data0)-020}] \ r1 [expr {$sym(pdata1)-040}] \ r2 0 \ diff --git a/tools/tbench/test_w11a_dstw_word_flow.tcl b/tools/tbench/test_w11a_dstw_word_flow.tcl index 39230e78..2c9c0371 100644 --- a/tools/tbench/test_w11a_dstw_word_flow.tcl +++ b/tools/tbench/test_w11a_dstw_word_flow.tcl @@ -1,10 +1,11 @@ -# $Id: test_w11a_dstw_word_flow.tcl 552 2014-03-02 23:02:00Z mueller $ +# $Id: test_w11a_dstw_word_flow.tcl 575 2014-07-27 20:55:41Z mueller $ # # Copyright 2013-2014 by Walter F.J. Mueller # License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory # # Revision History: # Date Rev Version Comment +# 2014-07-27 575 1.0.2 drop tout value from asmwait, reply on asmwait_tout # 2014-03-01 552 1.0.1 check that unused regs stay 0 # 2013-03-31 502 1.0 Initial version # @@ -54,7 +55,7 @@ rw11::asmrun $cpu sym [list r1 $sym(data1) \ r3 $sym(pdata3) \ r4 $sym(data4e) \ r5 $sym(pdat5e) ] -rw11::asmwait $cpu sym 1.0 +rw11::asmwait $cpu sym rw11::asmtreg $cpu [list r0 0100 \ r1 $sym(data1) \ r2 [expr {$sym(data2) + 4}] \ @@ -91,7 +92,7 @@ pdata3: .word data3 rw11::asmrun $cpu sym [list r0 [expr {$sym(data0)-020}] \ r1 [expr {$sym(pdata1)-040}] ] -rw11::asmwait $cpu sym 1.0 +rw11::asmwait $cpu sym rw11::asmtreg $cpu [list r0 [expr {$sym(data0)-020}] \ r1 [expr {$sym(pdata1)-040}] \ r2 0 \ diff --git a/tools/tbench/test_w11a_inst_traps.tcl b/tools/tbench/test_w11a_inst_traps.tcl index 69a909da..f862501e 100644 --- a/tools/tbench/test_w11a_inst_traps.tcl +++ b/tools/tbench/test_w11a_inst_traps.tcl @@ -1,10 +1,11 @@ -# $Id: test_w11a_inst_traps.tcl 552 2014-03-02 23:02:00Z mueller $ +# $Id: test_w11a_inst_traps.tcl 575 2014-07-27 20:55:41Z mueller $ # # Copyright 2013-2014 by Walter F.J. Mueller # License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory # # Revision History: # Date Rev Version Comment +# 2014-07-27 575 1.0.2 drop tout value from asmwait, reply on asmwait_tout # 2014-03-01 552 1.0.1 check that unused regs stay 0; use stack:; check sp; # 2013-04-01 502 1.0 Initial version # @@ -70,7 +71,7 @@ data: .blkw 6.*5. } rw11::asmrun $cpu sym [list r5 $sym(data) ] -rw11::asmwait $cpu sym 1.0 +rw11::asmwait $cpu sym rw11::asmtreg $cpu [list r0 0 \ r1 0 \ r2 0 \ diff --git a/tools/tbench/test_w11a_srcr_word_flow.tcl b/tools/tbench/test_w11a_srcr_word_flow.tcl index 3cb24f73..7eca1111 100644 --- a/tools/tbench/test_w11a_srcr_word_flow.tcl +++ b/tools/tbench/test_w11a_srcr_word_flow.tcl @@ -1,10 +1,11 @@ -# $Id: test_w11a_srcr_word_flow.tcl 552 2014-03-02 23:02:00Z mueller $ +# $Id: test_w11a_srcr_word_flow.tcl 575 2014-07-27 20:55:41Z mueller $ # # Copyright 2013- by Walter F.J. Mueller # License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory # # Revision History: # Date Rev Version Comment +# 2014-07-27 575 1.0.2 drop tout value from asmwait, reply on asmwait_tout # 2014-03-01 552 1.0.1 check sp # 2013-03-31 502 1.0 Initial version # @@ -31,7 +32,7 @@ stop: } rw11::asmrun $cpu sym [list r0 01234] -rw11::asmwait $cpu sym 1.0 +rw11::asmwait $cpu sym rw11::asmtreg $cpu [list r0 01234 \ r1 01234 \ r2 $sym(stack) \ @@ -65,7 +66,7 @@ data: .word 1001 } rw11::asmrun $cpu sym [list r0 $sym(data)] -rw11::asmwait $cpu sym 1.0 +rw11::asmwait $cpu sym rw11::asmtreg $cpu [list r0 $sym(data) \ r1 001001 \ r2 001001 \ @@ -101,7 +102,7 @@ data1: .word 2002 } rw11::asmrun $cpu sym [list r0 $sym(pdata)] -rw11::asmwait $cpu sym 1.0 +rw11::asmwait $cpu sym rw11::asmtreg $cpu [list r0 $sym(pdata) \ r1 002001 \ r2 002002 \ @@ -138,7 +139,7 @@ data1: .word 003004 } rw11::asmrun $cpu sym [list r0 $sym(data)] -rw11::asmwait $cpu sym 1.0 +rw11::asmwait $cpu sym rw11::asmtreg $cpu [list r0 $sym(data) \ r1 003001 \ r2 003002 \ @@ -171,7 +172,7 @@ data4: .word 004004 } rw11::asmrun $cpu sym {} -rw11::asmwait $cpu sym 1.0 +rw11::asmwait $cpu sym rw11::asmtreg $cpu [list r0 0 \ r1 004001 \ r2 004002 \ diff --git a/tools/tbench/w11a_all.dat b/tools/tbench/w11a_all.dat index 57cec9bd..a60b8a6c 100644 --- a/tools/tbench/w11a_all.dat +++ b/tools/tbench/w11a_all.dat @@ -1,4 +1,4 @@ -# $Id: w11a_all.dat 552 2014-03-02 23:02:00Z mueller $ +# $Id: w11a_all.dat 569 2014-07-13 14:36:32Z mueller $ # ## steering file for all w11a tests # @@ -12,3 +12,6 @@ test_w11a_dstw_word_flow.tcl test_w11a_dstm_word_flow.tcl test_w11a_dsta_flow.tcl test_w11a_inst_traps.tcl +# +test_w11a_div.tcl +# diff --git a/tools/tcl/rutil/util.tcl b/tools/tcl/rutil/util.tcl index 400d3afa..fd2825fc 100644 --- a/tools/tcl/rutil/util.tcl +++ b/tools/tcl/rutil/util.tcl @@ -1,6 +1,6 @@ -# $Id: util.tcl 517 2013-05-09 21:34:45Z mueller $ +# $Id: util.tcl 569 2014-07-13 14:36:32Z mueller $ # -# Copyright 2011-2013 by Walter F.J. Mueller +# Copyright 2011-2014 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 @@ -13,6 +13,7 @@ # # Revision History: # Date Rev Version Comment +# 2014-07-12 569 1.0.2 add sxt16 and sxt32 # 2013-05-09 517 1.0.1 add optlist2arr # 2011-03-27 374 1.0 Initial version # 2011-03-19 372 0.1 First draft @@ -24,7 +25,7 @@ package require rutiltpp namespace eval rutil { # - # optlist2arr: process options arguments given as key value list + # optlist2arr: process options arguments given as key value list ----------- # proc optlist2arr {outarrname refarrname optlist} { upvar $outarrname outarr @@ -41,7 +42,7 @@ namespace eval rutil { } # - # regdsc: setup a register descriptor + # regdsc: setup a register descriptor -------------------------------------- # proc regdsc {name args} { upvar $name rdsc @@ -82,7 +83,7 @@ namespace eval rutil { } # - # regdsc_print: print register descriptor + # regdsc_print: print register descriptor ---------------------------------- # proc regdsc_print {name} { upvar $name rdsc @@ -120,7 +121,7 @@ namespace eval rutil { } # - # regbld: build a register value from a list of fields + # regbld: build a register value from a list of fields --------------------- # proc regbld {name args} { upvar $name rdsc @@ -164,7 +165,7 @@ namespace eval rutil { } # - # regget: extract field from a register value + # regget: extract field from a register value ------------------------------ # proc regget {name val} { upvar $name fdsc @@ -175,7 +176,7 @@ namespace eval rutil { } # - # regtxt: convert register value to a text string + # regtxt: convert register value to a text string -------------------------- # proc regtxt {name val} { upvar $name rdsc @@ -198,12 +199,35 @@ namespace eval rutil { return $rval } # - # errcnt2txt: returns "PASS" if 0 and "FAIL" otherwise + # errcnt2txt: returns "PASS" if 0 and "FAIL" otherwise --------------------- # proc errcnt2txt {errcnt} { if {$errcnt} {return "FAIL"} return "PASS" } + # + # sxt16: 16 bit sign extend ------------------------------------------------ + # + proc sxt16 {val} { + if {$val & 0x8000} { # bit 15 set ? + set val [expr $val | ~ 077777]; # --> set bits 15 and higher + } + return $val + } + + # + # sxt32: 32 bit sign extend ------------------------------------------------ + # + proc sxt32 {val} { + if {$val & 0x80000000} { # bit 31 set ? + set val [expr $val | ~ 017777777777]; # --> set bits 31 and higher + } + return $val + } + + # + # ! export reg... procs to global scope ------------------------------------ + # namespace export regdsc namespace export regdsc_print diff --git a/tools/tcl/rw11/asm.tcl b/tools/tcl/rw11/asm.tcl index a327243d..0f43693f 100644 --- a/tools/tcl/rw11/asm.tcl +++ b/tools/tcl/rw11/asm.tcl @@ -1,4 +1,4 @@ -# $Id: asm.tcl 552 2014-03-02 23:02:00Z mueller $ +# $Id: asm.tcl 575 2014-07-27 20:55:41Z mueller $ # # Copyright 2013-2014 by Walter F.J. Mueller # @@ -13,6 +13,8 @@ # # Revision History: # Date Rev Version Comment +# 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 # 2013-04-26 510 1.0 Initial version (extracted from util.tcl) # @@ -24,6 +26,8 @@ package require rwxxtpp namespace eval rw11 { + variable asmwait_tout 10. + # # asmrun: run a program loaded with ldasm # @@ -66,8 +70,12 @@ namespace eval rw11 { # # asmwait: wait for completion of a program loaded with ldasm # - proc asmwait {cpu symName {tout 10.}} { + proc asmwait {cpu symName {tout 0.}} { upvar 1 $symName sym + variable asmwait_tout + if {$tout <= 0.} { # if not specified + set tout $asmwait_tout; # use default value + } set dt [$cpu wtcpu -reset $tout] if {$dt >= 0 && [info exists sym(stop)]} { $cpu cp -rpc -edata $sym(stop) @@ -84,8 +92,9 @@ namespace eval rw11 { foreach key [lsort [array names defs]] { append cpcmd " -r$key -edata $defs($key)" } + set errbeg [rlc errcnt] eval $cpu cp $cpcmd - return "" + return [expr [rlc errcnt] - $errbeg] } # @@ -96,8 +105,9 @@ namespace eval rw11 { if {$nw == 0} { error "asmtreg called with empty list" } + set errbeg [rlc errcnt] $cpu cp -wal $base -brm $nw -edata $list - return "" + return [expr [rlc errcnt] - $errbeg] } } diff --git a/tools/tcl/rw11/util.tcl b/tools/tcl/rw11/util.tcl index 3acfc312..6a0c3afb 100644 --- a/tools/tcl/rw11/util.tcl +++ b/tools/tcl/rw11/util.tcl @@ -1,6 +1,6 @@ -# $Id: util.tcl 553 2014-03-17 06:40:08Z mueller $ +# $Id: util.tcl 575 2014-07-27 20:55:41Z mueller $ # -# Copyright 2013- by Walter F.J. Mueller +# Copyright 2013-2014 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 @@ -13,6 +13,9 @@ # # Revision History: # Date Rev Version Comment +# 2014-07-26 575 1.2.2 run_pdpcp: add tout argument +# 2014-06-27 565 1.2.1 temporarily hide RL11 +# 2014-06-08 561 1.2 setup_sys: add RL11 # 2014-03-07 553 1.1.3 move definitions to defs.tcl # 2013-05-09 517 1.1.2 add setup_(tt|lp|pp|ostr) device setup procs # 2013-04-26 510 1.1.1 split, asm* and tbench* into separate files @@ -46,6 +49,7 @@ namespace eval rw11 { cpu0 add dl11 cpu0 add dl11 -base 0176500 -lam 2 cpu0 add rk11 + ## cpu0 add rl11 cpu0 add lp11 cpu0 add pc11 rlw start @@ -152,9 +156,9 @@ namespace eval rw11 { # # run_pdpcp: execute pdpcp type command file # - proc run_pdpcp {fname {cpu "cpu0"}} { + proc run_pdpcp {fname {tout 10.} {cpu "cpu0"}} { rlc errcnt -clear - set code [exec ticonv_pdpcp $cpu $fname] + set code [exec ticonv_pdpcp --tout=$tout $cpu $fname] eval $code set errcnt [rlc errcnt] if { $errcnt } {