1
0
mirror of https://github.com/wfjm/w11.git synced 2026-02-14 04:04:42 +00:00

- interim release w11a_V0.52 (untagged)

- migrate to rbus protocol verion 3
  - reorganize rbus and rlink modules, many renames
This commit is contained in:
Walter F.J. Mueller
2011-01-02 13:39:34 +00:00
parent 16ce5b2091
commit c3d40ba4b9
131 changed files with 6993 additions and 2795 deletions

View File

@@ -1,4 +1,4 @@
# $Id: README.txt 341 2010-11-27 23:05:43Z mueller $
# $Id: README.txt 351 2010-12-30 21:50:54Z mueller $
Release notes for w11a
@@ -9,7 +9,7 @@ Release notes for w11a
3. Change Log
1. Documentation ----------------------------------------------------------
1. Documentation -------------------------------------------------------------
More detailed information on installation, build and test can be found
in the doc directory, specifically
@@ -20,7 +20,7 @@ Release notes for w11a
* w11a_os_guide.txt: booting operating systems
* w11a_known_issues.txt: known differences, limitations and issues
2. Files ------------------------------------------------------------------
2. Files ---------------------------------------------------------------------
doc Documentation
rtl VHDL sources
@@ -38,7 +38,8 @@ Release notes for w11a
rtl/vlib/comlib - communication
rtl/vlib/genlib - general
rtl/vlib/memlib - memory
rtl/vlib/rri - remote-register-interface
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
@@ -46,9 +47,86 @@ Release notes for w11a
tools helper programs
tools/bin - scripts and binaries
3. Change Log -------------------------------------------------------------
3. Change Log ----------------------------------------------------------------
- trunk (2010-11-28: svn rev 8(oc) 341(wfjm); untagged w11a_V0.51)
- trunk (2011-01-02: svn rev 9(oc) 352(wfjm); untagged w11a_V0.52) +++++++++
- Summary
- Introduced rbus protocol V3
- reorganize rbus and rlink modules, many renames
- 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 verion 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
- New features
- vlib/rbus
- added several rbus devices useful for debugging
- rbd_tester: test target, used for example in test benches
- trunk (2010-11-28: svn rev 8(oc) 341(wfjm); untagged w11a_V0.51) ++++++++
- Summary
- Introduced ibus protocol V2
- Nexys2 systems use DCM
- sys_w11a_n2 now runs with 58 MHz
- Changes
- module renames:
@@ -66,7 +144,7 @@ Release notes for w11a
- migrate to ibus protocol verion 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 ibus sector.
for data exchange. This avoids too long logic paths in the ibus logic.
- New features
- ibus
@@ -80,7 +158,7 @@ Release notes for w11a
- Bug fixes
- rtl/vlib/Makefile.xflow: use default .opt files under rtl/vlib again.
- w11a_V0.5 (2010-07-23) -------------------------------------
- w11a_V0.5 (2010-07-23) ++++++++++++++++++++++++++++++++++++++++++++++++++
Initial release with
- w11a CPU core

View File

@@ -1,10 +1,15 @@
// $Id: w11a_seq_flow.DOT 315 2010-07-11 22:18:39Z mueller $
// $Id: w11a_seq_flow.DOT 343 2010-12-05 21:24:38Z mueller $
//
// The create pdf use
//
// cpp w11a_seq_flow.DOT w11a_seq_flow.dot
// dot -Tps2 w11a_seq_flow.dot > w11a_seq_flow.ps
// ps2pdf w11a_seq_flow.ps
// dot -Tpdf w11a_seq_flow.dot > w11a_seq_flow.pdf
// xpdf w11a_seq_flow.pdf
// -> gives 30.54 x 43.92 in page size
//
// pdflatex w11a_seq_flow_a4wrap.tex
// xpdf w11a_seq_flow_a4wrap.pdf
// --> gives 8.27 x 11.69 in page size (A4)
//
#define FORKSTATE

View File

@@ -1,4 +1,4 @@
# $Id: w11a_tb_guide.txt 317 2010-07-22 19:36:56Z mueller $
# $Id: w11a_tb_guide.txt 352 2011-01-02 13:01:37Z mueller $
Guide to running w11a test benches
@@ -65,66 +65,75 @@ Guide to running w11a test benches
make tb_serport_uart_rx
time tbw tb_serport_uart_rx |\
tee tb_serport_uart_rx_dsim.log | egrep "(FAIL|DONE)"
-> 1269955 ns 63488: DONE
-> 1269955.0 ns 63488: DONE
-> real 0m1.178s user 0m1.172s sys 0m0.020s
- serport receiver/transmitter test
make tb_serport_uart_rxtx
time tbw tb_serport_uart_rxtx |\
tee tb_serport_uart_rxtx_dsim.log | egrep "(FAIL|DONE)"
-> 52335 ns 2607: DONE
-> 52335.0 ns 2607: DONE
-> real 0m0.094s user 0m0.092s sys 0m0.008s
- serport autobauder test
make tb_serport_autobaud
time tbw tb_serport_autobaud |\
tee tb_serport_autobaud_dsim.log | egrep "(FAIL|DONE)"
-> 367475 ns 18364: DONE
-> 367475.0 ns 18364: DONE
-> real 0m0.610s user 0m0.612s sys 0m0.004s
- rri core test
- rlink core test
cd $RETROBASE/rtl/vlib/rri/tb
make tb_rri_core
time tbw tb_rri_core |\
tee tb_rri_core_dsim.log | egrep "(FAIL|DONE)"
-> 61855 ns 3083: DONE
-> real 0m0.163s user 0m0.128s sys 0m0.020s
cd $RETROBASE/rtl/vlib/rlink/tb
make tb_rlink_direct
time tbw tb_rlink_direct |\
tee tb_rlink_direct_dsim.log | egrep "(FAIL|DONE)"
-> 142355.0 ns 7108: DONE
-> real 0m0.317s user 0m0.324s sys 0m0.028s
- rri core test via serial port interface
- rlink core test via serial port interface
make tb_rri_serport
time tbw tb_rri_serport |\
tee tb_rri_serport_dsim.log | egrep "(FAIL|DONE)"
-> 273355 ns 13658: DONE
-> real 0m0.939s user 0m0.924s sys 0m0.008s
make tb_rlink_serport
time tbw tb_rlink_serport tb_rlink_serport_stim.dat |\
tee tb_rlink_serport_stim2_dsim.log | egrep "(FAIL|DONE)"
-> 72735.0 ns 3627: DONE
-> real 0m0.266s user 0m0.264s sys 0m0.008s
time tbw tb_rlink_serport tb_rlink_stim.dat |\
tee tb_rlink_serport_dsim.log | egrep "(FAIL|DONE)"
-> 536155.0 ns 26798: DONE
-> real 0m1.714s user 0m1.704s sys 0m0.044s
- w11a core test (using behavioural model)
cd $RETROBASE/rtl/w11a/tb
make tb_pdp11_core
time tbw tb_pdp11_core |\
tee tb_pdp11_core_dsim.log | egrep "(FAIL|DONE)"
-> 1220255 ns 61003: DONE
-> real 0m14.964s user 0m14.977s sys 0m0.108s
make tb_pdp11core
time tbw tb_pdp11core |\
tee tb_pdp11core_dsim.log | egrep "(FAIL|DONE)"
-> 1220255.0 ns 61003: DONE
-> real 0m10.736s user 0m10.713s sys 0m0.060s
- w11a core test (using post-synthesis model)
make ghdl_tmp_clean tb_pdp11_core_ssim
time tbw tb_pdp11_core_ssim |\
tee tb_pdp11_core_ssim.log | egrep "(FAIL|DONE)"
-> 1220255 ns 61003: DONE
-> real 1m8.230s user 1m8.144s sys 0m0.124s
make ghdl_tmp_clean tb_pdp11core_ssim
time tbw tb_pdp11core_ssim |\
tee tb_pdp11core_ssim.log | egrep "(FAIL|DONE)"
-> 1220255.0 ns 61003: DONE
-> real 1m9.738s user 1m9.588s sys 0m0.096s
3. System tests benches ---------------------------------------------------
The system tests allow to verify to verify the full 11/70 SoC design.
In this case vhdl test bench code contains
- (simple) models of the memories used on the FPGA boards
- drivers for the rri connection (currently just serialport)
- code to interface the rri data stream to a UNIX 'named pipe',
- drivers for the rlink connection (currently just serialport)
- 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
byte stream.
The rri backend process, currently a perl script named pi_rri, can connect
The rlink backend process, currently a perl script named pi_rri, 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 can be executed in simulation and
on real hardware.
@@ -134,7 +143,7 @@ Guide to running w11a test benches
The stimulus file used in the w11a core test can be executed in the
full system context (both s3board and nexys2 versions) with the
following commands. Note that the cycle number printed in the DONE
line can now vary slightly because the response time of the rri
line can now vary slightly because the response time of the rlink
backend process and thus scheduling of backend vs. ghdl process
can affect the result.
@@ -144,10 +153,10 @@ Guide to running w11a test benches
make tb_w11a_s3
time pi_rri --fifo --timeout=40. --cmax=3 \
--run="tbw tb_w11a_s3" -- \
@../../../../w11a/tb/tb_pdp11_core_stim.dat |\
@../../../../w11a/tb/tb_pdp11core_stim.dat |\
tee tb_w11a_s3_stim2_dsim.log | egrep "(-[EW]:|FAIL|PEND|DONE)"
-> 7766215 ns 388301: DONE
-> real 0m51.300s user 0m51.711s sys 0m0.772s
-> 7757655.0 ns 387873: DONE
-> real 0m49.835s user 0m50.203s sys 0m0.696s
- sys_w11a_n2 system test
@@ -155,7 +164,7 @@ Guide to running w11a test benches
make tb_w11a_n2
time pi_rri --fifo --timeout=40. --cmax=3 \
--run="tbw tb_w11a_n2" -- \
@../../../../w11a/tb/tb_pdp11_core_stim.dat |\
@../../../../w11a/tb/tb_pdp11core_stim.dat |\
tee tb_w11a_n2_stim2_dsim.log | egrep "(-[EW]:|FAIL|PEND|DONE)"
-> 7766855 ns 388333: DONE
-> real 0m51.243s user 0m51.647s sys 0m0.776s
-> 6673237.2 ns 387035: DONE
-> real 0m56.173s user 0m56.612s sys 0m0.604s