From 8c6395a257a75881668c686b1b513a586a3a24fe Mon Sep 17 00:00:00 2001 From: Tudor Timi Date: Thu, 21 May 2020 18:28:43 +0200 Subject: [PATCH] Add Xcelium simulation setup --- dv/uvm/core_ibex/sim_makefrag_gen.py | 11 ++++++++- dv/uvm/core_ibex/yaml/rtl_simulation.yaml | 30 +++++++++++++++++++++++ util/ibex_config.py | 5 +++- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/dv/uvm/core_ibex/sim_makefrag_gen.py b/dv/uvm/core_ibex/sim_makefrag_gen.py index dddc3567..ea9003d1 100755 --- a/dv/uvm/core_ibex/sim_makefrag_gen.py +++ b/dv/uvm/core_ibex/sim_makefrag_gen.py @@ -65,12 +65,21 @@ def gen_riviera_makefrag(): 'SIM_OPTS += {1}').format(riviera_compile_opts, riviera_sim_opts) +def gen_xlm_makefrag(): + xlm_compile_opts = run_ibex_config('xlm_opts', [ + '--ins_hier_path', 'core_ibex_tb_top', + '--string_define_prefix', 'IBEX_CFG_' + ]) + + return 'COMPILE_OPTS += {0}'.format(xlm_compile_opts) + + def main(): argparser = argparse.ArgumentParser(description=( 'Generates a makefile fragment for use with the Ibex DV makefile that ' 'sets up sim specific variables')) - sim_fns = {'vcs': gen_vcs_makefrag, 'riviera': gen_riviera_makefrag} + sim_fns = {'vcs': gen_vcs_makefrag, 'riviera': gen_riviera_makefrag, 'xlm': gen_xlm_makefrag} argparser.add_argument('sim', help='Name of the simulator', diff --git a/dv/uvm/core_ibex/yaml/rtl_simulation.yaml b/dv/uvm/core_ibex/yaml/rtl_simulation.yaml index 9641a2e9..22fb260b 100644 --- a/dv/uvm/core_ibex/yaml/rtl_simulation.yaml +++ b/dv/uvm/core_ibex/yaml/rtl_simulation.yaml @@ -108,3 +108,33 @@ qrun -simulate -snapshot design_opt -sv_seed -outdir /qrun.out cov_opts: > -coverage -ucdb /cov.ucdb + + +- tool: xlm + compile: + cmd: + - "xrun -64bit + -q + -access +rwc + -f ibex_dv.f + -sv + -uvm + -uvmhome CDNS-1.2 + -define UVM_REGEX_NO_DPI + -elaborate + -l /compile.log + -xmlibdirpath + " + sim: + cmd: > + xrun -64bit + -R + -xmlibdirpath + -l /sim.log + -svseed + -svrnc rand_struct + +UVM_TESTNAME= + +bin= + +ibex_tracer_file_base=/trace_core + -nokey + diff --git a/util/ibex_config.py b/util/ibex_config.py index 58d236e1..913d55b6 100755 --- a/util/ibex_config.py +++ b/util/ibex_config.py @@ -225,7 +225,10 @@ def main(): lambda d, v: None, '/'), SimOpts('riviera_compile_opts', 'Riviera compile', lambda p, v: None, - lambda d, v: '+define+' + d + '=' + v, '/') + lambda d, v: '+define+' + d + '=' + v, '/'), + SimOpts('xlm_opts', 'Xcelium compile', + lambda p, v: '-defparam ' + p + '=' + v, + lambda d, v: '-define ' + d + '=' + v, '.'), ] argparser = argparse.ArgumentParser(description=(