Visible to Intel only — GUID: hco1423076898098
Ixiasoft
Visible to Intel only — GUID: hco1423076898098
Ixiasoft
8.4.3. Example DSP Builder Custom Scripts
For example, in a script that passes the design name (without .mdl extension) as model you can use:
%% Load the model load_system(model); %% Get the Signals block signals = find_system(model, 'type', 'block', 'MaskType', 'DSP Builder Advanced Blockset Signals Block'); if (isempty(signals)) error('The design must contain a Signals Block. '); end; %% Get the Controls block control = find_system(model, 'type', 'block', 'MaskType', 'DSP Builder Advanced Blockset Control Block'); if (isempty(control)) error('The design must contain a Control Block. '); end;%% Example: set the RTL destination directory dest_dir = ['../rtl' num2str(freq)]; dspba.SetRTLDestDir(model, rtlDir);
Similarly you can get and set other parameters. For example, on the Signals block you can set the target clock frequency:
fmax_freq = 300.0; dspba.set_param(signals{1},'freq', fmax_freq);You can also change the following threshold values that are parameters on the Control block:
- distRamThresholdBits
- hardMultiplierThresholdLuts
- mlabThresholdBits
- ramThresholdBits
You can loop over changing these values, change the destination directory, run the Quartus Prime software each time, and perform design space exploration. For example:
%% Run a simulation; which also does the RTL generation. t = sim(model); %% Then run the Quartus Prime compilation flow. [success, details] = run_hw_compilation(<model>, './')%% where details is a struct containing resource and timing information details.Logic, details.Comb_Aluts, details.Mem_Aluts, details.Regs, details.ALM, details.DSP_18bit, details.Mem_Bits, details.M9K, details.M144K, details.IO, details.FMax, details.Slack, details.Required, details.FMax_unres, details.timingpath, details.dir, details.command, details.pwd such that >> disp(details) gives output something like: Logic: 4915 Comb_Aluts: 3213 Mem_Aluts: 377 Regs: 4725 ALM: 2952 DSP_18bit: 68 Mem_Bits: 719278 M9K: 97 M144K: 0 IO: 116 FMax: 220.1700 Slack: 0.4581 Required: 200 FMax_unres: 220.1700 timingpath: [1x4146 char] dir: '../quartus_demo_ifft_4096_for_SPR_FFT_4K_n_2' command: [1x266 char] pwd: 'D:\test\script'
You must previously execute load_system before commands such as find_system and run_hw_compilation work.
A useful set of commands to generate RTL, compile in the Quartus Prime software and return the details is:
load_system(<model>); sim(<model>); [success, details] = run_hw_compilation(<model>, './')