Jump to content

Analog data formats used

Recommended Posts

Hello Thomas,

Hi Torsten,


on my OSX everthing is ok ??!?!

Nevertheless i added a fix to the paint listeners to ensure recursion can not happen.


you find it under http://update.toem.de/pre

Please reply if it helps, so it will be part of next release.


I just installed Impulse 0.5.7 from the indicated URL and your fix seems to work: I did not observe any immediate crashes due to maximizing/minimizing tabs.


Thanks a lot for this quick fix!


I did not have time for in-depth testing, but anyway, I will report any new issues, which may arise.





Regards, Torsten

Link to comment
Share on other sites

Hello Thomas,

Thanks for the log.

In fact its something cocoa specific.

The update of another composite, forces the composite itself to be redrawn. - Very strange --

I will take care for a fix this week.


Great that you were able to analyse the problem.


>>No, just for selected key points indicated by the user: He could e.g. right click on a trace at a certain point. Select something like "Add label..." and then, he can add optionally some explicative text, which would be displayed along with the x and y values.


This gets in the direction of markers.

Not started in impusle but already in the framework.

A possibility to add bookmarks, texts, a relation to other signals, or here a value attatched.

Exactly, your description much more precisely describes the feature. For analog signals, besides the x,y coordinates of a sample, also other information is relevant, e.g.:


  • slope at the point
  • time distance between two markers and equivalent frequency

Having markes to automatically snap to the minimum maximum sample in a selected time/frequency range (or over the whole sampled interval in absence of a selection) might be interesting as week.


Having vertical markers to mark a value difference might be also interesting.


Do you see this as part of the configuration or the wave file?

- do you want to see his markers again after new simulation at the same position but maybe with different value ?

- or do you see it as part of this specific wave file (a kind of analysis).

I see this feature as a documentation capability to highlight measures taken on the simulation results. It may be sensible to save a carefully set up set of markers in the configuration. However, it is difficult to ensure that the markers will be still at the right place after a new simulation run. E.g., just small parameter variations will result in an enough big phase difference for the marker not being anymore at the right time. To achieve this, we would need some "intelligent" markers, which would position themselves at the right place in a given range.





Best regards,



Link to comment
Share on other sites

  • 2 months later...

Hallo Thorsten,


your are right. Not only for analog signals, but also for transactions it will be usefull to simple resize the item height.

To do so i had to exchange the tree:




For the axis problem i'am current thinking about a general non-linear axis, that also support time warps .




Hello Sir.

You might want to check out:



Gnuplot does a very satisfactory job of plotting

frequency domain plots, with log - log scale. It 

uses a script driven framework, but works very


Link to comment
Share on other sites

A feature suggestion for future version:


When you read vcd, you know tc (toggle count). Why don't you provide an information about them in your tracer.



On the left hand pane if somebody places cursor over some module and if it shows how many toggles have had happened like (1056 toggles, 7% of total), that would be great.


Regards, Sumit

Link to comment
Share on other sites

Hello Sumit,


Once Impulse is installed in Eclipse, you should be able to open any VCD file from the Project Explorer. If not, maybe some other editor is already associated with the file type. Then, right click on the file and Open With -> Impulse Viewer should do the trick.


For DAT files, you have to explicitly specify the Impulse Viewer as Editor in the Eclipse Preferences under General -> Editors -> File Associations.


Regards, Torsten

Link to comment
Share on other sites

Hello Thomas,


Hi all,


after the sommer break here the new 05.11:


* log10 line diagrams

* multiple axes

* lot of fixes





Thanks for implementing these very useful new features into Impulse. With each new revision you plug in gets more useful! Other people in my group have also started to work with it and find it already very handy.


Regards, Torsten

Link to comment
Share on other sites

  • 4 weeks later...

Hi Thomas,


I do not see that there is any need for any real data which is more precise that double. I do not see analog data formats in SystemC/SystemC-AMS/Verilog/Verilog-AMS uses them.


Having said that, I must say that :


  1. If somebody for a signal width greater than 64 bits tries to convert it into double/analog type in impulse (some DSP debugging) then big data formats will be useful.
  2. If somebody uses GNU mpfr, then possibly it will be useful, but I do not know how he will get a dump for that.


Regards, Sumit

Link to comment
Share on other sites

Just a question.

Is there a need for real data with precision > double ?

I was just working with Java type BigDecimal for axes (to avoid rounding errors).





Well, as Sumit said, currently, analog simulators use primarily double for their calculations. However, SystemC is compatible with all plain old data types of C++, which also includes long double that has potentially a higher precision than double. Therefore, I would appreciate if Impulse would also support this data type.

Link to comment
Share on other sites

  • 1 month later...



I've been using your tool for quite a while now and I'm really pleased with the overall eclipse integration.

I have found a small bug though : Apparently, the tool does not interpret float values of -inf or +inf.

It fails to print the waveform whenever it finds those symbols.


As a solution, I suggest the gtkwave workaround ...

It replaces those symbols by a virtual zero and prints the corresponding portion of the wave with a different color.


Hope it helps,


Link to comment
Share on other sites

  • 2 weeks later...

Here you go :


+inf and -inf values are usually generated by an unwanted division by zero.

If you run the following dummy TDF module, you'll obtain a +inf at the beginning.

You can then use the vcd file as an input to your tool in order to reproduce the bug



#include <systemc-ams>

    sca_tdf::sca_out<double> output;
    int counter; double cte;
    SCA_CTOR(genInf) {counter=0;cte=5;}
    void processing() {output = cte / counter++;}

int sc_main(int argc, char * argv[]) {


    sca_tdf::sca_signal<double> sig;

    genInf generator("genInf");

    // Tracing tools
    sca_util::sca_trace_file * tf = sca_util::sca_create_vcd_trace_file("wave");

    // Simulation

    // After Simulation

    return 0;


VCD output should be as follows



    Mon Dec  9 15:57:40 2013
      1 ps
$scope module SystemC_AMS $end
$var real 1 !  test_signal $end
$upscope $end
$enddefinitions $end


rinf !            <------ Impulse can't handle this
r5.000000000000000 !
r2.500000000000000 !
r1.666666666666667 !
r1.250000000000000 !
r1.000000000000000 !
r0.8333333333333334 !
r0.7142857142857143 !
r0.6250000000000000 !
r0.5555555555555556 !



Hope it helps,


Link to comment
Share on other sites

  • 1 month later...
  • 2 months later...

Hello Thomas,


Nice to hear about this evolution of features in Impulse! We are using this plugin more and more at LIP6, e.g., in SystemC trainings, where the attendees do their exercises in an Eclipse IDE. I will give the new features a try in the coming days and will provide feedback if necessary.


Cheers, Torsten

Link to comment
Share on other sites

  • 2 months later...

Hello Thomas,


I gathered more experience with your Impulse plug-in over the past months:


When grouping analog signals using "Combine" in the Edit dialog, different axes are used and I have to specify manually a common range. Would it be possible to automatically propose a valid range covering the full extend of all signals. E.g., I have a signal s1 with values from -0.2 to 1.3 and another signal s2 with values from -4.3 to 0.9, the proposed range would be -4.3 to 1.3. I think this would make the feature much more user-friendly. You could suppress drawing of multiple axes in that case.


Regarding cursor handling: 

- Would it be possible not to change the cursor position if you click accidentally into the Impulse drawing pane, when you have been working in another application and you want to bring Eclipse back to the foreground? Maybe it would be more user-friendly to have to drag the cursors explicitly to the new position instead of just clicking to avoid accidental movements of the cursor.

- When I use cursors to do measurements, I would like to easily zoom-in around the cursor. Currently, Impulse doesn't seem to use the selected cursor as the center for a zoom. What would be also useful is an automatic zoom to the region, which contains all created cursors with some margin left and right. A range zoom tool could be also very handy, where you select the range with a click, drag+hold and release click to the selected x-range.


- When you add a new cursor, it is always added at x position zero and at least on my Eclipse version not visible. Instead, I have to open the "Show Cursor Details" pane to select the newly added cursor to move it there, where I want to have the new cursor. Maybe adding the new cursor to the middle of the current zoom range would be more convenient. I think it would be also convenient to open the "Show Cursor Details" pane automatically when you add the second cursor.


The signal grouping functionality seems to have a bug: If I have 4 signals s1, s2, s3, and s4 and I want s1 and s2 be plotter in one pane and s3 and s4 in a separate pane by selecting first s1 and s2 and selecting "Combine" in the Edit dialog and then *separately* selecting first s3 and s4 and selecting "Combine" in the Edit dialog, all four signals s1 to s4 are plotted in one single pane.


It is nice that Impulse can plot also small signal analyses of amplitude and angle against the frequency. However, the usefulness of this feature is still limited, as the x-axis can still not be set to log10 scale (which I judge more frequently used than a logarithmic plot with octaves).


One small annoying thing is that Impulse is not registered as a possible editor for .dat files. I understand your concerns that too many programs use the .dat extensions, but currently I have to register "Impulse" together  with "Text Editor" manually for *.dat files in each Eclipse workspace (I use separate workspaces to group source projects specific to "real" projects such a project with some industrial partner or a project for a specific training). Would it be possible to register Impulse at least as a secondary editor for .dat files? The "*.tab" file extension is non-standard and won't be adopted by SystemC-AMS users, who have to use also other tools. Even better would be some global configuration dialog for Impulse, where these and other preferences could be configured system-wide.


Thanks again for all the work you have already invested into Impulse! It has more and more replaced our former favorite tools gtkwave and gaw.


Regards, Torsten

Link to comment
Share on other sites

Hello Thomas,


In our daily work with Impulse, we have also identified some need to to basic processing on the signals shown in Impulse. I'm aware that this could become arbitrarily complex, but what would be already helpful is to be able to add, subtract, multiply, divide two selected signals and create a result signal from it (which ideally could be used in another +, -, *, / operation). I see two frequent use cases:


- subtract: to display the information of differential signals, which information is not encoded in the absolute value (as the absolute values are often subject to offset errors), but in the difference of the two signals.


- multiply: to calculate power by multiplying current and voltage.


It would be even more general, if you could add such a "post-processing signal" to your signal list and then specify the formula in a dialog using common mathematical notation with the signal names as parameters to the operands. Then, you could also add more evolved mathematical functions (trigonometric, integration over time, differentiation).


I can understand if such a feature may go beyond the scope you intent for Impulse. There are also workarounds like post-processing the tabular trace files and generating a new one, with the new "post-processing" signals, which could then be displayed by Impulse.


Regards, Torsten

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...