From 3bbaea133226e9900f3cb2322780379dc59ec197 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 14 Apr 2020 08:24:49 -0400 Subject: [PATCH] project directories restructuring --- hw/{rtl => }/Makefile | 0 hw/old_rtl/modelsim/Makefile | 124 - hw/old_rtl/modelsim/cshrc.modelsim | 8 - hw/old_rtl/modelsim/modelsim.mpf | 2275 ----------------- hw/old_rtl/modelsim/vortex_dpi.cpp | 328 --- hw/old_rtl/modelsim/vortex_dpi.h | 8 - hw/old_rtl/modelsim/vortex_tb.v | 160 -- hw/old_rtl/modelsim/work/_info | 1084 -------- hw/old_rtl/modelsim/work/_lib.qdb | Bin 49152 -> 0 bytes hw/old_rtl/modelsim/work/_lib1_0.qdb | Bin 32768 -> 0 bytes hw/old_rtl/modelsim/work/_lib1_0.qpg | Bin 65536 -> 0 bytes hw/old_rtl/modelsim/work/_lib1_0.qtl | Bin 158073 -> 0 bytes hw/old_rtl/modelsim/work/_vmake | 4 - hw/old_rtl/quartus/Makefile | 70 - hw/old_rtl/quartus/VX_gpr_syn.qpf | 30 - hw/old_rtl/quartus/VX_gpr_syn.qsf | 63 - hw/old_rtl/quartus/asm.chg | 1 - hw/old_rtl/quartus/fit.chg | 1 - hw/old_rtl/quartus/map.chg | 1 - hw/old_rtl/quartus/project.tcl | 88 - hw/old_rtl/quartus/smart.log | 27 - hw/old_rtl/quartus/sta.chg | 1 - hw/old_rtl/quartus/syn.chg | 1 - hw/old_rtl/quartus/vortex.ini | 40 - hw/old_rtl/quartus/vortex.sdc | 1 - hw/old_rtl/simulate/VX_define.h | 100 - hw/old_rtl/simulate/ram.h | 245 -- hw/old_rtl/simulate/tb_debug.h | 1 - hw/old_rtl/simulate/test_bench.cpp | 105 - hw/old_rtl/simulate/test_bench.h | 433 ---- hw/rtl/{VX_cache => generic_cache}/VX_bank.v | 0 hw/rtl/{VX_cache => generic_cache}/VX_cache.v | 0 .../VX_cache_config.v | 0 .../VX_cache_core_req_bank_sel.v | 0 .../VX_cache_dfq_queue.v | 0 .../VX_cache_dram_req_arb.v | 0 .../VX_cache_miss_resrv.v | 0 .../VX_cache_req_queue.v | 0 .../VX_cache_wb_sel_merge.v | 0 .../VX_dcache_llv_resp_bank_sel.v | 0 .../VX_fill_invalidator.v | 0 .../VX_mrv_queue.v | 0 .../VX_prefetcher.v | 0 .../VX_snp_fwd_arb.v | 0 .../VX_tag_data_access.v | 0 .../VX_tag_data_structure.v | 0 46 files changed, 5199 deletions(-) rename hw/{rtl => }/Makefile (100%) delete mode 100644 hw/old_rtl/modelsim/Makefile delete mode 100644 hw/old_rtl/modelsim/cshrc.modelsim delete mode 100644 hw/old_rtl/modelsim/modelsim.mpf delete mode 100644 hw/old_rtl/modelsim/vortex_dpi.cpp delete mode 100644 hw/old_rtl/modelsim/vortex_dpi.h delete mode 100644 hw/old_rtl/modelsim/vortex_tb.v delete mode 100644 hw/old_rtl/modelsim/work/_info delete mode 100644 hw/old_rtl/modelsim/work/_lib.qdb delete mode 100644 hw/old_rtl/modelsim/work/_lib1_0.qdb delete mode 100644 hw/old_rtl/modelsim/work/_lib1_0.qpg delete mode 100644 hw/old_rtl/modelsim/work/_lib1_0.qtl delete mode 100644 hw/old_rtl/modelsim/work/_vmake delete mode 100644 hw/old_rtl/quartus/Makefile delete mode 100644 hw/old_rtl/quartus/VX_gpr_syn.qpf delete mode 100644 hw/old_rtl/quartus/VX_gpr_syn.qsf delete mode 100644 hw/old_rtl/quartus/asm.chg delete mode 100644 hw/old_rtl/quartus/fit.chg delete mode 100644 hw/old_rtl/quartus/map.chg delete mode 100644 hw/old_rtl/quartus/project.tcl delete mode 100644 hw/old_rtl/quartus/smart.log delete mode 100644 hw/old_rtl/quartus/sta.chg delete mode 100644 hw/old_rtl/quartus/syn.chg delete mode 100644 hw/old_rtl/quartus/vortex.ini delete mode 100644 hw/old_rtl/quartus/vortex.sdc delete mode 100644 hw/old_rtl/simulate/VX_define.h delete mode 100644 hw/old_rtl/simulate/ram.h delete mode 100644 hw/old_rtl/simulate/tb_debug.h delete mode 100644 hw/old_rtl/simulate/test_bench.cpp delete mode 100644 hw/old_rtl/simulate/test_bench.h rename hw/rtl/{VX_cache => generic_cache}/VX_bank.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_cache.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_cache_config.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_cache_core_req_bank_sel.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_cache_dfq_queue.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_cache_dram_req_arb.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_cache_miss_resrv.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_cache_req_queue.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_cache_wb_sel_merge.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_dcache_llv_resp_bank_sel.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_fill_invalidator.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_mrv_queue.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_prefetcher.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_snp_fwd_arb.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_tag_data_access.v (100%) rename hw/rtl/{VX_cache => generic_cache}/VX_tag_data_structure.v (100%) diff --git a/hw/rtl/Makefile b/hw/Makefile similarity index 100% rename from hw/rtl/Makefile rename to hw/Makefile diff --git a/hw/old_rtl/modelsim/Makefile b/hw/old_rtl/modelsim/Makefile deleted file mode 100644 index 7a3a4efd..00000000 --- a/hw/old_rtl/modelsim/Makefile +++ /dev/null @@ -1,124 +0,0 @@ - - -ALL:sim - -#TOOL INPUT -SRC = \ - vortex_dpi.cpp \ - vortex_tb.v \ -../VX_define.v \ -../VX_define_synth.v \ -../interfaces/VX_branch_response_inter.v \ -../interfaces/VX_csr_req_inter.v \ -../interfaces/VX_csr_wb_inter.v \ -../interfaces/VX_dcache_request_inter.v \ -../interfaces/VX_dcache_response_inter.v \ -../interfaces/VX_dram_req_rsp_inter.v \ -../interfaces/VX_exec_unit_req_inter.v \ -../interfaces/VX_frE_to_bckE_req_inter.v \ -../interfaces/VX_gpr_clone_inter.v \ -../interfaces/VX_gpr_data_inter.v \ -../interfaces/VX_gpr_jal_inter.v \ -../interfaces/VX_gpr_read_inter.v \ -../interfaces/VX_gpr_wspawn_inter.v \ -../interfaces/VX_gpu_inst_req_inter.v \ -../interfaces/VX_icache_request_inter.v \ -../interfaces/VX_icache_response_inter.v \ -../interfaces/VX_inst_exec_wb_inter.v \ -../interfaces/VX_inst_mem_wb_inter.v \ -../interfaces/VX_inst_meta_inter.v \ -../interfaces/VX_jal_response_inter.v \ -../interfaces/VX_join_inter.v \ -../interfaces/VX_lsu_req_inter.v \ -../interfaces/VX_mem_req_inter.v \ -../interfaces/VX_mw_wb_inter.v \ -../interfaces/VX_warp_ctl_inter.v \ -../interfaces/VX_wb_inter.v \ -../interfaces/VX_wstall_inter.v \ -../VX_alu.v \ -../VX_back_end.v \ -../VX_csr_handler.v \ -../VX_csr_wrapper.v \ -../VX_decode.v \ -../VX_dmem_controller.v \ -../VX_execute_unit.v \ -../VX_fetch.v \ -../VX_front_end.v \ -../VX_generic_priority_encoder.v \ -../VX_generic_register.v \ -../VX_generic_stack.v \ -../VX_gpgpu_inst.v \ -../VX_gpr.v \ -../VX_gpr_stage.v \ -../VX_gpr_wrapper.v \ -../VX_inst_multiplex.v \ -../VX_lsu.v \ -../VX_lsu_addr_gen.v \ -../VX_priority_encoder.v \ -../VX_priority_encoder_w_mask.v \ -../VX_scheduler.v \ -../VX_warp.v \ -../VX_countones.v \ -../VX_warp_scheduler.v \ -../VX_writeback.v \ -../Vortex.v \ -../byte_enabled_simple_dual_port_ram.v \ -../cache/VX_Cache_Bank.v \ -../cache/VX_cache_bank_valid.v \ -../cache/VX_cache_data.v \ -../cache/VX_d_cache.v \ -../cache/VX_generic_pe.v \ -../cache/cache_set.v \ -../cache/VX_cache_data_per_index.v \ -../pipe_regs/VX_d_e_reg.v \ -../pipe_regs/VX_f_d_reg.v \ -../shared_memory/VX_bank_valids.v \ -../shared_memory/VX_priority_encoder_sm.v \ -../shared_memory/VX_shared_memory.v \ -../shared_memory/VX_shared_memory_block.v \ -../../models/memory/cln28hpm/rf2_128x128_wm1/rf2_128x128_wm1.v \ -../../models/memory/cln28hpm/rf2_256x128_wm1/rf2_256x128_wm1.v \ -../../models/memory/cln28hpm/rf2_256x19_wm0/rf2_256x19_wm0.v \ -../../models/memory/cln28hpm/rf2_32x128_wm1/rf2_32x128_wm1.v \ -../../models/memory/cln28hpm/rf2_32x19_wm0/rf2_32x19_wm0.v - -# ../../models/memory/cln28hpc/rf2_32x128_wm1/rf2_32x128_wm1.v - -# vortex_dpi.h - - -CMD= \ --do "VoptFlow = 0; \ - vcd file vortex.vcd; \ - vcd add -r /vortex_tb/*; \ - vcd add -r /vortex/*; \ - run -all; \ - quit -f" - - -OPT=-sv -sv12compat - -LIB = vortex_lib - -# LOG=-logfile vortex_tb.log -LOG= - -# setup: source cshrc.modelsim -# vlib - -lib: - vlib vortex_lib - -comp: - vlog $(OPT) -work $(LIB) $(SRC) - # vlog -O0 -dpiheader vortex_dpi.h $(OPT) -work $(LIB) $(SRC) - - -sim: comp - # vsim vortex_tb $(LOG) -c -lib $(LIB) $(CMD) > vortex_sim.log - vsim -novopt vortex_tb $(LOG) -c -lib $(LIB) $(CMD) > vortex_sim.log - - - - - diff --git a/hw/old_rtl/modelsim/cshrc.modelsim b/hw/old_rtl/modelsim/cshrc.modelsim deleted file mode 100644 index 8f9133d7..00000000 --- a/hw/old_rtl/modelsim/cshrc.modelsim +++ /dev/null @@ -1,8 +0,0 @@ - setenv PATH "${PATH}:/tools/mentor/modelsim/ms106a/modeltech/bin" - setenv MTI_VCO_MODE 1 -if (${?LM_LICENSE_FILE}) then - setenv LM_LICENSE_FILE "1717@ece-linlic.ece.gatech.edu:${LM_LICENSE_FILE}" - else - setenv LM_LICENSE_FILE "1717@ece-linlic.ece.gatech.edu" -endif -setenv MGLS_LICENSE_FILE 1717@ece-linlic.ece.gatech.edu \ No newline at end of file diff --git a/hw/old_rtl/modelsim/modelsim.mpf b/hw/old_rtl/modelsim/modelsim.mpf deleted file mode 100644 index b1898d0c..00000000 --- a/hw/old_rtl/modelsim/modelsim.mpf +++ /dev/null @@ -1,2275 +0,0 @@ -; vsim modelsim.ini file, version 10.4 -[Version] -INIVersion = "10.6a" - -; Copyright 1991-2017 Mentor Graphics Corporation -; -; All Rights Reserved. -; -; THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS THE PROPERTY OF -; MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS. -; - -[Library] -std = $MODEL_TECH/../std -ieee = $MODEL_TECH/../ieee -vital2000 = $MODEL_TECH/../vital2000 -; -; VITAL concerns: -; -; The library ieee contains (among other packages) the packages of the -; VITAL 2000 standard. When a design uses VITAL 2000 exclusively, it should use -; the physical library ieee (recommended), or use the physical library -; vital2000, but not both. The design can use logical library ieee and/or -; vital2000 as long as each of these maps to the same physical library, either -; ieee or vital2000. -; -; A design using the 1995 version of the VITAL packages, whether or not -; it also uses the 2000 version of the VITAL packages, must have logical library -; name ieee mapped to physical library vital1995. (A design cannot use library -; vital1995 directly because some packages in this library use logical name ieee -; when referring to the other packages in the library.) The design source -; should use logical name ieee when referring to any packages there except the -; VITAL 2000 packages. Any VITAL 2000 present in the design must use logical -; name vital2000 (mapped to physical library vital2000) to refer to those -; packages. -; ieee = $MODEL_TECH/../vital1995 -; -; For compatiblity with previous releases, logical library name vital2000 maps -; to library vital2000 (a different library than library ieee, containing the -; same packages). -; A design should not reference VITAL from both the ieee library and the -; vital2000 library because the vital packages are effectively different. -; A design that references both the ieee and vital2000 libraries must have -; both logical names ieee and vital2000 mapped to the same library, either of -; these: -; $MODEL_TECH/../ieee -; $MODEL_TECH/../vital2000 -; -verilog = $MODEL_TECH/../verilog -std_developerskit = $MODEL_TECH/../std_developerskit -synopsys = $MODEL_TECH/../synopsys -modelsim_lib = $MODEL_TECH/../modelsim_lib -sv_std = $MODEL_TECH/../sv_std -mtiAvm = $MODEL_TECH/../avm -mtiRnm = $MODEL_TECH/../rnm -mtiOvm = $MODEL_TECH/../ovm-2.1.2 -mtiUvm = $MODEL_TECH/../uvm-1.1d -mtiUPF = $MODEL_TECH/../upf_lib -mtiPA = $MODEL_TECH/../pa_lib -floatfixlib = $MODEL_TECH/../floatfixlib -mc2_lib = $MODEL_TECH/../mc2_lib -osvvm = $MODEL_TECH/../osvvm - -; added mapping for ADMS -mgc_ams = $MODEL_TECH/../mgc_ams -ieee_env = $MODEL_TECH/../ieee_env - -;vhdl_psl_checkers = $MODEL_TECH/../vhdl_psl_checkers // Source files only for this release -;verilog_psl_checkers = $MODEL_TECH/../verilog_psl_checkers // Source files only for this release -;mvc_lib = $MODEL_TECH/../mvc_lib -infact = $MODEL_TECH/../infact -vhdlopt_lib = $MODEL_TECH/../vhdlopt_lib - -; Automatically perform logical->physical mapping for physical libraries that -; appear in -L/-Lf options with filesystem path delimiters (e.g. '.' or '/'). -; The tail of the filesystem path name is chosen as the logical library name. -; For example, in the command “vopt -L ./path/to/lib1 –o opttop top”, -; vopt automatically performs the mapping “lib1 -> ./path/to/lib1”. -; See the User Manual for more details. -; -; AutoLibMapping = 0 - -work = work -[DefineOptionset] -; Define optionset entries for the various compilers, vmake, and vsim. -; These option sets can be used with the "-optionset " syntax. -; i.e. -; vlog -optionset COMPILEDEBUG top.sv -; vsim -optionset UVMDEBUG my_top -; -; Following are some useful examples. - -; define a vsim optionset for uvm debugging -UVMDEBUG = -uvmcontrol=all -msgmode both -displaymsgmode both -classdebug -onfinish stop - -; define a vopt optionset for debugging -VOPTDEBUG = +acc -debugdb - - -[vcom] -; VHDL93 variable selects language version as the default. -; Default is VHDL-2002. -; Value of 0 or 1987 for VHDL-1987. -; Value of 1 or 1993 for VHDL-1993. -; Default or value of 2 or 2002 for VHDL-2002. -; Value of 3 or 2008 for VHDL-2008 -; Value of 4 or ams99 for VHDL-AMS-1999 -; Value of 5 or ams07 for VHDL-AMS-2007 -VHDL93 = 2002 - -; Ignore VHDL-2008 declaration of REAL_VECTOR in package STANDARD. Default is off. -; ignoreStandardRealVector = 1 - -; Show source line containing error. Default is off. -; Show_source = 1 - -; Turn off unbound-component warnings. Default is on. -; Show_Warning1 = 0 - -; Turn off process-without-a-wait-statement warnings. Default is on. -; Show_Warning2 = 0 - -; Turn off null-range warnings. Default is on. -; Show_Warning3 = 0 - -; Turn off no-space-in-time-literal warnings. Default is on. -; Show_Warning4 = 0 - -; Turn off multiple-drivers-on-unresolved-signal warnings. Default is on. -; Show_Warning5 = 0 - -; Turn off optimization for IEEE std_logic_1164 package. Default is on. -; Optimize_1164 = 0 - -; Enable compiler statistics. Specify one or more arguments: -; [all,none,time,cmd,msg,perf,verbose,list] -; Add '-' to disable specific statistics. Default is [time,cmd,msg]. -; Stats = time,cmd,msg - -; Turn on resolving of ambiguous function overloading in favor of the -; "explicit" function declaration (not the one automatically created by -; the compiler for each type declaration). Default is off. -; The .ini file has Explicit enabled so that std_logic_signed/unsigned -; will match the behavior of synthesis tools. -Explicit = 1 - -; Turn off acceleration of the VITAL packages. Default is to accelerate. -; NoVital = 1 - -; Turn off VITAL compliance checking. Default is checking on. -; NoVitalCheck = 1 - -; Ignore VITAL compliance checking errors. Default is to not ignore. -; IgnoreVitalErrors = 1 - -; Turn off VITAL compliance checking warnings. Default is to show warnings. -; Show_VitalChecksWarnings = 0 - -; Turn off PSL assertion warning messages. Default is to show warnings. -; Show_PslChecksWarnings = 0 - -; Enable parsing of embedded PSL assertions. Default is enabled. -; EmbeddedPsl = 0 - -; Keep silent about case statement static warnings. -; Default is to give a warning. -; NoCaseStaticError = 1 - -; Keep silent about warnings caused by aggregates that are not locally static. -; Default is to give a warning. -; NoOthersStaticError = 1 - -; Treat as errors: -; case statement static warnings -; warnings caused by aggregates that are not locally static -; Overrides NoCaseStaticError, NoOthersStaticError settings. -; PedanticErrors = 1 - -; Turn off inclusion of debugging info within design units. -; Default is to include debugging info. -; NoDebug = 1 - -; Turn off "Loading..." messages. Default is messages on. -; Quiet = 1 - -; Turn on some limited synthesis rule compliance checking. Checks only: -; -- signals used (read) by a process must be in the sensitivity list -; CheckSynthesis = 1 - -; Activate optimizations on expressions that do not involve signals, -; waits, or function/procedure/task invocations. Default is off. -; ScalarOpts = 1 - -; Turns on lint-style checking. -; Show_Lint = 1 - -; Require the user to specify a configuration for all bindings, -; and do not generate a compile time default binding for the -; component. This will result in an elaboration error of -; 'component not bound' if the user fails to do so. Avoids the rare -; issue of a false dependency upon the unused default binding. -; RequireConfigForAllDefaultBinding = 1 - -; Perform default binding at compile time. -; Default is to do default binding at load time. -; BindAtCompile = 1; - -; Inhibit range checking on subscripts of arrays. Range checking on -; scalars defined with subtypes is inhibited by default. -; NoIndexCheck = 1 - -; Inhibit range checks on all (implicit and explicit) assignments to -; scalar objects defined with subtypes. -; NoRangeCheck = 1 - -; Set the prefix to be honored for synthesis/coverage pragma recognition. -; Default is "". -; AddPragmaPrefix = "" - -; Ignore synthesis and coverage pragmas with this prefix. -; Default is "". -; IgnorePragmaPrefix = "" - -; Turn on code coverage in VHDL design units. Default is off. -; Coverage = sbceft - -; Turn off code coverage in VHDL subprograms. Default is on. -; CoverSub = 0 - -; Automatically exclude VHDL case statement OTHERS choice branches. -; This includes OTHERS choices in selected signal assigment statements. -; Default is to not exclude. -; CoverExcludeDefault = 1 - -; Control compiler and VOPT optimizations that are allowed when -; code coverage is on. Refer to the comment for this in the [vlog] area. -; CoverOpt = 3 - -; Turn on or off clkOpt optimization for code coverage. Default is on. -; CoverClkOpt = 1 - -; Turn on or off clkOpt optimization builtins for code coverage. Default is on. -; CoverClkOptBuiltins = 0 - -; Inform code coverage optimizations to respect VHDL 'H' and 'L' -; values on signals in conditions and expressions, and to not automatically -; convert them to '1' and '0'. Default is to not convert. -; CoverRespectHandL = 0 - -; Increase or decrease the maximum number of rows allowed in a UDP table -; implementing a VHDL condition coverage or expression coverage expression. -; More rows leads to a longer compile time, but more expressions covered. -; CoverMaxUDPRows = 192 - -; Increase or decrease the maximum number of input patterns that are present -; in FEC table. This leads to a longer compile time with more expressions -; covered with FEC metric. -; CoverMaxFECRows = 192 - -; Increase or decrease the limit on the size of expressions and conditions -; considered for expression and condition coverages. Higher FecUdpEffort leads -; to higher compile, optimize and simulation time, but more expressions and -; conditions are considered for coverage in the design. FecUdpEffort can -; be set to a number ranging from 1 (low) to 3 (high), defined as: -; 1 - (low) Only small expressions and conditions considered for coverage. -; 2 - (medium) Bigger expressions and conditions considered for coverage. -; 3 - (high) Very large expressions and conditions considered for coverage. -; The default setting is 1 (low). -; FecUdpEffort = 1 - -; Enable or disable Focused Expression Coverage analysis for conditions and -; expressions. Focused Expression Coverage data is provided by default when -; expression and/or condition coverage is active. -; CoverFEC = 0 - -; Enable or disable UDP Coverage analysis for conditions and expressions. -; UDP Coverage data is disabled by default when expression and/or condition -; coverage is active. -; CoverUDP = 1 - -; Enable or disable Rapid Expression Coverage mode for conditions and expressions. -; Disabling this would convert non-masking conditions in FEC tables to matching -; input patterns. -; CoverREC = 1 - -; Enable or disable bit-blasting multi-bit operands of reduction prefix expressions -; for expression/condition coverage. -; NOTE: Enabling this may have a negative impact on simulation performance. -; CoverExpandReductionPrefix = 0 - -; Enable or disable short circuit evaluation of conditions and expressions when -; condition or expression coverage is active. Short circuit evaluation is enabled -; by default. -; CoverShortCircuit = 0 - -; Enable code coverage reporting of code that has been optimized away. -; The default is not to report. -; CoverReportCancelled = 1 - -; Enable deglitching of code coverage in combinatorial, non-clocked, processes. -; Default is no deglitching. -; CoverDeglitchOn = 1 - -; Control the code coverage deglitching period. A period of 0, eliminates delta -; cycle glitches. The value of CoverDeglitchPeriod needs to be either be 0 or a -; time string that includes time units. Examples: 0 or 10.0ps or "10.0 ps". -; CoverDeglitchPeriod = 0 - -; Use this directory for compiler temporary files instead of "work/_temp" -; CompilerTempDir = /tmp - -; Set this to cause the compilers to force data to be committed to disk -; when the files are closed. -; SyncCompilerFiles = 1 - -; Add VHDL-AMS declarations to package STANDARD -; Default is not to add -; AmsStandard = 1 - -; Range and length checking will be performed on array indices and discrete -; ranges, and when violations are found within subprograms, errors will be -; reported. Default is to issue warnings for violations, because subprograms -; may not be invoked. -; NoDeferSubpgmCheck = 0 - -; Turn ON detection of FSMs having single bit current state variable. -; FsmSingle = 1 - -; Turn off reset state transitions in FSM. -; FsmResetTrans = 0 - -; Turn ON detection of FSM Implicit Transitions. -; FsmImplicitTrans = 1 - -; Controls whether or not to show immediate assertions with constant expressions -; in GUI/report/UCDB etc. By default, immediate assertions with constant -; expressions are shown in GUI/report/UCDB etc. This does not affect -; evaluation of immediate assertions. -; ShowConstantImmediateAsserts = 0 - -; Controls how VHDL basic identifiers are stored with the design unit. -; Does not make the language case-sensitive, affects only how declarations -; declared with basic identifiers have their names stored and printed -; (in the GUI, examine, etc.). -; Default is to preserve the case as originally depicted in the VHDL source. -; Value of 0 indicates to change all basic identifiers to lower case. -; PreserveCase = 0 - -; For Configuration Declarations, controls the effect that USE clauses have -; on visibility inside the configuration items being configured. If 1 -; (the default), then use pre-10.0 behavior. If 0, then for stricter LRM-compliance, -; extend the visibility of objects made visible through USE clauses into nested -; component configurations. -; OldVHDLConfigurationVisibility = 0 - -; Allows VHDL configuration declarations to be in a different library from -; the corresponding configured entity. Default is to not allow this for -; stricter LRM-compliance. -; SeparateConfigLibrary = 1; - -; Determine how mode OUT subprogram parameters of type array and record are treated. -; If 0 (the default), then only VHDL 2008 will do this initialization. -; If 1, always initialize the mode OUT parameter to its default value. -; If 2, do not initialize the mode OUT out parameter. -; Note that prior to release 10.1, all language versions did not initialize mode -; OUT array and record type parameters, unless overridden here via this mechanism. -; In release 10.1 and later, only files compiled with VHDL 2008 will cause this -; initialization, unless overridden here. -; InitOutCompositeParam = 0 - -; Generate symbols debugging database in only some special cases to save on -; the number of files in the library. For other design-units, this database is -; generated on-demand in vsim. -; Default is to to generate debugging database for all design-units. -; SmartDbgSym = 1 - -; Enable or disable automatic creation of missing libraries. -; Default is 1 (enabled) -; CreateLib = 1 - -[vlog] -; Turn off inclusion of debugging info within design units. -; Default is to include debugging info. -; NoDebug = 1 - -; Turn on `protect compiler directive processing. -; Default is to ignore `protect directives. -; Protect = 1 - -; Turn off "Loading..." messages. Default is messages on. -; Quiet = 1 - -; Turn on Verilog hazard checking (order-dependent accessing of global vars). -; Default is off. -; Hazard = 1 - -; Turn on converting regular Verilog identifiers to uppercase. Allows case -; insensitivity for module names. Default is no conversion. -; UpCase = 1 - -; Activate optimizations on expressions that do not involve signals, -; waits, or function/procedure/task invocations. Default is off. -; ScalarOpts = 1 - -; Turns on lint-style checking. -; Show_Lint = 1 - -; Show source line containing error. Default is off. -; Show_source = 1 - -; Turn on bad option warning. Default is off. -; Show_BadOptionWarning = 1 - -; Revert back to IEEE 1364-1995 syntax, default is 0 (off). -; vlog95compat = 1 - -; Turn off PSL warning messages. Default is to show warnings. -; Show_PslChecksWarnings = 0 - -; Enable parsing of embedded PSL assertions. Default is enabled. -; EmbeddedPsl = 0 - -; Enable compiler statistics. Specify one or more arguments: -; [all,none,time,cmd,msg,perf,verbose,list,kb] -; Add '-' to disable specific statistics. Default is [time,cmd,msg]. -; Stats = time,cmd,msg - -; Set the threshold for automatically identifying sparse Verilog memories. -; A memory with total size in bytes equal to or more than the sparse memory -; threshold gets marked as sparse automatically, unless specified otherwise -; in source code or by the +nosparse commandline option of vlog or vopt. -; The default is 1M. (i.e. memories with total size equal -; to or greater than 1Mb are marked as sparse) -; SparseMemThreshold = 1048576 - -; Set the prefix to be honored for synthesis and coverage pragma recognition. -; Default is "". -; AddPragmaPrefix = "" - -; Ignore synthesis and coverage pragmas with this prefix. -; Default is "". -; IgnorePragmaPrefix = "" - -; Set the option to treat all files specified in a vlog invocation as a -; single compilation unit. The default value is set to 0 which will treat -; each file as a separate compilation unit as specified in the P1800 draft standard. -; MultiFileCompilationUnit = 1 - -; Turn on code coverage in Verilog design units. Default is off. -; Coverage = sbceft - -; Automatically exclude Verilog case statement default branches. -; Default is to not automatically exclude defaults. -; CoverExcludeDefault = 1 - -; Increase or decrease the maximum number of rows allowed in a UDP table -; implementing a VHDL condition coverage or expression coverage expression. -; More rows leads to a longer compile time, but more expressions covered. -; CoverMaxUDPRows = 192 - -; Increase or decrease the maximum number of input patterns that are present -; in FEC table. This leads to a longer compile time with more expressions -; covered with FEC metric. -; CoverMaxFECRows = 192 - -; Increase or decrease the limit on the size of expressions and conditions -; considered for expression and condition coverages. Higher FecUdpEffort leads -; to higher compile, optimize and simulation time, but more expressions and -; conditions are considered for coverage in the design. FecUdpEffort can -; be set to a number ranging from 1 (low) to 3 (high), defined as: -; 1 - (low) Only small expressions and conditions considered for coverage. -; 2 - (medium) Bigger expressions and conditions considered for coverage. -; 3 - (high) Very large expressions and conditions considered for coverage. -; The default setting is 1 (low). -; FecUdpEffort = 1 - -; Enable or disable Focused Expression Coverage analysis for conditions and -; expressions. Focused Expression Coverage data is provided by default when -; expression and/or condition coverage is active. -; CoverFEC = 0 - -; Enable or disable UDP Coverage analysis for conditions and expressions. -; UDP Coverage data is disabled by default when expression and/or condition -; coverage is active. -; CoverUDP = 1 - -; Enable or disable Rapid Expression Coverage mode for conditions and expressions. -; Disabling this would convert non-masking conditions in FEC tables to matching -; input patterns. -; CoverREC = 1 - -; Enable or disable bit-blasting multi-bit operands of reduction prefix expressions -; for expression/condition coverage. -; NOTE: Enabling this may have a negative impact on simulation performance. -; CoverExpandReductionPrefix = 0 - -; Enable or disable short circuit evaluation of conditions and expressions when -; condition or expression coverage is active. Short circuit evaluation is enabled -; by default. -; CoverShortCircuit = 0 - -; Enable deglitching of code coverage in combinatorial, non-clocked, processes. -; Default is no deglitching. -; CoverDeglitchOn = 1 - -; Control the code coverage deglitching period. A period of 0, eliminates delta -; cycle glitches. The value of CoverDeglitchPeriod needs to be either be 0 or a -; time string that includes time units. Examples: 0 or 10.0ps or "10.0 ps". -; CoverDeglitchPeriod = 0 - -; Turn on code coverage in VLOG `celldefine modules, modules containing -; specify blocks, and modules included using vlog -v and -y. Default is off. -; CoverCells = 1 - -; Enable code coverage reporting of code that has been optimized away. -; The default is not to report. -; CoverReportCancelled = 1 - -; Control compiler and VOPT optimizations that are allowed when -; code coverage is on. This is a number from 0 to 5, with the following -; meanings (the default is 3): -; 5 -- All allowable optimizations are on. -; 4 -- Turn off removing unreferenced code. -; 3 -- Turn off process, always block and if statement merging. -; 2 -- Turn off expression optimization, converting primitives -; to continuous assignments, VHDL subprogram inlining. -; and VHDL clkOpt (converting FF's to builtins). -; 1 -- Turn off continuous assignment optimizations and clock suppression. -; 0 -- Turn off Verilog module inlining and VHDL arch inlining. -; HOWEVER, if fsm coverage is turned on, optimizations will be forced to -; level 3, with also turning off converting primitives to continuous assigns. -; CoverOpt = 3 - -; Specify the override for the default value of "cross_num_print_missing" -; option for the Cross in Covergroups. If not specified then LRM default -; value of 0 (zero) is used. This is a compile time option. -; SVCrossNumPrintMissingDefault = 0 - -; Setting following to 1 would cause creation of variables which -; would represent the value of Coverpoint expressions. This is used -; in conjunction with "SVCoverpointExprVariablePrefix" option -; in the modelsim.ini -; EnableSVCoverpointExprVariable = 0 - -; Specify the override for the prefix used in forming the variable names -; which represent the Coverpoint expressions. This is used in conjunction with -; "EnableSVCoverpointExprVariable" option of the modelsim.ini -; The default prefix is "expr". -; The variable name is -; variable name => _ -; SVCoverpointExprVariablePrefix = expr - -; Override for the default value of the SystemVerilog covergroup, -; coverpoint, and cross option.goal (defined to be 100 in the LRM). -; NOTE: It does not override specific assignments in SystemVerilog -; source code. NOTE: The modelsim.ini variable "SVCovergroupGoal" -; in the [vsim] section can override this value. -; SVCovergroupGoalDefault = 100 - -; Override for the default value of the SystemVerilog covergroup, -; coverpoint, and cross type_option.goal (defined to be 100 in the LRM) -; NOTE: It does not override specific assignments in SystemVerilog -; source code. NOTE: The modelsim.ini variable "SVCovergroupTypeGoal" -; in the [vsim] section can override this value. -; SVCovergroupTypeGoalDefault = 100 - -; Specify the override for the default value of "strobe" option for the -; Covergroup Type. This is a compile time option which forces "strobe" to -; a user specified default value and supersedes SystemVerilog specified -; default value of '0'(zero). NOTE: This can be overriden by a runtime -; modelsim.ini variable "SVCovergroupStrobe" in the [vsim] section. -; SVCovergroupStrobeDefault = 0 - -; Specify the override for the default value of "per_instance" option for the -; Covergroup variables. This is a compile time option which forces "per_instance" -; to a user specified default value and supersedes SystemVerilog specified -; default value of '0'(zero). -; SVCovergroupPerInstanceDefault = 0 - -; Specify the override for the default value of "get_inst_coverage" option for the -; Covergroup variables. This is a compile time option which forces -; "get_inst_coverage" to a user specified default value and supersedes -; SystemVerilog specified default value of '0'(zero). -; SVCovergroupGetInstCoverageDefault = 0 - -; -; A space separated list of resource libraries that contain precompiled -; packages. The behavior is identical to using the "-L" switch. -; -; LibrarySearchPath = [ ...] -LibrarySearchPath = mtiAvm mtiRnm mtiOvm mtiUvm mtiUPF infact - -; The behavior is identical to the "-mixedansiports" switch. Default is off. -; MixedAnsiPorts = 1 - -; Enable SystemVerilog 3.1a $typeof() function. Default is off. -; EnableTypeOf = 1 - -; Only allow lower case pragmas. Default is disabled. -; AcceptLowerCasePragmaOnly = 1 - -; Set the maximum depth permitted for a recursive include file nesting. -; IncludeRecursionDepthMax = 5 - -; Turn ON detection of FSMs having single bit current state variable. -; FsmSingle = 1 - -; Turn off reset state transitions in FSM. -; FsmResetTrans = 0 - -; Turn off detections of FSMs having x-assignment. -; FsmXAssign = 0 - -; Turn ON detection of FSM Implicit Transitions. -; FsmImplicitTrans = 1 - -; List of file suffixes which will be read as SystemVerilog. White space -; in extensions can be specified with a back-slash: "\ ". Back-slashes -; can be specified with two consecutive back-slashes: "\\"; -; SvFileSuffixes = sv svp svh - -; This setting is the same as the vlog -sv command line switch. -; Enables SystemVerilog features and keywords when true (1). -; When false (0), the rules of IEEE Std 1364-2001 are followed and -; SystemVerilog keywords are ignored. -; Svlog = 0 - -; Prints attribute placed upon SV packages during package import -; when true (1). The attribute will be ignored when this -; entry is false (0). The attribute name is "package_load_message". -; The value of this attribute is a string literal. -; Default is true (1). -; PrintSVPackageLoadingAttribute = 1 - -; Do not show immediate assertions with constant expressions in -; GUI/reports/UCDB etc. By default immediate assertions with constant -; expressions are shown in GUI/reports/UCDB etc. This does not affect -; evaluation of immediate assertions. -; ShowConstantImmediateAsserts = 0 - -; Controls if untyped parameters that are initialized with values greater -; than 2147483647 are mapped to generics of type INTEGER or ignored. -; If mapped to VHDL Integers, values greater than 2147483647 -; are mapped to negative values. -; Default is to map these parameter to generic of type INTEGER -; ForceUnsignedToVHDLInteger = 1 - -; Enable AMS wreal (wired real) extensions. Default is 0. -; WrealType = 1 - -; Controls SystemVerilog Language Extensions. These options enable -; some non-LRM compliant behavior. -; SvExtensions = [+|-][,[+|-]*] - -; Generate symbols debugging database in only some special cases to save on -; the number of files in the library. For other design-units, this database is -; generated on-demand in vsim. -; Default is to to generate debugging database for all design-units. -; SmartDbgSym = 1 - -; Controls how $unit library entries are named. Valid options are: -; "file" (generate name based on the first file on the command line) -; "du" (generate name based on first design unit following an item -; found in $unit scope) -; CUAutoName = file - -; Enable or disable automatic creation of missing libraries. -; Default is 1 (enabled) -; CreateLib = 1 - -[sccom] -; Enable use of SCV include files and library. Default is off. -; UseScv = 1 - -; Add C++ compiler options to the sccom command line by using this variable. -; CppOptions = -g - -; Use custom C++ compiler located at this path rather than the default path. -; The path should point directly at a compiler executable. -; CppPath = /usr/bin/g++ - -; Specify the compiler version from the list of support GNU compilers. -; examples 4.3.3, 4.5.0 -; CppInstall = 4.5.0 - -; Enable verbose messages from sccom. Default is off. -; SccomVerbose = 1 - -; sccom logfile. Default is no logfile. -; SccomLogfile = sccom.log - -; Enable use of SC_MS include files and library. Default is off. -; UseScMs = 1 - -; Use SystemC-2.2 instead of the default SystemC-2.3. Default is off. -; Sc22Mode = 1 - -; Enable compiler statistics. Specify one or more arguments: -; [all,none,time,cmd,msg,perf,verbose,list,kb] -; Add '-' to disable specific statistics. Default is [time,cmd,msg]. -; Stats = time,cmd,msg - -; Enable or disable automatic creation of missing libraries. -; Default is 1 (enabled) -; CreateLib = 1 - -; Enable use of UVMC library. Default is off. -; UseUvmc = 1 - -[vopt] -; Turn on code coverage in vopt. Default is off. -; Coverage = sbceft - -; Control compiler optimizations that are allowed when -; code coverage is on. Refer to the comment for this in the [vlog] area. -; CoverOpt = 3 - -; Controls set of CoverConstructs that are being considered for Coverage -; Collection. -; Some of Valid options are: default,set1,set2 -; Covermode = default - -; Controls set of HDL cover constructs that would be considered(or not considered) -; for Coverage Collection. (Default corresponds to covermode default). -; Some of Valid options are: "ca", "citf", "cifl", "tcint", "fsmqs". -; Coverconstruct = noca,nocitf,nofsmtf,nofsmds,noctes,nocicl,nocprc,nocfl,nofsmup,nocifl,nocpm,notcint,nocpkg,nocsva - -; Increase or decrease the maximum number of rows allowed in a UDP table -; implementing a VHDL condition coverage or expression coverage expression. -; More rows leads to a longer compile time, but more expressions covered. -; CoverMaxUDPRows = 192 - -; Increase or decrease the maximum number of input patterns that are present -; in FEC table. This leads to a longer compile time with more expressions -; covered with FEC metric. -; CoverMaxFECRows = 192 - -; Increase or decrease the limit on the size of expressions and conditions -; considered for expression and condition coverages. Higher FecUdpEffort leads -; to higher compile, optimize and simulation time, but more expressions and -; conditions are considered for coverage in the design. FecUdpEffort can -; be set to a number ranging from 1 (low) to 3 (high), defined as: -; 1 - (low) Only small expressions and conditions considered for coverage. -; 2 - (medium) Bigger expressions and conditions considered for coverage. -; 3 - (high) Very large expressions and conditions considered for coverage. -; The default setting is 1 (low). -; FecUdpEffort = 1 - -; Enable code coverage reporting of code that has been optimized away. -; The default is not to report. -; CoverReportCancelled = 1 - -; Enable deglitching of code coverage in combinatorial, non-clocked, processes. -; Default is no deglitching. -; CoverDeglitchOn = 1 - -; Enable compiler statistics. Specify one or more arguments: -; [all,none,time,cmd,msg,perf,verbose,list,kb] -; Add '-' to disable specific statistics. Default is [time,cmd,msg]. -; Stats = time,cmd,msg - -; Control the code coverage deglitching period. A period of 0, eliminates delta -; cycle glitches. The value of CoverDeglitchPeriod needs to be either be 0 or a -; time string that includes time units. Examples: 0 or 10.0ps or "10.0 ps". -; CoverDeglitchPeriod = 0 - -; Do not show immediate assertions with constant expressions in -; GUI/reports/UCDB etc. By default immediate assertions with constant -; expressions are shown in GUI/reports/UCDB etc. This does not affect -; evaluation of immediate assertions. -; ShowConstantImmediateAsserts = 0 - -; Set the maximum number of iterations permitted for a generate loop. -; Restricting this permits the implementation to recognize infinite -; generate loops. -; GenerateLoopIterationMax = 100000 - -; Set the maximum depth permitted for a recursive generate instantiation. -; Restricting this permits the implementation to recognize infinite -; recursions. -; GenerateRecursionDepthMax = 200 - -; Set the number of processes created during the code generation phase. -; By default a heuristic is used to set this value. This may be set to 0 -; to disable this feature completely. -; ParallelJobs = 0 - -; Controls SystemVerilog Language Extensions. These options enable -; some non-LRM compliant behavior. -; SvExtensions = [+|-][,[+|-]*] - -; Load the specified shared objects with the RTLD_GLOBAL flag. -; This gives global visibility to all symbols in the shared objects, -; meaning that subsequently loaded shared objects can bind to symbols -; in the global shared objects. The list of shared objects should -; be whitespace delimited. This option is not supported on the -; Windows or AIX platforms. -; GlobalSharedObjectList = example1.so example2.so example3.so - -; Disable SystemVerilog elaboration system task messages -; IgnoreSVAInfo = 1 -; IgnoreSVAWarning = 1 -; IgnoreSVAError = 1 -; IgnoreSVAFatal = 1 - -; Enable or disable automatic creation of missing libraries. -; Default is 1 (enabled) -; CreateLib = 1 - - -[vsim] -; vopt flow -; Set to turn on automatic optimization of a design. -; Default is on -VoptFlow = 1 - -; Simulator resolution -; Set to fs, ps, ns, us, ms, or sec with optional prefix of 1, 10, or 100. -Resolution = ns - -; Disable certain code coverage exclusions automatically. -; Assertions and FSM are exluded from the code coverage by default -; Set AutoExclusionsDisable = fsm to enable code coverage for fsm -; Set AutoExclusionsDisable = assertions to enable code coverage for assertions -; Set AutoExclusionsDisable = all to enable code coverage for all the automatic exclusions -; Or specify comma or space separated list -;AutoExclusionsDisable = fsm,assertions - -; User time unit for run commands -; Set to default, fs, ps, ns, us, ms, or sec. The default is to use the -; unit specified for Resolution. For example, if Resolution is 100ps, -; then UserTimeUnit defaults to ps. -; Should generally be set to default. -UserTimeUnit = default - -; Default run length -RunLength = 100 - -; Maximum iterations that can be run without advancing simulation time -IterationLimit = 10000000 - -; Specify libraries to be searched for precompiled modules -; LibrarySearchPath = [ ...] - -; Set XPROP assertion fail limit. Default is 5. -; Any positive integer, -1 for infinity. -; XpropAssertionLimit = 5 - -; Control PSL and Verilog Assume directives during simulation -; Set SimulateAssumeDirectives = 0 to disable assume being simulated as asserts -; Set SimulateAssumeDirectives = 1 to enable assume simulation as asserts -; SimulateAssumeDirectives = 1 - -; Control the simulation of PSL and SVA -; These switches can be overridden by the vsim command line switches: -; -psl, -nopsl, -sva, -nosva. -; Set SimulatePSL = 0 to disable PSL simulation -; Set SimulatePSL = 1 to enable PSL simulation (default) -; SimulatePSL = 1 -; Set SimulateSVA = 0 to disable SVA simulation -; Set SimulateSVA = 1 to enable concurrent SVA simulation (default) -; SimulateSVA = 1 - -; Control SVA and VHDL immediate assertion directives during simulation -; Set SimulateImmedAsserts = 0 to disable simulation of immediate asserts -; Set SimulateImmedAsserts = 1 to enable simulation of immediate asserts -; SimulateImmedAsserts = 1 - -; License feature mappings for Verilog and VHDL -; qhsimvh Single language VHDL license -; qhsimvl Single language Verilog license -; msimhdlsim Language neutral license for either Verilog or VHDL -; msimhdlmix Second language only, language neutral license for either -; Verilog or VHDL -; -; Directives to license manager can be set either as single value or as -; space separated multi-values: -; vhdl Immediately checkout and hold a VHDL license (i.e., one of -; qhsimvh, msimhdlsim, or msimhdlmix) -; vlog Immediately checkout and hold a Verilog license (i.e., one of -; qhsimvl, msimhdlsim, or msimhdlmix) -; plus Immediately checkout and hold a VHDL license and a Verilog license -; noqueue Do not wait in the license queue when a license is not available -; viewsim Try for viewer license but accept simulator license(s) instead -; of queuing for viewer license (PE ONLY) -; noviewer Disable checkout of msimviewer license feature (PE ONLY) -; noslvhdl Disable checkout of qhsimvh license feature -; noslvlog Disable checkout of qhsimvl license feature -; nomix Disable checkout of msimhdlmix license feature -; nolnl Disable checkout of msimhdlsim license feature -; mixedonly Disable checkout of qhsimvh and qhsimvl license features -; lnlonly Disable checkout of qhsimvh,qhsimvl, and msimhdlmix license features -; -; Examples (remove ";" comment character to activate licensing directives): -; Single directive: -; License = plus -; Multi-directive (Note: space delimited directives): -; License = noqueue plus - -; Severity level of a VHDL assertion message or of a SystemVerilog severity system task -; which will cause a running simulation to stop. -; VHDL assertions and SystemVerilog severity system task that occur with the -; given severity or higher will cause a running simulation to stop. -; This value is ignored during elaboration. -; 0 = Note 1 = Warning 2 = Error 3 = Failure 4 = Fatal -BreakOnAssertion = 3 - -; Severity level of a tool message which will cause a running simulation to -; stop. This value is ignored during elaboration. Default is to not break. -; 0 = Note 1 = Warning 2 = Error 3 = Fatal -;BreakOnMessage = 2 - -; The class debug feature enables more visibility and tracking of class instances -; during simulation. By default this feature is disabled (0). To enable this -; feature set ClassDebug to 1. -; ClassDebug = 1 - -; Message Format conversion specifications: -; %S - Severity Level of message/assertion -; %R - Text of message -; %T - Time of message -; %D - Delta value (iteration number) of Time -; %K - Kind of path: Instance/Region/Signal/Process/Foreign Process/Unknown/Protected -; %i - Instance/Region/Signal pathname with Process name (if available) -; %I - shorthand for one of these: -; " %K: %i" -; " %K: %i File: %F" (when path is not Process or Signal) -; except that the %i in this case does not report the Process name -; %O - Process name -; %P - Instance/Region path without leaf process -; %F - File name -; %L - Line number; if assertion message, then line number of assertion or, if -; assertion is in a subprogram, line from which the call is made -; %u - Design unit name in form library.primary -; %U - Design unit name in form library.primary(secondary) -; %% - The '%' character itself -; -; If specific format for Severity Level is defined, use that format. -; Else, for a message that occurs during elaboration: -; -- Failure/Fatal message in VHDL region that is not a Process, and in -; certain non-VHDL regions, uses MessageFormatBreakLine; -; -- Failure/Fatal message otherwise uses MessageFormatBreak; -; -- Note/Warning/Error message uses MessageFormat. -; Else, for a message that occurs during runtime and triggers a breakpoint because -; of the BreakOnAssertion setting: -; -- if in a VHDL region that is not a Process, uses MessageFormatBreakLine; -; -- otherwise uses MessageFormatBreak. -; Else (a runtime message that does not trigger a breakpoint) uses MessageFormat. -; -; MessageFormatNote = "** %S: %R\n Time: %T Iteration: %D%I\n" -; MessageFormatWarning = "** %S: %R\n Time: %T Iteration: %D%I\n" -; MessageFormatError = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n" -; MessageFormatFail = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n" -; MessageFormatFatal = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n" -; MessageFormatBreakLine = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F Line: %L\n" -; MessageFormatBreak = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n" -; MessageFormat = "** %S: %R\n Time: %T Iteration: %D%I\n" - -; Error File - alternate file for storing error messages -; ErrorFile = error.log - -; Simulation Breakpoint messages -; This flag controls the display of function names when reporting the location -; where the simulator stops because of a breakpoint or fatal error. -; Example with function name: # Break in Process ctr at counter.vhd line 44 -; Example without function name: # Break at counter.vhd line 44 -; Default value is 1. -ShowFunctions = 1 - -; Default radix for all windows and commands. -; Radix may be one of: symbolic, ascii, binary, octal, decimal, hex, unsigned -; Flags may be one of: enumnumeric, showbase, wreal -DefaultRadix = hexadecimal -DefaultRadixFlags = showbase -; Set to 1 for make the signal_force VHDL and Verilog functions use the -; default radix when processing the force value. Prior to 10.2 signal_force -; used the default radix, now it always uses symbolic unless value explicitly indicates base -;SignalForceFunctionUseDefaultRadix = 0 - -; VSIM Startup command -; Startup = do startup.do - -; VSIM Shutdown file -; Filename to save u/i formats and configurations. -; ShutdownFile = restart.do -; To explicitly disable auto save: -; ShutdownFile = --disable-auto-save - -; Run simulator in batch mode as if -batch were specified on the command line if none of -c, -gui, or -i specified. -; Simulator runs in interactive mode as if -i were specified if this option is 0. Default is 0. -; BatchMode = 1 - -; File for saving command transcript when -batch option used -; This option is ignored when -c, -gui, or -i options are used or if BatchMode above is zero -; default is unset so command transcript only goes to stdout for better performance -; BatchTranscriptFile = transcript - -; File for saving command transcript, this option is ignored when -batch option is used -TranscriptFile = transcript - -; Transcript file long line wrapping mode(s) -; mode == 0 :: no wrapping, line recorded as is -; mode == 1 :: wrap at first whitespace after WSColumn -; or at Column. -; mode == 2 :: wrap as above, but add continuation -; character ('\') at end of each wrapped line -; -; WrapMode = 0 -; WrapColumn = 30000 -; WrapWSColumn = 27000 - -; File for saving command history -; CommandHistory = cmdhist.log - -; Specify whether paths in simulator commands should be described -; in VHDL or Verilog format. -; For VHDL, PathSeparator = / -; For Verilog, PathSeparator = . -; Must not be the same character as DatasetSeparator. -PathSeparator = / - -; Specify the dataset separator for fully rooted contexts. -; The default is ':'. For example: sim:/top -; Must not be the same character as PathSeparator. -DatasetSeparator = : - -; Specify a unique path separator for the Signal Spy set of functions. -; The default will be to use the PathSeparator variable. -; Must not be the same character as DatasetSeparator. -; SignalSpyPathSeparator = / - -; Used to control parsing of HDL identifiers input to the tool. -; This includes CLI commands, vsim/vopt/vlog/vcom options, -; string arguments to FLI/VPI/DPI calls, etc. -; If set to 1, accept either Verilog escaped Id syntax or -; VHDL extended id syntax, regardless of source language. -; If set to 0, the syntax of the source language must be used. -; Each identifier in a hierarchical name may need different syntax, -; e.g. "/top/\vhdl*ext*id\/middle/\vlog*ext*id /bottom" or -; "top.\vhdl*ext*id\.middle.\vlog*ext*id .bottom" -; GenerousIdentifierParsing = 1 - -; Disable VHDL assertion messages -; IgnoreNote = 1 -; IgnoreWarning = 1 -; IgnoreError = 1 -; IgnoreFailure = 1 - -; Disable SystemVerilog assertion messages -; IgnoreSVAInfo = 1 -; IgnoreSVAWarning = 1 -; IgnoreSVAError = 1 -; IgnoreSVAFatal = 1 - -; Do not print any additional information from Severity System tasks. -; Only the message provided by the user is printed along with severity -; information. -; SVAPrintOnlyUserMessage = 1; - -; Default force kind. May be freeze, drive, deposit, or default -; or in other terms, fixed, wired, or charged. -; A value of "default" will use the signal kind to determine the -; force kind, drive for resolved signals, freeze for unresolved signals -; DefaultForceKind = freeze - -; Control the iteration of events when a VHDL signal is forced to a value -; This flag can be set to honour the signal update event in next iteration, -; the default is to update and propagate in the same iteration. -; ForceSigNextIter = 1 - -; Enable simulation statistics. Specify one or more arguments: -; [all,none,time,cmd,msg,perf,verbose,list,kb,eor] -; Add '-' to disable specific statistics. Default is [time,cmd,msg]. -; Stats = time,cmd,msg - -; If zero, open files when elaborated; otherwise, open files on -; first read or write. Default is 0. -; DelayFileOpen = 1 - -; Control VHDL files opened for write. -; 0 = Buffered, 1 = Unbuffered -UnbufferedOutput = 0 - -; Control the number of VHDL files open concurrently. -; This number should always be less than the current ulimit -; setting for max file descriptors. -; 0 = unlimited -ConcurrentFileLimit = 40 - -; If nonzero, close files as soon as there is either an explicit call to -; file_close, or when the file variable's scope is closed. When zero, a -; file opened in append mode is not closed in case it is immediately -; reopened in append mode; otherwise, the file will be closed at the -; point it is reopened. -; AppendClose = 1 - -; Control the number of hierarchical regions displayed as -; part of a signal name shown in the Wave window. -; A value of zero tells VSIM to display the full name. -; The default is 0. -; WaveSignalNameWidth = 0 - -; Turn off warnings when changing VHDL constants and generics -; Default is 1 to generate warning messages -; WarnConstantChange = 0 - -; Turn off warnings from accelerated versions of the std_logic_arith, -; std_logic_unsigned, and std_logic_signed packages. -; StdArithNoWarnings = 1 - -; Turn off warnings from accelerated versions of the IEEE numeric_std -; and numeric_bit packages. -; NumericStdNoWarnings = 1 - -; Use old-style (pre-6.6) VHDL FOR GENERATE statement iteration names -; in the design hierarchy. -; This style is controlled by the value of the GenerateFormat -; value described next. Default is to use new-style names, which -; comprise the generate statement label, '(', the value of the generate -; parameter, and a closing ')'. -; Set this to 1 to use old-style names. -; OldVhdlForGenNames = 1 - -; Control the format of the old-style VHDL FOR generate statement region -; name for each iteration. Do not quote the value. -; The format string here must contain the conversion codes %s and %d, -; in that order, and no other conversion codes. The %s represents -; the generate statement label; the %d represents the generate parameter value -; at a particular iteration (this is the position number if the generate parameter -; is of an enumeration type). Embedded whitespace is allowed (but discouraged); -; leading and trailing whitespace is ignored. -; Application of the format must result in a unique region name over all -; loop iterations for a particular immediately enclosing scope so that name -; lookup can function properly. The default is %s__%d. -; GenerateFormat = %s__%d - -; Enable more efficient logging of VHDL Variables. -; Logging VHDL variables without this enabled, while possible, is very -; inefficient. Enabling this will provide a more efficient logging methodology -; at the expense of more memory usage. By default this feature is disabled (0). -; To enabled this feature, set this variable to 1. -; VhdlVariableLogging = 1 - -; Enable logging of VHDL access type variables and their designated objects. -; This setting will allow both variables of an access type ("access variables") -; and their designated objects ("access objects") to be logged. Logging a -; variable of an access type will automatically also cause the designated -; object(s) of that variable to be logged as the simulation progresses. -; Further, enabling this allows access objects to be logged by name. By default -; this feature is disabled (0). To enable this feature, set this variable to 1. -; Enabling this will automatically enable the VhdlVariableLogging feature also. -; AccessObjDebug = 1 - -; Make each VHDL package in a PDU has its own separate copy of the package instead -; of sharing the package between PDUs. The default is to share packages. -; To ensure that each PDU has its own set of packages, set this variable to 1. -; VhdlSeparatePduPackage = 1 - -; Specify whether checkpoint files should be compressed. -; The default is 1 (compressed). -; CheckpointCompressMode = 0 - -; Specify gcc compiler used in the compilation of automatically generated DPI exportwrapper. -; Use custom gcc compiler located at this path rather than the default path. -; The path should point directly at a compiler executable. -; DpiCppPath = /bin/gcc - -; Specify whether to enable SystemVerilog DPI "out-of-the-blue" calls. -; The term "out-of-the-blue" refers to SystemVerilog export function calls -; made from C functions that don't have the proper context setup -; (as is the case when running under "DPI-C" import functions). -; When this is enabled, one can call a DPI export function -; (but not task) from any C code. -; the setting of this variable can be one of the following values: -; 0 : dpioutoftheblue call is disabled (default) -; 1 : dpioutoftheblue call is enabled, but export call debug support is not available. -; 2 : dpioutoftheblue call is enabled, and limited export call debug support is available. -; DpiOutOfTheBlue = 1 - -; Specify whether continuous assignments are run before other normal priority -; processes scheduled in the same iteration. This event ordering minimizes race -; differences between optimized and non-optimized designs, and is the default -; behavior beginning with the 6.5 release. For pre-6.5 event ordering, set -; ImmediateContinuousAssign to 0. -; The default is 1 (enabled). -; ImmediateContinuousAssign = 0 - -; List of dynamically loaded objects for Verilog PLI applications -; Veriuser = veriuser.sl - -; Which default VPI object model should the tool conform to? -; The 1364 modes are Verilog-only, for backwards compatibility with older -; libraries, and SystemVerilog objects are not available in these modes. -; -; In the absence of a user-specified default, the tool default is the -; latest available LRM behavior. -; Options for PliCompatDefault are: -; VPI_COMPATIBILITY_VERSION_1364v1995 -; VPI_COMPATIBILITY_VERSION_1364v2001 -; VPI_COMPATIBILITY_VERSION_1364v2005 -; VPI_COMPATIBILITY_VERSION_1800v2005 -; VPI_COMPATIBILITY_VERSION_1800v2008 -; -; Synonyms for each string are also recognized: -; VPI_COMPATIBILITY_VERSION_1364v1995 (1995, 95, 1364v1995, 1364V1995, VL1995) -; VPI_COMPATIBILITY_VERSION_1364v2001 (2001, 01, 1364v2001, 1364V2001, VL2001) -; VPI_COMPATIBILITY_VERSION_1364v2005 (1364v2005, 1364V2005, VL2005) -; VPI_COMPATIBILITY_VERSION_1800v2005 (2005, 05, 1800v2005, 1800V2005, SV2005) -; VPI_COMPATIBILITY_VERSION_1800v2008 (2008, 08, 1800v2008, 1800V2008, SV2008) - - -; PliCompatDefault = VPI_COMPATIBILITY_VERSION_1800v2005 - -; Specify whether the Verilog system task $fopen or vpi_mcd_open() -; will create directories that do not exist when opening the file -; in "a" or "w" mode. -; The default is 0 (do not create non-existent directories) -; CreateDirForFileAccess = 1 - -; Specify default options for the restart command. Options can be one -; or more of: -force -nobreakpoint -nolist -nolog -nowave -noassertions -; DefaultRestartOptions = -force - - -; Specify default UVM-aware debug options if the vsim -uvmcontrol switch is not used. -; Valid options include: all, none, verbose, disable, struct, reseed, msglog, trlog, certe. -; Options can be enabled by just adding the name, or disabled by prefixing the option with a "-". -; The list of options must be delimited by commas, without spaces or tabs. -; -; Some examples -; To turn on all available UVM-aware debug features: -; UVMControl = all -; To turn on the struct window, mesage logging, and transaction logging: -; UVMControl = struct,msglog,trlog -; To turn on all options except certe: -; UVMControl = all,-certe -; To completely disable all UVM-aware debug functionality: -; UVMControl = disable - -; Specify the WildcardFilter setting. -; A space separated list of object types to be excluded when performing -; wildcard matches with log, wave, etc commands. The default value for this variable is: -; "Variable Constant Generic Parameter SpecParam Memory Assertion Cover Endpoint ScVariable CellInternal ImmediateAssert VHDLFile" -; See "Using the WildcardFilter Preference Variable" in the documentation for -; details on how to use this variable and for descriptions of the filter types. -WildcardFilter = Variable Constant Generic Parameter SpecParam Memory Assertion Cover Endpoint ScVariable CellInternal ImmediateAssert VHDLFile - -; Specify the WildcardSizeThreshold setting. -; This integer setting specifies the size at which objects will be excluded when -; performing wildcard matches with log, wave, etc commands. Objects of size equal -; to or greater than the WildcardSizeThreshold will be filtered out from the wildcard -; matches. The size is a simple calculation of number of bits or items in the object. -; The default value is 8k (8192). Setting this value to 0 will disable the checking -; of object size against this threshold and allow all objects of any size to be logged. -WildcardSizeThreshold = 8192 - -; Specify whether warning messages are output when objects are filtered out due to the -; WildcardSizeThreshold. The default is 0 (no messages generated). -WildcardSizeThresholdVerbose = 0 - -; Turn on (1) or off (0) WLF file compression. -; The default is 1 (compress WLF file). -; WLFCompress = 0 - -; Specify whether to save all design hierarchy (1) in the WLF file -; or only regions containing logged signals (0). -; The default is 0 (save only regions with logged signals). -; WLFSaveAllRegions = 1 - -; WLF file time limit. Limit WLF file by time, as closely as possible, -; to the specified amount of simulation time. When the limit is exceeded -; the earliest times get truncated from the file. -; If both time and size limits are specified the most restrictive is used. -; UserTimeUnits are used if time units are not specified. -; The default is 0 (no limit). Example: WLFTimeLimit = {100 ms} -; WLFTimeLimit = 0 - -; WLF file size limit. Limit WLF file size, as closely as possible, -; to the specified number of megabytes. If both time and size limits -; are specified then the most restrictive is used. -; The default is 0 (no limit). -; WLFSizeLimit = 1000 - -; Specify whether or not a WLF file should be deleted when the -; simulation ends. A value of 1 will cause the WLF file to be deleted. -; The default is 0 (do not delete WLF file when simulation ends). -; WLFDeleteOnQuit = 1 - -; Specify whether or not a WLF file should be optimized during -; simulation. If set to 0, the WLF file will not be optimized. -; The default is 1, optimize the WLF file. -; WLFOptimize = 0 - -; Specify the name of the WLF file. -; The default is vsim.wlf -; WLFFilename = vsim.wlf - -; Specify whether to lock the WLF file. -; Locking the file prevents other invocations of ModelSim/Questa tools from -; inadvertently overwriting the WLF file. -; The default is 1, lock the WLF file. -; WLFFileLock = 0 - -; Specify the update interval for the WLF file in live simulation. -; The interval is given in seconds. -; The value is the smallest interval between WLF file updates. The WLF file -; will be flushed (updated) after (at least) the interval has elapsed, ensuring -; that the data is correct when viewed from a separate viewer. -; A value of 0 means that no updating will occur. -; The default value is 10 seconds. -; WLFUpdateInterval = 10 - -; Specify the WLF cache size limit for WLF files. -; The value is given in megabytes. A value of 0 turns off the cache. -; On non-Windows platforms the default WLFCacheSize setting is 2000 (megabytes). -; On Windows, the default value is 1000 (megabytes) to help to avoid filling -; process memory. -; WLFSimCacheSize allows a different cache size to be set for a live simulation -; WLF file, independent of post-simulation WLF file viewing. If WLFSimCacheSize -; is not set, it defaults to the WLFCacheSize value. -; WLFCacheSize = 2000 -; WLFSimCacheSize = 500 - -; Specify the WLF file event collapse mode. -; 0 = Preserve all events and event order. (same as -wlfnocollapse) -; 1 = Only record values of logged objects at the end of a simulator iteration. -; (same as -wlfcollapsedelta) -; 2 = Only record values of logged objects at the end of a simulator time step. -; (same as -wlfcollapsetime) -; The default is 1. -; WLFCollapseMode = 0 - -; Specify whether WLF file logging can use threads on multi-processor machines. -; If 0, no threads will be used; if 1, threads will be used if the system has -; more than one processor. -; WLFUseThreads = 1 - -; Specify the size of objects that will trigger "large object" messages -; at log/wave/list time. The size calculation of the object is the same as that -; used by the WildcardSizeThreshold. The default LargeObjectSize size is 500,000. -; Setting LargeObjectSize to 0 will disable these messages. -; LargeObjectSize = 500000 - -; Specify the depth of stack frames returned by $stacktrace([level]). -; This depth will be picked up when the optional 'level' argument -; is not specified or its value is not a positive integer. -; StackTraceDepth = 100 - -; Turn on/off undebuggable SystemC type warnings. Default is on. -; ShowUndebuggableScTypeWarning = 0 - -; Turn on/off unassociated SystemC name warnings. Default is off. -; ShowUnassociatedScNameWarning = 1 - -; Turn on/off SystemC IEEE 1666 deprecation warnings. Default is off. -; ScShowIeeeDeprecationWarnings = 1 - -; Turn on/off the check for multiple drivers on a SystemC sc_signal. Default is off. -; ScEnableScSignalWriteCheck = 1 - -; Set SystemC default time unit. -; Set to fs, ps, ns, us, ms, or sec with optional -; prefix of 1, 10, or 100. The default is 1 ns. -; The ScTimeUnit value is honored if it is coarser than Resolution. -; If ScTimeUnit is finer than Resolution, it is set to the value -; of Resolution. For example, if Resolution is 100ps and ScTimeUnit is ns, -; then the default time unit will be 1 ns. However if Resolution -; is 10 ns and ScTimeUnit is ns, then the default time unit will be 10 ns. -ScTimeUnit = ns - -; Set SystemC sc_main stack size. The stack size is set as an integer -; number followed by the unit which can be Kb(Kilo-byte), Mb(Mega-byte) or -; Gb(Giga-byte). Default is 10 Mb. The stack size for sc_main depends -; on the amount of data on the sc_main() stack and the memory required -; to succesfully execute the longest function call chain of sc_main(). -ScMainStackSize = 10 Mb - -; Set SystemC thread stack size. The stack size is set as an integer -; number followed by the unit which can be Kb(Kilo-byte), Mb(Mega-byte) or -; Gb(Giga-byte). The stack size for sc_thread depends -; on the amount of data on the sc_thread stack and the memory required -; to succesfully execute the thread. -; ScStackSize = 1 Mb - -; Turn on/off execution of remainder of sc_main upon quitting the current -; simulation session. If the cumulative length of sc_main() in terms of -; simulation time units is less than the length of the current simulation -; run upon quit or restart, sc_main() will be in the middle of execution. -; This switch gives the option to execute the remainder of sc_main upon -; quitting simulation. The drawback of not running sc_main till the end -; is memory leaks for objects created by sc_main. If on, the remainder of -; sc_main will be executed ignoring all delays. This may cause the simulator -; to crash if the code in sc_main is dependent on some simulation state. -; Default is on. -ScMainFinishOnQuit = 1 - -; Enable calling of the DPI export taks/functions from the -; SystemC start_of_simulation() callback. -; The default is off. -; EnableDpiSosCb = 1 - - -; Set the SCV relationship name that will be used to identify phase -; relations. If the name given to a transactor relation matches this -; name, the transactions involved will be treated as phase transactions -ScvPhaseRelationName = mti_phase - -; Customize the vsim kernel shutdown behavior at the end of the simulation. -; Some common causes of the end of simulation are $finish (implicit or explicit), -; sc_stop(), tf_dofinish(), and assertion failures. -; This should be set to "ask", "exit", or "stop". The default is "ask". -; "ask" -- In batch mode, the vsim kernel will abruptly exit. -; In GUI mode, a dialog box will pop up and ask for user confirmation -; whether or not to quit the simulation. -; "stop" -- Cause the simulation to stay loaded in memory. This can make some -; post-simulation tasks easier. -; "exit" -- The simulation will abruptly exit without asking for any confirmation. -; "final" -- Run SystemVerilog final blocks then behave as "stop". -; Note: This variable can be overridden with the vsim "-onfinish" command line switch. -OnFinish = ask - -; Print pending deferred assertion messages. -; Deferred assertion messages may be scheduled after the $finish in the same -; time step. Deferred assertions scheduled to print after the $finish are -; printed before exiting with severity level NOTE since it's not known whether -; the assertion is still valid due to being printed in the active region -; instead of the reactive region where they are normally printed. -; OnFinishPendingAssert = 1; - -; Print "simstats" result. Default is 0. -; 0 == do not print simstats -; 1 == print at end of simulation -; 2 == print at end of each run command and end of simulation -; PrintSimStats = 1 - -; Assertion File - alternate file for storing VHDL/PSL/Verilog assertion messages -; AssertFile = assert.log - -; Enable assertion counts. Default is off. -; AssertionCover = 1 - -; Run simulator in assertion debug mode. Default is off. -; AssertionDebug = 1 - -; Turn on/off PSL/SVA/VHDL assertion enable. Default is on. -; AssertionEnable = 0 - -; Set PSL/SVA/VHDL concurrent assertion fail limit. Default is -1. -; Any positive integer, -1 for infinity. -; AssertionLimit = 1 - -; Turn on/off concurrent assertion pass log. Default is off. -; Assertion pass logging is only enabled when assertion is browseable -; and assertion debug is enabled. -; AssertionPassLog = 1 - -; Turn on/off PSL concurrent assertion fail log. Default is on. -; The flag does not affect SVA -; AssertionFailLog = 0 - -; Turn on/off SVA concurrent assertion local var printing in -assertdebug mode. Default is on. -; AssertionFailLocalVarLog = 0 - -; Set action type for PSL/SVA concurrent assertion fail action. Default is continue. -; 0 = Continue 1 = Break 2 = Exit -; AssertionFailAction = 1 - -; Enable the active thread monitor in the waveform display when assertion debug is enabled. -; AssertionActiveThreadMonitor = 1 - -; Control how many waveform rows will be used for displaying the active threads. Default is 5. -; AssertionActiveThreadMonitorLimit = 5 - -; Assertion thread limit after which assertion would be killed/switched off. -; The default is -1 (unlimited). If the number of threads for an assertion go -; beyond this limit, the assertion would be either switched off or killed. This -; limit applies to only assert directives. -;AssertionThreadLimit = -1 - -; Action to be taken once the assertion thread limit is reached. Default -; is kill. It can have a value of off or kill. In case of kill, all the existing -; threads are terminated and no new attempts are started. In case of off, the -; existing attempts keep on evaluating but no new attempts are started. This -; variable applies to only assert directives. -;AssertionThreadLimitAction = kill - -; Cover thread limit after which cover would be killed/switched off. -; The default is -1 (unlimited). If the number of threads for a cover go -; beyond this limit, the cover would be either switched off or killed. This -; limit applies to only cover directives. -;CoverThreadLimit = -1 - -; Action to be taken once the cover thread limit is reached. Default -; is kill. It can have a value of off or kill. In case of kill, all the existing -; threads are terminated and no new attempts are started. In case of off, the -; existing attempts keep on evaluating but no new attempts are started. This -; variable applies to only cover directives. -;CoverThreadLimitAction = kill - - -; By default immediate assertions do not participate in Assertion Coverage calculations -; unless they are executed. This switch causes all immediate assertions in the design -; to participate in Assertion Coverage calculations, whether attempted or not. -; UnattemptedImmediateAssertions = 0 - -; By default immediate covers participate in Coverage calculations -; whether they are attempted or not. This switch causes all unattempted -; immediate covers in the design to stop participating in Coverage -; calculations. -; UnattemptedImmediateCovers = 0 - -; By default pass action block is not executed for assertions on vacuous -; success. The following variable is provided to enable execution of -; pass action block on vacuous success. The following variable is only effective -; if the user does not disable pass action block execution by using either -; system tasks or CLI. Also there is a performance penalty for enabling -; the following variable. -;AssertionEnableVacuousPassActionBlock = 1 - -; As per strict 1850-2005 PSL LRM, an always property can either pass -; or fail. However, by default, Questa reports multiple passes and -; multiple fails on top always/never property (always/never operator -; is the top operator under Verification Directive). The reason -; being that Questa reports passes and fails on per attempt of the -; top always/never property. Use the following flag to instruct -; Questa to strictly follow LRM. With this flag, all assert/never -; directives will start an attempt once at start of simulation. -; The attempt can either fail, match or match vacuously. -; For e.g. if always is the top operator under assert, the always will -; keep on checking the property at every clock. If the property under -; always fails, the directive will be considered failed and no more -; checking will be done for that directive. A top always property, -; if it does not fail, will show a pass at end of simulation. -; The default value is '0' (i.e. zero is off). For example: -; PslOneAttempt = 1 - -; Specify the number of clock ticks to represent infinite clock ticks. -; This affects eventually!, until! and until_!. If at End of Simulation -; (EOS) an active strong-property has not clocked this number of -; clock ticks then neither pass or fail (vacuous match) is returned -; else respective fail/pass is returned. The default value is '0' (zero) -; which effectively does not check for clock tick condition. For example: -; PslInfinityThreshold = 5000 - -; Control how many thread start times will be preserved for ATV viewing for a given assertion -; instance. Default is -1 (ALL). -; ATVStartTimeKeepCount = -1 - -; Turn on/off code coverage -; CodeCoverage = 0 - -; This option applies to condition and expression coverage UDP tables. It -; has no effect unless UDP is enabled for coverage with vcom/vlog/vopt -coverudp. -; If this option is used and a match occurs in more than one row in the UDP table, -; none of the counts for all matching rows is incremented. By default, counts are -; incremented for all matching rows. -; CoverCountAll = 1 - -; Turn off automatic inclusion of VHDL integers in toggle coverage. Default -; is to include them. -; ToggleNoIntegers = 1 - -; Set the maximum number of values that are collected for toggle coverage of -; VHDL integers. Default is 100; -; ToggleMaxIntValues = 100 - -; Set the maximum number of values that are collected for toggle coverage of -; Verilog real. Default is 100; -; ToggleMaxRealValues = 100 - -; Turn on automatic inclusion of Verilog integers in toggle coverage, except -; for enumeration types. Default is to include them. -; ToggleVlogIntegers = 0 - -; Turn on automatic inclusion of Verilog real type in toggle coverage, except -; for shortreal types. Default is to not include them. -; ToggleVlogReal = 1 - -; Turn on automatic inclusion of Verilog fixed-size unpacked arrays, VHDL multi-d arrays -; and VHDL arrays-of-arrays in toggle coverage. -; Default is to not include them. -; ToggleFixedSizeArray = 1 - -; Increase or decrease the maximum size of Verilog unpacked fixed-size arrays, -; VHDL multi-d arrays and VHDL arrays-of-arrays that are included for toggle coverage. -; This leads to a longer simulation time with bigger arrays covered with toggle coverage. -; Default is 1024. -; ToggleMaxFixedSizeArray = 1024 - -; Treat Verilog multi-dimensional packed vectors and packed structures as equivalently sized -; one-dimensional packed vectors for toggle coverage. Default is 0. -; TogglePackedAsVec = 0 - -; Treat Verilog enumerated types as equivalently sized one-dimensional packed vectors for -; toggle coverage. Default is 0. -; ToggleVlogEnumBits = 0 - -; Turn off automatic inclusion of VHDL records in toggle coverage. -; Default is to include them. -; ToggleVHDLRecords = 0 - -; Limit the widths of registers automatically tracked for toggle coverage. Default is 128. -; For unlimited width, set to 0. -; ToggleWidthLimit = 128 - -; Limit the counts that are tracked for toggle coverage. When all edges for a bit have -; reached this count, further activity on the bit is ignored. Default is 1. -; For unlimited counts, set to 0. -; ToggleCountLimit = 1 - -; Change the mode of extended toggle coverage. Default is 3. Valid modes are 1, 2 and 3. -; Following is the toggle coverage calculation criteria based on extended toggle mode: -; Mode 1: 0L->1H & 1H->0L & any one 'Z' transition (to/from 'Z'). -; Mode 2: 0L->1H & 1H->0L & one transition to 'Z' & one transition from 'Z'. -; Mode 3: 0L->1H & 1H->0L & all 'Z' transitions. -; ExtendedToggleMode = 3 - -; Enable toggle statistics collection only for ports. Default is 0. -; TogglePortsOnly = 1 - -; Limit the counts that are tracked for Focussed Expression Coverage. When a bin has -; reached this count, further tracking of the input patterns linked to it is ignored. -; Default is 1. For unlimited counts, set to 0. -; NOTE: Changing this value from its default value may affect simulation performance. -; FecCountLimit = 1 - -; Limit the counts that are tracked for UDP Coverage. When a bin has -; reached this count, further tracking of the input patterns linked to it is ignored. -; Default is 1. For unlimited counts, set to 0. -; NOTE: Changing this value from its default value may affect simulation performance. -; UdpCountLimit = 1 - -; Control toggle coverage deglitching period. A period of 0, eliminates delta -; cycle glitches. This is the default. The value of ToggleDeglitchPeriod needs to be either -; 0 or a time string that includes time units. Examples: 0 or 10.0ps or "10.0 ps". -; ToggleDeglitchPeriod = 10.0ps - -; Turn on/off all PSL/SVA cover directive enables. Default is on. -; CoverEnable = 0 - -; Turn on/off PSL/SVA cover log. Default is off "0". -; CoverLog = 1 - -; Set "at_least" value for all PSL/SVA cover directives. Default is 1. -; CoverAtLeast = 2 - -; Set "limit" value for all PSL/SVA cover directives. Default is -1. -; Any positive integer, -1 for infinity. -; CoverLimit = 1 - -; Specify the coverage database filename. -; Default is "" (i.e. database is NOT automatically saved on close). -; UCDBFilename = vsim.ucdb - -; Specify the maximum limit for the number of Cross (bin) products reported -; in XML and UCDB report against a Cross. A warning is issued if the limit -; is crossed. Default is zero. vsim switch -cvgmaxrptrhscross can override this -; setting. -; MaxReportRhsSVCrossProducts = 1000 - -; Specify the override for the "auto_bin_max" option for the Covergroups. -; If not specified then value from Covergroup "option" is used. -; SVCoverpointAutoBinMax = 64 - -; Specify the override for the value of "cross_num_print_missing" -; option for the Cross in Covergroups. If not specified then value -; specified in the "option.cross_num_print_missing" is used. This -; is a runtime option. NOTE: This overrides any "cross_num_print_missing" -; value specified by user in source file and any SVCrossNumPrintMissingDefault -; specified in modelsim.ini. -; SVCrossNumPrintMissing = 0 - -; Specify whether to use the value of "cross_num_print_missing" -; option in report and GUI for the Cross in Covergroups. If not specified then -; cross_num_print_missing is ignored for creating reports and displaying -; covergroups in GUI. Default is 0, which means ignore "cross_num_print_missing". -; UseSVCrossNumPrintMissing = 0 - -; Specify the threshold of Coverpoint wildcard bin value range size, above which -; a warning will be triggered. The default is 4K -- 12 wildcard bits. -; SVCoverpointWildCardBinValueSizeWarn = 4096 - -; Specify the override for the value of "strobe" option for the -; Covergroup Type. If not specified then value in "type_option.strobe" -; will be used. This is runtime option which forces "strobe" to -; user specified value and supersedes user specified values in the -; SystemVerilog Code. NOTE: This also overrides the compile time -; default value override specified using "SVCovergroupStrobeDefault" -; SVCovergroupStrobe = 0 - -; Override for explicit assignments in source code to "option.goal" of -; SystemVerilog covergroup, coverpoint, and cross. It also overrides the -; default value of "option.goal" (defined to be 100 in the SystemVerilog -; LRM) and the value of modelsim.ini variable "SVCovergroupGoalDefault". -; SVCovergroupGoal = 100 - -; Override for explicit assignments in source code to "type_option.goal" of -; SystemVerilog covergroup, coverpoint, and cross. It also overrides the -; default value of "type_option.goal" (defined to be 100 in the SystemVerilog -; LRM) and the value of modelsim.ini variable "SVCovergroupTypeGoalDefault". -; SVCovergroupTypeGoal = 100 - -; Enforce the 6.3 behavior of covergroup get_coverage() and get_inst_coverage() -; builtin functions, and report. This setting changes the default values of -; option.get_inst_coverage and type_option.merge_instances to ensure the 6.3 -; behavior if explicit assignments are not made on option.get_inst_coverage and -; type_option.merge_instances by the user. There are two vsim command line -; options, -cvg63 and -nocvg63 to override this setting from vsim command line. -; The default value of this variable from release 6.6 onwards is 0. This default -; drives compliance with the clarified behavior in the IEEE 1800-2009 standard. -; SVCovergroup63Compatibility = 0 - -; Enforce the default behavior of covergroup get_coverage() builtin function, GUI -; and report. This variable sets the default value of type_option.merge_instances. -; There are two vsim command line options, -cvgmergeinstances and -; -nocvgmergeinstances to override this setting from vsim command line. -; The default value of this variable, -1 (don't care), allows the tool to determine -; the effective value, based on factors related to capacity and optimization. -; The type_option.merge_instances appears in the GUI and coverage reports as either -; auto(1) or auto(0), depending on whether the effective value was determined to -; be a 1 or a 0. -; SVCovergroupMergeInstancesDefault = -1 - -; Enable or disable generation of more detailed information about the sampling -; of covergroup, cross, and coverpoints. It provides the details of the number -; of times the covergroup instance and type were sampled, as well as details -; about why covergroup, cross and coverpoint were not covered. A non-zero value -; is to enable this feature. 0 is to disable this feature. Default is 0 -; SVCovergroupSampleInfo = 0 - -; Specify the maximum number of Coverpoint bins in whole design for -; all Covergroups. -; MaxSVCoverpointBinsDesign = 2147483648 - -; Specify maximum number of Coverpoint bins in any instance of a Covergroup, default is 2^10 bins -; MaxSVCoverpointBinsInst = 1048576 - -; Specify the maximum number of Cross bins in whole design for -; all Covergroups. -; MaxSVCrossBinsDesign = 2147483648 - -; Specify maximum number of Cross bins in any instance of a Covergroup, default is 2^16 bins -; MaxSVCrossBinsInst = 67108864 - -; Specify whether vsim will collect the coverage data of zero-weight coverage items or not. -; By default, this variable is set 0, in which case option.no_collect setting will take effect. -; If this variable is set to 1, all zero-weight coverage items will not be saved. -; Note that the usage of vsim switch -cvgzwnocollect, if present, will override the setting -; of this variable. -; CvgZWNoCollect = 1 - -; Specify a space delimited list of double quoted TCL style -; regular expressions which will be matched against the text of all messages. -; If any regular expression is found to be contained within any message, the -; status for that message will not be propagated to the UCDB TESTSTATUS. -; If no match is detected, then the status will be propagated to the -; UCDB TESTSTATUS. More than one such regular expression text is allowed, -; and each message text is compared for each regular expression in the list. -; UCDBTestStatusMessageFilter = "Done with Test Bench" "Ignore .* message" - -; Set weight for all PSL/SVA cover directives. Default is 1. -; CoverWeight = 2 - -; Check vsim plusargs. Default is 0 (off). -; 0 = Don't check plusargs -; 1 = Warning on unrecognized plusarg -; 2 = Error and exit on unrecognized plusarg -; CheckPlusargs = 1 - -; Load the specified shared objects with the RTLD_GLOBAL flag. -; This gives global visibility to all symbols in the shared objects, -; meaning that subsequently loaded shared objects can bind to symbols -; in the global shared objects. The list of shared objects should -; be whitespace delimited. This option is not supported on the -; Windows or AIX platforms. -; GlobalSharedObjectList = example1.so example2.so example3.so - -; Generate the stub definitions for the undefined symbols in the shared libraries being -; loaded in the simulation. When this flow is turned on, the undefined symbols will not -; prevent vsim from loading. Calling undefined symbols at runtime will cause fatal error. -; The valid arguments are: on, off, verbose. -; on : turn on the automatic generation of stub definitions. -; off: turn off the flow. The undefined symbols will trigger an immediate load failure. -; verbose: Turn on the flow and report the undefined symbols for each shared library. -; NOTE: This variable can be overriden with vsim switch "-undefsyms". -; The default is on. -; -; UndefSyms = off - -; Enable the support for checkpointing foreign C++ libraries. -; The valid arguments are: 1 and 0. -; 1 : turn on the support -; 0 : turn off the support (default) -; This option is not supported on the Windows platforms. -; -; AllowCheckpointCpp = 1 - -; Initial seed for the random number generator of the root thread (SystemVerilog). -; NOTE: This variable can be overridden with the vsim "-sv_seed" command line switch. -; The default value is 0. -; Sv_Seed = 0 - -; Specify the solver "engine" that vsim will select for constrained random -; generation. -; Valid values are: -; "auto" - automatically select the best engine for the current -; constraint scenario -; "bdd" - evaluate all constraint scenarios using the BDD solver engine -; "act" - evaluate all constraint scenarios using the ACT solver engine -; While the BDD solver engine is generally efficient with constraint scenarios -; involving bitwise logical relationships, the ACT solver engine can exhibit -; superior performance with constraint scenarios involving large numbers of -; random variables related via arithmetic operators (+, *, etc). -; NOTE: This variable can be overridden with the vsim "-solveengine" command -; line switch. -; The default value is "auto". -; SolveEngine = auto - -; Specify if the solver should attempt to ignore overflow/underflow semantics -; for arithmetic constraints (multiply, addition, subtraction) in order to -; improve performance. The "solveignoreoverflow" attribute can be specified on -; a per-call basis to randomize() to override this setting. -; The default value is 0 (overflow/underflow is not ignored). Set to 1 to -; ignore overflow/underflow. -; SolveIgnoreOverflow = 0 - -; Specifies the maximum size that a dynamic array may be resized to by the -; solver. If the solver attempts to resize a dynamic array to a size greater -; than the specified limit, the solver will abort with an error. -; The default value is 10000. A value of 0 indicates no limit. -; SolveArrayResizeMax = 10000 - -; Error message severity when randomize() failure is detected. -; 0 = No error 1 = Warning 2 = Error 3 = Failure 4 = Fatal -; The default is 0 (no error). -; SolveFailSeverity = 0 - -; Error message severity for suppressible errors that are detected in a -; solve/before constraint. -; NOTE: This variable can be overridden with the vsim "-solvebeforeerrorseverity" -; command line switch. -; 0 = No error 1 = Warning 2 = Error 3 = Failure 4 = Fatal -; The default is 3 (failure). -; SolveBeforeErrorSeverity = 3 - -; Error message severity for suppressible errors that are related to -; solve engine capacity limits -; NOTE: This variable can be overridden with the vsim "-solveengineerrorseverity" -; command line switch. -; 0 = No error 1 = Warning 2 = Error 3 = Failure 4 = Fatal -; The default is 3 (failure). -; SolveEngineErrorSeverity = 3 - -; Enable/disable debug information for randomize() failures. -; NOTE: This variable can be overridden with the vsim "-solvefaildebug" command -; line switch. -; The default is 0 (disabled). Set to 1 to enable basic debug (with no -; performance penalty). Set to 2 for enhanced debug (will result in slower -; runtime performance). -; SolveFailDebug = 0 - -; Upon encountering a randomize() failure, generate a simplified testcase that -; will reproduce the failure. Optionally output the testcase to a file. -; Testcases for 'no-solution' failures will only be produced if SolveFailDebug -; is enabled (see above). -; NOTE: This variable can be overridden with the vsim "-solvefailtestcase" -; command line switch. -; The default is OFF (do not generate a testcase). To enable testcase -; generation, uncomment this variable. To redirect testcase generation to a -; file, specify the name of the output file. -; SolveFailTestcase = - -; Specify solver timeout threshold (in seconds). randomize() will fail if the -; CPU time required to evaluate any randset exceeds the specified timeout. -; The default value is 500. A value of 0 will disable timeout failures. -; SolveTimeout = 500 - -; Specify the maximum size of the solution graph generated by the BDD solver. -; This value can be used to force the BDD solver to abort the evaluation of a -; complex constraint scenario that cannot be evaluated with finite memory. -; This value is specified in 1000s of nodes. -; The default value is 10000. A value of 0 indicates no limit. -; SolveGraphMaxSize = 10000 - -; Specify the maximum number of evaluations that may be performed on the -; solution graph by the BDD solver. This value can be used to force the BDD -; solver to abort the evaluation of a complex constraint scenario that cannot -; be evaluated in finite time. This value is specified in 10000s of evaluations. -; The default value is 10000. A value of 0 indicates no limit. -; SolveGraphMaxEval = 10000 - -; Specify the maximum number of tests that the ACT solver may evaluate before -; abandoning an attempt to solve a particular constraint scenario. -; The default value is 2000000. A value of 0 indicates no limit. -; SolveACTMaxTests = 2000000 - -; Specify the maximum number of operations that the ACT solver may perform -; before abandoning an attempt to solve a particular constraint scenario. The -; value is specified in 1000000s of operations. -; The default value is 10000. A value of 0 indicates no limit. -; SolveACTMaxOps = 10000 - -; Specify the number of times the ACT solver will retry to evaluate a constraint -; scenario that fails due to the SolveACTMax[Tests|Ops] threshold. -; The default value is 0 (no retry). -; SolveACTRetryCount = 0 - -; Specify random sequence compatiblity with a prior letter release. This -; option is used to get the same random sequences during simulation as -; as a prior letter release. Only prior letter releases (of the current -; number release) are allowed. -; NOTE: Only those random sequence changes due to solver optimizations are -; reverted by this variable. Random sequence changes due to solver bugfixes -; cannot be un-done. -; NOTE: This variable can be overridden with the vsim "-solverev" command -; line switch. -; Default value set to "" (no compatibility). -; SolveRev = - -; Environment variable expansion of command line arguments has been depricated -; in favor shell level expansion. Universal environment variable expansion -; inside -f files is support and continued support for MGC Location Maps provide -; alternative methods for handling flexible pathnames. -; The following line may be uncommented and the value set to 1 to re-enable this -; deprecated behavior. The default value is 0. -; DeprecatedEnvironmentVariableExpansion = 0 - -; Specify the memory threshold for the System Verilog garbage collector. -; The value is the number of megabytes of class objects that must accumulate -; before the garbage collector is run. -; The GCThreshold setting is used when class debug mode is disabled to allow -; less frequent garbage collection and better simulation performance. -; The GCThresholdClassDebug setting is used when class debug mode is enabled -; to allow for more frequent garbage collection. -; GCThreshold = 100 -; GCThresholdClassDebug = 5 - -; Turn on/off collapsing of bus ports in VCD dumpports output -DumpportsCollapse = 1 - -; Location of Multi-Level Verification Component (MVC) installation. -; The default location is the product installation directory. -MvcHome = $MODEL_TECH/.. - -; Location of InFact installation. The default is $MODEL_TECH/../../infact -; -; InFactHome = $MODEL_TECH/../../infact - -; Initialize SystemVerilog enums using the base type's default value -; instead of the leftmost value. -; EnumBaseInit = 1 - -; Suppress file type registration. -; SuppressFileTypeReg = 1 - -; Enable/disable non-LRM compliant SystemVerilog language extensions. -; Valid extensions are: -; cfce - generate an error if $cast fails as a function -; dfsp - sets default format specifier as %p, if no format specifier is given for unpacked array in $display and related systasks -; expdfmt - enable format string extensions for $display/$sformatf -; extscan - support values greater than 32 bit for string builtin methods (atohex, atobin, atooct, atoi) -; fmtcap - prints capital hex digits with %X/%H in display calls -; iddp - ignore DPI disable protocol check -; noexptc - ignore DPI export type name overloading check -; lfmt - zero-pad data if '0' prefixes width in format specifier (e.g. "%04h") -; realrand - support randomize() with real variables and constraints (Default) -; SvExtensions = [+|-][,[+|-]*] - -; Enable/disable non-LRM compliant SystemVerilog constrained-random language extensions. -; Valid extensions are: -; deepcheck - allow randomize(null) to recursively consider constraints from member rand class handles -; forkjoinstab - preserve parent thread random stability when seeding fork/join sub-threads (Default) -; nonrandstab - disable seeding of "non-random" class instances (Default) -; nodist - interpret 'dist' constraint as 'inside' (ACT only) -; noorder - ignore solve/before ordering constraints (ACT only) -; packrandidx - allow random index for packed variable in constraint (Default) -; promotedist - promote priority of 'dist' constraint if LHS has no solve/before -; randskew - skew randomize results (ACT only) -; SvRandExtensions = [+|-][,[+|-]*] - -; Controls the formatting of '%p' and '%P' conversion specification, used in $display -; and similar system tasks. -; 1. SVPrettyPrintFlags=I use spaces(S) or tabs(T) per indentation level. -; The 'I' flag when present causes relevant data types to be expanded and indented into -; a more readable format. -; (e.g. SVPrettyPrintFlags=I4S will cause 4 spaces to be used per indentation level). -; 2. SVPrettyPrintFlags=L limits the output to lines. -; (e.g. SVPrettyPrintFlags=L20 will limit the output to 20 lines). -; 3. SVPrettyPrintFlags=C limits the output to characters. -; (e.g. SVPrettyPrintFlags=C256 will limit the output to 256 characters). -; 4. SVPrettyPrintFlags=F limits the output to of relevant datatypes -; (e.g. SVPrettyPrintFlags=F4 will limit the output to 4 fields of a structure). -; 5. SVPrettyPrintFlags=E limits the output to of relevant datatypes -; (e.g. SVPrettyPrintFlags=E50 will limit the output to 50 elements of an array). -; 6. SVPrettyPrintFlags=D suppresses the output of sub-elements below . -; (e.g. SVPrettyPrintFlags=D5 will suppresses the output of sub elements below a depth of 5). -; 7. SVPrettyPrintFlags=R shows the output of specifier %p as per the specifed radix. -; It changes the output in $display and similar systasks. It does not affect formatted output functions ($displayh etc)). -; (e.g. SVPrettyPrintFlags=Rb will show the output of %p specifier in binary format. -; 8. Items 1-7 above can be combined as a comma separated list. -; (e.g. SVPrettyPrintFlags=I4S,L20,C256,F4,E50,D5,Rb) -; SVPrettyPrintFlags=I4S - -[lmc] -; The simulator's interface to Logic Modeling's SmartModel SWIFT software -libsm = $MODEL_TECH/libsm.sl -; The simulator's interface to Logic Modeling's SmartModel SWIFT software (Windows NT) -; libsm = $MODEL_TECH/libsm.dll -; Logic Modeling's SmartModel SWIFT software (HP 9000 Series 700) -; libswift = $LMC_HOME/lib/hp700.lib/libswift.sl -; Logic Modeling's SmartModel SWIFT software (IBM RISC System/6000) -; libswift = $LMC_HOME/lib/ibmrs.lib/swift.o -; Logic Modeling's SmartModel SWIFT software (Sun4 Solaris) -; libswift = $LMC_HOME/lib/sun4Solaris.lib/libswift.so -; Logic Modeling's SmartModel SWIFT software (Windows NT) -; libswift = $LMC_HOME/lib/pcnt.lib/libswift.dll -; Logic Modeling's SmartModel SWIFT software (non-Enterprise versions of Linux) -; libswift = $LMC_HOME/lib/x86_linux.lib/libswift.so -; Logic Modeling's SmartModel SWIFT software (Enterprise versions of Linux) -; libswift = $LMC_HOME/lib/linux.lib/libswift.so - -; The simulator's interface to Logic Modeling's hardware modeler SFI software -libhm = $MODEL_TECH/libhm.sl -; The simulator's interface to Logic Modeling's hardware modeler SFI software (Windows NT) -; libhm = $MODEL_TECH/libhm.dll -; Logic Modeling's hardware modeler SFI software (HP 9000 Series 700) -; libsfi = /lib/hp700/libsfi.sl -; Logic Modeling's hardware modeler SFI software (IBM RISC System/6000) -; libsfi = /lib/rs6000/libsfi.a -; Logic Modeling's hardware modeler SFI software (Sun4 Solaris) -; libsfi = /lib/sun4.solaris/libsfi.so -; Logic Modeling's hardware modeler SFI software (Windows NT) -; libsfi = /lib/pcnt/lm_sfi.dll -; Logic Modeling's hardware modeler SFI software (Linux) -; libsfi = /lib/linux/libsfi.so - -[msg_system] -; Change a message severity or suppress a message. -; The format is: = [,...] -; suppress can be used to achieve +nowarn functionality -; The format is: suppress = ,,[,,...] -; Examples: -suppress = 8780 ;an explanation can be had by running: verror 8780 -; note = 3009 -; warning = 3033 -; error = 3010,3016 -; fatal = 3016,3033 -; suppress = 3009,3016,3601 -; suppress = 3009,CNNODP,3601,TFMPC -; suppress = 8683,8684 -; The command verror can be used to get the complete -; description of a message. - -; Control transcripting of Verilog display system task messages and -; PLI/FLI print function call messages. The system tasks include -; $display[bho], $strobe[bho], $monitor[bho], and $write[bho]. They -; also include the analogous file I/O tasks that write to STDOUT -; (i.e. $fwrite or $fdisplay). The PLI/FLI calls include io_printf, -; vpi_printf, mti_PrintMessage, and mti_PrintFormatted. The default -; is to have messages appear only in the transcript. The other -; settings are to send messages to the wlf file only (messages that -; are recorded in the wlf file can be viewed in the MsgViewer) or -; to both the transcript and the wlf file. The valid values are -; tran {transcript only (default)} -; wlf {wlf file only} -; both {transcript and wlf file} -; displaymsgmode = tran - -; Control transcripting of elaboration/runtime messages not -; addressed by the displaymsgmode setting. The default is to -; have messages appear only in the transcript. The other settings -; are to send messages to the wlf file only (messages that are -; recorded in the wlf file can be viewed in the MsgViewer) or to both -; the transcript and the wlf file. The valid values are -; tran {transcript only (default)} -; wlf {wlf file only} -; both {transcript and wlf file} -; msgmode = tran - -; Controls number of displays of a particluar message -; default value is 5 -; MsgLimitCount = 5 - -[utils] -; Default Library Type (while creating a library with "vlib") -; 0 - legacy library using subdirectories for design units -; 2 - flat library -; DefaultLibType = 2 - -; Flat Library Page Size (while creating a library with "vlib") -; Set the size in bytes for flat library file pages. Libraries containing -; very large files may benefit from a larger value. -; FlatLibPageSize = 8192 - -; Flat Library Page Cleanup Percentage (while creating a library with "vlib") -; Set the percentage of total pages deleted before library cleanup can occur. -; This setting is applied together with FlatLibPageDeleteThreshold. -; FlatLibPageDeletePercentage = 50 - -; Flat Library Page Cleanup Threshold (while creating a library with "vlib") -; Set the number of pages deleted before library cleanup can occur. -; This setting is applied together with FlatLibPageDeletePercentage. -; FlatLibPageDeleteThreshold = 1000 - -[Project] -; Warning -- Do not edit the project properties directly. -; Property names are dynamic in nature and property -; values have special syntax. Changing property data directly -; can result in a corrupt MPF file. All project properties -; can be modified through project window dialogs. -Project_Version = 6 -Project_DefaultLib = work -Project_SortMethod = unused -Project_Files_Count = 56 -Project_File_0 = /nethome/felsabbagh3/research/Vortex/rtl/shared_memory/VX_shared_memory.v -Project_File_P_0 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 0 cover_fsm 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 1 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 54 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_1 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_gpr_clone_inter.v -Project_File_P_1 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 31 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_2 = /nethome/felsabbagh3/research/Vortex/rtl/icarus/vortex_tb.v -Project_File_P_2 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 cover_fsm 0 cover_branch 0 vlog_noload 0 last_compile 0 folder {Top Level} cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 1 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 14 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_3 = /nethome/felsabbagh3/research/Vortex/rtl/VX_front_end.v -Project_File_P_3 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 1572058635 cover_fsm 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 11 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_4 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_lsu_req_inter.v -Project_File_P_4 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 44 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_5 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_branch_response_inter.v -Project_File_P_5 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 23 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_6 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_wstall_inter.v -Project_File_P_6 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 49 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_7 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_gpr_wspawn_inter.v -Project_File_P_7 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 cover_fsm 0 cover_branch 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 35 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_8 = /nethome/felsabbagh3/research/Vortex/rtl/VX_generic_priority_encoder.v -Project_File_P_8 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1572058635 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 12 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_9 = /nethome/felsabbagh3/research/Vortex/rtl/cache/cache_set.v -Project_File_P_9 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 0 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 1 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 16 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_10 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_exec_wb_inter.v -Project_File_P_10 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 39 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_11 = /nethome/felsabbagh3/research/Vortex/rtl/cache/VX_cache_bank_valid.v -Project_File_P_11 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 0 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 1 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 18 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_12 = /nethome/felsabbagh3/research/Vortex/rtl/VX_alu.v -Project_File_P_12 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1571845660 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 2 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_13 = /nethome/felsabbagh3/research/Vortex/rtl/shared_memory/VX_bank_valids.v -Project_File_P_13 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 cover_fsm 0 cover_branch 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 51 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_14 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_join_inter.v -Project_File_P_14 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 43 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_15 = /nethome/felsabbagh3/research/Vortex/rtl/VX_csr_handler.v -Project_File_P_15 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 1571845660 cover_fsm 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 4 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_16 = /nethome/felsabbagh3/research/Vortex/rtl/VX_dmem_controller.v -Project_File_P_16 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 1572058635 cover_fsm 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 8 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_17 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_frE_to_bckE_req_inter.v -Project_File_P_17 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 1571845660 cover_fsm 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 30 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_18 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_exec_unit_req_inter.v -Project_File_P_18 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 29 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_19 = /nethome/felsabbagh3/research/Vortex/rtl/cache/VX_cache_data.v -Project_File_P_19 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 0 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 1 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 20 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_20 = /nethome/felsabbagh3/research/Vortex/rtl/VX_generic_register.v -Project_File_P_20 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1571845660 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 13 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_21 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_jal_response_inter.v -Project_File_P_21 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 42 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_22 = /nethome/felsabbagh3/research/Vortex/rtl/cache/VX_Cache_Bank.v -Project_File_P_22 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 0 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 1 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 17 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_23 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_csr_wb_inter.v -Project_File_P_23 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 25 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_24 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_gpu_inst_req_inter.v -Project_File_P_24 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 36 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_25 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_wb_inter.v -Project_File_P_25 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 48 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_26 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_icache_response_inter.v -Project_File_P_26 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 38 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_27 = /nethome/felsabbagh3/research/Vortex/rtl/VX_csr_wrapper.v -Project_File_P_27 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 1572061058 cover_fsm 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 5 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_28 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_gpr_read_inter.v -Project_File_P_28 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 34 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_29 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_mw_wb_inter.v -Project_File_P_29 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 46 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_30 = /nethome/felsabbagh3/research/Vortex/rtl/byte_enabled_simple_dual_port_ram.v -Project_File_P_30 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 1571845660 cover_fsm 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 0 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_31 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_dcache_request_inter.v -Project_File_P_31 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 26 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_32 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_gpr_data_inter.v -Project_File_P_32 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 32 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_33 = /nethome/felsabbagh3/research/Vortex/rtl/shared_memory/VX_set_bit.v -Project_File_P_33 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 0 cover_fsm 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 1 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 53 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_34 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_dcache_response_inter.v -Project_File_P_34 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 27 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_35 = /nethome/felsabbagh3/research/Vortex/rtl/VX_define.v -Project_File_P_35 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1572058635 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 7 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_36 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_csr_req_inter.v -Project_File_P_36 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 24 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_37 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_mem_wb_inter.v -Project_File_P_37 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 40 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_38 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_icache_request_inter.v -Project_File_P_38 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 37 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_39 = /nethome/felsabbagh3/research/Vortex/rtl/VX_execute_unit.v -Project_File_P_39 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 cover_fsm 0 cover_branch 0 vlog_noload 0 last_compile 0 folder {Top Level} cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 1 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 9 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_40 = /nethome/felsabbagh3/research/Vortex/rtl/cache/bank.v -Project_File_P_40 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 0 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 1 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 15 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_41 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_mem_req_inter.v -Project_File_P_41 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 45 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_42 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_dram_req_rsp_inter.v -Project_File_P_42 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1572058636 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 28 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_43 = /nethome/felsabbagh3/research/Vortex/rtl/shared_memory/VX_priority_encoder_sm.v -Project_File_P_43 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 0 cover_fsm 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 1 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 52 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_44 = /nethome/felsabbagh3/research/Vortex/rtl/VX_back_end.v -Project_File_P_44 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 1572058635 cover_fsm 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 3 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_45 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_warp_ctl_inter.v -Project_File_P_45 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 47 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_46 = /nethome/felsabbagh3/research/Vortex/rtl/cache/VX_Cache_Block_DM.v -Project_File_P_46 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 0 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 1 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 19 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_47 = /nethome/felsabbagh3/research/Vortex/rtl/VX_fetch.v -Project_File_P_47 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 1571845660 cover_fsm 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 10 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_48 = /nethome/felsabbagh3/research/Vortex/rtl/Vortex.v -Project_File_P_48 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 1572058635 cover_fsm 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 1 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_49 = /nethome/felsabbagh3/research/Vortex/rtl/VX_decode.v -Project_File_P_49 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 1571845660 cover_fsm 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 6 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_50 = /nethome/felsabbagh3/research/Vortex/rtl/cache/VX_d_cache_encapsulate.v -Project_File_P_50 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 0 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 1 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 22 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_51 = /nethome/felsabbagh3/research/Vortex/rtl/shared_memory/VX_shared_memory_block.v -Project_File_P_51 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1571845660 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 55 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_52 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_meta_inter.v -Project_File_P_52 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 41 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_File_53 = /nethome/felsabbagh3/research/Vortex/rtl/pipe_regs/VX_d_e_reg.v -Project_File_P_53 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 0 cover_fsm 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 1 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 50 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_54 = /nethome/felsabbagh3/research/Vortex/rtl/cache/VX_d_cache.v -Project_File_P_54 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 cover_fsm 0 cover_branch 0 vlog_noload 0 last_compile 1572058635 folder {Top Level} cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 21 cover_expr 0 dont_compile 0 cover_stmt 0 -Project_File_55 = /nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_gpr_jal_inter.v -Project_File_P_55 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1571845660 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 33 dont_compile 0 cover_expr 0 cover_stmt 0 -Project_Sim_Count = 0 -Project_Folder_Count = 0 -Echo_Compile_Output = 0 -Save_Compile_Report = 1 -Project_Opt_Count = 0 -ForceSoftPaths = 0 -ProjectStatusDelay = 5000 -VERILOG_DoubleClick = Edit -VERILOG_CustomDoubleClick = -SYSTEMVERILOG_DoubleClick = Edit -SYSTEMVERILOG_CustomDoubleClick = -VHDL_DoubleClick = Edit -VHDL_CustomDoubleClick = -PSL_DoubleClick = Edit -PSL_CustomDoubleClick = -TEXT_DoubleClick = Edit -TEXT_CustomDoubleClick = -SYSTEMC_DoubleClick = Edit -SYSTEMC_CustomDoubleClick = -TCL_DoubleClick = Edit -TCL_CustomDoubleClick = -MACRO_DoubleClick = Edit -MACRO_CustomDoubleClick = -VCD_DoubleClick = Edit -VCD_CustomDoubleClick = -SDF_DoubleClick = Edit -SDF_CustomDoubleClick = -XML_DoubleClick = Edit -XML_CustomDoubleClick = -LOGFILE_DoubleClick = Edit -LOGFILE_CustomDoubleClick = -UCDB_DoubleClick = Edit -UCDB_CustomDoubleClick = -TDB_DoubleClick = Edit -TDB_CustomDoubleClick = -UPF_DoubleClick = Edit -UPF_CustomDoubleClick = -PCF_DoubleClick = Edit -PCF_CustomDoubleClick = -PROJECT_DoubleClick = Edit -PROJECT_CustomDoubleClick = -VRM_DoubleClick = Edit -VRM_CustomDoubleClick = -DEBUGDATABASE_DoubleClick = Edit -DEBUGDATABASE_CustomDoubleClick = -DEBUGARCHIVE_DoubleClick = Edit -DEBUGARCHIVE_CustomDoubleClick = -Project_Major_Version = 10 -Project_Minor_Version = 6 diff --git a/hw/old_rtl/modelsim/vortex_dpi.cpp b/hw/old_rtl/modelsim/vortex_dpi.cpp deleted file mode 100644 index 67af68ab..00000000 --- a/hw/old_rtl/modelsim/vortex_dpi.cpp +++ /dev/null @@ -1,328 +0,0 @@ - -// #include - -// #include "VX_define.h" - - -#include <../simulate/ram.h> -#include -#include -#include "svdpi.h" - -#include "../simulate/VX_define.h" - -// #include "vortex_dpi.h" - -extern "C" { - void load_file (char * filename); - void ibus_driver (bool clk, unsigned o_m_read_addr, unsigned o_m_evict_addr, bool o_m_valid, svLogicVecVal * o_m_writedata, bool o_m_read_or_write, unsigned cache_banks, unsigned num_words_per_block, svLogicVecVal * i_m_readdata, bool * i_m_ready); - void dbus_driver (bool clk, unsigned o_m_read_addr, unsigned o_m_evict_addr, bool o_m_valid, svLogicVecVal * o_m_writedata, bool o_m_read_or_write, unsigned cache_banks, unsigned num_words_per_block, svLogicVecVal * i_m_readdata, bool * i_m_ready); - void io_handler (bool clk, bool io_valid, unsigned io_data); - void gracefulExit(int); -} - -RAM ram; -bool refill; -unsigned refill_addr; -bool i_refill; -unsigned i_refill_addr; - -unsigned num_cycles; - -unsigned getIndex(int, int, int); -unsigned calculate_bits_per_bank_num(int); - -unsigned getIndex(int r, int c, int numCols) -{ - return (r * numCols) + c; -} - -unsigned calculate_bits_per_bank_num(int num) -{ - int shifted_num = 0; - for(int i = 0; i < num; i++){ - shifted_num = (shifted_num << 1)| 1 ; - } - return shifted_num; -} - - -void load_file(char * filename) -{ - num_cycles = 0; - // printf("\n\n\n\n**********************\n"); - // printf("Inside load_file\n"); - - fprintf(stderr, "\n\n\n\n**********************\n"); - loadHexImpl(filename, &ram); - // printf("Filename: %s\n", filename); - refill = false; - i_refill = false; -} - -void ibus_driver(bool clk, unsigned o_m_read_addr, unsigned o_m_evict_addr, bool o_m_valid, svLogicVecVal * o_m_writedata, bool o_m_read_or_write, unsigned cache_banks, unsigned num_words_per_block, svLogicVecVal * i_m_readdata, bool * i_m_ready) -{ - - - // Default values - { - s_vpi_vecval * real_i_m_readdata = (s_vpi_vecval *) i_m_readdata; - (*i_m_ready) = false; - for (int i = 0; i < cache_banks; i++) - { - for (int j = 0; j < num_words_per_block; j++) - { - - unsigned index = getIndex(i,j, num_words_per_block); - - real_i_m_readdata[index].aval = 0x506070; - - // svGetArrElemPtr2(i_m_readdata, i, j); - // svPutLogicArrElem2VecVal(i_m_readdata, i, j); - // i_m_readdata[getIndex(i,j, num_words_per_block)] = 0; - } - } - } - - - if (clk) - { - // Do nothing on positive edge - } - else - { - - if (i_refill) - { - // svGetArrElemPtr2((*i_m_readdata), 0,0); - // fprintf(stderr, "--------------------------------\n"); - i_refill = false; - - - *i_m_ready = true; - s_vpi_vecval * real_i_m_readdata = (s_vpi_vecval *) i_m_readdata; - for (int curr_e = 0; curr_e < (cache_banks*num_words_per_block); curr_e++) - { - unsigned new_addr = i_refill_addr + (4*curr_e); - - - unsigned addr_without_byte = new_addr >> 2; - - unsigned bits_per_bank = (int)log2(cache_banks); - // unsigned maskbits_per_bank = calculate_bits_per_bank_num(bits_per_bank); - unsigned maskbits_per_bank = cache_banks - 1; - unsigned bank_num = addr_without_byte & maskbits_per_bank; - unsigned addr_wihtout_bank = addr_without_byte >> bits_per_bank; - unsigned offset_num = addr_wihtout_bank & (num_words_per_block-1); - - unsigned value; - ram.getWord(new_addr, &value); - - fprintf(stdout, "-------- (%x) i_m_readdata[%d][%d] (%d) = %x\n", new_addr, bank_num, offset_num, curr_e, value); - unsigned index = getIndex(bank_num,offset_num, num_words_per_block); - - // fprintf(stderr, "Index: %d (%d, %d) = %x\n", index, bank_num, offset_num, value); - - real_i_m_readdata[index].aval = value; - - } - } - else - { - if (o_m_valid) - { - - s_vpi_vecval * real_o_m_writedata = (s_vpi_vecval *) o_m_writedata; - - if (o_m_read_or_write) - { - // fprintf(stderr, "++++++++++++++++++++++++++++++++\n"); - - for (int curr_e = 0; curr_e < (cache_banks*num_words_per_block); curr_e++) - { - unsigned new_addr = (o_m_evict_addr) + (4*curr_e); - - - unsigned addr_without_byte = new_addr >> 2; - unsigned bits_per_bank = (int)log2(cache_banks); - // unsigned maskbits_per_bank = calculate_bits_per_bank_num(bits_per_bank); - unsigned maskbits_per_bank = cache_banks - 1; - unsigned bank_num = addr_without_byte & maskbits_per_bank; - unsigned addr_wihtout_bank = addr_without_byte >> bits_per_bank; - unsigned offset_num = addr_wihtout_bank & (num_words_per_block-1); - // unsigned offset_num = addr_wihtout_bank & 0x3; - unsigned index = getIndex(bank_num,offset_num, num_words_per_block); - - - - unsigned new_value = real_o_m_writedata[index].aval; - - // new_value = (unsigned *) svGetArrElemPtr2(o_m_writedata, bank_num, offset_num); - // new_value = getElem(o_m_writedata, index); - // unsigned new_value = o_m_writedata[getIndex(bank_num,offset_num, num_words_per_block)]; - - - ram.writeWord( new_addr, &new_value); - - fprintf(stdout, "+++++++ (%x) writeback[%d][%d] (%d) = %x\n", new_addr, bank_num, offset_num, curr_e, new_value); - } - - } - - // Respond next cycle - i_refill = true; - i_refill_addr = o_m_read_addr; - } - } - - } -} - - -void dbus_driver(bool clk, unsigned o_m_read_addr, unsigned o_m_evict_addr, bool o_m_valid, svLogicVecVal * o_m_writedata, bool o_m_read_or_write, unsigned cache_banks, unsigned num_words_per_block, svLogicVecVal * i_m_readdata, bool * i_m_ready) -{ - - - // Default values - { - s_vpi_vecval * real_i_m_readdata = (s_vpi_vecval *) i_m_readdata; - (*i_m_ready) = false; - for (int i = 0; i < cache_banks; i++) - { - for (int j = 0; j < num_words_per_block; j++) - { - - unsigned index = getIndex(i,j, num_words_per_block); - - real_i_m_readdata[index].aval = 0x506070; - - // svGetArrElemPtr2(i_m_readdata, i, j); - // svPutLogicArrElem2VecVal(i_m_readdata, i, j); - // i_m_readdata[getIndex(i,j, num_words_per_block)] = 0; - } - } - } - - - if (clk) - { - // Do nothing on positive edge - } - else - { - - if (refill) - { - // svGetArrElemPtr2((*i_m_readdata), 0,0); - // fprintf(stderr, "--------------------------------\n"); - refill = false; - - - *i_m_ready = true; - s_vpi_vecval * real_i_m_readdata = (s_vpi_vecval *) i_m_readdata; - for (int curr_e = 0; curr_e < (cache_banks*num_words_per_block); curr_e++) - { - unsigned new_addr = refill_addr + (4*curr_e); - - - unsigned addr_without_byte = new_addr >> 2; - - unsigned bits_per_bank = (int)log2(cache_banks); - // unsigned maskbits_per_bank = calculate_bits_per_bank_num(bits_per_bank); - unsigned maskbits_per_bank = cache_banks - 1; - unsigned bank_num = addr_without_byte & maskbits_per_bank; - unsigned addr_wihtout_bank = addr_without_byte >> bits_per_bank; - unsigned offset_num = addr_wihtout_bank & (num_words_per_block-1); - - unsigned value; - ram.getWord(new_addr, &value); - - fprintf(stdout, "-------- (%x) i_m_readdata[%d][%d] (%d) = %x\n", new_addr, bank_num, offset_num, curr_e, value); - unsigned index = getIndex(bank_num,offset_num, num_words_per_block); - - // fprintf(stderr, "Index: %d (%d, %d) = %x\n", index, bank_num, offset_num, value); - - real_i_m_readdata[index].aval = value; - - } - } - else - { - if (o_m_valid) - { - - s_vpi_vecval * real_o_m_writedata = (s_vpi_vecval *) o_m_writedata; - - if (o_m_read_or_write) - { - // fprintf(stderr, "++++++++++++++++++++++++++++++++\n"); - - for (int curr_e = 0; curr_e < (cache_banks*num_words_per_block); curr_e++) - { - unsigned new_addr = (o_m_evict_addr) + (4*curr_e); - - - unsigned addr_without_byte = new_addr >> 2; - unsigned bits_per_bank = (int)log2(cache_banks); - // unsigned maskbits_per_bank = calculate_bits_per_bank_num(bits_per_bank); - unsigned maskbits_per_bank = cache_banks - 1; - unsigned bank_num = addr_without_byte & maskbits_per_bank; - unsigned addr_wihtout_bank = addr_without_byte >> bits_per_bank; - unsigned offset_num = addr_wihtout_bank & (num_words_per_block-1); - // unsigned offset_num = addr_wihtout_bank & 0x3; - unsigned index = getIndex(bank_num,offset_num, num_words_per_block); - - - - unsigned new_value = real_o_m_writedata[index].aval; - - // new_value = (unsigned *) svGetArrElemPtr2(o_m_writedata, bank_num, offset_num); - // new_value = getElem(o_m_writedata, index); - // unsigned new_value = o_m_writedata[getIndex(bank_num,offset_num, num_words_per_block)]; - - - ram.writeWord( new_addr, &new_value); - - fprintf(stdout, "+++++++ (%x) writeback[%d][%d] (%d) = %x\n", new_addr, bank_num, offset_num, curr_e, new_value); - } - - } - - // Respond next cycle - refill = true; - refill_addr = o_m_read_addr; - } - } - - } -} - - -void io_handler(bool clk, bool io_valid, unsigned io_data) -{ - // printf("Inside io_handler\n"); - if (clk) - { - // Do nothing - } - else - { - if (io_valid) - { - uint32_t data_write = (uint32_t) (io_data); - - fprintf(stderr, "%c", (char) data_write); - fflush(stderr); - } - } -} - -void gracefulExit(int cycles) -{ - fprintf(stderr, "*********************\n\n"); - fprintf(stderr, "DPI Cycle Num: %d\tVerilog Cycle Num: %d\n", num_cycles, cycles); -} - - - - diff --git a/hw/old_rtl/modelsim/vortex_dpi.h b/hw/old_rtl/modelsim/vortex_dpi.h deleted file mode 100644 index 4a3509d0..00000000 --- a/hw/old_rtl/modelsim/vortex_dpi.h +++ /dev/null @@ -1,8 +0,0 @@ - -extern "C" { - void load_file (char * filename); - void dbus_driver(bool clk, unsigned o_m_read_addr, unsigned o_m_evict_addr, bool o_m_valid, svLogicVecVal * o_m_writedata, bool o_m_read_or_write, unsigned cache_banks, unsigned num_words_per_block, svLogicVecVal * i_m_readdata, bool * i_m_ready); - void ibus_driver(bool clk, unsigned o_m_read_addr, unsigned o_m_evict_addr, bool o_m_valid, svLogicVecVal * o_m_writedata, bool o_m_read_or_write, unsigned cache_banks, unsigned num_words_per_block, svLogicVecVal * i_m_readdata, bool * i_m_ready); - void io_handler (bool clk, bool io_valid, unsigned io_data); - void gracefulExit(); -} \ No newline at end of file diff --git a/hw/old_rtl/modelsim/vortex_tb.v b/hw/old_rtl/modelsim/vortex_tb.v deleted file mode 100644 index 1db58aed..00000000 --- a/hw/old_rtl/modelsim/vortex_tb.v +++ /dev/null @@ -1,160 +0,0 @@ - -`include "../VX_define.v" - -//`define NUMBER_BANKS 8 -//`define NUM_WORDS_PER_BLOCK 4 - -`define ARM_UD_MODEL - -`timescale 1ns/1ps - -import "DPI-C" load_file = function void load_file(input string filename); - -/* -import "DPI-C" ibus_driver = function void ibus_driver(input logic clk, input int pc_addr, - output int instruction); - */ - -import "DPI-C" ibus_driver = function void ibus_driver( input logic clk, - input int o_m_read_addr, - input int o_m_evict_addr, - input logic o_m_valid, - input reg[31:0] o_m_writedata[`ICACHE_BANKS - 1:0][`ICACHE_NUM_WORDS_PER_BLOCK-1:0], - input logic o_m_read_or_write, - input int cache_banks, - input int words_per_block, - // Rsp - output reg[31:0] i_m_readdata[`ICACHE_BANKS - 1:0][`ICACHE_NUM_WORDS_PER_BLOCK-1:0], - output logic i_m_ready); - -import "DPI-C" dbus_driver = function void dbus_driver( input logic clk, - input int o_m_read_addr, - input int o_m_evict_addr, - input logic o_m_valid, - input reg[31:0] o_m_writedata[`DCACHE_BANKS - 1:0][`DCACHE_NUM_WORDS_PER_BLOCK-1:0], - input logic o_m_read_or_write, - input int cache_banks, - input int words_per_block, - // Rsp - output reg[31:0] i_m_readdata[`DCACHE_BANKS - 1:0][`DCACHE_NUM_WORDS_PER_BLOCK-1:0], - output logic i_m_ready); - - -import "DPI-C" io_handler = function void io_handler(input logic clk, input logic io_valid, input int io_data); - -import "DPI-C" gracefulExit = function void gracefulExit(input int cycle_num); - -module vortex_tb ( - -); - - int cycle_num; - -reg clk; -reg reset; -reg[31:0] icache_response_instruction; -reg[31:0] icache_request_pc_address; -// IO -reg io_valid; -reg[31:0] io_data; -// Req - reg [31:0] o_m_read_addr_d; - reg [31:0] o_m_evict_addr_d; - reg o_m_valid_d; - reg [31:0] o_m_writedata_d[`DCACHE_BANKS - 1:0][`DCACHE_NUM_WORDS_PER_BLOCK-1:0]; - reg o_m_read_or_write_d; - - // Rsp - reg [31:0] i_m_readdata_d[`DCACHE_BANKS - 1:0][`DCACHE_NUM_WORDS_PER_BLOCK-1:0]; - reg i_m_ready_d; - -// Req - reg [31:0] o_m_read_addr_i; - reg [31:0] o_m_evict_addr_i; - reg o_m_valid_i; - reg [31:0] o_m_writedata_i[`ICACHE_BANKS - 1:0][`ICACHE_NUM_WORDS_PER_BLOCK-1:0]; - reg o_m_read_or_write_i; - - // Rsp - reg [31:0] i_m_readdata_i[`ICACHE_BANKS - 1:0][`ICACHE_NUM_WORDS_PER_BLOCK-1:0]; - reg i_m_ready_i; -reg out_ebreak; - - - reg[31:0] hi; - - integer temp; - - initial begin - // $fdumpfile("vortex1.vcd"); - load_file("../../runtime/mains/simple/vx_simple_main.hex"); - // load_file("../../emulator/riscv_tests/rv32ui-p-add.hex"); - //load_file("../../kernel/vortex_test.hex"); - $dumpvars(0, vortex_tb); - reset = 1; - clk = 0; - #5 reset = 1; - clk = 1; - cycle_num = 0; - end - - Vortex vortex( - .clk (clk), - .reset (reset), - .icache_response_instruction (icache_response_instruction), - .icache_request_pc_address (icache_request_pc_address), - .io_valid (io_valid), - .io_data (io_data), - .o_m_read_addr_d (o_m_read_addr_d), - .o_m_evict_addr_d (o_m_evict_addr_d), - .o_m_valid_d (o_m_valid_d), - .o_m_writedata_d (o_m_writedata_d), - .o_m_read_or_write_d (o_m_read_or_write_d), - .i_m_readdata_d (i_m_readdata_d), - .i_m_ready_d (i_m_ready_d), - .o_m_read_addr_i (o_m_read_addr_i), - .o_m_evict_addr_i (o_m_evict_addr_i), - .o_m_valid_i (o_m_valid_i), - .o_m_writedata_i (o_m_writedata_i), - .o_m_read_or_write_i (o_m_read_or_write_i), - .i_m_readdata_i (i_m_readdata_i), - .i_m_ready_i (i_m_ready_i), - .out_ebreak (out_ebreak) - ); - - always @(negedge clk) begin - ibus_driver(clk, o_m_read_addr_i, o_m_evict_addr_i, o_m_valid_i, o_m_writedata_i, o_m_read_or_write_i, `ICACHE_BANKS, `ICACHE_NUM_WORDS_PER_BLOCK, i_m_readdata_i, i_m_ready_i); - dbus_driver(clk, o_m_read_addr_d, o_m_evict_addr_d, o_m_valid_d, o_m_writedata_d, o_m_read_or_write_d, `DCACHE_BANKS, `DCACHE_NUM_WORDS_PER_BLOCK, i_m_readdata_d, i_m_ready_d); - io_handler (clk, io_valid, io_data); - - end - - always @(posedge clk) begin - if (out_ebreak) begin - gracefulExit(cycle_num); - #40 $finish; - end - end - - always @(posedge clk) begin - cycle_num = cycle_num + 1; - end - - always @(clk, posedge reset) begin - if (reset) begin - reset = 0; - clk = 0; - end - - #5 clk <= ~clk; - - end - -endmodule - - - - - - - diff --git a/hw/old_rtl/modelsim/work/_info b/hw/old_rtl/modelsim/work/_info deleted file mode 100644 index 00edac9f..00000000 --- a/hw/old_rtl/modelsim/work/_info +++ /dev/null @@ -1,1084 +0,0 @@ -m255 -K4 -z2 -13 -!s112 1.1 -!i10d 8192 -!i10e 25 -!i10f 100 -cModel Technology -d/nethome/felsabbagh3 -vbyte_enabled_simple_dual_port_ram -Z0 DXx6 sv_std 3 std 0 22 AD7iAPLo6nTIKk>?2fFo2 -R2 -!s105 VX_back_end_v_unit -S1 -R3 -R9 -8/nethome/felsabbagh3/research/Vortex/rtl/VX_back_end.v -F/nethome/felsabbagh3/research/Vortex/rtl/VX_back_end.v -L0 1 -R5 -r1 -!s85 0 -31 -!s108 1572060852.000000 -!s107 /nethome/felsabbagh3/research/Vortex/rtl/VX_back_end.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/VX_back_end.v| -!i113 0 -R7 -R8 -n@v@x_back_end -vVX_bank_valids -R0 -!s110 1572060870 -!i10b 1 -!s100 8J^J:@i9Meh3ejJzoMNRl1 -IVMcgc?onFY87NP^=[feO_0 -R2 -!s105 VX_bank_valids_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/shared_memory/VX_bank_valids.v -F/nethome/felsabbagh3/research/Vortex/rtl/shared_memory/VX_bank_valids.v -L0 4 -R5 -r1 -!s85 0 -31 -!s108 1572060870.000000 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/shared_memory/VX_bank_valids.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/shared_memory/VX_bank_valids.v| -!i113 0 -R7 -R8 -n@v@x_bank_valids -YVX_branch_response_inter -R0 -Z11 !s110 1572060860 -!i10b 1 -!s100 ?IdSOM2]VFSUk;4?QYfAj1 -IRZ9enLe49LL`mLAeG1dL41 -R2 -!s105 VX_branch_response_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_branch_response_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_branch_response_inter.v -L0 8 -R5 -r1 -!s85 0 -31 -Z12 !s108 1572060860.000000 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_branch_response_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_branch_response_inter.v| -!i113 0 -R7 -R8 -n@v@x_branch_response_inter -vVX_Cache_Bank -R0 -!s110 1572060857 -!i10b 1 -!s100 j9_Ic?]NV;A]SX?YSN022 -R2 -!s105 VX_csr_req_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_csr_req_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_csr_req_inter.v -L0 8 -R5 -r1 -!s85 0 -31 -R12 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_csr_req_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_csr_req_inter.v| -!i113 0 -R7 -R8 -n@v@x_csr_req_inter -YVX_csr_wb_inter -R0 -!s110 1572060861 -!i10b 1 -!s100 1VNJF?9koZ[iz<2a_AEIe3 -I_ALoZD>YDHkHgSF>F;>HQ2 -R2 -!s105 VX_csr_wb_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_csr_wb_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_csr_wb_inter.v -L0 8 -R5 -r1 -!s85 0 -31 -!s108 1572060861.000000 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_csr_wb_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_csr_wb_inter.v| -!i113 0 -R7 -R8 -n@v@x_csr_wb_inter -vVX_csr_wrapper -R0 -!s110 1572061082 -!i10b 1 -!s100 LbYbMNCf=0AzhCB>CP4gV1 -ImWJ;a=;GMB9KeJ;cTDEl30 -R2 -!s105 VX_csr_wrapper_v_unit -S1 -R3 -w1572061058 -8/nethome/felsabbagh3/research/Vortex/rtl/VX_csr_wrapper.v -F/nethome/felsabbagh3/research/Vortex/rtl/VX_csr_wrapper.v -L0 3 -R5 -r1 -!s85 0 -31 -!s108 1572061081.000000 -!s107 /nethome/felsabbagh3/research/Vortex/rtl/VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/VX_csr_wrapper.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/VX_csr_wrapper.v| -!i113 0 -R7 -R8 -n@v@x_csr_wrapper -vVX_d_cache -R0 -!s110 1572060859 -!i10b 1 -!s100 OI>VY^XI_AKKhz`Z>2kf=0 -Ih:mHKdjd9hE?1H5WRS>;:2 -R2 -!s105 VX_d_cache_v_unit -S1 -R3 -R9 -8/nethome/felsabbagh3/research/Vortex/rtl/cache/VX_d_cache.v -F/nethome/felsabbagh3/research/Vortex/rtl/cache/VX_d_cache.v -L0 16 -R5 -r1 -!s85 0 -31 -!s108 1572060859.000000 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/cache/VX_d_cache.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/cache/VX_d_cache.v| -!i113 0 -R7 -R8 -n@v@x_d_cache -YVX_dcache_request_inter -R0 -!s110 1572060862 -!i10b 1 -!s100 7cnI6Rc92LVQ67`57EET>1 -IMzzF:AXEm?=JAV9ceXl713 -R2 -!s105 VX_dcache_request_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_dcache_request_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_dcache_request_inter.v -L0 8 -R5 -r1 -!s85 0 -31 -Z13 !s108 1572060862.000000 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_dcache_request_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_dcache_request_inter.v| -!i113 0 -R7 -R8 -n@v@x_dcache_request_inter -YVX_dcache_response_inter -R0 -Z14 !s110 1572060863 -!i10b 1 -!s100 H9LFf[:T8ZFdGUznKiDN_2 -IZ1aNoi`DU3KPgF;LQFF[`3 -R2 -!s105 VX_dcache_response_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_dcache_response_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_dcache_response_inter.v -L0 8 -R5 -r1 -!s85 0 -31 -R13 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_dcache_response_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_dcache_response_inter.v| -!i113 0 -R7 -R8 -n@v@x_dcache_response_inter -vVX_decode -R0 -Z15 !s110 1572060854 -!i10b 1 -!s100 NVHcmOEV]oO`:ha0UUMGZ2 -I_H?4Go:N4bjfOHiN=@mYC3 -R2 -!s105 VX_decode_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/VX_decode.v -F/nethome/felsabbagh3/research/Vortex/rtl/VX_decode.v -L0 4 -R5 -r1 -!s85 0 -31 -Z16 !s108 1572060854.000000 -!s107 /nethome/felsabbagh3/research/Vortex/rtl/VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/VX_decode.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/VX_decode.v| -!i113 0 -R7 -R8 -n@v@x_decode -vVX_dmem_controller -R0 -R15 -!i10b 1 -!s100 RPQH;KGJ9lb=hPcTmNSPlAOAD3 -R2 -!s105 VX_fetch_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/VX_fetch.v -F/nethome/felsabbagh3/research/Vortex/rtl/VX_fetch.v -L0 4 -R5 -r1 -!s85 0 -31 -!s108 1572060855.000000 -!s107 /nethome/felsabbagh3/research/Vortex/rtl/VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/VX_fetch.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/VX_fetch.v| -!i113 0 -R7 -R8 -n@v@x_fetch -YVX_frE_to_bckE_req_inter -R0 -R14 -!i10b 1 -!s100 9@N3T^SL_K01m@5jA4Nh31 -IFoT0^;QA;]9WTCkS<5_TH2 -R2 -!s105 VX_frE_to_bckE_req_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_frE_to_bckE_req_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_frE_to_bckE_req_inter.v -L0 8 -R5 -r1 -!s85 0 -31 -R17 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_frE_to_bckE_req_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_frE_to_bckE_req_inter.v| -!i113 0 -R7 -R8 -n@v@x_fr@e_to_bck@e_req_inter -vVX_front_end -R0 -Z18 !s110 1572060856 -!i10b 1 -!s100 7;7EOV3``ei]nDZMQlPGk0 -I@SFf;nk4B=?86`VOB^@0O0 -R2 -!s105 VX_front_end_v_unit -S1 -R3 -R9 -8/nethome/felsabbagh3/research/Vortex/rtl/VX_front_end.v -F/nethome/felsabbagh3/research/Vortex/rtl/VX_front_end.v -L0 3 -R5 -r1 -!s85 0 -31 -Z19 !s108 1572060856.000000 -!s107 /nethome/felsabbagh3/research/Vortex/rtl/VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/VX_front_end.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/VX_front_end.v| -!i113 0 -R7 -R8 -n@v@x_front_end -vVX_generic_priority_encoder -R0 -R18 -!i10b 1 -!s100 :aK28Kh=@lT9ZCaTamzg>3 -IMZRCchbF_@P0IooMfHhlR3 -R2 -!s105 VX_generic_priority_encoder_v_unit -S1 -R3 -R9 -8/nethome/felsabbagh3/research/Vortex/rtl/VX_generic_priority_encoder.v -F/nethome/felsabbagh3/research/Vortex/rtl/VX_generic_priority_encoder.v -L0 1 -R5 -r1 -!s85 0 -31 -R19 -!s107 /nethome/felsabbagh3/research/Vortex/rtl/VX_generic_priority_encoder.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/VX_generic_priority_encoder.v| -!i113 0 -R7 -R8 -n@v@x_generic_priority_encoder -vVX_generic_register -R0 -R18 -!i10b 1 -!s100 fL2^LczAkWP@cTbY69kFO3 -I@OIJ[h;oQlY1Z]md:O]Ce0 -R2 -!s105 VX_gpr_wspawn_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_gpr_wspawn_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_gpr_wspawn_inter.v -L0 7 -R5 -r1 -!s85 0 -31 -R23 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_gpr_wspawn_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_gpr_wspawn_inter.v| -!i113 0 -R7 -R8 -n@v@x_gpr_wspawn_inter -YVX_gpu_inst_req_inter -R0 -R22 -!i10b 1 -!s100 jcVnabg7Ze4Un5[R73S4^3 -IjoUY9Bcc6eGJkkOZN11l21 -R2 -!s105 VX_gpu_inst_req_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_gpu_inst_req_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_gpu_inst_req_inter.v -L0 7 -R5 -r1 -!s85 0 -31 -R23 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_gpu_inst_req_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_gpu_inst_req_inter.v| -!i113 0 -R7 -R8 -n@v@x_gpu_inst_req_inter -YVX_icache_request_inter -R0 -R22 -!i10b 1 -!s100 0hM8K@;[W3:=Oz64H8G_31 -IaObkPk42UFP9UNAH78DbT1 -R2 -!s105 VX_icache_request_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_icache_request_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_icache_request_inter.v -L0 8 -R5 -r1 -!s85 0 -31 -R23 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_icache_request_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_icache_request_inter.v| -!i113 0 -R7 -R8 -n@v@x_icache_request_inter -YVX_icache_response_inter -R0 -Z24 !s110 1572060867 -!i10b 1 -!s100 EB8b2:S0:KXlokE5O?dK70 -IVc;fhnJfHN`bdcOCabTaL2 -R2 -!s105 VX_icache_response_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_icache_response_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_icache_response_inter.v -L0 8 -R5 -r1 -!s85 0 -31 -Z25 !s108 1572060867.000000 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_icache_response_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_icache_response_inter.v| -!i113 0 -R7 -R8 -n@v@x_icache_response_inter -YVX_inst_exec_wb_inter -R0 -R24 -!i10b 1 -!s100 nOge=]_K`4;kMhR7eddR60 -I=THghFo4g^GNl149SNfhR0 -R2 -!s105 VX_inst_exec_wb_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_exec_wb_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_exec_wb_inter.v -L0 8 -R5 -r1 -!s85 0 -31 -R25 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_exec_wb_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_exec_wb_inter.v| -!i113 0 -R7 -R8 -n@v@x_inst_exec_wb_inter -YVX_inst_mem_wb_inter -R0 -R24 -!i10b 1 -!s100 8:P3XhBMD@mALW[^O64lH0 -IeJ;ki1@RDNUj1 -R2 -!s105 VX_inst_mem_wb_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_mem_wb_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_mem_wb_inter.v -L0 8 -R5 -r1 -!s85 0 -31 -R25 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_mem_wb_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_mem_wb_inter.v| -!i113 0 -R7 -R8 -n@v@x_inst_mem_wb_inter -YVX_inst_meta_inter -R0 -R24 -!i10b 1 -!s100 dUY[BFW==7aoDdYzOfX4T0 -I_jRGl<^:B27il66X2?N?M2 -R2 -!s105 VX_inst_meta_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_meta_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_meta_inter.v -L0 7 -R5 -r1 -!s85 0 -31 -R25 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_meta_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_inst_meta_inter.v| -!i113 0 -R7 -R8 -n@v@x_inst_meta_inter -YVX_jal_response_inter -R0 -Z26 !s110 1572060868 -!i10b 1 -!s100 a2a9H52CnaVl9oW5Ta^3L1 -Im?4OnRiS;gYggKBh2NDQM0 -R2 -!s105 VX_jal_response_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_jal_response_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_jal_response_inter.v -L0 8 -R5 -r1 -!s85 0 -31 -Z27 !s108 1572060868.000000 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_jal_response_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_jal_response_inter.v| -!i113 0 -R7 -R8 -n@v@x_jal_response_inter -YVX_join_inter -R0 -R26 -!i10b 1 -!s100 nCBXlS2G:6=Q[XaVm;MOX2 -INlTJiDP]L4?d^[:lobD6Be0CP2 -I`l^EVY@lSGhGG6g9@;0 -R2 -!s105 VX_lsu_req_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_lsu_req_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_lsu_req_inter.v -L0 8 -R5 -r1 -!s85 0 -31 -R27 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_lsu_req_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_lsu_req_inter.v| -!i113 0 -R7 -R8 -n@v@x_lsu_req_inter -YVX_mem_req_inter -R0 -R26 -!i10b 1 -!s100 FO>D61ZR=8=Q2 -R2 -!s105 VX_mem_req_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_mem_req_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_mem_req_inter.v -L0 7 -R5 -r1 -!s85 0 -31 -R27 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_mem_req_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_mem_req_inter.v| -!i113 0 -R7 -R8 -n@v@x_mem_req_inter -YVX_mw_wb_inter -R0 -Z28 !s110 1572060869 -!i10b 1 -!s100 [0[Le^MnRRZA8ZL;OHdo3z8B05JoaadD_3 -R2 -!s105 VX_wstall_inter_v_unit -S1 -R3 -R4 -8/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_wstall_inter.v -F/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_wstall_inter.v -L0 8 -R5 -r1 -!s85 0 -31 -R29 -!s107 ../VX_define.v|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_wstall_inter.v| -!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/nethome/felsabbagh3/research/Vortex/rtl/interfaces/VX_wstall_inter.v| -!i113 0 -R7 -R8 -n@v@x_wstall_inter diff --git a/hw/old_rtl/modelsim/work/_lib.qdb b/hw/old_rtl/modelsim/work/_lib.qdb deleted file mode 100644 index 4c2a9642259d8e73c964b52e3ad1ff0b5ef8a80e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49152 zcmeI5d2AfleaCmmA!U&@&%JkN-clk(F7KP7NQ#HFqNrOUDNzTtn%NzZl$M9~Eh*7O z3aD_A!wHPYK!Q3+5!cOus7Vm1P8>wCm7{6mq6u81t<$ECjkGReAU*6hkc$BBZ+r&3^_YL9bSxTF+MjRh^jMzwty{Q69n5(AYilEuEF2+ zfAZjsxb6dC-Rq1mA7#I_703fNcA32*53rrAAfufY5&>Y z5g-CYfCvx)B0vO)01+SpM1Tko0U|&Ih`{?z;Cd*3i;FSg4^Jl)HKxrga|;*eVj5q2 zA?`U58lDIRCWc22g#v3I2kMmNYje@S*pZ3QXy`;^Ku@iIA6;Hh=C!~?XlkM{ucic=GM!k+I{GA)_O!gJ5I8{MhKgXge5eD=2h@m|&Y*h-%mPmDpTD z3oFZsMSLG#TkUZB+RMT=F}FzDTBP8ju*KzY2-jN-SXu%$F`?vbLMm=m=C-dW zv1P3-xmEbSJ^9|;90)W93~w-4n^)-SbEMrG=po#u_nZ%hi})z~vxUWN>>c(?_9J$a zeTK!^hu`l5iTWb~M1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CY zfCvx)BJcqx5Ukmnx1`Ky;kgB_#S`3CalKD`@Uxrc*Zbi^0gdoLzLwDV;gSNe>Ji(F zwxGq8#N6V7PZWCvTVgh@@!7>#G`!v%_2i3Pf^A8QN3?~+hDDx|JW2Cb`gsoT* zeOtG#XmJjW76HC3Y{kYt%Rb6h*uStJvp;A5{Q+l6t49Qg01+SpM1Tko0U|&IhyW2F z0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CY;CDozdc&6hDmHxs;5*5W%=`bgJEd^{ zUr65nFYv?te<98Nf6)u~|AmzI|MN@X{y%=Tz_|aPSG?~2|D)`-ZK~v!jeSyXk$nDt z@;~Q)(m%_7=I{5H`QGr|@}2j6#Mj`x@BOLwi{4f5AvVc8^1sU8kgvhgloW6D1Ayg>wLxedFO(&-&ySVN5_{PD~=IIiTzdk zpV}|k+biF#yjS_L%85!=@m9sRDju&mQsFLttNc#+6Xj>hgJt*2eq8o+*=$*NSyAb0 zrC%%k1KB3MTsm4>R`N#4E%yBHXh%}FM1Tko0U|&IhyW2F0z`la5CJ0aJ`re&KC)G4 zs>u`cqC+b~*TNAV4_}QdOYpOAcqu+Nuf$iIqe`N%Zu<6%PYcCO5z8J)Z&!Jt%dmH; zU?0$1SJBRAmADoS&ujCG@zt;zTZ~-Z(94&mZ@=&(p}0%2VoLUy%JV*B#G21TtVQqb zJjSl_gc6IvqXLPI8zZ!U|1X8&=4s16ox!hiq1*7+p96ob-u^kmuWoKTuix~ZwY+E3 zc%j{w4R7li@OJ3!o-w>id?_4Bq*!zDpqV&rB~E8ds679sk!YHN1n%c4Ow3;mUrn|8 zZ@6q3-llKCNyDzqhvV9n&3MF<5cq*m+%jneCNl+~ho6{%2`eyx zff!#--9!Gk85p+$aLENsWB@xmNf-^{fCk2*$=5JPZ1mDPXe9l2A zUkkvQH`TEHs+s7s5`7sHuoYL0MB6S%;M}llEfI+=E~J`-1|f0}=7wG?(wjK~y_k`% zZiwJnzZ)YsSeF;((i~(3FF;Q(!dbt|igjg=!I{mBb#_7wkLXT}MdONb@`>}M&ATV> zp3zxnhn4Ecnt~(x(?+VN9a1U0c^TUc6Y_o!GxdefwY6QDmA&B!s>&9T3`62J` zA@>5z4=q-%C5Ier;iQpkZiXCQLp5U#uLo0ID2#yrE?h%3S^lOBe%PLWF#Iiz;Ky;) zxaLni^~51?2gXr@6==v5fF6Ej1bXTrfcvN(18Q7Zh|Ff1!@pn#gH|w@OAvbegb@tZ zLa;`k=V~z+4I78Wy6fi_{RHzJp*UD)S?f|;RqlVuur>t18q`}2p!H&W5uQcW7T{6U z+9_?B3cCg zzwPxa-f_WndM&3nrBmg73x>1F4Nkl+cB4~2-e;AC=mTrLwH)lv!OuS~%kD~VSNWE1 z!(Q(MJO0GrM7yfM4?GX-!jgIL{)JFn@36d%G+vc&J!5!lD#0u1Br4Ghb)#a9}e3J{{f7WpAE(6z5y{$5J6)L)G3wn|I zXc+#t^QD*;jxNK=a0&Vd>(lSLW9gB1&3vhqFMWu-$_q-2eD6-khxGn;;wE2=4{71V zVpxq_h8HQPkb)Z!g%e9}j}`67Eea=>KQW?B7a)p<#|3kzEL;vlY52J)U%!!srC|Rd z93ElI9!_tE*0&h;KoQtoRj^G(;eClw+*+{@PeftiKz~&v`!0C7gHaKL= zEJLaS>#>fq^heO*x4~ay`D-%xRW7|__}i<&kC$lG=*Roxa}nSS9T)duL{NRdzKyg?^>$BCWv`(Oqo04u|&I;xCHC};@d)TjUC#- z0cXc`*f8LfM2SAV!x%1thyACdr)=!k><;^5c7r{^9%mndN&xS&MK;S6c7~0!LoCF0 zvmVyUf@~Xmll_9d%3fwKvF|e(#QUOpuslgH!{xlitto8%oblihN;TqNg9zm@(+ z`giHyq}QdNNq;N-we$n&uJldm>(ZCmbL?x>Y5g-CYfCvx)B0vO)01+SpM1Tko0V43hBmlQ!w+Nb6C~g&mXcQ$9K~Ytd za2VzMd6emClym1$&Ynd%a|Y$~X_ToclvAfrPM$=WoJ5(JKp7uLIdKBz_;HkD$54(Q zMLBW=f337L?{@l%^(>#zvHe z29)}Glwc60t`4QD3MCLgVGKo_ZP`q9gj|au=Msc}NoK6(G9i_4orJ@3* zyd0&h45hRbrMDMl=S~zwLAh`NrKkv{wiac_4wRZ2l>Y5g-CY zfCvx)B0vO)!2b&ZRbo?(fX~&WDL)d;;!t@cC=QryWGOPD=IB(pvQ2C;+e}wVLM0H*-a`ROpYGC zrIe*Ac4zgdd|+c|sS8r{XE(tU*U2MZU!yc-CwArFQh9H34$o3tqB}>Y%Da-gJaY+& z&fJVD??@i+(QIR*J!h}V+mZ+TTDxh+Mr*ECmA52MW$B7OG-tD@yeWB1>8+$ZLo{af zsJtP`BWnSN`kcKg4@zQXK|?9mAu$VRSLnGX|c*39#Jya zeZ%wDDz9{lK7Gli8V41r7pT0vT|8PNJVYe|B~kXU5h$L}B!;X#p1oed&WCWTyeCN; zs{w4TN^l{IL*-$+2v5DQJ@RhU9we6%8OP82UT(IRtYkmuyw4?jLdd=lNJ6%oVo_8SltLZAO2^O^5n3t&QuVx#GG#hbKJ5?m;?|gR-wAf#@dFS2VXtPB zvl{G^voP_%x6+GLfC^9nDnJFO02QDDRDcRl0V+TRr~nn90#twsPys4H1*iZOpaN8Y z3Qz$mKm{I9V6%;TN0=tt+%+>aJmDEyyJ2`@YGma-+sa#blf}ZNE#cT z@QjZ-Tn%n#m9r()G3{A>-x%NM`FKr@jZJ%IKHhB&uI4u9|Goo$WpZ-5%`2kZWZL+u zQO}0y)f3}0o`IpYGgG*&qyJviK<2$8b+dg=AM=jTb+$S9-j%D1vfiP@KY88irN z(bVFqFKy{^)H=IT9i9!I$%kfE4NZC+ZfB=E+28szI%Ty6@54#>G5in?!2#F@|Ad>c z2X?_u*a6#M3p@;;gBh5D72tut!ezJw7vLQH9tNQY+MyZhpbE;M2o^y$q(L&o0YEf_ z!7K1n2m%3Kz~o)|5BY(-D&LWB%Zu_&`3L!1c|!hNzA9gmFUTLs@5_VoJ94kwEuWNM zkzbOJ$}h-`a;d^wL+CbrGitTLZMutOrcbv zL}95yu|knTp~4b{#R~Zfc?!7-ISSbdSqhm784BqNX$lJ!QWX{`q$ngSBq_{Sa43L+ zR4^3`1zjOpAxa@qAwnTsVV**WLa;)RLZCu{!Xkwsg+T>Bg+zq}g?NQHg;<3c1)D;c zLZ}6Q7}k39Mh)J!?)A4rjdc${17aZ@Zh)_K$Nrl9oxC7lle5+x`tQj-@(KBfbw_@= z?149|d+|SmBeFr3!U35h6J@mYmzsIQoHgGxe{H^EK5yf^_v(#$`Dgrrr7xobRDcRl0V+TRr~nn90#twsPys4H1*iZO zpaN8Y3Qz$mKn17(6`%s2R=~Q0HrI#QJO&@{6D#b@hucQIlK4oj7{@W<6~X(YSdL@Z z>mYAmFUD{TdIj?O-v|$m0h>3kd0mX+=x6ENwM&fP=wo@jdPof8=;ejHGF}Yf=wYXL zgj;rTAni=%x`JI}fydT_MylRP6{ zbmMT_T6yYe(S@UxFXJgIMJJ9HR=|_9L)I0Uigp}LY$H#2M6}^(Wc@roPPlP2 zu!}slQncczXV38Y&xjTrb-a;-TQuXSWmmbmOf=!B;Z0nR5REuo>>7_s5)C-2nZYCH zih3MX+8rJdBIZsWAAPf`8YD!FndQAc{noo8|*Jmk&7dpx3NptMGlTMUdG-! zEV6MdWM|pMvmy&eDqq9SdqgIV1?*k+$Ipul94Tx+J9k#3<49&Z*x4Gf(9V3hEiv#K zJKiHw@s%Xw1bgmlA^}H?Z4DcX6!AFbTiOs zJ`nS9m;tv~?j7O4VFYhyaZ>_t=z%L(m|d871yS<`8QU*(9MSqJZ8qQAu-@jwqV3)i z52Cz8Bz|F}Z?JYDK}6t)@XpiDTo>Uu!UHC?<6A^1j?jQ>+L6U#9*%h;OnWw7gy0AX zU7$U2M+D;t4&0-CvEMI94Ibokd%edm5RU`x0c$#7qb98L0rs5}Vky4A!1_VpH{mHf zKiB@R5wQ%<5AmmX>v?ZKYxpof4p;CEzLvey@LZygNWpg|m|NM7xgr@yym^C7MTsOF zakgo;@_2z1nc0o^|b$T7=mtaLaX(Be=+1+pA1Nb7|?q zK0UBdCPuu?^MWM%A~X>RM2>&8V6tl&cX{-GHj9M^)CLoVBQm z8dSLpRaT8EtwNPlqLw;Q#TBTca#Ud%YDp<-aS1BF2$ffe%3XrWS&YgqKxHjLW#*$Y z@=)oysI(l^!faG(7HUBzDkTGzoNmdNB`(C3l!}@kk8;GJAQmNKQ09D;;XvtN$(Kc$ zsAwHeMjNOoiHeLwMMR*&!%?B3sCn~HAt9*XU{p{LDliaLuoShZ7&WvEH8_Uy^Ft-3 dp%PM1@yV#TBvfo7DkcG?p8wbE43ERY{sR=L6dwQp diff --git a/hw/old_rtl/modelsim/work/_lib1_0.qpg b/hw/old_rtl/modelsim/work/_lib1_0.qpg deleted file mode 100644 index 913607dc64d29c3e211335dfc8c2730e83e6e71b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65536 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%0AN%9Hhw(kt4O{x<{w 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 IxIh0t0wT1p#{d8T diff --git a/hw/old_rtl/modelsim/work/_lib1_0.qtl b/hw/old_rtl/modelsim/work/_lib1_0.qtl deleted file mode 100644 index d0d623062516b0f47f593e7d495ee858358c83b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158073 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

-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 - -$(PROJECT).syn.rpt: syn.chg $(SOURCE_FILES) - /tools/reconfig/intel/18.0/quartus/bin/quartus_syn $(PROJECT) $(SYN_ARGS) - $(STAMP) fit.chg - -$(PROJECT).fit.rpt: fit.chg $(PROJECT).syn.rpt - /tools/reconfig/intel/18.0/quartus/bin/quartus_fit $(PROJECT) $(FIT_ARGS) - $(STAMP) asm.chg - $(STAMP) sta.chg - -$(PROJECT).asm.rpt: asm.chg $(PROJECT).fit.rpt - /tools/reconfig/intel/18.0/quartus/bin/quartus_asm $(PROJECT) $(ASM_ARGS) - -$(PROJECT).sta.rpt: sta.chg $(PROJECT).fit.rpt - /tools/reconfig/intel/18.0/quartus/bin/quartus_sta $(PROJECT) $(STA_ARGS) - -smart.log: $(PROJECT_FILES) - /tools/reconfig/intel/18.0/quartus/bin/quartus_sh --determine_smart_action $(PROJECT) > smart.log - -# Project initialization -$(PROJECT_FILES): - /tools/reconfig/intel/18.0/quartus/bin/quartus_sh -t project.tcl -project $(PROJECT) -family $(FAMILY) -device $(DEVICE) -top $(TOP_LEVEL_ENTITY) -src $(SRC_FILE) -sdc ../project.sdc - -syn.chg: - $(STAMP) syn.chg - -fit.chg: - $(STAMP) fit.chg - -sta.chg: - $(STAMP) sta.chg - -asm.chg: - $(STAMP) asm.chg - -program: $(PROJECT).sof - quartus_pgm --no_banner --mode=jtag -o "P;$(PROJECT).sof" - -clean: - rm -rf *.rpt *.chg *.qsf *.qpf smart.log *.htm *.eqn *.pin *.sof *.pof qdb incremental_db output_files tmp-clearbox diff --git a/hw/old_rtl/quartus/VX_gpr_syn.qpf b/hw/old_rtl/quartus/VX_gpr_syn.qpf deleted file mode 100644 index 8938d2a9..00000000 --- a/hw/old_rtl/quartus/VX_gpr_syn.qpf +++ /dev/null @@ -1,30 +0,0 @@ -# -------------------------------------------------------------------------- # -# -# Copyright (C) 2018 Intel Corporation. All rights reserved. -# Your use of Intel Corporation's design tools, logic functions -# and other software and tools, and its AMPP partner logic -# functions, and any output files from any of the foregoing -# (including device programming or simulation files), and any -# associated documentation or information are expressly subject -# to the terms and conditions of the Intel Program License -# Subscription Agreement, the Intel Quartus Prime License Agreement, -# the Intel FPGA IP License Agreement, or other applicable license -# agreement, including, without limitation, that your use is for -# the sole purpose of programming logic devices manufactured by -# Intel and sold by Intel or its authorized distributors. Please -# refer to the applicable agreement for further details. -# -# -------------------------------------------------------------------------- # -# -# Quartus Prime -# Version 18.0.0 Build 219 04/25/2018 SJ Pro Edition -# Date created = 00:18:19 September 11, 2019 -# -# -------------------------------------------------------------------------- # - -QUARTUS_VERSION = "18.0" -DATE = "00:18:19 September 11, 2019" - -# Revisions - -PROJECT_REVISION = "VX_gpr_syn" diff --git a/hw/old_rtl/quartus/VX_gpr_syn.qsf b/hw/old_rtl/quartus/VX_gpr_syn.qsf deleted file mode 100644 index 26b4649b..00000000 --- a/hw/old_rtl/quartus/VX_gpr_syn.qsf +++ /dev/null @@ -1,63 +0,0 @@ -set_global_assignment -name ORIGINAL_QUARTUS_VERSION 18.0.0 -set_global_assignment -name PROJECT_CREATION_TIME_DATE "00:18:19 SEPTEMBER 11, 2019" -set_global_assignment -name LAST_QUARTUS_VERSION "18.0.0 Pro Edition" -set_global_assignment -name FAMILY "Arria 10" -set_global_assignment -name DEVICE 10AX115N4F45I3SG -set_global_assignment -name TOP_LEVEL_ENTITY VX_gpr_syn -set_global_assignment -name SEARCH_PATH ../ -set_global_assignment -name VERILOG_FILE ../VX_define.v -set_global_assignment -name VERILOG_FILE ../byte_enabled_simple_dual_port_ram.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_branch_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_csr_write_request_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_dcache_request_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_dcache_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_csr_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_exe_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_mem_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_reqeust_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_frE_to_bckE_req_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_clone_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_jal_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_read_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_wspawn_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_icache_request_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_icache_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_inst_mem_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_inst_meta_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_jal_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_mem_req_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_mw_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_warp_ctl_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_wb_inter.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_d_e_reg.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_e_m_reg.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_f_d_reg.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_m_w_reg.v -set_global_assignment -name VERILOG_FILE ../VX_alu.v -set_global_assignment -name VERILOG_FILE ../VX_back_end.v -set_global_assignment -name VERILOG_FILE ../VX_context.v -set_global_assignment -name VERILOG_FILE ../VX_context_slave.v -set_global_assignment -name VERILOG_FILE ../VX_csr_handler.v -set_global_assignment -name VERILOG_FILE ../VX_decode.v -set_global_assignment -name VERILOG_FILE ../VX_execute.v -set_global_assignment -name VERILOG_FILE ../VX_fetch.v -set_global_assignment -name VERILOG_FILE ../VX_forwarding.v -set_global_assignment -name VERILOG_FILE ../VX_front_end.v -set_global_assignment -name VERILOG_FILE ../VX_generic_register.v -set_global_assignment -name VERILOG_FILE ../VX_gpr.v -set_global_assignment -name VERILOG_FILE ../VX_gpr_wrapper.v -set_global_assignment -name VERILOG_FILE ../VX_gpr_syn.v -set_global_assignment -name VERILOG_FILE ../VX_memory.v -set_global_assignment -name VERILOG_FILE ../VX_register_file.v -set_global_assignment -name VERILOG_FILE ../VX_register_file_master_slave.v -set_global_assignment -name VERILOG_FILE ../VX_register_file_slave.v -set_global_assignment -name VERILOG_FILE ../VX_warp.v -set_global_assignment -name VERILOG_FILE ../VX_writeback.v -set_global_assignment -name VERILOG_FILE ../Vortex.v -set_global_assignment -name SDC_FILE vortex.sdc -set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2009 -set_global_assignment -name MAX_CORE_JUNCTION_TEMP 100 -set_global_assignment -name PROJECT_OUTPUT_DIRECTORY bin -set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL diff --git a/hw/old_rtl/quartus/asm.chg b/hw/old_rtl/quartus/asm.chg deleted file mode 100644 index 19f86f49..00000000 --- a/hw/old_rtl/quartus/asm.chg +++ /dev/null @@ -1 +0,0 @@ -done diff --git a/hw/old_rtl/quartus/fit.chg b/hw/old_rtl/quartus/fit.chg deleted file mode 100644 index 19f86f49..00000000 --- a/hw/old_rtl/quartus/fit.chg +++ /dev/null @@ -1 +0,0 @@ -done diff --git a/hw/old_rtl/quartus/map.chg b/hw/old_rtl/quartus/map.chg deleted file mode 100644 index d155914e..00000000 --- a/hw/old_rtl/quartus/map.chg +++ /dev/null @@ -1 +0,0 @@ -Wed Sep 11 00:18:22 2019 diff --git a/hw/old_rtl/quartus/project.tcl b/hw/old_rtl/quartus/project.tcl deleted file mode 100644 index 49e1d8ac..00000000 --- a/hw/old_rtl/quartus/project.tcl +++ /dev/null @@ -1,88 +0,0 @@ -package require cmdline - -set options { \ - { "project.arg" "" "Project name" } \ - { "family.arg" "" "Device family name" } \ - { "device.arg" "" "Device name" } \ - { "top.arg" "" "Top level module" } \ - { "sdc.arg" "" "Timing Design Constraints file" } \ - { "src.arg" "" "Verilog source file" } \ -} - -array set opts [::cmdline::getoptions quartus(args) $options] - -project_new $opts(project) -overwrite - -set_global_assignment -name FAMILY $opts(family) -set_global_assignment -name DEVICE $opts(device) -set_global_assignment -name TOP_LEVEL_ENTITY $opts(top) - -set_global_assignment -name SEARCH_PATH ../ - -set_global_assignment -name VERILOG_FILE ../VX_define.v - -set_global_assignment -name VERILOG_FILE ../byte_enabled_simple_dual_port_ram.v - -set_global_assignment -name VERILOG_FILE ../interfaces/VX_branch_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_csr_write_request_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_dcache_request_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_dcache_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_csr_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_exe_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_mem_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_reqeust_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_frE_to_bckE_req_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_clone_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_jal_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_read_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_wspawn_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_icache_request_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_icache_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_inst_mem_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_inst_meta_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_jal_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_mem_req_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_mw_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_warp_ctl_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_wb_inter.v - -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_d_e_reg.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_e_m_reg.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_f_d_reg.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_m_w_reg.v - -set_global_assignment -name VERILOG_FILE ../VX_alu.v -set_global_assignment -name VERILOG_FILE ../VX_back_end.v -set_global_assignment -name VERILOG_FILE ../VX_context.v -set_global_assignment -name VERILOG_FILE ../VX_context_slave.v -set_global_assignment -name VERILOG_FILE ../VX_csr_handler.v -set_global_assignment -name VERILOG_FILE ../VX_decode.v -set_global_assignment -name VERILOG_FILE ../VX_define.v -set_global_assignment -name VERILOG_FILE ../VX_execute.v -set_global_assignment -name VERILOG_FILE ../VX_fetch.v -set_global_assignment -name VERILOG_FILE ../VX_forwarding.v -set_global_assignment -name VERILOG_FILE ../VX_front_end.v -set_global_assignment -name VERILOG_FILE ../VX_generic_register.v -set_global_assignment -name VERILOG_FILE ../VX_gpr.v -set_global_assignment -name VERILOG_FILE ../VX_gpr_wrapper.v -set_global_assignment -name VERILOG_FILE ../VX_gpr_syn.v -set_global_assignment -name VERILOG_FILE ../VX_memory.v -set_global_assignment -name VERILOG_FILE ../VX_register_file.v -set_global_assignment -name VERILOG_FILE ../VX_register_file_master_slave.v -set_global_assignment -name VERILOG_FILE ../VX_register_file_slave.v -set_global_assignment -name VERILOG_FILE ../VX_warp.v -set_global_assignment -name VERILOG_FILE ../VX_writeback.v -set_global_assignment -name VERILOG_FILE ../Vortex.v - -set_global_assignment -name SDC_FILE vortex.sdc -set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2009 -set_global_assignment -name MAX_CORE_JUNCTION_TEMP 100 -set_global_assignment -name PROJECT_OUTPUT_DIRECTORY bin -set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL - -project_close - -# set_global_assignment -name VERILOG_FILE $opts(src) - diff --git a/hw/old_rtl/quartus/smart.log b/hw/old_rtl/quartus/smart.log deleted file mode 100644 index 540778b5..00000000 --- a/hw/old_rtl/quartus/smart.log +++ /dev/null @@ -1,27 +0,0 @@ -Info (292036): Thank you for using the Quartus Prime software 30-day evaluation. You have 0 days remaining (until Sep 11, 2019) to use the Quartus Prime software with compilation and simulation support. -Info: ******************************************************************* -Info: Running Quartus Prime Shell - Info: Version 18.0.0 Build 219 04/25/2018 SJ Pro Edition - Info: Copyright (C) 2018 Intel Corporation. All rights reserved. - Info: Your use of Intel Corporation's design tools, logic functions - Info: and other software and tools, and its AMPP partner logic - Info: functions, and any output files from any of the foregoing - Info: (including device programming or simulation files), and any - Info: associated documentation or information are expressly subject - Info: to the terms and conditions of the Intel Program License - Info: Subscription Agreement, the Intel Quartus Prime License Agreement, - Info: the Intel FPGA IP License Agreement, or other applicable license - Info: agreement, including, without limitation, that your use is for - Info: the sole purpose of programming logic devices manufactured by - Info: Intel and sold by Intel or its authorized distributors. Please - Info: refer to the applicable agreement for further details. - Info: Processing started: Wed Sep 11 00:18:22 2019 -Info: Command: quartus_sh --determine_smart_action VX_gpr_syn -Info: Quartus(args): VX_gpr_syn -Info: SMART_ACTION = SOURCE -Info (23030): Evaluation of Tcl script /tools/reconfig/intel/18.0/quartus/common/tcl/internal/qsh_smart.tcl was successful -Info: Quartus Prime Shell was successful. 0 errors, 0 warnings - Info: Peak virtual memory: 687 megabytes - Info: Processing ended: Wed Sep 11 00:18:22 2019 - Info: Elapsed time: 00:00:00 - Info: Total CPU time (on all processors): 00:00:00 diff --git a/hw/old_rtl/quartus/sta.chg b/hw/old_rtl/quartus/sta.chg deleted file mode 100644 index 19f86f49..00000000 --- a/hw/old_rtl/quartus/sta.chg +++ /dev/null @@ -1 +0,0 @@ -done diff --git a/hw/old_rtl/quartus/syn.chg b/hw/old_rtl/quartus/syn.chg deleted file mode 100644 index 19f86f49..00000000 --- a/hw/old_rtl/quartus/syn.chg +++ /dev/null @@ -1 +0,0 @@ -done diff --git a/hw/old_rtl/quartus/vortex.ini b/hw/old_rtl/quartus/vortex.ini deleted file mode 100644 index e2fb4516..00000000 --- a/hw/old_rtl/quartus/vortex.ini +++ /dev/null @@ -1,40 +0,0 @@ -load_package flow - - -set_global_assignment -name VERILOG_FILE ../VX_gpr_wrapper.v -set_global_assignment -name VERILOG_FILE ../VX_gpr.v -set_global_assignment -name SDC_FILE vortex.sdc -set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2009 -set_global_assignment -name MAX_CORE_JUNCTION_TEMP 80 -set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files -set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL - -# pins configuration -package require cmdline - -proc make_all_pins_virtual { args } { - - set options {\ - { "exclude.arg" "" "List of signals to exclude" } \ - } - array set opts [::cmdline::getoptions quartus(args) $options] - - remove_all_instance_assignments -name VIRTUAL_PIN - execute_module -tool map - set name_ids [get_names -filter * -node_type pin] - - foreach_in_collection name_id $name_ids { - set pin_name [get_name_info -info full_path $name_id] - - if { -1 == [lsearch -exact $opts(excludes) $pin_name] } { - post_message "Making VIRTUAL_PIN assignment to $pin_name" - set_instance_assignment -to $pin_name -name VIRTUAL_PIN ON - } else { - post_message "Skipping VIRTUAL_PIN assignment to $pin_name" - } - } - export_assignments -} - - -make_all_pins_virtual -exclude { clk, reset } \ No newline at end of file diff --git a/hw/old_rtl/quartus/vortex.sdc b/hw/old_rtl/quartus/vortex.sdc deleted file mode 100644 index eafe4ff7..00000000 --- a/hw/old_rtl/quartus/vortex.sdc +++ /dev/null @@ -1 +0,0 @@ -create_clock -name {clk} -period "400 MHz" -waveform { 0.0 1.0 } [get_ports {clk}] diff --git a/hw/old_rtl/simulate/VX_define.h b/hw/old_rtl/simulate/VX_define.h deleted file mode 100644 index ed10c77f..00000000 --- a/hw/old_rtl/simulate/VX_define.h +++ /dev/null @@ -1,100 +0,0 @@ -#define NT 4 -#define NT_M1 (NT-1) - -#define NW 8 - -#define CACHE_NUM_BANKS 8 -#define CACHE_WORDS_PER_BLOCK 4 - -#define R_INST 51 -#define L_INST 3 -#define ALU_INST 19 -#define S_INST 35 -#define B_INST 99 -#define LUI_INST 55 -#define AUIPC_INST 23 -#define JAL_INST 111 -#define JALR_INST 103 -#define SYS_INST 115 - - -#define WB_ALU 1 -#define WB_MEM 2 -#define WB_JAL 3 -#define NO_WB 0 - - -#define RS2_IMMED 1 -#define RS2_REG 0 - - -#define NO_MEM_READ 7 -#define LB_MEM_READ 0 -#define LH_MEM_READ 1 -#define LW_MEM_READ 2 -#define LBU_MEM_READ 4 -#define LHU_MEM_READ 5 - - -#define NO_MEM_WRITE 7 -#define SB_MEM_WRITE 0 -#define SH_MEM_WRITE 1 -#define SW_MEM_WRITE 2 - - -#define NO_BRANCH 0 -#define BEQ 1 -#define BNE 2 -#define BLT 3 -#define BGT 4 -#define BLTU 5 -#define BGTU 6 - - -#define NO_ALU 15 -#define ADD 0 -#define SUB 1 -#define SLLA 2 -#define SLT 3 -#define SLTU 4 -#define XOR 5 -#define SRL 6 -#define SRA 7 -#define OR 8 -#define AND 9 -#define SUBU 10 -#define LUI_ALU 11 -#define AUIPC_ALU 12 -#define CSR_ALU_RW 13 -#define CSR_ALU_RS 14 -#define CSR_ALU_RC 15 - - - -// WRITEBACK -#define WB_ALU 1 -#define WB_MEM 2 -#define WB_JAL 3 -#define NO_WB 0 - - -// JAL -#define JUMP 1 -#define NO_JUMP 0 - -// STALLS -#define STALL 1 -#define NO_STALL 0 - - -#define TAKEN 1 -#define NOT_TAKEN 0 - - -#define ZERO_REG 0 - - -// COLORS -#define GREEN "\033[32m" -#define RED "\033[31m" -#define DEFAULT "\033[39m" diff --git a/hw/old_rtl/simulate/ram.h b/hw/old_rtl/simulate/ram.h deleted file mode 100644 index 13f78e94..00000000 --- a/hw/old_rtl/simulate/ram.h +++ /dev/null @@ -1,245 +0,0 @@ -#ifndef __RAM__ - -#define __RAM__ - -// #include "string.h" -#include -#include -// #include - -// #define NULL 0 - -class RAM; - -uint32_t hti(char); -uint32_t hToI(char *, uint32_t); -void loadHexImpl(char *,RAM*); - -class RAM{ -public: - uint8_t* mem[1 << 12]; - - RAM(){ - for(uint32_t i = 0;i < (1 << 12);i++) mem[i] = NULL; - } - ~RAM(){ - for(uint32_t i = 0;i < (1 << 12);i++) if(mem[i]) delete [] mem[i]; - } - - void clear(){ - for(uint32_t i = 0;i < (1 << 12);i++) - { - if(mem[i]) - { - delete mem[i]; - mem[i] = NULL; - } - } - } - - uint8_t* get(uint32_t address){ - - if(mem[address >> 20] == NULL) { - uint8_t* ptr = new uint8_t[1024*1024]; - for(uint32_t i = 0;i < 1024*1024;i+=4) { - ptr[i + 0] = 0x00; - ptr[i + 1] = 0x00; - ptr[i + 2] = 0x00; - ptr[i + 3] = 0x00; - } - mem[address >> 20] = ptr; - } - return &mem[address >> 20][address & 0xFFFFF]; - } - - void read(uint32_t address,uint32_t length, uint8_t *data){ - for(unsigned i = 0;i < length;i++){ - data[i] = (*this)[address + i]; - } - } - - void write(uint32_t address,uint32_t length, uint8_t *data){ - for(unsigned i = 0;i < length;i++){ - (*this)[address + i] = data[i]; - } - } - - void getBlock(uint32_t address, uint8_t *data) - { - uint32_t block_number = address & 0xffffff00; // To zero out block offset - uint32_t bytes_num = 256; - - this->read(block_number, bytes_num, data); - } - - void getWord(uint32_t address, uint32_t * data) - { - data[0] = 0; - - uint8_t first = *get(address + 0); - uint8_t second = *get(address + 1); - uint8_t third = *get(address + 2); - uint8_t fourth = *get(address + 3); - - // uint8_t hi = (uint8_t) *get(address + 0); - // std::cout << "RAM: READING ADDRESS " << address + 0 << " DATA: " << hi << "\n"; - // hi = (uint8_t) *get(address + 1); - // std::cout << "RAM: READING ADDRESS " << address + 1 << " DATA: " << hi << "\n"; - // hi = (uint8_t) *get(address + 2); - // std::cout << "RAM: READING ADDRESS " << address + 2 << " DATA: " << hi << "\n"; - // hi = (uint8_t) *get(address + 3); - // std::cout << "RAM: READING ADDRESS " << address + 3 << " DATA: " << hi << "\n"; - - data[0] = (data[0] << 0) | fourth; - data[0] = (data[0] << 8) | third; - data[0] = (data[0] << 8) | second; - data[0] = (data[0] << 8) | first; - - } - - void writeWord(uint32_t address, uint32_t * data) - { - uint32_t data_to_write = *data; - - uint32_t byte_mask = 0xFF; - - for (int i = 0; i < 4; i++) - { - // std::cout << "RAM: DATA TO WRITE " << data_to_write << "\n"; - // std::cout << "RAM: DATA TO MASK " << byte_mask << "\n"; - // std::cout << "RAM: WRITING ADDRESS " << address + i << " DATA: " << (data_to_write & byte_mask) << "\n"; - (*this)[address + i] = data_to_write & byte_mask; - data_to_write = data_to_write >> 8; - } - } - - void writeHalf(uint32_t address, uint32_t * data) - { - uint32_t data_to_write = *data; - - uint32_t byte_mask = 0xFF; - - for (int i = 0; i < 2; i++) - { - // std::cout << "RAM: DATA TO WRITE " << data_to_write << "\n"; - // std::cout << "RAM: DATA TO MASK " << byte_mask << "\n"; - // std::cout << "RAM: WRITING ADDRESS " << address + i << " DATA: " << (data_to_write & byte_mask) << "\n"; - (*this)[address + i] = data_to_write & byte_mask; - data_to_write = data_to_write >> 8; - } - } - - void writeByte(uint32_t address, uint32_t * data) - { - uint32_t data_to_write = *data; - - uint32_t byte_mask = 0xFF; - - (*this)[address] = data_to_write & byte_mask; - data_to_write = data_to_write >> 8; - - } - - uint8_t& operator [](uint32_t address) { - return *get(address); - } - -}; - - -// MEMORY UTILS - -uint32_t hti(char c) { - if (c >= 'A' && c <= 'F') - return c - 'A' + 10; - if (c >= 'a' && c <= 'f') - return c - 'a' + 10; - return c - '0'; -} - -uint32_t hToI(char *c, uint32_t size) { - uint32_t value = 0; - for (uint32_t i = 0; i < size; i++) { - value += hti(c[i]) << ((size - i - 1) * 4); - } - return value; -} - - - -void loadHexImpl(const char *path, RAM* mem) { - mem->clear(); - FILE *fp = fopen(path, "r"); - if(fp == 0){ - printf("Path not found %s\n", path); - return; - // std::cout << path << " not found" << std::endl; - } - //Preload 0x0 <-> 0x80000000 jumps - ((uint32_t*)mem->get(0))[1] = 0xf1401073; - - ((uint32_t*)mem->get(0))[2] = 0x30101073; - - ((uint32_t*)mem->get(0))[3] = 0x800000b7; - ((uint32_t*)mem->get(0))[4] = 0x000080e7; - - ((uint32_t*)mem->get(0x80000000))[0] = 0x00000097; - - ((uint32_t*)mem->get(0xb0000000))[0] = 0x01C02023; - // F00FFF10 - ((uint32_t*)mem->get(0xf00fff10))[0] = 0x12345678; - - - - - fseek(fp, 0, SEEK_END); - uint32_t size = ftell(fp); - fseek(fp, 0, SEEK_SET); - char* content = new char[size]; - fread(content, 1, size, fp); - - int offset = 0; - char* line = content; - // std::cout << "WHTA\n"; - while (1) { - if (line[0] == ':') { - uint32_t byteCount = hToI(line + 1, 2); - uint32_t nextAddr = hToI(line + 3, 4) + offset; - uint32_t key = hToI(line + 7, 2); - switch (key) { - case 0: - for (uint32_t i = 0; i < byteCount; i++) { - - unsigned add = nextAddr + i; - - *(mem->get(add)) = hToI(line + 9 + i * 2, 2); - } - break; - case 2: -// cout << offset << endl; - offset = hToI(line + 9, 4) << 4; - break; - case 4: -// cout << offset << endl; - offset = hToI(line + 9, 4) << 16; - break; - default: -// cout << "??? " << key << endl; - break; - } - } - - while (*line != '\n' && size != 0) { - line++; - size--; - } - if (size <= 1) - break; - line++; - size--; - } - - if (content) delete[] content; -} - -#endif \ No newline at end of file diff --git a/hw/old_rtl/simulate/tb_debug.h b/hw/old_rtl/simulate/tb_debug.h deleted file mode 100644 index 711663cc..00000000 --- a/hw/old_rtl/simulate/tb_debug.h +++ /dev/null @@ -1 +0,0 @@ -#define VCD_OFF diff --git a/hw/old_rtl/simulate/test_bench.cpp b/hw/old_rtl/simulate/test_bench.cpp deleted file mode 100644 index 2becfb89..00000000 --- a/hw/old_rtl/simulate/test_bench.cpp +++ /dev/null @@ -1,105 +0,0 @@ -#include "test_bench.h" - -#define NUM_TESTS 46 - -int main(int argc, char **argv) -{ - - // Verilated::debug(1); - - Verilated::commandArgs(argc, argv); - - Verilated::traceEverOn(true); - - -#define ALL_TESTS -#ifdef ALL_TESTS - bool passed = true; - std::string tests[NUM_TESTS] = { - "../../emulator/riscv_tests/rv32ui-p-add.hex", - "../../emulator/riscv_tests/rv32ui-p-addi.hex", - "../../emulator/riscv_tests/rv32ui-p-and.hex", - "../../emulator/riscv_tests/rv32ui-p-andi.hex", - "../../emulator/riscv_tests/rv32ui-p-auipc.hex", - "../../emulator/riscv_tests/rv32ui-p-beq.hex", - "../../emulator/riscv_tests/rv32ui-p-bge.hex", - "../../emulator/riscv_tests/rv32ui-p-bgeu.hex", - "../../emulator/riscv_tests/rv32ui-p-blt.hex", - "../../emulator/riscv_tests/rv32ui-p-bltu.hex", - "../../emulator/riscv_tests/rv32ui-p-bne.hex", - "../../emulator/riscv_tests/rv32ui-p-jal.hex", - "../../emulator/riscv_tests/rv32ui-p-jalr.hex", - "../../emulator/riscv_tests/rv32ui-p-lb.hex", - "../../emulator/riscv_tests/rv32ui-p-lbu.hex", - "../../emulator/riscv_tests/rv32ui-p-lh.hex", - "../../emulator/riscv_tests/rv32ui-p-lhu.hex", - "../../emulator/riscv_tests/rv32ui-p-lui.hex", - "../../emulator/riscv_tests/rv32ui-p-lw.hex", - "../../emulator/riscv_tests/rv32ui-p-or.hex", - "../../emulator/riscv_tests/rv32ui-p-ori.hex", - "../../emulator/riscv_tests/rv32ui-p-sb.hex", - "../../emulator/riscv_tests/rv32ui-p-sh.hex", - "../../emulator/riscv_tests/rv32ui-p-simple.hex", - "../../emulator/riscv_tests/rv32ui-p-sll.hex", - "../../emulator/riscv_tests/rv32ui-p-slli.hex", - "../../emulator/riscv_tests/rv32ui-p-slt.hex", - "../../emulator/riscv_tests/rv32ui-p-slti.hex", - "../../emulator/riscv_tests/rv32ui-p-sltiu.hex", - "../../emulator/riscv_tests/rv32ui-p-sltu.hex", - "../../emulator/riscv_tests/rv32ui-p-sra.hex", - "../../emulator/riscv_tests/rv32ui-p-srai.hex", - "../../emulator/riscv_tests/rv32ui-p-srl.hex", - "../../emulator/riscv_tests/rv32ui-p-srli.hex", - "../../emulator/riscv_tests/rv32ui-p-sub.hex", - "../../emulator/riscv_tests/rv32ui-p-sw.hex", - "../../emulator/riscv_tests/rv32ui-p-xor.hex", - "../../emulator/riscv_tests/rv32ui-p-xori.hex", - "../../emulator/riscv_tests/rv32um-p-div.hex", - "../../emulator/riscv_tests/rv32um-p-divu.hex", - "../../emulator/riscv_tests/rv32um-p-mul.hex", - "../../emulator/riscv_tests/rv32um-p-mulh.hex", - "../../emulator/riscv_tests/rv32um-p-mulhsu.hex", - "../../emulator/riscv_tests/rv32um-p-mulhu.hex", - "../../emulator/riscv_tests/rv32um-p-rem.hex", - "../../emulator/riscv_tests/rv32um-p-remu.hex" - }; - - for (std::string s : tests) { - Vortex v; - - std::cerr << s << std::endl; - - bool curr = v.simulate(s); - if ( curr) std::cerr << GREEN << "Test Passed: " << s << std::endl; - if (!curr) std::cerr << RED << "Test Failed: " << s << std::endl; - passed = passed && curr; - } - - if( passed) std::cerr << DEFAULT << "PASSED ALL TESTS\n"; - if(!passed) std::cerr << DEFAULT << "Failed one or more tests\n"; - - return !passed; - - #else - - char testing[] = "../../emulator/riscv_tests/rv32ui-p-sw.hex"; - Vortex v; - const char *testing; - - if (argc >= 2) { - testing = argv[1]; - } else { - testing = "../../kernel/vortex_test.hex"; - } - - std::cerr << testing << std::endl; - - - bool curr = v.simulate(testing); - if ( curr) std::cerr << GREEN << "Test Passed: " << testing << std::endl; - if (!curr) std::cerr << RED << "Test Failed: " << testing << std::endl; - - return !curr; - -#endif -} diff --git a/hw/old_rtl/simulate/test_bench.h b/hw/old_rtl/simulate/test_bench.h deleted file mode 100644 index 3a001377..00000000 --- a/hw/old_rtl/simulate/test_bench.h +++ /dev/null @@ -1,433 +0,0 @@ -// C++ libraries -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "VX_define.h" -#include "ram.h" -#include "VVortex.h" -#include "verilated.h" - -#include "tb_debug.h" - -#ifdef VCD_OUTPUT -#include -#endif - -unsigned long time_stamp = 0; - -double sc_time_stamp() -{ - return time_stamp / 1000.0; -} - -class Vortex -{ - public: - Vortex(); - ~Vortex(); - bool simulate(std::string); - private: - void ProcessFile(void); - void print_stats(bool = true); - bool ibus_driver(); - bool dbus_driver(); - void io_handler(); - - RAM ram; - - VVortex * vortex; - - unsigned start_pc; - bool refill_d; - unsigned refill_addr_d; - bool refill_i; - unsigned refill_addr_i; - long int curr_cycle; - bool stop; - bool unit_test; - std::string instruction_file_name; - std::ofstream results; - int stats_static_inst; - int stats_dynamic_inst; - int stats_total_cycles; - int stats_fwd_stalls; - int stats_branch_stalls; - int debug_state; - int ibus_state; - int dbus_state; - int debug_return; - int debug_wait_num; - int debug_inst_num; - int debug_end_wait; - int debug_debugAddr; - double stats_sim_time; - #ifdef VCD_OUTPUT - VerilatedVcdC *m_trace; - #endif -}; - - - -Vortex::Vortex() : start_pc(0), curr_cycle(0), stop(true), unit_test(true), stats_static_inst(0), stats_dynamic_inst(-1), - stats_total_cycles(0), stats_fwd_stalls(0), stats_branch_stalls(0), - debug_state(0), ibus_state(0), dbus_state(0), debug_return(0), - debug_wait_num(0), debug_inst_num(0), debug_end_wait(0), debug_debugAddr(0) -{ - this->vortex = new VVortex; - #ifdef VCD_OUTPUT - this->m_trace = new VerilatedVcdC; - this->vortex->trace(m_trace, 99); - this->m_trace->open("trace.vcd"); - #endif - this->results.open("../results.txt"); -} - -Vortex::~Vortex() -{ - #ifdef VCD_OUTPUT - m_trace->close(); - #endif - this->results.close(); - delete this->vortex; -} - - -void Vortex::ProcessFile(void) -{ - loadHexImpl(this->instruction_file_name.c_str(), &this->ram); -} - -void Vortex::print_stats(bool cycle_test) -{ - - if (cycle_test) - { - this->results << std::left; - // this->results << "# Static Instructions:\t" << std::dec << this->stats_static_inst << std::endl; - this->results << std::setw(24) << "# Dynamic Instructions:" << std::dec << this->stats_dynamic_inst << std::endl; - this->results << std::setw(24) << "# of total cycles:" << std::dec << this->stats_total_cycles << std::endl; - this->results << std::setw(24) << "# of forwarding stalls:" << std::dec << this->stats_fwd_stalls << std::endl; - this->results << std::setw(24) << "# of branch stalls:" << std::dec << this->stats_branch_stalls << std::endl; - this->results << std::setw(24) << "# CPI:" << std::dec << (double) this->stats_total_cycles / (double) this->stats_dynamic_inst << std::endl; - this->results << std::setw(24) << "# time to simulate: " << std::dec << this->stats_sim_time << " milliseconds" << std::endl; - } - else - { - this->results << std::left; - this->results << std::setw(24) << "# of total cycles:" << std::dec << this->stats_total_cycles << std::endl; - this->results << std::setw(24) << "# time to simulate: " << std::dec << this->stats_sim_time << " milliseconds" << std::endl; - } - - - uint32_t status; - ram.getWord(0, &status); - - if (this->unit_test) - { - if (status == 1) - { - this->results << std::setw(24) << "# GRADE:" << "PASSING\n"; - } else - { - this->results << std::setw(24) << "# GRADE:" << "Failed on test: " << status << "\n"; - } - } - else - { - this->results << std::setw(24) << "# GRADE:" << "N/A [NOT A UNIT TEST]\n"; - } - - this->stats_static_inst = 0; - this->stats_dynamic_inst = -1; - this->stats_total_cycles = 0; - this->stats_fwd_stalls = 0; - this->stats_branch_stalls = 0; - -} - -bool Vortex::ibus_driver() -{ - - vortex->i_m_ready_i = false; - - { - - // int dcache_num_words_per_block - - if (refill_i) - { - refill_i = false; - vortex->i_m_ready_i = true; - - for (int curr_bank = 0; curr_bank < vortex->Vortex__DOT__icache_banks; curr_bank++) - { - for (int curr_word = 0; curr_word < vortex->Vortex__DOT__icache_num_words_per_block; curr_word++) - { - unsigned curr_index = (curr_word * vortex->Vortex__DOT__icache_banks) + curr_bank; - unsigned curr_addr = refill_addr_i + (4*curr_index); - - unsigned curr_value; - ram.getWord(curr_addr, &curr_value); - - vortex->i_m_readdata_i[curr_bank][curr_word] = curr_value; - - } - } - } - else - { - if (vortex->o_m_valid_i) - { - - if (vortex->o_m_read_or_write_i) - { - // fprintf(stderr, "++++++++++++++++++++++++++++++++\n"); - unsigned base_addr = vortex->o_m_evict_addr_i; - - for (int curr_bank = 0; curr_bank < vortex->Vortex__DOT__icache_banks; curr_bank++) - { - for (int curr_word = 0; curr_word < vortex->Vortex__DOT__icache_num_words_per_block; curr_word++) - { - unsigned curr_index = (curr_word * vortex->Vortex__DOT__icache_banks) + curr_bank; - unsigned curr_addr = base_addr + (4*curr_index); - - unsigned curr_value = vortex->o_m_writedata_i[curr_bank][curr_word]; - - ram.writeWord( curr_addr, &curr_value); - } - } - } - - // Respond next cycle - refill_i = true; - refill_addr_i = vortex->o_m_read_addr_i; - } - } - - } - - - return false; - -} - -void Vortex::io_handler() -{ - if (vortex->io_valid) - { - uint32_t data_write = (uint32_t) vortex->io_data; - - char c = (char) data_write; - std::cerr << c; - // std::cout << c; - } -} - - -bool Vortex::dbus_driver() -{ - - vortex->i_m_ready_d = false; - - { - - // int dcache_num_words_per_block - - if (refill_d) - { - refill_d = false; - vortex->i_m_ready_d = true; - - for (int curr_bank = 0; curr_bank < vortex->Vortex__DOT__dcache_banks; curr_bank++) - { - for (int curr_word = 0; curr_word < vortex->Vortex__DOT__dcache_num_words_per_block; curr_word++) - { - unsigned curr_index = (curr_word * vortex->Vortex__DOT__dcache_banks) + curr_bank; - unsigned curr_addr = refill_addr_d + (4*curr_index); - - unsigned curr_value; - ram.getWord(curr_addr, &curr_value); - - vortex->i_m_readdata_d[curr_bank][curr_word] = curr_value; - - } - } - } - else - { - if (vortex->o_m_valid_d) - { - - if (vortex->o_m_read_or_write_d) - { - // fprintf(stderr, "++++++++++++++++++++++++++++++++\n"); - unsigned base_addr = vortex->o_m_evict_addr_d; - - for (int curr_bank = 0; curr_bank < vortex->Vortex__DOT__dcache_banks; curr_bank++) - { - for (int curr_word = 0; curr_word < vortex->Vortex__DOT__dcache_num_words_per_block; curr_word++) - { - unsigned curr_index = (curr_word * vortex->Vortex__DOT__dcache_banks) + curr_bank; - unsigned curr_addr = base_addr + (4*curr_index); - - unsigned curr_value = vortex->o_m_writedata_d[curr_bank][curr_word]; - - ram.writeWord( curr_addr, &curr_value); - } - } - } - - // Respond next cycle - refill_d = true; - refill_addr_d = vortex->o_m_read_addr_d; - } - } - - } - - - return false; -} - - - -bool Vortex::simulate(std::string file_to_simulate) -{ - - this->instruction_file_name = file_to_simulate; - // this->results << "\n****************\t" << file_to_simulate << "\t****************\n"; - - this->ProcessFile(); - - // auto start_time = std::chrono::high_resolution_clock::now(); - - - static bool stop = false; - static int counter = 0; - counter = 0; - stop = false; - - // auto start_time = clock(); - - - // vortex->reset = 1; - - - // vortex->reset = 0; - - unsigned curr_inst; - unsigned new_PC; - - // while (this->stop && (!(stop && (counter > 5)))) - // { - - // // std::cout << "************* Cycle: " << cycle << "\n"; - // bool istop = ibus_driver(); - // bool dstop = !dbus_driver(); - - // vortex->clk = 1; - // vortex->eval(); - - - - // vortex->clk = 0; - // vortex->eval(); - - - // stop = istop && dstop; - - // if (stop) - // { - // counter++; - // } else - // { - // counter = 0; - // } - - // cycle++; - // } - - bool istop; - bool dstop; - bool cont = false; - // for (int i = 0; i < 500; i++) - - vortex->reset = 1; - vortex->clk = 0; - vortex->eval(); - // m_trace->dump(10); - vortex->reset = 1; - vortex->clk = 1; - vortex->eval(); - // m_trace->dump(11); - vortex->reset = 0; - vortex->clk = 0; - - // unsigned cycles; - counter = 0; - this->stats_total_cycles = 12; - while (this->stop && ((counter < 5))) - // while (this->stats_total_cycles < 10) - { - - // printf("-------------------------\n"); - // std::cout << "Counter: " << counter << "\n"; - // if ((this->stats_total_cycles) % 5000 == 0) std::cout << "************* Cycle: " << (this->stats_total_cycles) << "\n"; - // dstop = !dbus_driver(); - #ifdef VCD_OUTPUT - m_trace->dump(2*this->stats_total_cycles); - #endif - vortex->clk = 1; - vortex->eval(); - istop = ibus_driver(); - dstop = !dbus_driver(); - io_handler(); - - #ifdef VCD_OUTPUT - m_trace->dump((2*this->stats_total_cycles)+1); - #endif - vortex->clk = 0; - vortex->eval(); - // stop = istop && dstop; - stop = vortex->out_ebreak; - - if (stop || cont) - // if (istop) - { - cont = true; - counter++; - } else - { - counter = 0; - } - - ++time_stamp; - ++stats_total_cycles; - } - - std::cerr << "New Total Cycles: " << (this->stats_total_cycles) << "\n"; - - int status = (unsigned int) vortex->Vortex__DOT__vx_back_end__DOT__VX_wb__DOT__last_data_wb & 0xf; - - // std::cout << "Last wb: " << std::hex << ((unsigned int) vortex->Vortex__DOT__vx_back_end__DOT__VX_wb__DOT__last_data_wb) << "\n"; - - // std::cout << "Something: " << result << '\n'; - - // uint32_t status; - // ram.getWord(0, &status); - - this->print_stats(); - - - - return (status == 1); - // return (1 == 1); -} \ No newline at end of file diff --git a/hw/rtl/VX_cache/VX_bank.v b/hw/rtl/generic_cache/VX_bank.v similarity index 100% rename from hw/rtl/VX_cache/VX_bank.v rename to hw/rtl/generic_cache/VX_bank.v diff --git a/hw/rtl/VX_cache/VX_cache.v b/hw/rtl/generic_cache/VX_cache.v similarity index 100% rename from hw/rtl/VX_cache/VX_cache.v rename to hw/rtl/generic_cache/VX_cache.v diff --git a/hw/rtl/VX_cache/VX_cache_config.v b/hw/rtl/generic_cache/VX_cache_config.v similarity index 100% rename from hw/rtl/VX_cache/VX_cache_config.v rename to hw/rtl/generic_cache/VX_cache_config.v diff --git a/hw/rtl/VX_cache/VX_cache_core_req_bank_sel.v b/hw/rtl/generic_cache/VX_cache_core_req_bank_sel.v similarity index 100% rename from hw/rtl/VX_cache/VX_cache_core_req_bank_sel.v rename to hw/rtl/generic_cache/VX_cache_core_req_bank_sel.v diff --git a/hw/rtl/VX_cache/VX_cache_dfq_queue.v b/hw/rtl/generic_cache/VX_cache_dfq_queue.v similarity index 100% rename from hw/rtl/VX_cache/VX_cache_dfq_queue.v rename to hw/rtl/generic_cache/VX_cache_dfq_queue.v diff --git a/hw/rtl/VX_cache/VX_cache_dram_req_arb.v b/hw/rtl/generic_cache/VX_cache_dram_req_arb.v similarity index 100% rename from hw/rtl/VX_cache/VX_cache_dram_req_arb.v rename to hw/rtl/generic_cache/VX_cache_dram_req_arb.v diff --git a/hw/rtl/VX_cache/VX_cache_miss_resrv.v b/hw/rtl/generic_cache/VX_cache_miss_resrv.v similarity index 100% rename from hw/rtl/VX_cache/VX_cache_miss_resrv.v rename to hw/rtl/generic_cache/VX_cache_miss_resrv.v diff --git a/hw/rtl/VX_cache/VX_cache_req_queue.v b/hw/rtl/generic_cache/VX_cache_req_queue.v similarity index 100% rename from hw/rtl/VX_cache/VX_cache_req_queue.v rename to hw/rtl/generic_cache/VX_cache_req_queue.v diff --git a/hw/rtl/VX_cache/VX_cache_wb_sel_merge.v b/hw/rtl/generic_cache/VX_cache_wb_sel_merge.v similarity index 100% rename from hw/rtl/VX_cache/VX_cache_wb_sel_merge.v rename to hw/rtl/generic_cache/VX_cache_wb_sel_merge.v diff --git a/hw/rtl/VX_cache/VX_dcache_llv_resp_bank_sel.v b/hw/rtl/generic_cache/VX_dcache_llv_resp_bank_sel.v similarity index 100% rename from hw/rtl/VX_cache/VX_dcache_llv_resp_bank_sel.v rename to hw/rtl/generic_cache/VX_dcache_llv_resp_bank_sel.v diff --git a/hw/rtl/VX_cache/VX_fill_invalidator.v b/hw/rtl/generic_cache/VX_fill_invalidator.v similarity index 100% rename from hw/rtl/VX_cache/VX_fill_invalidator.v rename to hw/rtl/generic_cache/VX_fill_invalidator.v diff --git a/hw/rtl/VX_cache/VX_mrv_queue.v b/hw/rtl/generic_cache/VX_mrv_queue.v similarity index 100% rename from hw/rtl/VX_cache/VX_mrv_queue.v rename to hw/rtl/generic_cache/VX_mrv_queue.v diff --git a/hw/rtl/VX_cache/VX_prefetcher.v b/hw/rtl/generic_cache/VX_prefetcher.v similarity index 100% rename from hw/rtl/VX_cache/VX_prefetcher.v rename to hw/rtl/generic_cache/VX_prefetcher.v diff --git a/hw/rtl/VX_cache/VX_snp_fwd_arb.v b/hw/rtl/generic_cache/VX_snp_fwd_arb.v similarity index 100% rename from hw/rtl/VX_cache/VX_snp_fwd_arb.v rename to hw/rtl/generic_cache/VX_snp_fwd_arb.v diff --git a/hw/rtl/VX_cache/VX_tag_data_access.v b/hw/rtl/generic_cache/VX_tag_data_access.v similarity index 100% rename from hw/rtl/VX_cache/VX_tag_data_access.v rename to hw/rtl/generic_cache/VX_tag_data_access.v diff --git a/hw/rtl/VX_cache/VX_tag_data_structure.v b/hw/rtl/generic_cache/VX_tag_data_structure.v similarity index 100% rename from hw/rtl/VX_cache/VX_tag_data_structure.v rename to hw/rtl/generic_cache/VX_tag_data_structure.v