SimDiff is the leading solution for integrating Simulink into modern DevOps platforms while minimizing Simulink license usage. Used by virtually every major company building complex mechatronic systems, SimDiff is the only Simulink differencing and merging tool with the accuracy and speed required for native Git workflows—handling models with 30,000+ blocks in under 10 seconds. SimDiff’s Peer Review files allow large teams to visually review model changes without the need for reviewers to have a Simulink license. No other tool matches SimDiff's integration with DevOps collaboration features in GitLab, Azure DevOps, and other major platforms. SimDiff Automation enables automatic generation of change documentation from pipelines and build scripts.
This demo gives an overview of some of SimDiff’s features. Request a free trial and try it on your models!
SimDiff can be used for comparing, filtering changes, auditing, reporting, and merging Simulink models.
Newer features we’ve introduced in shifting from a desktop tool to a DevOps solution include better integration, Subsystem Snapshot, Peer Review, and Automation that supports docker automation.
Peer Review file
Suppose you get a chat message from a colleague asking you to review some changes in a merge request. You can click the link to open it. Here I can see that my colleague added a SimDiff Peer Review file to the merge request. We can click to open it.
The Peer Review file includes screenshots of the model and the list of differences. It's much better to see this information in SimDiff. So we can click this link to open the Peer Review file SimDiff. SimDiff presents two trees that represent the model hierarchies.
We can double click on any node to visualize the model in our own model viewer. This is not Simulink, so you don't need a Simulink license nor MATLAB installed to visualize the model.
When you click on any model block that was changed, then the attributes panel at the bottom will list all the attributes that were changed and every difference is numbered and colored in SimDiff.
Suppose that you see a change in the model that you would like to make a comment on the merge request. In this case, a display block was replaced by a scope block. You can go to the merge request and make a comment about it - “We should always use scope block here”, for example - and we can use the Subsystem Snapshot feature in SimDiff to add a snapshot of that change.
Subsystem Snapshot
From here, we can adjust the snapshot to the desired area of the model where we have the change that we want to comment on and we can select the list of differences that we want to include in the snapshot.
So we can simply drag and drop from this thumbnail to the merge request. It will preview then we can see the comment and the snapshot that was generated by SimDiff.
Suppose that you also want to make a suggestion about a change of some other block in the model or area of the model. So then we can zoom and pan to the desired area and select the changes that we want to include and again can put the comments.
Suppose we want to say, “We should revert this change” and then again we can drag and drop the snapshot to the merge request and click on Comment. So now we can see the two comments we made with the corresponding snapshot.
Some of our customers use PowerPoint to discuss changes. So in those cases you can copy to clipboard and go to whatever presentation software you use and use that to paste the snapshot. In this case I'm using Google slides.
Another possibility would be to email a colleague asking him to review some changes. So we can again drag and drop the snapshot to the email body and we can also attach the SimDiff Peer review file and send it for review.
Notice that so far, no Simulink license or MATLAB is required in this whole process. There is also a legacy workflow in SimDiff to audit differences, which was originally intended for compliance and documentation. So we have extended that workflow with the Peer Review feature. So now it can be done in parts. Basically you can do some review of some of the changes and then pass the Peer Review file to your colleague who can continue with the review.
Let me switch to All Changes to only look at changes in SimDiff. Suppose that I'm looking at this change and I'm happy with the change that was made. I accept this change. So I can mark this as reviewed by clicking on this column.
Suppose there is another change for which I want to make a comment. In this case the actual speed value was changed. So suppose that I want to add a comment. I said it's reviewed but then I said, “We should revert this change” and I hit apply. This information is automatically saved to the Peer Review file. So if we refresh the HTML view, we'll see the auditing information that we added to those changes.
Also there is a section where it indicates the progress of the audit process. So we can copy this information and paste it in gitlab so someone else can continue with the review. We can also attach the Peer Review file with the updated auditing.
Another possibility would be to email the Peer Review file to a colleague who can continue also with the review. Notice that the contents of the HTML file are very similar to our previous legacy HTML report. We have mainly improved the formatting here and as I said earlier, no MATLAB or Simulink license is required while working with Peer Review files.
This Peer Review file - in this case we started from a GitLab merge request where the Peer Review file was attached. This Peer Review can be generated from the SimDiff user interface or you can script it using SimDiff Automation.
Comparing Models with SimDiff
SimDiff supports comparison of models in either .mdl or .slx format. There are 2 modes to choose from – Comparison and Merge. Comparison mode is optimized for reviewing changes, while merge mode allows you to merge changes.
Reviewing Changes
The SimDiff results window contains two trees for you to see the results.
The left tree is your Simulink model with the changes that you have made. The right tree is the Simulink model with changes made by your colleague. Each difference is numbered and colored. Blue indicates a change, red a deletion, and green an addition. You can customize these colors in the Preferences. SimDiff also includes a legend (button at top-right corner) that describes the colors and icons in SimDiff.
There is a status bar at the bottom of the window which shows how long the comparison took and how many changes have been made to the models. You can mouse over each item for more detail.
One of the exceptional features of SimDiff is its speed. Comparison of sample models that come with SimDiff takes less than half a second, but even with large models SimDiff runs quickly. SimDiff can compare models with thousands of blocks in 2.5 seconds or less, and 20 MB MDL files with more than 30,000 blocks in less than 10 seconds. This fast and accurate comparison is a result of the graph theory research at ENSOFT.
Let’s look at a specific change.
The Actual Speed block is highlighted light blue. This means the block has one or more changed attributes. You can click on the block in either tree and SimDiff will show a comparison of the attributes at the bottom of the window. The Attributes panel shows that the constant block value was changed from 400 to 500.
You can view differences in Simulink by double-clicking them, or by clicking on the toolbar button while the difference is selected. SimDiff has highlighted the currently-selected block in Simulink. By default it also highlights changed, deleted, and added blocks to match the colors used in SimDiff’s two trees. SimDiff provides navigation buttons in the toolbar to step through changes one at a time.
Let’s now look at another kind of change where parallel edits were done in the same block.
The red bar indicates that this is a conflicting change. The Attributes panel shows that the conflict occurs because the name was changed in both the left and the right models.
Filtering Changes
Suppose that you want to ignore differences in block names. You can right-click the Name attribute in the Attributes panel and add it to a filter. With the name attribute filtered out, SimDiff no longer considers the block to be changed. By default, an attribute filter applies to all element types.
For example, the Kalman Filter subsystem’s name was changed from Kalman Filter to Radar Kalman Filter. This change is filtered out, as you can see by the filter icon in the Attributes Panel.
This change will affect the interface in generated code since the function name will be based on the subsystem name, so you probably want to limit the name filter to certain types of blocks. You’ll need to fine-tune the filter. This can be done from the Filters Editor (Edit > Filters…).
From the Filters Editor you can add, edit, and remove filters. You can also enable and disable them as needed. SimDiff comes with built-in filters that exclude attribute sets that are almost always unimportant. You can disable the built-in filters if necessary.
In this case, you want to modify the Name filter so it only applies to certain types of elements. Right now, the filter applies to all elements. Let’s exclude subsystems from the filter. You can type the name of an element or copy and paste it from the list on the right side.
Notice that the subsystem name is no longer filtered, and SimDiff detects the change in the subsystem block.
Auditing
SimDiff shows all model contents by default, including blocks with no differences. However, it provides buttons on top of the trees to customize the view.
For example, clicking the “All Changes” button will adjust the view to only show items with changes.
This view is helpful during a review process.
Reviewers can keep track of their progress by checking off changes on the right column as they review them. Review progress is shown in the status bar.
The auditing panel allows you to add auditing information, such as tags and notes, for the selected model element(s). The username and date are automatically filled in.
You can save the auditing information to an XML file, and later load it back into SimDiff. You can also include the auditing information in a change report, which can be saved in either HTML or XML format. HTML is the preferred format for viewing, while XML is more convenient for automated post-processing with an external tool.
Reports
SimDiff allows generating a report of the comparison. The report includes information about the models, a legend, a summary of the differences, and detailed tables. There is also a linked table of contents for easy navigation.
Just as in the SimDiff application, the differences are numbered. You can click screenshot images to view them at full resolution.
SimDiff allows integration with several version control systems. You can find more information below.
Merging Changes
In Merge mode, we need to specify where the merged results will be stored. By convention, this is usually the left model. However, you can also provide a separate output model file.
Merge mode has most of the same capabilities as Comparison mode, but also allows us to merge changes from the right model into the left model (or output model). You can follow merge progress in the status bar.
To look at an example, let’s find some interesting changes to merge. A Terminator block was removed from inside the Radar Kalman Filter subsystem, and a new Terminator block was added outside the subsystem. This Terminator block should be added to the model. To do this, you can simply click on the merge arrow and SimDiff adds the change.
SimDiff applies the merge actions in Simulink. These modifications appear as unsaved changes in the Simulink model. You can see the merged block in the model and move it around.
This signal is connected to the Terminator block, and also to a port that doesn’t yet exist in the output model’s Kalman Filter. What happens if you try to merge it using SimDiff? SimDiff detects the dependency and creates the third out port that you need.
You can see the dependencies that SimDiff detects by looking at the Dependencies tab at the bottom of the SimDiff window.
Here you see that the copied line depends on both the Terminator block and the third out port of the Kalman Filter. This is how SimDiff knew to create the out port and to give it the correct name. You can also undo and redo merge operations.
There are still a few changes in our example model that haven’t been merged yet. You can merge the contents of an entire subsystem, including subsystems beneath it, using the “Hierarchy Merge” button.
The status bar shows that SimDiff merged all the non-conflicting changes, but there’s still one conflicting change left. For safety, Hierarchy Merge skips conflicting changes since only you can determine which change is correct. You can use the Next Conflict button to jump to the conflicting changes. In this case, it’s a single conflict on a Mux block.
Let’s say your colleague’s change looks better than your change, so you go ahead and merge the conflicting change. Now all the changes are merged. When you are finished merging, you can simply save the output model.
This was just a quick overview of SimDiff. SimDiff also has several other capabilities which we didn’t cover, such as exporting highlighted copies of your models, subsystem diff, workspace comparison, breaking library links, and MATLAB and command-line interfaces.
Request a SimDiff Trial
Ready to try SimDiff? Fill out some info and we will be in touch shortly.
We can't wait to hear from you!
Version Control System Integration
SimDiff integrates with several version control systems (VCSs) and we provide documents outlining the setup process: ClearCase Explorer, ClearTeam Explorer, CM Synergy, Git, Git+Git Extensions, Git+SourceTree, Mercurial, Microsoft Team Foundation Server, Perforce, PTC Integrity, Serena Dimensions CM, TortoiseGit, and TortoiseSVN. If you have questions about the existing documentation, or if your version control system is not listed, please contact ENSOFT support.
System Requirements
SimDiff supports all Windows versions going back two decades and common Linux versions. SimDiff can compute differences without MATLAB/Simulink installed, though some advanced features do use it. SimDiff supports R2007b and higher, all the way up to the most recent release. Full SimDiff System Requirement details can be found here.
Complimentary Academic SimDiff License
If you are a student or part of the staff or faculty at a university or college, you can get a complimentary license of SimDiff.
Please fill out the information below, we will send out a license key and download link after we verify the information you have provided. This usually takes 1 business day.