trace TLM port connections using UVM ML wiith Specman and SV - specman

I am using UVM-ML on Incisive, and cannot figure out why data is not passing between my SV collector and e scoreboard. How can I see which TLM ports are connected, and in general debug ML environments?

Uvm_ml_phase -run connect
Uvm_ml_print_tree
Uvm_ml_print_connections

You can use uvm_ml_phase -run connect. after this phase the ports are connected and you can view the uvm_ml tree and all the ports relations via design browser.

Related

LTTng live view with port forwarding / tunneling

I have a PC A where LTTng tracing is running with live view
lttng create trace-session --live
# Traces will be output to tcp4://127.0.0.1:5342/ [data: 5343]
Another PC B is directly connected with A with a Ethernet cable. At the same time, B is connected to a local network.
Now how can I view the live trace events from a third PC C, which is in the same local network as B, for example with
babeltrace2 "net://${B_IP}/host/${B_HOSTNAME}/trace-session"
I ran the following command on PC C, to make a tunnel to PC *A.
ssh -L 5342:${A_IP}:5342 -N user_name#${B_IP}
However, it seems not to have worked. I would like to ask:
What have I done wrong here?
What is the standard way to "forward" LTTng live tracing events to be viewed by babeltrace2?
Babeltrace2 connects to lttng-relayd using the live port of the lttng-relayd process not the data and control ports.
When the command line report the following:
# Traces will be output to tcp4://127.0.0.1:5342/ [data: 5343]
It means that the lttng-sessiond and lttng-consumerd process will communicate with a lttng-relayd process listening on the 127.0.0.1:5342 for control message and 127.0.0.1:5343 for trace data exchange. A viewer, in this case Babeltrace2 can connect to the live port of a lttng-relayd process to stream live session. You can take a deeper look at the component graph here.
The default live port is 5344 and the default behavior for the lttng-relayd process is to bind on all interfaces to listen. Naturally Babeltrace2 also default on using that port if none is specified to communicate with the lttng-relayd process.
See the man page of lttng-relayd for more details.
What have I done wrong here?
In your scenario you need to tunnel the 5344 port. Note that I'm not versed in ssh tunneling so I cannot validate the ssh approach here.
ssh -L 5344:${A_IP}:5344 -N user_name#${B_IP}
What is the standard way to "forward" LTTng live tracing events to be viewed by babeltrace2?
Babeltrace2 and lttng-relayd use TCP for communication. Hence, all TCP "forwarding" methods are acceptable here. As you probably noticed, LTTng does not encrypt communication and trace data in any way. I would say that using a ssh tunnel is appropriate here if you need to move data across non-trusted network.

Is there a way to tell the azsphere cli to use a specific com port?

I need to link the azsphere cli to a specific com port on my system. I'm using a Bluetooth <--> Uart device, a HC-05 to configure wifi connectivity on a Sphere project. It would be slick to use the azsphere cli over this connection, but I suspect that the tool is finding the com port based on some com port property.
Is there a way to force the azsphere cli to use a specific com port?
Thanks for any help
There are two different types of UART on the Azure Sphere MT3620 chip.
There are regular UARTs that you can access from your Azure Sphere app. This sample app shows how to use one these UARTs to receive wifi credentials from a BLE chip - the Nordic nRF52 - which sounds similar to the scenario you’re interested in.
There are reserved UARTs that only the Azure Sphere OS can access. When using the MT3620 dev board, they appear as COM ports on your PC but they are only usable by the azsphere CLI: you can’t program them directly. So there is no reason to control which COM port is used - the azsphere CLI is the only user, and it auto-detects which port to use.

Developer exception starting a client-server model on Eiffel net

I'm trying to establish a connection using sockets between 2 PC's on the same LAN using the Eiffel Programming Language. I'm trying to run the examples that are by default on the installation directory of Eiffel Studio. However right now I'm trying to make it on the same machine by addressing to localhost (127.0.0.1).
It works perfectly on Linux (Ubuntu 15.10) but on windows 7 I'm getting an exception when I try to run the client program. The code of the exception is 24 Unable to establish connection. The server program runs just fine and I already got a connection between a client on linux and a server on windows. I didn't find a solution to this exception on the documentation nor on other sites. Here is a screencap:
Screencap of the debugger
Here is a link to the doc:
https://www.eiffel.org/doc/solutions/Two%20Machines
Thank you in advance.
The issue might be caused by the fact that some ports are used and others are reserved by the system. In particular the port range 0-1023 is designated for use by common system and network services. Ports beyond this range can also be registered (e.g., Service Name and Transport Protocol Port Number Registry or List of TCP and UDP port numbers). System security settings could also prevent applications from using specific port numbers.
The solution is to look for and to use port numbers that are available for user applications. Ports currently used on Windows can be found with netstat -an, what can be used is related to TCP/IP and firewall settings. The simplest approach is to try using some other port numbers, e.g. in the range 1024-49151.

Connecting to remote tty using perl

i am developing a test automation host which is currently connected to 10 embedded controllers via serial ports (/dev/ttyS*)
to speed up the testing i wish to add more host and enable them to also talk to the controllers. However the controller must remain connected to the first host.
the entire test automation software is written in perl so i am looking for a perl based solution. i am currently using Device::SerialPort to talk to the controllers. until now it did the work just fine
is there a way using Device::SerialPort to connect to tty devices on a remote machine
if not is there a similar perl module which can do that
Thanks in advance
If you can connect to the remote host via SSH, you can also get your Perl script to run on the remote host. Maybe as a daemon. Then each script talks to the devices via local ttys, and they could talk to each other over TCP or UDP sockets, using a protocol you define.
Found it !
From a different forum i found a small application call "socat".
it passes all tty communication through a socket.
on the host side you use socat to create a socket and on the client side you create a psuedo tty (pty) which emulates the remote tty through the socket.

Using Wireshark With Local Test Application

I have written a small client server socket application. It is a proof of concept for some socket programming that I want to apply to a much bigger project.
For the moment I want to user wireshark to analyse the traffic that goes between them. They are both running on my local machine.
I have installed a loopback interface, and have tried to use wireshark with it.
No joy. Any ideas?
I have successfully analysed traffic between my machine and other machines no problems.
I have had a look here,
http://wiki.wireshark.org/CaptureSetup/Loopback
And I am not using the address 127.0.0.1 which they mention saying you can't capture traffic on 127.0.0.1
Thanks.
You might try creating a virtual machine to run your application and using wireshark on it.
Save yourself some grief and download Microsoft Network Monitor.
As good as Wireshark is on Unixen, Windows is a "special" case :)