From 11e594f03ea0286512238e06132d86c386bb390a Mon Sep 17 00:00:00 2001 From: XiaoanHe <118478606+XiaoanHe@users.noreply.github.com> Date: Mon, 21 Nov 2022 19:30:52 +0000 Subject: [PATCH] Data Extraction Debugged --- .../Data Extraction/Data_Extraction.cr.mti | 16 + .../Data Extraction/Data_Extraction.mpf | 2092 +++++++++++++++++ .../Data Extraction/Leading_Bit_Detector.sv | 60 + .../Data Extraction/Posit_Extraction.sv | 69 + .../Data Extraction/Test_Data_Extraction.sv | 49 + Individual_Project/Data Extraction/log_2.sv | 29 + Individual_Project/Data Extraction/work/_info | 132 ++ .../Data Extraction/work/_lib.qdb | Bin 0 -> 49152 bytes .../Data Extraction/work/_lib1_2.qdb | Bin 0 -> 32768 bytes .../Data Extraction/work/_lib1_2.qpg | Bin 0 -> 122880 bytes .../Data Extraction/work/_lib1_2.qtl | Bin 0 -> 65972 bytes .../Data Extraction/work/_vmake | 4 + Individual_Project/Posit_Extraction.sv | 69 +- Individual_Project/testExtract.sv | 51 + posit_adder_sv/data_extract.sv | 3 +- 15 files changed, 2541 insertions(+), 33 deletions(-) create mode 100644 Individual_Project/Data Extraction/Data_Extraction.cr.mti create mode 100644 Individual_Project/Data Extraction/Data_Extraction.mpf create mode 100644 Individual_Project/Data Extraction/Leading_Bit_Detector.sv create mode 100644 Individual_Project/Data Extraction/Posit_Extraction.sv create mode 100644 Individual_Project/Data Extraction/Test_Data_Extraction.sv create mode 100644 Individual_Project/Data Extraction/log_2.sv create mode 100644 Individual_Project/Data Extraction/work/_info create mode 100644 Individual_Project/Data Extraction/work/_lib.qdb create mode 100644 Individual_Project/Data Extraction/work/_lib1_2.qdb create mode 100644 Individual_Project/Data Extraction/work/_lib1_2.qpg create mode 100644 Individual_Project/Data Extraction/work/_lib1_2.qtl create mode 100644 Individual_Project/Data Extraction/work/_vmake create mode 100644 Individual_Project/testExtract.sv diff --git a/Individual_Project/Data Extraction/Data_Extraction.cr.mti b/Individual_Project/Data Extraction/Data_Extraction.cr.mti new file mode 100644 index 0000000..fc33e39 --- /dev/null +++ b/Individual_Project/Data Extraction/Data_Extraction.cr.mti @@ -0,0 +1,16 @@ +{H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Posit_Extraction.sv} {1 {vlog -work work -sv -stats=none {H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Posit_Extraction.sv} +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 +-- Compiling package Posit_Extraction_sv_unit +-- Compiling module Data_Extraction + +Top level modules: + Data_Extraction + +} {} {}} {H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Leading_Bit_Detector.sv} {1 {vlog -work work -sv -stats=none {H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Leading_Bit_Detector.sv} +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 +-- Compiling module Leading_Bit_Detector + +Top level modules: + Leading_Bit_Detector + +} {} {}} diff --git a/Individual_Project/Data Extraction/Data_Extraction.mpf b/Individual_Project/Data Extraction/Data_Extraction.mpf new file mode 100644 index 0000000..72d4221 --- /dev/null +++ b/Individual_Project/Data Extraction/Data_Extraction.mpf @@ -0,0 +1,2092 @@ +; vsim modelsim.ini file, version 10.4 +[Version] +INIVersion = "10.4a" + +; Copyright 1991-2015 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 +work = work +[DefineOptionset] +; Define optionset entries for the various compilers, vmake, and vsim. +; These option sets can be used with the "-optionset <optionsetname>" 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 depth equal to or more than the sparse memory threshold gets +; marked as sparse automatically, unless specified otherwise in source code +; or by +nosparse commandline option of vlog or vopt. +; The default is 1M. (i.e. memories with depth equal +; to or greater than 1M 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 => <prefix>_<coverpoint 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 = <path/lib> [<path/lib> ...] +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. Valid extensions are: +; "acum", "atpi", "catx", "daoa", "feci", "fin0", "idcl", +; "iddp", "pae", "sccts", "spsl", "stop0", "udm0", and "uslt". +; SvExtensions = uslt,spsl,sccts + +; 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 + +[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 + +; 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. Valid extensions are "feci", +; "pae", "uslt", "spsl", "fin0" and "sccts". +; SvExtensions = uslt,spsl,sccts + +; 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 ns + +; Maximum iterations that can be run without advancing simulation time +IterationLimit = 10000000 + +; Specify libraries to be searched for precompiled modules +; LibrarySearchPath = <path/lib> [<path/lib> ...] + +; 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 +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 + +; 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 = <your-gcc-installation>/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, 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. +; The default is UVMControl = struct + +; 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 + +; 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 is 0. This default +; drives compliance with the clarified behavior in the IEEE 1800-2009 standard. +; SVCovergroupMergeInstancesDefault = 0 + +; 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 off. +; +; UndefSyms = on + +; 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 (SystemVerilog). +; 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 + +; 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 + +; Controls SystemVerilog Language Extensions. These options enable +; some non-LRM compliant behavior. Valid extensions are "cfce", +; SvExtensions = cfce + +; Controls the formatting of '%p' and '%P' conversion specification, used in $display +; and similar system tasks. +; 1. SVPrettyPrintFlags=I<n><S|T> use <n> 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<numLines> limits the output to <numLines> lines. +; (e.g. SVPrettyPrintFlags=L20 will limit the output to 20 lines). +; 3. SVPrettyPrintFlags=C<numChars> limits the output to <numChars> characters. +; (e.g. SVPrettyPrintFlags=C256 will limit the output to 256 characters). +; 4. SVPrettyPrintFlags=F<numFields> limits the output to <numFields> of relevant datatypes +; (e.g. SVPrettyPrintFlags=F4 will limit the output to 4 fields of a structure). +; 5. SVPrettyPrintFlags=E<numElements> limits the output to <numElements> of relevant datatypes +; (e.g. SVPrettyPrintFlags=E50 will limit the output to 50 elements of an array). +; 6. SVPrettyPrintFlags=D<depth> suppresses the output of sub-elements below <depth>. +; (e.g. SVPrettyPrintFlags=D5 will suppresses the output of sub elements below a depth of 5). +; 7. Items 1-6 above can be combined as a comma separated list. +; (e.g. SVPrettyPrintFlags=I4S,L20,C256,F4,E50,D5) +; 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 = <sfi_dir>/lib/hp700/libsfi.sl +; Logic Modeling's hardware modeler SFI software (IBM RISC System/6000) +; libsfi = <sfi_dir>/lib/rs6000/libsfi.a +; Logic Modeling's hardware modeler SFI software (Sun4 Solaris) +; libsfi = <sfi_dir>/lib/sun4.solaris/libsfi.so +; Logic Modeling's hardware modeler SFI software (Windows NT) +; libsfi = <sfi_dir>/lib/pcnt/lm_sfi.dll +; Logic Modeling's hardware modeler SFI software (Linux) +; libsfi = <sfi_dir>/lib/linux/libsfi.so + +[msg_system] +; Change a message severity or suppress a message. +; The format is: <msg directive> = <msg number>[,<msg number>...] +; suppress can be used to achieve +nowarn<CODE> functionality +; The format is: suppress = <CODE>,<msg number>,[<CODE>,<msg number>,...] +; 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 <msg number> 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 = 3 +Project_File_0 = H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Leading_Bit_Detector.sv +Project_File_P_0 = cover_toggle 0 vlog_protect 0 file_type systemverilog 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 1669057534 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_1 = H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Posit_Extraction.sv +Project_File_P_1 = cover_toggle 0 vlog_protect 0 file_type systemverilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 folder {Top Level} last_compile 1669058108 cover_fsm 0 cover_branch 0 vlog_noload 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 0 dont_compile 0 cover_expr 0 cover_stmt 0 +Project_File_2 = H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Test_Data_Extraction.sv +Project_File_P_2 = cover_toggle 0 vlog_protect 0 file_type systemverilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 folder {Top Level} last_compile 1669058862 cover_fsm 0 cover_branch 0 vlog_noload 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 2 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 = 4 diff --git a/Individual_Project/Data Extraction/Leading_Bit_Detector.sv b/Individual_Project/Data Extraction/Leading_Bit_Detector.sv new file mode 100644 index 0000000..807a5d0 --- /dev/null +++ b/Individual_Project/Data Extraction/Leading_Bit_Detector.sv @@ -0,0 +1,60 @@ +///////////////////////////////////////////////////////////////////// +// Design unit: Leading Bit Detector +// : +// File name : Leading_Bit_Detector.sv +// : +// Description: Given the first bit of the regime bit +// find the first bit different from it +// : +// Limitations: None +// : +// System : SystemVerilog IEEE 1800-2005 +// : +// Author : Xiaoan He (Jasper) +// : xh2g20@ecs.soton.ac.uk +// +// Revision : Version 1.0 21/11/2022 +///////////////////////////////////////////////////////////////////// + +module Leading_Bit_Detector #( parameter N = 8, parameter ES = 3, parameter RS = log2(N)) +( + input logic signed [N-2:0] InRemain, + output logic signed [RS:0] EndPosition, + output logic RegimeCheck +); + +function [31:0] log2; +input reg [31:0] value; + begin + value = value-1; + for (log2=0; value>0; log2=log2+1) + value = value>>1; + end +endfunction + +//logic RegimeCheck; +int i; + +always_comb +begin + RegimeCheck = InRemain[N-2]; //the MSB of InRemain (In[6])is the number to be checked + + EndPosition = '0; + EndPosition = EndPosition + 1'b1; // initial EP starts from InRemain[1] as InRemain[0] is RC + + for(i = 1; i < (N-2); i++) + begin + /* + compareing MSB of InRemain to the follwing bits + until the different bit turns up + */ + if (RegimeCheck == InRemain[((N-2)-i)]) + //begin + EndPosition = EndPosition + 1'b1; + //end + else + break; + end + +end +endmodule \ No newline at end of file diff --git a/Individual_Project/Data Extraction/Posit_Extraction.sv b/Individual_Project/Data Extraction/Posit_Extraction.sv new file mode 100644 index 0000000..f6bf858 --- /dev/null +++ b/Individual_Project/Data Extraction/Posit_Extraction.sv @@ -0,0 +1,69 @@ +///////////////////////////////////////////////////////////////////// +// Design unit: DataExtraction +// : +// File name : Posit_Extraction.sv +// : +// Description: Extracting posit element from n bits binary number +// : +// Limitations: None +// : +// System : SystemVerilog IEEE 1800-2005 +// : +// Author : Xiaoan He (Jasper) +// : xh2g20@ecs.soton.ac.uk +// +// Revision : Version 1.0 19/11/2022 +///////////////////////////////////////////////////////////////////// + +// `ifndef log_2 +// `define log_2 +// `include "log_2.sv" + +function [31:0] log2; + input reg [31:0] value; + begin + value = value-1; + for (log2=0; value>0; log2=log2+1) + value = value>>1; + end +endfunction + +module Data_Extraction #( parameter N = 8, parameter ES = 3, parameter RS = log2(N)) +( + input logic signed [N-1:0] In, + output logic Sign, + output logic signed [RS-1:0] RegimeValue, + output logic [ES-1:0] Exponent, + output logic [N-ES+2:0] Mantissa +); + +logic signed [N-2:0] InRemain; +logic RegimeCheck; +logic [RS:0] EndPosition; +logic signed [N-2:0] ShiftedRemain; +int i; +Leading_Bit_Detector #(.N(N), .ES(ES)) LBD1 (.*); + +always_comb +begin + // Sign Bit Extraction + Sign = In[N-1]; + // if sign bit is true, then 2's compliment + InRemain = Sign ? (~In[N-2:0] + 1'b1) : In[N-2:0]; + + // Regime Bits Extraction + + + if(RegimeCheck == 1'b1) + RegimeValue = EndPosition - 1; + else if (RegimeCheck == 0) + RegimeValue = -EndPosition; + + //Exponent Bits Extraction + ShiftedRemain = InRemain << (EndPosition + 1 ); + Exponent = ShiftedRemain[N-1:((N-1)-ES)]; + + //Mantissa Bits Extraction + Mantissa = {1'b1, ShiftedRemain[N-ES-2]}; +end +endmodule \ No newline at end of file diff --git a/Individual_Project/Data Extraction/Test_Data_Extraction.sv b/Individual_Project/Data Extraction/Test_Data_Extraction.sv new file mode 100644 index 0000000..685d46e --- /dev/null +++ b/Individual_Project/Data Extraction/Test_Data_Extraction.sv @@ -0,0 +1,49 @@ +///////////////////////////////////////////////////////////////////// +// Design unit: TestDataExtraction +// : +// File name : testExtract.sv +// : +// Description: Testbench for extracting posit element +// from n bits binary number +// : +// Limitations: None +// : +// System : SystemVerilog IEEE 1800-2005 +// : +// Author : Xiaoan He (Jasper) +// : xh2g20@ecs.soton.ac.uk +// +// Revision : Version 1.0 21/11/2022 +///////////////////////////////////////////////////////////////////// +function [31:0] log2; +input reg [31:0] value; + begin + value = value-1; + for (log2=0; value>0; log2=log2+1) + value = value>>1; + end +endfunction + +module Test_Data_Extraction; +parameter N = 8, RS = log2(N), ES = 3; + +//input logic +logic signed [N-1:0]In; + +//output logic +logic Sign; +logic signed [RS:0] RegimeValue; +logic [ES-1:0] Exponent; +logic [N-ES+2:0] Mantissa; + +Data_Extraction #(.N(N), .ES(ES)) extract1 (.*); + +initial + begin + // initial input is nothing + #10ns In = 8'b0_0000000; + // sign=0 regime=10 exponent=1001,mant=1 + #50ns In = 8'b1_01_1000_0; + // 0_10_1000_0 + end +endmodule \ No newline at end of file diff --git a/Individual_Project/Data Extraction/log_2.sv b/Individual_Project/Data Extraction/log_2.sv new file mode 100644 index 0000000..7aed6e3 --- /dev/null +++ b/Individual_Project/Data Extraction/log_2.sv @@ -0,0 +1,29 @@ +///////////////////////////////////////////////////////////////////// +// Design unit: Logarithm Base 2 +// : +// File name : log_2.sv +// : +// Description: Just be used to compute the Regime Size (RS) +// : which is equal to log2(the number of total bits) +// : +// Limitations: None +// : +// System : SystemVerilog IEEE 1800-2005 +// : +// Author : Xiaoan He (Jasper) +// : xh2g20@ecs.soton.ac.uk +// +// Revision : Version 1.0 19/11/2022 +///////////////////////////////////////////////////////////////////// + +#ifndef log_2 +#define log_2 + +function [31:0] log2; +input logic [31:0] value; + begin + value = value-1; + for (log2=0; value>0; log2=log2+1) + value = value>>1; + end +endfunction \ No newline at end of file diff --git a/Individual_Project/Data Extraction/work/_info b/Individual_Project/Data Extraction/work/_info new file mode 100644 index 0000000..1737cce --- /dev/null +++ b/Individual_Project/Data Extraction/work/_info @@ -0,0 +1,132 @@ +m255 +K4 +z2 +13 +!s112 1.1 +!i10d 8192 +!i10e 25 +!i10f 100 +cModel Technology +dd:/modelsim/examples +vData_Extraction +Z0 DXx6 sv_std 3 std 0 22 WmjPaeP=7F5?QFXzJ>D[Q2 +DXx4 work 24 Posit_Extraction_sv_unit 0 22 Ik5d90Sbo;Z_5B[6;nN?c3 +!i10b 1 +Z1 VDg1SIo80bB@j0V0VzS_@n1 +r1 +!s85 0 +31 +!s100 :9jDL8fgjON>>ZZzI=UH]1 +IX?9gdS@<E5GRYXNjTL2OY0 +!s105 Posit_Extraction_sv_unit +S1 +Z2 dH:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction +Z3 w1669058108 +Z4 8H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Posit_Extraction.sv +Z5 FH:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Posit_Extraction.sv +L0 31 +Z6 OP;L;10.4a;61 +Z7 !s108 1669058622.000000 +Z8 !s107 H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Posit_Extraction.sv| +Z9 !s90 -reportprogress|300|-work|work|-sv|-stats=none|H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Posit_Extraction.sv| +!s101 -O0 +!i113 1 +Z10 o-work work -sv -L mtiAvm -L mtiRnm -L mtiOvm -L mtiUvm -L mtiUPF -L infact -O0 +n@data_@extraction +vLeading_Bit_Detector +R0 +!i10b 1 +R1 +r1 +!s85 0 +31 +!s100 RGaB4Z:d;NgXmE1MinB4=3 +I6CV7iYKKRNiPVe<:Jd7OZ3 +!s105 Leading_Bit_Detector_sv_unit +S1 +R2 +w1669057534 +8H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Leading_Bit_Detector.sv +FH:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Leading_Bit_Detector.sv +L0 19 +R6 +R7 +!s107 H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Leading_Bit_Detector.sv| +!s90 -reportprogress|300|-work|work|-sv|-stats=none|H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Leading_Bit_Detector.sv| +!s101 -O0 +!i113 1 +R10 +n@leading_@bit_@detector +XPosit_Extraction_sv_unit +R0 +!i10b 1 +VIk5d90Sbo;Z_5B[6;nN?c3 +r1 +!s85 0 +31 +!s100 6V1A`S@cEfY:22eJ`[9ie0 +IIk5d90Sbo;Z_5B[6;nN?c3 +!i103 1 +S1 +R2 +R3 +R4 +R5 +L0 22 +R6 +R7 +R8 +R9 +!s101 -O0 +!i113 1 +R10 +n@posit_@extraction_sv_unit +vTest_Data_Extraction +R0 +DXx4 work 28 Test_Data_Extraction_sv_unit 0 22 eO`G7lR:hj`hW^[elH1aV3 +R1 +r1 +!s85 0 +31 +!i10b 1 +!s100 3RPk2ZiH_2bbhhGLnk:DO1 +I63^h:jSFcYooFdfcf]]f60 +!s105 Test_Data_Extraction_sv_unit +S1 +R2 +Z11 w1669058862 +Z12 8H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Test_Data_Extraction.sv +Z13 FH:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Test_Data_Extraction.sv +L0 27 +R6 +Z14 !s108 1669058866.000000 +Z15 !s107 H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Test_Data_Extraction.sv| +Z16 !s90 -reportprogress|300|-work|work|-sv|-stats=none|H:/INDIVIDUAL PROJECT/Posit/Individual_Project/Data Extraction/Test_Data_Extraction.sv| +!s101 -O0 +!i113 1 +R10 +n@test_@data_@extraction +XTest_Data_Extraction_sv_unit +R0 +VeO`G7lR:hj`hW^[elH1aV3 +r1 +!s85 0 +31 +!i10b 1 +!s100 DNiobLRHe5470J9VAIX`k1 +IeO`G7lR:hj`hW^[elH1aV3 +!i103 1 +S1 +R2 +R11 +R12 +R13 +L0 18 +R6 +R14 +R15 +R16 +!s101 -O0 +!i113 1 +R10 +n@test_@data_@extraction_sv_unit diff --git a/Individual_Project/Data Extraction/work/_lib.qdb b/Individual_Project/Data Extraction/work/_lib.qdb new file mode 100644 index 0000000000000000000000000000000000000000..ccfd7f544ec102bce0cd40551f084b9f18fd5348 GIT binary patch literal 49152 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 D@{~N0 literal 0 HcmV?d00001 diff --git a/Individual_Project/Data Extraction/work/_lib1_2.qdb b/Individual_Project/Data Extraction/work/_lib1_2.qdb new file mode 100644 index 0000000000000000000000000000000000000000..8accc9680f9e8a77a18e04dce56d174649a861fa GIT binary patch literal 32768 zcmeaxPf5)w&dgOvNlI5RRA5kGU}R))P*7lCU|?fF1xySK42(!Z$ZRBGOeU}VTn1*j zXAJTS<(|psV9Jk*jE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk0C6GE$jrnpE-TB}7+I2-l#`lR zT9K5KpPUV&nVo}N9Yb6dLL8lZToquV3L0sdIjNZ`3Z8x;uI{cuIts<9g-D#ts#F9o zKP{~|wFJQr_45o2b%mM$)~Ttf&&($7EX&A{nU|7UQCyglS&|x`SXz<~=EuXVjW>j` zSQr=>SYjF3#igYg8wFu52RSOSv;ssip}QL-i0*8KfFMs_$Dl|BZ`Vj2h181F+=7z4 z#N1Sc5Z8zhO<o2D1_}8J9{FGLU*zA(zmR_{e^<U;{<{1n`Lpsz<qyd3mY*oUR(^&2 zLisuJJ@V7#H_JE4*UDEA7w)5~MnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONV0ecBb0ISW19Jh0 z$OjRzAR-4uq%$)x$TR1HnAspAiy0IW%$Xo|28hj^2O=35n3F+5NgyH-Dv|)=#Dj=9 zkO*@On2cs-U|{iLX5cqqaRZZfVA2Le^2%Lfke7>PlK&$AT>h5)S@}cq+vV5D&zGMh zw^+VizD7PzK0$7(e2~10yqVl-xxMmI@;q|?<UYtflGl)Hm#dW9B$q803v%Ho9u0xf z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVE6A;4qB%E-vXT*$yMmyuDN#}dpdVC0*@@Ts219L&pSV7SKc zaV3u#n3u;O<iT)1kw*>8OJHEW#n2MOtq9^V#WFAl)HTXo<FsI9WMpJ4U|`_q(Fe&e zr!z_@Fzj5)sRx!wXJFuCU|`^3WMWQbV0gp8V**x`!@#(m;r4kRV=yn9fjNNTMm>)a zn3u)C)WUG}H;*Bhm&w4K#BgaQj{%sM!N72Z;o?yqQ!p==f$=uO-8LRgFfW;baTCLA zDIN_lFNuNS9K$Rh9(6D;kwHj-p+kp970iogU@T;4ddQ;!=EX5F3NSQY<WvSbIF6Bl zhf@i{WMJUtRsgACieX^9QnQv@9?XemW<OB!mQxO_D4L0Zi&GZDWMtsvlz}iA7&y3D zz^c6%SX{Wbb2EcEZVW68?Ay7Sz#KaU#>=cvxEMhkMjHm!Ck$K+3=Hz}91QY5<Uh#2 zkbfY5L;iyN3Hbx^JLDDQH^{G$Um!n2eu8|5e1m+2yn%d%e1d$0e1N=%yoS7kyoG#$ zyo9`fJjbw2!J{4<4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Ex=1z|O+R$XLi=1*QuaEg>|61(=Ry zPz2LC3?^VYok0&w=P{Up>0Aa=FrCd{45qUfjKFjzgCUsCU@!pF>5TedI-kKDOeZsF zg6Sj%4KSU^pbn-J7}UUYJcBBjj$=}R(2U9unn4Ln$1o^>>1bwo2+br1p&4Z%G=mJ7 W_F`ZG({2pRVA_s>2~68CFaiKR|NKM% literal 0 HcmV?d00001 diff --git a/Individual_Project/Data Extraction/work/_lib1_2.qpg b/Individual_Project/Data Extraction/work/_lib1_2.qpg new file mode 100644 index 0000000000000000000000000000000000000000..aa5a29235c6cf9d7baef30e99d3fff7e70817671 GIT binary patch literal 122880 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ˠ+c`y9;2qrMkvK5Sea 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 PNig?0gVujAFfsxFIP?lD literal 0 HcmV?d00001 diff --git a/Individual_Project/Data Extraction/work/_lib1_2.qtl b/Individual_Project/Data Extraction/work/_lib1_2.qtl new file mode 100644 index 0000000000000000000000000000000000000000..97c913c8c629a0c63a89a452a45b7cbdf3636e5f GIT binary patch literal 65972 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%0D<A;<^N!%0DfJ*a|_1RqYy2s=Ga3Vb*z3n&YNLjrujD9l=L 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 literal 0 HcmV?d00001 diff --git a/Individual_Project/Data Extraction/work/_vmake b/Individual_Project/Data Extraction/work/_vmake new file mode 100644 index 0000000..37aa36a --- /dev/null +++ b/Individual_Project/Data Extraction/work/_vmake @@ -0,0 +1,4 @@ +m255 +K4 +z0 +cModel Technology diff --git a/Individual_Project/Posit_Extraction.sv b/Individual_Project/Posit_Extraction.sv index 5be9b0b..f7f4864 100644 --- a/Individual_Project/Posit_Extraction.sv +++ b/Individual_Project/Posit_Extraction.sv @@ -28,49 +28,54 @@ function [31:0] log2; end endfunction -Module Data_Extraction #( parameter N = 8, parameter ES = 3, parameter RS = log2(N)) +module Data_Extraction #( parameter N = 8, parameter ES = 3, parameter RS = log2(N)) ( input logic signed [N-1:0] In, output logic Sign, - output logic signed [RS-1:0] Regime, + output logic signed [RS-1:0] RegimeValue, output logic [ES-1:0] Exponent, output logic [N-ES+2:0] Mantissa -) +); -// Sign Bit Extraction -logic signed [N-2:0] InRemain; +always_comb +begin + // Sign Bit Extraction + logic signed [N-2:0] InRemain; -Sign = In[N-1]; -if(Sign = 1) // if sign bit is 1, then 2's compliment - InRemain = ~In[N-2:0] + 1'b1; -else - InRemain = In[N-2:0]; + Sign = In[N-1]; + if(Sign = 1) // if sign bit is 1, then 2's compliment + InRemain = ~In[N-2:0] + 1'b1; + else + InRemain = In[N-2:0]; -// Regime Bits Extraction -logic RegimeCheck = InRemain{N-2}; //the MSB of InRemain is the number to be checked + // Regime Bits Extraction + logic RegimeCheck = InRemain[N-2]; //the MSB of InRemain (In[6])is the number to be checked -logic [RS-1:0] EndPosition = 1; // initial EP starts from 2nd element + logic [RS-1:0] EndPosition = 1; // initial EP starts from InRemain[1] as InRemain[0] is RC -for(int i = 1; i < N-2; i++) - begin - /* - compareing MSB of InRemain to the follwing bits - until the different bit turns up - */ - if(RegimeCheck == InRemain[((N-2)-i)]) - EndPosition = EndPositon + 1; - else - break; - end + for(int i = 1; i < N-2; i++) + begin + /* + compareing MSB of InRemain to the follwing bits + until the different bit turns up + */ + if(RegimeCheck == InRemain[((N-2)-i)]) + EndPosition = EndPositon + 1; + else + break; + end -// logic RegimeValue; + if(RegimeCheck == 1) + RegimeValue = EndPosition - 1; + else if (RegimeCheck == 0) + RegimeValue = -EndPositon; -// if(RegimeCheck = 1) -// RegimeValue = EndPosition - 1; -// else -// RegimeValue = -EndPositon; + //Exponent Bits Extraction + logic signed [N-2:0] ShiftedRemain; + ShiftedRemain = InRemain << (EndPosition + 1 ); + Exponent = ShiftedRemain[N-1:((N-1)-ES)]; -// Exponent Bits Extraction -logic signed [N-2:0] ShiftedRemain; -ShiftedRemain = InRemain << (EndPosition + ) + //Mantissa Bits Extraction + Mantissa = {1'b1, ShiftedRemain[N-ES-2]}; +end endmodule \ No newline at end of file diff --git a/Individual_Project/testExtract.sv b/Individual_Project/testExtract.sv new file mode 100644 index 0000000..b8a8491 --- /dev/null +++ b/Individual_Project/testExtract.sv @@ -0,0 +1,51 @@ +///////////////////////////////////////////////////////////////////// +// Design unit: TestDataExtraction +// : +// File name : testExtract.sv +// : +// Description: Testbench for extracting posit element +// from n bits binary number +// : +// Limitations: None +// : +// System : SystemVerilog IEEE 1800-2005 +// : +// Author : Xiaoan He (Jasper) +// : xh2g20@ecs.soton.ac.uk +// +// Revision : Version 1.0 14/11/2022 +///////////////////////////////////////////////////////////////////// + +module testExtract; + +function [31:0] log2; +input reg [31:0] value; + begin + value = value-1; + for (log2=0; value>0; log2=log2+1) + value = value>>1; + end +endfunction + +parameter N = 8, Bs = log2(N), es = 3; + +//input logic +logic signed [N-1:0]In; +//output logic +logic Sign; +logic [ES-1:0]Exponent; +logic signed [Es-1:0]Regime; +logic [N-ES+2:0]Mantissa; + +Data_Extraction extract1 (.*); + +initial + begin + // initial input is nothing + #10ns in = 8'b0_0000000; + // sign=0 regime=10 exponent=1001,mant=1 + #50ns in = 8'b1_01_1000_0; + // 0_10_1000_0 + end + +endmodule \ No newline at end of file diff --git a/posit_adder_sv/data_extract.sv b/posit_adder_sv/data_extract.sv index 8e0bb18..00b9c3f 100644 --- a/posit_adder_sv/data_extract.sv +++ b/posit_adder_sv/data_extract.sv @@ -1,4 +1,5 @@ -module data_extract #(parameter N=8, parameter Bs=log2(N), parameter es=4, parameter Rmax = N-1, parameter Rmin = -(N-1)) +module data_extract #(parameter N=8, parameter Bs=log2(N), +parameter es=4, parameter Rmax = N-1, parameter Rmin = -(N-1)) (input logic signed [N-1:0] in, output logic Sin, output logic [es-1:0] exp, -- GitLab