Forum Discussion

adrianf0's avatar
adrianf0
Icon for New Contributor rankNew Contributor
7 years ago

SingalTap stop acqusition condition

How to define a condition under which SignalTap would stop acquisition and pushed data through jTag without waiting for a storage buffer to be fully filled?

7 Replies

  • sstrell's avatar
    sstrell
    Icon for Super Contributor rankSuper Contributor

    Just click the stop button. Whatever activity is currently occurring on the tapped signals will be displayed on the Data tab of the tool.

    • adrianf0's avatar
      adrianf0
      Icon for New Contributor rankNew Contributor

      Thank you for your reply.

      Unfortunately, it's no solution for me: I need to perform many acquisitions and SignalTap is controlled by tcl commands. As far as I know, tcl interface doesn't allow to stop the acquisition.

  • adrianf0's avatar
    adrianf0
    Icon for New Contributor rankNew Contributor

    @sstrell: Thank you for the link. I overlooked the stop tcl command.

    Anyway, it doesn't suit me well, as I would need to stop the acquisition arbitrary in the script. I basically want to open the acquisition window for a certain period (controlled by the trigger signal) and store (using storage qualifier) certain events occurring on the spied lines. The acquisition window is periodical (~1kHz) and I need to acquire events belonging only to a single acquisition window. What I miss, is a stop acquisition conditional logic in SignalTap which would start pushing data over jTag to PC.

  • sstrell's avatar
    sstrell
    Icon for Super Contributor rankSuper Contributor

    You can certainly do this. You can either use conditional statements in Tcl (remember, it's a full scripting language that includes loops and conditionals; this is my favorite Tcl reference guide: http://tmml.sourceforge.net/doc/tcl/) or set up a state machine trigger in Signal Tap.

    #iwork4intel

  • adrianf0's avatar
    adrianf0
    Icon for New Contributor rankNew Contributor

    At the level of the tcl script, I don't have access to the trigger signal indicating the acquisition window. Moreover, software delays may be in this case just at the edge. However, the machine trigger in SignalTap would be a perfect solution. Unfortunately, I haven't found in the documentation how to set up a stop acquisition condition. Could you share with me some reference?

  • adrianf0's avatar
    adrianf0
    Icon for New Contributor rankNew Contributor

    I tried the following state-based trigger:

    state ST1:
    if (start_acq)
    	goto ST2;
     
    state ST2:
    begin
    	if( stop_acq && store ) 
    	begin
    		start_store;
    		stop_store;
    		trigger 0;
    	end
    	else if (stop_acq)
    	begin
    		trigger 0;
    	end
    	else if (store)
    	begin
    		start_store;
    		stop_store;
    	end
    end

    However, it doesn't work as expected:

    • although I expected only a single acquisition window, SignalTap returns many (segments). One could still filter out only a single acquisition window, however, when waveform is dumped to a .csv files (for further analysis) the information about segments is lost
    • even with post-fill-count argument of the trigger call set to 0, SignalTap waits for at least one valid sample. It means that if the sample doesn't occur, SignalTap will wait forever

    EDIT: If I use `trigger 1`, it actually seems to work as intended. The only inconvenience is it needs to wait for an extra sample from the next acquisition window.