sit-link implements a virtual serial link between two simulations by passing packets of serial data over TCP sockets. The TCP connection can be over the internet, so sit-link allows interoperability testing without unnecessarily exposing a company's intellectual property. sit-link consists of 2 main components: an RTL module that is instantiated into the simulation and represents the connections to the serial link; and an application that uses named pipes (FIFOs) to pass data to and from the simulation and a TCP socket to pass data to and from the remote simulation. These components are identical on either side of the serial link, except that one side is setup as listening for the connection to open, and the other side initiates the connection. sit_ver_x4.v is a verilog module for a x4 connection. It has a 4 bit input, tdata, and a 4 bit output, rdata. Unless a parameter is defined or a command line option is set, the named pipes it uses will be sit_pipei and sit_pipeo. sit_cli is an executable that implements the connection. Invoke sit_cli with either -L (for listen) or the name of the remote node on which another sit_cli process is listening. For example (assuming sit_cli is in your $path): On node 1: % cd % mkfifo sit_pipei sit_pipeo % sit_cli -L & % On node 2: % cd % mkfifo sit_pipei sit_pipeo % sit_cli node1 & % (Note: the mkfifo command is only needed once - once it's run, the named pipes remain in the directory even after they are used). An extremely simple and brief example application is included as x4_test.v and would be run under VCS as so: On node 1: % mkfifo sit_pipei sit_pipeo % sit_cli -L & % vcs -R x4_test.v sit_ver_x4.v On node 2: % mkfifo sit_pipei sit_pipeo % sit_cli node1 & % vcs -R x4_test.v sit_ver_x4.v Important note: sit-link simply samples the serial data every 400ps for replication to the remote simulation, so any variation of bit times should be disabled for simulations using sit-link. Notes regarding different simulators: When using Modelsim, it is necessary to run sit_cli first, and that sit_cli makes a network connection before Modelsim runs. It may be useful to use the -c option of sit_cli to start the simulation. sit_cli options: sit_cli now supports several options: -pipeloop - this puts sit_cli into a local loopback mode in which no network conneciton is made, and any data from the pipe is looped back to the pipe. This is useful for testing. -sockloop - this is a second loopback mode, in which a network connection is made, but any data from the network connection is looped back, and the named pipes are not opened or used. -rerun - this causes sit_cli to be run again (with exactly the same parameters) when either the pipes or the socket connection is closed. This is particularly useful in combination with the -L (listen) and -c (spawn a command) options, allowing an unattended server to be arranged. -c "command" - after a network connection is made, the command after -c will be executed (enclose the command in quotes if it includes spaces). This can be used to delay starting a simulation until a network connection is established. -n - a substitute name prefix for the named pipes, replacing sit_pipei and sit_pipeo. 'i' and 'o' are appended to the specified name. -L - listen - instructs sit_cli to listen for an incoming network connection on port 52143, instead of establishing a network connection to a remote node. If a remote nodename is not specified to sit_cli and the -L option is not used, the default connection will be made to "localhost".