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

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
This commit is contained in:
wfjm
2019-06-30 11:47:18 +02:00
parent 4fbe46df8b
commit aa4f3ae636
3 changed files with 65 additions and 17 deletions

View File

@@ -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
<!-- --------------------------------------------------------------------- -->
---

View File

@@ -1,15 +1,6 @@
-- $Id: pdp11_vmbox.vhd 1112 2019-02-17 11:10:04Z mueller $
--
-- Copyright 2006-2016 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
--
-- This program is free software; you may redistribute and/or modify it under
-- the terms of the GNU General Public License as published by the Free
-- 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 <W.F.J.Mueller@gsi.de>
--
------------------------------------------------------------------------------
-- 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

View File

@@ -1,10 +1,10 @@
# $Id: test_cp_membasics.tcl 830 2016-12-26 20:25:49Z mueller $
#
# Copyright 2014- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# 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 <W.F.J.Mueller@gsi.de>
#
# 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"]