From aa4f3ae636fb0a555dd81446a17feb9419d9c497 Mon Sep 17 00:00:00 2001 From: wfjm Date: Sun, 30 Jun 2019 11:47:18 +0200 Subject: [PATCH] support byte access for em cacc access - pdp11_vmbox: support membe for em cacc access - test_cp_membasics.tcl: add membe tests for memory accesses --- doc/CHANGELOG.md | 1 + rtl/w11a/pdp11_vmbox.vhd | 20 +++------ tools/tbench/cp/test_cp_membasics.tcl | 61 +++++++++++++++++++++++++-- 3 files changed, 65 insertions(+), 17 deletions(-) diff --git a/doc/CHANGELOG.md b/doc/CHANGELOG.md index db7a02c0..35766fca 100644 --- a/doc/CHANGELOG.md +++ b/doc/CHANGELOG.md @@ -45,6 +45,7 @@ The full set of tests is only run for tagged releases. - 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 + - pdp11_vmbox: support membe for em cacc access --- diff --git a/rtl/w11a/pdp11_vmbox.vhd b/rtl/w11a/pdp11_vmbox.vhd index f3d187d9..662d1295 100644 --- a/rtl/w11a/pdp11_vmbox.vhd +++ b/rtl/w11a/pdp11_vmbox.vhd @@ -1,15 +1,6 @@ --- $Id: pdp11_vmbox.vhd 1112 2019-02-17 11:10:04Z mueller $ --- --- Copyright 2006-2016 by Walter F.J. Mueller --- --- This program is free software; you may redistribute and/or modify it under --- the terms of the GNU General Public License as published by the Free --- Software Foundation, either version 3, or (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, but --- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY --- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --- for complete details. +-- $Id: pdp11_vmbox.vhd 1170 2019-06-22 20:58:52Z mueller $ +-- SPDX-License-Identifier: GPL-3.0-or-later +-- Copyright 2006-2019 by Walter F.J. Mueller -- ------------------------------------------------------------------------------ -- Module Name: pdp11_vmbox - syn @@ -27,6 +18,7 @@ -- -- Revision History: -- Date Rev Version Comment +-- 2019-06-22 1170 1.6.7 support membe for em cacc access -- 2016-05-22 767 1.6.6 don't init N_REGS (vivado fix for fsm inference) -- 2015-07-03 697 1.6.5 much wider DM_STAT_VM -- 2015-04-04 662 1.6.4 atowidth now 6 (was 5) to support ibdr_rprm reset @@ -315,7 +307,9 @@ begin iem_mreq := em_mreq_init; iem_mreq.din := VM_DIN; - if VM_CNTL.bytop = '0' then -- if word access + if VM_CNTL.cacc = '1' then -- if cacc access + iem_mreq.be := CP_ADDR.be; -- use membe setup + elsif VM_CNTL.bytop = '0' then -- if word access iem_mreq.be := "11"; -- both be's else if VM_ADDR(0) = '0' then -- if low byte diff --git a/tools/tbench/cp/test_cp_membasics.tcl b/tools/tbench/cp/test_cp_membasics.tcl index 525a30cf..8d210b1b 100644 --- a/tools/tbench/cp/test_cp_membasics.tcl +++ b/tools/tbench/cp/test_cp_membasics.tcl @@ -1,10 +1,10 @@ -# $Id: test_cp_membasics.tcl 830 2016-12-26 20:25:49Z mueller $ -# -# Copyright 2014- by Walter F.J. Mueller -# License disclaimer see License.txt in $RETROBASE directory +# $Id: test_cp_membasics.tcl 1170 2019-06-22 20:58:52Z mueller $ +# SPDX-License-Identifier: GPL-3.0-or-later +# Copyright 2014-2019 by Walter F.J. Mueller # # Revision History: # Date Rev Version Comment +# 2019-06-22 1170 1.1 add membe tests for memory accesses # 2014-03-02 552 1.0 Initial version # # Test very basic memory interface gymnastics @@ -70,3 +70,56 @@ $cpu cp -wal 02200 \ $cpu cp -wal 02200 \ -brm 4 -edata {007700 007710 007720 007730} + +# -------------------------------------------------------------------- +rlc log " write/read memory - test membe (16 bit mode)" + +# init 4 words +$cpu cp -wal 002300 \ + -bwm {0xaaaa 0xbbbb 0xcccc 0xdddd} \ + -wal 002300 \ + -brm 4 -edata {0xaaaa 0xbbbb 0xcccc 0xdddd} +# overwrite with membe '00' '01' '10' '11' +# verify that membe state not persistent (re-init to 11 after write +$cpu cp -wal 002300 \ + -wmembe [bvi b2 "00"] \ + -rmembe -edata [bvi b3 "000"] \ + -wmi 0x0000 \ + -rmembe -edata [bvi b3 "011"] \ + -wmembe [bvi b2 "01"] \ + -rmembe -edata [bvi b3 "001"] \ + -wmi 0x1111 \ + -rmembe -edata [bvi b3 "011"] \ + -wmembe [bvi b2 "10"] \ + -rmembe -edata [bvi b3 "010"] \ + -wmi 0x2222 \ + -rmembe -edata [bvi b3 "011"] \ + -wmembe [bvi b2 "11"] \ + -rmembe -edata [bvi b3 "011"] \ + -wmi 0x3333 \ + -rmembe -edata [bvi b3 "011"] \ + -wal 002300 \ + -brm 4 -edata {0xaaaa 0xbb11 0x22cc 0x3333} +# verify thay wmembe without -sticky acts on single write only +$cpu cp -wal 002300 \ + -wmembe [bvi b2 "01"] \ + -rmembe -edata [bvi b3 "001"] \ + -wmi 0x0000 \ + -rmembe -edata [bvi b3 "011"] \ + -wmi 0x9999 \ + -rmembe -edata [bvi b3 "011"] \ + -wal 002300 \ + -brm 4 -edata {0xaa00 0x9999 0x22cc 0x3333} +# verify thay wmembe with -sticky is persistent +$cpu cp -wal 002300 \ + -wmembe [bvi b2 "10"] -stick \ + -rmembe -edata [bvi b3 "110"] \ + -wmi 0x4444 \ + -wmi 0x5555 \ + -wmi 0x6666 \ + -wmi 0x7777 \ + -rmembe -edata [bvi b3 "110"] \ + -wal 002300 \ + -brm 4 -edata {0x4400 0x5599 0x66cc 0x7733} \ + -wmembe [bvi b2 "11"] \ + -rmembe -edata [bvi b3 "011"]