From 6d56372836d7307a182064a8e76c0ea97b06d53a Mon Sep 17 00:00:00 2001 From: Federico Felici <federico.felici@epfl.ch> Date: Wed, 4 Dec 2019 18:38:02 +0100 Subject: [PATCH] LIUQE works now with RT data --- code/classes/SCDclass_expcode.m | 87 ++++++++++++++++++--------------- 1 file changed, 48 insertions(+), 39 deletions(-) diff --git a/code/classes/SCDclass_expcode.m b/code/classes/SCDclass_expcode.m index 49d70e0..12fd2e8 100644 --- a/code/classes/SCDclass_expcode.m +++ b/code/classes/SCDclass_expcode.m @@ -176,8 +176,17 @@ classdef SCDclass_expcode end end - function threadslx = getthreadslx(inode,icpu) - threadslx = sprintf('SCD_rtccode_%02d_%02d',inode,icpu); + function myslx = getslx(inode,icpu) + if nargin==0 + myslx = 'tcv'; + elseif nargin==1 + assert(isnumeric(inode)) + myslx = sprintf('SCD_rtc_%02d',inode); + elseif nargin==2 + myslx = sprintf('SCD_rtccode_%02d_%02d',inode,icpu); + else + error('invalid number of arguments'); + end end function setcachefolder(obj) @@ -580,55 +589,55 @@ classdef SCDclass_expcode fprintf("}\n"); end - function compile(obj) + function compile(~,varargin) + myslx = SCDclass_expcode.getslx(varargin{:}); + fprintf('Compiling %s.slx\n',myslx) try - tcv([],[],[],'compile'); - tcv([],[],[],'term'); + eval(sprintf('%s([],[],[],''compile'')',myslx)); + eval(sprintf('%s([],[],[],''term'')',myslx)); catch ME rethrow(ME) end end - - - function sim(obj) - SCDconf_setCODEconf('configurationSettingsCODEicc') - sim('tcv') + function sim(~,varargin) + SCDconf_setSIMconf + myslx = SCDclass_expcode.getslx(varargin{:}); + fprintf('Simulating %s.slx\n',myslx) + sim(myslx) end - function open(~,node,cpu) - if nargin==1 - openslx = 'tcv'; - elseif nargin==2 - assert(isnumeric(node)) - openslx = sprintf('SCD_rtc_%02d',node); - elseif nargin==3 - openslx = SCDclass_expcode.getthreadslx(node,cpu); - else - error('invalid number of arguments'); - end + function open(~,varargin) + openslx = SCDclass_expcode.getslx(varargin{:}); + fprintf('Spening %s.slx\n',openslx) open(openslx); end - function build(obj) - fprintf('\n=== Building %s ===\n',obj.name); + function build(obj,varargin) - % make list of nodes to build - compileslx_list = cell(0); - for inode=1:8 - nodeinfo=obj.(sprintf('node%02d',inode)); - for icpu = 1:nodeinfo.ncpu - if nodeinfo.cpuactive(icpu) - compileslx_list = [compileslx_list,... - SCDclass_expcode.getthreadslx(node,cpu)]; %#ok<AGROW> - end - end - end - - if isempty(compileslx_list) - fprintf('No active nodes found, no .slx to compile. Done\n'); - return - end + if numel(varargin)==0 + fprintf('\n=== Building all threads for %s ===\n',obj.name); + % make list of nodes to build + compileslx_list = cell(0); + for inode=1:8 + nodeinfo=obj.(sprintf('node%02d',inode)); + for icpu = 1:nodeinfo.ncpu + if nodeinfo.cpuactive(icpu) + compileslx_list = [compileslx_list,... + SCDclass_expcode.getthreadslx(node,cpu)]; %#ok<AGROW> + end + end + end + + if isempty(compileslx_list) + fprintf('No active nodes found, no .slx to compile. Done\n'); + return + end + else + % user passed nodes,threads to compile + myslx = SCDclass_expcode.getslx(varargin{:}); + fprintf('building %s.slx\n',myslx) + end % set CodeGen folder for this expcode (allows fast rebuilding) SCDclass_expcode.setcodegenfolder(obj) -- GitLab