function p = prm_uvmtb_init()
p.TxLen = 5000;
p.TsFrame = 1; % 1 pulse per second
p.PulseLen = 64;
p.WindowLen = 11;
p.DetectionThreshold = 0.03;
p.TsSample = p.TsFrame/p.TxLen;
p.SimTime = (p.TxLen + p.WindowLen + 30)*p.TsSample*5;

% ----------- Generation Parameters ----------
% --- input ports:
% SNR as ufix8_En7 driven from Signal Builder block

% --- tunable params:
% these are accesible in UVM test harness as well
pPulseLocation = Simulink.Parameter(2100);
pPulseLocation.DataType = 'uint32';
pPulseLocation.CoderInfo.StorageClass = 'SimulinkGlobal';
pPulseLocation.Min = 0;
pPulseLocation.Max = p.TxLen-p.PulseLen;
assignin('base', 'pPulseLocation', pPulseLocation);

p.PulseLocation = pPulseLocation;

% ----------- Checking Parameters -----------
pErrorPercentThreshold = Simulink.Parameter(1.95);
pErrorPercentThreshold.CoderInfo.StorageClass = 'SimulinkGlobal';
assignin('base', 'pErrorThreshold', pErrorPercentThreshold);

% Simulate in fixed-point or floating-point
p.FixedPointSim=1;
if p.FixedPointSim % fixed-point
    p.DT_input = fixdt(1,16,14);
    p.DT_coeff = fixdt(1,18);
    p.DT_filter = fixdt(1,18,15);
    p.DT_power = fixdt(1,18,11);
else
    p.DT_input = 'double';
    p.DT_coeff = 'double';
    p.DT_filter = 'double';
    p.DT_power = 'double';
end

end
