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 Kommentare

Raghu Boggavarapu
Raghu Boggavarapu am 24 Nov. 2025
Xiaotong Could you please share with us some steps to reproduce the issue.
Xiaotong
Xiaotong am 25 Nov. 2025
Bearbeitet: Xiaotong am 25 Nov. 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 am 25 Nov. 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 am 26 Nov. 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!

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Kiran Kintali
Kiran Kintali am 24 Nov. 2025

0 Stimmen

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

Kategorien

Mehr zu Code Generation finden Sie in Hilfe-Center und File Exchange

Produkte

Gefragt:

am 24 Nov. 2025

Kommentiert:

am 26 Nov. 2025

Community Treasure Hunt

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

Start Hunting!

Translated by