1
0
mirror of https://github.com/wfjm/w11.git synced 2026-01-29 05:21:54 +00:00

tbrun_tbwrri and ti_w11 updates

- tbrun_tbwrri: fully implement --r(l|b)mon
  - ti_w11: add -w and -to options
This commit is contained in:
wfjm
2022-07-10 12:29:41 +02:00
parent da1f0c151e
commit f2ced63b0d
5 changed files with 87 additions and 18 deletions

View File

@@ -1,10 +1,11 @@
#!/bin/bash
# $Id: tbrun_tbwrri 1172 2019-06-29 07:27:24Z mueller $
# $Id: tbrun_tbwrri 1250 2022-07-10 10:21:03Z mueller $
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright 2014-2019 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# Copyright 2014-2022 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
#
# Revision History:
# Date Rev Version Comment
# 2022-07-09 1250 1.3.4 fully implement --r(l|b)mon
# 2016-09-17 808 1.3.3 add --r(l|b)mon,(b|s)wait; configure now via _conf=
# 2016-09-03 805 1.3.2 add TIMEFORMAT and time for make commands
# 2016-08-21 800 1.3.1 add -norun, -nomake
@@ -187,6 +188,14 @@ if (( $waitns > 0 )) ; then
conf+=".wait $waitns ns;"
fi
if [[ -n "$optrlmon" ]] ; then
conf+=".rlmon 1;" # enable rlmom
fi
if [[ -n "$optrbmon" ]] ; then
conf+=".rbmon 1;" # enable rbmom
fi
# now build actual test command
cmdtb+="ti_rri --run=\"tbw $tbench -fifo"
if [[ -n "$conf" ]] ; then cmdtb+=" '_conf={$conf}'"; fi

View File

@@ -1,10 +1,11 @@
#!/usr/bin/perl -w
# $Id: ti_w11 1248 2022-07-07 06:25:50Z mueller $
# $Id: ti_w11 1250 2022-07-10 10:21:03Z mueller $
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright 2013-2022 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
#
# Revision History:
# Date Rev Version Comment
# 2022-07-08 1250 1.4.6 add -w and -to options
# 2022-07-06 1248 1.4.5 update --help text, add -ar,-n4d,-bn4d
# 2019-04-19 1133 1.4.4 for -e use .end start address when available
# 2019-01-04 1103 1.4.3 add -ar,-n4d (ddr versions)
@@ -35,6 +36,7 @@ my $sysbase = "$ENV{RETROBASE}/rtl/sys_gen/w11a";
my $opt_dry;
my $opt_b;
my $opt_w;
my $opt_ns;
my $opt_io = '';
my $opt_f = '';
@@ -76,6 +78,11 @@ while (scalar(@ARGV)) {
$opt_b = 1;
shift @ARGV;
} elsif ($curarg =~ m{^-w$} ) { # -w
$opt_b = 1; # -w implies -b
$opt_w = 1;
shift @ARGV;
} elsif ($curarg =~ m{^-ns$} ) { # -ns
$opt_ns = 1;
shift @ARGV;
@@ -88,6 +95,15 @@ while (scalar(@ARGV)) {
$opt_ghw = 1;
shift @ARGV;
} elsif ($curarg =~ m{^-to$} ) { # -to
shift @ARGV;
if (scalar(@ARGV) == 0 || $ARGV[0] !~ /^[0-9]+\.?[0-9]*$/) {
print STDERR "ti_w11-E: no decimal value after -to\n";
exit 1;
}
$opt_to = $ARGV[0];
shift @ARGV;
} elsif ($curarg =~ m{^-s3$} ) { # -s3 (use -f2 by default)
$opt_io = 'f';
$opt_f = '2';
@@ -255,8 +271,8 @@ if ($opt_io eq 'f') {
exit 1;
}
# setup timeout
if ($opt_io eq 'f') {
# setup default timeout
if ($opt_io eq 'f' && $opt_to eq '') {
$opt_to = '120.'; # 120 sec timeout for simulation
}
@@ -334,6 +350,17 @@ if (defined $val_e) {
push @arglist, @ticmds; # add commands from ARGV
#
# handle -w option
#
if ($opt_w) {
unless (defined $val_e) {
print STDERR "ti_w11-E: -w only allowed with -e\n";
exit 1;
}
push @arglist, "rw11::asmwait cpu0 ldasm_sym $opt_to";
}
#
# find ti_rri executable
#
@@ -398,11 +425,14 @@ sub print_usage {
print " -ll<n> set rlink logging level to <n> (using --logl=<n>)\n";
print " -dl<n> set rlink dump level to <n> (using --dmpl=<n>)\n";
print " -tl<n> set rlink trace level to <n> (using --tiol=<n>)\n";
print " -b batch mode\n";
print " -to <val> timeout for rlink and -w waits\n";
print " -b batch mode (default is to start interactive session)\n";
print " -w wait till CPU halted (used with -e, implies -b)\n";
print " -ns don't start w11 shell\n";
print " -e <file> load and execute file\n";
print " file type '.mac': on the fly compile with asm-11\n";
print " any other file type: assume lda format\n";
print " -dry dry run, prints the commands but doesn't execute\n";
print "\n";
print " either one of -c7,-ar,-arb, ... ,-n2,-s3 must be given -> sim run\n";
print " or one of -t or -u must be given -> fpga run\n";

View File

@@ -1,5 +1,5 @@
.\" -*- nroff -*-
.\" $Id: tbw.1 1238 2022-05-15 15:19:08Z mueller $
.\" $Id: tbw.1 1250 2022-07-10 10:21:03Z mueller $
.\" SPDX-License-Identifier: GPL-3.0-or-later
.\" Copyright 2013-2022 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
.\"
@@ -61,6 +61,22 @@ In this case, the \fIFILEDEF\fP argument can be specified as 'tag=value'
pairs where 'tag' refers to a generic name and 'value' gives the concrete
file name. Useful when several input files are to be specified.
.
.SS Using inline configurations
A \fIFILEDEF\fP argument can have the form 'tag={line1;line2;...}'.
In that case, a temporary file is created with the given lines and the name
of the temporary file is associated with the tag as described above.
This is often used in conjunction with the tag referring to the
configuration file.
This mechanism allows for rlink based test benches to
specify '.scntl', '.sdata', 'rlmon', 'rbmon', and '.wait' startup commands
on the \fBtbw\fP command line and is for example used by \fBtbrun_tbwrri\fP(1).
The '-sxon' option of \fBtbrun_tbwrri\fP(1) creates for example
.EX
_conf={.sdata 08 0002;.sdata 10 0002;}
.EE
which generates two 'simbus' configuration cycles before the simulation body
starts.
.
.SS Test benches controlled with \fBti_rri\fP
In this case, the communication between the test bench and the controlling
\fBti_rri\fP is done via two named pipes (see \fBfifo\fP(7)). The test
@@ -177,12 +193,12 @@ a setup like
.SH EXAMPLES
.SS Stimulus file based test benches
Test benches are usually self-checking and produce a comprehensive log file.
For each checked response, the line contains the word \fICHECK\fP and either
an \fIOK\fP or a \fIFAIL\fP, in the latter case in general with an indication
For each checked 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 \fIFAIL\fP.
When the simulation stops a line with the word \fIDONE\fP is printed.
containing the word "FAIL".
When the simulation stops a line with the word "DONE" is printed.
These test benches are usually run like
.EX

View File

@@ -1,11 +1,11 @@
.\" -*- nroff -*-
.\" $Id: ti_w11.1 1237 2022-05-15 07:51:47Z mueller $
.\" $Id: ti_w11.1 1250 2022-07-10 10:21:03Z mueller $
.\" SPDX-License-Identifier: GPL-3.0-or-later
.\" Copyright 2013-2022 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
.\"
.\" ------------------------------------------------------------------
.
.TH TI_W11 1 2019-01-04 "Retro Project" "Retro Project Manual"
.TH TI_W11 1 2022-07-08 "Retro Project" "Retro Project Manual"
.\" ------------------------------------------------------------------
.SH NAME
ti_w11 \- Quick starter for \fBti_rri\fP with \fBw11\fP CPU designs
@@ -109,18 +109,25 @@ activate GHDL wave dump, will write a dump file with the name
.PD
.
.SS "common options"
.IP \fB-ll\fIn\fR
.IP \fB-ll\fIn\fR 6
set rlink logging level to \fIn\fR (will issue a --logl=\fIn\fR).
.IP \fB-dl\fIn\fR
set rlink dump level to \fIn\fR (will issue a --dmpl=\fIn\fR).
.IP \fB-tl\fIn\fR
set rlink I/O trace level to \fIn\fR (will issue a --tiol=\fIn\fR).
.IP "\fB-to \fIval\fP"
set timeout for rlink and \fB-w\fP waits (default FPGA 10., sim 120.)
.IP \fB-b\fR
batch mode
batch mode (default is to start interactive session)
.IP \fB-w\fP
wait till CPU halted (used with \fB-e\fP, implies \fB-b\fP)
.IP \fB-ns\fP
don't start w11 shell
.IP "\fB-e \fR\fIfile\fR"
load and execute \fIfile\fP. If the file type is '.mac' the file will
be on the fly compiled with \fBasm-11\fP(1), for all other file types
it is assumed that they are in \fBlda-11\fP(5) format.
Can be combined with \fB-w\fP wait for completion of code.
.IP \fB-dry\fR
dry run, prints the commands but doesn't execute
.
@@ -146,14 +153,20 @@ The typical way to start a Nexys4 board.
.IP "\fBti_w11 -n3 -e $RETROBASE/tools/mcode/dl11/dl11echo.mac\fR"
Will start the \fItb_w11a_n3\fP test bench in \fBghdl\fP(1), on the fly
compile the \fIdz11echo.mac\fP test program with \fBasm-11\fP(1), load
and execute it. This little test code echos console input, just abort
and start it. This little test code echos console input, just abort
with ^C if you have seen enough.
.IP "\fBti_w11 -c7 -tmu -w -e $RETROBASE/tools/tcode/cpu_basics.mac\fR"
Will start the \fItb_w11a_c7\fP test bench in \fBghdl\fP(1), on the fly
compile the \fIcpu_basics.mac\fP test code with \fBasm-11\fP(1), load and
start it, wait for CPU halted, and finally terminate. A tmu trace is written
to file \fItmu_ofile\fP and can be analysed with \fBtmuconv\fP(1).
.
.\" ------------------------------------------------------------------
.SH "SEE ALSO"
.BR ti_rri (1),
.BR asm-11 (1),
.BR lda-11 (1)
.BR lda-11 (5)
.\" ------------------------------------------------------------------
.SH AUTHOR