Errors when using HDL coder

Hallo, when i was using hdl coder for my project, and I keep getting this issue:
Exception in thread "AWT-EventQueue-0": java.lang.NullPointerException
at com.mathworks.toolbox.coder.model.MetadataTree.getFunctionNode(MetadataTree.java:59)
at com.mathworks.toolbox.coder.model.MetadataTree.getNode(MetadataTree.java:44)
at com.mathworks.toolbox.coder.model.MetadataTree.put(MetadataTree.java:27)
at com.mathworks.toolbox.coder.mi.ConversionUtils.convertRangesAndTypes(ConversionUtils.java:562)
at com.mathworks.toolbox.coder.mi.ConversionUtils.convertRangesAndTypes(ConversionUtils.java:500)
at com.mathworks.toolbox.coder.fixedpoint.FixedPointController.handleSimulationResults(FixedPointController.java:690)
at com.mathworks.toolbox.coder.fixedpoint.FixedPointController.access$1100(FixedPointController.java:71)
at com.mathworks.toolbox.coder.fixedpoint.FixedPointController$11.handleResult(FixedPointController.java:506)
at com.mathworks.toolbox.coder.mi.FevalCommand$1.run(FevalCommand.java:119)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

4 comentarios

Raghu Boggavarapu
Raghu Boggavarapu el 24 de Nov. de 2025
Xiaotong Could you please share with us some steps to reproduce the issue.
Xiaotong
Xiaotong el 25 de Nov. de 2025
Editada: Xiaotong el 25 de Nov. de 2025
Hi, I tried this code in hdlcoder in both Matlab and simulink, and the issue appeared:
function [out,out_valid ] = Interleave3 (in, in_valid, in_start, in_final, iBIL)
persistent T v v_valid i j k in_buffer E STARTED READY1 READY2 out_buffer
if isempty(v)
T = uint16(0);
v = false(1,2025); %% 45*45
v_valid = false(1,2025);
i = uint16(0);
j = uint16(0);
k = uint16(0);
E = uint16(0);
STARTED = false;
in_buffer = false(1,1024);
READY1 = false;
READY2 = false;
out_buffer = false(1,1024);
end
T = uint16(ceil((cordicsqrt(1 + bitsll(E,3))-1) / 2 ));
out = false;
out_valid = false;
if in_start
T = uint16(0);
v = false(1,2025); %% 45*45
v_valid = false(1,2025);
i = uint16(0);
j = uint16(0);
k = uint16(0);
E = uint16(0);
STARTED = true;
in_buffer = false(1,1024);
READY1 = false;
READY2 = false;
out_buffer = false(1,1024);
end
if in_valid && STARTED
E = E+1;
in_buffer(E) = in;
end
if in_final && STARTED
READY1 = true;
STARTED = false;
end
if READY1
if i<=T
%coder.unroll();
%for q = 1:16
if j<T-i
if k<E
v(i+45*j+1) = in_buffer(k+1);
v_valid(i+45*j+1) = true;
end
k = k+1;
j = j+1;
end
if j<T-i
if k<E
v(i+45*j+1) = in_buffer(k+1);
v_valid(i+45*j+1) = true;
end
k = k+1;
j = j+1;
end
if j<T-i
if k<E
v(i+45*j+1) = in_buffer(k+1);
v_valid(i+45*j+1) = true;
end
k = k+1;
j = j+1;
end
if j<T-i
if k<E
v(i+45*j+1) = in_buffer(k+1);
v_valid(i+45*j+1) = true;
end
k = k+1;
j = j+1;
end
%end
if j == T-i
j = uint16(0);
i = i+1;
end
else
READY1 = false;
READY2 = true;
k = uint16(0);
i = uint16(0);
j = uint16(0);
end
end
if READY2
if j<=T
%coder.unroll();
%for q = 1:16
if i<T-j
out_buffer(k+1)= v(i+45*j+1) && v_valid(i+45*j+1) ;
k = k+1*uint16(v_valid(i+45*j+1));
i = i+1;
end
if i<T-j
out_buffer(k+1)= v(i+45*j+1) && v_valid(i+45*j+1) ;
k = k+1*uint16(v_valid(i+45*j+1));
i = i+1;
end
if i<T-j
out_buffer(k+1)= v(i+45*j+1) && v_valid(i+45*j+1) ;
k = k+1*uint16(v_valid(i+45*j+1));
i = i+1;
end
if i<T-j
out_buffer(k+1)= v(i+45*j+1) && v_valid(i+45*j+1) ;
k = k+1*uint16(v_valid(i+45*j+1));
i = i+1;
end
%end
if j == T
k = uint16(0);
end
if j == T-i
i = uint16(0);
j = j+1;
end
else
out_valid = true;
k = k+1;
out = out_buffer(k);
if k == E
READY2 = false;
end
end
end
end
Abhijeet
Abhijeet el 25 de Nov. de 2025
Hello @Xiaotong,
Thanks for sharing your script. It appears the issue takes place within the "Fixed Point Conversion" step when you supply it with your test bench script. If you have supplied your own "Simulation Ranges" and "Proposed Types" please share that with us as well along with your test bench script. This will help us reproduce the issue and work on a fix.
Thanks.
Xiaotong
Xiaotong el 26 de Nov. de 2025
thanks for you response. Here is my testbench; And I didn't manually specify the ranges, the ranges are analyzed from the tb.
function tb_Interleave3 ()
in = [1 1 0 1 1 0 0 0 0 1 0 0 1 1 1 0 0 0 1 1 0 1 0 0 0 1 1 1 1 0 1 1 0 0 0 0 1 0 0 1 1 1 0 0 0 1 1 0 1 0 0 0 1 1 ];
iBIL = true;
e = logical([in, zeros(1,500)]);
e_valid = logical([ones(1,54),zeros(1,500)]);
e_start = logical([1,zeros(1,500)]);
e_final = logical([zeros(1,53),1,zeros(1,500)]);
iBIL = true;
for i=1:500
[ult(i),ult_valid(i)] = Interleave3 (e(i),e_valid(i), e_start(i), e_final(i), iBIL);
end
end
Thanks!

Iniciar sesión para comentar.

Respuestas (1)

Kiran Kintali
Kiran Kintali el 24 de Nov. de 2025

0 votos

Can you reach out to technical support with the reproduction steps?

Categorías

Más información sobre Code Generation en Centro de ayuda y File Exchange.

Productos

Etiquetas

Preguntada:

el 24 de Nov. de 2025

Comentada:

el 26 de Nov. de 2025

Community Treasure Hunt

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

Start Hunting!

Translated by