This page is "http://www.cs.tut.fi/~albert/BOAR/design-cycle.html".

Using BOAR for Macro Verification

With BOAR, the design cycle consists of (approximately):
  1. Algorithm development
  2. Mapping algorithm to VHDL
  3. Synthesize the design/map to BOAR
  4. Concatenate four 4010PG191 configurations using xilbitcat
  5. Generate test vectors if needed
  6. Create a test script to be used with the xilscript program
  7. Connect to BOAR, upload the needed files and run the script
  8. Download the results for analysis or measure the system directly
This document only describes parts 4, 6, 7 and 8.

4. Using xilbitcat

xilbitcat is a program that reads any number of input files and generates one output file, which contains the concatenated result of the separate configurations in the input files. The input files should be in the '.bit'-format, outputted by XACT MakeBits.

At least four configurations must be attached together to make the master Xilinx' and dataflow configure properly. Also, configurations need to match the actual chips in the sockets or the configuration process will fail. Currently all four chips are XC4010's. The first input file contains the configuration for the master Xilinx chip and the following three configurations are for the dataflow.

The configuration files can also be merged together on the target system (BOAR).


6. Create a test script

The script is interpreted by the xilscript program and is used to setup the test memory, configure the xilinx chips, control the output pins and read out the results from the test memory.

An example:
# First set the reset state on the clock-xilinx
xilc_program = 0
# Read the test data to the input memory
input in.data
# Select the output to catch (first dataflow xilinx)
xilc_testsel0 = 1
xilc_testsel1 = 0

xilc_tdi = 0
# Configure the master & dataflow with the contents of g.bit
configure flow g.bit
xil_done
# Configure the clock xilinx with a 'standard' configuration
configure clock rom:xil/clockx_001.bit
xilc_done
delay 5
# Release the clockxilinx - it will start to feed the dataflow
xilc_tdi = 1

# wait 11600ms = 11.6s (about 512k of input data)
delay 1160

# Reset the system
xilc_tdi = 0
xilc_program = 0
xil_program = 0
# Output the collected output data to a file in the ram disk
output ram:output.data

7. Connecting to boar

A simple 'terminal program' is provided to connect to BOAR from a unix machine (~albert/bin/x). If the program succeeds in establishing the connection but BOAR does not respond to couple of presses of the Return key, there is probably someone else currently using the serial port of the X-Terminal BOAR is attached to.
An example:
	55 albert@lenkkari ~ > x
	^P to quit, ^U to upload a file
	Connection established to sigx8.cs.tut.fi, port 9100

	RAM: > _
Uploading the files to BOAR is as simple as pressing ^U (ctrl-U) and giving the file name to upload. However, you should be in the right working directory in BOAR before starting the upload. ("cd ram:" or just "ram:").

The RAM disk (RAM:) is preferred over the FLASH EEPROM filesystem (ROM:), because EEPROM wears out when being used.

Now you can also use YMODEM-protocol, which is better than the ascii-format protocol. YMODEM has flow control, error detection and resending of incorrect blocks. Use ^T (ctrl-T) in the terminal program to use YMODEM-protocol.

Example:
	RAM: > [^U]File to upload: mx_biq_iir.bit
	L mx_biq_iir.bit 22340
	     0 bytes left
	RAM: > [^U]File to upload: biq_iir.bit
	L biq_iir.bit 22337
	     0 bytes left
	RAM: > [^U]File to upload: iirscript
	L iirscript 723
	     0 bytes left
	RAM: > [^U]File to upload: in.data
	L in.data 29822
	     0 bytes left
	RAM: > ls
	----drwedrwedrwe mx_biq_iir.bit           22340     0     0
	----drwedrwedrwe biq_iir.bit              22337     0     0
	----drwedrwedrwe iirscript                  723     0     0
	----drwedrwedrwe in.data                  29822     0     0
	RAM: > 
As you can see, the test data does not need to be the whole 512k (256 kilowords). Uploading 512k at 38400 bps would take a while.
	[Currently:
		If the uploading does not complete properly, when
		using the ascii 'protocol', keep pressing e.g. 'A'
		until the counter reaches zero and then try to upload
		again.]
Then we can merge the configurations into one file (g.bit). Here we put the same design in all dataflow Xilinx chips and a special master configuration for the master Xilinx chip.
	RAM: > xilbitcat.b68k g.bit mx_biq_iir.bit biq_iir.bit biq_iir.bit biq_iir.bit 
	Name of the design: mx_biq_iir.lca
	Type of chip (?):   4010PG191
	Date of creation:   95/02/28
	Time of creation:   14:09:08
	Configuration data: 22267 bytes, 178134 bits, 2 extra one-bits
	Name of the design: biq_iir.lca
	Type of chip (?):   4010PG191
	Date of creation:   95/02/27
	Time of creation:   12:03:01
	Configuration data: 22267 bytes, 178134 bits, 2 extra one-bits
	Name of the design: biq_iir.lca
	Type of chip (?):   4010PG191
	Date of creation:   95/02/27
	Time of creation:   12:03:01
	Configuration data: 22267 bytes, 178134 bits, 2 extra one-bits
	Name of the design: biq_iir.lca
	Type of chip (?):   4010PG191
	Date of creation:   95/02/27
	Time of creation:   12:03:01
	Configuration data: 22267 bytes, 178134 bits, 2 extra one-bits
	Writing to "g.bit"
	RAM: > 
Now we have the needed parts for a test run. So, just let the xilscript program read and execute the script file.
	RAM: > xilscript.b68k iirscript 
	512 kB of output memory detected, 512 kB of input memory assumed
	xilc_PROGRAM    is 0, changed to 0
	Reading data for the input memory
	xilc_TESTSEL0   is 0, changed to 1
	xilc_TESTSEL1   is 0, changed to 0
	xilc_TDI        is 0, changed to 0
	Clearing configuration....Cleared
	Done!
	xil_DONE        is 1
	Clearing configuration....Cleared
	Done!
	xilc_DONE       is 1
	Waiting for 50 ms
	xilc_TDI        is 0, changed to 1
	Waiting for 11600 ms
	xilc_TDI        is 1, changed to 0
	xilc_PROGRAM    is 1, changed to 0
	xil_PROGRAM     is 1, changed to 0
	Writing output memory data to file ram:output.data
	RAM: > ls output.data 
	----drwedrwedrwe output.data             524288     0     0
	RAM: > 
Downloading files is done with the "send" command. The terminal program will detect the incoming data and you can either start the transfer with ^V (ctrl-v) or abort the transfer with ^X (ctrl-X).

Now you can also use YMODEM-protocol, which is better than the ascii-format protocol. YMODEM has flow control, error detection and resending of incorrect blocks. Use "sx <file>" in BOAR to start YMODEM send and then use ^W (ctrl-W) in the terminal program to start YMODEM receive.

	[Currently:
		If the ascii 'protocol' downloading halts for one
		reason or another, kill the running terminal (^Z, kill %%),
		start another and abort the transfer with ^X. Then
		try again.]
	RAM: > send output.data 
	**W0
	Incoming data detected! Press ^V to start transfer, ^X to abort
	524288 bytes 

	Successful
	RAM: > 
Downloading the whole 512k will take some time, so if you only need to take a look into the file, use the "type" command with the "hex" option. You can press ^C (ctrl-C) to abort the display.
	RAM: > type output.data hex

	00000000 : cfa4 cffd c00c c003 cffd cffe cfff cfff
	00000010 : cfff cfff cfff cfff cfff cfff cfff cfff
	00000020 : cfff cfff cfff cfff cfff cfff cfff cfff
	00000030 : cfff cfff cfff cfff cfff cfff cfff cfff
	00000040 : cfff cfff cfff cfff cfff cfff cfff cfff
	00000050 : cfff cfff cfff cfff cfff cfff cfff cfff
	00000060 : cfff cfff cfff cfff cfff cfff cfff cfff
	00000070 : cfff cfff cfff cfff cfff cfff cfff cfff
	00000080 : cfff cfff cfff cfff cfff cfff cfff cfff
	00000090 : cfff cfff cfff cfff cfff cfff cfff cfff
	000000a0 : cfff cfff cfff cfff cfff cfff cfff cfff
	000000b0 : cfff cfff cfff cfff cfff cfff cfff cfff
	000000c0 : cfff cfff cfff cfff cfff cfff cfff cfff
	000000d0 : cfff cfff cfff cfff cfff cfff cfff cfff
	000000e0 : cfff cfff cfff cfff cfff cfff cfff cfff^C
	***aborted

	000000f0 : cfff cfff cfff cfff cfff cfff cfff cfff
	type failed: returncode 20
	RAM: > 
That was the minimum amount of information you need to know about BOAR to be able to use it. However, the command line editor in the shell is a lot like tcsh, with command/filename completion/listing, which makes it very convenient to use. Take a look into the shell manual for advanced information about the command line editor, the builtin commands and other shell-related stuff.