SoC Builder for embedded software error Data IO Blocks

I am trying to deploy a model with FPGA and CPU subsystems on ZCU102 board (AMD). I have already generated the HDL code and bitstream for the FPGA using the HDL Workflow Adviser.
I am running the SoC Builder to generate embedded code for the processor, but when I reach the build step, I get the following error:
Error using soc.internal.connectivity.addDataIOBlocks
Unable to modify the contents of linked library block 'simple_doubler_CPU_oneblock_sw/IODataSource_Stream/Variant/SIM/Source Variant/From Constant/HWSW
Message Send/Event Variant/Event On'. To modify the content mark the library block as self-modifiable and use its mask initialization code.
The stack trace is:
Displaying stack trace:
Error using soc.internal.connectivity.addDataIOBlocks
• In soc.internal.connectivity.addDataIOBlocks
• In soc.internal.connectivity.addDataIOBlocks
• In soc.if.ModelGenerator>ModelGenerator.createSoftwareModelForCPUs
• In soc.if.ModelGenerator>ModelGenerator.createSoftwareModel
• In soc.if.ModelGenerator>ModelGenerator.generateInterfaceModel
• In soc.SystemDeployer>SystemDeployer.generateSoftwareSystem
• In soc.internal.SoCGenWorkflow>SoCGenWorkflow.generateESWSLModel
• In soc.internal.SoCGenWorkflow.buildSoftwareProcessorOnly
• In soc.ui.BuildModel>BuildModel.startBuildCB
• In soc.ui.BuildModel>@(varargin)this.startBuildCB(varargin{:})
• In matlab.hwmgr.internal.hwsetup.executeWidgetCallback (line 17)
• In matlab.hwmgr.internal.hwsetup.Widget>Widget.safeCallbackInvoke (line 109)
• In matlab.hwmgr.internal.hwsetup.appdesigner.Button>Button.buttonPushedCbk (line 46)
• In matlab.hwmgr.internal.hwsetup.appdesigner.Button>@(varargin)obj.buttonPushedCbk(varargin{:}) (line 25)
This error originates from a file that is generated during the build, so breaking the library link to the probablematic block is pointless, as the file gets regenerated next time I try to build.
I tried breaking the library link to the Task Manager that feeds into my CPU block, but that didn't help.
How do I fix this error to be able to generate embedded code?

1 comentario

Torsten
Torsten el 16 de Oct. de 2026 a las 17:15
If the below answer from AI doesn't help, contact support:
Answer from AI:
To resolve this error, you need to break the library link in your original top-level model (the one you run SoC Builder from) rather than trying to fix the generated *_sw.slx model, as you correctly noted that the file gets overwritten during every build attempt.
Why This Happens
During the software build process, SoC Builder executes an internal automated script (soc.internal.connectivity.addDataIOBlocks) to automatically configure Inter-Process Communication (IPC) and data streaming paths. To do this, it navigates into your CPU or I/O streaming subsystems (IODataSource_Stream) to inject variant or data routing blocks. If the block in your top-level model remains actively linked to a locked user library or an external read-only library, the generated *_sw.slx model inherits that lock, causing the script to crash when it attempts to modify the underlying architecture.
How to Fix It
1. Locate the block in the original model: Open your original top-level Simulink model (the parent model of
simple_doubler_CPU_oneblock_sw). Look for the block or subsystem named IODataSource_Stream (or the
subsystem containing your AXI4-Stream / I/O source blocks).
2. Break the Library Link:
  • Right-click on the IODataSource_Stream block (or any wrapper block it resides inside).
  • Navigate to Library Link > Break Link.
  • If it is a deeply nested block, look inside that subsystem for the underlying block containing the path Variant/SIM/Source Variant/.../HWSW Message Send and break its link as well.
3. Save and Rerun: Save your top-level model, clear your MATLAB workspace (clear all), close the generated *_sw
model if it is open, and restart the SoC Builder tool to regenerate the embedded code cleanly.
Alternative Solution (If keeping the Library Link is required)
If IODataSource_Stream is an asset from a corporate/team library that you absolutely cannot break links for permanently, you must modify the source library block itself:
  • Open the source library .slx file where IODataSource_Stream or the problematic HWSW Message Send variant block lives.
  • Right-click the block and select Mask > Edit Mask.
  • In the Mask Editor, look for the Initialization tab or block configuration parameters and ensure that option flags allowing internal structural or variant modifications are enabled (e.g., configuring structural variant handling via mask initialization code, or setting the block architecture as self-modifiable if it programmatically generates internal layout).
Breaking the link in the top-level model is usually the fastest and cleanest path forward when doing custom hardware-software deployment workflows.

Iniciar sesión para comentar.

Respuestas (0)

Productos

Versión

R2024b

Preguntada:

el 16 de Oct. de 2026 a las 15:18

Comentada:

el 16 de Oct. de 2026 a las 17:15

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by