1
0
mirror of https://github.com/wfjm/w11.git synced 2026-03-05 11:14:50 +00:00
Files
wfjm.w11/tools/man/man1/tmuconv.1
wfjm 9c49c9ad58 tmu and tmuconv update; test_w11a_cdma tune-up
- rtl/w11a
  - pdp11.vhd: _tmu,_tmu_sb: add port DM_STAT_SE
  - pdp11_sys70.vhd: pass DM_STAT_SE to pdp11_tmu_sb
  - pdp11_tmu.vhd: add vm.vmcntl.[cm]acc, se.[iv]start fields
  - pdp11_tmu_sb.vhd: add port DM_STAT_SE
  - tb/tbd_pdp11core.vhd: pass DM_STAT_SE to pdp11_tmu_sb
- tools/bin/tmuconv: use vm.vmcntl.[cm]acc, se.[iv]start fields; add type
                     column to em line; remove VFETCH/VPUSH heuristics;
                     add -t_emm, -t_fle, -t_fli, -i_flei
- tools/tbench/w11a/test_w11a_cdma.tcl: stop A2 code via PIRQ
2023-01-08 14:38:30 +01:00

304 lines
8.8 KiB
Groff

.\" -*- nroff -*-
.\" $Id: tmuconv.1 1348 2023-01-08 13:33:01Z mueller $
.\" SPDX-License-Identifier: GPL-3.0-or-later
.\" Copyright 2013-2023 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
.\"
.\" ------------------------------------------------------------------
.
.TH TMUCONV 1 2023-01-08 "Retro Project" "Retro Project Manual"
.\" ------------------------------------------------------------------
.SH NAME
tmuconv \- convert w11a tmu output into human readable format
.\" ------------------------------------------------------------------
.SH SYNOPSIS
.
.SY tmuconv
.RI [ OPTION ]...
.I FILE
.
.SY tmuconv
.B \-\-help
.YS
.
.\" ------------------------------------------------------------------
.SH DESCRIPTION
Converts the output of the \fBw11a\fR trace and monitoring unit (tmu)
into a human readable format. If no options are given, the default
output is \fB\-t_id\fR \fB\-t_vf\fR.
.
.\" ------------------------------------------------------------------
.SH OPTIONS
.
.\" ----------------------------------------------
.IP "\fB\-dump\fR" 8
dump all information.
.
.\" ----------------------------------------------
.IP "\fB\-cdump\fR"
dump only changes relative to previous cycle.
.
.\" ----------------------------------------------
.IP "\fB\-emcancel\fR"
show em 'cancel' cycles when \fB\-t_ib\fR active.
.
.\" ----------------------------------------------
.IP "\fB\-t_id\fR"
trace instruction decodes.
.
.\" ----------------------------------------------
.IP "\fB\-t_ru\fR"
trace register updates.
.
.\" ----------------------------------------------
.IP "\fB\-t_ru06\fR"
trace register updates for r0-r5 and sp (subset of \fB\-t_ru\fR).
.
.\" ----------------------------------------------
.IP "\fB\-t_em\fR"
trace em transactions (external memory bus).
em transactions that converted to an ib transaction are labeled 'cancel'.
They are not shown when \fB\-t_ib\fR is active and no \fB\-emcancel\fR option
is given. This gives the most readable output for \fB\-t_all\fR.
Each transaction is associated with type
.RS
.RS 3
.PD 0
.IP " i" 5
instruction fetch
.IP " v"
vector fetch or push
.IP " m"
read modify write
.IP " c"
control port access (often cdma)
.PD
.RE
A blank type field means 'none of the above' and is used for all em
transactions issued by instructions including index word and immediate
value reads.
The vector fetch transactions are further annotated for well known vector
addresses. This is very helpful for the detection of interrupts.
.RE
.
.\" ----------------------------------------------
.IP "\fB\-t_emm\fR"
trace only em transaction that are not type i or c and are not canceled
(subset of \fB\-t_em\fR).
Useful in conjunction with \fB\-t_id\fR because the information of the
instruction fetch read is included in the \fB\-t_id\fR output.
.\" ----------------------------------------------
.IP "\fB\-t_vf\fR"
trace only vector fetch em transactions (subset of \fB\-t_em\fR)
.
.\" ----------------------------------------------
.IP "\fB\-t_ib\fR"
trace ib transactions (ibus cycles). em 'cancel' transactions are not shown
unless the \fB\-emcancel\fR option is given.
.
.\" ----------------------------------------------
.IP "\fB\-t_flow\fR"
trace instruction flow,
is equivalent to \fB\-t_id\fR \fB\-t_ru06\fR \fB\-t_vf\fR
.
.\" ----------------------------------------------
.IP "\fB\-t_fle\fR"
trace instruction flow and show instruction related em transactions,
is equivalent to \fB\-t_id\fR \fB\-t_ru06\fR \fB\-t_emm\fR
.
.\" ----------------------------------------------
.IP "\fB\-t_fli\fR"
trace instruction flow and show ibus transactions,
equivalent to \fB\-t_id\fR \fB\-t_ru06\fR \fB\-t_vf\fR \fB\-t_ib\fR
.
.\" ----------------------------------------------
.IP "\fB\-t_flei\fR"
combination of "\fB\-t_fle\fR" and "\fB\-t_fli\fR",
is equivalent to \fB\-t_id\fR \fB\-t_ru06\fR \fB\-t_emm\fR \fB\-t_ib\fR
.
.\" ----------------------------------------------
.IP "\fB\-t_all\fR"
trace all, equivalent to \fB\-t_id\fR \fB\-t_ru\fR \fB\-t_em\fR \fB\-t_ib\fR
.
.\" ----------------------------------------------
.IP "\fB\-help\fR"
print full help text and exit.
.
.\" ------------------------------------------------------------------
.SH TRACE OUTPUT FORMAT
Each output line starts with the cycle number and the trace type.
The format of the rest of the line depends on trace type.
\fB\-t_id\fP: the instruction decode trace gives
.RS 2
.PD 0
.IP "-" 2
the PC of the instruction
.IP "-"
the PSW at the beginning(!) of the instruction
.IP "-"
the instruction word (as loaded into the instruction register)
.IP "-"
the instruction in MACRO-11 syntax
.IP "-"
the number of cycles of the previous(!) instruction
.PD
.RE
.PP
.EX
cycle pc psw ireg code nc
71587 id 006054 000011 012410 mov (r4)+,(r0) (4)
71683 id 002146 000340 116767 movb nnn(pc),nnn(pc) (9)
.EE
\fB\-t_ru\fP: the register update trace gives
.RS 2
.PD 0
.IP "-" 2
the byte update indicator
.IP "-"
the register set (0 pr 1)
.IP "-"
the register number (0 to 7)
.IP "-"
the loaded data value
.IP "-"
in case of a stack pointer update the values of kernel, supervisor and user
stack pointers
.IP "-"
in case of an R0-R5 update the values of all these six registers
.IP "-"
the symbolic name of the register
.PD
.RE
.PP
.EX
cycle b sr data
71578 ru 0 07 006102 pc
71649 ru 0 06 002000 002000*------ ------ ksp
71634 ru 0 04 010752 006110 006112 177776 010752 010752*010642 r04
.EE
\fB\-t_em\fP: the memory transaction trace gives
.RS 2
.PD 0
.IP "-" 2
the access type flag (values see \fB\-t_em\fP descriprion)
.IP "-"
the r/w flag
.IP "-"
the byte enables
.IP "-"
the memory address (as 22bit number)
.IP "-"
the data written to memory
.IP "-"
the data received from memory
.IP "-"
four flag bits 'crwh' indicating cancel, read, write, and cache-hit
.IP "-"
the number of extra wait cycles
.IP "-"
in case of vector fetches and associated stack pushes some descriptive text
.PD
.RE
.PP
.EX
cycle be addr wdat rdat crwh nc
11374 em w 11 00000004 000006 0010 (1)
52574 em r 11 00002164 177624 0101 (1)
86703 em mr 11 00003320 000000 0101 (1)
86705 em mw 11 00003320 000001 0010 (1)
87102 em vr 11 00000020 002222 0101 (1) VFETCH PC 020 IOT
87104 em vr 11 00000022 000340 0101 (1) VFETCH PS
87108 em vw 11 00001776 000004 0010 (1) VPUSH PS
87114 em vw 11 00001774 003324 0010 (5) VPUSH PC
.EE
\fB\-t_ib\fP: the ibus transaction trace gives
.RS 2
.PD 0
.IP "-" 2
two flag bits 'cr' indicating console and remote access
.IP "-"
two flag bits 'rm' indicating read/write and modify
.IP "-"
the byte enables
.IP "-"
the bus address (as 16bit number)
.IP "-"
the data written to bus
.IP "-"
the data received from bus
.IP "-"
the acknowledge flag
.IP "-"
the number of extra wait cycles
.IP "-"
if known, the symbolic name of the register
.PD
.RE
.PP
.EX
cycle cr rmbe addr wdat rdat a nc name
988 ib cr r 11 177500 000000 1 (0) ii.acr
52583 ib -- w 11 177570 000001 1 (0) sdreg
70729 ib -- r 11 177776 000004 1 (0) psw
.EE
The w11 CPU starts a cache cycle for each read or write, and cancels the
cache request when an ibus access is detected. These transactions are usually
suppressed when \fB\-t_ib\fP is active but are shown when \fB\-emcancel\fP
is given, resulting in output like
.EX
52582 em w 11 00177570 000001 cancel 1000 (1)
52583 ib -- w 11 177570 000001 1 (0) sdreg
.EE
.
.\" ------------------------------------------------------------------
.SH EXAMPLES
.IP "\fBtmuconv --t_id --t_em --t_ib tmu_ofile\fR" 4
Produces an output with all instruction decodes and external memory interface
and ibus transactions. The execution of a 'bisb #4,4(r4)' instruction which
accesses the output CSR of a DL11 interface will look like
.EX
429 id 002002 000340 152764 bisb #nnn,nnn(r4) (5)
431 em r 01 00002004 000004 0100 (1)
433 em r 11 00002006 000004 0100 (1)
436 ib -- rm01 177564 000200 1 (0) to.csr
439 ib -- wm01 177564 000204 1 (0) to.csr
.EE
and shows the ibus read-modify-write.
.IP "\fBtmuconv --t_all tmu_ofile\fR" 4
Like above, in addition, also all register updates are shown. The execution
of a 'cmp (r2),(r4)+' where r2 points to the psw will look like
.EX
934 id 003014 000011 021224 cmp (r2),(r4)+ (9)
937 ib -- r 11 177776 000011 1 (0) psw
939 ru 0 04 005676 003036 003040 177776 005700 005676*005570 r04
940 em r 11 00005674 000011 0101 (1)
.EE
.\" ------------------------------------------------------------------
.SH "SEE ALSO"
.BR ti_rri (1)
.\" ------------------------------------------------------------------
.SH AUTHOR
Walter F.J. Mueller <W.F.J.Mueller@gsi.de>