mirror of
https://github.com/wfjm/w11.git
synced 2026-01-12 00:43:01 +00:00
parent
b3f9a8be30
commit
4001ddd695
@ -4,7 +4,6 @@
|
||||
[](https://scan.coverity.com/projects/wfjm-w11)
|
||||
[](https://github.com/wfjm/w11/releases)
|
||||
|
||||
|
||||
### Overview
|
||||
The project contains the VHDL code for a **complete DEC PDP-11 system**:
|
||||
a
|
||||
@ -51,12 +50,12 @@ For more information look into:
|
||||
|
||||
A short description of the directory layout
|
||||
[is provided separately](https://wfjm.github.io/home/w11/impl/dirlayout.html),
|
||||
the top level directories are
|
||||
the top-level directories are
|
||||
|
||||
| Directory | Content |
|
||||
| --------- | ------- |
|
||||
| [doc](doc) | documentation |
|
||||
| [rtl](rtl) | HDL sources (mostly vhdl) |
|
||||
| [rtl](rtl) | HDL sources (mostly VHDL) |
|
||||
| [tools](tools) | many tools |
|
||||
|
||||
### Note on freecores/w11
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
and [w11a_V0.57](#user-content-w11a_V0.57))
|
||||
- added LP11,PC11 support
|
||||
(in [w11a_V0.58](#user-content-w11a_V0.58))
|
||||
- reference system now ISE 14.7 and Ubuntu 12.04 64 bit, ghdl 0.31
|
||||
- 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)
|
||||
@ -66,7 +66,7 @@
|
||||
### Summary
|
||||
- new reference system
|
||||
- switched from ISE 13.3 to 14.7.
|
||||
- map/par behaviour changed, unfortunately unfavorably for w11a.
|
||||
- map/par behavior 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/`)
|
||||
@ -77,7 +77,7 @@
|
||||
- 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
|
||||
- s6_cmt_sfs_gsim - dito, simple GHDL simulation model
|
||||
- tools/src/librutiltpp
|
||||
- RtclSignalAction - Tcl signal handler
|
||||
- RtclSystem - Tcl Unix system interface
|
||||
@ -113,7 +113,7 @@
|
||||
|
||||
### Other updates
|
||||
|
||||
- INSTALL_ghdl.txt - text reflects current situation on ghdl packages
|
||||
- INSTALL_ghdl.txt - text reflects current situation on GHDL packages
|
||||
|
||||
<!-- --------------------------------------------------------------------- -->
|
||||
---
|
||||
@ -165,7 +165,7 @@
|
||||
### New features
|
||||
|
||||
- new modules
|
||||
- rtl/bplib/fx2rlink - new vhdl lib with rlink over fx2 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
|
||||
@ -199,7 +199,7 @@
|
||||
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
|
||||
- use now doxygen 1.8.3.1, generate c++, tcl, and VHDL source docs
|
||||
See section 9. in INSTALL.txt for details.
|
||||
|
||||
### New features
|
||||
@ -216,14 +216,14 @@
|
||||
- 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
|
||||
- *.Doxyfile - new descriptors C++,Tcl,VHDL docs
|
||||
- make_dox - driver script to generate C++,Tcl,VHDL doxygen docs
|
||||
|
||||
### Changes
|
||||
|
||||
- vhdl module renames:
|
||||
- VHDL module renames:
|
||||
vlib/serport -> vlib/serportlib
|
||||
- vhdl module splits:
|
||||
- VHDL module splits:
|
||||
bplib/bpgen/bpgenlib -> bpgenlib + bpgenrbuslib
|
||||
- C++ class splits
|
||||
librtcltools/RtclProxyBase -> RtclCmdBase + RtclProxyBase
|
||||
@ -297,13 +297,13 @@ The version of several key tools and libraries changed:
|
||||
- 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
|
||||
- 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 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
|
||||
@ -385,7 +385,7 @@ The version of several key tools and libraries changed:
|
||||
|
||||
- functional changes
|
||||
- use now 'a6' polynomial of Koopman et al for crc8 in rlink
|
||||
- with one exception all vhdl sources use now numeric_std
|
||||
- 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
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
(in [w11a_V0.65](#user-content-w11a_V0.65))
|
||||
- add TM11/TY10 tape support
|
||||
(in [w11a_V0.66](#user-content-w11a_V0.66))
|
||||
- reference system now ISE 14.7, Vivado 2014.4; Ubuntu 14.04 64 bit, ghdl 0.31
|
||||
- reference system now ISE 14.7, Vivado 2014.4; Ubuntu 14.04 64 bit, GHDL 0.31
|
||||
|
||||
### Table of contents
|
||||
- Release [w11a_V0.70](#user-content-w11a_V0.70)
|
||||
@ -331,12 +331,12 @@
|
||||
- rtl/bplib/nexys4 - support for Digilent Nexys4 board
|
||||
- rtl/make_viv - make includes for Vivado
|
||||
- new files
|
||||
- tools/bin/xviv_ghdl_unisim - ghdl compile Vivado UNISIM & UNIMACRO libs
|
||||
- tools/bin/xviv_ghdl_unisim - GHDL compile Vivado UNISIM & UNIMACRO libs
|
||||
- new modules
|
||||
- rtl/ibus/ibdr_rl11 - ibus controller for RL11
|
||||
- rtl/vlib/rlink/ioleds_sp1c - io activity leds for rlink+serport_1clk
|
||||
- rtl/vlib/xlib
|
||||
- s7_cmt_sfs_gsim - Series-7 CMT: simple vhdl model
|
||||
- s7_cmt_sfs_gsim - Series-7 CMT: simple VHDL model
|
||||
- s7_cmt_sfs_unisim - Series-7 CMT: wrapper for UNISIM
|
||||
- rtl/w11a
|
||||
- pdp11_bram_memctl - simple BRAM based memctl
|
||||
@ -420,13 +420,13 @@
|
||||
### Known issues
|
||||
- resolved issues: _none_
|
||||
- new issues:
|
||||
- **V0.64-7**: ghdl simulated OS boots via ti_w11 (-n4 ect options) fail due to
|
||||
- **V0.64-7**: GHDL simulated OS boots via ti_w11 (-n4 ect options) fail due to
|
||||
a flow control issue (likely since V0.63).
|
||||
- **V0.64-6**: IO delays still unconstraint in vivado. All critical IOs use
|
||||
explicitly IOB flops, thus timing well defined.
|
||||
- **V0.64-5**: w11a_tb_guide.txt covers only ISE based tests
|
||||
(see also V0.64-4).
|
||||
- **V0.64-4**: No support for the Vivado simulator (xsim) yet. With ghdl only
|
||||
- **V0.64-4**: No support for the Vivado simulator (xsim) yet. With GHDL only
|
||||
functional simulations, post synthesis (_ssim) fails to compile.
|
||||
- **V0.64-3**: Highest baud rate with basys3 and nexys4 is 10 MBaud. 10 MBaud
|
||||
is not supported according to FTDI, but works. 12 MBaud in next release.
|
||||
@ -453,7 +453,7 @@
|
||||
|
||||
### Remarks on reference system
|
||||
- still using tcl 8.5 (even though 8.6 is now default in Ubuntu 14.04)
|
||||
- don't use doxygen 1.8.8 and 1.8.9, it fails to generate vhdl docs
|
||||
- don't use doxygen 1.8.8 and 1.8.9, it fails to generate VHDL docs
|
||||
|
||||
### New features
|
||||
|
||||
@ -530,7 +530,7 @@ Notes:
|
||||
1. still using tcl 8.5 (even though 8.6 is now default in Ub 14.04)
|
||||
2. sdcc 3.x is not source compatible with sdcc 2.9. The Makefile
|
||||
allows to use both, see tools/fx2/src/README.txt .
|
||||
3. don't use doxygen 1.8.8, it fails to generate vhdl docs
|
||||
3. don't use doxygen 1.8.8, it fails to generate VHDL docs
|
||||
|
||||
### New features
|
||||
|
||||
|
||||
@ -38,10 +38,10 @@
|
||||
results in a bit faster cache line load times. The overall performance
|
||||
of a w11a design is measurably, but marginally better.
|
||||
- many unit tests still used a ISE environment. All board independent
|
||||
tests were converted now to a vivado environment, only tests which
|
||||
really depend a FPGA not supported by vivado stay with ISE.
|
||||
tests were converted now to a Vivado environment, only tests which
|
||||
really depend an FPGA not supported by Vivado stay with ISE.
|
||||
- a total of 82 unit or system tests are currently available. Many of them
|
||||
can be executed by different simulation engines, ghdl or the ISE/vivado
|
||||
can be executed by different simulation engines, GHDL or the ISE/Vivado
|
||||
build-in simulators, and for different stages of the implementation flow,
|
||||
from initial behavioral simulation over post-synthesis functional to final
|
||||
post-routing timing simulation. This results in a large number of possible
|
||||
@ -76,7 +76,7 @@
|
||||
bench configuration is done in the first ns of the simulation and has
|
||||
thus completed well before all other activities.
|
||||
- finally a caveat: post-synthesis simulations work fine with ISE, but
|
||||
currently not with vivado, even in case of almost identical designs,
|
||||
currently not with Vivado, even in case of almost identical designs,
|
||||
like `sys_tst_rlink_n3` vs `sys_tst_rlink_n4`. Is under investigation.
|
||||
|
||||
### Summary
|
||||
@ -143,7 +143,7 @@
|
||||
- generic_ghdl.mk - ghdl_clean: remove also gcov files
|
||||
- rtl/make_viv
|
||||
- generic_ghdl.mk - ghdl_clean: remove also gcov files
|
||||
- generic_vivado.mk - viv_clean: rm only vivado logs
|
||||
- generic_vivado.mk - viv_clean: rm only Vivado logs
|
||||
- generic_xsim.mk - xsim work dir now xsim.<mode>.<stem>
|
||||
- rtl/sys_gen/tst_serloop
|
||||
- */tb/tb_tst_serloop*.vhd - remove CLK_STOP logic
|
||||
@ -185,46 +185,46 @@
|
||||
---
|
||||
## <a id="w11a_V0.73">2016-06-26: w11a_V0.73 - svn rev 36(oc) 779(wfjm)</a>
|
||||
### Preface
|
||||
- the 'basic vivado support' added with V0.64 was a minimal effort port of
|
||||
the code base used under ISE, leading to sub-optimal results under vivado.
|
||||
- the FSM inference under vivado is quirky and has several issues. The
|
||||
- the 'basic Vivado support' added with V0.64 was a minimal effort port of
|
||||
the code base used under ISE, leading to sub-optimal results under Vivado.
|
||||
- the FSM inference under Vivado is quirky and has several issues. The
|
||||
most essential one prevented re-coding with 'one_hot' encoding, which
|
||||
lead to high logic depth and low clock rates. Proper work-arounds were
|
||||
applied to almost all FSMs, now vivado infers all (but one) properly
|
||||
applied to almost all FSMs, now Vivado infers all (but one) properly
|
||||
and re-codes them as 'one_hot'. That is especially important for the
|
||||
pdp11_sequencer, which has 113 states. The sys_w11a_n4 system can now
|
||||
run with up to 90 MHz (was 75-80 MHz before).
|
||||
- due to a remaining synthesis issue the dmscnt and dmcmon debug units
|
||||
are currently disabled for Artix based systems (see issue V0.73-3).
|
||||
- memory inference is now used for all distributed and block rams under
|
||||
vivado. The memory generators in memlib are still used under ISE
|
||||
Vivado. The memory generators in memlib are still used under ISE
|
||||
Note: they were initially setup to work around ISE synthesis issues.
|
||||
- vivado synthesis and implementation use now 'explore' type flows for
|
||||
- Vivado synthesis and implementation use now 'explore' type flows for
|
||||
optimal timing performance.
|
||||
- the two clock dram based fifo was re-written (as `fifo_2c_dram2`) to allow
|
||||
proper usage of vivado constraints (e.g. scoped xdc).
|
||||
- vivado is now the prime platform for all further development
|
||||
proper usage of Vivado constraints (e.g. scoped xdc).
|
||||
- Vivado is now the prime platform for all further development
|
||||
- the component test benches run now by default under Vivado with an
|
||||
Artix-7 as default target. The makefiles for ISE with a Spartan-6 target
|
||||
are available as `Makefile.ise` and via the `makeise` command.
|
||||
- a message filter (`xviv_msg_filter`) has been developed which lists only
|
||||
the unexpected message of a synthesis or implementation run. Filter
|
||||
rule sets (`.vmfset` files) are available for all designs.
|
||||
- full support for the vivado simuator `xsim` has been added, there are
|
||||
- full support for the Vivado simuator `xsim` has been added, there are
|
||||
make targets to build a behavioral simulation as well as post-synthesis,
|
||||
post-optimize, and post-routing functional and timing models. All these
|
||||
models are now created in separate sub-directories and can now co-exist.
|
||||
However see issues V0.73-1 and V0.73-2 for severe caveats on xsim.
|
||||
- vivado write_vhdl generates code which violates a vhdl language rule.
|
||||
- Vivado write_vhdl generates code which violates a VHDL language rule.
|
||||
Attributes of port signals are declared in the wrong place. xsim and
|
||||
other simulators accept this, but ghdl doesn't. As a work-around the
|
||||
other simulators accept this, but GHDL doesn't. As a work-around the
|
||||
generated code is cleaned up by a filter (see xviv_sim_vhdl_cleanup).
|
||||
- additional rlink devices
|
||||
- the XADC block, available on all 7Series FPGAs, is now accessible via
|
||||
rlink on all Arty, Basys3 and Nexys4 designs. Especially useful on the
|
||||
Arty board because on this board also the currents are monitored.
|
||||
- the USR_ACCESS register, available on all 7Series FPGAs, is now readable
|
||||
via rlink on all Arty, Basys3 and Nexys4 designs. The vivado build flow
|
||||
via rlink on all Arty, Basys3 and Nexys4 designs. The Vivado build flow
|
||||
initializes this register with the build timestamp. This allows to
|
||||
verify the build time of a design at run time.
|
||||
- the cache used by the w11a (`pdp11_cache`) was initialy developed with the
|
||||
@ -250,7 +250,7 @@
|
||||
|
||||
### Summary
|
||||
- new reference system: switched to Vivado 2016.2 (from 2015.4)
|
||||
- code base cleaned-up for vivado, fsm now inferred
|
||||
- code base cleaned-up for Vivado, fsm now inferred
|
||||
- xsim support complete (but many issues to be resolved yet)
|
||||
- added configurable w11a cache
|
||||
- removed some never documented and now strategically obsolete designs:
|
||||
@ -268,7 +268,7 @@
|
||||
- cdc_vector_s0.vhd - cdc for a vector, 1 stage
|
||||
- rtl/vlib/memlib
|
||||
- fifo_2c_dram2.vhd - re-write of fifo_2c_dram to allow
|
||||
proper usage of vivado constraints
|
||||
proper usage of Vivado constraints
|
||||
- rtl/vlib/rbus
|
||||
- rb_sres_or_6.vhd - rbus result or, 6 input
|
||||
- rbd_usracc.vhd - return usr_access register
|
||||
@ -281,9 +281,9 @@
|
||||
- new files
|
||||
- tools/bin
|
||||
- xise_msg_summary - list all filtered ISE messages
|
||||
- xviv_msg_filter - message filter for vivado
|
||||
- xviv_msg_summary - list all filtered vivado messages
|
||||
- xviv_sim_vhdl_cleanup - cleanup vivado generated vhdl for ghdl
|
||||
- xviv_msg_filter - message filter for Vivado
|
||||
- xviv_msg_summary - list all filtered Vivado messages
|
||||
- xviv_sim_vhdl_cleanup - cleanup Vivado generated VHDL for GHDL
|
||||
- makeise - wrapper for make -f Makefile.ise
|
||||
- tools/tcl/rbtest
|
||||
- test_flow.tcl - test back pressure and flow control
|
||||
@ -294,10 +294,10 @@
|
||||
- rtl/bplib/*/tb/tb_*.vbom - use -UUT attribute
|
||||
- rtl/sys_gen/*/*/tb/tb_*.vbom - use -UUT attribute
|
||||
- rtl/make_ise
|
||||
- generic_ghdl.mk - use ghdl.?sim as workdir for ghdl
|
||||
- generic_ghdl.mk - use ghdl.?sim as workdir for GHDL
|
||||
- generic_xflow.mk - use .imfset for ISE message rules
|
||||
- rtl/make_viv
|
||||
- generic_ghdl.mk - use ghdl.?sim as workdir for ghdl
|
||||
- generic_ghdl.mk - use ghdl.?sim as workdir for GHDL
|
||||
- generic_vivado.mk - add [sorep]sim.v and %.vivado targets
|
||||
- vmfset support, use xviv_sim_vhdl_cleanup
|
||||
- generic_xsim.mk - [rep]sim models; use xsim.?sim as workdir
|
||||
@ -322,8 +322,8 @@
|
||||
- rtl/w11a
|
||||
- pdp11_bram_memctl.vhd - use memory inference now
|
||||
- pdp11_cache.vhd - now configurable size (8,16,32,64,128 kB)
|
||||
- pdp11_sequencer.vhd - proc_snum conditional (vivado fsm fix)
|
||||
- rtl/*/*.vbom - use memory inference for vivado
|
||||
- pdp11_sequencer.vhd - proc_snum conditional (Vivado fsm fix)
|
||||
- rtl/*/*.vbom - use memory inference for Vivado
|
||||
- rtl/*/*.vhd - workarounds and fixes to many FSMs
|
||||
- tools/bin
|
||||
- tbrun_tbw - use _bsim.log for behavioral sim log
|
||||
@ -365,24 +365,24 @@
|
||||
### Known issues
|
||||
- all issues: see README_known_issues.txt
|
||||
- resolved issues:
|
||||
- **V0.72-1**: since vivado 2016.1 xelab builds models which use DPI in a
|
||||
mixed vhdl-verilog language environment.
|
||||
- **V0.72-1**: since Vivado 2016.1 xelab builds models which use DPI in a
|
||||
mixed VHDL-Verilog language environment.
|
||||
- **V0.72-2**: now full support to build behavioral as well as functional and
|
||||
timing simulations with xsim. See V.073-1 and 0.73-2 for caveats.
|
||||
- **V0.64-7**: flow control issues with simulation models resolved
|
||||
- **V0.64-3**: basys3, nexys4 and arty designs support now 12 MBaud.
|
||||
- new issues:
|
||||
- **V0.73-1**: as of vivado 2016.2 `xelab` shows sometimes extremely long
|
||||
build times, especially for generated post-synthesis vhdl models. But also
|
||||
- **V0.73-1**: as of Vivado 2016.2 `xelab` shows sometimes extremely long
|
||||
build times, especially for generated post-synthesis VHDL models. But also
|
||||
building a behavioral simulation for a w11a design can take 25 min.
|
||||
Even though post-synthesis or post-routing models are now generated
|
||||
in verilog working with xsim is cumbersome and time consuming.
|
||||
in Verilog working with xsim is cumbersome and time consuming.
|
||||
- **V0.73-2**: Many post-synthesis functional and especially post-routing
|
||||
timing simulations currently fail due to startup and initialization
|
||||
problems. Cause is MMCM/PLL startup, which is not properly reflected
|
||||
in the test bench. Will be resolved in an upcoming release.
|
||||
- **V0.73-3**: The 'state number generator' code in `pdp11_sequencer` causes
|
||||
in vivado 2016.1 (and .2) that the main FSM isn't re-coded anymore, which
|
||||
in Vivado 2016.1 (and .2) that the main FSM isn't re-coded anymore, which
|
||||
has high impact on achievable clock rate. The two optional debug units
|
||||
depending on the state number, `dmscnt` and `dmcmon`, are therefore
|
||||
currently deactivated in all Artix based systems (but are available on
|
||||
@ -412,10 +412,10 @@
|
||||
- re-factored tbcore_rlink to support DPI and VHPI
|
||||
- Vivado supports with DPI (from SystemVerilog) a mechanism to call
|
||||
external C code. The rlink test bench code so far relies on VHPI, which
|
||||
is supported by ghdl, but not by ISE ISim or Vivado xsim. The code was
|
||||
restructured and can use now DPI or VHPI to support both ghdl and
|
||||
is supported by GHDL, but not by ISE ISim or Vivado xsim. The code was
|
||||
restructured and can use now DPI or VHPI to support both GHDL and
|
||||
Vivado. Unfortunately has Vivado 2015.4 a bug, DPI doesn't work in a
|
||||
mixed vhdl-verilog language environment (see Known issues), so the
|
||||
mixed VHDL-Verilog language environment (see Known issues), so the
|
||||
code base is there, but utilization will habe to wait.
|
||||
- Vivado synthesis by default keeps hierarchy. This leads to doubly defined
|
||||
modules if a component is used in both test bench and unit under test.
|
||||
@ -457,7 +457,7 @@
|
||||
- */tb/Makefile - Vivado now default, keep Makefile.ise
|
||||
- rtl/bplib/*/tb/tb_*.vhd - use s7_cmt_sfs_tb and serport_master_tb
|
||||
- rtl/vlib/comlib
|
||||
- comlib.vhd - add work-around for vivado 2015.4 issue
|
||||
- comlib.vhd - add work-around for Vivado 2015.4 issue
|
||||
- rtl/vlib/rbus
|
||||
- rb_sres_or_mon - supports 6 inputs now
|
||||
- rtl/vlib/serport
|
||||
@ -470,13 +470,13 @@
|
||||
- sys_w11a_b3 - hardwire XON=1, support XADC; 72 MHz now
|
||||
- sys_w11a_n4 - support XADC
|
||||
- tools/bin
|
||||
- tbrun_tbw - add vivado xsim and Makefile.ise support
|
||||
- tbrun_tbw - add Vivado xsim and Makefile.ise support
|
||||
- tbrun_tbwrri - use --sxon and --hxon instead of --xon
|
||||
- tbw - add XSim support
|
||||
- ti_w11 - add arty support, add -fx
|
||||
- vbomconv - add [ise,viv]; add @uut tag handling;
|
||||
add preliminary --(vsyn|vsim)_export;
|
||||
add vivado xsim support;
|
||||
add Vivado xsim support;
|
||||
- xtwi,xtwv - add BARE_PATH to provide clean environment
|
||||
|
||||
### Bug fixes
|
||||
@ -492,7 +492,7 @@
|
||||
|
||||
- new issues:
|
||||
- **V0.72-1**: Vivado 2015.4 xelab crashes when DPI is used in a mxied
|
||||
vhdl-verilog language environment. This prevents currently to
|
||||
VHDL-Verilog language environment. This prevents currently to
|
||||
build a xsim simulation model for rlink based test benches.
|
||||
- **V0.72-2**: xsim simulations with timing annotation not yet available.
|
||||
|
||||
|
||||
@ -27,7 +27,7 @@ The full set of tests is only run for tagged releases.
|
||||
### Summary
|
||||
- drop Travis (now defunct)
|
||||
- add preliminary GitHub Actions support
|
||||
- use vivado 2020.1 as default
|
||||
- use Vivado 2020.1 as default
|
||||
- use std=c++17 (requires gcc 7.3 or later)
|
||||
- automate oskit download and container file setup
|
||||
- automate testing of oskits
|
||||
@ -50,7 +50,7 @@ The full set of tests is only run for tagged releases.
|
||||
- tst_mig/nexys4d/sys_tst_mig_n4d: use 100 MHz MIG SYS_CLK; add clock monitor
|
||||
- tst_sram/nexys4d/sys_tst_sram_n4d: use 100 MHz MIG SYS_CLK
|
||||
- w11a/nexys4d/sys_w11a_n4d: use 100 MHz MIG SYS_CLK
|
||||
- */*.vhd: fixes for ghdl V0.36 -Whide warnings
|
||||
- */*.vhd: fixes for GHDL V0.36 -Whide warnings
|
||||
|
||||
### Bug Fixes
|
||||
- nexys4d/mig_a.prj: BUGFIX: SysResetPolarity ACTIVE HIGH
|
||||
@ -59,7 +59,7 @@ The full set of tests is only run for tagged releases.
|
||||
---
|
||||
## <a id="w11a_V0.79">2019-07-27: [w11a_V0.79](https://github.com/wfjm/w11/releases/tag/w11a_V0.79) - rev 1197(wfjm)</a>
|
||||
### Summary
|
||||
- use vivado 2019.1 as default
|
||||
- use Vivado 2019.1 as default
|
||||
- finalize coverity fixups, now defect free ([see blog](https://wfjm.github.io/blogs/w11/2019-06-14-coverity-fixes-done.html))
|
||||
- use SPDX license tags, remove boilerplate license disclaimers ([see blog](https://wfjm.github.io/blogs/w11/2019-07-21-spdx.html))
|
||||
- TM11: support odd record length, close [issue #8](https://github.com/wfjm/w11/issues/8)
|
||||
@ -87,7 +87,7 @@ The full set of tests is only run for tagged releases.
|
||||
- tap2file: add -v option
|
||||
- firmware changes
|
||||
- sys_w11a_arty: down-rate to 72 MHz, viv 2019.1 fails with 75 MHz
|
||||
- sys_w11a_*.vmfset: add new rule for vivado 2019.1
|
||||
- sys_w11a_*.vmfset: add new rule for Vivado 2019.1
|
||||
- pdp11_vmbox: support membe for em cacc access
|
||||
|
||||
### Bug Fixes
|
||||
@ -319,7 +319,7 @@ The full set of tests is only run for tagged releases.
|
||||
a `.travis.yml`.
|
||||
- use static source code analysis [Coverity Scan](https://scan.coverity.com),
|
||||
add [project wfjm/w11](https://scan.coverity.com/projects/wfjm-w11).
|
||||
The scans are manually uploaded, not automated via Travis (w11 is a `vhdl`
|
||||
The scans are manually uploaded, not automated via Travis (w11 is a `VHDL`
|
||||
project after all, so C++ backend code doesn't change so often). Coverity
|
||||
found a modest number of defects, most uncritical, but some real bugs.
|
||||
- the Coverity results triggered a general backend code review
|
||||
@ -330,7 +330,7 @@ The full set of tests is only run for tagged releases.
|
||||
- add KW11-P (programmable clock) to all w11 systems. It is usefull in test
|
||||
benches (fast interrupt source) and enables on the long run to port the
|
||||
2.10BSD kernel profiling code to 2.11BSD.
|
||||
- stay with vivado 2017.2 as default tool, 2017.2 to 2018.2 exhibit much
|
||||
- stay with Vivado 2017.2 as default tool, 2017.2 to 2018.2 exhibit much
|
||||
longer build times for w11 designs (see [w11 blog posting](https://wfjm.github.io/blogs/w11/2018-09-01-vivado-2018.2-much-slower.html))
|
||||
- the first Artix-7 designs for the nexys4 board where done in 2013 with
|
||||
ISE 14.5, later with 14.7, simply because the early Vivado versions were
|
||||
@ -341,7 +341,7 @@ The full set of tests is only run for tagged releases.
|
||||
### New features
|
||||
- travis support via `.travis.yml`
|
||||
- compiles the C++ backend
|
||||
- download the `ghdl` based test benches (can't be build under Travis)
|
||||
- download the `GHDL` based test benches (can't be build under Travis)
|
||||
- execute the test benches with `tbrun`
|
||||
- add KW11-P support, enable it in all w11a systems
|
||||
- add performance counters
|
||||
@ -358,7 +358,7 @@ The full set of tests is only run for tagged releases.
|
||||
- remove ISE 14.x build support for 7Series (mostly nexys4 designs)
|
||||
- Makefile: `make all_tcl` now quiet, use setup_packages_filt
|
||||
- tools changes
|
||||
- vbomconv: now allows to inject Tcl scripts into the vivado project setup
|
||||
- vbomconv: now allows to inject Tcl scripts into the Vivado project setup
|
||||
sequence via the `@tcl` directive.
|
||||
- xviv_msg_filter
|
||||
- display INFO Common 17-14 'further message disabled'
|
||||
@ -456,9 +456,9 @@ The full set of tests is only run for tagged releases.
|
||||
Spartan vs Artix performance a w11a port to the Arty S7 board was added.
|
||||
The design runs with 80 MHz, same clock rate as achieved with Artix-7 FPGAs.
|
||||
_Note_: the design is only simulation tested, was _not FPGA tested_ !!
|
||||
- use vivado 2017.2 as default (needed for Spartan-7 support). All vivado
|
||||
- use Vivado 2017.2 as default (needed for Spartan-7 support). All Vivado
|
||||
versions from 2017.3 to 2018.2 were tested. All designs build properly under
|
||||
vivado 2018.2, but the CPU time for a build increased very substantially,
|
||||
Vivado 2018.2, but the CPU time for a build increased very substantially,
|
||||
so they are currently not used as default build tool.
|
||||
|
||||
### New features
|
||||
@ -470,8 +470,8 @@ The full set of tests is only run for tagged releases.
|
||||
### Changes
|
||||
- xviv_msg_filter: allow {yyyy.x} tags (in addition to ranges)
|
||||
- xviv_msg_summary: check also for .bit and .dcp files
|
||||
- get vivado 2017.2 ready (needed for Spartan-7 support)
|
||||
- test vivado 2017.3 - 2018.2 ready
|
||||
- get Vivado 2017.2 ready (needed for Spartan-7 support)
|
||||
- test Vivado 2017.3 - 2018.2 ready
|
||||
- *.vmfset: update rules to cover 2017.4-2018.2
|
||||
- all designs build under 2017.2 and 2018.2
|
||||
|
||||
@ -484,7 +484,7 @@ The full set of tests is only run for tagged releases.
|
||||
They are now consistent with the License.txt file, which refers to GPL V3.
|
||||
- Add Digilent Cmod A7 (35 die size) support
|
||||
- Add [INSTALL_quickstart](INSTALL_quickstart.md)
|
||||
- get vivado 2017.1 ready
|
||||
- get Vivado 2017.1 ready
|
||||
- Added Unix 7th Edition oskit; rename 5th Edition kit
|
||||
- u5ed_rk: renamed from unix-v5_rk
|
||||
- u7ed_rp: added, very preliminary, boots on Cmod A7, further testing needed
|
||||
@ -512,7 +512,7 @@ The full set of tests is only run for tagged releases.
|
||||
- 17bit support for tst_sram
|
||||
- tst_sram.vhd: allow AWIDTH=17; sstat_rbf_awidth instead of _wide
|
||||
- tcl/tst_sram/*.tcl: 17bit support; use sstat(awidth); add isnarrow
|
||||
- get vivado 2017.1 ready
|
||||
- get Vivado 2017.1 ready
|
||||
- xviv_msg_filter: add version-range tag support
|
||||
- *.vmfset:
|
||||
- drop the nonsense 'Synth 8-6014' messages
|
||||
@ -542,7 +542,7 @@ The full set of tests is only run for tagged releases.
|
||||
- move to Ubuntu 16.04 as development platform
|
||||
- document urjtag build (jtag in Ubuntu 16.04 is broken)
|
||||
- add environment sanity wrappers for acroread,awk,firefox to ensure
|
||||
proper operation of vivado under Ubuntu 16.04
|
||||
proper operation of Vivado under Ubuntu 16.04
|
||||
- use -std=c++11 (gcc 4.7 or later)
|
||||
- for all FTDI USB-UART it is essential to set them to `low latency` mode.
|
||||
That was default for Linux kernels 2.6.32 to 4.4.52. Since about March
|
||||
@ -550,7 +550,7 @@ The full set of tests is only run for tagged releases.
|
||||
[kernel patch 9589541](https://patchwork.kernel.org/patch/9589541/).
|
||||
**For newer systems it is essential to install a udev rule** which
|
||||
automatically sets low latency, see [documentation](../tools/sys/README.md).
|
||||
- the cpu monitor dmcmon was not available in vivado systems due to synthesis
|
||||
- the cpu monitor dmcmon was not available in Vivado systems due to synthesis
|
||||
issues caused by dmscnt. Is resolved, dmcmon now part of sys_w11a_n4.
|
||||
- many improvements to the w11 shell in ti_w11: rbmon integrated, usage
|
||||
of ibmon and dmcmon streamlined.
|
||||
@ -613,7 +613,7 @@ The full set of tests is only run for tagged releases.
|
||||
- does not depend on full state number generation anymore
|
||||
- missed WAIT instructions so far, has been fixed
|
||||
- dmcmon included in sys_w11a_n4 again
|
||||
- full snum generation code gives bad synthesis under vivado (fine in ISE)
|
||||
- full snum generation code gives bad synthesis under Vivado (fine in ISE)
|
||||
- the updated dmcmon can life with a simple, category based, snum
|
||||
- move hook_*.tcl files to tools/oskiit/hook directory
|
||||
- w11 shell .bs now support ibus register names and ranges
|
||||
@ -711,7 +711,7 @@ The full set of tests is only run for tagged releases.
|
||||
## <a id="w11a_V0.742">2017-01-07: [w11a_V0.742](https://github.com/wfjm/w11/releases/tag/w11a_V0.742) - rev 841(wfjm)</a>
|
||||
|
||||
### Summary
|
||||
- fixes for Vivado 2016.4; all designs build under vivado 2016.4
|
||||
- fixes for Vivado 2016.4; all designs build under Vivado 2016.4
|
||||
- added **preliminary** support for Nexys4 DDR board (thanks to [Michael Lyle](https://github.com/mlyle) for testing!)
|
||||
- [w11 shell](../tools/tcl/rw11/shell.tcl) re-organized and expanded,
|
||||
now default in [ti_w11](../tools/bin/ti_w11)
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
### Symptom summary
|
||||
- the `cpuerr` register is not cleared by a `$cpu cp -creset` command
|
||||
- the `cpuerr` status can affect cpu behaviour, e.g. yellow stack traps are
|
||||
- the `cpuerr` status can affect cpu behavior, e.g. yellow stack traps are
|
||||
only taken when the corresponding `cpuerr` flag is not set
|
||||
- this makes tbench test execution on FPGA potentially depending on pre-history
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
- [Download](#user-content-download)
|
||||
- [System requirements](#user-content-sysreq)
|
||||
- [Setup environment variables](#user-content-envvar)
|
||||
- [Compile UNISIM/UNIMACRO/SIMPRIM libraries for ghdl](#user-content-ghdl-lib)
|
||||
- [Compile UNISIM/UNIMACRO/SIMPRIM libraries for GHDL](#user-content-ghdl-lib)
|
||||
- [Compile and install the support software](#user-content-build-tools)
|
||||
- [Compile sharable libraries](#user-content-build-cpp)
|
||||
- [Setup Tcl packages](#user-content-build-tcl)
|
||||
@ -40,7 +40,7 @@ working directory with the name represented as `<install-dir>`
|
||||
git checkout tags/<tag>
|
||||
|
||||
The GitHub repository contains the full version history since 2010.
|
||||
Prior to October 2016 the project was maintained on OpenCores, access
|
||||
Prior to October 2016, the project was maintained on OpenCores, access
|
||||
to the legacy svn repository is described in
|
||||
[INSTALL_from_opencores.md](INSTALL_from_opencores.md).
|
||||
|
||||
@ -49,7 +49,7 @@ to the legacy svn repository is described in
|
||||
This project contains not only VHDL code but also support software. Therefore
|
||||
quite a few software packages are expected to be installed. The following
|
||||
list gives the Ubuntu/Debian package names, but mapping this to other
|
||||
distributions should be straight forward.
|
||||
distributions should be straightforward.
|
||||
|
||||
- building the FPGA bit files requires the Xilinx design tools
|
||||
- Vivado WebPACK (for Series-7 based designs)
|
||||
@ -64,9 +64,9 @@ distributions should be straight forward.
|
||||
-> package: `tcl` `tcl-dev` `tcllib` `tclreadline`
|
||||
|
||||
- for VHDL simulations one needs
|
||||
- ghdl
|
||||
- GHDL
|
||||
-> see [INSTALL_ghdl.md](INSTALL_ghdl.md) for the unfortunately gory details
|
||||
- gtkwave
|
||||
- GTKWave
|
||||
-> package: `gtkwave`
|
||||
|
||||
- additional requirements for using Cypress FX (on Nexys2/3) see
|
||||
@ -78,9 +78,9 @@ distributions should be straight forward.
|
||||
|
||||
### <a id="envvar">Setup environment variables</a>
|
||||
|
||||
The make flows for building test benches (ghdl, Vivado xsim or ISE ISim based)
|
||||
and FPGA bit files (with Vivado or ISE) as well as the support software
|
||||
(mainly the rlink backend server) requires the definition of the environment
|
||||
The `make` flows for building test benches (GHDL, Vivado xsim or ISE ISim based)
|
||||
and FPGA bit files (with Vivado or ISE), as well as the support software
|
||||
(mainly the rlink backend server), requires the definition of the environment
|
||||
variables:
|
||||
|
||||
| Variable | Comment |
|
||||
@ -105,7 +105,7 @@ For bash and alike use
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$RETROBASE/tools/lib
|
||||
export MANPATH=$MANPATH:$RETROBASE/tools/man
|
||||
|
||||
Boost was essential in the pre-c++11 times, but has been completely replaced
|
||||
Boost was essential in the pre-c++11 times but has been completely replaced
|
||||
by std:: classes provided by c++11. In most cases the Tcl version coming with
|
||||
the distribution will work, in those cases simply use
|
||||
|
||||
@ -116,15 +116,15 @@ and don't setup `BOOSTINC` and `BOOSTLIB`.
|
||||
|
||||
After that building functional model based test benches will work. If you
|
||||
want to also build post-synthesis or post-place&route test benches
|
||||
read next section.
|
||||
read the next section.
|
||||
|
||||
For Cypress FX2 (on Nexys2/3) related setup see
|
||||
[INSTALL_fx2_support.md](INSTALL_fx2_support.md).
|
||||
|
||||
### <a id="ghdl-lib">Compile UNISIM/UNIMACRO/SIMPRIM libraries for ghdl</a>
|
||||
### <a id="ghdl-lib">Compile UNISIM/UNIMACRO/SIMPRIM libraries for GHDL</a>
|
||||
|
||||
The build system for test benches also supports test benches run against the
|
||||
gate level models derived after synthesis or place&route. In this case ghdl
|
||||
gate level models derived after synthesis or place&route. In this case GHDL
|
||||
has to link against a compiled a `UNISIM`, `UNIMACRO` or `SIMPRIM` library.
|
||||
The details are described in
|
||||
- [README_buildsystem_Vivado.md](README_buildsystem_Vivado.md#user-content-ghdllibs)
|
||||
@ -134,7 +134,7 @@ The details are described in
|
||||
|
||||
#### <a id="build-cpp">Compile sharable libraries</a>
|
||||
|
||||
The backend code base uses now many `c++11` langauge features, e.g.
|
||||
The backend codebase uses now many `c++11` language features, e.g.
|
||||
`nullptr`, `auto`, lambda functions, list initialization, range-based `for`,
|
||||
to name the most prominent.
|
||||
A C++ compiler with full `c++11` support is therefore needed, so either
|
||||
@ -158,7 +158,7 @@ To build all sharable libraries
|
||||
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).
|
||||
overwritten with the `CXXOPTFLAGS` environment variable (or make option).
|
||||
To build with `-O3` optimize use
|
||||
|
||||
make -j 4 CXXOPTFLAGS=-O3
|
||||
@ -187,7 +187,7 @@ To use these packages it is convenient to make them available via the
|
||||
lappend auto_path [file join $env(RETROBASE) tools tcl]
|
||||
lappend auto_path [file join $env(RETROBASE) tools lib]
|
||||
|
||||
The w11 project contains two ready to use `.tclshrc` or `.wishrc`
|
||||
The w11 project contains two ready-to-use `.tclshrc` or `.wishrc`
|
||||
files which
|
||||
- include the auto_path statements above
|
||||
- activate `tclreadline` (and thus in `tclshrc` an event loop)
|
||||
@ -249,7 +249,7 @@ with in most cases
|
||||
|
||||
### <a id="bitkits">Available bitkits with bit and log files</a>
|
||||
|
||||
Tarballs with ready to use bit files and all logfiles from the tool
|
||||
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/ .
|
||||
|
||||
|
||||
@ -1,50 +1,28 @@
|
||||
# Installation of ghdl
|
||||
# Installation of GHDL
|
||||
|
||||
The w11 project uses the open source VHDL simulator **ghdl**.
|
||||
The w11 project uses the open source VHDL simulator **GHDL**.
|
||||
|
||||
It used to be part of most distributions. Unfortunately the Debian maintainer
|
||||
for ghdl refused at some point to integrate ghdl into Debian Etch. Therefore
|
||||
ghdl was part of Debian 5 "Lenny", and again of Debian 6 "Squeeze", and is
|
||||
missing again in Debian 7 "Wheezy" (the current 'stable').
|
||||
for GHDL refused at some point to integrate GHDL into Debian 4 "Etch".
|
||||
GHDL was part of Debian 5 "Lenny", and again of Debian 6 "Squeeze", and was
|
||||
missing again in Debian 7 "Wheezy", Debian 8 "Jessy", and Debian 9 "Stretch".
|
||||
It was finally re-integrated in Debian 10 "Buster" (with V0.35) and
|
||||
Debian 11 "Bullseye" (with V1.0.0).
|
||||
|
||||
The glitch at Debian unfortunately lead to the removal of ghdl from Ubuntu,
|
||||
The glitch at Debian unfortunately lead to the removal of GHDL from Ubuntu,
|
||||
which is based on Debian. Ubuntu 10.04 "Lucid" up to 11.10 "Oneiric" included
|
||||
ghdl, the currently maintained versions 12.04 LTS "Precise", 14.04 LTS "Trusty"
|
||||
and 14.10 "Utopic" unfortunately don't.
|
||||
GHDL, while 12.04 LTS "Precise", 14.04 LTS "Trusty", 16.04 LTS "Xenial",
|
||||
and 18.04 "Bionic" didn't. It was finally re-integrated in Ubuntu in
|
||||
20.04 LTS "Focal" (with V0.37) and 22.04 LTS "Jammy" (with V1.0.0).
|
||||
|
||||
To install ghdl on an up-to-date Debian or Ubuntu systems you have the
|
||||
following options _(as of early February 2015)_:
|
||||
However, the recent Debian packages do not include the `VITAL` libraries anymore,
|
||||
see [issue 1939910](https://bugs.launchpad.net/ubuntu/+source/ghdl/+bug/1939910)
|
||||
and [comment 899552686](https://github.com/ghdl/ghdl/pull/1841#issuecomment-899552686)
|
||||
The response was that they were removed due to license issues, see
|
||||
[comment 899576418](https://github.com/ghdl/ghdl/pull/1841#issuecomment-899576418). The recent Ubuntu packages also do not include the `VITAL` libraries.
|
||||
|
||||
- Ubuntu Precise and Trusty
|
||||
The Debian/Ubuntu packages are therefore useless for w11 verification.
|
||||
|
||||
Thanks to Peter Gavin Ubuntu packages for GHDL are available from his PPA
|
||||
'Personal Package Archives', see
|
||||
|
||||
https://launchpad.net/~pgavin/+archive/ghdl
|
||||
|
||||
So to install ghdl under Ubuntu use
|
||||
|
||||
sudo add-apt-repository ppa:pgavin/ghdl
|
||||
sudo apt-get update
|
||||
sudo apt-get install ghdl
|
||||
|
||||
- Debian Wheezy
|
||||
|
||||
Thanks to Joris van Rantwijk Debian packages for GHDL are available
|
||||
from the web site
|
||||
|
||||
http://jorisvr.nl/ghdl_debian.html
|
||||
|
||||
There are also Ubuntu packages, but Joris focus is clearly on Debian.
|
||||
|
||||
Only Debian and Ubuntu are actively used by the w11a developer. The situation
|
||||
for other Linux distributions is therefore just taken from the respective web
|
||||
sites _(status October 2013)_:
|
||||
|
||||
- **Suse**
|
||||
For Suse 12.2 and 12.3 un-official ghdl packages are available, but they
|
||||
seem to be based on the long obsolete ghdl version 0.27.
|
||||
- **Redhat/Fedora**
|
||||
For Fedora 18,19, and 20 packages are available based on ghdl 0.29
|
||||
- **Gentoo**
|
||||
Packages, marked 'unstable', are available based on ghdl 0.29 and 0.27
|
||||
The only solution is to install GHDL from sources.
|
||||
That had been a bit quirky at times, but since V0.37 it works without
|
||||
any problems.
|
||||
|
||||
@ -73,7 +73,7 @@ with the currently supported combinations
|
||||
nexys4 n4 3840 kB Digilent Nexys4 board (cellular RAM)
|
||||
nexys4d n4d 3840 kB Digilent Nexys A7-100 board (DDR2)
|
||||
|
||||
The FPGA is configured via the vivado hardware server with
|
||||
The FPGA is configured via the Vivado hardware server with
|
||||
|
||||
make sys_w11a_<btype>.vconfig
|
||||
|
||||
@ -81,7 +81,7 @@ The FPGA is configured via the vivado hardware server with
|
||||
|
||||
A variety of _oskits_ is provided under [tools/oskit](../tools/oskit).
|
||||
The quick start guide describes only how to boot plain 2.11BSD. The
|
||||
full featured [211bsd_rp](../tools/oskit/211bsd_rp/README.md) can be
|
||||
full-featured [211bsd_rp](../tools/oskit/211bsd_rp/README.md) can be
|
||||
used when more than 1024 kB memory is available, for systems with 512 to
|
||||
1024 kB memory use the pruned down
|
||||
[211bsd_rpmin](../tools/oskit/211bsd_rpmin/README.md).
|
||||
|
||||
@ -5,9 +5,9 @@
|
||||
- [Concept](#user-content-concept)
|
||||
- [Setup system environment](#user-content-sysenv)
|
||||
- [Setup environment variables](#user-content-envvar)
|
||||
- [Compile UNISIM/UNIMACRO/SIMPRIM libraries for ghdl](#user-content-ghdllibs)
|
||||
- [Compile UNISIM/UNIMACRO/SIMPRIM libraries for GHDL](#user-content-ghdllibs)
|
||||
- [Building test benches](#user-content-buildtb)
|
||||
- [With ghdl](#user-content-buildtb-ghdl)
|
||||
- [With GHDL](#user-content-buildtb-ghdl)
|
||||
- [With ISE ISim](#user-content-buildtb-isim)
|
||||
- [Building FPGA bit files](#user-content-buildfpga)
|
||||
- [Configuring FPGAs (via make flow)](#user-content-config-make)
|
||||
@ -16,9 +16,9 @@
|
||||
|
||||
### <a id="concept">Concept</a>
|
||||
|
||||
This projects uses GNU make to
|
||||
This project uses GNU make to
|
||||
- generate bit files (synthesis with xst and place&route with par)
|
||||
- generate test benches (with ghdl or Xilinx ISim)
|
||||
- generate test benches (with GHDL or Xilinx ISim)
|
||||
- configure the FPGA (with Xilinx Impact or Linux jtag)
|
||||
|
||||
The Makefile's in general contain only a few definitions, all the make logic
|
||||
@ -32,18 +32,18 @@ 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.
|
||||
which list for each VHDL source file the libraries and sources for the
|
||||
instantiated components, the latter 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
|
||||
All file names 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
|
||||
it. The vbomconv script in tools/bin does this and generates depending on
|
||||
options
|
||||
- make dependency files
|
||||
- ISE xst project files (synthesis)
|
||||
- ISE ISim project files (simulation)
|
||||
- ghdl commands for analysis, inspection and make step
|
||||
- GHDL commands for analysis, inspection and make step
|
||||
|
||||
The master make files contain pattern rules like
|
||||
|
||||
@ -52,7 +52,7 @@ The master make files contain pattern rules like
|
||||
|
||||
which encapsulate all the vbomconv magic
|
||||
|
||||
A full w11a system is build from about 100 source files, test benches
|
||||
A full w11a system is built from about 100 source files, test benches
|
||||
from even more. Using the vbom's a large number of designs can be easily
|
||||
maintained.
|
||||
|
||||
@ -73,15 +73,15 @@ For details on `RETRO_FX2_VID` and `RETRO_FX2_PID` see
|
||||
|
||||
Notes:
|
||||
- The build system uses a small wrapper script called `xtwi` to encapsulate
|
||||
the Xilinx environment. It uses `XTWI_PATH` to setup the ISE environment on
|
||||
the Xilinx environment. It uses `XTWI_PATH` to set up the ISE environment on
|
||||
the fly. For details consult 'man xtwi'.
|
||||
- don't run the ISE setup scripts ..../settings(32|64).sh in your working
|
||||
shell. Setup only `XTWI_PATH` !
|
||||
|
||||
#### <a id="ghdllibs">Compile UNISIM/UNIMACRO/SIMPRIM libraries for ghdl</a>
|
||||
#### <a id="ghdllibs">Compile UNISIM/UNIMACRO/SIMPRIM libraries for GHDL</a>
|
||||
|
||||
A few entities use `UNISIM` or `UNIMACRO` primitives, and models derived after
|
||||
the par step require also `SIMPRIM` primitives. In these cases ghdl has to
|
||||
the par step require also `SIMPRIM` primitives. In these cases, GHDL has to
|
||||
link against a compiled `UNISIM`, `UNIMACRO` or `SIMPRIM` libraries.
|
||||
|
||||
To make handling of the parallel installation of several ISE versions
|
||||
@ -102,17 +102,17 @@ Run these scripts for each ISE version which is installed.
|
||||
### <a id="buildtb">Building test benches</a>
|
||||
|
||||
The build flows support two simulators
|
||||
- ghdl -> open source, with VHPI support, doesn't accept sdf files
|
||||
- GHDL -> open source, with VHPI support, doesn't accept sdf files
|
||||
- ISE ISim -> limited to 50k lines in WebPack, no VHPI support
|
||||
|
||||
#### <a id="buildtb-ghdl">With ghdl</a>
|
||||
#### <a id="buildtb-ghdl">With GHDL</a>
|
||||
|
||||
To compile a ghdl based test bench named `<tbench>` all is needed is
|
||||
To compile a GHDL based test bench named `<tbench>` all is needed is
|
||||
|
||||
make <tbench>
|
||||
|
||||
The make file will use `<tbench>.vbom`, create all make dependency files,
|
||||
and generate the needed ghdl commands.
|
||||
and generate the needed GHDL commands.
|
||||
|
||||
In many cases the test benches can also be compiled against the gate
|
||||
level models derived after the `xst`, `map` or `par` step. To compile them
|
||||
@ -128,12 +128,12 @@ Individual working directories are used for the different models
|
||||
ghdl.fsim for post-map
|
||||
ghdl.tsim for post-par
|
||||
|
||||
and can co-exist. The `make ghdl_tmp_clean` can be used to flush the ghdl
|
||||
and can co-exist. The `make ghdl_tmp_clean` can be used to flush the GHDL
|
||||
work areas, but in general this is not needed (since V0.73).
|
||||
|
||||
Notes:
|
||||
- the post-xst simulation (_ssim targets) proved to be a valuable tool.
|
||||
- ghdl fails to read sdf files generated by Xilinx tools, and thus does
|
||||
- GHDL fails to read sdf files generated by Xilinx tools, and thus does
|
||||
not support a post-par simulation with full timing.
|
||||
- post-par simulations without timing annotation often fail, most likely
|
||||
due to clocking and delta cycle issues due to inserted clock buffers.
|
||||
@ -163,7 +163,7 @@ Notes:
|
||||
simulation engine throttles to snails speed.
|
||||
- ISim does not support VHPI (interfacing of external C routines to VHDL).
|
||||
Since VHPI is used in the rlink simulation all system test benches with
|
||||
an rlink interface, thus most, will only run with ghdl and not with ISim.
|
||||
an rlink interface, thus most, will only run with GHDL and not with ISim.
|
||||
|
||||
### <a id="buildfpga">Building FPGA bit files</a>
|
||||
|
||||
@ -235,7 +235,7 @@ the FPGA. For detailed documentation see the respective man pages.
|
||||
|
||||
### <a id="artix">Note on Artix-7 based designs</a>
|
||||
|
||||
The development for Nexys4 started with ISE, but has now fully moved to
|
||||
The development for Nexys4 started with ISE but has now fully moved to
|
||||
Vivado. The make files for the ISE build flows have been kept for comparison
|
||||
are have the name `Makefile.ise`. So for some Nexys4 designs and associated
|
||||
one can still start with a
|
||||
|
||||
@ -5,9 +5,9 @@
|
||||
- [Concept](#user-content-concept)
|
||||
- [Setup system environment](#user-content-sysenv)
|
||||
- [Setup environment variables](#user-content-envvar)
|
||||
- [Compile UNISIM/UNIMACRO libraries for ghdl](#user-content-ghdllibs)
|
||||
- [Compile UNISIM/UNIMACRO libraries for GHDL](#user-content-ghdllibs)
|
||||
- [Building test benches](#user-content-buildtb)
|
||||
- [With ghdl](#user-content-buildtb-ghdl)
|
||||
- [With GHDL](#user-content-buildtb-ghdl)
|
||||
- [With Vivado xsim](#user-content-buildtb-xsim)
|
||||
- [Building FPGA bit files](#user-content-buildfpga)
|
||||
- [Building vivado projects, creating models](#user-content-buildviv)
|
||||
@ -16,9 +16,9 @@
|
||||
|
||||
### <a id="concept">Concept</a>
|
||||
|
||||
This projects uses GNU `make` to
|
||||
This project uses GNU `make` to
|
||||
- generate bit files (with Vivado synthesis)
|
||||
- generate test benches (with ghdl or Vivado XSim)
|
||||
- generate test benches (with GHDL or Vivado XSim)
|
||||
- configure the FPGA (with Vivado hardware server)
|
||||
|
||||
The Makefile's in general contain only a few definitions. By far most of
|
||||
@ -34,18 +34,18 @@ 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.
|
||||
which list for each VHDL source file the libraries and sources for the
|
||||
instantiated components, the latter 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
|
||||
All file names 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
|
||||
it. The `vbomconv` script in `tools/bin` does this and generates depending on
|
||||
options
|
||||
- make dependency files
|
||||
- Vivado synthesis setup files
|
||||
- Vivado simulation setup files
|
||||
- ghdl commands for analysis, inspection and make step
|
||||
- GHDL commands for analysis, inspection and make step
|
||||
|
||||
The master make files contain pattern rules like
|
||||
|
||||
@ -54,7 +54,7 @@ The master make files contain pattern rules like
|
||||
|
||||
which encapsulate all the `vbomconv` magic
|
||||
|
||||
A full w11a system is build from about 100 source files, test benches
|
||||
A full w11a system is built from about 100 source files, test benches
|
||||
from even more. Using the vbom's a large number of designs can be easily
|
||||
maintained.
|
||||
|
||||
@ -68,22 +68,22 @@ The build flows require the environment variables:
|
||||
- `RETROBASE`: must refer to the installation root directory
|
||||
- `XTWV_PATH`: install path of the Vivado version
|
||||
|
||||
For general instructions on environment see [INSTALL.md](INSTALL.md).
|
||||
For general instructions on the environment see [INSTALL.md](INSTALL.md).
|
||||
|
||||
Notes:
|
||||
- The build system uses a small wrapper script called xtwv to encapsulate
|
||||
the Xilinx environment. It uses `XTWV_PATH` to setup the Vivado environment
|
||||
the Xilinx environment. It uses `XTWV_PATH` to set up the Vivado environment
|
||||
on the fly. For details consult 'man xtwv'.
|
||||
- don't run the Vivado setup scripts ..../settings(32|64).sh in your working
|
||||
shell. Setup only XTWV_PATH !
|
||||
|
||||
#### <a id="ghdllibs">Compile UNISIM/UNIMACRO libraries for ghdl</a>
|
||||
#### <a id="ghdllibs">Compile UNISIM/UNIMACRO libraries for GHDL</a>
|
||||
|
||||
A few entities use `UNISIM` or `UNIMACRO` primitives, and post synthesis models
|
||||
require also `UNISIM` primitives. In these cases ghdl has to link against a
|
||||
A few entities use `UNISIM` or `UNIMACRO` primitives, and post-synthesis models
|
||||
require also `UNISIM` primitives. In these cases, GHDL has to link against a
|
||||
compiled `UNISIM` or `UNIMACRO` libraries.
|
||||
|
||||
To make handling of the parallel installation of several Vivado versions
|
||||
To make the handling of the parallel installation of several Vivado versions
|
||||
easy the compiled libraries are stored in sub-directories under `$XTWV_PATH`:
|
||||
|
||||
$XTWV_PATH/ghdl/unisim
|
||||
@ -94,33 +94,33 @@ A helper scripts will create these libraries:
|
||||
cd $RETROBASE
|
||||
xviv_ghdl_unisim # does UNISIM and UNIMACRO
|
||||
|
||||
Run these scripts for each Vivado version which is installed.
|
||||
Run these scripts for each Vivado version that is installed.
|
||||
|
||||
Notes:
|
||||
- Vivado supports `SIMPRIM` libraries only in Verilog form, there is no vhdl
|
||||
- Vivado supports `SIMPRIM` libraries only in Verilog form, there is no VHDL
|
||||
version anymore.
|
||||
- ghdl can therefore not be used to do timing simulations with Vivado.
|
||||
However: under ISE `SIMPRIM` was available in vhdl, but ghdl did never
|
||||
accept the sdf files, making ghdl timing simulations impossible under ISE too.
|
||||
- GHDL can therefore not be used to do timing simulations with Vivado.
|
||||
However: under ISE `SIMPRIM` was available in VHDL, but GHDL did never
|
||||
accept the sdf files, making GHDL timing simulations impossible under ISE too.
|
||||
|
||||
### <a id="buildtb">Building test benches</a>
|
||||
|
||||
The build flows currently supports ghdl and the vivado simulator xsim.
|
||||
The build flows currently supports GHDL and the Vivado simulator xsim.
|
||||
|
||||
#### <a id="buildtb-ghdl">With ghdl</a>
|
||||
#### <a id="buildtb-ghdl">With GHDL</a>
|
||||
|
||||
To compile a ghdl based test bench named `<tbench>` all is needed is
|
||||
To compile a GHDL based test bench named `<tbench>` all is needed is
|
||||
|
||||
make <tbench>
|
||||
|
||||
The make file will use `<tbench>.vbom`, create all make dependency files,
|
||||
and generate the needed ghdl commands.
|
||||
and generate the needed GHDL commands.
|
||||
|
||||
In some cases the test benches can also be compiled against the gate
|
||||
In some cases, the test benches can also be compiled against the gate
|
||||
level models derived after the synthesis or optimize step.
|
||||
Vivado only generated functional (`UNISIM` based) models in vhdl. Timing
|
||||
(`SIMPRIM` based) models are only available on verilog. The combination
|
||||
vivado + ghdl is therefore limited to functional model simulation.
|
||||
Vivado only generated functional (`UNISIM` based) models in VHDL. Timing
|
||||
(`SIMPRIM` based) models are only available on Verilog. The combination
|
||||
Vivado + GHDL is therefore limited to functional model simulation.
|
||||
|
||||
To compile them
|
||||
|
||||
@ -136,7 +136,7 @@ Individual working directories are used for the different models
|
||||
ghdl.osim for post optimize
|
||||
ghdl.rsim for post routing
|
||||
|
||||
and can co-exist. The `make ghdl_tmp_clean` can be used to flush the ghdl
|
||||
and can co-exist. The `make ghdl_tmp_clean` can be used to flush the GHDL
|
||||
work areas, but in general this is not needed (since V0.73).
|
||||
|
||||
Notes:
|
||||
@ -153,11 +153,11 @@ To compile a Vivado xsim based test bench named <tbench> all is needed is
|
||||
The make file will use `<tbench>.vbom`, create all make dependency files,
|
||||
and generate the needed Vivado xsim project files and commands.
|
||||
|
||||
In many cases the test benches can also be compiled against the gate
|
||||
In many cases, the test benches can also be compiled against the gate
|
||||
level models derived after the synthesis, optimize or routing step.
|
||||
Vivado supports functional (`UNISIM` based) models in vhdl and in verilog,
|
||||
and timing (`SIMPRIM` based) models only in verilog. Since practice showed
|
||||
that verilog models compile and execute faster, verilog is used for both
|
||||
Vivado supports functional (`UNISIM` based) models in VHDL and in Verilog,
|
||||
and timing (`SIMPRIM` based) models only in Verilog. Since practice showed
|
||||
that Verilog models compile and execute faster, Verilog is used for both
|
||||
functional and timing models.
|
||||
|
||||
make <tbench>_XSim_ssim # for post-synthesis functional
|
||||
@ -169,8 +169,8 @@ functional and timing models.
|
||||
make <tbench>_XSim_tsim # for post-routing timing
|
||||
|
||||
Notes:
|
||||
- as of vivado 2016.2 `xelab` shows sometimes extremely long build times,
|
||||
especially for generated post-synthesis vhdl models
|
||||
- as of Vivado 2016.2 `xelab` shows sometimes extremely long build times,
|
||||
especially for generated post-synthesis VHDL models
|
||||
(see [issue #9](https://github.com/wfjm/w11/issues/9)).
|
||||
- Many post-synthesis functional and especially post-routing timing
|
||||
simulations currently fail due to startup and initialization problems
|
||||
@ -218,10 +218,10 @@ If only the post synthesis, optimize or route design checkpoints are wanted
|
||||
make <sys>_opt.dcp
|
||||
make <sys>_rou.dcp
|
||||
|
||||
### <a id="buildviv">Building vivado projects, creating gate level models</a>
|
||||
### <a id="buildviv">Building Vivado projects, creating gate level models</a>
|
||||
|
||||
Vivado is used in 'project mode', whenever one of the targets mentioned
|
||||
above is build a vivado project is freshly created in the directory
|
||||
above is build a Vivado project is freshly created in the directory
|
||||
|
||||
project_mflow
|
||||
|
||||
@ -231,27 +231,27 @@ with the project file
|
||||
|
||||
There are many make targets which
|
||||
- just create the project
|
||||
- start vivado in gui mode to inspect the most recent project
|
||||
- start Vivado in gui mode to inspect the most recent project
|
||||
- create gate level models
|
||||
|
||||
Specifically
|
||||
|
||||
make <sys>.vivado # create vivado project from <sys>.vbom
|
||||
make <sys>.vivado # create Vivado project from <sys>.vbom
|
||||
make vivado # open project in project_mflow
|
||||
|
||||
make <sys>_ssim.vhd # post-synthesis functional model (vhdl)
|
||||
make <sys>_osim.vhd # post-optimize functional model (vhdl)
|
||||
make <sys>_rsim.vhd # post-routing functional model (vhdl)
|
||||
make <sys>_ssim.vhd # post-synthesis functional model (VHDL)
|
||||
make <sys>_osim.vhd # post-optimize functional model (VHDL)
|
||||
make <sys>_rsim.vhd # post-routing functional model (VHDL)
|
||||
|
||||
make <sys>_ssim.v # post-synthesis functional model (verilog)
|
||||
make <sys>_osim.v # post-optimize functional model (verilog)
|
||||
make <sys>_rsim.v # post-routing functional model (verilog)
|
||||
make <sys>_ssim.v # post-synthesis functional model (Verilog)
|
||||
make <sys>_osim.v # post-optimize functional model (Verilog)
|
||||
make <sys>_rsim.v # post-routing functional model (Verilog)
|
||||
|
||||
make <sys>_esim.v # post-synthesis timing model (verilog)
|
||||
make <sys>_psim.v # post-optimize timing model (verilog)
|
||||
make <sys>_tsim.v # post-routing timing model (verilog)
|
||||
make <sys>_esim.v # post-synthesis timing model (Verilog)
|
||||
make <sys>_psim.v # post-optimize timing model (Verilog)
|
||||
make <sys>_tsim.v # post-routing timing model (Verilog)
|
||||
|
||||
For timing model verilog file an associated sdf file is also generated.
|
||||
For timing model Verilog file an associated sdf file is also generated.
|
||||
|
||||
### <a id="config-fpga">Configuring FPGAs</a>
|
||||
|
||||
@ -265,7 +265,7 @@ only one board must connected.
|
||||
|
||||
### <a id="ise">Note on ISE</a>
|
||||
|
||||
The development for Nexys4 started with ISE, but has now fully moved to
|
||||
The development for Nexys4 started with ISE but has now fully moved to
|
||||
Vivado. The make files for the ISE build flows have been kept for comparison
|
||||
are have the name `Makefile.ise`. So for some Nexys4 designs and associated
|
||||
one can still start with a
|
||||
|
||||
@ -2,6 +2,11 @@
|
||||
|
||||
The case id indicates the release when the issue was first recognized.
|
||||
|
||||
### V0.79 {[issue #29](https://github.com/wfjm/w11/issues/29)} -- migrate from Travis to GitHub actions
|
||||
|
||||
Travis is now defunct and has been removed in [6b8c063](https://github.com/wfjm/w11/commit/6b8c063).
|
||||
So it's time to migrate CI/CD to GitHub actions.
|
||||
|
||||
### V0.50-2 {[issue #28](https://github.com/wfjm/w11/issues/28)} -- RK11: write protect action too slow
|
||||
|
||||
Some simple RK11 drivers, especially in test codes, don't poll for completion
|
||||
@ -154,17 +159,6 @@ that 2018.3 is less tolerant to the sub-optimal w11a design.
|
||||
This will be fixed in a future release, either by setting up an appropriate
|
||||
false_path constraint, or by changing the data path structure.
|
||||
|
||||
### V0.76-2 {[issue #17](https://github.com/wfjm/w11/issues/17)} -- Help wanted: Testing with Arty S7 appreciated
|
||||
The w11a design for Arty S7 (50 die size), see rtl/sys_gen/w11a/artys7,
|
||||
was provided to support also an up-to-date Spartan-7 based board. Turned
|
||||
out that speed is equivalent to Artix-7. It is so far only simulation tested.
|
||||
|
||||
Testing done with a real Arty S7, would be highly appreciated. Please double
|
||||
check the pin assignments (see _mig_a.prj and artys7*.xdc_) with the
|
||||
documentation of your board to avoid potential damage.
|
||||
|
||||
Looking forward to receive test reports.
|
||||
|
||||
### V0.73-2 {[issue #10](https://github.com/wfjm/w11/issues/10)} -- Many post-synthesis simulations fail
|
||||
Many post-synthesis functional and especially post-routing timing
|
||||
simulations currently fail due to startup and initialization problems.
|
||||
@ -172,10 +166,10 @@ Cause is MMCM/PLL startup, which is not properly reflected in the test
|
||||
bench. Will be resolved in an upcoming release.
|
||||
|
||||
### V0.73-1 {[issue #9](https://github.com/wfjm/w11/issues/9)} -- Vivado xelab sometimes extremely slow
|
||||
as of vivado 2016.2 `xelab` shows sometimes extremely long build times,
|
||||
especially for generated post-synthesis vhdl models. But also building a
|
||||
as of Vivado 2016.2 `xelab` shows sometimes extremely long build times,
|
||||
especially for generated post-synthesis VHDL models. But also building a
|
||||
behavioral simulation for a w11a design can take 25 min. Even though
|
||||
post-synthesis or post-routing models are now generated in verilog working
|
||||
post-synthesis or post-routing models are now generated in Verilog working
|
||||
with `xsim` is cumbersome and time consuming.
|
||||
|
||||
### V0.65-2 {[issue #7](https://github.com/wfjm/w11/issues/7)} -- Some exotic RH70/RP/RM features not implemented
|
||||
@ -341,7 +335,7 @@ Fixed with commit [6024dce](https://github.com/wfjm/w11/commit/6024dce).
|
||||
|
||||
### V0.73-3 {[issue #11](https://github.com/wfjm/w11/issues/11)} -- dmscnt and dmcmon disabled in Vivado based flows
|
||||
#### Original Issue
|
||||
The 'state number generator' code in `pdp11_sequencer` causes in vivado
|
||||
The 'state number generator' code in `pdp11_sequencer` causes in Vivado
|
||||
2016.1 (and .2) that the main FSM isn't re-coded anymore, which has high
|
||||
impact on achievable clock rate. The two optional debug units depending on
|
||||
the state number, `dmscnt` and `dmcmon`, are therefore currently deactivated in
|
||||
@ -350,4 +344,23 @@ all Artix based systems (but are available on all Spartan based systems).
|
||||
At least mitigated with [d14626c](https://github.com/wfjm/w11/commit/d14626c)
|
||||
which allows to use `dmcmon` without the full state number generation logic
|
||||
in `pdp11_sequencer`. Reintroduced `dmcmon` in `sys_w11a_n4` again. `dmscnt` is
|
||||
still deconfigured for vivado designs, but this has much less practical impact.
|
||||
still deconfigured for Vivado designs, but this has much less practical impact.
|
||||
|
||||
## Closed issues
|
||||
|
||||
### V0.76-2 {[issue #17](https://github.com/wfjm/w11/issues/17)} -- Help wanted: Testing with Arty S7 appreciated
|
||||
#### Original Issue
|
||||
The w11a design for Arty S7 (50 die size), see rtl/sys_gen/w11a/artys7,
|
||||
was provided to support also an up-to-date Spartan-7 based board. Turned
|
||||
out that speed is equivalent to Artix-7. It is so far only simulation tested.
|
||||
|
||||
Testing done with a real Arty S7, would be highly appreciated. Please double
|
||||
check the pin assignments (see _mig_a.prj and artys7*.xdc_) with the
|
||||
documentation of your board to avoid potential damage.
|
||||
|
||||
Looking forward to receive test reports.
|
||||
|
||||
#### Reason for closure
|
||||
Apparently nobody invested into an Arty S7.
|
||||
The sys_w11a_as7 will be marked untested, removed from the default build
|
||||
and test flows, but kept in the repository.
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Summary of known differences and limitations for w11a CPU and systems
|
||||
|
||||
This file descibes differences and limitations of the w11 CPU and systems.
|
||||
This file describes the differences and limitations of the w11 CPU and systems.
|
||||
The issues of the w11 CPU and systems are listed in a separate document
|
||||
[README_known_issues.md](README_known_issues.md).
|
||||
|
||||
@ -22,11 +22,11 @@ The issues of the w11 CPU and systems are listed in a separate document
|
||||
- https://minnie.tuhs.org/pipermail/tuhs/2006-October/002695.html
|
||||
- https://minnie.tuhs.org/pipermail/tuhs/2006-October/002702.html
|
||||
|
||||
In the w11a the `SPL` has 11/70 semantics in kernel mode, thus next no
|
||||
In the w11a the `SPL` has 11/70 semantics in kernel mode, thus no
|
||||
traps or interrupts, but in supervisor and user mode `SPL` really acts as
|
||||
`NOOP`, so traps and interrupts are taken as for all other instructions.
|
||||
**--> The w11a isn't bug compatible with the 11/70.**
|
||||
- A 'red stack violation' looses PSW, a 0 is pushed in stack.
|
||||
- A 'red stack violation' loses PSW, a 0 is pushed onto the stack.
|
||||
- The 'instruction complete flag' in `SSR0` is not implemented, it is
|
||||
permanently '0', `SSR2` will not record vector addresses in case of a
|
||||
vector fetch fault. Recovery of vector fetch faults is therefore not
|
||||
@ -36,9 +36,9 @@ The issues of the w11 CPU and systems are listed in a separate document
|
||||
the 22bit extended mode address space. With UNIBUS mapping enabled, this
|
||||
allowed to access via 17000000:17757777 the memory exactly as a UNIBUS
|
||||
device would see it. The w11a doesn't implement this remapping, an access
|
||||
in the range 17000000:17757777 causes a NXM fault.
|
||||
in the range 17000000:17757777 causes an NXM fault.
|
||||
|
||||
All four points relate to very 11/70 specific behaviour, no operating system
|
||||
All four points relate to very 11/70 specific behavior, no operating system
|
||||
depends on them, therefore they are considered acceptable implementation
|
||||
differences.
|
||||
|
||||
@ -50,7 +50,7 @@ differences.
|
||||
**--> a 'CPU throttle mechanism' will be added in a future version to
|
||||
circumvent this for some old test codes.**
|
||||
- the emulated I/O can lead to apparently slow device reaction times,
|
||||
especially when the server runs as normal user process. This can lead
|
||||
to timeout, again mostly in test programs.
|
||||
especially when the server runs as a normal user process. This can lead
|
||||
to a timeout, again mostly in test programs.
|
||||
**--> a 'watch dog' mechanism will be added in a future version which
|
||||
suspends the CPU when the server doesn't respond fast enough.**
|
||||
|
||||
@ -14,19 +14,19 @@
|
||||
|
||||
All UNIBUS peripherals which exchange data (currently DL11, DZ11, LP11, PC11,
|
||||
DEUNA, RK11, RL11, RPRH, and TM11) are currently emulated via a backend
|
||||
process. The communication between FPGA board and backend server can be via
|
||||
process. The communication between the FPGA board and backend server can be via
|
||||
|
||||
- Serial port
|
||||
- via an integrated USB-UART bridge
|
||||
- on Arty A7, Basys3, Cmod A7 and Nexys4 and Nexys A7 with a `FT2232HQ`,
|
||||
- on Arty A7, Basys3, Cmod A7 and Nexys4, and Nexys A7 with a `FT2232HQ`,
|
||||
allows up to 12M Baud
|
||||
- on Nexys3 with a `FT232R`, allows up to 2M Baud
|
||||
- for all FTDI USB-UART it is essential to set them to `low latency` mode.
|
||||
That was default for Linux kernels 2.6.32 to 4.4.52. Since about March
|
||||
2017 one gets kernels with 16 ms default latency again, thanks to
|
||||
That was the default for Linux kernels 2.6.32 to 4.4.52. Since about March
|
||||
2017, one gets kernels with 16 ms default latency again, thanks to
|
||||
[kernel patch 9589541](https://patchwork.kernel.org/patch/9589541/).
|
||||
**For newer systems it is essential to install a udev rule** which
|
||||
automatically sets low latency, see
|
||||
**On newer systems, it is essential to install a udev rule** which
|
||||
automatically sets low latency, see the
|
||||
[documentation in tools/sys](../tools/sys/README.md).
|
||||
- via RS232 port, as on S3board and Nexys2
|
||||
- using a serial port (/dev/ttySx) is limited to 115 kBaud on most PCs.
|
||||
@ -35,7 +35,7 @@ process. The communication between FPGA board and backend server can be via
|
||||
- Direct USB connection using a Cypress FX2 USB controller
|
||||
- is supported on the Nexys2 and Nexys3 FPGA boards
|
||||
- much faster than serial port connections (see below)
|
||||
- also allows to configure the FPGA over the same USB connection
|
||||
- also allows configuring the FPGA over the same USB connection
|
||||
|
||||
- Notes:
|
||||
- A 12M Baud connection, like on a Nexys4, gives disk access rates and
|
||||
@ -45,7 +45,7 @@ process. The communication between FPGA board and backend server can be via
|
||||
is actually smaller than the bare numbers suggest.
|
||||
- A 460k Baud connection gives in practice a disk throughput of ~20 kB/s.
|
||||
This allows to test the system but is a bit slow for real usage.
|
||||
- USB-RS232 cables with a FTDI `FT232R` chip work fine, tests with Prolific
|
||||
- USB-RS232 cables with an FTDI `FT232R` chip work fine, tests with Prolific
|
||||
Technology `PL2303` based cable never gave reliable connections for higher
|
||||
Baud rates.
|
||||
|
||||
@ -70,22 +70,22 @@ Recommended setups
|
||||
- [Arty A7](https://wfjm.github.io/home/w11/inst/boards.html#digi_arty) or
|
||||
[Arty S7](https://wfjm.github.io/home/w11/inst/boards.html#digi_artys7)
|
||||
- connect USB cable to micro-USB connector labeled 'J10'
|
||||
- to configure via vivado hardware server `make <sys>.vconfig`
|
||||
- to configure via Vivado hardware server `make <sys>.vconfig`
|
||||
|
||||
- [Basys3](https://wfjm.github.io/home/w11/inst/boards.html#digi_basys3)
|
||||
- connect USB cable to micro-USB connector labeled 'PROG'
|
||||
- to configure via vivado hardware server `make <sys>.vconfig`
|
||||
- to configure via ivado hardware server `make <sys>.vconfig`
|
||||
|
||||
- [Cmod A7](https://wfjm.github.io/home/w11/inst/boards.html#digi_cmoda7)
|
||||
- connect USB cable to micro-USB connector
|
||||
- to configure via vivado hardware server `make <sys>.vconfig`
|
||||
- to configure via Vivado hardware server `make <sys>.vconfig`
|
||||
|
||||
- [Nexys4](https://wfjm.github.io/home/w11/inst/boards.html#digi_nexys4)
|
||||
and [Nexys A7](https://wfjm.github.io/home/w11/inst/boards.html#digi_nexysa7)
|
||||
(or
|
||||
[Nexys4 DDR](https://wfjm.github.io/home/w11/inst/boards.html#digi_nexys4d))
|
||||
- connect USB cable to micro-USB connector labeled 'PROG'
|
||||
- to configure via vivado hardware server `make <sys>.vconfig`
|
||||
- to configure via Vivado hardware server `make <sys>.vconfig`
|
||||
|
||||
- [Nexys3](https://wfjm.github.io/home/w11/inst/boards.html#digi_nexys3)
|
||||
- use Cypress FX for configure and and rlink communication
|
||||
@ -161,11 +161,11 @@ All examples below use the same basic setup
|
||||
Notes:
|
||||
- the letter after `-tu` is either the serial device number,
|
||||
denoted as `<dn>`, or the letter `D` for auto-detection of
|
||||
Digilent boards with a FT2232HQ based interface.
|
||||
Digilent boards with an FT2232HQ based interface.
|
||||
- for Arty A7, Basys3, Cmod A7, Nexys4, and Nexys A7 board simply use `D`
|
||||
- otherwise check with `ls /dev/ttyUSB*` to see what is available
|
||||
- `<dn>` is typically '1' if a single `FT2232HQ` based board is connected,
|
||||
like an Arty, Basys3, Cmod A7, or Nexys4. Initially two ttyUSB devices
|
||||
like an Arty, Basys3, Cmod A7, or Nexys4. Initially, two ttyUSB devices
|
||||
show up, the lower is for FPGA configuration and will disappear when
|
||||
the Vivado hardware server is used once. The upper provides the data
|
||||
connection.
|
||||
@ -198,12 +198,12 @@ All examples below use the same basic setup
|
||||
### <a id="simh">simh simulator setup</a>
|
||||
|
||||
Sometimes it is good to compare the w11a behavior with the PDP-11 software
|
||||
emulator from the simh project (see http://simh.trailing-edge.com/).
|
||||
emulator from the simh project (see https://github.com/simh/simh).
|
||||
|
||||
Under `$RETROBASE/tools/simh` two setup files are provided with configure
|
||||
Under `$RETROBASE/tools/simh` two setup files are provided which configure
|
||||
simh to reflect the w11a setup as close as possible:
|
||||
- `setup_w11a_min.scmd`
|
||||
Very close the current w11a state when it runs on an s3board
|
||||
Very close to the current w11a state when it runs on an s3board
|
||||
- processor: 11/70, no FPP, 1 Mbyte
|
||||
- periphery: 2 DL11, LP11, RK11, PC11
|
||||
- `setup_w11a_max.scmd`
|
||||
@ -216,9 +216,10 @@ configuration, so will show in the emulator what w11a can do when
|
||||
finished.
|
||||
|
||||
All examples below use the same basic setup
|
||||
- setup vt100 emulator window for 2nd DL11
|
||||
- setup vt100 emulator window for 1st and 2nd DL11
|
||||
|
||||
cd $RETROBASE/tools/oskit/<oskit-name>
|
||||
console_starter -s -d DL0 &
|
||||
console_starter -s -d DL1 &
|
||||
|
||||
**Note**: the -s ensures that the port numbers used by simh are taken!
|
||||
@ -267,9 +268,9 @@ For further details consult the `README.md` file in the oskit directory.
|
||||
|
||||
#### Legal and license issues
|
||||
|
||||
Unfortunately there is no general hobbyist license for DEC operating
|
||||
Unfortunately, there is no general hobbyist license for DEC operating
|
||||
systems for PDP-11 computers. The 'Mentec license' is commonly understood
|
||||
to cover the some older versions of DEC operating systems, for example
|
||||
to cover some older versions of DEC operating systems, for example
|
||||
|
||||
- RT-11 V5.3 or prior
|
||||
- RSX-11M V4.3 or prior
|
||||
|
||||
@ -11,27 +11,27 @@
|
||||
- [Available system test benches](#user-content-list-tb-sys)
|
||||
|
||||
### General Notes
|
||||
- Ghdl is used for all behavioral simulations
|
||||
- GHDL is used for all behavioral simulations
|
||||
- Optionally Vivado xsim can be used
|
||||
- For post synthesis or post implementation functionnal simulations
|
||||
either Ghdl or Vivado xsim can be used.
|
||||
- For timing simulations only Vivado xsim can be used.
|
||||
- For post-synthesis or post-implementation functional simulations
|
||||
either GHDL or Vivado xsim can be used.
|
||||
- For timing simulations, only Vivado xsim can be used.
|
||||
- ISE isim is also available, but considered legacy support
|
||||
|
||||
### <a id="env">Tests bench environment</a>
|
||||
|
||||
All test benches have the same simple structure:
|
||||
|
||||
- the test benches are 'self-checking'. For unit tests a stimulus process
|
||||
- the test benches are 'self-checking'. For unit tests, a stimulus process
|
||||
reads test patterns as well as the expected responses from a stimulus file
|
||||
|
||||
- the responses are checked in very simple cases by the stimulus process,
|
||||
in general by a monitoring process
|
||||
|
||||
- the test bench produces a comprehensive log file. For each checked
|
||||
response the line contains the word "CHECK" and either an "OK" or a
|
||||
"FAIL", in the later case in general with an indication of whats wrong.
|
||||
Other unexpected behaviour, like timeouts, will also result in a line
|
||||
response, the line contains the word "CHECK" and either an "OK" or a
|
||||
"FAIL", in the latter case in general with an indication of what's wrong.
|
||||
Other unexpected behavior, like timeouts, will also result in a line
|
||||
containing the word "FAIL".
|
||||
|
||||
- at the end a line with the word "DONE" is printed.
|
||||
@ -50,12 +50,12 @@ All test benches have the same simple structure:
|
||||
|
||||
Building the simulation models is handled by the build environment. See
|
||||
[README_buildsystem_Vivado.md](README_buildsystem_Vivado.md) for details
|
||||
of the vivado flow and
|
||||
of the Vivado flow and
|
||||
[README_buildsystem_ISE.md](README_buildsystem_ISE.md) for the ISE flow.
|
||||
|
||||
### <a id="tb-unit">Unit test benches</a>
|
||||
|
||||
All unit test are executed via `tbw` (test bench warpper) script.
|
||||
All unit test are executed via `tbw` (test bench wrapper) script.
|
||||
|
||||
- the test bench is run like
|
||||
|
||||
@ -65,47 +65,47 @@ All unit test are executed via `tbw` (test bench warpper) script.
|
||||
- tbw sets up the environment of the test bench and starts it.
|
||||
It generates required symbolic links, e.g. to the stimulus file,
|
||||
the defaults extracted from the file tbw.dat, if an optional file
|
||||
name is give this one will be used instead.
|
||||
name is given this one will be used instead.
|
||||
- tbfilt saves the full test bench output to a logfile and filters
|
||||
the output for PASS/FAIL criteria
|
||||
|
||||
- for convenience a wrapper script `tbrun_tbw` is used to generate the
|
||||
- for convenience, a wrapper script `tbrun_tbw` is used to generate the
|
||||
tbw|tbfilt pipe. This script also checks with `make` whether the
|
||||
test bench is up-to-date or must be (re)-compiled.
|
||||
|
||||
### <a id="tb-sys">System test benches</a>
|
||||
|
||||
The system tests allow to verify to verify a full system design.
|
||||
In this case vhdl test bench code contains
|
||||
The system tests allow verification of a full system design.
|
||||
In this case, VHDL test bench code contains
|
||||
- (simple) models of the memories used on the FPGA boards
|
||||
- drivers for the rlink connection (currently just serialport)
|
||||
- drivers for the rlink connection (currently just serial port)
|
||||
- code to interface the rlink data stream to a UNIX 'named pipe',
|
||||
implemented with a C routine which is called via VHPI from VHDL.
|
||||
|
||||
This way the whole ghdl simulation can be controlled via a di-directional
|
||||
This way the whole GHDL simulation can be controlled via a bi-directional
|
||||
byte stream.
|
||||
|
||||
The rlink backend process can connect either via a named pipe to a ghdl
|
||||
simulation, or via a serial port to a FPGA board. This way the same tests
|
||||
The rlink backend process can connect either via a named pipe to a GHDL
|
||||
simulation, or via a serial port to an FPGA board. This way the same tests
|
||||
can be executed in simulation and on real hardware.
|
||||
|
||||
In general the script `tbrun_tbwrri` is used to generate the quite lengthy
|
||||
command to properly setup the tbw|tbfilt pipe. This script also checks
|
||||
In general, the script `tbrun_tbwrri` is used to generate the quite lengthy
|
||||
command to properly set up the tbw|tbfilt pipe. This script also checks
|
||||
with `make` whether the test bench is up-to-date or must be (re)-compiled.
|
||||
|
||||
### <a id="tb-driver">Test bench driver</a>
|
||||
|
||||
All available tests (unit and system test benches) are described in a
|
||||
set of descriptor files, usually called `tbrun.yml`. The top level file
|
||||
set of descriptor files, usually called `tbrun.yml`. The top-level file
|
||||
in `$RETROBASE` includes other descriptor files located in the source
|
||||
directories of the tests.
|
||||
|
||||
The script `tbrun` reads these descriptor files, selects tests based
|
||||
on `--tag` and `--exclude` options, and executes the tests with the
|
||||
simulation engine and simulation type given by the `--mode` option.
|
||||
For full description of see `man tbrun`.
|
||||
For a full description see `man tbrun`.
|
||||
|
||||
The low level drivers `tbrun_tbw` and `tbrun_tbwrri` will automatically
|
||||
The low-level drivers `tbrun_tbw` and `tbrun_tbwrri` will automatically
|
||||
build the model if it is not available or outdated. This is very convenient
|
||||
when working with a single test bench during development.
|
||||
|
||||
@ -114,21 +114,21 @@ the model building (make phase) made model execution (run phase). Both
|
||||
the low level drivers as well as `tbrun` support this via the options
|
||||
`--nomake` and `--norun`.
|
||||
|
||||
The individial test benches are simplest started via tbrun and a proper
|
||||
The individual test benches are simplest started via tbrun and a proper
|
||||
selection via `--tag`. Very helpful is
|
||||
|
||||
cd $RETROBASE
|
||||
tbrun --dry --tag=.*
|
||||
|
||||
which gives a listing of all available test. The tag list as well as
|
||||
the shell commands to execute the test are shown.
|
||||
which gives a listing of all available tests. The tag list, as well as
|
||||
the shell commands to execute the test, are shown.
|
||||
|
||||
### <a id="tb-exec">Execute all available tests</a>
|
||||
|
||||
As stated above it is in general better to to separate the model building
|
||||
As stated above it is in general better to separate the model building
|
||||
(make phase) made model execution (run phase). The currently recommended
|
||||
way to execute all test benches is given below.
|
||||
The run time is measured on a 3 GHz dual core system.
|
||||
The run time is measured on a 3 GHz dual-core system.
|
||||
|
||||
cd $RETROBASE
|
||||
# build all behavioral models
|
||||
@ -136,7 +136,7 @@ The run time is measured on a 3 GHz dual core system.
|
||||
time nice tbrun -j 2 -norun -tag=ise -tee=tbrun_make_ise_bsim.log
|
||||
# --> real 3m41.732s user 6m3.381s sys 0m24.224s
|
||||
|
||||
# than all with vivado work flow
|
||||
# than all with Vivado work flow
|
||||
time nice tbrun -j 2 -norun -tag=viv -tee=tbrun_make_viv_bsim.log
|
||||
# --> real 3m36.532s user 5m58.319s sys 0m25.235s
|
||||
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
# $Id: tbrun.yml 1107 2019-01-27 12:54:48Z mueller $
|
||||
# $Id: tbrun.yml 1224 2022-04-20 10:25:52Z mueller $
|
||||
#
|
||||
# Revision History:
|
||||
# Date Rev Version Comment
|
||||
# 2022-04-20 1224 1.3 drop artys7(dram)
|
||||
# 2019-01-27 1107 1.2 add arty(dram),nexys4d(dram),artys7(dram)
|
||||
# 2018-08-11 1038 1.1 add artys7(bram)
|
||||
# 2017-06-25 914 1.1 add cmoda7
|
||||
@ -16,6 +17,4 @@
|
||||
- include: basys3/tb/tbrun.yml
|
||||
- include: arty/tb/tbrun.yml
|
||||
- include: arty_bram/tb/tbrun.yml
|
||||
- include: artys7/tb/tbrun.yml
|
||||
- include: artys7_bram/tb/tbrun.yml
|
||||
- include: cmoda7/tb/tbrun.yml
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user